sale-client 4.2.21 → 4.2.22

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 (50) hide show
  1. package/build/dev-server.js +52 -32
  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/lixianV3/ArrearsQuery.vue +938 -938
  15. package/src/filiale/lixianV3/InsuranceChargesDetails.vue +425 -425
  16. package/src/filiale/meihekou/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +281 -281
  17. package/src/filiale/qianneng/revenue/sms/AccountMessageList.vue +508 -508
  18. package/src/filiale/ronghao/ArrearsQuery.vue +974 -974
  19. package/src/filiale/ronghao/CardService.js +2144 -2144
  20. package/src/filiale/ronghao/InsuranceManage.vue +58 -58
  21. package/src/filiale/ronghao/MachineChargeService.js +149 -149
  22. package/src/filiale/ronghao/NoCardMeterCenter.vue +534 -534
  23. package/src/filiale/ronghao/PaymentCode.vue +174 -174
  24. package/src/filiale/ronghao/PriceChangeCompensation/CompensationManage.vue +26 -26
  25. package/src/filiale/ronghao/PriceChangeCompensation/IotCompensation.vue +318 -318
  26. package/src/filiale/ronghao/PriceChangeCompensation/JbCompensation.vue +343 -343
  27. package/src/filiale/ronghao/PriceChangeCompensation/SurplusRecordDetail.vue +74 -74
  28. package/src/filiale/ronghao/ReplaceCardManage.vue +415 -415
  29. package/src/filiale/ronghao/Upload.vue +654 -654
  30. package/src/filiale/ronghao/cardDown.vue +1141 -1141
  31. package/src/filiale/ronghao/changemeterOperate.vue +315 -315
  32. package/src/filiale/ronghao/fillgasSpecific.vue +313 -313
  33. package/src/filiale/ronghao/ic_detail/ChargeRecordQuery.vue +106 -106
  34. package/src/filiale/ronghao/ic_detail/WatchCollection.vue +115 -115
  35. package/src/filiale/ronghao/ic_detail/WebHandQueryUser.vue +411 -411
  36. package/src/filiale/ronghao/machineDown.vue +1176 -1176
  37. package/src/filiale/ronghao/replacementSingleInfoOperation.vue +315 -315
  38. package/src/filiale/ronghao/specificInformation.vue +537 -537
  39. package/src/filiale/yangchun/ChargeList.vue +954 -954
  40. package/src/filiale/yuncheng/changemeterListMaintain.vue +504 -504
  41. package/src/filiale/zhongsheng/BlackListList.vue +293 -293
  42. package/src/filiale/zhongyi/HandQueryUser.vue +389 -389
  43. package/src/main.js +1 -1
  44. package/src/plugins/CardService.js +2217 -2217
  45. package/.gradle/5.2.1/fileChanges/last-build.bin +0 -0
  46. package/.gradle/5.2.1/fileHashes/fileHashes.lock +0 -0
  47. package/.gradle/5.2.1/gc.properties +0 -0
  48. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  49. package/.gradle/buildOutputCleanup/cache.properties +0 -2
  50. package/.gradle/vcs-1/gc.properties +0 -0
