sale-client 4.2.21 → 4.2.23

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.
Files changed (52) hide show
  1. package/build/dev-server.js +45 -25
  2. package/package.json +1 -1
  3. package/src/App.vue +1 -1
  4. package/src/components/revenue/HandManager/MeterBookUser.vue +726 -726
  5. package/src/components/revenue/comprehen/ComprehenOperation/QrPay/QrPaymentDetailed.vue +423 -423
  6. package/src/components/revenue/comprehen/ComprehenOperation/newchangemeter/ChangeMeter.vue +2 -0
  7. package/src/components/revenue/comprehen/Maintenance/hand/handOperate.vue +469 -469
  8. package/src/components/revenue/machineHandManage/ArrearsQuery.vue +938 -938
  9. package/src/components/webMeter/MeterManage/WebMeterBatchOperationValve.vue +970 -970
  10. package/src/filiale/alashan/eticket/EticketRecordList.vue +428 -428
  11. package/src/filiale/bayan/ChargeList.vue +1010 -1010
  12. package/src/filiale/bayan/StockListmain.vue +543 -543
  13. package/src/filiale/beifangshiye/OtherChargeNew.vue +625 -625
  14. package/src/filiale/jinhong/machineDown.vue +7 -8
  15. package/src/filiale/jinhong/plugins/LoadParams.js +1 -1
  16. package/src/filiale/lixianV3/ArrearsQuery.vue +938 -938
  17. package/src/filiale/lixianV3/InsuranceChargesDetails.vue +425 -425
  18. package/src/filiale/meihekou/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +281 -281
  19. package/src/filiale/qianneng/revenue/sms/AccountMessageList.vue +508 -508
  20. package/src/filiale/ronghao/ArrearsQuery.vue +974 -974
  21. package/src/filiale/ronghao/CardService.js +2144 -2144
  22. package/src/filiale/ronghao/InsuranceManage.vue +58 -58
  23. package/src/filiale/ronghao/MachineChargeService.js +149 -149
  24. package/src/filiale/ronghao/NoCardMeterCenter.vue +534 -534
  25. package/src/filiale/ronghao/PaymentCode.vue +174 -174
  26. package/src/filiale/ronghao/PriceChangeCompensation/CompensationManage.vue +26 -26
  27. package/src/filiale/ronghao/PriceChangeCompensation/IotCompensation.vue +318 -318
  28. package/src/filiale/ronghao/PriceChangeCompensation/JbCompensation.vue +343 -343
  29. package/src/filiale/ronghao/PriceChangeCompensation/SurplusRecordDetail.vue +74 -74
  30. package/src/filiale/ronghao/ReplaceCardManage.vue +415 -415
  31. package/src/filiale/ronghao/Upload.vue +654 -654
  32. package/src/filiale/ronghao/cardDown.vue +1141 -1141
  33. package/src/filiale/ronghao/changemeterOperate.vue +315 -315
  34. package/src/filiale/ronghao/fillgasSpecific.vue +313 -313
  35. package/src/filiale/ronghao/ic_detail/ChargeRecordQuery.vue +106 -106
  36. package/src/filiale/ronghao/ic_detail/WatchCollection.vue +115 -115
  37. package/src/filiale/ronghao/ic_detail/WebHandQueryUser.vue +411 -411
  38. package/src/filiale/ronghao/machineDown.vue +1176 -1176
  39. package/src/filiale/ronghao/replacementSingleInfoOperation.vue +315 -315
  40. package/src/filiale/ronghao/specificInformation.vue +537 -537
  41. package/src/filiale/yangchun/ChargeList.vue +954 -954
  42. package/src/filiale/yuncheng/changemeterListMaintain.vue +504 -504
  43. package/src/filiale/zhongsheng/BlackListList.vue +293 -293
  44. package/src/filiale/zhongyi/HandQueryUser.vue +389 -389
  45. package/src/main.js +1 -1
  46. package/src/plugins/CardService.js +2217 -2217
  47. package/.gradle/5.2.1/fileChanges/last-build.bin +0 -0
  48. package/.gradle/5.2.1/fileHashes/fileHashes.lock +0 -0
  49. package/.gradle/5.2.1/gc.properties +0 -0
  50. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  51. package/.gradle/buildOutputCleanup/cache.properties +0 -2
  52. package/.gradle/vcs-1/gc.properties +0 -0
