yongshuiyichang.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <template>
  2. <div>
  3. <el-row>
  4. <el-col :span="24" class="first-row">
  5. <div class="tag">用水异常</div>
  6. </el-col>
  7. </el-row>
  8. <el-row>
  9. <el-col :span="24" class="second-row">
  10. <el-form :inline="true" class="demo-form-inline">
  11. <el-form-item label="楼栋号:" class="shuibiaoId">
  12. <el-select v-model="drom_options.value" placeholder="请选择" class="my-select"
  13. @change="selectGetBuild(drom_options.value)">
  14. <el-option v-for="item in drom_options.builds" :key="item.value" :label="item.label"
  15. :value="item.value">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="起止时间:" class="shijian">
  20. <el-date-picker v-model="select_datetime" type="daterange" align="center" unlink-panels
  21. range-separator="至" :start-placeholder="startTime" :end-placeholder="endTime"
  22. @change="dateChange" value-format="yyyy-MM-dd" :picker-options="pickerOptions"
  23. class="shijian_plus">
  24. </el-date-picker>
  25. </el-form-item>
  26. <el-form-item label="时间段消费总金额:">
  27. <el-input-number v-model="num" @change="change_num" :precision="2" :step="0.1" :max="1000"
  28. class="rijunxiaofei_input"></el-input-number>
  29. </el-form-item>
  30. </el-form>
  31. </el-col>
  32. </el-row>
  33. <hr style="background-color: #CCCCCC;height: 1px;border: 0;">
  34. <el-row>
  35. <el-col :span="24" class="third-row">
  36. <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
  37. highlight-current-row>
  38. <el-table-column align="center" label="楼栋号" width="200">
  39. <template slot-scope="scope">{{ scope.row.build }}</template>
  40. </el-table-column>
  41. <el-table-column prop="dom" label="宿舍号" align="center" width="200"></el-table-column>
  42. <el-table-column prop="use_amount" label="消费金额(元)" align="center"></el-table-column>
  43. <el-table-column prop="begin_time" :formatter="formatDateTime" label="日期" align="center">
  44. </el-table-column>
  45. </el-table>
  46. <div class="pages">
  47. <el-pagination layout="prev, pager, next" :current-page.sync="currentPage"
  48. :hide-on-single-page="true" :page-size="pageRows" :total="rows_total"
  49. @current-change="handleCurrentChange"></el-pagination>
  50. </div>
  51. </el-col>
  52. </el-row>
  53. </div>
  54. </template>
  55. <script>
  56. export default {
  57. data() {
  58. return {
  59. drom_value: 0, // 楼栋号编码
  60. drom: '', // 楼栋号
  61. // 楼栋号下拉列表
  62. drom_options: { // 下拉列表的数据绑定
  63. builds: [{
  64. value: 0,
  65. label: '全部'
  66. }],
  67. value: 0,
  68. label: ''
  69. },
  70. currentPage: 1, // 余额列表当前页
  71. pageRows: 8, // 每页记录数
  72. tableData: [], // 异常列表
  73. rows_total: 0, // 总行数
  74. pickerOptions: {
  75. shortcuts: [{
  76. text: '最近一周',
  77. onClick(picker) {
  78. const end = new Date();
  79. const start = new Date();
  80. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  81. picker.$emit('pick', [start, end]);
  82. }
  83. }, {
  84. text: '最近一个月',
  85. onClick(picker) {
  86. const end = new Date();
  87. const start = new Date();
  88. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  89. picker.$emit('pick', [start, end]);
  90. }
  91. }, {
  92. text: '最近三个月',
  93. onClick(picker) {
  94. const end = new Date();
  95. const start = new Date();
  96. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  97. picker.$emit('pick', [start, end]);
  98. }
  99. }]
  100. },
  101. select_datetime: [], // 选择的时间范围
  102. startTime: '',
  103. endTime: '',
  104. num: 0.00
  105. }
  106. },
  107. created() {
  108. // 填充楼栋号
  109. this.getBuildsFillSelect()
  110. // 初始化日期为昨天 至 今天
  111. this.initDate()
  112. },
  113. methods: {
  114. formatDateTime(row, column) {
  115. // console.log(row.begin_time);
  116. var dt = row.begin_time;
  117. return dt.split(' ')[0];
  118. },
  119. /**
  120. * 初始化日期时间
  121. */
  122. initDate() {
  123. //当前设定的日期时间
  124. let d = new Date;
  125. var year1 = d.getFullYear(); // 获取当前年份
  126. var mon1 = d.getMonth() + 1; // 获取当前月份
  127. var day1 = d.getDate(); // 获取当前日
  128. //前一天设定的日期时间
  129. d.setTime(d.getTime() - 24 * 60 * 60 * 1000);
  130. var year2 = d.getFullYear(); // 获取当前年份
  131. var mon2 = d.getMonth() + 1; // 获取当前月份
  132. var day2 = d.getDate(); // 获取当前日
  133. this.startTime = this.getDate(year2, mon2, day2)
  134. this.endTime = this.getDate(year1, mon1, day1)
  135. this.select_datetime.push(this.startTime)
  136. this.select_datetime.push(this.endTime)
  137. this.handleCurrentChange(1)
  138. },
  139. /**
  140. * 获取指定格式 年、月、日
  141. * @param {Object} y
  142. * @param {Object} m
  143. * @param {Object} d
  144. */
  145. getDate(y, m, d) {
  146. m = m > 9 ? m : '0' + m;
  147. d = d > 9 ? d : '0' + d;
  148. return y + "-" + m + "-" + d;
  149. },
  150. /**
  151. * 选择起止日期
  152. * @param {Object} val
  153. */
  154. dateChange(val) {
  155. this.startTime = val[0]
  156. this.endTime = val[1]
  157. if (this.startTime == this.endTime) {
  158. this.$message.error('起止日期不能为同一天!')
  159. } else {
  160. this.handleCurrentChange(1)
  161. }
  162. },
  163. /**
  164. * 改变日消费金额
  165. * @param {Object} currentValue
  166. * @param {Object} oldValue
  167. */
  168. change_num(currentValue, oldValue) {
  169. // console.log(currentValue, oldValue);
  170. this.num = currentValue
  171. this.handleCurrentChange(1)
  172. },
  173. /**
  174. * 列表改变页码
  175. * @param {Object} val
  176. */
  177. handleCurrentChange(val) {
  178. // console.log(val);
  179. this.currentPage = val
  180. var params = {
  181. page: this.currentPage,
  182. rows: this.pageRows
  183. }
  184. if (this.drom != '' & typeof(this.drom) != 'undefined') {
  185. params.build = this.drom
  186. }
  187. if (this.startTime != '' & typeof(this.startTime) != 'undefined') {
  188. params.begin_time = this.startTime
  189. }
  190. if (this.endTime != '' & typeof(this.endTime) != 'undefined') {
  191. params.end_time = this.endTime
  192. }
  193. if (parseFloat(this.num) > 0.00) {
  194. params.use_amount = this.num
  195. }
  196. // 用水异常列表
  197. this.get_use_water_exception_list(params)
  198. },
  199. /**
  200. * 用水异常列表
  201. */
  202. get_use_water_exception_list(params) {
  203. var _this = this
  204. // _this.tableData = []
  205. // _this.rows_total = 0
  206. this.$axios.get('/shuidian/HotWaters/waterqueryErrorWater.action', {
  207. params: params
  208. })
  209. .then(res => {
  210. // console.log(res.data);
  211. if (typeof(res.data.rows) != 'undefined' && res.data.rows != '' && JSON.stringify(res.data) !=
  212. '{}') {
  213. _this.tableData = res.data.rows
  214. _this.rows_total = res.data.total
  215. } else {
  216. _this.$message.success('【用水异常】暂无数据!');
  217. }
  218. })
  219. .catch(err => {
  220. // console.log(err);
  221. _this.$message.error('【用水异常】请求异常: ' + err);
  222. })
  223. },
  224. /**
  225. * 获取楼栋号,填充下拉列表
  226. */
  227. getBuildsFillSelect() {
  228. // 获取楼栋号,填充下拉列表
  229. var _this = this
  230. this.$axios.get('/shuidian/HotWaters/watergetBuilds.action')
  231. .then(res => {
  232. // console.log(res.data);
  233. if (typeof(res.data.builds) != 'undefined' && res.data.builds != '' && JSON.stringify(res
  234. .data) != '{}') {
  235. this.drom_options.builds = [{
  236. value: 0,
  237. label: '全部'
  238. }]
  239. for (var i = 0; i < res.data.builds.length; i++) {
  240. let tmp = {
  241. value: i + 1,
  242. label: res.data.builds[i]
  243. }
  244. this.drom_options.builds.push(tmp)
  245. }
  246. } else {
  247. _this.$message.success('【楼栋号】暂无数据!');
  248. }
  249. })
  250. .catch(err => {
  251. // console.log(err);
  252. _this.$message.error('【楼栋号】请求异常: ' + err);
  253. })
  254. },
  255. /**
  256. * 选择楼栋号
  257. */
  258. selectGetBuild(vId) {
  259. // console.log(vId);
  260. this.drom_value = vId
  261. let obj = {};
  262. obj = this.drom_options.builds.find((item) => {
  263. return item.value === vId; //筛选出匹配数据
  264. });
  265. // console.log(obj);
  266. this.drom_options.value = obj.value
  267. this.drom_options.label = obj.label
  268. if (this.drom_options.label != '全部') {
  269. // 获取楼栋号
  270. this.drom = this.drom_options.label
  271. } else {
  272. this.drom = ''
  273. }
  274. // 共用部分
  275. this.handleCurrentChange(1)
  276. }
  277. }
  278. }
  279. </script>
  280. <style scoped>
  281. @import url("yongshuiyichang.css");
  282. </style>