@@ -1,1176 +1,1176 @@
1
- <template xmlns:v-el="">
2
- <div class="flex-row">
3
- <div class="basic-main">
4
- <criteria-paged :model="model" v-ref:paged @sort="sort">
5
- <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
6
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
- <div class="row">
8
- <!--<div class="col-sm-6">-->
9
- <!--style="border: 1px solid #a6d5ea; box-shadow: darkgrey 1px 1px 1px 2px;padding: 0.5%">-->
10
- <div class="col-sm-2 form-group">
11
- <label class="font_normal_body">归属起始</label>
12
- <datepicker placeholder="开始日期"
13
- style="width:60%"
14
- class="datepicker"
15
- v-model="model.startDate"
16
- :value.sync="model.startDate"
17
- :format="'yyyy-MM-dd'"
18
- ></datepicker>
19
- </div>
20
- <div class="col-sm-2 form-group">
21
- <label class="font_normal_body">归属结束</label>
22
- <datepicker placeholder="结束日期"
23
- style="width:60%"
24
- v-model="model.endDate"
25
- :value.sync="model.endDate"
26
- :format="'yyyy-MM-dd'"
27
- ></datepicker>
28
- </div>
29
-
30
- <div class="col-sm-2 form-group">
31
- <label class="font_normal_body">客户编号</label>
32
- <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
33
- condition="f_userinfo_code='{}'" placeholder='客户编号'>
34
- </div>
35
- <div class="col-sm-2 form-group">
36
- <label class="font_normal_body">旧客户编号</label>
37
- <input type="text" style="width:60%" class="input_search" v-model="model.f_olduserinfo_code"
38
- condition="f_olduserinfo_code='{}'" placeholder='旧客户编号'>
39
- </div>
40
-
41
- <div class="span" style="float:right;">
42
- <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
43
- <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
44
- <export-excel :data="$parent.$parent.getCondition"
45
- :field="$parent.$parent.getExportFields" :header="$parent.$parent.other"
46
- sqlurl="api/af-revenue/logic/saleExport"
47
- sql-name="getDownPlan"
48
- template-name='抄表计划下发导出'
49
- :choose-col="true">
50
- </export-excel>
51
- <button class="button_search button_spacing"
52
- @click="$parent.$parent.batchDownHand()">计划下发
53
- </button>
54
- <button v-if="$parent.$parent.inputtor_change" class="button_search button_spacing"
55
- @click="$parent.$parent.batchInputtorChange()">抄表员调整
56
- </button>
57
- <div
58
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
59
- @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
60
- </div>
61
- </div>
62
- <div class="row" v-show="$parent.$parent.criteriaShow">
63
- <!-- <div class="col-sm-2 form-group">-->
64
- <!-- <label class="font_normal_body">表&ensp;编&ensp;号</label>-->
65
- <!-- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_id"-->
66
- <!-- condition="f_user_id='{}'" placeholder='表编号'>-->
67
- <!-- </div>-->
68
- <div class="col-sm-2 form-group">
69
- <label class="font_normal_body">表&emsp;&emsp;号</label>
70
- <input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
71
- condition="f_meternumber like '%{}%'" placeholder='表号'>
72
- </div>
73
- <div class="col-sm-2 form-group">
74
- <label class="font_normal_body">客户姓名</label>
75
- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
76
- placeholder='客户姓名'
77
- condition="f_user_name = '{}'">
78
- </div>
79
- <div class="col-sm-2 form-group">
80
- <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
81
- <v-select :value.sync="model.f_residential_area"
82
- class="select_list select"
83
- enter-push
84
- v-model="model.f_residential_area"
85
- style="width: 60%"
86
- multiple="true"
87
- :options='$parent.$parent.residentialArea' placeholder='选择小区'
88
- close-on-select v-el:cc>
89
- </v-select>
90
- </div>
91
- <div class="col-sm-2 form-group">
92
- <label class="font_normal_body">楼&emsp;&emsp;栋</label>
93
- <input type="text" style="width:60%" class="input_search" v-model="model.f_building"
94
- condition="f_building = '{}'" placeholder='楼栋'>
95
- </div>
96
- <div class="col-sm-2 form-group">
97
- <label class="font_normal_body">单&emsp;&emsp;元</label>
98
- <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
99
- condition="f_unit = '{}'" placeholder='单元'>
100
- </div>
101
- <div class="col-sm-2 form-group">
102
- <label class="font_normal_body">楼&emsp;&emsp;层</label>
103
- <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
104
- condition="f_floor = '{}'" placeholder='楼层'>
105
- </div>
106
- <div class="col-sm-2 form-group">
107
- <label class="font_normal_body">门&ensp;牌&ensp;号</label>
108
- <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
109
- condition="f_room like '%{}%'" placeholder='门牌号'>
110
- </div>
111
- <div class="col-sm-2 form-group">
112
- <label class="font_normal_body">客户地址</label>
113
- <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
114
- condition="f_address like '%{}%'" placeholder='客户地址'>
115
- </div>
116
- <div class="col-sm-2 form-group">
117
- <label class="font_normal_body">抄&ensp;表&ensp;员</label>
118
- <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
119
- style="width:60%"
120
- multiple="true"
121
- :options='$parent.$parent.inputtores' placeholder='抄表员'
122
- close-on-select
123
- v-el:cc></v-select>
124
- </div>
125
-
126
- <div class="col-sm-2 form-group">
127
- <label class="font_normal_body">客户类型</label>
128
- <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
129
- :options='$parent.$parent.usertypes' placeholder='客户类型'
130
- style="width:60%"
131
- close-on-select
132
- condition="f_user_type = '{}'"></v-select>
133
- </div>
134
- <div class="col-sm-2 form-group">
135
- <label class="font_normal_body">用户等级</label>
136
- <v-select :value.sync="model.f_user_level" v-model="model.f_user_level"
137
- :options='$parent.$parent.userlevels' placeholder='用户等级'
138
- style="width:60%"
139
- close-on-select
140
- condition="f_user_level = '{}'"></v-select>
141
- </div>
142
- <div class="col-sm-2 form-group">
143
- <label class="font_normal_body">抄&ensp;表&ensp;册</label>
144
- <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"
145
- :options='$parent.$parent.meterbooks' placeholder='抄表册'
146
- style="width:60%"
147
- :multiple="true"
148
- condition="f_meter_book_num in {}"></v-select>
149
- </div>
150
- <div class="col-sm-2 form-group">
151
- <label class="font_normal_body">调压箱名</label>
152
- <v-select :value.sync="model.f_adjustable_name" v-model="model.f_adjustable_name"
153
- :options='$parent.$parent.adjustablename' placeholder='调压箱名称'
154
- style="width:60%"
155
- close-on-select
156
- condition="f_adjustable_name = '{}'"></v-select>
157
- </div>
158
- <res-select-group :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes"
159
- v-ref:sel></res-select-group>
160
- </div>
161
-
162
-
163
- <!-- 多选框 -->
164
- <!--<div class="col-sm-2 form-group">-->
165
- <!--<button class="btn btn-success" @click="$parent.$parent.batchDownHand()">计划下发</button>-->
166
- <!--</div>-->
167
-
168
- <!--<div class="form-group" v-if="$parent.$parent.meter_state">-->
169
- <!--<button class="btn btn-success" @click="$parent.$parent.allDownHand()" >全部下发</button>-->
170
- <!--</div>-->
171
- <!-- 多选框结束 -->
172
-
173
- <!--<div class="col-sm-2 form-group">-->
174
- <!--<button class="btn btn-success" @click="$parent.$parent.adjust()">抄表员调整</button>-->
175
- <!--</div>-->
176
- <!--<div class="col-sm-2 form-group">-->
177
- <!--<button class="btn btn-success" @click="$parent.$parent.fileUpload()">文件上传</button>-->
178
- <!--</div>-->
179
- <!--<div class="col-sm-2 form-group">-->
180
- <!--<button class="btn btn-success" @click="search(), $parent.$parent.clean()">打印</button>-->
181
- <!--</div>-->
182
-
183
- </div>
184
- </criteria>
185
- <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="hand_manager_grid">
186
- <template partial='head'>
187
- <tr>
188
- <!--<th><input type='checkbox' v-model="$parent.$parent.$parent.all" @change="$parent.$parent.$parent.chooseAll"></th>-->
189
- <th>
190
- <nobr>序号</nobr>
191
- </th>
192
- <th>
193
- <nobr>
194
- <data-order field="f_userinfo_code" name="客户编号"
195
- :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
196
- </nobr>
197
- </th>
198
- <th>
199
- <nobr>旧客户编号</nobr>
200
- </th>
201
- <!-- <th>-->
202
- <!-- <nobr>表编号</nobr>-->
203
- <!-- </th>-->
204
- <!-- <th>基本信息</th>-->
205
- <th>
206
- <nobr>
207
- <data-order field="f_address" name="基本信息"
208
- :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
209
- </nobr>
210
- </th>
211
- <th>
212
- <nobr>用户等级</nobr>
213
- </th>
214
- <!--<th><nobr><data-order field="f_building" name="楼号"-->
215
- <!--:order.sync="$parent.$parent.$parent.orderFields.f_building"></data-order></nobr>-->
216
- <!--</th>-->
217
- <!--<th><nobr><data-order field="f_unit" name="单元号"-->
218
- <!--:order.sync="$parent.$parent.$parent.orderFields.f_unit"></data-order></nobr>-->
219
- <!--</th>-->
220
- <!--<th><nobr><data-order field="f_room" name="房号"-->
221
- <!--:order.sync="$parent.$parent.$parent.orderFields.f_room"></data-order></nobr>-->
222
- <!--</th>-->
223
- <th>
224
- <nobr>调压箱名称</nobr>
225
- </th>
226
- <th>
227
- <nobr>抄表员</nobr>
228
- </th>
229
- <th>
230
- <nobr>上期结余</nobr>
231
- </th>
232
- <th>
233
- <nobr>表号</nobr>
234
- </th>
235
- <th>
236
- <nobr>上期底数</nobr>
237
- </th>
238
-
239
- <!-- <th>抄表册</th>-->
240
- <th>
241
- <nobr>
242
- <data-order field="f_book_name" name="抄表册"
243
- :order.sync="$parent.$parent.$parent.orderFields.f_book_name"></data-order>
244
- </nobr>
245
-
246
- </th>
247
- <th>
248
- <nobr>操作</nobr>
249
- </th>
250
- <!-- f_oughtfee-->
251
- </tr>
252
- </template>
253
- <template partial='body'>
254
- <!--<td style="text-align: center;">-->
255
- <!--<input v-if="row.f_meter_state === '未下发'"-->
256
- <!--:id="model.pageIndex" type='checkbox' @change="$parent.$parent.$parent.chooseOne($event,row,model.rows)"-->
257
- <!--:checked="$parent.$parent.$parent.ischecked(row)"/>-->
258
- <!--</td>-->
259
- <td style="text-align: center;">{{ $index + 1 }}</td>
260
- <td style="text-align: center;">{{ row.f_userinfo_code }}</td>
261
- <td style="text-align: center;">{{ row.f_olduserinfo_code }}</td>
262
- <!-- <td>{{row.f_user_id}}</td>-->
263
- <td style="text-align: center;">{{ row.f_user_name }}&nbsp;&nbsp;{{ row.f_address }}</td>
264
- <td style="text-align: center;">{{ row.f_user_level }}</td>
265
- <!--<td>{{row.f_building}}</td>-->
266
- <!--<td>{{row.f_unit}}</td>-->
267
- <!--<td>{{row.f_room}}</td>-->
268
-
269
- <td style="text-align: center;">{{ row.f_adjustable_name }}</td>
270
- <td style="text-align: center;">{{ row.f_inputtor }}</td>
271
- <td style="text-align: center;">{{ row.f_balance }}</td>
272
- <td style="text-align: center;">{{ row.f_meternumber }}</td>
273
- <td style="text-align: center;">{{ row.f_meter_base }}</td>
274
- <td style="text-align: center;">{{ row.f_book_name }}</td>
275
- <td style="text-align: center;">
276
- <nobr>
277
- <!-- <button type="button" name="button" class="button_search button_spacing width-60"-->
278
- <!-- v-if="$parent.$parent.$parent.config.customCal && row.f_meter_state === '已抄表' && row.states === 1 && row.f_oper_state === '正常' && row.f_whether_pay === '否'"-->
279
- <!-- @click.stop="$parent.$parent.$parent.fileterprice(row)">自定义划价-->
280
- <!-- </button>-->
281
-
282
- <!--<button type="button" name="button" class="btn btn-link" disabled="disabled"-->
283
- <!--v-if="row.num > 0">已换表-->
284
- <!--</button>-->
285
- <span v-if="row.num">有{{ row.num }}条待审核或未抄表记录</span>
286
- <button type="button" name="button" class="button_search button_spacing width-60"
287
- @click.stop="$parent.$parent.$parent.downHand(row)" v-if="!row.num"
288
- >下发计划
289
- </button>
290
-
291
- <!-- <button type="button" name="button" class="btn btn-link"-->
292
- <!-- v-if="row.f_meter_state === '待审核' ">待审核-->
293
- <!-- </button>-->
294
-
295
-
296
- </nobr>
297
- </td>
298
- </template>
299
- </data-grid>
300
- </criteria-paged>
301
- <split-price :showdata="splitdata" :pricesplit="priceSplit" v-if="priceSplit"></split-price>
302
- <modal :show.sync="show" v-ref:modal backdrop="false">
303
- <header slot="modal-header" class="modal-header">
304
- <h4 class="modal-title">计划下发</h4>
305
- </header>
306
- <article slot="modal-body" class="modal-body">
307
- <form class="form-horizontal">
308
- <div class="row auto">
309
- <div class="form-group form-input-group col-sm-6">
310
- <label class="label-control">下发日期</label>
311
- <datepicker placeholder="下发日期" :value.sync="downModel.downDate"
312
- format="yyyy-MM-dd HH:mm:ss"></datepicker>
313
- </div>
314
- </div>
315
- <div class="row auto">
316
- <div class="col-sm-2 form-group">
317
- <label class="font_normal_body">抄表员:</label>
318
- </div>
319
- <div class="col-sm-4 form-group">
320
- <input type="radio" value="downWithUserfiles" v-model="downModel.downWay" checked>
321
- <label class="font_normal_body">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表册抄表员</label>
322
- </div>
323
- <div class="col-sm-4 form-group">
324
- <input type="radio" value="downWithSelf" v-model="downModel.downWay">
325
- <label class="font_normal_body">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自定义抄表员</label>
326
- </div>
327
- </div>
328
- <div class="row auto" v-if="downModel.downWay === 'downWithSelf'">
329
- <div class="form-group form-input-group col-sm-6">
330
- <label class="font_normal_body">抄表员</label>
331
- <div class="col-sm-4">
332
- <v-select :value.sync="downModel.downInputtor" v-model='downModel.downInputtor'
333
- :options='inputtores2' placeholder='抄表员'
334
- close-on-select></v-select>
335
- </div>
336
- </div>
337
- </div>
338
- </form>
339
- </article>
340
-
341
- <footer slot="modal-footer" class="modal-footer">
342
- <button type="button" class="btn btn-default" @click='close()'>取消</button>
343
- <button type="button" class="btn btn-success" @click='confirm()'>确认</button>
344
- </footer>
345
- </modal>
346
- <modal :show.sync="downConfirm" backdrop="false">
347
- <header slot="modal-header" class="modal-header">
348
- <h4 class="modal-title">下发确认</h4>
349
- </header>
350
- <article slot="modal-body" class="modal-body" style="padding: 18px;">
351
- <div class="col-sm-12 form-group" style="align-content: center;">
352
- {{ msg }}
353
- </div>
354
- </article>
355
-
356
- <footer slot="modal-footer" class="modal-footer">
357
- <button type="button" class="btn btn-success" @click='downContinue'>继续下发正常用户</button>
358
- <!-- <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>-->
359
- <button type="button" class="btn btn-default" @click='close'>取消</button>
360
- </footer>
361
- </modal>
362
-
363
- <!--<modal :show.sync="downConfirm" backdrop="false">-->
364
- <!--<header slot="modal-header" class="modal-header">-->
365
- <!--<h4 class="modal-title">下发确认</h4>-->
366
- <!--</header>-->
367
- <!--<article slot="modal-body" class="modal-body">-->
368
- <!--<div class="col-sm-12 form-group">-->
369
- <!--{{msg}}-->
370
- <!--</div>-->
371
- <!--</article>-->
372
-
373
- <!--<footer slot="modal-footer" class="modal-footer">-->
374
- <!--<button type="button" class="btn btn-success" @click='downContinue'>继续下发</button>-->
375
- <!--&lt;!&ndash; <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>&ndash;&gt;-->
376
- <!--<button type="button" class="btn btn-default" @click='close'>取消</button>-->
377
- <!--</footer>-->
378
- <!--</modal>-->
379
- <modal :show.sync="inputtor_show" backdrop="false">
380
- <header slot="modal-header" class="modal-header">
381
- <h4 class="modal-title">抄表员变更</h4>
382
- </header>
383
- <article slot="modal-body" class="modal-body">
384
- <form class="form-horizontal">
385
- <div class="row auto">
386
- <div class="form-group form-input-group col-sm-6">
387
- <label>调整客户数</label>
388
- <input class="input_search" v-model="model.count" disabled>
389
- </div>
390
- </div>
391
- <div class="row auto">
392
- <div class="form-group form-input-group col-sm-6">
393
- <label class="label-control">抄表员</label>
394
- <div class="col-sm-4">
395
- <v-select :value.sync="inputtorModel.inputtor" v-model='inputtorModel.inputtor'
396
- :options='inputtores2' placeholder='抄表员'
397
- close-on-select></v-select>
398
- </div>
399
- </div>
400
- </div>
401
- </form>
402
- </article>
403
-
404
- <footer slot="modal-footer" class="modal-footer">
405
- <button type="button" class="btn btn-success" @click='inputtorConfirm'>确认</button>
406
- <button type="button" class="btn btn-default" @click='close'>取消</button>
407
- </footer>
408
- </modal>
409
-
410
- <modal :show.sync="uploadshow" v-ref:modal backdrop="false">
411
- <header slot="modal-header" class="modal-header">
412
- <button type="button" class="close" @click="close"><span>&times;</span></button>
413
- <h4 class="modal-title">文件上传</h4>
414
- </header>
415
- <article slot="modal-body" class="modal-body">
416
- <div class="col-sm-2 form-group">
417
- <file-upload class="my-file-uploader" name="myFile"
418
- action="api/af-revenue/file/uploadFile" tagname="文件上传" :headers="headers" multiple
419
- v-ref:file></file-upload>
420
- </div>
421
- </article>
422
-
423
- <footer slot="modal-footer" class="modal-footer">
424
- <!-- <button v-show="show" type="button" class="btn btn-default" @click='close'>取消</button>
425
- <button v-show="show" type="button" class="btn btn-success" @click='confirm(filename)'>确认</button> -->
426
- </footer>
427
- </modal>
428
-
429
- </div>
430
- </div>
431
- </template>
432
- <script>
433
- import {PagedList, HttpResetClass} from 'vue-client'
434
- import Vue from 'vue'
435
- import co from 'co'
436
-
437
- let readyGen = async function (self) {
438
- await self.$getConfig(self, 'HandManager')
439
- await self.$LoadParams.loadMeterBook(self.f_filialeid)
440
- self.loadMeterBooks()
441
- self.getfield = self.config.excelHeaders
442
- self.sumsmodel = self.$refs.paged.$refs.grid.model.sums
443
- self.reflash()
444
- }
445
-
446
- let downGen = function* (type, condition, data, self) {
447
- self.condition = condition
448
- self.msg = '确认下发计划'
449
- let getUnhand = yield Vue.resetpost('api/af-revenue/sql/getUnhand', {
450
- data: {
451
- startDate: self.startDate,
452
- condition: self.condition
453
- }
454
- }, {resolveMsg: null, rejectMsg: '获取待审核数据异常!!'})
455
- // if (type === 'single') {
456
- // getUnhand = yield Vue.resetpost('api/af-revenue/sql/getUnhand', {
457
- // data: {
458
- // startDate: self.model.params.startDate,
459
- // condition: condition
460
- // }
461
- // }, {resolveMsg: null, rejectMsg: '获取待审核数据异常!!'})
462
- // // self.msg = `下发客户编号为${data.f_userinfo_code}的抄表计划?`
463
- // // } else if (type === 'all') {
464
- // }
465
- // else if (type === 'batch') {
466
- // let tempCondition = condition.replace("and f_meter_state = '未下发'", '')
467
- // getUnhand = yield Vue.resetpost('api/af-revenue/sql/machineGetUnhand', {
468
- // data: {
469
- // startDate: self.model.params.startDate,
470
- // condition: tempCondition
471
- // }
472
- // }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
473
- // self.msg = `确认下发当前总计: ${data} 户计划`
474
- // }
475
- // for (let i = 0; i < getUnhand.data.length; i++) {
476
- // let temp = {
477
- // id: getUnhand.data[i].id,
478
- // f_user_id: getUnhand.data[i].f_user_id,
479
- // f_userfiles_id: getUnhand.data[i].f_userfiles_id,
480
- // f_adjustable_id: getUnhand.data[i].f_adjustable_id,
481
- // f_adjustable_name: getUnhand.data[i].f_adjustable_name
482
- // }
483
- // console.log('=================================================================================')
484
- // console.log('下发计划查看调压箱和调压箱编号', temp)
485
- // console.log('========================================================================================')
486
- // self.unhandplan.push(temp)
487
- // }
488
- for (let i = 0; i < getUnhand.data.length; i++) {
489
- let temp = {
490
- id: getUnhand.data[i].id,
491
- f_user_id: getUnhand.data[i].f_user_id,
492
- f_userfiles_id: getUnhand.data[i].f_userfiles_id
493
- }
494
- self.unhandplan.push(temp)
495
- }
496
- if (getUnhand.data.length > 0) {
497
- self.msg = self.msg + `, 警告: 之前有 ${getUnhand.data.length} 条待审核数据`
498
- } else {
499
- self.unhandplan = []
500
- }
501
- // console.log('1111111:',self.msg)
502
- self.show = true
503
- }
504
-
505
- let inputtotChangeGen = async function (self) {
506
- let param = {
507
- f_change_content: self.inputtorModel.inputtor[0],
508
- f_change_cause: self.inputtorModel.reason,
509
- condition: self.model.condition,
510
- startDate: self.model.params.startDate,
511
- endDate: self.model.params.endDate,
512
- f_operator: self.$login.f.name,
513
- f_change_count: self.model.count,
514
- f_change_type: '抄表员变更',
515
- // f_input_person: self.$login.f.name,
516
- f_operatorid: self.$login.f.id,
517
- f_orgid: self.$login.f.orgid,
518
- f_orgname: self.$login.f.orgs,
519
- f_depid: self.$login.f.depids,
520
- f_depname: self.$login.f.deps
521
- }
522
- console.log('抄表单抄表员变更', param)
523
- await self.$resetpost('api/af-revenue/logic/changeInputtor', param, {
524
- resolveMsg: null,
525
- rejectMsg: '批量抄表员变更失败'
526
- })
527
- self.$showAlert(`总计变更 ${self.model.count} 户抄表员为 ${self.inputtorModel.inputtor[0]}`, 'success', 2000)
528
- self.inputtor_show = false
529
- self.initModal()
530
- self.reflash()
531
- }
532
-
533
- export default {
534
- title: '计划下发',
535
- data () {
536
- return {
537
- initres: {
538
- org: [this.$login.f.orgid],
539
- dep: [],
540
- user: []
541
- },
542
- sumsmodel: [],
543
- orgCondtionStr: '',
544
- priceSplit: false,
545
- criteriaShow: false,
546
- model: new PagedList('api/af-revenue/sql/getDownPlan', 30, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'f_userinfo_id desc'`}),
547
- config: {
548
-
549
- // 导出列要和查询列相同
550
- excelHeaders: {
551
- 'f_index': '序号',
552
- 'f_user_id': '表编号',
553
- 'f_meternumber': '表号',
554
- 'f_inputtor': '抄表员',
555
- 'f_balance': '上期结余',
556
- 'f_last_input_date': '上次抄表',
557
- 'f_hand_date': '下发时间',
558
- 'f_input_date': '抄表日期',
559
- 'f_userinfo_code': '客户编号',
560
- 'f_olduserinfo_code': '旧客户编号',
561
- 'f_address': '客户地址',
562
- 'f_residential_area': '小区名称',
563
- 'f_user_name': '客户姓名',
564
- 'f_meter_base': '上期底数',
565
- 'f_tablebase': '本期指数',
566
- 'f_oughtfee': '应交金额',
567
- 'f_oughtamount': '应交气量',
568
- 'f_whether_pay': '是否缴费',
569
- 'f_book_name': '抄表册',
570
- 'f_meter_classify': '气表分类',
571
- 'f_price_type': '气价类型',
572
- 'f_price_name': '气价名称',
573
- 'f_price_list': '气价单价',
574
- 'f_meter_type': '气表类型',
575
- 'f_meter_style': '气表型号',
576
- 'f_accounts_state': '下账标识',
577
- 'f_user_phone': '客户电话',
578
- 'f_adjustable_id': '表箱号'
579
- },
580
- examine: true,
581
- customCal: false
582
- },
583
- meter_state: false, // 是否显示计划下发按钮
584
- downModel: {
585
- downDate: Vue.$login.toStandardTimeString(),
586
- downWay: 'downWithUserfiles',
587
- downInputtor: []
588
- },
589
- inputtor_change: false, // 是否显示抄表员变更按钮
590
- inputtor_show: false, // 控制抄表员变更模板
591
- inputtorModel: {
592
- inputtor: [],
593
- reason: ''
594
- },
595
- plans: [], // 记录当前行是否被勾选
596
- all: false, // 是否全选
597
- show: false, // 下发日期模态框显示
598
- unhandplan: [], // 之前是否有未抄表记录
599
- downConfirm: false, // 下发若有未抄记录,确认框
600
- uploadshow: false,
601
- // 小区
602
- residentialArea: [],
603
-
604
- // downDate: this.$login.toStandardYearMonth().replace("-", ""),
605
- msg: '',
606
- condition: '',
607
- headers: {'username': Vue.$login.f.name, 'blodid': Vue.$login.guid()},
608
- orderDefault: 'f_userfiles_id',
609
- orderFields: {
610
- f_userinfo_id: 'no'
611
- },
612
- getfield: {},
613
- outlet: '',
614
- filiale: '',
615
- condition2: '',
616
- area: [],
617
- inputtouPerson: [],
618
- usertypes: this.$appdata.getParam('客户类型') ? [{
619
- label: '全部',
620
- value: ''
621
- }, ...this.$appdata.getParam('客户类型')] : [],
622
- userlevels: this.$appdata.getParam('用户等级') ? [{
623
- label: '全部',
624
- value: ''
625
- }, ...this.$appdata.getParam('用户等级')] : [],
626
- adjustablename: this.$appdata.getParam('调压箱名称') ? [{
627
- label: '全部',
628
- value: ''
629
- }, ...this.$appdata.getParam('调压箱名称')] : [],
630
- inputtores2: [], // 下发时使用自定义抄表员,
631
- splitdata: '',
632
- f_filialeid: this.$login.f.orgid,
633
- meterbooks: [],
634
- upshow: false,
635
- inputid: 0,
636
- showfiles: false,
637
- uploadText: '抄表',
638
- showerr: false,
639
- err: '',
640
- other: [],
641
- // 请求对象(批量导入,查询进度使用)
642
- HttpReset: new HttpResetClass()
643
- }
644
- },
645
- ready () {
646
- this.getaddress()
647
- readyGen(this)
648
- },
649
- mounted () {
650
- console.log(this.inputid)
651
- document.getElementById(this.inputid).focus()
652
- },
653
- methods: {
654
- getotherfooter () {
655
- this.other = []
656
- // this.footer = []
657
- let otherInData = []
658
- otherInData.push(`导出时间: ${this.$login.toStandardTimeString()}`)
659
- // let footerData = []
660
- // let exportfield = this.getExportFields
661
- // footerData.push('合计')
662
- // for (var field in this.sumsmodel) {
663
- // footerData.push(`${exportfield[field]}合计:${this.sumsmodel[field]}`)
664
- // }
665
- // this.footer.push(footerData)
666
- this.other.push(otherInData)
667
- },
668
- // 获得本月的最后一天。
669
- getLastDayOfMonth (year, month) {
670
- let new_year = year // 取当前的年份
671
- let new_month = month++// 取下一个月的第一天,方便计算(最后一天不固定)
672
- if (month > 12) // 如果当前大于12月,则年份转到下一年
673
- {
674
- new_month -= 12 // 月份减
675
- new_year++ // 年份增
676
- }
677
- let new_date = new Date(new_year, new_month, 1) // 取当年当月中的第一天
678
- let date_count = (new Date(new_date.getTime() - 1000 * 60 * 60 * 24)).getDate()// 获取当月的天数
679
- // let last_date = new Date(new_date.getTime() - 1000 * 60 * 60 * 24);//获得当月最后一天的日期
680
- return date_count
681
- },
682
-
683
- getRes (obj) {
684
- this.orgCondtionStr = obj
685
- },
686
- async getaddress () {
687
- console.log('开始获取小区')
688
- let HttpReset = new HttpResetClass()
689
- var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
690
- data: {
691
- condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
692
- }
693
- }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
694
- console.log('小区', data)
695
- let house = []
696
- house.push()
697
- for (let row of data.data) {
698
- console.log('开始保存小区')
699
- house.push({label: row.f_residential_area, value: row.f_residential_area})
700
- }
701
- this.residentialArea = house
702
- },
703
- loadMeterBooks () {
704
- this.meterbooks = this.$GetSaleParam.getMeterBooks()
705
- },
706
-
707
- fileterprice (row) {
708
- this.splitdata = row
709
- this.priceSplit = true
710
- console.log('row==>', row)
711
- },
712
- hidden () {
713
- this.criteriaShow = !this.criteriaShow
714
- },
715
- clear () {
716
- Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
717
- this.$refs.paged.$refs.criteria.model[key] = []
718
- })
719
- this.$refs.paged.$refs.criteria.model.f_meter_classify = ['机表']
720
- },
721
-
722
- // 判断当前页是否全选
723
- isChooseAll (rows) {
724
- if (this.plans.length == 0 && rows.length == 0) {
725
- return false
726
- }
727
- for (var i = 0; i < rows.length; i++) {
728
- let flag = false
729
- if (rows[i].f_meter_state == '未下发') {
730
- for (let plan of this.plans) {
731
- if (plan.id == rows[i].f_userfiles_id) {
732
- flag = true
733
- if (!plan.state) {
734
- return false
735
- }
736
- }
737
- }
738
- if (!flag) {
739
- return false
740
- }
741
- }
742
- }
743
- return true
744
- },
745
- // 选择需要下发的计划
746
- chooseOne (e, row, rows) {
747
- console.log('row', row)
748
- let checked = e.target.checked
749
- console.log('state', e.target.checked)
750
- // 判断当前行是否被选中
751
- if (checked) {
752
- let onePlan = {
753
- id: row.f_userfiles_id,
754
- state: true
755
- }
756
- // 记录被选中计划的状态
757
- let flag = false
758
- for (let plan of this.plans) {
759
- if (plan.id == row.f_userfiles_id) {
760
- flag = true
761
- plan.state = true
762
- }
763
- }
764
- if (!flag) {
765
- this.plans.push(onePlan)
766
- }
767
- } else {
768
- for (let plan of this.plans) {
769
- if (plan.id == row.f_userfiles_id) {
770
- plan.state = false
771
- }
772
- }
773
- }
774
- // let param = {id:row.id,isChoose:true}
775
-
776
- if (this.isChooseAll(rows)) {
777
- this.all = true
778
- } else {
779
- this.all = false
780
- }
781
- // this.delRepetition()
782
- },
783
- uploadFiles () {
784
- this.showfiles = !this.showfiles
785
- },
786
- chooseAll () {
787
- if (this.all) {
788
- // this.chooseInfo[index-1] = []
789
- // for (let row of this.model.rows){
790
- // this.chooseInfo[index-1].push(row)
791
- // }
792
- // this.chooseInfo = Object.assign([],this.chooseInfo,this.model.rows)
793
-
794
- for (let row of this.model.rows) {
795
- if (row.f_meter_state == '未下发') {
796
- let onePlan = {
797
- id: row.f_userfiles_id,
798
- state: true
799
- }
800
- let flag = false
801
- for (let plan of this.plans) {
802
- if (plan.id == row.f_userfiles_id) {
803
- flag = true
804
- plan.state = true
805
- }
806
- }
807
- if (!flag) {
808
- this.plans.push(onePlan)
809
- }
810
- }
811
- }
812
- } else {
813
- // this.chooseInfo[index-1] = []
814
- // console.log("this.chooseInfo[index-1]",this.chooseInfo[index-1])
815
- for (let row of this.model.rows) {
816
- if (row.f_meter_state == '未下发') {
817
- for (let plan of this.plans) {
818
- if (plan.id == row.f_userfiles_id) {
819
- plan.state = false
820
- }
821
- }
822
- }
823
- }
824
- }
825
- },
826
- search () {
827
- // 查询前清空选择项
828
- this.plans = []
829
- this.$refs.paged.$refs.criteria.search()
830
- },
831
- clickupshow () {
832
- this.upshow = !this.upshow
833
- },
834
- selfSearch (args) {
835
- this.meter_state = args.condition.includes('未下发')
836
- this.inputtor_change = args.condition.includes('未抄表')
837
-
838
- if (!this.orgCondtionStr) {
839
- args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
840
- } else {
841
- args.condition = `${args.condition}` + this.orgCondtionStr
842
- }
843
-
844
- // 抄表员查询条件
845
- this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
846
- if (this.inputtouPerson.length !== 0) {
847
- let str = JSON.stringify(this.inputtouPerson)
848
- str = str.replace(/"/g, `'`)
849
- str = str.replace(/\[/g, ``)
850
- str = str.replace(/\]/g, ``)
851
- console.log('=====抄表员model22222222222绑定====', str)
852
- // 查询多个抄表员时条件
853
- args.condition += ` and f_inputtor in ( ${str} )`
854
- }
855
- // 小区查询条件
856
- this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
857
- console.log('=====小区model绑定====', this.area)
858
- if (this.area.length !== 0) {
859
- let str = JSON.stringify(this.area)
860
- str = str.replace(/"/g, `'`)
861
- str = str.replace(/\[/g, ``)
862
- str = str.replace(/\]/g, ``)
863
- console.log('=====小区model22222222222绑定====', str)
864
- // 查询多个小区时条件
865
- args.condition += ` and f_residential_area in ( ${str} )`
866
- }
867
-
868
- if (args.model.f_meter_brand && args.model.f_meter_brand.length > 0) {
869
- if (args.model.f_meter_brand[0].f_meter_brand) {
870
- args.condition = `${args.condition} and f_meter_brand = '${args.model.f_meter_brand[0].f_meter_brand}'`
871
- }
872
- }
873
- this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
874
- this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
875
- this.condition2 = args.condition
876
- console.log('selfsearch..', args.condition, this.model)
877
- this.model.search(args.condition, this.model)
878
- },
879
- reflash () {
880
- this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
881
- this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0]
882
- this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1]
883
- this.search()
884
- },
885
- fileUpload () {
886
- this.uploadshow = true
887
- },
888
- down (type, condition, data) {
889
- co(downGen(type, condition, data, this))
890
- },
891
- // 单条下发计划
892
- downHand (row) {
893
- console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + row.f_userfiles_id)
894
- this.down('single', `f_userfiles_id = '${row.f_userfiles_id}'`, row)
895
- },
896
- // 批量下发计划
897
- batchDownHand () {
898
- this.down('batch', this.model.condition, this.model.count)
899
- },
900
- // batchDownHand () {
901
- // this.condition = ''
902
- // let count = 0
903
- // for (let plan of this.plans){
904
- // if(plan.state){
905
- // this.condition = this.condition + plan.id + ','
906
- // count = count + 1
907
- // }
908
- // }
909
- // this.down('batch', `f_user_id in (${this.condition.substring(0,this.condition.length-1)})`,count)
910
- // },
911
- // allDownHand () {
912
- // this.down('all', this.model.condition, this.model.count)
913
- // },
914
- batchInputtorChange () {
915
- this.inputtor_show = true
916
- },
917
- inputtorConfirm () {
918
- this.$showMessage(`确认变更前请确认选择的时间区间和查询条件是否正确,确认变更当前 ${this.model.count} 户抄表员`, ['confirm', 'cancel']).then((res) => {
919
- if (res === 'confirm') {
920
- inputtotChangeGen(this)
921
- }
922
- })
923
- },
924
- confirm () {
925
- // 正式提交下发
926
- // 进行日期校验,判断下发的日期是否属于选择的归属期内
927
- console.log('下发日期校验', this.downModel, this.$refs.paged.$refs.criteria.model)
928
- if (this.validateDate()) {
929
- this.show = false
930
- // this.confirmDownHand()
931
- console.log('有没有异常数据:', this.unhandplan)
932
- if (this.unhandplan.length > 0) {
933
- this.downConfirm = true
934
- } else {
935
- this.confirmDownHand()
936
- }
937
- } else {
938
- this.$showAlert('您选择的下发时间不在归属期内, 请重新选择下发时间', 'warning', 3000)
939
- }
940
- },
941
- validateDate () {
942
- let currentDown = new Date(this.downModel.downDate)
943
- console.log(new Date(this.$refs.paged.$refs.criteria.model.startDate))
944
- console.log(new Date(this.$refs.paged.$refs.criteria.model.endDate))
945
- return currentDown >= new Date(this.$refs.paged.$refs.criteria.model.startDate + ' 00:00:00') && currentDown <= new Date(this.$refs.paged.$refs.criteria.model.endDate + ' 23:59:59')
946
- },
947
-
948
- downContinue () {
949
- this.downConfirm = false
950
- this.confirmDownHand()
951
- },
952
- // downFilter () {
953
- // this.downConfirm = false
954
- // console.log('过滤有未抄记录的抄表')
955
- // let filterUser = ''
956
- // for (let json of this.unhandplan) {
957
- // filterUser += `'${json.f_userfiles_id}',`
958
- // }
959
- // filterUser = filterUser.slice(0, filterUser.length - 1)
960
- // this.condition = this.condition + ` and f_userfiles_id not in (${filterUser})`
961
- // console.log('获取新的条件。', this.condition)
962
- // this.confirmDownHand()
963
- // },
964
- confirmDownHand () {
965
- console.log('下发数据。。', this.downModel)
966
- let param = {
967
- downDate: this.downModel.downDate,
968
- startDate: this.model.params.startDate,
969
- endDate: this.model.params.endDate,
970
- condition: this.condition,
971
- f_operator: this.$login.f.name,
972
- f_operatorid: this.$login.f.id
973
- }
974
- if (this.downModel.downWay === 'downWithSelf') {
975
- param.inputtor = this.downModel.downInputtor[0]
976
- }
977
- console.log('下发参数:', param)
978
- this.$resetpost('api/af-revenue/logic/machineDownHand', {data: param}, {
979
- resolveMsg: null,
980
- rejectMsg: null
981
- }).then((res) => {
982
- // 将缓存的未抄表ID数组置空
983
- // this.unhandplan = []
984
- this.initModal()
985
- this.search()
986
- this.$showAlert(`全部下发,总计下发${res.data}户`, 'success', 2000)
987
- }).catch((error) => {
988
- this.$showAlert(`下发失败,请注意查看,失败原因:${error}`, 'danger', 0)
989
- })
990
- },
991
- // 关闭下发计划得弹出框
992
- close () {
993
- this.show = false
994
- this.inputtor_show = false
995
- this.downConfirm = false
996
- // 初始化模态框数据
997
- this.initModal()
998
- if (this.uploadshow) {
999
- this.uploadshow = false
1000
- // 讲选的文件清空
1001
- this.$refs.file.$el.querySelector('input').value = ''
1002
- }
1003
- },
1004
- initModal () {
1005
- this.downModel = {
1006
- downDate: Vue.$login.toStandardDateString(),
1007
- downWay: 'downWithUserfiles',
1008
- downInputtor: []
1009
- }
1010
- this.inputtorModel = {
1011
- inputtor: [],
1012
- reason: ''
1013
- }
1014
- },
1015
- // 判断当前登陆人是不是子公司的人员
1016
- isHead () {
1017
- return this.$login.f.parent.parent.name.includes('统一资源管理')
1018
- },
1019
- sort (field, rule) {
1020
- // 将所有排序方式设为不排序,实现相互排斥
1021
- for (let key in this.orderFields) {
1022
- if (key === field) {
1023
- this.orderFields[key] = rule
1024
- } else {
1025
- this.orderFields[key] = 'no'
1026
- }
1027
- }
1028
- // 如果新规则不排序,还原为默认排序
1029
- if (rule === 'no') {
1030
- this.model.paramSource.orderitem = `'${this.orderDefault}'`
1031
- } else {
1032
- this.model.paramSource.orderitem = `'${field} ${rule}'`
1033
- }
1034
- this.search()
1035
- },
1036
- guid () {
1037
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1038
- let r = Math.random() * 16 | 0,
1039
- v = c == 'x' ? r : (r & 0x3 | 0x8)
1040
- return v.toString(16)
1041
- })
1042
- }
1043
- },
1044
- watch: {
1045
- 'downModel.downWay' (val) {
1046
- if (val === 'downWithSelf') {
1047
- console.log('抄表员。。', this.inputtores2)
1048
- if (this.inputtores2.length > 0) {
1049
- this.downModel.downInputtor = [this.inputtores2[0].value]
1050
- }
1051
- }
1052
- }
1053
- // 'model.rows'(val){
1054
- // console.log('页面切换',val)
1055
- // if(this.isChooseAll(val)){
1056
- // this.all = true
1057
- // }else{
1058
- // this.all = false
1059
- // }
1060
- // },
1061
- },
1062
- computed: {
1063
- getExportFields () {
1064
- return {
1065
- 'f_userinfo_code': '客户编号',
1066
- 'f_user_name': '客户姓名',
1067
- 'f_address': '用户地址',
1068
- 'f_user_level': '用户等级',
1069
- 'f_adjustable_name': '调压箱名称',
1070
- 'f_inputtor': '抄表员',
1071
- 'f_balance': '上期结余',
1072
- 'f_meternumber': '表号',
1073
- 'f_meter_base': '上期底数',
1074
- 'f_book_name': '抄表册'
1075
- }
1076
- },
1077
- getCondition () {
1078
- // return {condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr}
1079
- return {
1080
- startDate: this.$refs.paged.$refs.criteria.model.startDate,
1081
- endDate: this.$refs.paged.$refs.criteria.model.endDate,
1082
- orderitem: this.orderDefault ? this.orderDefault : 'id',
1083
- condition: this.condition2
1084
- }
1085
- },
1086
-
1087
- inputtores () {
1088
- // 获取抄表员
1089
- console.log('获取抄表员', this.$login.f)
1090
- let rs = []
1091
- if (this.$login.f.f_gasman.length > 0) {
1092
- for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
1093
- let temp = {
1094
- label: this.$login.f.f_gasman[i].name,
1095
- value: this.$login.f.f_gasman[i].name
1096
- }
1097
- rs.push(temp)
1098
- }
1099
- }
1100
- this.inputtores2 = rs
1101
- return [...rs]
1102
- },
1103
- whetherpaies () {
1104
- return [
1105
- {label: '全部', value: ''},
1106
- {label: '已缴费', value: '是'},
1107
- {label: '未缴费', value: '否'}
1108
- ]
1109
- },
1110
- // 界面细节权限
1111
- jurisdiction () {
1112
- console.log('抄表界面细节', this.$login.r)
1113
- return this.$login.r ? this.$login.r : []
1114
- },
1115
- firestates () {
1116
- return [
1117
- {label: '全部', value: ''},
1118
- {label: '已点火', value: '1'},
1119
- {label: '未点火', value: '0'}
1120
- ]
1121
- },
1122
- ischecked () {
1123
- return function (row) {
1124
- for (let plan of this.plans) {
1125
- if (plan.id == row.f_userfiles_id) {
1126
- return plan.state
1127
- }
1128
- }
1129
- }
1130
- }
1131
- },
1132
- events: {}
1133
- }
1134
- </script>
1135
- <style lang="less">
1136
- #handManager {
1137
- display: flex;
1138
- justify-content: space-around;
1139
- align-items: center;
1140
-
1141
- .btn {
1142
- margin: 0px;
1143
- }
1144
-
1145
- .hand-loading {
1146
- border: 3px solid #ccc;
1147
- border-right-color: #337ab7;
1148
- border-radius: 50%;
1149
- animation: spin 0.6s linear;
1150
- position: absolute;
1151
- animation-iteration-count: infinite;
1152
- top: 0;
1153
- right: 50%;
1154
- z-index: 2;
1155
- display: block;
1156
- width: 28px;
1157
- height: 28px;
1158
- line-height: 28px;
1159
- text-align: center;
1160
- pointer-events: none;
1161
- }
1162
-
1163
- @keyframes spin {
1164
- 100% {
1165
- transform: rotate(360deg);
1166
- }
1167
- }
1168
- }
1169
-
1170
- #hand_manager_grid {
1171
- thead {
1172
- position: relative;
1173
- z-index: 2;
1174
- }
1175
- }
1176
- </style>
1
+ <template xmlns:v-el="">
2
+ <div class="flex-row">
3
+ <div class="basic-main">
4
+ <criteria-paged :model="model" v-ref:paged @sort="sort">
5
+ <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
6
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <div class="row">
8
+ <!--<div class="col-sm-6">-->
9
+ <!--style="border: 1px solid #a6d5ea; box-shadow: darkgrey 1px 1px 1px 2px;padding: 0.5%">-->
10
+ <div class="col-sm-2 form-group">
11
+ <label class="font_normal_body">归属起始</label>
12
+ <datepicker placeholder="开始日期"
13
+ style="width:60%"
14
+ class="datepicker"
15
+ v-model="model.startDate"
16
+ :value.sync="model.startDate"
17
+ :format="'yyyy-MM-dd'"
18
+ ></datepicker>
19
+ </div>
20
+ <div class="col-sm-2 form-group">
21
+ <label class="font_normal_body">归属结束</label>
22
+ <datepicker placeholder="结束日期"
23
+ style="width:60%"
24
+ v-model="model.endDate"
25
+ :value.sync="model.endDate"
26
+ :format="'yyyy-MM-dd'"
27
+ ></datepicker>
28
+ </div>
29
+
30
+ <div class="col-sm-2 form-group">
31
+ <label class="font_normal_body">客户编号</label>
32
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
33
+ condition="f_userinfo_code='{}'" placeholder='客户编号'>
34
+ </div>
35
+ <div class="col-sm-2 form-group">
36
+ <label class="font_normal_body">旧客户编号</label>
37
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_olduserinfo_code"
38
+ condition="f_olduserinfo_code='{}'" placeholder='旧客户编号'>
39
+ </div>
40
+
41
+ <div class="span" style="float:right;">
42
+ <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
43
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
44
+ <export-excel :data="$parent.$parent.getCondition"
45
+ :field="$parent.$parent.getExportFields" :header="$parent.$parent.other"
46
+ sqlurl="api/af-revenue/logic/saleExport"
47
+ sql-name="getDownPlan"
48
+ template-name='抄表计划下发导出'
49
+ :choose-col="true">
50
+ </export-excel>
51
+ <button class="button_search button_spacing"
52
+ @click="$parent.$parent.batchDownHand()">计划下发
53
+ </button>
54
+ <button v-if="$parent.$parent.inputtor_change" class="button_search button_spacing"
55
+ @click="$parent.$parent.batchInputtorChange()">抄表员调整
56
+ </button>
57
+ <div
58
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
59
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
60
+ </div>
61
+ </div>
62
+ <div class="row" v-show="$parent.$parent.criteriaShow">
63
+ <!-- <div class="col-sm-2 form-group">-->
64
+ <!-- <label class="font_normal_body">表&ensp;编&ensp;号</label>-->
65
+ <!-- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_id"-->
66
+ <!-- condition="f_user_id='{}'" placeholder='表编号'>-->
67
+ <!-- </div>-->
68
+ <div class="col-sm-2 form-group">
69
+ <label class="font_normal_body">表&emsp;&emsp;号</label>
70
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
71
+ condition="f_meternumber like '%{}%'" placeholder='表号'>
72
+ </div>
73
+ <div class="col-sm-2 form-group">
74
+ <label class="font_normal_body">客户姓名</label>
75
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
76
+ placeholder='客户姓名'
77
+ condition="f_user_name = '{}'">
78
+ </div>
79
+ <div class="col-sm-2 form-group">
80
+ <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
81
+ <v-select :value.sync="model.f_residential_area"
82
+ class="select_list select"
83
+ enter-push
84
+ v-model="model.f_residential_area"
85
+ style="width: 60%"
86
+ multiple="true"
87
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
88
+ close-on-select v-el:cc>
89
+ </v-select>
90
+ </div>
91
+ <div class="col-sm-2 form-group">
92
+ <label class="font_normal_body">楼&emsp;&emsp;栋</label>
93
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_building"
94
+ condition="f_building = '{}'" placeholder='楼栋'>
95
+ </div>
96
+ <div class="col-sm-2 form-group">
97
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
98
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
99
+ condition="f_unit = '{}'" placeholder='单元'>
100
+ </div>
101
+ <div class="col-sm-2 form-group">
102
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
103
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
104
+ condition="f_floor = '{}'" placeholder='楼层'>
105
+ </div>
106
+ <div class="col-sm-2 form-group">
107
+ <label class="font_normal_body">门&ensp;牌&ensp;号</label>
108
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
109
+ condition="f_room like '%{}%'" placeholder='门牌号'>
110
+ </div>
111
+ <div class="col-sm-2 form-group">
112
+ <label class="font_normal_body">客户地址</label>
113
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
114
+ condition="f_address like '%{}%'" placeholder='客户地址'>
115
+ </div>
116
+ <div class="col-sm-2 form-group">
117
+ <label class="font_normal_body">抄&ensp;表&ensp;员</label>
118
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
119
+ style="width:60%"
120
+ multiple="true"
121
+ :options='$parent.$parent.inputtores' placeholder='抄表员'
122
+ close-on-select
123
+ v-el:cc></v-select>
124
+ </div>
125
+
126
+ <div class="col-sm-2 form-group">
127
+ <label class="font_normal_body">客户类型</label>
128
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
129
+ :options='$parent.$parent.usertypes' placeholder='客户类型'
130
+ style="width:60%"
131
+ close-on-select
132
+ condition="f_user_type = '{}'"></v-select>
133
+ </div>
134
+ <div class="col-sm-2 form-group">
135
+ <label class="font_normal_body">用户等级</label>
136
+ <v-select :value.sync="model.f_user_level" v-model="model.f_user_level"
137
+ :options='$parent.$parent.userlevels' placeholder='用户等级'
138
+ style="width:60%"
139
+ close-on-select
140
+ condition="f_user_level = '{}'"></v-select>
141
+ </div>
142
+ <div class="col-sm-2 form-group">
143
+ <label class="font_normal_body">抄&ensp;表&ensp;册</label>
144
+ <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"
145
+ :options='$parent.$parent.meterbooks' placeholder='抄表册'
146
+ style="width:60%"
147
+ :multiple="true"
148
+ condition="f_meter_book_num in {}"></v-select>
149
+ </div>
150
+ <div class="col-sm-2 form-group">
151
+ <label class="font_normal_body">调压箱名</label>
152
+ <v-select :value.sync="model.f_adjustable_name" v-model="model.f_adjustable_name"
153
+ :options='$parent.$parent.adjustablename' placeholder='调压箱名称'
154
+ style="width:60%"
155
+ close-on-select
156
+ condition="f_adjustable_name = '{}'"></v-select>
157
+ </div>
158
+ <res-select-group :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes"
159
+ v-ref:sel></res-select-group>
160
+ </div>
161
+
162
+
163
+ <!-- 多选框 -->
164
+ <!--<div class="col-sm-2 form-group">-->
165
+ <!--<button class="btn btn-success" @click="$parent.$parent.batchDownHand()">计划下发</button>-->
166
+ <!--</div>-->
167
+
168
+ <!--<div class="form-group" v-if="$parent.$parent.meter_state">-->
169
+ <!--<button class="btn btn-success" @click="$parent.$parent.allDownHand()" >全部下发</button>-->
170
+ <!--</div>-->
171
+ <!-- 多选框结束 -->
172
+
173
+ <!--<div class="col-sm-2 form-group">-->
174
+ <!--<button class="btn btn-success" @click="$parent.$parent.adjust()">抄表员调整</button>-->
175
+ <!--</div>-->
176
+ <!--<div class="col-sm-2 form-group">-->
177
+ <!--<button class="btn btn-success" @click="$parent.$parent.fileUpload()">文件上传</button>-->
178
+ <!--</div>-->
179
+ <!--<div class="col-sm-2 form-group">-->
180
+ <!--<button class="btn btn-success" @click="search(), $parent.$parent.clean()">打印</button>-->
181
+ <!--</div>-->
182
+
183
+ </div>
184
+ </criteria>
185
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="hand_manager_grid">
186
+ <template partial='head'>
187
+ <tr>
188
+ <!--<th><input type='checkbox' v-model="$parent.$parent.$parent.all" @change="$parent.$parent.$parent.chooseAll"></th>-->
189
+ <th>
190
+ <nobr>序号</nobr>
191
+ </th>
192
+ <th>
193
+ <nobr>
194
+ <data-order field="f_userinfo_code" name="客户编号"
195
+ :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
196
+ </nobr>
197
+ </th>
198
+ <th>
199
+ <nobr>旧客户编号</nobr>
200
+ </th>
201
+ <!-- <th>-->
202
+ <!-- <nobr>表编号</nobr>-->
203
+ <!-- </th>-->
204
+ <!-- <th>基本信息</th>-->
205
+ <th>
206
+ <nobr>
207
+ <data-order field="f_address" name="基本信息"
208
+ :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
209
+ </nobr>
210
+ </th>
211
+ <th>
212
+ <nobr>用户等级</nobr>
213
+ </th>
214
+ <!--<th><nobr><data-order field="f_building" name="楼号"-->
215
+ <!--:order.sync="$parent.$parent.$parent.orderFields.f_building"></data-order></nobr>-->
216
+ <!--</th>-->
217
+ <!--<th><nobr><data-order field="f_unit" name="单元号"-->
218
+ <!--:order.sync="$parent.$parent.$parent.orderFields.f_unit"></data-order></nobr>-->
219
+ <!--</th>-->
220
+ <!--<th><nobr><data-order field="f_room" name="房号"-->
221
+ <!--:order.sync="$parent.$parent.$parent.orderFields.f_room"></data-order></nobr>-->
222
+ <!--</th>-->
223
+ <th>
224
+ <nobr>调压箱名称</nobr>
225
+ </th>
226
+ <th>
227
+ <nobr>抄表员</nobr>
228
+ </th>
229
+ <th>
230
+ <nobr>上期结余</nobr>
231
+ </th>
232
+ <th>
233
+ <nobr>表号</nobr>
234
+ </th>
235
+ <th>
236
+ <nobr>上期底数</nobr>
237
+ </th>
238
+
239
+ <!-- <th>抄表册</th>-->
240
+ <th>
241
+ <nobr>
242
+ <data-order field="f_book_name" name="抄表册"
243
+ :order.sync="$parent.$parent.$parent.orderFields.f_book_name"></data-order>
244
+ </nobr>
245
+
246
+ </th>
247
+ <th>
248
+ <nobr>操作</nobr>
249
+ </th>
250
+ <!-- f_oughtfee-->
251
+ </tr>
252
+ </template>
253
+ <template partial='body'>
254
+ <!--<td style="text-align: center;">-->
255
+ <!--<input v-if="row.f_meter_state === '未下发'"-->
256
+ <!--:id="model.pageIndex" type='checkbox' @change="$parent.$parent.$parent.chooseOne($event,row,model.rows)"-->
257
+ <!--:checked="$parent.$parent.$parent.ischecked(row)"/>-->
258
+ <!--</td>-->
259
+ <td style="text-align: center;">{{ $index + 1 }}</td>
260
+ <td style="text-align: center;">{{ row.f_userinfo_code }}</td>
261
+ <td style="text-align: center;">{{ row.f_olduserinfo_code }}</td>
262
+ <!-- <td>{{row.f_user_id}}</td>-->
263
+ <td style="text-align: center;">{{ row.f_user_name }}&nbsp;&nbsp;{{ row.f_address }}</td>
264
+ <td style="text-align: center;">{{ row.f_user_level }}</td>
265
+ <!--<td>{{row.f_building}}</td>-->
266
+ <!--<td>{{row.f_unit}}</td>-->
267
+ <!--<td>{{row.f_room}}</td>-->
268
+
269
+ <td style="text-align: center;">{{ row.f_adjustable_name }}</td>
270
+ <td style="text-align: center;">{{ row.f_inputtor }}</td>
271
+ <td style="text-align: center;">{{ row.f_balance }}</td>
272
+ <td style="text-align: center;">{{ row.f_meternumber }}</td>
273
+ <td style="text-align: center;">{{ row.f_meter_base }}</td>
274
+ <td style="text-align: center;">{{ row.f_book_name }}</td>
275
+ <td style="text-align: center;">
276
+ <nobr>
277
+ <!-- <button type="button" name="button" class="button_search button_spacing width-60"-->
278
+ <!-- v-if="$parent.$parent.$parent.config.customCal && row.f_meter_state === '已抄表' && row.states === 1 && row.f_oper_state === '正常' && row.f_whether_pay === '否'"-->
279
+ <!-- @click.stop="$parent.$parent.$parent.fileterprice(row)">自定义划价-->
280
+ <!-- </button>-->
281
+
282
+ <!--<button type="button" name="button" class="btn btn-link" disabled="disabled"-->
283
+ <!--v-if="row.num > 0">已换表-->
284
+ <!--</button>-->
285
+ <span v-if="row.num">有{{ row.num }}条待审核或未抄表记录</span>
286
+ <button type="button" name="button" class="button_search button_spacing width-60"
287
+ @click.stop="$parent.$parent.$parent.downHand(row)" v-if="!row.num"
288
+ >下发计划
289
+ </button>
290
+
291
+ <!-- <button type="button" name="button" class="btn btn-link"-->
292
+ <!-- v-if="row.f_meter_state === '待审核' ">待审核-->
293
+ <!-- </button>-->
294
+
295
+
296
+ </nobr>
297
+ </td>
298
+ </template>
299
+ </data-grid>
300
+ </criteria-paged>
301
+ <split-price :showdata="splitdata" :pricesplit="priceSplit" v-if="priceSplit"></split-price>
302
+ <modal :show.sync="show" v-ref:modal backdrop="false">
303
+ <header slot="modal-header" class="modal-header">
304
+ <h4 class="modal-title">计划下发</h4>
305
+ </header>
306
+ <article slot="modal-body" class="modal-body">
307
+ <form class="form-horizontal">
308
+ <div class="row auto">
309
+ <div class="form-group form-input-group col-sm-6">
310
+ <label class="label-control">下发日期</label>
311
+ <datepicker placeholder="下发日期" :value.sync="downModel.downDate"
312
+ format="yyyy-MM-dd HH:mm:ss"></datepicker>
313
+ </div>
314
+ </div>
315
+ <div class="row auto">
316
+ <div class="col-sm-2 form-group">
317
+ <label class="font_normal_body">抄表员:</label>
318
+ </div>
319
+ <div class="col-sm-4 form-group">
320
+ <input type="radio" value="downWithUserfiles" v-model="downModel.downWay" checked>
321
+ <label class="font_normal_body">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表册抄表员</label>
322
+ </div>
323
+ <div class="col-sm-4 form-group">
324
+ <input type="radio" value="downWithSelf" v-model="downModel.downWay">
325
+ <label class="font_normal_body">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自定义抄表员</label>
326
+ </div>
327
+ </div>
328
+ <div class="row auto" v-if="downModel.downWay === 'downWithSelf'">
329
+ <div class="form-group form-input-group col-sm-6">
330
+ <label class="font_normal_body">抄表员</label>
331
+ <div class="col-sm-4">
332
+ <v-select :value.sync="downModel.downInputtor" v-model='downModel.downInputtor'
333
+ :options='inputtores2' placeholder='抄表员'
334
+ close-on-select></v-select>
335
+ </div>
336
+ </div>
337
+ </div>
338
+ </form>
339
+ </article>
340
+
341
+ <footer slot="modal-footer" class="modal-footer">
342
+ <button type="button" class="btn btn-default" @click='close()'>取消</button>
343
+ <button type="button" class="btn btn-success" @click='confirm()'>确认</button>
344
+ </footer>
345
+ </modal>
346
+ <modal :show.sync="downConfirm" backdrop="false">
347
+ <header slot="modal-header" class="modal-header">
348
+ <h4 class="modal-title">下发确认</h4>
349
+ </header>
350
+ <article slot="modal-body" class="modal-body" style="padding: 18px;">
351
+ <div class="col-sm-12 form-group" style="align-content: center;">
352
+ {{ msg }}
353
+ </div>
354
+ </article>
355
+
356
+ <footer slot="modal-footer" class="modal-footer">
357
+ <button type="button" class="btn btn-success" @click='downContinue'>继续下发正常用户</button>
358
+ <!-- <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>-->
359
+ <button type="button" class="btn btn-default" @click='close'>取消</button>
360
+ </footer>
361
+ </modal>
362
+
363
+ <!--<modal :show.sync="downConfirm" backdrop="false">-->
364
+ <!--<header slot="modal-header" class="modal-header">-->
365
+ <!--<h4 class="modal-title">下发确认</h4>-->
366
+ <!--</header>-->
367
+ <!--<article slot="modal-body" class="modal-body">-->
368
+ <!--<div class="col-sm-12 form-group">-->
369
+ <!--{{msg}}-->
370
+ <!--</div>-->
371
+ <!--</article>-->
372
+
373
+ <!--<footer slot="modal-footer" class="modal-footer">-->
374
+ <!--<button type="button" class="btn btn-success" @click='downContinue'>继续下发</button>-->
375
+ <!--&lt;!&ndash; <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>&ndash;&gt;-->
376
+ <!--<button type="button" class="btn btn-default" @click='close'>取消</button>-->
377
+ <!--</footer>-->
378
+ <!--</modal>-->
379
+ <modal :show.sync="inputtor_show" backdrop="false">
380
+ <header slot="modal-header" class="modal-header">
381
+ <h4 class="modal-title">抄表员变更</h4>
382
+ </header>
383
+ <article slot="modal-body" class="modal-body">
384
+ <form class="form-horizontal">
385
+ <div class="row auto">
386
+ <div class="form-group form-input-group col-sm-6">
387
+ <label>调整客户数</label>
388
+ <input class="input_search" v-model="model.count" disabled>
389
+ </div>
390
+ </div>
391
+ <div class="row auto">
392
+ <div class="form-group form-input-group col-sm-6">
393
+ <label class="label-control">抄表员</label>
394
+ <div class="col-sm-4">
395
+ <v-select :value.sync="inputtorModel.inputtor" v-model='inputtorModel.inputtor'
396
+ :options='inputtores2' placeholder='抄表员'
397
+ close-on-select></v-select>
398
+ </div>
399
+ </div>
400
+ </div>
401
+ </form>
402
+ </article>
403
+
404
+ <footer slot="modal-footer" class="modal-footer">
405
+ <button type="button" class="btn btn-success" @click='inputtorConfirm'>确认</button>
406
+ <button type="button" class="btn btn-default" @click='close'>取消</button>
407
+ </footer>
408
+ </modal>
409
+
410
+ <modal :show.sync="uploadshow" v-ref:modal backdrop="false">
411
+ <header slot="modal-header" class="modal-header">
412
+ <button type="button" class="close" @click="close"><span>&times;</span></button>
413
+ <h4 class="modal-title">文件上传</h4>
414
+ </header>
415
+ <article slot="modal-body" class="modal-body">
416
+ <div class="col-sm-2 form-group">
417
+ <file-upload class="my-file-uploader" name="myFile"
418
+ action="api/af-revenue/file/uploadFile" tagname="文件上传" :headers="headers" multiple
419
+ v-ref:file></file-upload>
420
+ </div>
421
+ </article>
422
+
423
+ <footer slot="modal-footer" class="modal-footer">
424
+ <!-- <button v-show="show" type="button" class="btn btn-default" @click='close'>取消</button>
425
+ <button v-show="show" type="button" class="btn btn-success" @click='confirm(filename)'>确认</button> -->
426
+ </footer>
427
+ </modal>
428
+
429
+ </div>
430
+ </div>
431
+ </template>
432
+ <script>
433
+ import {PagedList, HttpResetClass} from 'vue-client'
434
+ import Vue from 'vue'
435
+ import co from 'co'
436
+
437
+ let readyGen = async function (self) {
438
+ await self.$getConfig(self, 'HandManager')
439
+ await self.$LoadParams.loadMeterBook(self.f_filialeid)
440
+ self.loadMeterBooks()
441
+ self.getfield = self.config.excelHeaders
442
+ self.sumsmodel = self.$refs.paged.$refs.grid.model.sums
443
+ self.reflash()
444
+ }
445
+
446
+ let downGen = function* (type, condition, data, self) {
447
+ self.condition = condition
448
+ self.msg = '确认下发计划'
449
+ let getUnhand = yield Vue.resetpost('api/af-revenue/sql/getUnhand', {
450
+ data: {
451
+ startDate: self.startDate,
452
+ condition: self.condition
453
+ }
454
+ }, {resolveMsg: null, rejectMsg: '获取待审核数据异常!!'})
455
+ // if (type === 'single') {
456
+ // getUnhand = yield Vue.resetpost('api/af-revenue/sql/getUnhand', {
457
+ // data: {
458
+ // startDate: self.model.params.startDate,
459
+ // condition: condition
460
+ // }
461
+ // }, {resolveMsg: null, rejectMsg: '获取待审核数据异常!!'})
462
+ // // self.msg = `下发客户编号为${data.f_userinfo_code}的抄表计划?`
463
+ // // } else if (type === 'all') {
464
+ // }
465
+ // else if (type === 'batch') {
466
+ // let tempCondition = condition.replace("and f_meter_state = '未下发'", '')
467
+ // getUnhand = yield Vue.resetpost('api/af-revenue/sql/machineGetUnhand', {
468
+ // data: {
469
+ // startDate: self.model.params.startDate,
470
+ // condition: tempCondition
471
+ // }
472
+ // }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
473
+ // self.msg = `确认下发当前总计: ${data} 户计划`
474
+ // }
475
+ // for (let i = 0; i < getUnhand.data.length; i++) {
476
+ // let temp = {
477
+ // id: getUnhand.data[i].id,
478
+ // f_user_id: getUnhand.data[i].f_user_id,
479
+ // f_userfiles_id: getUnhand.data[i].f_userfiles_id,
480
+ // f_adjustable_id: getUnhand.data[i].f_adjustable_id,
481
+ // f_adjustable_name: getUnhand.data[i].f_adjustable_name
482
+ // }
483
+ // console.log('=================================================================================')
484
+ // console.log('下发计划查看调压箱和调压箱编号', temp)
485
+ // console.log('========================================================================================')
486
+ // self.unhandplan.push(temp)
487
+ // }
488
+ for (let i = 0; i < getUnhand.data.length; i++) {
489
+ let temp = {
490
+ id: getUnhand.data[i].id,
491
+ f_user_id: getUnhand.data[i].f_user_id,
492
+ f_userfiles_id: getUnhand.data[i].f_userfiles_id
493
+ }
494
+ self.unhandplan.push(temp)
495
+ }
496
+ if (getUnhand.data.length > 0) {
497
+ self.msg = self.msg + `, 警告: 之前有 ${getUnhand.data.length} 条待审核数据`
498
+ } else {
499
+ self.unhandplan = []
500
+ }
501
+ // console.log('1111111:',self.msg)
502
+ self.show = true
503
+ }
504
+
505
+ let inputtotChangeGen = async function (self) {
506
+ let param = {
507
+ f_change_content: self.inputtorModel.inputtor[0],
508
+ f_change_cause: self.inputtorModel.reason,
509
+ condition: self.model.condition,
510
+ startDate: self.model.params.startDate,
511
+ endDate: self.model.params.endDate,
512
+ f_operator: self.$login.f.name,
513
+ f_change_count: self.model.count,
514
+ f_change_type: '抄表员变更',
515
+ // f_input_person: self.$login.f.name,
516
+ f_operatorid: self.$login.f.id,
517
+ f_orgid: self.$login.f.orgid,
518
+ f_orgname: self.$login.f.orgs,
519
+ f_depid: self.$login.f.depids,
520
+ f_depname: self.$login.f.deps
521
+ }
522
+ console.log('抄表单抄表员变更', param)
523
+ await self.$resetpost('api/af-revenue/logic/changeInputtor', param, {
524
+ resolveMsg: null,
525
+ rejectMsg: '批量抄表员变更失败'
526
+ })
527
+ self.$showAlert(`总计变更 ${self.model.count} 户抄表员为 ${self.inputtorModel.inputtor[0]}`, 'success', 2000)
528
+ self.inputtor_show = false
529
+ self.initModal()
530
+ self.reflash()
531
+ }
532
+
533
+ export default {
534
+ title: '计划下发',
535
+ data () {
536
+ return {
537
+ initres: {
538
+ org: [this.$login.f.orgid],
539
+ dep: [],
540
+ user: []
541
+ },
542
+ sumsmodel: [],
543
+ orgCondtionStr: '',
544
+ priceSplit: false,
545
+ criteriaShow: false,
546
+ model: new PagedList('api/af-revenue/sql/getDownPlan', 30, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'f_userinfo_id desc'`}),
547
+ config: {
548
+
549
+ // 导出列要和查询列相同
550
+ excelHeaders: {
551
+ 'f_index': '序号',
552
+ 'f_user_id': '表编号',
553
+ 'f_meternumber': '表号',
554
+ 'f_inputtor': '抄表员',
555
+ 'f_balance': '上期结余',
556
+ 'f_last_input_date': '上次抄表',
557
+ 'f_hand_date': '下发时间',
558
+ 'f_input_date': '抄表日期',
559
+ 'f_userinfo_code': '客户编号',
560
+ 'f_olduserinfo_code': '旧客户编号',
561
+ 'f_address': '客户地址',
562
+ 'f_residential_area': '小区名称',
563
+ 'f_user_name': '客户姓名',
564
+ 'f_meter_base': '上期底数',
565
+ 'f_tablebase': '本期指数',
566
+ 'f_oughtfee': '应交金额',
567
+ 'f_oughtamount': '应交气量',
568
+ 'f_whether_pay': '是否缴费',
569
+ 'f_book_name': '抄表册',
570
+ 'f_meter_classify': '气表分类',
571
+ 'f_price_type': '气价类型',
572
+ 'f_price_name': '气价名称',
573
+ 'f_price_list': '气价单价',
574
+ 'f_meter_type': '气表类型',
575
+ 'f_meter_style': '气表型号',
576
+ 'f_accounts_state': '下账标识',
577
+ 'f_user_phone': '客户电话',
578
+ 'f_adjustable_id': '表箱号'
579
+ },
580
+ examine: true,
581
+ customCal: false
582
+ },
583
+ meter_state: false, // 是否显示计划下发按钮
584
+ downModel: {
585
+ downDate: Vue.$login.toStandardTimeString(),
586
+ downWay: 'downWithUserfiles',
587
+ downInputtor: []
588
+ },
589
+ inputtor_change: false, // 是否显示抄表员变更按钮
590
+ inputtor_show: false, // 控制抄表员变更模板
591
+ inputtorModel: {
592
+ inputtor: [],
593
+ reason: ''
594
+ },
595
+ plans: [], // 记录当前行是否被勾选
596
+ all: false, // 是否全选
597
+ show: false, // 下发日期模态框显示
598
+ unhandplan: [], // 之前是否有未抄表记录
599
+ downConfirm: false, // 下发若有未抄记录,确认框
600
+ uploadshow: false,
601
+ // 小区
602
+ residentialArea: [],
603
+
604
+ // downDate: this.$login.toStandardYearMonth().replace("-", ""),
605
+ msg: '',
606
+ condition: '',
607
+ headers: {'username': Vue.$login.f.name, 'blodid': Vue.$login.guid()},
608
+ orderDefault: 'f_userfiles_id',
609
+ orderFields: {
610
+ f_userinfo_id: 'no'
611
+ },
612
+ getfield: {},
613
+ outlet: '',
614
+ filiale: '',
615
+ condition2: '',
616
+ area: [],
617
+ inputtouPerson: [],
618
+ usertypes: this.$appdata.getParam('客户类型') ? [{
619
+ label: '全部',
620
+ value: ''
621
+ }, ...this.$appdata.getParam('客户类型')] : [],
622
+ userlevels: this.$appdata.getParam('用户等级') ? [{
623
+ label: '全部',
624
+ value: ''
625
+ }, ...this.$appdata.getParam('用户等级')] : [],
626
+ adjustablename: this.$appdata.getParam('调压箱名称') ? [{
627
+ label: '全部',
628
+ value: ''
629
+ }, ...this.$appdata.getParam('调压箱名称')] : [],
630
+ inputtores2: [], // 下发时使用自定义抄表员,
631
+ splitdata: '',
632
+ f_filialeid: this.$login.f.orgid,
633
+ meterbooks: [],
634
+ upshow: false,
635
+ inputid: 0,
636
+ showfiles: false,
637
+ uploadText: '抄表',
638
+ showerr: false,
639
+ err: '',
640
+ other: [],
641
+ // 请求对象(批量导入,查询进度使用)
642
+ HttpReset: new HttpResetClass()
643
+ }
644
+ },
645
+ ready () {
646
+ this.getaddress()
647
+ readyGen(this)
648
+ },
649
+ mounted () {
650
+ console.log(this.inputid)
651
+ document.getElementById(this.inputid).focus()
652
+ },
653
+ methods: {
654
+ getotherfooter () {
655
+ this.other = []
656
+ // this.footer = []
657
+ let otherInData = []
658
+ otherInData.push(`导出时间: ${this.$login.toStandardTimeString()}`)
659
+ // let footerData = []
660
+ // let exportfield = this.getExportFields
661
+ // footerData.push('合计')
662
+ // for (var field in this.sumsmodel) {
663
+ // footerData.push(`${exportfield[field]}合计:${this.sumsmodel[field]}`)
664
+ // }
665
+ // this.footer.push(footerData)
666
+ this.other.push(otherInData)
667
+ },
668
+ // 获得本月的最后一天。
669
+ getLastDayOfMonth (year, month) {
670
+ let new_year = year // 取当前的年份
671
+ let new_month = month++// 取下一个月的第一天,方便计算(最后一天不固定)
672
+ if (month > 12) // 如果当前大于12月,则年份转到下一年
673
+ {
674
+ new_month -= 12 // 月份减
675
+ new_year++ // 年份增
676
+ }
677
+ let new_date = new Date(new_year, new_month, 1) // 取当年当月中的第一天
678
+ let date_count = (new Date(new_date.getTime() - 1000 * 60 * 60 * 24)).getDate()// 获取当月的天数
679
+ // let last_date = new Date(new_date.getTime() - 1000 * 60 * 60 * 24);//获得当月最后一天的日期
680
+ return date_count
681
+ },
682
+
683
+ getRes (obj) {
684
+ this.orgCondtionStr = obj
685
+ },
686
+ async getaddress () {
687
+ console.log('开始获取小区')
688
+ let HttpReset = new HttpResetClass()
689
+ var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
690
+ data: {
691
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
692
+ }
693
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
694
+ console.log('小区', data)
695
+ let house = []
696
+ house.push()
697
+ for (let row of data.data) {
698
+ console.log('开始保存小区')
699
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
700
+ }
701
+ this.residentialArea = house
702
+ },
703
+ loadMeterBooks () {
704
+ this.meterbooks = this.$GetSaleParam.getMeterBooks()
705
+ },
706
+
707
+ fileterprice (row) {
708
+ this.splitdata = row
709
+ this.priceSplit = true
710
+ console.log('row==>', row)
711
+ },
712
+ hidden () {
713
+ this.criteriaShow = !this.criteriaShow
714
+ },
715
+ clear () {
716
+ Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
717
+ this.$refs.paged.$refs.criteria.model[key] = []
718
+ })
719
+ this.$refs.paged.$refs.criteria.model.f_meter_classify = ['机表']
720
+ },
721
+
722
+ // 判断当前页是否全选
723
+ isChooseAll (rows) {
724
+ if (this.plans.length == 0 && rows.length == 0) {
725
+ return false
726
+ }
727
+ for (var i = 0; i < rows.length; i++) {
728
+ let flag = false
729
+ if (rows[i].f_meter_state == '未下发') {
730
+ for (let plan of this.plans) {
731
+ if (plan.id == rows[i].f_userfiles_id) {
732
+ flag = true
733
+ if (!plan.state) {
734
+ return false
735
+ }
736
+ }
737
+ }
738
+ if (!flag) {
739
+ return false
740
+ }
741
+ }
742
+ }
743
+ return true
744
+ },
745
+ // 选择需要下发的计划
746
+ chooseOne (e, row, rows) {
747
+ console.log('row', row)
748
+ let checked = e.target.checked
749
+ console.log('state', e.target.checked)
750
+ // 判断当前行是否被选中
751
+ if (checked) {
752
+ let onePlan = {
753
+ id: row.f_userfiles_id,
754
+ state: true
755
+ }
756
+ // 记录被选中计划的状态
757
+ let flag = false
758
+ for (let plan of this.plans) {
759
+ if (plan.id == row.f_userfiles_id) {
760
+ flag = true
761
+ plan.state = true
762
+ }
763
+ }
764
+ if (!flag) {
765
+ this.plans.push(onePlan)
766
+ }
767
+ } else {
768
+ for (let plan of this.plans) {
769
+ if (plan.id == row.f_userfiles_id) {
770
+ plan.state = false
771
+ }
772
+ }
773
+ }
774
+ // let param = {id:row.id,isChoose:true}
775
+
776
+ if (this.isChooseAll(rows)) {
777
+ this.all = true
778
+ } else {
779
+ this.all = false
780
+ }
781
+ // this.delRepetition()
782
+ },
783
+ uploadFiles () {
784
+ this.showfiles = !this.showfiles
785
+ },
786
+ chooseAll () {
787
+ if (this.all) {
788
+ // this.chooseInfo[index-1] = []
789
+ // for (let row of this.model.rows){
790
+ // this.chooseInfo[index-1].push(row)
791
+ // }
792
+ // this.chooseInfo = Object.assign([],this.chooseInfo,this.model.rows)
793
+
794
+ for (let row of this.model.rows) {
795
+ if (row.f_meter_state == '未下发') {
796
+ let onePlan = {
797
+ id: row.f_userfiles_id,
798
+ state: true
799
+ }
800
+ let flag = false
801
+ for (let plan of this.plans) {
802
+ if (plan.id == row.f_userfiles_id) {
803
+ flag = true
804
+ plan.state = true
805
+ }
806
+ }
807
+ if (!flag) {
808
+ this.plans.push(onePlan)
809
+ }
810
+ }
811
+ }
812
+ } else {
813
+ // this.chooseInfo[index-1] = []
814
+ // console.log("this.chooseInfo[index-1]",this.chooseInfo[index-1])
815
+ for (let row of this.model.rows) {
816
+ if (row.f_meter_state == '未下发') {
817
+ for (let plan of this.plans) {
818
+ if (plan.id == row.f_userfiles_id) {
819
+ plan.state = false
820
+ }
821
+ }
822
+ }
823
+ }
824
+ }
825
+ },
826
+ search () {
827
+ // 查询前清空选择项
828
+ this.plans = []
829
+ this.$refs.paged.$refs.criteria.search()
830
+ },
831
+ clickupshow () {
832
+ this.upshow = !this.upshow
833
+ },
834
+ selfSearch (args) {
835
+ this.meter_state = args.condition.includes('未下发')
836
+ this.inputtor_change = args.condition.includes('未抄表')
837
+
838
+ if (!this.orgCondtionStr) {
839
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
840
+ } else {
841
+ args.condition = `${args.condition}` + this.orgCondtionStr
842
+ }
843
+
844
+ // 抄表员查询条件
845
+ this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
846
+ if (this.inputtouPerson.length !== 0) {
847
+ let str = JSON.stringify(this.inputtouPerson)
848
+ str = str.replace(/"/g, `'`)
849
+ str = str.replace(/\[/g, ``)
850
+ str = str.replace(/\]/g, ``)
851
+ console.log('=====抄表员model22222222222绑定====', str)
852
+ // 查询多个抄表员时条件
853
+ args.condition += ` and f_inputtor in ( ${str} )`
854
+ }
855
+ // 小区查询条件
856
+ this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
857
+ console.log('=====小区model绑定====', this.area)
858
+ if (this.area.length !== 0) {
859
+ let str = JSON.stringify(this.area)
860
+ str = str.replace(/"/g, `'`)
861
+ str = str.replace(/\[/g, ``)
862
+ str = str.replace(/\]/g, ``)
863
+ console.log('=====小区model22222222222绑定====', str)
864
+ // 查询多个小区时条件
865
+ args.condition += ` and f_residential_area in ( ${str} )`
866
+ }
867
+
868
+ if (args.model.f_meter_brand && args.model.f_meter_brand.length > 0) {
869
+ if (args.model.f_meter_brand[0].f_meter_brand) {
870
+ args.condition = `${args.condition} and f_meter_brand = '${args.model.f_meter_brand[0].f_meter_brand}'`
871
+ }
872
+ }
873
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
874
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
875
+ this.condition2 = args.condition
876
+ console.log('selfsearch..', args.condition, this.model)
877
+ this.model.search(args.condition, this.model)
878
+ },
879
+ reflash () {
880
+ this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
881
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0]
882
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1]
883
+ this.search()
884
+ },
885
+ fileUpload () {
886
+ this.uploadshow = true
887
+ },
888
+ down (type, condition, data) {
889
+ co(downGen(type, condition, data, this))
890
+ },
891
+ // 单条下发计划
892
+ downHand (row) {
893
+ console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + row.f_userfiles_id)
894
+ this.down('single', `f_userfiles_id = '${row.f_userfiles_id}'`, row)
895
+ },
896
+ // 批量下发计划
897
+ batchDownHand () {
898
+ this.down('batch', this.model.condition, this.model.count)
899
+ },
900
+ // batchDownHand () {
901
+ // this.condition = ''
902
+ // let count = 0
903
+ // for (let plan of this.plans){
904
+ // if(plan.state){
905
+ // this.condition = this.condition + plan.id + ','
906
+ // count = count + 1
907
+ // }
908
+ // }
909
+ // this.down('batch', `f_user_id in (${this.condition.substring(0,this.condition.length-1)})`,count)
910
+ // },
911
+ // allDownHand () {
912
+ // this.down('all', this.model.condition, this.model.count)
913
+ // },
914
+ batchInputtorChange () {
915
+ this.inputtor_show = true
916
+ },
917
+ inputtorConfirm () {
918
+ this.$showMessage(`确认变更前请确认选择的时间区间和查询条件是否正确,确认变更当前 ${this.model.count} 户抄表员`, ['confirm', 'cancel']).then((res) => {
919
+ if (res === 'confirm') {
920
+ inputtotChangeGen(this)
921
+ }
922
+ })
923
+ },
924
+ confirm () {
925
+ // 正式提交下发
926
+ // 进行日期校验,判断下发的日期是否属于选择的归属期内
927
+ console.log('下发日期校验', this.downModel, this.$refs.paged.$refs.criteria.model)
928
+ if (this.validateDate()) {
929
+ this.show = false
930
+ // this.confirmDownHand()
931
+ console.log('有没有异常数据:', this.unhandplan)
932
+ if (this.unhandplan.length > 0) {
933
+ this.downConfirm = true
934
+ } else {
935
+ this.confirmDownHand()
936
+ }
937
+ } else {
938
+ this.$showAlert('您选择的下发时间不在归属期内, 请重新选择下发时间', 'warning', 3000)
939
+ }
940
+ },
941
+ validateDate () {
942
+ let currentDown = new Date(this.downModel.downDate)
943
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.startDate))
944
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.endDate))
945
+ return currentDown >= new Date(this.$refs.paged.$refs.criteria.model.startDate + ' 00:00:00') && currentDown <= new Date(this.$refs.paged.$refs.criteria.model.endDate + ' 23:59:59')
946
+ },
947
+
948
+ downContinue () {
949
+ this.downConfirm = false
950
+ this.confirmDownHand()
951
+ },
952
+ // downFilter () {
953
+ // this.downConfirm = false
954
+ // console.log('过滤有未抄记录的抄表')
955
+ // let filterUser = ''
956
+ // for (let json of this.unhandplan) {
957
+ // filterUser += `'${json.f_userfiles_id}',`
958
+ // }
959
+ // filterUser = filterUser.slice(0, filterUser.length - 1)
960
+ // this.condition = this.condition + ` and f_userfiles_id not in (${filterUser})`
961
+ // console.log('获取新的条件。', this.condition)
962
+ // this.confirmDownHand()
963
+ // },
964
+ confirmDownHand () {
965
+ console.log('下发数据。。', this.downModel)
966
+ let param = {
967
+ downDate: this.downModel.downDate,
968
+ startDate: this.model.params.startDate,
969
+ endDate: this.model.params.endDate,
970
+ condition: this.condition,
971
+ f_operator: this.$login.f.name,
972
+ f_operatorid: this.$login.f.id
973
+ }
974
+ if (this.downModel.downWay === 'downWithSelf') {
975
+ param.inputtor = this.downModel.downInputtor[0]
976
+ }
977
+ console.log('下发参数:', param)
978
+ this.$resetpost('api/af-revenue/logic/machineDownHand', {data: param}, {
979
+ resolveMsg: null,
980
+ rejectMsg: null
981
+ }).then((res) => {
982
+ // 将缓存的未抄表ID数组置空
983
+ // this.unhandplan = []
984
+ this.initModal()
985
+ this.search()
986
+ this.$showAlert(`全部下发,总计下发${res.data}户`, 'success', 2000)
987
+ }).catch((error) => {
988
+ this.$showAlert(`下发失败,请注意查看,失败原因:${error}`, 'danger', 0)
989
+ })
990
+ },
991
+ // 关闭下发计划得弹出框
992
+ close () {
993
+ this.show = false
994
+ this.inputtor_show = false
995
+ this.downConfirm = false
996
+ // 初始化模态框数据
997
+ this.initModal()
998
+ if (this.uploadshow) {
999
+ this.uploadshow = false
1000
+ // 讲选的文件清空
1001
+ this.$refs.file.$el.querySelector('input').value = ''
1002
+ }
1003
+ },
1004
+ initModal () {
1005
+ this.downModel = {
1006
+ downDate: Vue.$login.toStandardDateString(),
1007
+ downWay: 'downWithUserfiles',
1008
+ downInputtor: []
1009
+ }
1010
+ this.inputtorModel = {
1011
+ inputtor: [],
1012
+ reason: ''
1013
+ }
1014
+ },
1015
+ // 判断当前登陆人是不是子公司的人员
1016
+ isHead () {
1017
+ return this.$login.f.parent.parent.name.includes('统一资源管理')
1018
+ },
1019
+ sort (field, rule) {
1020
+ // 将所有排序方式设为不排序,实现相互排斥
1021
+ for (let key in this.orderFields) {
1022
+ if (key === field) {
1023
+ this.orderFields[key] = rule
1024
+ } else {
1025
+ this.orderFields[key] = 'no'
1026
+ }
1027
+ }
1028
+ // 如果新规则不排序,还原为默认排序
1029
+ if (rule === 'no') {
1030
+ this.model.paramSource.orderitem = `'${this.orderDefault}'`
1031
+ } else {
1032
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
1033
+ }
1034
+ this.search()
1035
+ },
1036
+ guid () {
1037
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1038
+ let r = Math.random() * 16 | 0,
1039
+ v = c == 'x' ? r : (r & 0x3 | 0x8)
1040
+ return v.toString(16)
1041
+ })
1042
+ }
1043
+ },
1044
+ watch: {
1045
+ 'downModel.downWay' (val) {
1046
+ if (val === 'downWithSelf') {
1047
+ console.log('抄表员。。', this.inputtores2)
1048
+ if (this.inputtores2.length > 0) {
1049
+ this.downModel.downInputtor = [this.inputtores2[0].value]
1050
+ }
1051
+ }
1052
+ }
1053
+ // 'model.rows'(val){
1054
+ // console.log('页面切换',val)
1055
+ // if(this.isChooseAll(val)){
1056
+ // this.all = true
1057
+ // }else{
1058
+ // this.all = false
1059
+ // }
1060
+ // },
1061
+ },
1062
+ computed: {
1063
+ getExportFields () {
1064
+ return {
1065
+ 'f_userinfo_code': '客户编号',
1066
+ 'f_user_name': '客户姓名',
1067
+ 'f_address': '用户地址',
1068
+ 'f_user_level': '用户等级',
1069
+ 'f_adjustable_name': '调压箱名称',
1070
+ 'f_inputtor': '抄表员',
1071
+ 'f_balance': '上期结余',
1072
+ 'f_meternumber': '表号',
1073
+ 'f_meter_base': '上期底数',
1074
+ 'f_book_name': '抄表册'
1075
+ }
1076
+ },
1077
+ getCondition () {
1078
+ // return {condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr}
1079
+ return {
1080
+ startDate: this.$refs.paged.$refs.criteria.model.startDate,
1081
+ endDate: this.$refs.paged.$refs.criteria.model.endDate,
1082
+ orderitem: this.orderDefault ? this.orderDefault : 'id',
1083
+ condition: this.condition2
1084
+ }
1085
+ },
1086
+
1087
+ inputtores () {
1088
+ // 获取抄表员
1089
+ console.log('获取抄表员', this.$login.f)
1090
+ let rs = []
1091
+ if (this.$login.f.f_gasman.length > 0) {
1092
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
1093
+ let temp = {
1094
+ label: this.$login.f.f_gasman[i].name,
1095
+ value: this.$login.f.f_gasman[i].name
1096
+ }
1097
+ rs.push(temp)
1098
+ }
1099
+ }
1100
+ this.inputtores2 = rs
1101
+ return [...rs]
1102
+ },
1103
+ whetherpaies () {
1104
+ return [
1105
+ {label: '全部', value: ''},
1106
+ {label: '已缴费', value: '是'},
1107
+ {label: '未缴费', value: '否'}
1108
+ ]
1109
+ },
1110
+ // 界面细节权限
1111
+ jurisdiction () {
1112
+ console.log('抄表界面细节', this.$login.r)
1113
+ return this.$login.r ? this.$login.r : []
1114
+ },
1115
+ firestates () {
1116
+ return [
1117
+ {label: '全部', value: ''},
1118
+ {label: '已点火', value: '1'},
1119
+ {label: '未点火', value: '0'}
1120
+ ]
1121
+ },
1122
+ ischecked () {
1123
+ return function (row) {
1124
+ for (let plan of this.plans) {
1125
+ if (plan.id == row.f_userfiles_id) {
1126
+ return plan.state
1127
+ }
1128
+ }
1129
+ }
1130
+ }
1131
+ },
1132
+ events: {}
1133
+ }
1134
+ </script>
1135
+ <style lang="less">
1136
+ #handManager {
1137
+ display: flex;
1138
+ justify-content: space-around;
1139
+ align-items: center;
1140
+
1141
+ .btn {
1142
+ margin: 0px;
1143
+ }
1144
+
1145
+ .hand-loading {
1146
+ border: 3px solid #ccc;
1147
+ border-right-color: #337ab7;
1148
+ border-radius: 50%;
1149
+ animation: spin 0.6s linear;
1150
+ position: absolute;
1151
+ animation-iteration-count: infinite;
1152
+ top: 0;
1153
+ right: 50%;
1154
+ z-index: 2;
1155
+ display: block;
1156
+ width: 28px;
1157
+ height: 28px;
1158
+ line-height: 28px;
1159
+ text-align: center;
1160
+ pointer-events: none;
1161
+ }
1162
+
1163
+ @keyframes spin {
1164
+ 100% {
1165
+ transform: rotate(360deg);
1166
+ }
1167
+ }
1168
+ }
1169
+
1170
+ #hand_manager_grid {
1171
+ thead {
1172
+ position: relative;
1173
+ z-index: 2;
1174
+ }
1175
+ }
1176
+ </style>