sale-client 4.2.108 → 4.2.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "4.2.108",
3
+ "version": "4.2.110",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -296,7 +296,7 @@ export default {
296
296
  costtypes: this.$appdata.getParam('缴费类型') ? this.$appdata.getParam('缴费类型') : [],
297
297
  banknames: this.$appdata.getParam('银行名称') ? this.$appdata.getParam('银行名称') : [],
298
298
  userstates: this.$appdata.getParam('预备客户状态参数') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('预备客户状态参数')] : [{label: '预备', value: '预备'}],
299
- housetype: this.$appdata.getParam('是否煤改气') ? this.$appdata.getParam('是否煤改气') : [],
299
+ housetype: this.$appdata.getParam('房屋类型') ? this.$appdata.getParam('房屋类型') : [],
300
300
  mgq: this.$appdata.getParam('是否煤改气') ? this.$appdata.getParam('是否煤改气') : [],
301
301
  costtype: this.$appdata.getParam('付款类型') ? this.$appdata.getParam('付款类型') : [],
302
302
  printstate: this.$appdata.getParam('建档打印类型') ? [{label: '暂不选择', value: '暂不选择'}, ...this.$appdata.getParam('建档打印类型')] : [{label: '暂不选择', value: '暂不选择'}],
@@ -40,6 +40,25 @@
40
40
  </tr>
41
41
  </tbody>
42
42
  </table>
43
+ <!-- 维修照片展示 -->
44
+ <table class="table table-striped table-bordered" v-if="pared == 1 && repairImages.length > 0">
45
+ <thead>
46
+ <tr>
47
+ <th colspan="4" style="text-align: center;background-color: #8cbce2;">维修照片</th>
48
+ </tr>
49
+ </thead>
50
+ <tbody>
51
+ <tr>
52
+ <td style="margin: auto;text-align: center">
53
+ <div class="container" style="background: #FFFFFF;margin:0;width:100%;">
54
+ <div class="img" v-for="img in repairImages">
55
+ <img-self v-if="img.android_file!='' && img.android_file!=null" :src="'rs/image/file/'+img.android_file" style="float: left" width="100" height="150"></img-self>
56
+ </div>
57
+ </div>
58
+ </td>
59
+ </tr>
60
+ </tbody>
61
+ </table>
43
62
  <div class="auto info-content" v-if="pared == 0">
44
63
  <div class="row">
45
64
  <strong>暂无维修信息</strong>
@@ -60,17 +79,17 @@
60
79
  data () {
61
80
  return {
62
81
  model: {},
63
- pared: 0
64
-
82
+ pared: 0,
83
+ repairImages: [] // 维修照片列表
65
84
  }
66
85
  },
67
86
  props: ['data'],
68
87
  ready () {
88
+ this.getServiceRepair()
69
89
  },
70
90
  methods: {
71
-
72
91
  async getServiceRepair () {
73
- if(this.data && this.data.f_userinfo_id){
92
+ if (this.data && this.data.f_userinfo_id) {
74
93
  let data = {
75
94
  f_userinfo_id: this.data.f_userinfo_id
76
95
  }
@@ -80,18 +99,57 @@
80
99
  console.log('看看维修情况', res, this.model)
81
100
  if (this.model) {
82
101
  this.pared = 1
102
+ await this.getRepairImages(this.model.id)
83
103
  } else {
84
104
  this.pared = 0
105
+ this.repairImages = []
85
106
  }
86
- } else{
107
+ } else {
87
108
  this.pared = 0
109
+ this.repairImages = []
110
+ }
111
+ },
112
+ // 获取维修照片
113
+ async getRepairImages (workorderId) {
114
+ if (!workorderId) {
115
+ this.repairImages = []
116
+ return
117
+ }
118
+ try {
119
+ let http = new HttpResetClass()
120
+ let serviceWorkRes = await http.load('POST', 'api/af-revenue/sql/saleSingleTable', {
121
+ data: {
122
+ tablename: 't_servicework',
123
+ condition: `serviceid = '${workorderId}'`
124
+ }
125
+ }, {resolveMsg: null, rejectMsg: null})
126
+ if (serviceWorkRes.data && serviceWorkRes.data.length > 0) {
127
+ let serviceId = serviceWorkRes.data[0].id
128
+ let repairImgRes = await http.load('POST', 'api/af-revenue/sql/saleSingleTable', {
129
+ data: {
130
+ tablename: 't_repairimg',
131
+ condition: `serviceid = '${serviceId}'`
132
+ }
133
+ }, {resolveMsg: null, rejectMsg: null})
134
+ if (repairImgRes.data && repairImgRes.data.length > 0) {
135
+ this.repairImages = repairImgRes.data
136
+ console.log('this.repairImages', this.repairImages)
137
+ } else {
138
+ this.repairImages = []
139
+ }
140
+ } else {
141
+ this.repairImages = []
142
+ }
143
+ } catch (error) {
144
+ console.error('获取维修照片失败:', error)
145
+ this.repairImages = []
88
146
  }
89
147
  }
90
148
  },
91
149
  watch: {
92
150
  'data' () {
93
- console.log('维修情况', this.data),
94
- this.getServiceRepair()
151
+ console.log('维修情况', this.data)
152
+ this.getServiceRepair()
95
153
  }
96
154
  }
97
155
  }