@@ -1,970 +1,970 @@
1
- <template>
2
- <div class="flex-row">
3
- <div class="basic-main" :class="{'basic-main':!selectRow,'binary-left':selectRow}" style="height: 98%;">
4
- <div class="span">
5
- <criteria-paged :model='model' v-ref:paged>
6
- <criteria :model='model' partial='criteria' v-ref:criteria @condition-changed='$parent.search'>
7
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
8
- <div class="row">
9
- <res-select-group :initres="$parent.$parent.initres" :show-component="['company','department','operator','slicearea']" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
10
- <div class="span" style="float:right">
11
- <button v-if="$parent.$parent.importMeterNumber === '开关阀导入表号'" class="button_new" style="margin-right: 10px" @click="$parent.$parent.showUploadCodeCondition()">导入表号</button>
12
- <import-excel v-if="$parent.$parent.batchImport === '批量开关阀导入'" template-name="批量开关阀导入Excel模板" logic-name="importBatchValue" import-json="importBatchValue.json"></import-excel>
13
- <button class="button_search button_spacing" @click="search()" v-el:cba>查询</button>
14
- <button class="button_clear button_spacing" @click="$parent.$parent.clearmsg">清空</button>
15
- <label class="font_normal_body" v-if="!$parent.$parent.excelTable">超过十万条限制导出</label>
16
- <export-excel v-if="$parent.$parent.excelTable"
17
- class="auto"
18
- :data="{condition: $parent.$parent.condition}"
19
- :field="$parent.$parent.getfield"
20
- sqlurl="api/af-revenue/logic/saleExport" sql-name="iot_getOpertionList"
21
- template-name='指令下发'
22
- :choose-col="true"></export-excel>
23
- <!-- <button class="button_search button_spacing" @click="$parent.$parent.showModal('开阀')">开阀</button>-->
24
- <!-- <button class="button_search button_spacing" @click="$parent.$parent.showModal('关阀')">关阀</button>-->
25
- <button
26
- class="button_search" type="button" @click="$parent.$parent.valvecontrol">
27
- 开关阀
28
- </button>
29
- <button class="button_search button_spacing" v-if="$parent.$parent.jurisdiction.includes('自动阀控')" v-show="$parent.$parent.famenShow1==='关闭'" @click="$parent.$parent.openzdkf('开启')">开启自动阀控 </button>
30
-
31
- <button class="button_search button_spacing" v-if="$parent.$parent.jurisdiction.includes('自动阀控')" v-show="$parent.$parent.famenShow1==='开启'" @click="$parent.$parent.openzdkf('关闭')">关闭自动阀控 </button>
32
-
33
- <!--<button class="button_search" style="width: max-content" @click="$parent.$parent.setRunParam">批量设置参数-->
34
- <!--</button>-->
35
- <div style="float: right" class="button_spacing" :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}" @click="$parent.$parent.hidden()"></div>
36
- </div>
37
- </div>
38
- <div class="row" v-show="$parent.$parent.criteriaShow">
39
- <div class="col-sm-2 ">
40
- <label class="font_normal_body">表&nbsp;钢&nbsp;号&nbsp;</label>
41
- <input @keyup.enter="search" style="width:60%" type="text" class="input_search"
42
- v-model="model.f_meternumber"
43
- placeholder='表钢号'
44
- condition="f_meternumber like '%{}%'"
45
- >
46
- </div>
47
- <div class="col-sm-2 ">
48
- <label class="font_normal_body">客户编号</label>
49
- <input @keyup.enter="search" style="width:60%" type="text" class="input_search "
50
- v-model="model.f_userinfo_code"
51
- placeholder='客户号'
52
- condition="f_userinfo_code like '%{}%'"
53
- >
54
- </div>
55
- <div class="col-sm-2 ">
56
- <label class="font_normal_body">客户姓名</label>
57
- <input @keyup.enter="search" style="width:60%" type="text" class="input_search"
58
- v-model="model.f_user_name"
59
- placeholder='客户姓名'
60
- condition="f_user_name = '{}'"
61
- >
62
- </div>
63
-
64
- <div class="col-sm-2 ">
65
- <label class="font_normal_body">用气地址</label>
66
- <input @keyup.enter="search" style="width:60%" type="text" class="input_search "
67
- v-model="model.f_address"
68
- placeholder='用气地址'
69
- :size="model.f_address ? model.f_address.length : 6"
70
- condition="f_address like '%{}%'"
71
- >
72
- </div>
73
- <div class="col-sm-2 ">
74
- <label class="font_normal_body">小&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;区</label>
75
- <v-select :value.sync="model.f_residential_area"
76
- class="select_list select"
77
- v-model="model.f_residential_area"
78
- style="width: 60%"
79
- multiple
80
- condition="f_residential_area in {}"
81
- :options='$parent.$parent.residentialArea' placeholder='选择小区'
82
- close-on-select>
83
-
84
- </v-select>
85
- </div>
86
-
87
- <div class="col-sm-2 ">
88
- <label class="font_normal_body">客户类型</label>
89
- <v-select style="width:60%"
90
- placeholder='客户类型'
91
- value-single="true"
92
- :value.sync="model.f_user_type"
93
- v-model="model.f_user_type"
94
-
95
- :options='$parent.$parent.userType'
96
- close-on-select condition="f_user_type ='{}'">
97
- </v-select>
98
- </div>
99
- <div class="col-sm-2 ">
100
- <label class="font_normal_body">用气性质</label>
101
- <v-select style="width:60%"
102
- placeholder='用气性质'
103
- value-single="true"
104
- :value.sync="model.f_gasproperties"
105
- v-model="model.f_gasproperties"
106
- :options='$parent.$parent.Gasproperties'
107
- close-on-select condition="f_gasproperties ='{}'">
108
- </v-select>
109
- </div>
110
- <div class="col-sm-2 ">
111
- <label class="font_normal_body">气表品牌</label>
112
- <v-select style="width:60%"
113
- placeholder='气表品牌'
114
- :value.sync="model.f_meter_brand"
115
- v-model="model.f_meter_brand"
116
- :options='$parent.$parent.meterbrand'
117
- close-on-select
118
- >
119
- </v-select>
120
- </div>
121
- <!--<div class="col-sm-3 ">
122
- <label class="font_normal_body">指令状态</label>
123
- <v-select style="width:60%" :value.sync="model.f_instruct_state" v-model="model.f_instruct_state"
124
- placeholder='指令状态'
125
- :options='$parent.$parent.instructState'
126
- close-on-select
127
- condition="f_instruct_state = '{}'"></v-select>
128
- </div>-->
129
- <!-- <div class="col-sm-3 ">-->
130
- <!-- <label class="font_normal_body" style="word-break:keep-all;">安装时间</label>-->
131
- <!-- <datepicker style="width:60%"-->
132
- <!-- placeholder="起始时间"-->
133
- <!-- :value.sync="model.f_start_date"-->
134
- <!-- v-model="model.f_start_date"-->
135
- <!-- :format="'yyyy-MM-dd HH:mm:ss'"-->
136
- <!-- condition="f_gas_date > '{}'"-->
137
- <!-- ></datepicker>-->
138
- <!-- </div>-->
139
- <!-- <div class="col-sm-3 ">-->
140
- <!-- <label class="font_normal_body" style="word-break:keep-all;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;</label>-->
141
- <!-- <datepicker placeholder="结束时间"-->
142
- <!-- style="width:60%"-->
143
- <!-- :value.sync="model.f_end_date"-->
144
- <!-- v-model="model.f_end_date"-->
145
- <!-- :format="'yyyy-MM-dd HH:mm:ss'"-->
146
- <!-- condition="f_gas_date < '{}'"-->
147
- <!-- ></datepicker>-->
148
- <!-- </div>-->
149
- <div class="col-sm-2 ">
150
- <label class="font_normal_body">阀门状态</label>
151
- <!-- @change="$parent.$parent.changeShow"-->
152
- <v-select style="width:60%" :value.sync="model.f_valvestate" v-model="model.f_valvestate"
153
- placeholder='全部'
154
- :options='$parent.$parent.valvestate'
155
- close-on-select
156
- condition="f_valvestate = '{}'"></v-select>
157
- </div>
158
- <div class="col-sm-2 ">
159
- <label class="font_normal_body">阀控状态</label>
160
- <!-- @change="$parent.$parent.changeShow1"-->
161
- <v-select style="width:60%" :value.sync="model.f_network_valve" v-model="model.f_network_valve"
162
- placeholder='全部'
163
- :options='$parent.$parent.f_network_valve'
164
- close-on-select
165
- condition="f_network_valve = '{}'"
166
- ></v-select>
167
- </div>
168
- </div>
169
- </div>
170
- </criteria>
171
- <data-grid :model="model" partial='list' v-ref:grid class="list_area table_sy">
172
- <template partial='head'>
173
- <tr>
174
- <th style="text-align:center">
175
- <nobr>全选</nobr>
176
- <input @keyup.enter="search" style="width:60%" type="checkbox" v-model='checked1' :checked="$parent.$parent.$parent.checked1"
177
- @click="$parent.$parent.$parent.checkedALL()">
178
- </th>
179
-
180
- <th style="text-align:center">
181
- <nobr>客户号</nobr>
182
- </th>
183
- <th style="text-align:center">
184
- <nobr>客户类型</nobr>
185
- </th>
186
- <th style="text-align:center">
187
- <nobr>用气性质</nobr>
188
- </th>
189
- <th style="text-align:center">
190
- <nobr>客户姓名</nobr>
191
- </th>
192
- <th style="text-align:center">
193
- <nobr>用气地址</nobr>
194
- </th>
195
- <th style="text-align:center">
196
- <nobr>小区</nobr>
197
- </th>
198
- <th style="text-align:center">
199
- <nobr>片区</nobr>
200
- </th>
201
- <th style="text-align:center">
202
- <nobr>安装时间</nobr>
203
- </th>
204
- <th style="text-align:center;color:#3c763d">
205
- <nobr>表钢号</nobr>
206
- </th>
207
- <th style="text-align:center">
208
- <nobr>气表品牌</nobr>
209
- </th>
210
- <th style="text-align:center">
211
- <nobr>表编号</nobr>
212
- </th>
213
- <th style="text-align:center">
214
- <nobr>气表型号</nobr>
215
- </th>
216
- <th style="text-align:center">
217
- <nobr>阀门状态</nobr>
218
- </th>
219
- <th style="text-align:center">
220
- <nobr>阀控状态</nobr>
221
- </th>
222
- <!--<th style="text-align:center">
223
- <nobr>指令状态</nobr>
224
- </th>-->
225
- <th style="text-align:center">
226
- <nobr>组织机构</nobr>
227
- </th>
228
- </tr>
229
- </template>
230
- <template partial='body' partial='list' v-ref:grid >
231
- <tr>
232
- <td style="text-align:center">
233
- <input @keyup.enter="search" style="width:60%" type="checkbox"
234
- checked="checked" name="opertioninput"
235
- @click="$parent.$parent.$parent.checked(row)"></td>
236
- <!-- disabled="true"-->
237
- <td style="text-align:center">
238
- <nobr>{{row.f_userinfo_code}}</nobr>
239
- </td>
240
- <td style="text-align:center">
241
- <nobr>{{row.f_user_type}}</nobr>
242
- </td>
243
- <td style="text-align:center">
244
- <nobr>{{row.f_gasproperties}}</nobr>
245
- </td>
246
- <td style="text-align:center">
247
- <nobr>{{row.f_user_name}}</nobr>
248
- </td>
249
- <td>
250
- <nobr>{{row.f_address}}</nobr>
251
- </td>
252
- <td>
253
- <nobr>{{row.f_residential_area}}</nobr>
254
- </td>
255
- <td>
256
- <nobr>{{row.f_zones}}</nobr>
257
- </td>
258
- <td style="text-align:center">
259
- <nobr>{{row.f_gas_date}}</nobr>
260
- </td>
261
- <td style="text-align:center">
262
- <nobr>{{row.f_meternumber}}</nobr>
263
- </td>
264
- <td style="text-align:center">
265
- <nobr>{{row.f_meter_brand}}</nobr>
266
- </td>
267
- <td style="text-align:center">{{row.f_userfiles_id}}</td>
268
- <td style="text-align:center">
269
- <nobr>{{row.f_meter_style}}</nobr>
270
- </td>
271
- <td style="text-align:center">
272
- <nobr>{{row.f_valvestate}}</nobr>
273
- </td>
274
- <td style="text-align:center">
275
- <nobr>{{row.f_network_valve}}</nobr>
276
- </td>
277
- <!--<td style="text-align:center">
278
- <nobr>{{row.f_instruct_state}}</nobr>
279
- </td>-->
280
- <td style="text-align:center">
281
- <nobr>{{row.f_orgname}}</nobr>
282
- </td>
283
- </tr>
284
- </template>
285
- <template partial='foot'></template>
286
- </data-grid>
287
- </criteria-paged>
288
- </div>
289
- </div>
290
- <modal :show.sync="batchMeterShow" width="570px" title="文件导入" v-ref:modal large backdrop="false">
291
- <article slot="modal-body" class="modal-body">
292
- <file-upload class="my-file-uploader col-sm-9" name="meterNUmberUploadFile" action="rs/file/uploadFile" tagname="确定" multiple v-ref:file></file-upload>
293
- </article>
294
- <footer slot="modal-footer" class="modal-footer">
295
- </footer>
296
- </modal>
297
- <div style="height: 98%;width: 40%" class="binary-right" v-if="selectRow">
298
- <sale-web-meter-operate v-if="selectRow" :row="selectRow" @research = research()></sale-web-meter-operate>
299
- </div>
300
- </div>
301
- <!--阀控管理弹框-->
302
- <modal :show.sync="valve">
303
- <header slot="modal-header" class="modal-header">
304
- <button type="button" class="close" @click="close()"><span>&times;</span></button>
305
- <h4 class="modal-title" align="center">阀控管理</h4>
306
- </header>
307
- <article slot="modal-body" class="modal-body">
308
- <div class="form-group col-sm-12" style="padding-left: 8px">
309
- <label class="font_normal_body">阀控状态</label>
310
- <div class="col-sm-3">
311
- <select v-model="selectedOption" class="input_search">
312
- <option value="">请选择</option>
313
- <option v-for="option in networkValveOptions" :value="option">
314
- {{ option }}
315
- </option>
316
- </select>
317
- </div>
318
- </div>
319
-
320
- <div class="form-group col-sm-12 " style="padding-left: 8px">
321
- <label class="font_normal_body" :class="operateReason?'':'text-danger'">操作原因</label>
322
- <textarea class="form-control" style="width:80%" v-model="operateReason" rows="1"
323
- placeholder="请填写操作原因"></textarea>
324
- </div>
325
- </article>
326
- <footer slot="modal-footer" class="modal-footer">
327
- <!-- <button type="button" class="button_search btn-ln fr" :disabled="!operateReason" @click='valveoperate(true,0)' title="屏蔽特殊条件下(充值开阀等)触发的自动开阀指令">强制开阀</button>-->
328
- <button type="button" class="button_search button_spacing" :disabled="!operateReason"
329
- @click='valveOperate(true,1)'>
330
- 开阀
331
- </button>
332
- <!-- <button type="button" class="btn btn-info btn-ln fr" :disabled="!operateReason" @click='valveoperate(false, 0)' title="屏蔽特殊条件下(欠费关阀等)触发的自动开阀指令">强制关阀</button>-->
333
- <button type="button" class="button_spacing" :class="operateReason? 'button_export' : 'button_search' "
334
- :disabled="!operateReason"
335
- @click='valveOperate(false, 1)'>关阀
336
- </button>
337
- </footer>
338
- </modal>
339
- <modal :show.sync="isShowUserException" >
340
- <header slot="modal-header" class="modal-header">
341
- <button type="button" class="close" @click="close()"><span>&times;</span></button>
342
- <h4 class="modal-title" align="center">{{val1}}申请备注</h4>
343
- </header>
344
- <article slot="modal-body" class="modal-body">
345
- <div style="padding-left: 8px" v-if="val1=='设置参数'">
346
- <label class="font_normal_body">参数类型</label>
347
- <v-select style="width:60%"
348
- placeholder='参数类型'
349
- :value.sync="parameterType"
350
- v-model="parameterType"
351
- :options='parameterTypeList'
352
- close-on-select>
353
- </v-select>
354
- </div>
355
- <div class="form-group " style="padding-left: 8px" :class="{'color-red':f_beizhu}">
356
- <label class="font_normal_body">{{val1}}原因:</label>
357
- <textarea class="search_area" v-model="f_beizhu" rows="10" cols="75" placeholder="备注信息"></textarea>
358
- </div>
359
- </article>
360
- <footer slot="modal-footer" class="modal-footer">
361
- <button type="button" class="btn btn-success btn-ln fr" @click='addApprovalValve()'>提交</button>
362
- <button type="button" class="btn btn-info btn-ln fr" @click='close()'>取消</button>
363
- </footer>
364
- </modal>
365
- </template>
366
-
367
- <script>
368
- import {PagedList} from 'vue-client'
369
- import Vue from 'vue'
370
- import * as Util from '../../../Util'
371
- import {HttpResetClass} from 'vue-client'
372
- import axios from 'axios'
373
-
374
- let fun = (json) => {
375
- let array = []
376
- array.push({label: '无', value: undefined})
377
- for (let i = 0; i < json.length; i++) {
378
- if (json[i] == null) {
379
- continue
380
- }
381
- array.push({label: json[i], value: json[i]})
382
- }
383
- return array
384
- }
385
- let readyGen = async function (self) {
386
- await self.$LoadParams.loadParam()
387
- self.initQueryParam()
388
- self.getaddress()
389
- }
390
- export default {
391
- title: '批量开关阀',
392
- name: 'WebMeterBatchOperationValve',
393
- data () {
394
- return {
395
- selectedOption: '手动',
396
- delaySeconds: '',
397
- networkValveOptions: [
398
- '手动',
399
- '自动',
400
- '1小时后自动',
401
- '3小时后自动',
402
- '6小时后自动',
403
- '12小时后自动'
404
- ],
405
- // 开关阀操作原因
406
- operateReason: '',
407
- valve: false,
408
- famenShow: '', // 是否展示开关阀门按钮
409
- famenShow1: '', // 阀控状态
410
- meterbrand: [],
411
- model: new PagedList('api/af-revenue/sql/iot_getOpertionList', 20),
412
- searchshow: false,
413
- criteriaShow: false,
414
- condition: '',
415
- orgcondition: `and f_orgid = '${this.$login.f.orgid}'`,
416
- // isShowUserException: false,
417
- val1: '',
418
- f_beizhu: '',
419
- batchImport: '',
420
- Gasusertype: [],
421
- Gasproperties: [],
422
- metermodel: [],
423
- checked1: true,
424
- residentialArea: [],
425
- WarningType: [
426
- {label: '全部', value: ''}
427
- ],
428
- selectRow: '',
429
- initres: {
430
- org: [this.$login.f.orgid],
431
- dep: [],
432
- user: []
433
- },
434
- styles: false,
435
- excelTable: true,
436
- getfield: {
437
- 'f_orgname': '组织机构',
438
- 'f_userinfo_code': '客户号',
439
- 'f_user_type': '客户类型',
440
- 'f_gasproperties': '用气性质',
441
- 'f_user_name': '客户姓名',
442
- 'f_address': '用气地址',
443
- 'f_residential_area': '小区',
444
- 'f_zones': '片区',
445
- 'f_gas_date': '安装时间',
446
- 'f_meternumber': '表钢号',
447
- 'f_meter_brand': '气表品牌',
448
- 'f_userfiles_id': '表编号',
449
- 'f_meter_style': '气表型号',
450
- 'f_valvestate': '阀门状态'
451
-
452
- },
453
- obj: {
454
- userid: this.$login.f.id,
455
- source: `tool.getFullTree(this.getRights().where(row.getType() == $organization$))`,
456
- res: this.$login.f.f_fengongsi,
457
- resids: this.$login.f.orgid
458
- },
459
- // 开关阀权限
460
- valveLimit: false,
461
- uploadCodeCondition: '', // 导入表号条件
462
- batchMeterShow: '', // 导入表号弹框
463
- importMeterNumber: '', // 开关阀导入权限
464
- // 设置参数权限
465
- Setarameterermissions: false,
466
- parameterType: '',
467
- map: new Map()
468
- }
469
- },
470
- ready () {
471
- // this.valveLimit = this.$login.r.includes('开关阀权限')
472
- // this.Setarameterermissions = this.$login.r.includes('设置参数权限')
473
- this.$refs.paged.$refs.criteria.model.f_start_date = Util.toStandardDateString() + ' 00:00:00'
474
- this.$refs.paged.$refs.criteria.model.f_end_date = Util.toStandardDateString() + ' 23:59:59'
475
- this.$refs.paged.$refs.criteria.search()
476
- // 初始化气表品牌下拉框
477
- readyGen(this)
478
- this.getAuthority()
479
- },
480
- events: {
481
- 'dblclick' (row) {
482
- console.log('看看这个row', row)
483
- this.selectRow = row
484
- },
485
- 'onFileUpload': async function (file, res) {
486
- this.iswork = true
487
- let param = {
488
- filepath: res.f_downloadpath,
489
- importJson: this.importJson,
490
- logicName: this.logicName,
491
- f_operator: this.$login.f.name,
492
- f_operatorid: this.$login.f.id,
493
- f_orgid: this.$login.f.orgid,
494
- f_orgname: this.$login.f.orgs,
495
- f_depid: this.$login.f.depids,
496
- f_depname: this.$login.f.deps
497
- }
498
- this.batchMeterShow = false
499
- let self = this
500
- try {
501
- await axios.post('api/af-revenue/logic/importData',
502
- {data: param}, {timeout: 10 * 60 * 1000}).then((res) => {
503
- if (res.data) {
504
- this.uploadCodeCondition = self.convertToIn(res.data.dataArr)
505
- this.uploadCodeCondition = ' and f_meternumber in' + this.uploadCodeCondition
506
- }
507
- })
508
- } catch (error) {
509
- if (error.response) {
510
- if (error.response.status == 500) {
511
- this.$showAlert('服务繁忙,请重试!!!', 'danger', 3000)
512
- } else if (error.response.status == 404) {
513
- this.$showAlert('服务运行中,请耐心等待后进行重试!!', 'danger', 3000)
514
- } else {
515
- this.$showAlert(error.response.data, 'danger', 2000)
516
- }
517
- console.log(error.response.data)
518
- console.log(error.response.status)
519
- console.log(error.response.headers)
520
- } else if (error.request) {
521
- console.log(error.request)
522
- this.$showAlert(error.request, 'danger', 2000)
523
- } else {
524
- console.log('Error', error.message)
525
- this.$showAlert(error.message, 'danger', 2000)
526
- }
527
- this.iswork = false
528
- }
529
- this.batchShow = false
530
- }
531
- },
532
- methods: {
533
- // 阀控管理
534
- valvecontrol () {
535
- if (this.$login.r.includes('开关阀权限')) {
536
- let array = []
537
- this.map.forEach((value, key, map) => {
538
- array.push(map.get(key))
539
- })
540
- this.valve = true
541
- this.array = array
542
- console.log('看看array和valve', array, this.valve)
543
- } else {
544
- this.$showAlert('您没有【开关阀权限】,请联系管理员!!', 'warning', 3000)
545
- }
546
- },
547
- async valveOperate(oper, value) {
548
- const array = this.array
549
- const msg = oper ? '开阀' : '关阀'
550
- const valueState = value === 0 ? '自动' : '手动'
551
- const currentTime = new Date()
552
- const beijingTime = new Date(currentTime.getTime() + 8 * 60 * 60 * 1000)
553
- const formattedBeijingTime = beijingTime.toISOString().slice(0, 19).replace('T', ' ')
554
-
555
- const delayMapping = {
556
- '1小时后自动': 3600,
557
- '3小时后自动': 10800,
558
- '6小时后自动': 21600,
559
- '12小时后自动': 43200,
560
- }
561
-
562
- const delaySeconds = delayMapping[this.selectedOption] || 0
563
- const adjustedTime = new Date(currentTime.getTime() + delaySeconds * 1000)
564
- const adjustedBeijingTime = new Date(adjustedTime.getTime() + 8 * 60 * 60 * 1000)
565
- const formattedAdjustedBeijingTime = adjustedBeijingTime.toISOString().slice(0, 19).replace('T', ' ')
566
-
567
- // 准备批量操作的数据
568
- const batchData = {
569
- data1: {
570
- f_apply_type: '阀门控制',
571
- userid: array,
572
- nowDate: new Date(),
573
- f_apply_value: msg,
574
- f_apply_beizhu: this.operateReason,
575
- f_apply_operator: Vue.$login.f.name,
576
- },
577
- data2: {
578
- userid: array,
579
- instructtype: '阀门控制',
580
- isOpen: msg,
581
- reasonInfo: this.operateReason,
582
- f_instruct_state: '待发送',
583
- inputtor: Vue.$login.f.name,
584
- instructType: '阀门控制',
585
- instructTitle: `手动${msg}`,
586
- meterBrandName: array[0].f_alias,
587
- inputtorid: Vue.$login.f.id,
588
- meternumberf: array[0].f_meternumber,
589
- contentData: { isOpen: oper ? 1 : 0 },
590
- auto_adjust_option: this.selectedOption,
591
- delaySeconds,
592
- f_current_timestamp: formattedAdjustedBeijingTime,
593
- executeDelayedOperation: true,
594
- f_timestamp: formattedBeijingTime,
595
- }
596
- }
597
-
598
- const load = new HttpResetClass()
599
- await load.load('POST', 'api/af-revenue/logic/iot_instructUpdateAndDelect', {
600
- data: batchData
601
- }, {warnMsg: null, resolveMsg: 'null'})
602
-
603
- this.$showAlert(`正在批量修改操作中,请稍后...`, 'warning', 5000)
604
-
605
- this.valve = false
606
- this.operateReason = ''
607
-
608
- if (this.selectedOption !== '手动') {
609
- const autoMsg = this.selectedOption !== '自动'
610
- ? `阀控状态将在${this.selectedOption}后自动调整为【自动】`
611
- : `阀控状态自动调整为 【自动】`
612
-
613
- this.$showAlert(autoMsg, 'info', 3000)
614
-
615
- await this.$resetpost('api/af-revenue/logic/iot_processDelayedOperations', { data: batchData.data2 })
616
-
617
- this.$emit('refresh')
618
- console.log('延时操作逻辑已执行')
619
- } else {
620
- this.$emit('refresh')
621
- }
622
-
623
- this.$showMessage(`执行完成,总共执行了${array.length}户的申请操作`)
624
- },
625
- close () {
626
- this.valve = false
627
- this.operateReason = ''
628
- },
629
- // 数组转in
630
- convertToIn (val) {
631
- let temp = ''
632
- if (val instanceof Array) {
633
- if (val.length >= 1) {
634
- temp = '('
635
- val.forEach((res) => {
636
- temp += `'${res}',`
637
- })
638
- temp = temp.substr(0, temp.length - 1) + ')'
639
- }
640
- }
641
- return temp
642
- },
643
- showUploadCodeCondition () {
644
- this.batchMeterShow = true
645
- },
646
- getAuthority () {
647
- if (this.$login.r.find(value => value == '批量开关阀导入')) {
648
- this.batchImport = '批量开关阀导入'
649
- }
650
- if (this.$login.r.find(value => value == '开关阀导入表号')) {
651
- this.importMeterNumber = '开关阀导入表号'
652
- }
653
- },
654
- research () {
655
- this.selectRow = null
656
- this.$refs.paged.$refs.criteria.search()
657
- },
658
- async getaddress () {
659
- let HttpReset = new HttpResetClass()
660
- var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
661
- data: {
662
- condition: `1=1 and s.f_orgid = '${this.$login.f.orgid}'`
663
- }
664
- }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
665
- console.log('小区', data)
666
- let house = []
667
- for (let row of data.data) {
668
- house.push({label: row.f_residential_area, value: row.f_residential_area})
669
- }
670
- this.residentialArea = house
671
- },
672
-
673
- initQueryParam () {
674
- let arr = []
675
- this.$GetSaleParam.getGasbrand().forEach((item) => {
676
- let temp = {}
677
- if(item.value.f_meter_type==='物联网表'){
678
- temp.label = item.label
679
- temp.value = item.value.f_meter_brand
680
- arr.push(temp )
681
- }
682
- })
683
-
684
- this.meterbrand = [{label: '全部', value: ''}, ...arr]
685
- },
686
- hidden () {
687
- this.criteriaShow = !this.criteriaShow
688
- },
689
- async search (args) {
690
- args.condition = `${args.condition} ` + this.orgcondition
691
- if (this.$refs.paged.$refs.criteria.model.f_meter_brand) {
692
- if (this.$refs.paged.$refs.criteria.model.f_meter_brand.length > 0) {
693
- args.condition = `${args.condition} ` + `and f_meter_brand = '${this.$refs.paged.$refs.criteria.model.f_meter_brand[0]}'`
694
- }
695
- }
696
- args.condition = `${args.condition} ` + this.uploadCodeCondition
697
- this.condition = args.condition
698
- await this.model.search(args.condition, args.model)
699
-
700
- console.log(this.model.rows)
701
- console.log(this.model)
702
- if (this.$refs.paged.$refs.grid.model.rows.length === 0) {
703
- this.famenShow = ''
704
- this.famenShow1 = ''
705
- } else {
706
- this.famenShow = this.$refs.paged.$refs.criteria.model.f_valvestate[0]
707
- this.famenShow1 = this.$refs.paged.$refs.criteria.model.f_network_valve[0]
708
- }
709
- },
710
- mapset (array) {
711
- this.map.clear()
712
- for (let i = 0; i < array.length; i++) {
713
- let userid = array[i].f_userfiles_id
714
- let alias = array[i].f_alias
715
- let userinfoid = array[i].f_userinfo_id
716
- let f_orgname = array[i].f_orgname
717
- let f_orgid = array[i].f_orgid
718
- let f_meternumber = array[i].f_meternumber
719
- let f_network_valve = array[i].f_network_valve
720
- this.map.set(userid, {id: null, f_user_id: userid, f_alias: alias, f_userinfo_id: userinfoid, f_orgname: f_orgname, f_orgid: f_orgid, f_meternumber: f_meternumber, f_network_valve: f_network_valve})
721
- }
722
- },
723
- back () {
724
- this.$parent.msg = ''
725
- },
726
- clearmsg () {
727
- this.$refs.paged.$refs.criteria.model = {}
728
- // 清空表号
729
- this.uploadCodeCondition = ''
730
- },
731
- clickshow () {
732
- this.searchshow = !this.searchshow
733
- },
734
- getRes (obj) {
735
- this.orgcondition = obj
736
- },
737
- checkedALL () {
738
- this.checked1 = !this.checked1
739
- let box = document.getElementsByName('opertioninput')
740
- for (var i = 0; i < box.length; i++) {
741
- box[i].checked = this.checked1
742
- }
743
- },
744
- checked (val) {
745
- let userid = val.f_userfiles_id
746
- if (this.map.has(userid)) {
747
- this.map.delete(userid)
748
- } else {
749
- this.map.set(userid, {id: null, f_user_id: userid, f_alias: val.f_alias, f_userinfo_id: val.f_userinfo_id, f_orgname: val.f_orgname, f_orgid: val.f_orgid, f_meternumber: val.f_meternumber, f_network_valve: val.f_network_valve})
750
- }
751
- },
752
- // showModal (val) {
753
- // this.val1 = val
754
- // let valve = this.val1
755
- // let array = []
756
- // this.map.forEach((value, key, map) => {
757
- // array.push(map.get(key))
758
- // })
759
- // let temp = array.filter(item => {
760
- // console.log('valve:', valve)
761
- // return item.f_network_valve === '自动'
762
- // })
763
- // console.log('过滤后的状态信息:', temp)
764
- // if (temp.length !== 0) {
765
- // this.isShowUserException = false
766
- // this.$showAlert('请选择阀控状态为手动的选项!', 'danger', 3000)
767
- // return
768
- // }
769
- // this.isShowUserException = true
770
- // },
771
- openzdkf (val) {
772
- let data = {
773
- f_operator: this.$login.f.name,
774
- f_operatorid: this.$login.f.id,
775
- f_orgid: this.$login.f.orgid,
776
- f_orgname: this.$login.f.orgs,
777
- f_depid: this.$login.f.depids,
778
- f_depname: this.$login.f.deps,
779
- condition: this.condition,
780
- type: val
781
- }
782
- let resolveMsg = ''
783
- let rejectMsg = ''
784
- if (val == '开启') {
785
- resolveMsg = '开启自动阀控成功'
786
- rejectMsg = '开启自动阀控失败'
787
- } else {
788
- resolveMsg = '关闭自动阀控成功'
789
- rejectMsg = '关闭自动阀控失败'
790
- }
791
- this.$resetpost('api/af-revenue/logic/zdfkall', data, {resolveMsg: resolveMsg, rejectMsg: rejectMsg })
792
- },
793
- // close () {
794
- // this.isShowUserException = false
795
- // },
796
- // addApprovalValve () {
797
- // console.log('val1:', this.val1)
798
- // let valve = this.val1
799
- // let array = []
800
- // this.map.forEach((value, key, map) => {
801
- // array.push(map.get(key))
802
- // })
803
- // // console.log(this.map)
804
- // // console.log('array:', array)
805
- // // console.log('valve:', valve)
806
- //
807
- // if (valve == '设置参数') {
808
- // if (this.parameterType == '') {
809
- // console.log(this.parameterType)
810
- // return
811
- // }
812
- // this.approvalValveControl(valve, this.parameterType[0], array)// parameterType【0】设置运行参数
813
- // console.log('')
814
- // } else {
815
- // this.approvalValveControl('阀门控制', valve, array)
816
- // console.log('进入阀门控制')
817
- // }
818
- // this.isShowUserException = false
819
- // },
820
- // setRunParam () {
821
- // this.val1 = '设置参数'
822
- // this.isShowUserException = true
823
- // },
824
-
825
- approvalValveControl (f_apply_type, f_apply_value, array) {
826
- console.log('进入阀门指令提交')
827
- console.log('f_apply_type:', f_apply_type)
828
- console.log('f_apply_value:', f_apply_value)
829
- console.log(array)
830
- let load = new HttpResetClass()
831
- let self = this
832
- load.load('POST', 'api/af-revenue/logic/iot_instructUpdateAndDelect',
833
- {data: {
834
- data1: {
835
- f_apply_type: f_apply_type,
836
- userid: array,
837
- nowDate: new Date(),
838
- f_apply_value: f_apply_value,
839
- f_apply_beizhu: this.f_beizhu,
840
- f_apply_operator: Vue.$login.f.name
841
- },
842
- data2: {
843
- userid: array,
844
- instructtype: f_apply_type,
845
- isOpen: f_apply_value,
846
- reasonInfo: this.f_beizhu,
847
- f_instruct_state: '待发送',
848
- inputtor: Vue.$login.f.name
849
- }
850
- }
851
- }).then((res) => {
852
- let count = res.data.count
853
- let str = `执行完成,总共执行了${array.length}户的申请操作`
854
- self.$showMessage(str)
855
- }).catch((res) => {
856
- this.$showMessage('执行失败,具体失败原因请查看后台日志文件!本次操作已被回滚!')
857
- })
858
- }
859
- /* operationValve(array,valve,instructtype) {
860
- console.log("批量操作array======", array)
861
- console.log("批量操作valve======", valve)
862
- console.log("批量操作 Vue.$login.f.name======", Vue.$login.f.name)
863
- let load = new HttpResetClass()
864
- load.load('POST', 'api/af-revenue/logic/setParameter',
865
- {data:{
866
- userid: array,
867
- instructtype: instructtype,
868
- isOpen:valve,
869
- f_instruct_state:'待审核',
870
- inputtor: Vue.$login.f.name
871
- }}, {rejectMsg: null, resolveMsg: null}).then((res) => {
872
- let count = array.length;
873
- console.log("批量操作 Vue.$login.f.name======", Vue.$login.f.name)
874
- }).catch((res) => {
875
- this.$showMessage("执行失败,具体失败原因请查看后台日志文件!本次操作已被回滚!")
876
- })
877
- } */
878
- },
879
- computed: {
880
- /* WarningType() {
881
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('气表品牌')]
882
- }, */
883
- /* Warningstyle() {
884
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('燃气表型号')]
885
- }, */
886
-
887
- MeterTypes () {
888
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('气表类型')]
889
- },
890
- TableStates () {
891
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('气表状态')]
892
- },
893
- Gasproperties () {
894
- let rs = []
895
- if (this.model.model.f_user_type) {
896
- rs = this.$appdata.getParam(this.model.model.f_user_type[0])
897
- }
898
- return rs
899
- },
900
- // 界面细节权限
901
- jurisdiction () {
902
- console.log('抄表界面细节', this.$login.r)
903
- return this.$login.r ? this.$login.r : []
904
- },
905
- parameterTypeList () {
906
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('设置参数')]
907
- },
908
- signtype1 () {
909
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('标记名称')]
910
- },
911
- parameterState () {
912
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('标记状态')]
913
- },
914
- userType () {
915
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户类型')]
916
- },
917
- userfilesState () {
918
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('上报状态')]
919
- },
920
- valvestate () {
921
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('阀门状态')]
922
- },
923
- f_network_valve () {
924
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('阀控状态')]
925
- },
926
- instructState () {
927
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('指令状态')]
928
- }
929
- },
930
- watch: {
931
- 'model.pageIndex' () {
932
- this.checked1 = false
933
- this.mapset(this.model.rows)
934
- this.checkedALL()
935
- },
936
- 'model.rows' () {
937
- this.checked1 = false
938
- this.mapset(this.model.rows)
939
- this.checkedALL()
940
- },
941
- 'checked1' (val) {
942
- if (val) {
943
- this.mapset(this.model.rows)
944
- } else {
945
- this.map.clear()
946
- }
947
- }
948
- }
949
- }
950
- </script>
951
-
952
- <style scoped>
953
- .PanelTR {
954
- width: 100%;
955
- height: 40px;
956
- }
957
- .text-danger{
958
- color:darkred;
959
- }
960
- .PanelTD {
961
- width: 5%;
962
- }
963
-
964
- .btn-relative {
965
- position: relative;
966
- left: 25px;
967
- top: 15px;
968
- }
969
- </style>
970
-
1
+ <template>
2
+ <div class="flex-row">
3
+ <div class="basic-main" :class="{'basic-main':!selectRow,'binary-left':selectRow}" style="height: 98%;">
4
+ <div class="span">
5
+ <criteria-paged :model='model' v-ref:paged>
6
+ <criteria :model='model' partial='criteria' v-ref:criteria @condition-changed='$parent.search'>
7
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
8
+ <div class="row">
9
+ <res-select-group :initres="$parent.$parent.initres" :show-component="['company','department','operator','slicearea']" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
10
+ <div class="span" style="float:right">
11
+ <button v-if="$parent.$parent.importMeterNumber === '开关阀导入表号'" class="button_new" style="margin-right: 10px" @click="$parent.$parent.showUploadCodeCondition()">导入表号</button>
12
+ <import-excel v-if="$parent.$parent.batchImport === '批量开关阀导入'" template-name="批量开关阀导入Excel模板" logic-name="importBatchValue" import-json="importBatchValue.json"></import-excel>
13
+ <button class="button_search button_spacing" @click="search()" v-el:cba>查询</button>
14
+ <button class="button_clear button_spacing" @click="$parent.$parent.clearmsg">清空</button>
15
+ <label class="font_normal_body" v-if="!$parent.$parent.excelTable">超过十万条限制导出</label>
16
+ <export-excel v-if="$parent.$parent.excelTable"
17
+ class="auto"
18
+ :data="{condition: $parent.$parent.condition}"
19
+ :field="$parent.$parent.getfield"
20
+ sqlurl="api/af-revenue/logic/saleExport" sql-name="iot_getOpertionList"
21
+ template-name='指令下发'
22
+ :choose-col="true"></export-excel>
23
+ <!-- <button class="button_search button_spacing" @click="$parent.$parent.showModal('开阀')">开阀</button>-->
24
+ <!-- <button class="button_search button_spacing" @click="$parent.$parent.showModal('关阀')">关阀</button>-->
25
+ <button
26
+ class="button_search" type="button" @click="$parent.$parent.valvecontrol">
27
+ 开关阀
28
+ </button>
29
+ <button class="button_search button_spacing" v-if="$parent.$parent.jurisdiction.includes('自动阀控')" v-show="$parent.$parent.famenShow1==='关闭'" @click="$parent.$parent.openzdkf('开启')">开启自动阀控 </button>
30
+
31
+ <button class="button_search button_spacing" v-if="$parent.$parent.jurisdiction.includes('自动阀控')" v-show="$parent.$parent.famenShow1==='开启'" @click="$parent.$parent.openzdkf('关闭')">关闭自动阀控 </button>
32
+
33
+ <!--<button class="button_search" style="width: max-content" @click="$parent.$parent.setRunParam">批量设置参数-->
34
+ <!--</button>-->
35
+ <div style="float: right" class="button_spacing" :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}" @click="$parent.$parent.hidden()"></div>
36
+ </div>
37
+ </div>
38
+ <div class="row" v-show="$parent.$parent.criteriaShow">
39
+ <div class="col-sm-2 ">
40
+ <label class="font_normal_body">表&nbsp;钢&nbsp;号&nbsp;</label>
41
+ <input @keyup.enter="search" style="width:60%" type="text" class="input_search"
42
+ v-model="model.f_meternumber"
43
+ placeholder='表钢号'
44
+ condition="f_meternumber like '%{}%'"
45
+ >
46
+ </div>
47
+ <div class="col-sm-2 ">
48
+ <label class="font_normal_body">客户编号</label>
49
+ <input @keyup.enter="search" style="width:60%" type="text" class="input_search "
50
+ v-model="model.f_userinfo_code"
51
+ placeholder='客户号'
52
+ condition="f_userinfo_code like '%{}%'"
53
+ >
54
+ </div>
55
+ <div class="col-sm-2 ">
56
+ <label class="font_normal_body">客户姓名</label>
57
+ <input @keyup.enter="search" style="width:60%" type="text" class="input_search"
58
+ v-model="model.f_user_name"
59
+ placeholder='客户姓名'
60
+ condition="f_user_name = '{}'"
61
+ >
62
+ </div>
63
+
64
+ <div class="col-sm-2 ">
65
+ <label class="font_normal_body">用气地址</label>
66
+ <input @keyup.enter="search" style="width:60%" type="text" class="input_search "
67
+ v-model="model.f_address"
68
+ placeholder='用气地址'
69
+ :size="model.f_address ? model.f_address.length : 6"
70
+ condition="f_address like '%{}%'"
71
+ >
72
+ </div>
73
+ <div class="col-sm-2 ">
74
+ <label class="font_normal_body">小&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;区</label>
75
+ <v-select :value.sync="model.f_residential_area"
76
+ class="select_list select"
77
+ v-model="model.f_residential_area"
78
+ style="width: 60%"
79
+ multiple
80
+ condition="f_residential_area in {}"
81
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
82
+ close-on-select>
83
+
84
+ </v-select>
85
+ </div>
86
+
87
+ <div class="col-sm-2 ">
88
+ <label class="font_normal_body">客户类型</label>
89
+ <v-select style="width:60%"
90
+ placeholder='客户类型'
91
+ value-single="true"
92
+ :value.sync="model.f_user_type"
93
+ v-model="model.f_user_type"
94
+
95
+ :options='$parent.$parent.userType'
96
+ close-on-select condition="f_user_type ='{}'">
97
+ </v-select>
98
+ </div>
99
+ <div class="col-sm-2 ">
100
+ <label class="font_normal_body">用气性质</label>
101
+ <v-select style="width:60%"
102
+ placeholder='用气性质'
103
+ value-single="true"
104
+ :value.sync="model.f_gasproperties"
105
+ v-model="model.f_gasproperties"
106
+ :options='$parent.$parent.Gasproperties'
107
+ close-on-select condition="f_gasproperties ='{}'">
108
+ </v-select>
109
+ </div>
110
+ <div class="col-sm-2 ">
111
+ <label class="font_normal_body">气表品牌</label>
112
+ <v-select style="width:60%"
113
+ placeholder='气表品牌'
114
+ :value.sync="model.f_meter_brand"
115
+ v-model="model.f_meter_brand"
116
+ :options='$parent.$parent.meterbrand'
117
+ close-on-select
118
+ >
119
+ </v-select>
120
+ </div>
121
+ <!--<div class="col-sm-3 ">
122
+ <label class="font_normal_body">指令状态</label>
123
+ <v-select style="width:60%" :value.sync="model.f_instruct_state" v-model="model.f_instruct_state"
124
+ placeholder='指令状态'
125
+ :options='$parent.$parent.instructState'
126
+ close-on-select
127
+ condition="f_instruct_state = '{}'"></v-select>
128
+ </div>-->
129
+ <!-- <div class="col-sm-3 ">-->
130
+ <!-- <label class="font_normal_body" style="word-break:keep-all;">安装时间</label>-->
131
+ <!-- <datepicker style="width:60%"-->
132
+ <!-- placeholder="起始时间"-->
133
+ <!-- :value.sync="model.f_start_date"-->
134
+ <!-- v-model="model.f_start_date"-->
135
+ <!-- :format="'yyyy-MM-dd HH:mm:ss'"-->
136
+ <!-- condition="f_gas_date > '{}'"-->
137
+ <!-- ></datepicker>-->
138
+ <!-- </div>-->
139
+ <!-- <div class="col-sm-3 ">-->
140
+ <!-- <label class="font_normal_body" style="word-break:keep-all;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;</label>-->
141
+ <!-- <datepicker placeholder="结束时间"-->
142
+ <!-- style="width:60%"-->
143
+ <!-- :value.sync="model.f_end_date"-->
144
+ <!-- v-model="model.f_end_date"-->
145
+ <!-- :format="'yyyy-MM-dd HH:mm:ss'"-->
146
+ <!-- condition="f_gas_date < '{}'"-->
147
+ <!-- ></datepicker>-->
148
+ <!-- </div>-->
149
+ <div class="col-sm-2 ">
150
+ <label class="font_normal_body">阀门状态</label>
151
+ <!-- @change="$parent.$parent.changeShow"-->
152
+ <v-select style="width:60%" :value.sync="model.f_valvestate" v-model="model.f_valvestate"
153
+ placeholder='全部'
154
+ :options='$parent.$parent.valvestate'
155
+ close-on-select
156
+ condition="f_valvestate = '{}'"></v-select>
157
+ </div>
158
+ <div class="col-sm-2 ">
159
+ <label class="font_normal_body">阀控状态</label>
160
+ <!-- @change="$parent.$parent.changeShow1"-->
161
+ <v-select style="width:60%" :value.sync="model.f_network_valve" v-model="model.f_network_valve"
162
+ placeholder='全部'
163
+ :options='$parent.$parent.f_network_valve'
164
+ close-on-select
165
+ condition="f_network_valve = '{}'"
166
+ ></v-select>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ </criteria>
171
+ <data-grid :model="model" partial='list' v-ref:grid class="list_area table_sy">
172
+ <template partial='head'>
173
+ <tr>
174
+ <th style="text-align:center">
175
+ <nobr>全选</nobr>
176
+ <input @keyup.enter="search" style="width:60%" type="checkbox" v-model='checked1' :checked="$parent.$parent.$parent.checked1"
177
+ @click="$parent.$parent.$parent.checkedALL()">
178
+ </th>
179
+
180
+ <th style="text-align:center">
181
+ <nobr>客户号</nobr>
182
+ </th>
183
+ <th style="text-align:center">
184
+ <nobr>客户类型</nobr>
185
+ </th>
186
+ <th style="text-align:center">
187
+ <nobr>用气性质</nobr>
188
+ </th>
189
+ <th style="text-align:center">
190
+ <nobr>客户姓名</nobr>
191
+ </th>
192
+ <th style="text-align:center">
193
+ <nobr>用气地址</nobr>
194
+ </th>
195
+ <th style="text-align:center">
196
+ <nobr>小区</nobr>
197
+ </th>
198
+ <th style="text-align:center">
199
+ <nobr>片区</nobr>
200
+ </th>
201
+ <th style="text-align:center">
202
+ <nobr>安装时间</nobr>
203
+ </th>
204
+ <th style="text-align:center;color:#3c763d">
205
+ <nobr>表钢号</nobr>
206
+ </th>
207
+ <th style="text-align:center">
208
+ <nobr>气表品牌</nobr>
209
+ </th>
210
+ <th style="text-align:center">
211
+ <nobr>表编号</nobr>
212
+ </th>
213
+ <th style="text-align:center">
214
+ <nobr>气表型号</nobr>
215
+ </th>
216
+ <th style="text-align:center">
217
+ <nobr>阀门状态</nobr>
218
+ </th>
219
+ <th style="text-align:center">
220
+ <nobr>阀控状态</nobr>
221
+ </th>
222
+ <!--<th style="text-align:center">
223
+ <nobr>指令状态</nobr>
224
+ </th>-->
225
+ <th style="text-align:center">
226
+ <nobr>组织机构</nobr>
227
+ </th>
228
+ </tr>
229
+ </template>
230
+ <template partial='body' partial='list' v-ref:grid >
231
+ <tr>
232
+ <td style="text-align:center">
233
+ <input @keyup.enter="search" style="width:60%" type="checkbox"
234
+ checked="checked" name="opertioninput"
235
+ @click="$parent.$parent.$parent.checked(row)"></td>
236
+ <!-- disabled="true"-->
237
+ <td style="text-align:center">
238
+ <nobr>{{row.f_userinfo_code}}</nobr>
239
+ </td>
240
+ <td style="text-align:center">
241
+ <nobr>{{row.f_user_type}}</nobr>
242
+ </td>
243
+ <td style="text-align:center">
244
+ <nobr>{{row.f_gasproperties}}</nobr>
245
+ </td>
246
+ <td style="text-align:center">
247
+ <nobr>{{row.f_user_name}}</nobr>
248
+ </td>
249
+ <td>
250
+ <nobr>{{row.f_address}}</nobr>
251
+ </td>
252
+ <td>
253
+ <nobr>{{row.f_residential_area}}</nobr>
254
+ </td>
255
+ <td>
256
+ <nobr>{{row.f_zones}}</nobr>
257
+ </td>
258
+ <td style="text-align:center">
259
+ <nobr>{{row.f_gas_date}}</nobr>
260
+ </td>
261
+ <td style="text-align:center">
262
+ <nobr>{{row.f_meternumber}}</nobr>
263
+ </td>
264
+ <td style="text-align:center">
265
+ <nobr>{{row.f_meter_brand}}</nobr>
266
+ </td>
267
+ <td style="text-align:center">{{row.f_userfiles_id}}</td>
268
+ <td style="text-align:center">
269
+ <nobr>{{row.f_meter_style}}</nobr>
270
+ </td>
271
+ <td style="text-align:center">
272
+ <nobr>{{row.f_valvestate}}</nobr>
273
+ </td>
274
+ <td style="text-align:center">
275
+ <nobr>{{row.f_network_valve}}</nobr>
276
+ </td>
277
+ <!--<td style="text-align:center">
278
+ <nobr>{{row.f_instruct_state}}</nobr>
279
+ </td>-->
280
+ <td style="text-align:center">
281
+ <nobr>{{row.f_orgname}}</nobr>
282
+ </td>
283
+ </tr>
284
+ </template>
285
+ <template partial='foot'></template>
286
+ </data-grid>
287
+ </criteria-paged>
288
+ </div>
289
+ </div>
290
+ <modal :show.sync="batchMeterShow" width="570px" title="文件导入" v-ref:modal large backdrop="false">
291
+ <article slot="modal-body" class="modal-body">
292
+ <file-upload class="my-file-uploader col-sm-9" name="meterNUmberUploadFile" action="rs/file/uploadFile" tagname="确定" multiple v-ref:file></file-upload>
293
+ </article>
294
+ <footer slot="modal-footer" class="modal-footer">
295
+ </footer>
296
+ </modal>
297
+ <div style="height: 98%;width: 40%" class="binary-right" v-if="selectRow">
298
+ <sale-web-meter-operate v-if="selectRow" :row="selectRow" @research = research()></sale-web-meter-operate>
299
+ </div>
300
+ </div>
301
+ <!--阀控管理弹框-->
302
+ <modal :show.sync="valve">
303
+ <header slot="modal-header" class="modal-header">
304
+ <button type="button" class="close" @click="close()"><span>&times;</span></button>
305
+ <h4 class="modal-title" align="center">阀控管理</h4>
306
+ </header>
307
+ <article slot="modal-body" class="modal-body">
308
+ <div class="form-group col-sm-12" style="padding-left: 8px">
309
+ <label class="font_normal_body">阀控状态</label>
310
+ <div class="col-sm-3">
311
+ <select v-model="selectedOption" class="input_search">
312
+ <option value="">请选择</option>
313
+ <option v-for="option in networkValveOptions" :value="option">
314
+ {{ option }}
315
+ </option>
316
+ </select>
317
+ </div>
318
+ </div>
319
+
320
+ <div class="form-group col-sm-12 " style="padding-left: 8px">
321
+ <label class="font_normal_body" :class="operateReason?'':'text-danger'">操作原因</label>
322
+ <textarea class="form-control" style="width:80%" v-model="operateReason" rows="1"
323
+ placeholder="请填写操作原因"></textarea>
324
+ </div>
325
+ </article>
326
+ <footer slot="modal-footer" class="modal-footer">
327
+ <!-- <button type="button" class="button_search btn-ln fr" :disabled="!operateReason" @click='valveoperate(true,0)' title="屏蔽特殊条件下(充值开阀等)触发的自动开阀指令">强制开阀</button>-->
328
+ <button type="button" class="button_search button_spacing" :disabled="!operateReason"
329
+ @click='valveOperate(true,1)'>
330
+ 开阀
331
+ </button>
332
+ <!-- <button type="button" class="btn btn-info btn-ln fr" :disabled="!operateReason" @click='valveoperate(false, 0)' title="屏蔽特殊条件下(欠费关阀等)触发的自动开阀指令">强制关阀</button>-->
333
+ <button type="button" class="button_spacing" :class="operateReason? 'button_export' : 'button_search' "
334
+ :disabled="!operateReason"
335
+ @click='valveOperate(false, 1)'>关阀
336
+ </button>
337
+ </footer>
338
+ </modal>
339
+ <modal :show.sync="isShowUserException" >
340
+ <header slot="modal-header" class="modal-header">
341
+ <button type="button" class="close" @click="close()"><span>&times;</span></button>
342
+ <h4 class="modal-title" align="center">{{val1}}申请备注</h4>
343
+ </header>
344
+ <article slot="modal-body" class="modal-body">
345
+ <div style="padding-left: 8px" v-if="val1=='设置参数'">
346
+ <label class="font_normal_body">参数类型</label>
347
+ <v-select style="width:60%"
348
+ placeholder='参数类型'
349
+ :value.sync="parameterType"
350
+ v-model="parameterType"
351
+ :options='parameterTypeList'
352
+ close-on-select>
353
+ </v-select>
354
+ </div>
355
+ <div class="form-group " style="padding-left: 8px" :class="{'color-red':f_beizhu}">
356
+ <label class="font_normal_body">{{val1}}原因:</label>
357
+ <textarea class="search_area" v-model="f_beizhu" rows="10" cols="75" placeholder="备注信息"></textarea>
358
+ </div>
359
+ </article>
360
+ <footer slot="modal-footer" class="modal-footer">
361
+ <button type="button" class="btn btn-success btn-ln fr" @click='addApprovalValve()'>提交</button>
362
+ <button type="button" class="btn btn-info btn-ln fr" @click='close()'>取消</button>
363
+ </footer>
364
+ </modal>
365
+ </template>
366
+
367
+ <script>
368
+ import {PagedList} from 'vue-client'
369
+ import Vue from 'vue'
370
+ import * as Util from '../../../Util'
371
+ import {HttpResetClass} from 'vue-client'
372
+ import axios from 'axios'
373
+
374
+ let fun = (json) => {
375
+ let array = []
376
+ array.push({label: '无', value: undefined})
377
+ for (let i = 0; i < json.length; i++) {
378
+ if (json[i] == null) {
379
+ continue
380
+ }
381
+ array.push({label: json[i], value: json[i]})
382
+ }
383
+ return array
384
+ }
385
+ let readyGen = async function (self) {
386
+ await self.$LoadParams.loadParam()
387
+ self.initQueryParam()
388
+ self.getaddress()
389
+ }
390
+ export default {
391
+ title: '批量开关阀',
392
+ name: 'WebMeterBatchOperationValve',
393
+ data () {
394
+ return {
395
+ selectedOption: '手动',
396
+ delaySeconds: '',
397
+ networkValveOptions: [
398
+ '手动',
399
+ '自动',
400
+ '1小时后自动',
401
+ '3小时后自动',
402
+ '6小时后自动',
403
+ '12小时后自动'
404
+ ],
405
+ // 开关阀操作原因
406
+ operateReason: '',
407
+ valve: false,
408
+ famenShow: '', // 是否展示开关阀门按钮
409
+ famenShow1: '', // 阀控状态
410
+ meterbrand: [],
411
+ model: new PagedList('api/af-revenue/sql/iot_getOpertionList', 20),
412
+ searchshow: false,
413
+ criteriaShow: false,
414
+ condition: '',
415
+ orgcondition: `and f_orgid = '${this.$login.f.orgid}'`,
416
+ // isShowUserException: false,
417
+ val1: '',
418
+ f_beizhu: '',
419
+ batchImport: '',
420
+ Gasusertype: [],
421
+ Gasproperties: [],
422
+ metermodel: [],
423
+ checked1: true,
424
+ residentialArea: [],
425
+ WarningType: [
426
+ {label: '全部', value: ''}
427
+ ],
428
+ selectRow: '',
429
+ initres: {
430
+ org: [this.$login.f.orgid],
431
+ dep: [],
432
+ user: []
433
+ },
434
+ styles: false,
435
+ excelTable: true,
436
+ getfield: {
437
+ 'f_orgname': '组织机构',
438
+ 'f_userinfo_code': '客户号',
439
+ 'f_user_type': '客户类型',
440
+ 'f_gasproperties': '用气性质',
441
+ 'f_user_name': '客户姓名',
442
+ 'f_address': '用气地址',
443
+ 'f_residential_area': '小区',
444
+ 'f_zones': '片区',
445
+ 'f_gas_date': '安装时间',
446
+ 'f_meternumber': '表钢号',
447
+ 'f_meter_brand': '气表品牌',
448
+ 'f_userfiles_id': '表编号',
449
+ 'f_meter_style': '气表型号',
450
+ 'f_valvestate': '阀门状态'
451
+
452
+ },
453
+ obj: {
454
+ userid: this.$login.f.id,
455
+ source: `tool.getFullTree(this.getRights().where(row.getType() == $organization$))`,
456
+ res: this.$login.f.f_fengongsi,
457
+ resids: this.$login.f.orgid
458
+ },
459
+ // 开关阀权限
460
+ valveLimit: false,
461
+ uploadCodeCondition: '', // 导入表号条件
462
+ batchMeterShow: '', // 导入表号弹框
463
+ importMeterNumber: '', // 开关阀导入权限
464
+ // 设置参数权限
465
+ Setarameterermissions: false,
466
+ parameterType: '',
467
+ map: new Map()
468
+ }
469
+ },
470
+ ready () {
471
+ // this.valveLimit = this.$login.r.includes('开关阀权限')
472
+ // this.Setarameterermissions = this.$login.r.includes('设置参数权限')
473
+ this.$refs.paged.$refs.criteria.model.f_start_date = Util.toStandardDateString() + ' 00:00:00'
474
+ this.$refs.paged.$refs.criteria.model.f_end_date = Util.toStandardDateString() + ' 23:59:59'
475
+ this.$refs.paged.$refs.criteria.search()
476
+ // 初始化气表品牌下拉框
477
+ readyGen(this)
478
+ this.getAuthority()
479
+ },
480
+ events: {
481
+ 'dblclick' (row) {
482
+ console.log('看看这个row', row)
483
+ this.selectRow = row
484
+ },
485
+ 'onFileUpload': async function (file, res) {
486
+ this.iswork = true
487
+ let param = {
488
+ filepath: res.f_downloadpath,
489
+ importJson: this.importJson,
490
+ logicName: this.logicName,
491
+ f_operator: this.$login.f.name,
492
+ f_operatorid: this.$login.f.id,
493
+ f_orgid: this.$login.f.orgid,
494
+ f_orgname: this.$login.f.orgs,
495
+ f_depid: this.$login.f.depids,
496
+ f_depname: this.$login.f.deps
497
+ }
498
+ this.batchMeterShow = false
499
+ let self = this
500
+ try {
501
+ await axios.post('api/af-revenue/logic/importData',
502
+ {data: param}, {timeout: 10 * 60 * 1000}).then((res) => {
503
+ if (res.data) {
504
+ this.uploadCodeCondition = self.convertToIn(res.data.dataArr)
505
+ this.uploadCodeCondition = ' and f_meternumber in' + this.uploadCodeCondition
506
+ }
507
+ })
508
+ } catch (error) {
509
+ if (error.response) {
510
+ if (error.response.status == 500) {
511
+ this.$showAlert('服务繁忙,请重试!!!', 'danger', 3000)
512
+ } else if (error.response.status == 404) {
513
+ this.$showAlert('服务运行中,请耐心等待后进行重试!!', 'danger', 3000)
514
+ } else {
515
+ this.$showAlert(error.response.data, 'danger', 2000)
516
+ }
517
+ console.log(error.response.data)
518
+ console.log(error.response.status)
519
+ console.log(error.response.headers)
520
+ } else if (error.request) {
521
+ console.log(error.request)
522
+ this.$showAlert(error.request, 'danger', 2000)
523
+ } else {
524
+ console.log('Error', error.message)
525
+ this.$showAlert(error.message, 'danger', 2000)
526
+ }
527
+ this.iswork = false
528
+ }
529
+ this.batchShow = false
530
+ }
531
+ },
532
+ methods: {
533
+ // 阀控管理
534
+ valvecontrol () {
535
+ if (this.$login.r.includes('开关阀权限')) {
536
+ let array = []
537
+ this.map.forEach((value, key, map) => {
538
+ array.push(map.get(key))
539
+ })
540
+ this.valve = true
541
+ this.array = array
542
+ console.log('看看array和valve', array, this.valve)
543
+ } else {
544
+ this.$showAlert('您没有【开关阀权限】,请联系管理员!!', 'warning', 3000)
545
+ }
546
+ },
547
+ async valveOperate(oper, value) {
548
+ const array = this.array
549
+ const msg = oper ? '开阀' : '关阀'
550
+ const valueState = value === 0 ? '自动' : '手动'
551
+ const currentTime = new Date()
552
+ const beijingTime = new Date(currentTime.getTime() + 8 * 60 * 60 * 1000)
553
+ const formattedBeijingTime = beijingTime.toISOString().slice(0, 19).replace('T', ' ')
554
+
555
+ const delayMapping = {
556
+ '1小时后自动': 3600,
557
+ '3小时后自动': 10800,
558
+ '6小时后自动': 21600,
559
+ '12小时后自动': 43200,
560
+ }
561
+
562
+ const delaySeconds = delayMapping[this.selectedOption] || 0
563
+ const adjustedTime = new Date(currentTime.getTime() + delaySeconds * 1000)
564
+ const adjustedBeijingTime = new Date(adjustedTime.getTime() + 8 * 60 * 60 * 1000)
565
+ const formattedAdjustedBeijingTime = adjustedBeijingTime.toISOString().slice(0, 19).replace('T', ' ')
566
+
567
+ // 准备批量操作的数据
568
+ const batchData = {
569
+ data1: {
570
+ f_apply_type: '阀门控制',
571
+ userid: array,
572
+ nowDate: new Date(),
573
+ f_apply_value: msg,
574
+ f_apply_beizhu: this.operateReason,
575
+ f_apply_operator: Vue.$login.f.name,
576
+ },
577
+ data2: {
578
+ userid: array,
579
+ instructtype: '阀门控制',
580
+ isOpen: msg,
581
+ reasonInfo: this.operateReason,
582
+ f_instruct_state: '待发送',
583
+ inputtor: Vue.$login.f.name,
584
+ instructType: '阀门控制',
585
+ instructTitle: `手动${msg}`,
586
+ meterBrandName: array[0].f_alias,
587
+ inputtorid: Vue.$login.f.id,
588
+ meternumberf: array[0].f_meternumber,
589
+ contentData: { isOpen: oper ? 1 : 0 },
590
+ auto_adjust_option: this.selectedOption,
591
+ delaySeconds,
592
+ f_current_timestamp: formattedAdjustedBeijingTime,
593
+ executeDelayedOperation: true,
594
+ f_timestamp: formattedBeijingTime,
595
+ }
596
+ }
597
+
598
+ const load = new HttpResetClass()
599
+ await load.load('POST', 'api/af-revenue/logic/iot_instructUpdateAndDelect', {
600
+ data: batchData
601
+ }, {warnMsg: null, resolveMsg: 'null'})
602
+
603
+ this.$showAlert(`正在批量修改操作中,请稍后...`, 'warning', 5000)
604
+
605
+ this.valve = false
606
+ this.operateReason = ''
607
+
608
+ if (this.selectedOption !== '手动') {
609
+ const autoMsg = this.selectedOption !== '自动'
610
+ ? `阀控状态将在${this.selectedOption}后自动调整为【自动】`
611
+ : `阀控状态自动调整为 【自动】`
612
+
613
+ this.$showAlert(autoMsg, 'info', 3000)
614
+
615
+ await this.$resetpost('api/af-revenue/logic/iot_processDelayedOperations', { data: batchData.data2 })
616
+
617
+ this.$emit('refresh')
618
+ console.log('延时操作逻辑已执行')
619
+ } else {
620
+ this.$emit('refresh')
621
+ }
622
+
623
+ this.$showMessage(`执行完成,总共执行了${array.length}户的申请操作`)
624
+ },
625
+ close () {
626
+ this.valve = false
627
+ this.operateReason = ''
628
+ },
629
+ // 数组转in
630
+ convertToIn (val) {
631
+ let temp = ''
632
+ if (val instanceof Array) {
633
+ if (val.length >= 1) {
634
+ temp = '('
635
+ val.forEach((res) => {
636
+ temp += `'${res}',`
637
+ })
638
+ temp = temp.substr(0, temp.length - 1) + ')'
639
+ }
640
+ }
641
+ return temp
642
+ },
643
+ showUploadCodeCondition () {
644
+ this.batchMeterShow = true
645
+ },
646
+ getAuthority () {
647
+ if (this.$login.r.find(value => value == '批量开关阀导入')) {
648
+ this.batchImport = '批量开关阀导入'
649
+ }
650
+ if (this.$login.r.find(value => value == '开关阀导入表号')) {
651
+ this.importMeterNumber = '开关阀导入表号'
652
+ }
653
+ },
654
+ research () {
655
+ this.selectRow = null
656
+ this.$refs.paged.$refs.criteria.search()
657
+ },
658
+ async getaddress () {
659
+ let HttpReset = new HttpResetClass()
660
+ var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
661
+ data: {
662
+ condition: `1=1 and s.f_orgid = '${this.$login.f.orgid}'`
663
+ }
664
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
665
+ console.log('小区', data)
666
+ let house = []
667
+ for (let row of data.data) {
668
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
669
+ }
670
+ this.residentialArea = house
671
+ },
672
+
673
+ initQueryParam () {
674
+ let arr = []
675
+ this.$GetSaleParam.getGasbrand().forEach((item) => {
676
+ let temp = {}
677
+ if(item.value.f_meter_type==='物联网表'){
678
+ temp.label = item.label
679
+ temp.value = item.value.f_meter_brand
680
+ arr.push(temp )
681
+ }
682
+ })
683
+
684
+ this.meterbrand = [{label: '全部', value: ''}, ...arr]
685
+ },
686
+ hidden () {
687
+ this.criteriaShow = !this.criteriaShow
688
+ },
689
+ async search (args) {
690
+ args.condition = `${args.condition} ` + this.orgcondition
691
+ if (this.$refs.paged.$refs.criteria.model.f_meter_brand) {
692
+ if (this.$refs.paged.$refs.criteria.model.f_meter_brand.length > 0) {
693
+ args.condition = `${args.condition} ` + `and f_meter_brand = '${this.$refs.paged.$refs.criteria.model.f_meter_brand[0]}'`
694
+ }
695
+ }
696
+ args.condition = `${args.condition} ` + this.uploadCodeCondition
697
+ this.condition = args.condition
698
+ await this.model.search(args.condition, args.model)
699
+
700
+ console.log(this.model.rows)
701
+ console.log(this.model)
702
+ if (this.$refs.paged.$refs.grid.model.rows.length === 0) {
703
+ this.famenShow = ''
704
+ this.famenShow1 = ''
705
+ } else {
706
+ this.famenShow = this.$refs.paged.$refs.criteria.model.f_valvestate[0]
707
+ this.famenShow1 = this.$refs.paged.$refs.criteria.model.f_network_valve[0]
708
+ }
709
+ },
710
+ mapset (array) {
711
+ this.map.clear()
712
+ for (let i = 0; i < array.length; i++) {
713
+ let userid = array[i].f_userfiles_id
714
+ let alias = array[i].f_alias
715
+ let userinfoid = array[i].f_userinfo_id
716
+ let f_orgname = array[i].f_orgname
717
+ let f_orgid = array[i].f_orgid
718
+ let f_meternumber = array[i].f_meternumber
719
+ let f_network_valve = array[i].f_network_valve
720
+ this.map.set(userid, {id: null, f_user_id: userid, f_alias: alias, f_userinfo_id: userinfoid, f_orgname: f_orgname, f_orgid: f_orgid, f_meternumber: f_meternumber, f_network_valve: f_network_valve})
721
+ }
722
+ },
723
+ back () {
724
+ this.$parent.msg = ''
725
+ },
726
+ clearmsg () {
727
+ this.$refs.paged.$refs.criteria.model = {}
728
+ // 清空表号
729
+ this.uploadCodeCondition = ''
730
+ },
731
+ clickshow () {
732
+ this.searchshow = !this.searchshow
733
+ },
734
+ getRes (obj) {
735
+ this.orgcondition = obj
736
+ },
737
+ checkedALL () {
738
+ this.checked1 = !this.checked1
739
+ let box = document.getElementsByName('opertioninput')
740
+ for (var i = 0; i < box.length; i++) {
741
+ box[i].checked = this.checked1
742
+ }
743
+ },
744
+ checked (val) {
745
+ let userid = val.f_userfiles_id
746
+ if (this.map.has(userid)) {
747
+ this.map.delete(userid)
748
+ } else {
749
+ this.map.set(userid, {id: null, f_user_id: userid, f_alias: val.f_alias, f_userinfo_id: val.f_userinfo_id, f_orgname: val.f_orgname, f_orgid: val.f_orgid, f_meternumber: val.f_meternumber, f_network_valve: val.f_network_valve})
750
+ }
751
+ },
752
+ // showModal (val) {
753
+ // this.val1 = val
754
+ // let valve = this.val1
755
+ // let array = []
756
+ // this.map.forEach((value, key, map) => {
757
+ // array.push(map.get(key))
758
+ // })
759
+ // let temp = array.filter(item => {
760
+ // console.log('valve:', valve)
761
+ // return item.f_network_valve === '自动'
762
+ // })
763
+ // console.log('过滤后的状态信息:', temp)
764
+ // if (temp.length !== 0) {
765
+ // this.isShowUserException = false
766
+ // this.$showAlert('请选择阀控状态为手动的选项!', 'danger', 3000)
767
+ // return
768
+ // }
769
+ // this.isShowUserException = true
770
+ // },
771
+ openzdkf (val) {
772
+ let data = {
773
+ f_operator: this.$login.f.name,
774
+ f_operatorid: this.$login.f.id,
775
+ f_orgid: this.$login.f.orgid,
776
+ f_orgname: this.$login.f.orgs,
777
+ f_depid: this.$login.f.depids,
778
+ f_depname: this.$login.f.deps,
779
+ condition: this.condition,
780
+ type: val
781
+ }
782
+ let resolveMsg = ''
783
+ let rejectMsg = ''
784
+ if (val == '开启') {
785
+ resolveMsg = '开启自动阀控成功'
786
+ rejectMsg = '开启自动阀控失败'
787
+ } else {
788
+ resolveMsg = '关闭自动阀控成功'
789
+ rejectMsg = '关闭自动阀控失败'
790
+ }
791
+ this.$resetpost('api/af-revenue/logic/zdfkall', data, {resolveMsg: resolveMsg, rejectMsg: rejectMsg })
792
+ },
793
+ // close () {
794
+ // this.isShowUserException = false
795
+ // },
796
+ // addApprovalValve () {
797
+ // console.log('val1:', this.val1)
798
+ // let valve = this.val1
799
+ // let array = []
800
+ // this.map.forEach((value, key, map) => {
801
+ // array.push(map.get(key))
802
+ // })
803
+ // // console.log(this.map)
804
+ // // console.log('array:', array)
805
+ // // console.log('valve:', valve)
806
+ //
807
+ // if (valve == '设置参数') {
808
+ // if (this.parameterType == '') {
809
+ // console.log(this.parameterType)
810
+ // return
811
+ // }
812
+ // this.approvalValveControl(valve, this.parameterType[0], array)// parameterType【0】设置运行参数
813
+ // console.log('')
814
+ // } else {
815
+ // this.approvalValveControl('阀门控制', valve, array)
816
+ // console.log('进入阀门控制')
817
+ // }
818
+ // this.isShowUserException = false
819
+ // },
820
+ // setRunParam () {
821
+ // this.val1 = '设置参数'
822
+ // this.isShowUserException = true
823
+ // },
824
+
825
+ approvalValveControl (f_apply_type, f_apply_value, array) {
826
+ console.log('进入阀门指令提交')
827
+ console.log('f_apply_type:', f_apply_type)
828
+ console.log('f_apply_value:', f_apply_value)
829
+ console.log(array)
830
+ let load = new HttpResetClass()
831
+ let self = this
832
+ load.load('POST', 'api/af-revenue/logic/iot_instructUpdateAndDelect',
833
+ {data: {
834
+ data1: {
835
+ f_apply_type: f_apply_type,
836
+ userid: array,
837
+ nowDate: new Date(),
838
+ f_apply_value: f_apply_value,
839
+ f_apply_beizhu: this.f_beizhu,
840
+ f_apply_operator: Vue.$login.f.name
841
+ },
842
+ data2: {
843
+ userid: array,
844
+ instructtype: f_apply_type,
845
+ isOpen: f_apply_value,
846
+ reasonInfo: this.f_beizhu,
847
+ f_instruct_state: '待发送',
848
+ inputtor: Vue.$login.f.name
849
+ }
850
+ }
851
+ }).then((res) => {
852
+ let count = res.data.count
853
+ let str = `执行完成,总共执行了${array.length}户的申请操作`
854
+ self.$showMessage(str)
855
+ }).catch((res) => {
856
+ this.$showMessage('执行失败,具体失败原因请查看后台日志文件!本次操作已被回滚!')
857
+ })
858
+ }
859
+ /* operationValve(array,valve,instructtype) {
860
+ console.log("批量操作array======", array)
861
+ console.log("批量操作valve======", valve)
862
+ console.log("批量操作 Vue.$login.f.name======", Vue.$login.f.name)
863
+ let load = new HttpResetClass()
864
+ load.load('POST', 'api/af-revenue/logic/setParameter',
865
+ {data:{
866
+ userid: array,
867
+ instructtype: instructtype,
868
+ isOpen:valve,
869
+ f_instruct_state:'待审核',
870
+ inputtor: Vue.$login.f.name
871
+ }}, {rejectMsg: null, resolveMsg: null}).then((res) => {
872
+ let count = array.length;
873
+ console.log("批量操作 Vue.$login.f.name======", Vue.$login.f.name)
874
+ }).catch((res) => {
875
+ this.$showMessage("执行失败,具体失败原因请查看后台日志文件!本次操作已被回滚!")
876
+ })
877
+ } */
878
+ },
879
+ computed: {
880
+ /* WarningType() {
881
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('气表品牌')]
882
+ }, */
883
+ /* Warningstyle() {
884
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('燃气表型号')]
885
+ }, */
886
+
887
+ MeterTypes () {
888
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('气表类型')]
889
+ },
890
+ TableStates () {
891
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('气表状态')]
892
+ },
893
+ Gasproperties () {
894
+ let rs = []
895
+ if (this.model.model.f_user_type) {
896
+ rs = this.$appdata.getParam(this.model.model.f_user_type[0])
897
+ }
898
+ return rs
899
+ },
900
+ // 界面细节权限
901
+ jurisdiction () {
902
+ console.log('抄表界面细节', this.$login.r)
903
+ return this.$login.r ? this.$login.r : []
904
+ },
905
+ parameterTypeList () {
906
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('设置参数')]
907
+ },
908
+ signtype1 () {
909
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('标记名称')]
910
+ },
911
+ parameterState () {
912
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('标记状态')]
913
+ },
914
+ userType () {
915
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户类型')]
916
+ },
917
+ userfilesState () {
918
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('上报状态')]
919
+ },
920
+ valvestate () {
921
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('阀门状态')]
922
+ },
923
+ f_network_valve () {
924
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('阀控状态')]
925
+ },
926
+ instructState () {
927
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('指令状态')]
928
+ }
929
+ },
930
+ watch: {
931
+ 'model.pageIndex' () {
932
+ this.checked1 = false
933
+ this.mapset(this.model.rows)
934
+ this.checkedALL()
935
+ },
936
+ 'model.rows' () {
937
+ this.checked1 = false
938
+ this.mapset(this.model.rows)
939
+ this.checkedALL()
940
+ },
941
+ 'checked1' (val) {
942
+ if (val) {
943
+ this.mapset(this.model.rows)
944
+ } else {
945
+ this.map.clear()
946
+ }
947
+ }
948
+ }
949
+ }
950
+ </script>
951
+
952
+ <style scoped>
953
+ .PanelTR {
954
+ width: 100%;
955
+ height: 40px;
956
+ }
957
+ .text-danger{
958
+ color:darkred;
959
+ }
960
+ .PanelTD {
961
+ width: 5%;
962
+ }
963
+
964
+ .btn-relative {
965
+ position: relative;
966
+ left: 25px;
967
+ top: 15px;
968
+ }
969
+ </style>
970
+