@@ -0,0 +1,409 @@
1
+ <template>
2
+ <div @keyup.enter="search" class="span">
3
+ <criteria-paged :model="model" class="list_area table_sy" v-ref:paged>
4
+ <criteria @condition-changed='$parent.search' partial='criteria' v-ref:criteria>
5
+ <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
6
+ <div class="row">
7
+
8
+ <div class="col-sm-2 form-group">
9
+ <label class="font_normal_body">指令类型</label>
10
+ <v-select :options='$parent.$parent.instructType' :value.sync="model.f_instruct_type"
11
+ close-on-select
12
+ condition="f_instruct_type='{}'"
13
+ placeholder='指令类型'
14
+ style="width: 60%"
15
+ v-model="model.f_instruct_type"></v-select>
16
+ </div>
17
+ <div class="col-sm-2 form-group">
18
+ <label class="font_normal_body">指令状态</label>
19
+ <v-select :options='$parent.$parent.instructState' :value.sync="model.f_instruct_state"
20
+ close-on-select
21
+ condition="f_instruct_state='{}'"
22
+ placeholder='指令状态'
23
+ style="width: 60%"
24
+ v-model="model.f_instruct_state"
25
+ ></v-select>
26
+ </div>
27
+
28
+ <div class="col-sm-2 form-group">
29
+ <label class="font_normal_body">开始时间</label>
30
+ <datepicker :format="'yyyy-MM-dd HH:mm:ss'"
31
+ :value.sync="model.f_start_date"
32
+ class="datepicker"
33
+ condition="f_instruct_date > '{}'"
34
+ placeholder="起始时间"
35
+ style="width: 60%"
36
+ v-model="model.f_start_date"
37
+ ></datepicker>
38
+ </div>
39
+ <div class="col-sm-2 form-group">
40
+ <label class="font_normal_body">结束时间</label>
41
+ <datepicker :format="'yyyy-MM-dd HH:mm:ss'"
42
+ :value.sync="model.f_end_date"
43
+ class="datepicker"
44
+ condition="f_instruct_date < '{}'"
45
+ placeholder="结束时间"
46
+ style="width: 60%"
47
+ v-model="model.f_end_date"
48
+ ></datepicker>
49
+ </div>
50
+ <div style="float: right">
51
+ <button @click="search()" class="button_search" v-el:cba>查询</button>
52
+ </div>
53
+ </div>
54
+
55
+ </div>
56
+ </criteria>
57
+ <data-grid :model="model" class="list_area table_sy" partial='list' v-ref:grid>
58
+ <template partial='head'>
59
+ <tr>
60
+ <th style="text-align:center;">
61
+ <nobr>指令类型</nobr>
62
+ </th>
63
+ <th style="text-align:center;">
64
+ <nobr>指令内容</nobr>
65
+ </th>
66
+ <th style="text-align:center;">
67
+ <nobr>指令状态</nobr>
68
+ </th>
69
+ <th style="text-align:center;">
70
+ <nobr>指令生成时间</nobr>
71
+ </th>
72
+ <th style="text-align:center;">
73
+ <nobr>指令发送时间</nobr>
74
+ </th>
75
+ <th style="text-align:center;">
76
+ <nobr>指令上表时间</nobr>
77
+ </th>
78
+ <th style="text-align:center;">
79
+ <nobr>操作人</nobr>
80
+ </th>
81
+ <th style="text-align:center;">
82
+ <nobr>操作时间(记录)</nobr>
83
+ </th>
84
+ <th style="text-align:center;">
85
+ <nobr>操作类型</nobr>
86
+ </th>
87
+ <!-- 查这里-->
88
+ <th style="text-align:center;">
89
+ <nobr>操作状态</nobr>
90
+ </th>
91
+ <th style="text-align:center;">
92
+ <nobr>操作人(记录)</nobr>
93
+ </th>
94
+ <th style="text-align:center;">
95
+ <nobr>操作内容</nobr>
96
+ </th>
97
+ <th style="text-align:center;">
98
+ <nobr>操作/指令状态</nobr>
99
+ </th>
100
+ <!--<th style="text-align:center;"><nobr>发送原因</nobr></th>
101
+ <th style="text-align:center;"><nobr>取消原因</nobr></th>-->
102
+ <th style="text-align:center;">
103
+ <nobr>备注信息</nobr>
104
+ </th>
105
+ <th style="text-align:center;" v-if="['HaiLiSystem','BoGuanSystem'].includes( $parent.$parent.$parent.row.f_alias)">
106
+ <!-- <th style="text-align:center;">-->
107
+ <nobr>写卡操作</nobr>
108
+ </th>
109
+ </tr>
110
+ </template>
111
+ <template partial='body'>
112
+ <tr>
113
+ <td style="text-align:center;">
114
+ <nobr>{{row.f_instruct_type}}</nobr>
115
+ </td>
116
+ <td style="text-align:center;">
117
+ <nobr>{{row.f_instruct_title}}</nobr>
118
+ </td>
119
+ <td style="text-align:center;">
120
+ <nobr>{{row.f_instruct_state}}</nobr>
121
+ </td>
122
+ <td style="text-align:center;">
123
+ <nobr>{{row.f_instruct_date}}</nobr>
124
+ </td>
125
+ <td style="text-align:center;">
126
+ <nobr>{{row.f_send_date}}</nobr>
127
+ </td>
128
+ <td style="text-align:center;">
129
+ <nobr>{{row.f_callback_date}}</nobr>
130
+ </td>
131
+ <td style="text-align:center;">
132
+ <nobr>{{row.f_inputtor}}</nobr>
133
+ </td>
134
+ <td style="text-align:center;">
135
+ <nobr>{{row.f_operate_date}}</nobr>
136
+ </td>
137
+ <td style="text-align:center;">
138
+ <nobr>{{row.f_type}}</nobr>
139
+ </td>
140
+ <!-- 这里-->
141
+ <td style="text-align:center;">
142
+ <nobr>{{$parent.$parent.$parent.stateFlow(row)}}</nobr>
143
+ <!-- <nobr>{{row.f_state}}</nobr>-->
144
+ </td>
145
+ <td style="text-align:center;">
146
+ <nobr>{{row.f_operator}}</nobr>
147
+ </td>
148
+ <td style="text-align:center;">
149
+ <nobr>{{row.f_operator_data}}</nobr>
150
+ </td>
151
+ <td style="text-align:center;" v-if="row.f_instruct_state === '待发送' && row.f_instruct_state !== '取消发送'">
152
+ <nobr>
153
+ {{row.f_instruct_state}}
154
+ <button v-if="$login.r.includes('取消指令')" @click="$parent.$parent.$parent.backSend(row)" class="button_search" style="margin-left:1rem" v-el:cba>取消指令</button>
155
+ </nobr>
156
+ </td>
157
+ <td style="text-align:center;" v-if="row.f_alias === 'MeiHua' && row.f_instruct_state !== '取消发送'">
158
+ <nobr>
159
+ <button
160
+ v-if="$login.r.includes('撤销指令')"
161
+ @click="$parent.$parent.$parent.backSend2(row)"
162
+ class="button_search"
163
+ style="margin-left:1rem"
164
+ v-el:cba
165
+ :disabled="row.f_instruct_state === '执行成功' || row.f_instruct_state === '执行失败'"
166
+ :class="{ 'disabled-button': row.f_instruct_state === '执行成功' || row.f_instruct_state === '执行失败' }"
167
+ >
168
+ 撤销指令
169
+ </button>
170
+ </nobr>
171
+ </td>
172
+ <td style="text-align:center;" v-if="row.f_instruct_state !== '待发送' && row.f_instruct_state !== '取消发送'">
173
+ <nobr>
174
+ {{row.f_receive_state}}
175
+
176
+ <!-- <button v-if="$login.r.includes('指令重发')" @click="$parent.$parent.$parent.reSend(row)" class="button_search" style="margin-left:1rem" v-el:cba>指令重发</button>-->
177
+ </nobr>
178
+ </td>
179
+ <td style="text-align:center;" v-if="row.f_instruct_state === '取消发送'">
180
+ <nobr>
181
+ <span title="操作人:{{row.f_cancel_inputtor}},操作原因:{{row.f_comments}}">已取消</span>
182
+ </nobr>
183
+ </td>
184
+ <!-- <td style="text-align:center;"><nobr>{{row.f_info}}</nobr></td>
185
+ <td style="text-align:center;"><nobr>{{row.f_comments}}</nobr></td>-->
186
+ <td style="text-align:center;">
187
+ <nobr><span >{{row.f_info}}</span></nobr>
188
+ </td>
189
+ <th style="text-align:center;" v-if="['HaiLiSystem','BoGuanSystem'].includes( $parent.$parent.$parent.row.f_alias)">
190
+ <!-- <th style="text-align:center;">-->
191
+ <button @click.stop='$parent.$parent.$parent.instructWriteCard(row)'
192
+ class="button_search" type="button"
193
+ v-show="row.f_instruct_type === '远程充值'">写卡</button>
194
+ </th>
195
+ </tr>
196
+ </template>
197
+ </data-grid>
198
+ </criteria-paged>
199
+ <modal :show.sync="handcental" backdrop="false" v-ref:modal>
200
+ <header class="modal-header" slot="modal-header">
201
+ <h4 class="modal-title">取消发送</h4>
202
+ </header>
203
+ <article class="modal-body" slot="modal-body">
204
+ <div class="form-group">
205
+ <label class="font_normal_body" >取消发送原因</label>
206
+ <textarea class="form-control" placeholder="请填写取消发送原因" rows="3" v-model="cancelreason"></textarea>
207
+ </div>
208
+ </article>
209
+ <footer class="modal-footer" slot="modal-footer">
210
+ <button @click='close' class="btn btn-default" type="button" v-show="handcental">取消</button>
211
+ <button @click='confirmcenta()' class="button_search" type="button" v-show="handcental">确认</button>
212
+ </footer>
213
+ </modal>
214
+ <modal :show.sync="handcental2" backdrop="false" v-ref:modal>
215
+ <header class="modal-header" slot="modal-header">
216
+ <h4 class="modal-title">撤销发送</h4>
217
+ </header>
218
+ <article class="modal-body" slot="modal-body">
219
+ <div class="form-group">
220
+ <label class="font_normal_body" >撤销发送原因</label>
221
+ <textarea class="form-control" placeholder="请填写撤销发送原因" rows="3" v-model="cancelreason"></textarea>
222
+ </div>
223
+ </article>
224
+ <footer class="modal-footer" slot="modal-footer">
225
+ <button @click='close' class="btn btn-default" type="button" v-show="handcental2">取消</button>
226
+ <button @click='confirmcenta2()' class="button_search" type="button" v-show="handcental2">确认</button>
227
+ </footer>
228
+ </modal>
229
+ </div>
230
+
231
+ </template>
232
+ <script>
233
+ import {HttpResetClass, PagedList} from 'vue-client'
234
+ import Vue from 'vue'
235
+
236
+ export default {
237
+ title: '指令查看',
238
+ name: 'Querylnstruct',
239
+ props: {
240
+ row: {},
241
+ tablename: {
242
+ type: String,
243
+ default: 't_instruct'
244
+ },
245
+ orderitem: {
246
+ type: String,
247
+ default: 'f_instruct_date desc'
248
+ },
249
+ items: {
250
+ type: String,
251
+ default: '*'
252
+ }
253
+ },
254
+ data () {
255
+ return {
256
+ handcental: false,
257
+ handcental2: false,
258
+ cancelreason: '',
259
+ cancelid: '',
260
+ f_userfiles_id: '',
261
+ model: new PagedList('api/af-revenue/sql/insturctDetailQuery', 30, {f_userfiles_id: this.row.f_userfiles_id}),
262
+ row: null,
263
+ searchshow: false,
264
+ show: false,
265
+ maxId: ''
266
+ }
267
+ },
268
+
269
+ async ready () {
270
+ console.log(this.$login.r)
271
+ await this.$refs.paged.$refs.criteria.search()
272
+ // if (this.row.f_meter_brand === '承德NB物联网表') {
273
+ // // if (true) {
274
+ // let http = new HttpResetClass()
275
+ // let getMax = await http.load('POST', 'api/af-revenue/sql/querySingleTable', {data: {items: 'max(id) id',
276
+ // tablename: 't_instruct',
277
+ // condition: ` f_userfiles_id='${this.row.f_userfiles_id}' `
278
+ // }}, {resolveMsg: null, rejectMsg: null})
279
+ // this.maxId = getMax.data[0].id
280
+ // }
281
+ },
282
+ watch: {
283
+ 'row' (val) {
284
+ this.f_userfiles_id = val.f_userfiles_id
285
+ if (this.row != null) {
286
+ this.$refs.paged.$refs.criteria.search()
287
+ }
288
+ }
289
+ },
290
+ methods: {
291
+ async instructWriteCard (row) {
292
+ let res = await this.$CardService.instructWriteCard(this.row)
293
+ if (res) {
294
+ let sql = `update t_instruct set f_instruct_state = '执行成功' WHERE id = ${row.id}`
295
+ await this.$resetpost('api/af-revenue/logic/runSQL', {sql: sql}, {resolveMsg: '操作成功', rejectMsg: '操作失败'})
296
+ await this.$refs.paged.$refs.criteria.search()
297
+ }
298
+ },
299
+ async reSend (row) {
300
+ let sql = `update t_instruct set f_instruct_state = '待发送' WHERE id = ${row.id}`
301
+ await this.$resetpost('api/af-revenue/logic/runSQL', {sql: sql}, {resolveMsg: '操作成功', rejectMsg: '操作失败'})
302
+ this.$refs.paged.$refs.criteria.search()
303
+ },
304
+ stateFlow: function (row) {
305
+ console.log(row)
306
+ let state = ''
307
+ if (row.f_instruct_type.includes('阀门控制')) {
308
+ let content = JSON.parse(row.f_instruct_content)
309
+ if (content.isOpen !== null) {
310
+ if (content.isOpen === 1) {
311
+ state = '开阀'
312
+ } else if (content.isOpen === 0) {
313
+ state = '关阀'
314
+ } else {
315
+ state = row.f_state
316
+ }
317
+ return state
318
+ }
319
+ } else {
320
+ return row.f_state
321
+ }
322
+ },
323
+ clickshow () {
324
+ this.searchshow = !this.searchshow
325
+ },
326
+ close () {
327
+ this.handcental = false
328
+ this.handcental2 = false
329
+ this.$refs.paged.$refs.criteria.search()
330
+ },
331
+ backSend (megrow) {
332
+ if (megrow.f_inputtor != '系统必需') {
333
+ this.handcental = true
334
+ this.cancelid = megrow.id
335
+ } else {
336
+ this.$showAlert('该指令为系统必需状态,无法取消发送。', 'warning', 3000)
337
+ }
338
+ },
339
+ backSend2 (megrow) {
340
+ this.handcental2 = true
341
+ this.cancelid = megrow.id
342
+ },
343
+ confirmcenta () {
344
+ let send = {
345
+ id: this.cancelid, // 当前记录ID
346
+ f_cancel_inputtor_id: this.$login.f.id, // 撤销人id
347
+ f_cancel_inputtor: this.$login.f.name, // 撤销人姓名
348
+ f_instruct_state: '取消发送',
349
+ f_comments: this.cancelreason
350
+ }
351
+ let param = {
352
+ tablename: 't_instruct',
353
+ basedata: send
354
+ }
355
+ this.$resetpost('api/af-revenue/logic/iot_saveTable', param).then(() => {
356
+ // this.params.rows.splice(index, 1)
357
+ console.log('更新成功!')
358
+ })
359
+ this.handcental = false
360
+ this.$refs.paged.$refs.criteria.search()
361
+ },
362
+ confirmcenta2 () {
363
+ let send = {
364
+ id: this.cancelid, // 当前记录ID
365
+ f_cancel_inputtor_id: this.$login.f.id, // 撤销人id
366
+ f_cancel_inputtor: this.$login.f.name, // 撤销人姓名
367
+ f_comments: this.cancelreason
368
+ }
369
+ this.$resetpost('api/af-iot/logic/openapi/cancelSendInstruct', send).then(() => {
370
+ // this.params.rows.splice(index, 1)
371
+ console.log('撤销成功!')
372
+ })
373
+ this.handcental2 = false
374
+ this.$refs.paged.$refs.criteria.search()
375
+ },
376
+ search (arg) {
377
+ arg.condition = `${arg.condition} and f_userfiles_id='${this.row.f_userfiles_id}'`
378
+ this.model.search(arg.condition, arg.model)
379
+ }
380
+ },
381
+ computed: {
382
+ instructType () {
383
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('指令类型')]
384
+ },
385
+ instructState () {
386
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('指令状态')]
387
+ }
388
+ }
389
+ }
390
+ </script>
391
+ <style>
392
+ .form-input-group label {
393
+ text-align: right;
394
+ width: auto;
395
+ }
396
+ .disabled-button {
397
+ background-color: #cccccc !important;
398
+ color: #666666 !important;
399
+ cursor: not-allowed !important;
400
+ opacity: 0.6 !important;
401
+ }
402
+
403
+ .button_search:disabled {
404
+ background-color: #cccccc !important;
405
+ color: #666666 !important;
406
+ cursor: not-allowed !important;
407
+ opacity: 0.6 !important;
408
+ }
409
+ </style>
@@ -130,9 +130,9 @@
130
130
  // import SupervisoryControl from './apply_detail/Supervisory/SupervisoryControl'
131
131
  // import ApplyChargeSearch from './apply_detail/applyCharge/ApplyChargeSearch'
132
132
  // 导入物联网相关查询
133
- import QueryInstruct from '../../components/common/userinfo_detail/iot_detail/QueryInstruct'
133
+ import QueryInstruct from './QueryInstruct'
134
134
  import QueryHistoryInstruct from '../../components/common/userinfo_detail/iot_detail/QueryHistoryInstruct'
135
- import WatchCollection from '../../components/common/userinfo_detail/iot_detail/WatchCollection'
135
+ import WatchCollection from './WatchCollection'
136
136
  import WatchWarning from '../../components/common/userinfo_detail/iot_detail/WatchWarning'
137
137
  import PriceChangeQueryUser from '../../components/common/userinfo_detail/ic_detail/PriceChangeQueryUser'
138
138
  import ChangeRecord from '../../components/common/userinfo_detail/ic_detail/ChangeRecord'
@@ -0,0 +1,117 @@
1
+ <template >
2
+ <div id="stand-work-list" >
3
+ <div @keyup.enter="search" class="span">
4
+ <criteria-paged :model="model" v-ref:paged>
5
+ <criteria @condition-changed='$parent.search' partial='criteria' v-ref:criteria>
6
+ <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
7
+ <div class="row">
8
+
9
+ <div class="col-sm-2 form-group ">
10
+ <label class="font_normal_body">上报时间</label>
11
+ <datepicker :format="'yyyy-MM-dd HH:mm:ss'" :value.sync="model.f_start_date"
12
+ class="datepicker"
13
+ condition="m.f_hand_date >= '{}'"
14
+ placeholder="大于等于"
15
+ style="width: 60%"
16
+ v-model="model.f_start_date"
17
+ ></datepicker>
18
+ </div>
19
+ <div class="col-sm-2 form-group " >
20
+ <label class="font_normal_body">&nbsp;至</label>
21
+ <datepicker :format="'yyyy-MM-dd HH:mm:ss'" :value.sync="model.f_end_date"
22
+ class="datepicker"
23
+ condition="m.f_hand_date <= '{}'"
24
+ placeholder="小于等于"
25
+ style="width: 60%"
26
+ v-model="model.f_end_date"
27
+ ></datepicker>
28
+ </div>
29
+ <div style="float: right">
30
+ <button @click="search()" class="button_search" v-el:cba>查询</button>
31
+ </div>
32
+ </div>
33
+
34
+ </div>
35
+ </criteria>
36
+ <data-grid :model="model" class="list_area table_sy" partial='list' v-ref:grid>
37
+ <template partial='head'>
38
+ <tr>
39
+ <th><nobr>上报日期</nobr></th>
40
+ <th><nobr>表上余额</nobr></th>
41
+ <th><nobr>本次抄表底数</nobr></th>
42
+ <th><nobr>阀门状态</nobr></th>
43
+ <th><nobr>上报类型</nobr></th>
44
+ <th><nobr>系统接收时间</nobr></th>
45
+ <th><nobr>表内累计充值金额</nobr></th>
46
+ <th><nobr>噪音强度</nobr></th>
47
+ <th><nobr>信噪比</nobr></th>
48
+ <th><nobr>电压</nobr></th>
49
+ <th><nobr>电压状态</nobr></th>
50
+ <th><nobr>阀门强制状态</nobr></th>
51
+ <th><nobr>计量类型</nobr></th>
52
+ <th><nobr>金额状态</nobr></th>
53
+
54
+ <th><nobr>磁干扰异常</nobr></th>
55
+ <th><nobr>补偿状态</nobr></th>
56
+ <th><nobr>表上次数</nobr></th>
57
+ </tr>
58
+ </template>
59
+ <template partial='body' partial='list'>
60
+ <tr >
61
+ <td style="text-align:center"><nobr>{{row.f_hand_date}}</nobr></td>
62
+ <th style="text-align:center"><nobr>{{row.f_jval}}</nobr></th>
63
+ <th style="text-align:center"><nobr>{{row.f_tablebase}}</nobr></th>
64
+ <th style="text-align:center"><nobr>{{row.f_valvestate == 0 ? '开阀' : row.f_valvestate === '1' ? '关阀' : '未上报'}}</nobr>
65
+ <th style="text-align:center"><nobr>{{row.f_upload_type}}</nobr></th>
66
+ <th style="text-align:center"><nobr>{{row.f_insert_date}}</nobr></th>
67
+ <th style="text-align:center"><nobr>{{row.f_meterdebitamt}}</nobr></th>
68
+ <th style="text-align:center"><nobr>{{row.f_signal}}</nobr></th>
69
+ <th style="text-align:center"><nobr>{{row.f_snr}}</nobr></th>
70
+ <th style="text-align:center"><nobr>{{row.f_batterylevel}}</nobr></th>
71
+ <th style="text-align:center"><nobr>{{row.f_lowlithiumbattery ? ((row.f_lowlithiumbattery - 0) == 0 ? '正常' : '异常') : '未知'}}</nobr></th>
72
+ <th style="text-align:center"><nobr>{{row.f_networkshutvalve}}</nobr></th>
73
+ <th style="text-align:center"><nobr>{{row.f_wmprepaytype}}</nobr></th>
74
+ <th style="text-align:center"><nobr>{{row.f_moneystate}}</nobr></th>
75
+ <th style="text-align:center"><nobr>{{row.f_magneticInterference}}</nobr></th>
76
+ <th style="text-align:center"><nobr>{{row.f_compensateState}}</nobr></th>
77
+ <th style="text-align:center"><nobr>{{row.f_times}}</nobr></th>
78
+ </tr>
79
+ </template>
80
+ <template partial='foot'></template>
81
+ </data-grid>
82
+ </criteria-paged>
83
+ </div>
84
+ </div>
85
+ </template>
86
+
87
+ <script>
88
+ import {PagedList} from 'vue-client'
89
+
90
+ export default {
91
+ title: 'WatchCollection',
92
+ data () {
93
+ return {
94
+ model: new PagedList('api/af-revenue/sql/iot_getNewLoseUserQuery', 50)
95
+ }
96
+ },
97
+ props: ['row'],
98
+ ready () {
99
+ this.$refs.paged.$refs.criteria.search()
100
+ },
101
+ methods: {
102
+ search (args) {
103
+ args.condition = `${args.condition} and f_userfiles_id='${this.row.f_userfiles_id}'`
104
+ this.model.search(args.condition, args.model)
105
+ }
106
+ },
107
+ watch: {
108
+ // 监听查询对象
109
+ 'row' (val) {
110
+ if (this.row != null) {
111
+ this.$refs.paged.$refs.criteria.search()
112
+ }
113
+ }
114
+ }
115
+ }
116
+ </script>
117
+