sale-client 4.2.71 → 4.2.72

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 (148) hide show
  1. package/build/dev-server.js +58 -36
  2. package/index.html +7 -2
  3. package/package.json +1 -1
  4. package/src/App.vue +1 -1
  5. package/src/components/FilesManage/FileUserFiles.vue +1 -1
  6. package/src/components/revenue/Common/EticketPrint.vue +2 -2
  7. package/src/components/revenue/HandManager/CardHand.vue +6 -6
  8. package/src/components/revenue/HandManager/MeterBookUser.vue +726 -726
  9. package/src/components/revenue/cardHandManage/cardDown.vue +6 -6
  10. package/src/components/revenue/comprehen/ComprehenOperation/QrPay/QrPaymentDetailed.vue +423 -423
  11. package/src/components/revenue/comprehen/Maintenance/hand/handOperate.vue +469 -469
  12. package/src/components/revenue/machineHandManage/ArrearsQuery.vue +938 -938
  13. package/src/components/webMeter/MeterManage/WebMeterBatchOperationValve.vue +1 -1
  14. package/src/components/webMeter/paramSave/ParamSetForm.vue +1 -1
  15. package/src/filiale/alashan/FileUserFiles.vue +1 -1
  16. package/src/filiale/alashan/eticket/EticketPrint.vue +2 -2
  17. package/src/filiale/alashan/eticket/EticketRecordList.vue +428 -428
  18. package/src/filiale/ancheng/FilesManage/FileUserFiles.vue +1 -1
  19. package/src/filiale/bayan/ChargeList.vue +1010 -1010
  20. package/src/filiale/bayan/FilesManage/FileUserFiles.vue +1 -1
  21. package/src/filiale/bayan/StockListmain.vue +543 -543
  22. package/src/filiale/bazhong/UserInfoDetailManageNew.vue +245 -245
  23. package/src/filiale/bazhong/ic_detail/ChangeMeterQueryUser.vue +370 -370
  24. package/src/filiale/bazhong/sale.js +8 -8
  25. package/src/filiale/beifangshiye/FilesManage/FileUserFiles.vue +1 -1
  26. package/src/filiale/beifangshiye/OtherChargeNew.vue +625 -625
  27. package/src/filiale/chengtou/components/FilesManage/FileUserFiles.vue +1 -1
  28. package/src/filiale/dexin/FileUserFiles.vue +1 -1
  29. package/src/filiale/dongguan/components/FilesManage/FileUserFiles.vue +1 -1
  30. package/src/filiale/dongguan/components/common/userinfo_detail/WebMeterBatchOperationValve.vue +1 -1
  31. package/src/filiale/fugou/FileUserFiles.vue +1 -1
  32. package/src/filiale/ganquan/components/FilesManage/FileUserFiles.vue +1 -1
  33. package/src/filiale/gaomi/components/FilesManage/FileUserFiles.vue +1 -1
  34. package/src/filiale/gehua/FileManageNew/FileUserFiles.vue +1 -1
  35. package/src/filiale/gehua/FileUserFiles.vue +1 -1
  36. package/src/filiale/guangxi/WebMeterBatchOperationValve.vue +1 -1
  37. package/src/filiale/haile/FilesManage/FileUserFiles.vue +1 -1
  38. package/src/filiale/hantou/WebMeterBatchOperationValve.vue +1 -1
  39. package/src/filiale/huaran/FilesManage/FileUserFiles.vue +1 -1
  40. package/src/filiale/huayin/FileUserFiles.vue +1 -1
  41. package/src/filiale/jingwei/FileUserFiles.vue +1 -1
  42. package/src/filiale/jingyang/EticketPrint.vue +2 -2
  43. package/src/filiale/jingyang/GovernmentSell.vue +1 -1
  44. package/src/filiale/jinhuang/WebHand.vue +1026 -1026
  45. package/src/filiale/jinhuang/cardsHand.vue +8 -8
  46. package/src/filiale/kelai/FileUserFilesKeLai.vue +1 -1
  47. package/src/filiale/konggang/FileUserFiles.vue +1 -1
  48. package/src/filiale/lixianV3/ArrearsQuery.vue +938 -938
  49. package/src/filiale/lixianV3/InsuranceChargesDetails.vue +425 -425
  50. package/src/filiale/macheng/EstimateManager.vue +1 -1
  51. package/src/filiale/macheng/FileUserFiles.vue +1 -1
  52. package/src/filiale/meihekou/FileUserFiles.vue +1 -1
  53. package/src/filiale/meihekou/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +281 -281
  54. package/src/filiale/ningjin/FileUserFiles.vue +1 -1
  55. package/src/filiale/qianneng/FilesManage/FileUserFiles.vue +1 -1
  56. package/src/filiale/qianneng/revenue/sms/AccountMessageList.vue +1 -1
  57. package/src/filiale/qingjian/FileUserFiles.vue +1 -1
  58. package/src/filiale/rizhao/FileUserFiles.vue +1 -1
  59. package/src/filiale/rongcheng/FileUserFiles.vue +1 -1
  60. package/src/filiale/rongchuang/FilesManage/FileUserFiles.vue +1 -1
  61. package/src/filiale/ronghao/ArrearsQuery.vue +974 -974
  62. package/src/filiale/ronghao/CardService.js +2144 -2144
  63. package/src/filiale/ronghao/InsuranceManage.vue +58 -58
  64. package/src/filiale/ronghao/MachineChargeService.js +149 -149
  65. package/src/filiale/ronghao/NoCardMeterCenter.vue +534 -534
  66. package/src/filiale/ronghao/PaymentCode.vue +174 -174
  67. package/src/filiale/ronghao/PriceChangeCompensation/CompensationManage.vue +26 -26
  68. package/src/filiale/ronghao/PriceChangeCompensation/IotCompensation.vue +318 -318
  69. package/src/filiale/ronghao/PriceChangeCompensation/JbCompensation.vue +343 -343
  70. package/src/filiale/ronghao/PriceChangeCompensation/SurplusRecordDetail.vue +74 -74
  71. package/src/filiale/ronghao/ReplaceCardManage.vue +415 -415
  72. package/src/filiale/ronghao/Upload.vue +654 -654
  73. package/src/filiale/ronghao/cardDown.vue +1141 -1141
  74. package/src/filiale/ronghao/changemeterOperate.vue +315 -315
  75. package/src/filiale/ronghao/fillgasSpecific.vue +313 -313
  76. package/src/filiale/ronghao/ic_detail/ChargeRecordQuery.vue +106 -106
  77. package/src/filiale/ronghao/ic_detail/WatchCollection.vue +115 -115
  78. package/src/filiale/ronghao/ic_detail/WebHandQueryUser.vue +411 -411
  79. package/src/filiale/ronghao/machineDown.vue +1176 -1176
  80. package/src/filiale/ronghao/replacementSingleInfoOperation.vue +315 -315
  81. package/src/filiale/ronghao/specificInformation.vue +537 -537
  82. package/src/filiale/shanggao/FileUserFiles.vue +1 -1
  83. package/src/filiale/shanxian/components/FilesManage/FileUserFiles.vue +1 -1
  84. package/src/filiale/shanxian/components/webMeter/WebMeterBatchOperationValve.vue +1 -1
  85. package/src/filiale/shaoguan/FilesManage/FileUserFiles.vue +1 -1
  86. package/src/filiale/shaoguan/Message/MessageList.vue +1 -1
  87. package/src/filiale/shexian/FilesManage/FileUserFiles.vue +1 -1
  88. package/src/filiale/wenxi/FileUserFiles.vue +1 -1
  89. package/src/filiale/wuan/FileUserFiles.vue +1 -1
  90. package/src/filiale/xinkang/WebMeterBatchOperationValve.vue +1 -1
  91. package/src/filiale/yangchun/ChargeList.vue +954 -954
  92. package/src/filiale/yangchun/EticketPrint.vue +2 -2
  93. package/src/filiale/yangchun/FilesManage/FileUserFiles.vue +1 -1
  94. package/src/filiale/yuncheng/FileManageService.js +469 -469
  95. package/src/filiale/yuncheng/changemeterListMaintain.vue +504 -504
  96. package/src/filiale/zhongsheng/BlackListList.vue +293 -293
  97. package/src/filiale/zhongsheng/FilesManage/FileUserFiles.vue +1 -1
  98. package/src/filiale/zhongyi/FileUserFiles.vue +1 -1
  99. package/src/filiale/zhongyi/HandQueryUser.vue +389 -389
  100. package/.gradle/5.2.1/fileChanges/last-build.bin +0 -0
  101. package/.gradle/5.2.1/fileHashes/fileHashes.lock +0 -0
  102. package/.gradle/5.2.1/gc.properties +0 -0
  103. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  104. package/.gradle/buildOutputCleanup/cache.properties +0 -2
  105. package/.gradle/vcs-1/gc.properties +0 -0
  106. package/src/components/FilesManage/addressts/FileUserFilests.vue +0 -671
  107. package/src/components/FilesManage/ncUserinfoList.vue +0 -315
  108. package/src/components/SellGasCharge/MeterCharge/CardDataRewrite.vue +0 -107
  109. package/src/components/SendCard/SendCardData.vue +0 -208
  110. package/src/components/accounts/accountAdd.vue +0 -276
  111. package/src/components/accounts/accountsList.vue +0 -183
  112. package/src/components/accounts/accountsManage.vue +0 -87
  113. package/src/components/common/chargeinfo/chargeinfo.vue +0 -55
  114. package/src/components/common/userinfo_detail/config/exportConfig.js +0 -85
  115. package/src/components/ncarchives/ncArchivesAdd.vue +0 -468
  116. package/src/components/ncarchives/ncArchivesList.vue +0 -159
  117. package/src/components/ncarchives/ncUserfilesList.vue +0 -373
  118. package/src/components/ncarchives/ncarchivesmanage.vue +0 -80
  119. package/src/components/revenue/IOTArrears/arrears.vue +0 -323
  120. package/src/components/revenue/IOTArrears/iotRechargeAudit.vue +0 -369
  121. package/src/components/revenue/base/rightview/carddetail/cardiotfeeChangeDetail.vue +0 -59
  122. package/src/components/revenue/base/rightview/carddetail/reduceChangeDetail.vue +0 -59
  123. package/src/components/revenue/comprehen/ComprehenOperation/BatchChange/BatchCancellationts.vue +0 -73
  124. package/src/components/revenue/comprehen/ComprehenOperation/BatchChange/BatchEnablets.vue +0 -73
  125. package/src/components/revenue/comprehen/ComprehenOperation/IcFeeDeduction/ReduceAddGas.vue +0 -199
  126. package/src/components/revenue/comprehen/ComprehenOperation/IcFeeDeduction/icdeductionManage.vue +0 -24
  127. package/src/components/revenue/comprehen/ComprehenOperation/IcFeeDeduction/icdeductionYSManage.vue +0 -24
  128. package/src/components/revenue/comprehen/ComprehenOperation/IcFeeDeduction/icfeeDeduction.vue +0 -185
  129. package/src/components/revenue/comprehen/ComprehenOperation/IcFeeDeduction/icfeeYSDeduction.vue +0 -185
  130. package/src/components/revenue/comprehen/ComprehenOperation/newchangemeter/ChangeFlowMeter.vue +0 -356
  131. package/src/components/revenue/comprehen/ComprehenOperation/newchangemeter/CorrectionMeter.vue +0 -148
  132. package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackUserList.vue +0 -136
  133. package/src/components/revenue/recordMainten/sellinggas/AddWarehousemain.vue +0 -65
  134. package/src/components/revenue/recordMainten/sellinggas/MeterOperateAdd.vue +0 -483
  135. package/src/components/revenue/recordMainten/sellinggas/MeterOperatemain.vue +0 -279
  136. package/src/components/revenue/recordMainten/sellinggas/MeterOperatemainImport.vue +0 -265
  137. package/src/components/thirdapply/thirdAdd.vue +0 -289
  138. package/src/components/thirdapply/thirdList.vue +0 -162
  139. package/src/components/thirdapply/thirdManage.vue +0 -74
  140. package/src/components/webMeter/InstructQuery.vue +0 -414
  141. package/src/components/webMeter/ParamSet/ParamSet.vue +0 -556
  142. package/src/components/webMeter/ParamSet/ParamSetForm.vue +0 -296
  143. package/src/components/webMeter/WebUserHand.vue +0 -483
  144. package/src/components/webMeter/instructionView/NewQueryInstruct.vue +0 -509
  145. package/src/components/webMeter/instructionView/NewQueryInstructMain.vue +0 -48
  146. package/src/components/webMeter/webManage/NewMeterList.vue +0 -461
  147. package/src/plugins/FileManageServicets.js +0 -214
  148. package/src/plugins/GetImg.js +0 -53
@@ -1,1026 +1,1026 @@
1
- <template>
2
- <div class="flex-row" id="machineHandManager">
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-2 form-group">
9
- <label class="font_normal_body color-red">归属起始</label>
10
- <datepicker placeholder="开始日期"
11
- style="width:60%"
12
- class="datepicker"
13
- v-model="model.startDate"
14
- condition="f_hand_date >='{} 00:00:00'"
15
- :value.sync="model.startDate"
16
- :format="'yyyy-MM-dd'"
17
- ></datepicker>
18
- </div>
19
- <div class="col-sm-2 form-group">
20
- <label class="font_normal_body color-red">归属结束</label>
21
- <datepicker placeholder="结束日期"
22
- style="width:60%"
23
- v-model="model.endDate"
24
- :value.sync="model.endDate"
25
- condition="f_hand_date <='{} 23:59:59'"
26
- :format="'yyyy-MM-dd'"
27
- ></datepicker>
28
- </div>
29
- <div class="col-sm-2 form-group">
30
- <label class="font_normal_body">客户编号</label>
31
- <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
32
- condition="f_userinfo_code='{}'" placeholder='客户编号'>
33
- </div>
34
- <div class="span" style="float:right;">
35
- <button
36
- class="button_search button_spacing" style="width:90px" @click="$parent.$parent.danhuShow()">
37
- 单户抄表
38
- </button>
39
- <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
40
- <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
41
- <export-excel
42
- :data="$parent.$parent.getCondition"
43
- :field="$parent.$parent.getfield"
44
- sqlurl="api/af-revenue/logic/saleExport" sql-name="sale_getWebHand" template-name='物联网抄表导出'
45
- :choose-col="true">
46
- </export-excel>
47
- <div
48
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
49
- @click="$parent.$parent.hidden()" class="button_spacing" style="float: right">
50
- </div>
51
- </div>
52
- </div>
53
- <div class="row" v-show="$parent.$parent.criteriaShow">
54
- <div class="col-sm-2 form-group">
55
- <label class="font_normal_body">表&emsp;&emsp;号</label>
56
- <input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
57
- condition="f_meternumber like '%{}%'" placeholder='表号'>
58
- </div>
59
- <div class="col-sm-2 form-group">
60
- <label class="font_normal_body">客户姓名</label>
61
- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
62
- placeholder='客户姓名'
63
- condition="f_user_name = '{}'">
64
- </div>
65
- <div class="col-sm-2 form-group">
66
- <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
67
- <v-select :value.sync="model.f_residential_area"
68
- class="select_list select"
69
- enter-push
70
- v-model="model.f_residential_area"
71
- style="width: 60%"
72
- multiple="true"
73
- :options='$parent.$parent.residentialArea' placeholder='选择小区'
74
- close-on-select v-el:cc>
75
- </v-select>
76
- </div>
77
- <div class="col-sm-2 form-group">
78
- <label class="font_normal_body">楼&emsp;&emsp;栋</label>
79
- <input type="text" style="width:60%" class="input_search" v-model="model.f_building"
80
- condition="f_building = '{}'" placeholder='楼栋'>
81
- </div>
82
- <div class="col-sm-2 form-group">
83
- <label class="font_normal_body">单&emsp;&emsp;元</label>
84
- <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
85
- condition="f_unit = '{}'" placeholder='单元'>
86
- </div>
87
- <div class="col-sm-2 form-group">
88
- <label class="font_normal_body">楼&emsp;&emsp;层</label>
89
- <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
90
- condition="f_floor = '{}'" placeholder='楼层'>
91
- </div>
92
- <div class="col-sm-2 form-group">
93
- <label class="font_normal_body">门&ensp;牌&ensp;号</label>
94
- <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
95
- condition="f_room like '%{}%'" placeholder='门牌号'>
96
- </div>
97
- <div class="col-sm-2 form-group">
98
- <label class="font_normal_body">客户地址</label>
99
- <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
100
- condition="f_address like '%{}%'" placeholder='客户地址'>
101
- </div>
102
- <div class="col-sm-2 form-group">
103
- <label class="font_normal_body">抄&ensp;表&ensp;员</label>
104
- <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
105
- style="width:60%"
106
- multiple="true"
107
- :options='$parent.$parent.inputtores' placeholder='抄表员'
108
- close-on-select
109
- v-el:cc></v-select>
110
- </div>
111
- <div class="col-sm-2 form-group">
112
- <label class="font_normal_body">抄表单状态</label>
113
- <v-select :value.sync="model.f_meter_state"
114
- v-model='model.f_meter_state'
115
- style="width:60%"
116
- :options='$parent.$parent.meterstates'
117
- placeholder='抄表单状态'
118
- close-on-select
119
- condition="f_meter_state = '{}'"></v-select>
120
- </div>
121
-
122
- <div class="col-sm-2 form-group">
123
- <label class="font_normal_body">客户类型</label>
124
- <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
125
- :options='$parent.$parent.usertypes' placeholder='客户类型'
126
- style="width:60%"
127
- close-on-select
128
- condition="f_user_type = '{}'"></v-select>
129
- </div>
130
-
131
- <div class="col-sm-2 form-group" style="white-space: nowrap">
132
- <label class="font_normal_body">用&ensp;气&ensp;量</label>
133
- <div class="row">
134
- <input type="text" style="width:30%" class="input_search" v-model="model.oughtamountmin"
135
- condition="f_oughtamount >= {} " placeholder="">
136
- <label class="font_normal_body"> ≤ x ≤ </label>
137
- <input type="text" style="width:30%" class="input_search" v-model="model.oughtamountmax"
138
- condition="f_oughtamount <= {} " placeholder="">
139
- </div>
140
- </div>
141
- <res-select-group :initres="$parent.$parent.initres"
142
- @re-res="$parent.$parent.getRes"
143
- :show-component="['company']"
144
- v-ref:sel>
145
- </res-select-group>
146
- </div>
147
- </div>
148
- </criteria>
149
- <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="hand_manager_grid">
150
- <template partial='head'>
151
- <tr>
152
- <th>
153
- <nobr>序号</nobr>
154
- </th>
155
- <th>
156
- <nobr>
157
- <data-order field="f_userinfo_code" name="客户编号"
158
- :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
159
- </nobr>
160
- </th>
161
- <th>
162
- <nobr>
163
- <data-order field="f_address" name="基本信息"
164
- :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
165
- </nobr>
166
- </th>
167
- <th>
168
- <nobr>所属年月</nobr>
169
- </th>
170
- <th>
171
- <nobr>表号</nobr>
172
- </th>
173
- <th>
174
- <nobr>用户电话</nobr>
175
- </th>
176
- <th>
177
- <nobr>上期底数</nobr>
178
- </th>
179
- <th>
180
- <nobr>本期底数</nobr>
181
- </th>
182
- <th>
183
- <nobr>用气量</nobr>
184
- </th>
185
- <th>
186
- <nobr>
187
- <data-order field="f_last_input_date" name="上次抄表录入日期"
188
- :order.sync="$parent.$parent.$parent.orderFields.f_last_input_date"></data-order>
189
- </nobr>
190
- </th>
191
- <th>
192
- <nobr>
193
- <data-order field="f_hand_date" name="下发日期"
194
- :order.sync="$parent.$parent.$parent.orderFields.f_hand_date"></data-order>
195
- </nobr>
196
- </th>
197
- <th>
198
- <nobr>
199
- <data-order field="f_input_date" name="抄表录入日期"
200
- :order.sync="$parent.$parent.$parent.orderFields.f_input_date"></data-order>
201
- </nobr>
202
- </th>
203
- <th>
204
- <nobr>抄表员</nobr>
205
- </th>
206
- <th>
207
- <nobr>录入人员</nobr>
208
- </th>
209
- <th>
210
- <nobr>下发人员</nobr>
211
- </th>
212
- <th>
213
- <nobr>备注</nobr>
214
- </th>
215
- <th>
216
- <nobr>附件</nobr>
217
- </th>
218
- <th>
219
- <nobr>操作</nobr>
220
- </th>
221
- <!-- f_oughtfee-->
222
- </tr>
223
- </template>
224
- <template partial='body'>
225
- <td style="text-align: center;">{{ $index + 1 }}</td>
226
- <td style="text-align: center;">{{ row.f_userinfo_code }}</td>
227
- <td style="text-align: center;">{{ row.f_user_name }}&nbsp;&nbsp;{{ row.f_address }}</td>
228
- <td style="text-align: center;">{{ row.belongmonth }}</td>
229
- <td style="text-align: center;">{{ row.f_meternumber }}</td>
230
- <td style="text-align: center;">{{ row.f_user_phone }}</td>
231
- <td style="text-align: center;">{{ row.f_last_tablebase }}</td>
232
- <td id="hand-creat" v-if="row.f_meter_state === '未抄表'" style="text-align: center;">
233
- <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
234
- 'has-success has-feedback': !row.error,
235
- 'has-error has-feedback': row.error}">
236
- <input title="可录入小数点后三位"
237
- type="text" class="input_search"
238
- v-model="row.f_tablebase"
239
- @blur="$parent.$parent.$parent.beforenter($index, row)"
240
- v-next-el="{id: $index+2}"
241
- :id="$index+1"
242
- style="width: 100px;padding: 6px;"
243
- @focus="$parent.$parent.$parent.clearError(row)"
244
- :disabled="row.state === '开始'">
245
- </div>
246
- <span v-if="row.error && row.error !== ''" style="color: #ff0000;">{{ row.error }}</span>
247
- </td>
248
- <td id="hand-creat" v-if="row.f_meter_state !== '未抄表' " style="text-align: center;">
249
- {{ row.f_tablebase }}
250
- </td>
251
- <td style="text-align: center;">{{ $parent.$parent.$parent.calculationBase(row) }}</td>
252
- <td style="text-align: center;">{{ row.f_last_input_date }}</td>
253
- <td style="text-align: center;">{{ row.f_hand_date }}</td>
254
- <td style="text-align: center;">
255
- <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
256
- 'has-success has-feedback': !row.error,
257
- 'has-error has-feedback': row.error}"
258
- v-if="row.f_meter_state === '未抄表' && $parent.$parent.$parent.jurisdiction.includes('录入日期修正')">
259
- <datepicker id="endDate" placeholder="抄表时间"
260
- v-model="row.f_input_date"
261
- :value.sync="row.f_input_date"
262
- :format="'yyyy-MM-dd HH:mm:ss'"
263
- :show-reset-button="true">
264
- </datepicker>
265
- </div>
266
- <div v-else>
267
- {{ row.f_input_date }}
268
- </div>
269
- </td>
270
- <td style="text-align: center;">{{ row.f_inputtor }}</td>
271
- <td style="text-align: center;">{{ row.f_input_person }}</td>
272
- <td style="text-align: center;">{{ row.f_operator }}</td>
273
- <td style="text-align: center;">{{ row.f_comments }}</td>
274
- <td style="text-align: center;"><nobr>
275
- <button v-if="row.f_notified_path" class="btn btn-link" @click.stop="$parent.$parent.$parent.imgShow(row.f_notified_path)">图像识别</button>
276
- <button v-if="row.f_notified2_path" class="btn btn-link" @click.stop="$parent.$parent.$parent.imgShow(row.f_notified2_path)">图像识别2</button>
277
- <button v-if="row.f_notified_paths" class="btn btn-link"
278
- @click.stop="$parent.$parent.$parent.handImgListShow(row.f_notified_paths)">图像展示</button>
279
- </nobr></td>
280
- <td style="text-align: center;">
281
- <nobr>
282
- <button type="button" name="button" class="button_search button_spacing width-60"
283
- v-if="row.f_meter_state === '已抄表' && (row.id == row.maxid || !row.maxid)"
284
- @click.stop="$parent.$parent.$parent.cancelAuditHand(row)">撤销
285
- </button>
286
- <button type="button" name="button" class="btn btn-danger"
287
- v-if="row.f_meter_state === '未抄表'"
288
- @click.stop="$parent.$parent.$parent.delectHand(row)">
289
- 删除
290
- </button>
291
- </nobr>
292
- </td>
293
- </template>
294
- </data-grid>
295
- </criteria-paged>
296
- <table class="table-hover">
297
- <tr style="position: relative" class="table-bordered">
298
- <td
299
- style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
300
- 汇总信息
301
- </td>
302
- <td
303
- style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
304
- 用气量:&emsp;{{ sumsmodel.f_oughtamount }}
305
- </td>
306
- </tr>
307
- </table>
308
- </div>
309
- <modal :show.sync="danhu.show" :title='danhutitle' backdrop="false" coverstyle="danhumodal">
310
- <article slot="modal-body" class="modal-body">
311
- <div class="panel panel-primary datapanel">
312
- <div class="row">
313
- <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">客户姓名:{{danhu.info.f_user_name}}</label>
314
- <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">客户编号:{{danhu.info.f_userinfo_code}}</label>
315
- <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">用户证号:{{danhu.info.f_book_no}}</label>
316
- <label class="control-label col-sm-12 flex-row" style="transform: translate(0,8px)">客户地址:{{danhu.info.f_address}}</label>
317
- <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">上次抄表日期:{{danhu.info.f_input_date}}</label>
318
- <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">上期底数:{{danhu.info.f_last_tablebase}}</label>
319
- <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">本期用量:{{f_current_usage}}</label>
320
- </div>
321
- </div>
322
- <div class="panel panel-primary datapanel">
323
- <div class="row">
324
- <div class="col-sm-6 flex-row" style="margin-top: 2px">
325
- <label for="danhucode" class="control-label" style="transform: translate(0,8px)">客户编号</label>
326
- <input id="danhucode" type="text" class="input_search " style="width: 60% !important;"
327
- v-model="danhu.f_userinfo_code" v-ref:danhucode @keyup.enter.stop="danhuCodeSearch"
328
- placeholder='客户编号'/>
329
- </div>
330
- <div class="col-sm-6 flex-row" style="margin-top: 2px">
331
- <label for="danhubase" class="control-label" style="transform: translate(0,8px)">本期底数</label>
332
- <input id="danhubase" type="number" class="input_search " style="width: 60% !important;"
333
- v-model="danhu.f_new_tablebase" @keyup.enter.stop="downAndHand"
334
- @blur="tableBaseBlur"
335
- placeholder='本期底数'/>
336
- </div>
337
- </div>
338
- </div>
339
- <upload :blodid="row.f_userinfo_id" v-if="config.showupload" isremark="true" fusetype="物联网表收费"></upload>
340
- </article>
341
- <footer slot="modal-footer">
342
- </footer>
343
- </modal>
344
- <modal :show.sync="imgshow" v-ref:modal backdrop="true" coverstyle="modalContentRight">
345
- <header slot="modal-header" class="modal-header">
346
- 抄表图像识别照片
347
- </header>
348
- <article slot="modal-body" class="modal-body">
349
- <div class="from-group">
350
- <img-self :src="imgfilename" :width="750" :height="750"></img-self>
351
- </div>
352
- </article>
353
- <footer slot="modal-footer" class="modal-footer">
354
- <button type="button" class="btn btn-success" @click='imgclose'>关闭</button>
355
- </footer>
356
- </modal>
357
- <modal :show.sync="imgListShow" v-ref:modal backdrop="true" coverstyle="modalContentRight">
358
- <header slot="modal-header" class="modal-header">
359
- 抄表图像识别照片
360
- </header>
361
- <article slot="modal-body" class="modal-body">
362
- <div class="from-group" v-for="img in images">
363
- <img-self :src="`/singlepage/rs/image/file/` + img" :width="250" :height="250"></img-self>
364
- </div>
365
- </article>
366
- <footer slot="modal-footer" class="modal-footer">
367
- <button type="button" class="btn btn-success" @click='imgListClose'>关闭</button>
368
- </footer>
369
- </modal>
370
- </div>
371
- </template>
372
- <script>
373
- import {PagedList, HttpResetClass} from 'vue-client'
374
- import Vue from 'vue'
375
-
376
- let readyGen = async function (self) {
377
- self.getfield = self.config.excelHeaders
378
- self.sumsmodel = self.$refs.paged.$refs.grid.model.sums
379
- self.reflash()
380
- }
381
-
382
- export default {
383
- title: '物联网表抄表',
384
- data () {
385
- return {
386
- priceModel: false,
387
- initres: {
388
- org: [this.$login.f.orgid],
389
- dep: [],
390
- user: []
391
- },
392
- sumsmodel: [],
393
- orgCondtionStr: '',
394
- deletestate: false,
395
- criteriaShow: false,
396
- imgshow: false,
397
- imgListShow: false,
398
- images: [],
399
- imgfilename: '',
400
- model: new PagedList('api/af-revenue/sql/sale_getWebHand', 50, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'f_hand_date desc'`}, {
401
- f_oughtamount: 0
402
- }),
403
- config: {
404
- // 导出列要和查询列相同
405
- excelHeaders: {
406
- 'f_user_id': '表编号',
407
- 'f_meternumber': '表号',
408
- 'f_inputtor': '抄表员',
409
- 'f_last_input_date': '上次抄表时间',
410
- 'f_input_date': '抄表日期',
411
- 'f_userinfo_code': '客户编号',
412
- 'f_address': '客户地址',
413
- 'f_residential_area': '小区名称',
414
- 'f_user_name': '客户姓名',
415
- 'f_last_tablebase': '上期底数',
416
- 'f_tablebase': '本期指数',
417
- 'f_oughtamount': '应交气量',
418
- 'f_input_person': '录入人员',
419
- 'f_meter_classify': '气表分类',
420
- 'f_meter_style': '气表型号',
421
- 'f_user_phone': '客户电话',
422
- 'f_comments': '备注'
423
- },
424
- examine: true,
425
- customCal: false
426
- },
427
- meter_state: false, // 是否显示计划下发按钮
428
- downModel: {
429
- downDate: Vue.$login.toStandardTimeString(),
430
- downWay: 'downWithUserfiles',
431
- downInputtor: []
432
- },
433
- inputtorModel: {
434
- inputtor: [],
435
- reason: ''
436
- },
437
- f_current_usage: '',
438
- auditState: [{label: '全部', value: ''}, {label: '未抄表', value: '未抄表'}, {
439
- label: '待审核',
440
- value: '待审核'
441
- }, {label: '已抄表', value: '已抄表'}],
442
-
443
- plans: [], // 记录当前行是否被勾选
444
- all: false, // 是否全选
445
- show: false, // 下发日期模态框显示
446
- unhandplan: [], // 之前是否有未抄表记录
447
- downConfirm: false, // 下发若有未抄记录,确认框
448
- uploadshow: false,
449
- // 小区
450
- residentialArea: [],
451
-
452
- // downDate: this.$login.toStandardYearMonth().replace("-", ""),
453
- msg: '',
454
- condition: '',
455
- orderDefault: 'f_hand_date',
456
- orderFields: {
457
- f_userinfo_id: 'no'
458
- },
459
- getfield: {},
460
- outlet: '',
461
- filiale: '',
462
- condition2: '',
463
- area: [],
464
- inputtouPerson: [],
465
- meters: [{label: '全部', value: ''}, {label: '机表', value: '机表'}, {label: '物联网表', value: '物联网表'}],
466
- resultstate: this.$appdata.getParam('抄表结果状态'),
467
- meterstates: [{label: '全部', value: ''}, {label: '未抄表', value: '未抄表'}, {label: '已抄表', value: '已抄表'}],
468
- usertypes: this.$appdata.getParam('客户类型') ? [{
469
- label: '全部',
470
- value: ''
471
- }, ...this.$appdata.getParam('客户类型')] : [],
472
- splitdata: '',
473
- f_filialeid: this.$login.f.orgid,
474
- meterbooks: [],
475
- upshow: false,
476
- inputid: 0,
477
- examineshow: false,
478
- examinerow: null,
479
- showfiles: false,
480
- uploadText: '抄表',
481
- examinetype: false,
482
- danhu: {
483
- show: false,
484
- f_userinfo_code: '',
485
- f_new_tablebase: '',
486
- info: {}
487
- },
488
- showerr: false,
489
- err: '',
490
- // 请求对象(批量导入,查询进度使用)
491
- HttpReset: new HttpResetClass(),
492
- row: null,
493
- // 应抄底数
494
- should_base: 0,
495
- // 计算公式
496
- designFormulas: null
497
- }
498
- },
499
- ready () {
500
- this.getaddress()
501
- readyGen(this)
502
- },
503
- mounted () {
504
- console.log(this.inputid)
505
- document.getElementById(this.inputid).focus()
506
- },
507
- methods: {
508
- tableBaseBlur () {
509
- if (this.danhu.f_new_tablebase) {
510
- this.f_current_usage = (this.danhu.f_new_tablebase - 0) - (this.danhu.info.f_last_tablebase - 0)
511
- }
512
- },
513
- handImgListShow (images) {
514
- this.imgListShow = true
515
- this.images = JSON.parse(images)
516
- },
517
- imgListClose () {
518
- this.imgListShow = false
519
- },
520
- imgclose () {
521
- this.imgshow = false
522
- },
523
- getFileName(fullPath) {
524
- if (!fullPath) return '';
525
- let url = fullPath.split('?')[0]; // 去除?后参数
526
- return url.substring(url.lastIndexOf('/') + 1); // 截取最后一段
527
- },
528
- imgShow (val) {
529
- this.imgfilename = `/rs/image/file/` + val
530
- this.imgshow = true
531
- },
532
- async danhuCodeSearch () {
533
- this.danhu.f_userinfo_code = this.danhu.f_userinfo_code.replace(/(^\s*)|(\s*$)/g, '')
534
- await this.$resetpost('api/af-revenue/sql/sale_getWebHandDanHu', {
535
- data: {
536
- f_userinfo_code: this.danhu.f_userinfo_code,
537
- f_orgid: this.f_filialeid
538
- }
539
- },
540
- {resolveMsg: null, rejectMsg: '查询用户信息失败,网络错误'}).then(res => {
541
- if (res.data.length !== 1) {
542
- this.$showAlert(res.data.length === 0 ? '没有查询到用户' : '查询到多条用户信息', 'warning', 3000)
543
- return
544
- }
545
- if (res.data[0].f_meter_state === '未抄表') {
546
- this.$showAlert('该用户有未抄表记录', 'warning', 3000)
547
- return
548
- }
549
- this.danhu.info = res.data[0]
550
- document.getElementById('danhubase').focus()
551
- })
552
- },
553
- calculationBase (row) {
554
- let oughtamount = null
555
- if (row.f_tablebase) {
556
- if (row.f_share_gas) {
557
- oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(4) + (row.f_share_gas > 0 ? '+' : '') + row.f_share_gas.toFixed(3)
558
- } else {
559
- if (row.f_capacity && row.f_capacity > 0 && row.f_tablebase < row.f_last_tablebase) {
560
- oughtamount = (row.f_tablebase - 0 + (row.f_capacity - row.f_last_tablebase)).toFixed(3)
561
- } else {
562
- oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(3)
563
- }
564
- }
565
- } else {
566
- oughtamount = 0
567
- }
568
- row.f_oughtamount = oughtamount
569
- return oughtamount
570
- },
571
- cancelHand (row) {
572
- if (this.config.examine) {
573
- let handdate = new Date(row.f_hand_date)
574
- let ima = new Date()
575
- if (handdate.getMonth() == ima.getMonth()) {
576
- this.cancelHand3(row)
577
- } else {
578
- if (!this.$login.r.find(value => value == '抄表隔月冲正')) {
579
- this.$showMessage('当前登录用户没有【抄表隔月冲正】权限, 请联系管理员!')
580
- } else {
581
- this.cancelHand3(row)
582
- }
583
- }
584
- } else {
585
- this.cancelHand3(row)
586
- }
587
- },
588
- cancelAuditHand (row) {
589
- let param = {
590
- f_hand_id: row.id,
591
- operInfo: {
592
- f_operator: this.$login.f.name,
593
- f_operatorid: this.$login.f.id,
594
- f_orgid: this.$login.f.orgid,
595
- f_orgname: this.$login.f.orgs,
596
- f_depid: this.$login.f.depids,
597
- f_depname: this.$login.f.deps
598
- }
599
- }
600
- let url = 'api/af-revenue/logic/sale_webHandCancel'
601
- this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
602
- this.search()
603
- this.close()
604
- })
605
- },
606
- // 单户抄表
607
- async downAndHand () {
608
- if (!this.danhu.info.f_userinfo_code || this.danhu.info.f_userinfo_code === '') {
609
- this.$showAlert(`请先查询用户信息`, 'warning', 2000)
610
- return
611
- }
612
- if (this.danhu.f_new_tablebase < 0) {
613
- this.$showAlert(`底数不能小于0,请注意!`, 'warning', 2000)
614
- return
615
- } else if (this.danhu.f_new_tablebase.toString().split('.').length > 1 && this.danhu.f_new_tablebase.toString().split('.')[1].length > 3) {
616
- this.$showAlert(`底数最多只能输入小数点后3位,请注意!`, 'warning', 2000)
617
- return
618
- } else if (this.danhu.f_new_tablebase < this.danhu.info.f_tablebase && !this.danhu.info.f_capacity) {
619
- this.$showAlert(`本期表底数不能低于上期表底数`, 'warning', 2000)
620
- return
621
- }
622
- this.danhu.info.f_hand_date = this.$login.toStandardTimeString()
623
- this.danhu.info.f_meter_source = '单户抄表'
624
- this.danhu.info.f_operatorid = this.$login.f.id
625
- this.danhu.info.f_operator = this.$login.f.name
626
- this.danhu.info.f_inputtor = this.$login.f.name
627
- this.danhu.info.f_orgid = this.$login.f.orgid
628
- this.danhu.info.f_orgname = this.$login.f.orgs
629
- this.danhu.info.f_depid = this.$login.f.depids
630
- this.danhu.info.f_depname = this.$login.f.deps
631
- this.danhu.info.f_input_person = this.$login.f.name
632
- this.danhu.info.f_new_tablebase = this.danhu.f_new_tablebase
633
- this.$resetpost('api/af-revenue/logic/sale_webHandEnter', {data: this.danhu.info}, {
634
- resolveMsg: null,
635
- rejectMsg: null
636
- }).then((res) => {
637
- this.$showAlert(`单户抄表成功!`, 'success', 2000)
638
- this.danhuShow()
639
- }).catch((error) => {
640
- this.danhu.show = false
641
- this.$showAlert(`抄表失败,请注意查看,失败原因:` + JSON.toString(error), 'danger', 2000)
642
- })
643
- },
644
- danhuShow () {
645
- this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
646
- this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
647
- this.downModel.downDate = this.$login.toStandardTimeString()
648
- this.danhu = {
649
- show: true,
650
- f_userinfo_code: '',
651
- f_new_tablebase: '',
652
- info: {}
653
- }
654
- this.f_current_usage = ''
655
- setTimeout(() => {
656
- document.getElementById('danhucode').focus()
657
- this.$refs.paged.$refs.criteria.search()
658
- }, 100)
659
- },
660
- paycodefocus () {
661
- this.$nextTick(() => {
662
- this.$els.paycode.focus()
663
- })
664
- },
665
- getRes (obj) {
666
- this.orgCondtionStr = obj
667
- },
668
- async getaddress () {
669
- console.log('开始获取小区')
670
- let HttpReset = new HttpResetClass()
671
- var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
672
- data: {
673
- condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
674
- }
675
- }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
676
- console.log('小区', data)
677
- let house = []
678
- house.push()
679
- for (let row of data.data) {
680
- console.log('开始保存小区')
681
- house.push({label: row.f_residential_area, value: row.f_residential_area})
682
- }
683
- this.residentialArea = house
684
- },
685
- hidden () {
686
- this.criteriaShow = !this.criteriaShow
687
- },
688
- clear () {
689
- Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
690
- this.$refs.paged.$refs.criteria.model[key] = []
691
- })
692
- },
693
- search () {
694
- // 查询前清空选择项
695
- this.plans = []
696
- this.$refs.paged.$refs.criteria.search()
697
- },
698
- selfSearch (args) {
699
- this.meter_state = args.condition.includes('未下发')
700
- this.inputtor_change = args.condition.includes('未抄表')
701
- console.log('=====抄表1====', args.condition.includes('未抄表'))
702
- console.log('=====抄表1====', this.deletestate)
703
- if (args.condition.includes('未抄表')) {
704
- this.deletestate = true
705
- } else {
706
- this.deletestate = false
707
- }
708
- console.log('=====抄表1====', this.deletestate)
709
- if (!this.orgCondtionStr) {
710
- args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
711
- } else {
712
- args.condition = `${args.condition}` + this.orgCondtionStr
713
- }
714
-
715
- // 抄表员查询条件
716
- this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
717
- if (this.inputtouPerson.length !== 0) {
718
- let str = JSON.stringify(this.inputtouPerson)
719
- str = str.replace(/"/g, `'`)
720
- str = str.replace(/\[/g, ``)
721
- str = str.replace(/\]/g, ``)
722
- console.log('=====抄表员model22222222222绑定====', str)
723
- // 查询多个抄表员时条件
724
- args.condition += ` and f_inputtor in ( ${str} )`
725
- }
726
- // 小区查询条件
727
- this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
728
- console.log('=====小区model绑定====', this.area)
729
- if (this.area.length !== 0) {
730
- let str = JSON.stringify(this.area)
731
- str = str.replace(/"/g, `'`)
732
- str = str.replace(/\[/g, ``)
733
- str = str.replace(/\]/g, ``)
734
- console.log('=====小区model22222222222绑定====', str)
735
- // 查询多个小区时条件
736
- args.condition += ` and f_residential_area in ( ${str} )`
737
- }
738
-
739
- if (args.model.f_meter_brand && args.model.f_meter_brand.length > 0) {
740
- if (args.model.f_meter_brand[0].f_meter_brand) {
741
- args.condition = `${args.condition} and f_meter_brand = '${args.model.f_meter_brand[0].f_meter_brand}'`
742
- }
743
- }
744
- this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
745
- this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
746
- this.condition2 = args.condition
747
- console.log('selfsearch..', args.condition, this.model)
748
- this.model.search(args.condition, this.model)
749
- },
750
- reflash () {
751
- this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
752
- this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0]
753
- this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1]
754
- this.search()
755
- },
756
- beforenter (index, row) {
757
- this.inputid = index + 1
758
- // 限制本次抄表不能低于上次
759
- if (row.f_tablebase) {
760
- if (row.f_tablebase < 0) {
761
- row.state = '失败'
762
- Vue.set(row, 'error', '底数不能小于0')
763
- this.speckText('底数不能小于0,请注意!')
764
- } else if (this.danhu.f_new_tablebase.toString().split('.').length > 1 && this.danhu.f_new_tablebase.toString().split('.')[1].length > 3) {
765
- row.state = '失败'
766
- Vue.set(row, 'error', '底数最多只能输入小数点后3位')
767
- this.speckText('底数最多只能输入小数点后3位,请注意!')
768
- } else if (row.f_tablebase < row.f_last_tablebase && !row.f_capacity) {
769
- row.state = '失败'
770
- Vue.set(row, 'error', '本期表底数不能低于上期表底数')
771
- this.speckText('本期表底数不能低于上期表底数,请注意!')
772
- } else {
773
- if (row.f_tablebase < row.f_last_tablebase) {
774
- this.$showMessage('本次抄表已超越最大量程, 请熟知!')
775
- }
776
- // 抄表结果状态没选默认给正常
777
- row.f_result_state = row.f_result_state ? row.f_result_state : '正常'
778
- this.enter(index, row)
779
- }
780
- }
781
- },
782
- enter (index, row) {
783
- console.log('录入数据。..', row)
784
- let f_input_date = Vue.$login.toStandardTimeString()
785
- let handplan = {
786
- id: row.id,
787
- f_oughtamount: row.f_oughtamount,
788
- f_tablebase: row.f_tablebase,
789
- f_hand_date: f_input_date,
790
- f_input_date: f_input_date,
791
- f_input_person: Vue.$login.f.name,
792
- f_meter_state: '已抄表',
793
- f_meter_source: '手动录入',
794
- f_operator: Vue.$login.f.name,
795
- f_operatorid: Vue.$login.f.id,
796
- f_orgid: Vue.$login.f.orgid,
797
- f_orgname: Vue.$login.f.orgs,
798
- f_depid: Vue.$login.f.depids,
799
- f_depname: Vue.$login.f.deps
800
- }
801
- console.log('抄表负数。。0', handplan)
802
- this.$resetpost('api/af-revenue/entity/save/t_web_hand_plan_record', handplan, {
803
- resolveMsg: null,
804
- rejectMsg: '抄表数据保存出错!!!'
805
- }).then((res) => {
806
- row.f_meter_state = '已抄表'
807
- row.f_input_date = f_input_date
808
- let sql = `update t_userfiles set f_web_meter_base = ${row.f_tablebase},version = version + 1 where f_userfiles_id = '${row.f_userfiles_id}' `
809
- this.$resetpost('api/af-revenue/logic/runSQL', { sql: sql })
810
- }).catch((error) => {
811
- row.state = '失败'
812
- Vue.set(row, 'error', JSON.stringify(error))
813
- this.speckText('抄表录入出错,请注意!')
814
- })
815
- },
816
- clearError (row) {
817
- if (row.f_tablebase === 0) {
818
- row.f_tablebase = ''
819
- }
820
- Vue.set(row, 'error', null)
821
- },
822
- async speckText (str) {
823
- var url = 'http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=6&text=' + encodeURI(str)
824
- await new Audio(url).play()
825
- this.err = str
826
- this.showerr = true
827
- this.paycodefocus()
828
- },
829
- closeerr () {
830
- this.showerr = false
831
- },
832
- // 删除这条计划
833
- delectHand (row) {
834
- let sql = `update t_web_hand_plan_record set f_hand_state = '无效' where id = '${row.id}' `
835
- this.$resetpost('api/af-revenue/logic/runSQL', { sql: sql }).then((res) => {
836
- this.search()
837
- })
838
- },
839
- cancelHand3 (row) {
840
- // 抄表加入权限
841
- if (!this.$login.r.find(value => value == '机表抄表冲正')) {
842
- this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
843
- return
844
- }
845
- // console.log('抄表冲正。、。。、', row)
846
- let param = {
847
- f_hand_id: row.id,
848
- operInfo: {
849
- f_operator: this.$login.f.name,
850
- f_operatorid: this.$login.f.id,
851
- f_orgid: this.$login.f.orgid,
852
- f_orgname: this.$login.f.orgs,
853
- f_depid: this.$login.f.depids,
854
- f_depname: this.$login.f.deps
855
- }
856
- }
857
- let url = 'api/af-revenue/logic/sale_commonEnterCancel'
858
- this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
859
- this.search()
860
- this.close()
861
- })
862
- },
863
- // 关闭下发计划得弹出框
864
- close () {
865
- this.show = false
866
- this.inputtor_show = false
867
- this.downConfirm = false
868
- this.examineshow = false
869
- this.examinetype = false
870
- this.detailsShow = false
871
- this.priceModel = false
872
- // 初始化模态框数据
873
- this.initModal()
874
- if (this.uploadshow) {
875
- this.uploadshow = false
876
- // 讲选的文件清空
877
- this.$refs.file.$el.querySelector('input').value = ''
878
- }
879
- },
880
- initModal () {
881
- this.downModel = {
882
- downDate: Vue.$login.toStandardDateString(),
883
- downWay: 'downWithUserfiles',
884
- downInputtor: []
885
- }
886
- this.inputtorModel = {
887
- inputtor: [],
888
- reason: ''
889
- }
890
- },
891
- // 判断当前登陆人是不是子公司的人员
892
- isHead () {
893
- return this.$login.f.parent.parent.name.includes('统一资源管理')
894
- },
895
- sort (field, rule) {
896
- // 将所有排序方式设为不排序,实现相互排斥
897
- for (let key in this.orderFields) {
898
- if (key === field) {
899
- this.orderFields[key] = rule
900
- } else {
901
- this.orderFields[key] = 'no'
902
- }
903
- }
904
- // 如果新规则不排序,还原为默认排序
905
- if (rule === 'no') {
906
- this.model.paramSource.orderitem = `'${this.orderDefault}'`
907
- } else {
908
- this.model.paramSource.orderitem = `'${field} ${rule}'`
909
- }
910
- this.search()
911
- }
912
- },
913
- watch: {
914
- 'detailsShow' (val) {
915
- if (!val) {
916
- this.should_base = 0
917
- this.designFormulas = null
918
- }
919
- }
920
- },
921
- computed: {
922
- danhutitle () {
923
- return '单户抄表 当前计划年月:' + this.downModel.downDate
924
- },
925
- getCondition () {
926
- return {
927
- startDate: this.$refs.paged.$refs.criteria.model.startDate,
928
- endDate: this.$refs.paged.$refs.criteria.model.endDate,
929
- orderitem: this.orderDefault ? this.orderDefault : 'id',
930
- condition: this.condition2
931
- }
932
- },
933
- inputtores () {
934
- // 获取抄表员
935
- console.log('获取抄表员', this.$login.f)
936
- let rs = []
937
- if (this.$login.f.f_gasman.length > 0) {
938
- for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
939
- let temp = {
940
- label: this.$login.f.f_gasman[i].name,
941
- value: this.$login.f.f_gasman[i].name
942
- }
943
- rs.push(temp)
944
- }
945
- }
946
- this.inputtores2 = rs
947
- return [...rs]
948
- },
949
- // 界面细节权限
950
- jurisdiction () {
951
- console.log('抄表界面细节', this.$login.r)
952
- return this.$login.r ? this.$login.r : []
953
- }
954
- },
955
- events: {
956
- dblclick: function (row, index) {
957
- this.row = row
958
- this.detailsShow = true
959
- },
960
- // 删除Resid数组元素
961
- 'delResid' (val) {
962
- this.resid.$remove({id: val, f_biobid: ''})
963
- },
964
- // 增加Resid数组元素
965
- 'resid' (val) {
966
- console.log('-=', val)
967
- this.resid.push({id: val, f_biobid: ''})
968
- }
969
- }
970
- }
971
- </script>
972
- <style lang="less">
973
- #handManager {
974
- display: flex;
975
- justify-content: space-around;
976
- align-items: center;
977
-
978
- .btn {
979
- margin: 0px;
980
- }
981
-
982
- .hand-loading {
983
- border: 3px solid #ccc;
984
- border-right-color: #337ab7;
985
- border-radius: 50%;
986
- animation: spin 0.6s linear;
987
- position: absolute;
988
- animation-iteration-count: infinite;
989
- top: 0;
990
- right: 50%;
991
- z-index: 2;
992
- display: block;
993
- width: 28px;
994
- height: 28px;
995
- line-height: 28px;
996
- text-align: center;
997
- pointer-events: none;
998
- }
999
-
1000
- @keyframes spin {
1001
- 100% {
1002
- transform: rotate(360deg);
1003
- }
1004
- }
1005
-
1006
- .detail-panel {
1007
- text-align: center;
1008
- color: #31708f;
1009
- background-color: #e8f1f9;
1010
- border-color: #F2F6FA;
1011
- }
1012
- }
1013
-
1014
- #hand_manager_grid {
1015
- thead {
1016
- position: relative;
1017
- z-index: 2;
1018
- }
1019
- }
1020
-
1021
- #machineHandManager {
1022
- .color-red {
1023
- color: red;
1024
- }
1025
- }
1026
- </style>
1
+ <template>
2
+ <div class="flex-row" id="machineHandManager">
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-2 form-group">
9
+ <label class="font_normal_body color-red">归属起始</label>
10
+ <datepicker placeholder="开始日期"
11
+ style="width:60%"
12
+ class="datepicker"
13
+ v-model="model.startDate"
14
+ condition="f_hand_date >='{}'"
15
+ :value.sync="model.startDate"
16
+ :format="'yyyy-MM-dd 00:00:00'"
17
+ ></datepicker>
18
+ </div>
19
+ <div class="col-sm-2 form-group">
20
+ <label class="font_normal_body color-red">归属结束</label>
21
+ <datepicker placeholder="结束日期"
22
+ style="width:60%"
23
+ v-model="model.endDate"
24
+ :value.sync="model.endDate"
25
+ condition="f_hand_date <='{}'"
26
+ :format="'yyyy-MM-dd 23:59:59'"
27
+ ></datepicker>
28
+ </div>
29
+ <div class="col-sm-2 form-group">
30
+ <label class="font_normal_body">客户编号</label>
31
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
32
+ condition="f_userinfo_code='{}'" placeholder='客户编号'>
33
+ </div>
34
+ <div class="span" style="float:right;">
35
+ <button
36
+ class="button_search button_spacing" style="width:90px" @click="$parent.$parent.danhuShow()">
37
+ 单户抄表
38
+ </button>
39
+ <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
40
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
41
+ <export-excel
42
+ :data="$parent.$parent.getCondition"
43
+ :field="$parent.$parent.getfield"
44
+ sqlurl="api/af-revenue/logic/saleExport" sql-name="sale_getWebHand" template-name='物联网抄表导出'
45
+ :choose-col="true">
46
+ </export-excel>
47
+ <div
48
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
49
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right">
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <div class="row" v-show="$parent.$parent.criteriaShow">
54
+ <div class="col-sm-2 form-group">
55
+ <label class="font_normal_body">表&emsp;&emsp;号</label>
56
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
57
+ condition="f_meternumber like '%{}%'" placeholder='表号'>
58
+ </div>
59
+ <div class="col-sm-2 form-group">
60
+ <label class="font_normal_body">客户姓名</label>
61
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
62
+ placeholder='客户姓名'
63
+ condition="f_user_name = '{}'">
64
+ </div>
65
+ <div class="col-sm-2 form-group">
66
+ <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
67
+ <v-select :value.sync="model.f_residential_area"
68
+ class="select_list select"
69
+ enter-push
70
+ v-model="model.f_residential_area"
71
+ style="width: 60%"
72
+ multiple="true"
73
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
74
+ close-on-select v-el:cc>
75
+ </v-select>
76
+ </div>
77
+ <div class="col-sm-2 form-group">
78
+ <label class="font_normal_body">楼&emsp;&emsp;栋</label>
79
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_building"
80
+ condition="f_building = '{}'" placeholder='楼栋'>
81
+ </div>
82
+ <div class="col-sm-2 form-group">
83
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
84
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
85
+ condition="f_unit = '{}'" placeholder='单元'>
86
+ </div>
87
+ <div class="col-sm-2 form-group">
88
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
89
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
90
+ condition="f_floor = '{}'" placeholder='楼层'>
91
+ </div>
92
+ <div class="col-sm-2 form-group">
93
+ <label class="font_normal_body">门&ensp;牌&ensp;号</label>
94
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
95
+ condition="f_room like '%{}%'" placeholder='门牌号'>
96
+ </div>
97
+ <div class="col-sm-2 form-group">
98
+ <label class="font_normal_body">客户地址</label>
99
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
100
+ condition="f_address like '%{}%'" placeholder='客户地址'>
101
+ </div>
102
+ <div class="col-sm-2 form-group">
103
+ <label class="font_normal_body">抄&ensp;表&ensp;员</label>
104
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
105
+ style="width:60%"
106
+ multiple="true"
107
+ :options='$parent.$parent.inputtores' placeholder='抄表员'
108
+ close-on-select
109
+ v-el:cc></v-select>
110
+ </div>
111
+ <div class="col-sm-2 form-group">
112
+ <label class="font_normal_body">抄表单状态</label>
113
+ <v-select :value.sync="model.f_meter_state"
114
+ v-model='model.f_meter_state'
115
+ style="width:60%"
116
+ :options='$parent.$parent.meterstates'
117
+ placeholder='抄表单状态'
118
+ close-on-select
119
+ condition="f_meter_state = '{}'"></v-select>
120
+ </div>
121
+
122
+ <div class="col-sm-2 form-group">
123
+ <label class="font_normal_body">客户类型</label>
124
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
125
+ :options='$parent.$parent.usertypes' placeholder='客户类型'
126
+ style="width:60%"
127
+ close-on-select
128
+ condition="f_user_type = '{}'"></v-select>
129
+ </div>
130
+
131
+ <div class="col-sm-2 form-group" style="white-space: nowrap">
132
+ <label class="font_normal_body">用&ensp;气&ensp;量</label>
133
+ <div class="row">
134
+ <input type="text" style="width:30%" class="input_search" v-model="model.oughtamountmin"
135
+ condition="f_oughtamount >= {} " placeholder="">
136
+ <label class="font_normal_body"> ≤ x ≤ </label>
137
+ <input type="text" style="width:30%" class="input_search" v-model="model.oughtamountmax"
138
+ condition="f_oughtamount <= {} " placeholder="">
139
+ </div>
140
+ </div>
141
+ <res-select-group :initres="$parent.$parent.initres"
142
+ @re-res="$parent.$parent.getRes"
143
+ :show-component="['company']"
144
+ v-ref:sel>
145
+ </res-select-group>
146
+ </div>
147
+ </div>
148
+ </criteria>
149
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="hand_manager_grid">
150
+ <template partial='head'>
151
+ <tr>
152
+ <th>
153
+ <nobr>序号</nobr>
154
+ </th>
155
+ <th>
156
+ <nobr>
157
+ <data-order field="f_userinfo_code" name="客户编号"
158
+ :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
159
+ </nobr>
160
+ </th>
161
+ <th>
162
+ <nobr>
163
+ <data-order field="f_address" name="基本信息"
164
+ :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
165
+ </nobr>
166
+ </th>
167
+ <th>
168
+ <nobr>所属年月</nobr>
169
+ </th>
170
+ <th>
171
+ <nobr>表号</nobr>
172
+ </th>
173
+ <th>
174
+ <nobr>用户电话</nobr>
175
+ </th>
176
+ <th>
177
+ <nobr>上期底数</nobr>
178
+ </th>
179
+ <th>
180
+ <nobr>本期底数</nobr>
181
+ </th>
182
+ <th>
183
+ <nobr>用气量</nobr>
184
+ </th>
185
+ <th>
186
+ <nobr>
187
+ <data-order field="f_last_input_date" name="上次抄表录入日期"
188
+ :order.sync="$parent.$parent.$parent.orderFields.f_last_input_date"></data-order>
189
+ </nobr>
190
+ </th>
191
+ <th>
192
+ <nobr>
193
+ <data-order field="f_hand_date" name="下发日期"
194
+ :order.sync="$parent.$parent.$parent.orderFields.f_hand_date"></data-order>
195
+ </nobr>
196
+ </th>
197
+ <th>
198
+ <nobr>
199
+ <data-order field="f_input_date" name="抄表录入日期"
200
+ :order.sync="$parent.$parent.$parent.orderFields.f_input_date"></data-order>
201
+ </nobr>
202
+ </th>
203
+ <th>
204
+ <nobr>抄表员</nobr>
205
+ </th>
206
+ <th>
207
+ <nobr>录入人员</nobr>
208
+ </th>
209
+ <th>
210
+ <nobr>下发人员</nobr>
211
+ </th>
212
+ <th>
213
+ <nobr>备注</nobr>
214
+ </th>
215
+ <th>
216
+ <nobr>附件</nobr>
217
+ </th>
218
+ <th>
219
+ <nobr>操作</nobr>
220
+ </th>
221
+ <!-- f_oughtfee-->
222
+ </tr>
223
+ </template>
224
+ <template partial='body'>
225
+ <td style="text-align: center;">{{ $index + 1 }}</td>
226
+ <td style="text-align: center;">{{ row.f_userinfo_code }}</td>
227
+ <td style="text-align: center;">{{ row.f_user_name }}&nbsp;&nbsp;{{ row.f_address }}</td>
228
+ <td style="text-align: center;">{{ row.belongmonth }}</td>
229
+ <td style="text-align: center;">{{ row.f_meternumber }}</td>
230
+ <td style="text-align: center;">{{ row.f_user_phone }}</td>
231
+ <td style="text-align: center;">{{ row.f_last_tablebase }}</td>
232
+ <td id="hand-creat" v-if="row.f_meter_state === '未抄表'" style="text-align: center;">
233
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
234
+ 'has-success has-feedback': !row.error,
235
+ 'has-error has-feedback': row.error}">
236
+ <input title="可录入小数点后三位"
237
+ type="text" class="input_search"
238
+ v-model="row.f_tablebase"
239
+ @blur="$parent.$parent.$parent.beforenter($index, row)"
240
+ v-next-el="{id: $index+2}"
241
+ :id="$index+1"
242
+ style="width: 100px;padding: 6px;"
243
+ @focus="$parent.$parent.$parent.clearError(row)"
244
+ :disabled="row.state === '开始'">
245
+ </div>
246
+ <span v-if="row.error && row.error !== ''" style="color: #ff0000;">{{ row.error }}</span>
247
+ </td>
248
+ <td id="hand-creat" v-if="row.f_meter_state !== '未抄表' " style="text-align: center;">
249
+ {{ row.f_tablebase }}
250
+ </td>
251
+ <td style="text-align: center;">{{ $parent.$parent.$parent.calculationBase(row) }}</td>
252
+ <td style="text-align: center;">{{ row.f_last_input_date }}</td>
253
+ <td style="text-align: center;">{{ row.f_hand_date }}</td>
254
+ <td style="text-align: center;">
255
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
256
+ 'has-success has-feedback': !row.error,
257
+ 'has-error has-feedback': row.error}"
258
+ v-if="row.f_meter_state === '未抄表' && $parent.$parent.$parent.jurisdiction.includes('录入日期修正')">
259
+ <datepicker id="endDate" placeholder="抄表时间"
260
+ v-model="row.f_input_date"
261
+ :value.sync="row.f_input_date"
262
+ :format="'yyyy-MM-dd HH:mm:ss'"
263
+ :show-reset-button="true">
264
+ </datepicker>
265
+ </div>
266
+ <div v-else>
267
+ {{ row.f_input_date }}
268
+ </div>
269
+ </td>
270
+ <td style="text-align: center;">{{ row.f_inputtor }}</td>
271
+ <td style="text-align: center;">{{ row.f_input_person }}</td>
272
+ <td style="text-align: center;">{{ row.f_operator }}</td>
273
+ <td style="text-align: center;">{{ row.f_comments }}</td>
274
+ <td style="text-align: center;"><nobr>
275
+ <button v-if="row.f_notified_path" class="btn btn-link" @click.stop="$parent.$parent.$parent.imgShow(row.f_notified_path)">图像识别</button>
276
+ <button v-if="row.f_notified2_path" class="btn btn-link" @click.stop="$parent.$parent.$parent.imgShow(row.f_notified2_path)">图像识别2</button>
277
+ <button v-if="row.f_notified_paths" class="btn btn-link"
278
+ @click.stop="$parent.$parent.$parent.handImgListShow(row.f_notified_paths)">图像展示</button>
279
+ </nobr></td>
280
+ <td style="text-align: center;">
281
+ <nobr>
282
+ <button type="button" name="button" class="button_search button_spacing width-60"
283
+ v-if="row.f_meter_state === '已抄表' && (row.id == row.maxid || !row.maxid)"
284
+ @click.stop="$parent.$parent.$parent.cancelAuditHand(row)">撤销
285
+ </button>
286
+ <button type="button" name="button" class="btn btn-danger"
287
+ v-if="row.f_meter_state === '未抄表'"
288
+ @click.stop="$parent.$parent.$parent.delectHand(row)">
289
+ 删除
290
+ </button>
291
+ </nobr>
292
+ </td>
293
+ </template>
294
+ </data-grid>
295
+ </criteria-paged>
296
+ <table class="table-hover">
297
+ <tr style="position: relative" class="table-bordered">
298
+ <td
299
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
300
+ 汇总信息
301
+ </td>
302
+ <td
303
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
304
+ 用气量:&emsp;{{ sumsmodel.f_oughtamount }}
305
+ </td>
306
+ </tr>
307
+ </table>
308
+ </div>
309
+ <modal :show.sync="danhu.show" :title='danhutitle' backdrop="false" coverstyle="danhumodal">
310
+ <article slot="modal-body" class="modal-body">
311
+ <div class="panel panel-primary datapanel">
312
+ <div class="row">
313
+ <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">客户姓名:{{danhu.info.f_user_name}}</label>
314
+ <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">客户编号:{{danhu.info.f_userinfo_code}}</label>
315
+ <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">用户证号:{{danhu.info.f_book_no}}</label>
316
+ <label class="control-label col-sm-12 flex-row" style="transform: translate(0,8px)">客户地址:{{danhu.info.f_address}}</label>
317
+ <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">上次抄表日期:{{danhu.info.f_input_date}}</label>
318
+ <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">上期底数:{{danhu.info.f_last_tablebase}}</label>
319
+ <label class="control-label col-sm-6 flex-row" style="transform: translate(0,8px)">本期用量:{{f_current_usage}}</label>
320
+ </div>
321
+ </div>
322
+ <div class="panel panel-primary datapanel">
323
+ <div class="row">
324
+ <div class="col-sm-6 flex-row" style="margin-top: 2px">
325
+ <label for="danhucode" class="control-label" style="transform: translate(0,8px)">客户编号</label>
326
+ <input id="danhucode" type="text" class="input_search " style="width: 60% !important;"
327
+ v-model="danhu.f_userinfo_code" v-ref:danhucode @keyup.enter.stop="danhuCodeSearch"
328
+ placeholder='客户编号'/>
329
+ </div>
330
+ <div class="col-sm-6 flex-row" style="margin-top: 2px">
331
+ <label for="danhubase" class="control-label" style="transform: translate(0,8px)">本期底数</label>
332
+ <input id="danhubase" type="number" class="input_search " style="width: 60% !important;"
333
+ v-model="danhu.f_new_tablebase" @keyup.enter.stop="downAndHand"
334
+ @blur="tableBaseBlur"
335
+ placeholder='本期底数'/>
336
+ </div>
337
+ </div>
338
+ </div>
339
+ <upload :blodid="row.f_userinfo_id" v-if="config.showupload" isremark="true" fusetype="物联网表收费"></upload>
340
+ </article>
341
+ <footer slot="modal-footer">
342
+ </footer>
343
+ </modal>
344
+ <modal :show.sync="imgshow" v-ref:modal backdrop="true" coverstyle="modalContentRight">
345
+ <header slot="modal-header" class="modal-header">
346
+ 抄表图像识别照片
347
+ </header>
348
+ <article slot="modal-body" class="modal-body">
349
+ <div class="from-group">
350
+ <img-self :src="imgfilename" :width="750" :height="750"></img-self>
351
+ </div>
352
+ </article>
353
+ <footer slot="modal-footer" class="modal-footer">
354
+ <button type="button" class="btn btn-success" @click='imgclose'>关闭</button>
355
+ </footer>
356
+ </modal>
357
+ <modal :show.sync="imgListShow" v-ref:modal backdrop="true" coverstyle="modalContentRight">
358
+ <header slot="modal-header" class="modal-header">
359
+ 抄表图像识别照片
360
+ </header>
361
+ <article slot="modal-body" class="modal-body">
362
+ <div class="from-group" v-for="img in images">
363
+ <img-self :src="`/singlepage/rs/image/file/` + img" :width="250" :height="250"></img-self>
364
+ </div>
365
+ </article>
366
+ <footer slot="modal-footer" class="modal-footer">
367
+ <button type="button" class="btn btn-success" @click='imgListClose'>关闭</button>
368
+ </footer>
369
+ </modal>
370
+ </div>
371
+ </template>
372
+ <script>
373
+ import {PagedList, HttpResetClass} from 'vue-client'
374
+ import Vue from 'vue'
375
+
376
+ let readyGen = async function (self) {
377
+ self.getfield = self.config.excelHeaders
378
+ self.sumsmodel = self.$refs.paged.$refs.grid.model.sums
379
+ self.reflash()
380
+ }
381
+
382
+ export default {
383
+ title: '物联网表抄表',
384
+ data () {
385
+ return {
386
+ priceModel: false,
387
+ initres: {
388
+ org: [this.$login.f.orgid],
389
+ dep: [],
390
+ user: []
391
+ },
392
+ sumsmodel: [],
393
+ orgCondtionStr: '',
394
+ deletestate: false,
395
+ criteriaShow: false,
396
+ imgshow: false,
397
+ imgListShow: false,
398
+ images: [],
399
+ imgfilename: '',
400
+ model: new PagedList('api/af-revenue/sql/sale_getWebHand', 50, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'f_hand_date desc'`}, {
401
+ f_oughtamount: 0
402
+ }),
403
+ config: {
404
+ // 导出列要和查询列相同
405
+ excelHeaders: {
406
+ 'f_user_id': '表编号',
407
+ 'f_meternumber': '表号',
408
+ 'f_inputtor': '抄表员',
409
+ 'f_last_input_date': '上次抄表时间',
410
+ 'f_input_date': '抄表日期',
411
+ 'f_userinfo_code': '客户编号',
412
+ 'f_address': '客户地址',
413
+ 'f_residential_area': '小区名称',
414
+ 'f_user_name': '客户姓名',
415
+ 'f_last_tablebase': '上期底数',
416
+ 'f_tablebase': '本期指数',
417
+ 'f_oughtamount': '应交气量',
418
+ 'f_input_person': '录入人员',
419
+ 'f_meter_classify': '气表分类',
420
+ 'f_meter_style': '气表型号',
421
+ 'f_user_phone': '客户电话',
422
+ 'f_comments': '备注'
423
+ },
424
+ examine: true,
425
+ customCal: false
426
+ },
427
+ meter_state: false, // 是否显示计划下发按钮
428
+ downModel: {
429
+ downDate: Vue.$login.toStandardTimeString(),
430
+ downWay: 'downWithUserfiles',
431
+ downInputtor: []
432
+ },
433
+ inputtorModel: {
434
+ inputtor: [],
435
+ reason: ''
436
+ },
437
+ f_current_usage: '',
438
+ auditState: [{label: '全部', value: ''}, {label: '未抄表', value: '未抄表'}, {
439
+ label: '待审核',
440
+ value: '待审核'
441
+ }, {label: '已抄表', value: '已抄表'}],
442
+
443
+ plans: [], // 记录当前行是否被勾选
444
+ all: false, // 是否全选
445
+ show: false, // 下发日期模态框显示
446
+ unhandplan: [], // 之前是否有未抄表记录
447
+ downConfirm: false, // 下发若有未抄记录,确认框
448
+ uploadshow: false,
449
+ // 小区
450
+ residentialArea: [],
451
+
452
+ // downDate: this.$login.toStandardYearMonth().replace("-", ""),
453
+ msg: '',
454
+ condition: '',
455
+ orderDefault: 'f_hand_date',
456
+ orderFields: {
457
+ f_userinfo_id: 'no'
458
+ },
459
+ getfield: {},
460
+ outlet: '',
461
+ filiale: '',
462
+ condition2: '',
463
+ area: [],
464
+ inputtouPerson: [],
465
+ meters: [{label: '全部', value: ''}, {label: '机表', value: '机表'}, {label: '物联网表', value: '物联网表'}],
466
+ resultstate: this.$appdata.getParam('抄表结果状态'),
467
+ meterstates: [{label: '全部', value: ''}, {label: '未抄表', value: '未抄表'}, {label: '已抄表', value: '已抄表'}],
468
+ usertypes: this.$appdata.getParam('客户类型') ? [{
469
+ label: '全部',
470
+ value: ''
471
+ }, ...this.$appdata.getParam('客户类型')] : [],
472
+ splitdata: '',
473
+ f_filialeid: this.$login.f.orgid,
474
+ meterbooks: [],
475
+ upshow: false,
476
+ inputid: 0,
477
+ examineshow: false,
478
+ examinerow: null,
479
+ showfiles: false,
480
+ uploadText: '抄表',
481
+ examinetype: false,
482
+ danhu: {
483
+ show: false,
484
+ f_userinfo_code: '',
485
+ f_new_tablebase: '',
486
+ info: {}
487
+ },
488
+ showerr: false,
489
+ err: '',
490
+ // 请求对象(批量导入,查询进度使用)
491
+ HttpReset: new HttpResetClass(),
492
+ row: null,
493
+ // 应抄底数
494
+ should_base: 0,
495
+ // 计算公式
496
+ designFormulas: null
497
+ }
498
+ },
499
+ ready () {
500
+ this.getaddress()
501
+ readyGen(this)
502
+ },
503
+ mounted () {
504
+ console.log(this.inputid)
505
+ document.getElementById(this.inputid).focus()
506
+ },
507
+ methods: {
508
+ tableBaseBlur () {
509
+ if (this.danhu.f_new_tablebase) {
510
+ this.f_current_usage = (this.danhu.f_new_tablebase - 0) - (this.danhu.info.f_last_tablebase - 0)
511
+ }
512
+ },
513
+ handImgListShow (images) {
514
+ this.imgListShow = true
515
+ this.images = JSON.parse(images)
516
+ },
517
+ imgListClose () {
518
+ this.imgListShow = false
519
+ },
520
+ imgclose () {
521
+ this.imgshow = false
522
+ },
523
+ getFileName (fullPath) {
524
+ if (!fullPath) return ''
525
+ let url = fullPath.split('?')[0] // 去除?后参数
526
+ return url.substring(url.lastIndexOf('/') + 1) // 截取最后一段
527
+ },
528
+ imgShow (val) {
529
+ this.imgfilename = `/rs/image/file/` + val
530
+ this.imgshow = true
531
+ },
532
+ async danhuCodeSearch () {
533
+ this.danhu.f_userinfo_code = this.danhu.f_userinfo_code.replace(/(^\s*)|(\s*$)/g, '')
534
+ await this.$resetpost('api/af-revenue/sql/sale_getWebHandDanHu', {
535
+ data: {
536
+ f_userinfo_code: this.danhu.f_userinfo_code,
537
+ f_orgid: this.f_filialeid
538
+ }
539
+ },
540
+ {resolveMsg: null, rejectMsg: '查询用户信息失败,网络错误'}).then(res => {
541
+ if (res.data.length !== 1) {
542
+ this.$showAlert(res.data.length === 0 ? '没有查询到用户' : '查询到多条用户信息', 'warning', 3000)
543
+ return
544
+ }
545
+ if (res.data[0].f_meter_state === '未抄表') {
546
+ this.$showAlert('该用户有未抄表记录', 'warning', 3000)
547
+ return
548
+ }
549
+ this.danhu.info = res.data[0]
550
+ document.getElementById('danhubase').focus()
551
+ })
552
+ },
553
+ calculationBase (row) {
554
+ let oughtamount = null
555
+ if (row.f_tablebase) {
556
+ if (row.f_share_gas) {
557
+ oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(4) + (row.f_share_gas > 0 ? '+' : '') + row.f_share_gas.toFixed(3)
558
+ } else {
559
+ if (row.f_capacity && row.f_capacity > 0 && row.f_tablebase < row.f_last_tablebase) {
560
+ oughtamount = (row.f_tablebase - 0 + (row.f_capacity - row.f_last_tablebase)).toFixed(3)
561
+ } else {
562
+ oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(3)
563
+ }
564
+ }
565
+ } else {
566
+ oughtamount = 0
567
+ }
568
+ row.f_oughtamount = oughtamount
569
+ return oughtamount
570
+ },
571
+ cancelHand (row) {
572
+ if (this.config.examine) {
573
+ let handdate = new Date(row.f_hand_date)
574
+ let ima = new Date()
575
+ if (handdate.getMonth() == ima.getMonth()) {
576
+ this.cancelHand3(row)
577
+ } else {
578
+ if (!this.$login.r.find(value => value == '抄表隔月冲正')) {
579
+ this.$showMessage('当前登录用户没有【抄表隔月冲正】权限, 请联系管理员!')
580
+ } else {
581
+ this.cancelHand3(row)
582
+ }
583
+ }
584
+ } else {
585
+ this.cancelHand3(row)
586
+ }
587
+ },
588
+ cancelAuditHand (row) {
589
+ let param = {
590
+ f_hand_id: row.id,
591
+ operInfo: {
592
+ f_operator: this.$login.f.name,
593
+ f_operatorid: this.$login.f.id,
594
+ f_orgid: this.$login.f.orgid,
595
+ f_orgname: this.$login.f.orgs,
596
+ f_depid: this.$login.f.depids,
597
+ f_depname: this.$login.f.deps
598
+ }
599
+ }
600
+ let url = 'api/af-revenue/logic/sale_webHandCancel'
601
+ this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
602
+ this.search()
603
+ this.close()
604
+ })
605
+ },
606
+ // 单户抄表
607
+ async downAndHand () {
608
+ if (!this.danhu.info.f_userinfo_code || this.danhu.info.f_userinfo_code === '') {
609
+ this.$showAlert(`请先查询用户信息`, 'warning', 2000)
610
+ return
611
+ }
612
+ if (this.danhu.f_new_tablebase < 0) {
613
+ this.$showAlert(`底数不能小于0,请注意!`, 'warning', 2000)
614
+ return
615
+ } else if (this.danhu.f_new_tablebase.toString().split('.').length > 1 && this.danhu.f_new_tablebase.toString().split('.')[1].length > 3) {
616
+ this.$showAlert(`底数最多只能输入小数点后3位,请注意!`, 'warning', 2000)
617
+ return
618
+ } else if (this.danhu.f_new_tablebase < this.danhu.info.f_tablebase && !this.danhu.info.f_capacity) {
619
+ this.$showAlert(`本期表底数不能低于上期表底数`, 'warning', 2000)
620
+ return
621
+ }
622
+ this.danhu.info.f_hand_date = this.$login.toStandardTimeString()
623
+ this.danhu.info.f_meter_source = '单户抄表'
624
+ this.danhu.info.f_operatorid = this.$login.f.id
625
+ this.danhu.info.f_operator = this.$login.f.name
626
+ this.danhu.info.f_inputtor = this.$login.f.name
627
+ this.danhu.info.f_orgid = this.$login.f.orgid
628
+ this.danhu.info.f_orgname = this.$login.f.orgs
629
+ this.danhu.info.f_depid = this.$login.f.depids
630
+ this.danhu.info.f_depname = this.$login.f.deps
631
+ this.danhu.info.f_input_person = this.$login.f.name
632
+ this.danhu.info.f_new_tablebase = this.danhu.f_new_tablebase
633
+ this.$resetpost('api/af-revenue/logic/sale_webHandEnter', {data: this.danhu.info}, {
634
+ resolveMsg: null,
635
+ rejectMsg: null
636
+ }).then((res) => {
637
+ this.$showAlert(`单户抄表成功!`, 'success', 2000)
638
+ this.danhuShow()
639
+ }).catch((error) => {
640
+ this.danhu.show = false
641
+ this.$showAlert(`抄表失败,请注意查看,失败原因:` + JSON.toString(error), 'danger', 2000)
642
+ })
643
+ },
644
+ danhuShow () {
645
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
646
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
647
+ this.downModel.downDate = this.$login.toStandardTimeString()
648
+ this.danhu = {
649
+ show: true,
650
+ f_userinfo_code: '',
651
+ f_new_tablebase: '',
652
+ info: {}
653
+ }
654
+ this.f_current_usage = ''
655
+ setTimeout(() => {
656
+ document.getElementById('danhucode').focus()
657
+ this.$refs.paged.$refs.criteria.search()
658
+ }, 100)
659
+ },
660
+ paycodefocus () {
661
+ this.$nextTick(() => {
662
+ this.$els.paycode.focus()
663
+ })
664
+ },
665
+ getRes (obj) {
666
+ this.orgCondtionStr = obj
667
+ },
668
+ async getaddress () {
669
+ console.log('开始获取小区')
670
+ let HttpReset = new HttpResetClass()
671
+ var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
672
+ data: {
673
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
674
+ }
675
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
676
+ console.log('小区', data)
677
+ let house = []
678
+ house.push()
679
+ for (let row of data.data) {
680
+ console.log('开始保存小区')
681
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
682
+ }
683
+ this.residentialArea = house
684
+ },
685
+ hidden () {
686
+ this.criteriaShow = !this.criteriaShow
687
+ },
688
+ clear () {
689
+ Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
690
+ this.$refs.paged.$refs.criteria.model[key] = []
691
+ })
692
+ },
693
+ search () {
694
+ // 查询前清空选择项
695
+ this.plans = []
696
+ this.$refs.paged.$refs.criteria.search()
697
+ },
698
+ selfSearch (args) {
699
+ this.meter_state = args.condition.includes('未下发')
700
+ this.inputtor_change = args.condition.includes('未抄表')
701
+ console.log('=====抄表1====', args.condition.includes('未抄表'))
702
+ console.log('=====抄表1====', this.deletestate)
703
+ if (args.condition.includes('未抄表')) {
704
+ this.deletestate = true
705
+ } else {
706
+ this.deletestate = false
707
+ }
708
+ console.log('=====抄表1====', this.deletestate)
709
+ if (!this.orgCondtionStr) {
710
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
711
+ } else {
712
+ args.condition = `${args.condition}` + this.orgCondtionStr
713
+ }
714
+
715
+ // 抄表员查询条件
716
+ this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
717
+ if (this.inputtouPerson.length !== 0) {
718
+ let str = JSON.stringify(this.inputtouPerson)
719
+ str = str.replace(/"/g, `'`)
720
+ str = str.replace(/\[/g, ``)
721
+ str = str.replace(/\]/g, ``)
722
+ console.log('=====抄表员model22222222222绑定====', str)
723
+ // 查询多个抄表员时条件
724
+ args.condition += ` and f_inputtor in ( ${str} )`
725
+ }
726
+ // 小区查询条件
727
+ this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
728
+ console.log('=====小区model绑定====', this.area)
729
+ if (this.area.length !== 0) {
730
+ let str = JSON.stringify(this.area)
731
+ str = str.replace(/"/g, `'`)
732
+ str = str.replace(/\[/g, ``)
733
+ str = str.replace(/\]/g, ``)
734
+ console.log('=====小区model22222222222绑定====', str)
735
+ // 查询多个小区时条件
736
+ args.condition += ` and f_residential_area in ( ${str} )`
737
+ }
738
+
739
+ if (args.model.f_meter_brand && args.model.f_meter_brand.length > 0) {
740
+ if (args.model.f_meter_brand[0].f_meter_brand) {
741
+ args.condition = `${args.condition} and f_meter_brand = '${args.model.f_meter_brand[0].f_meter_brand}'`
742
+ }
743
+ }
744
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
745
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
746
+ this.condition2 = args.condition
747
+ console.log('selfsearch..', args.condition, this.model)
748
+ this.model.search(args.condition, this.model)
749
+ },
750
+ reflash () {
751
+ this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
752
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0] + ' 00:00:00'
753
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1] + ' 23:59:59'
754
+ this.search()
755
+ },
756
+ beforenter (index, row) {
757
+ this.inputid = index + 1
758
+ // 限制本次抄表不能低于上次
759
+ if (row.f_tablebase) {
760
+ if (row.f_tablebase < 0) {
761
+ row.state = '失败'
762
+ Vue.set(row, 'error', '底数不能小于0')
763
+ this.speckText('底数不能小于0,请注意!')
764
+ } else if (this.danhu.f_new_tablebase.toString().split('.').length > 1 && this.danhu.f_new_tablebase.toString().split('.')[1].length > 3) {
765
+ row.state = '失败'
766
+ Vue.set(row, 'error', '底数最多只能输入小数点后3位')
767
+ this.speckText('底数最多只能输入小数点后3位,请注意!')
768
+ } else if (row.f_tablebase < row.f_last_tablebase && !row.f_capacity) {
769
+ row.state = '失败'
770
+ Vue.set(row, 'error', '本期表底数不能低于上期表底数')
771
+ this.speckText('本期表底数不能低于上期表底数,请注意!')
772
+ } else {
773
+ if (row.f_tablebase < row.f_last_tablebase) {
774
+ this.$showMessage('本次抄表已超越最大量程, 请熟知!')
775
+ }
776
+ // 抄表结果状态没选默认给正常
777
+ row.f_result_state = row.f_result_state ? row.f_result_state : '正常'
778
+ this.enter(index, row)
779
+ }
780
+ }
781
+ },
782
+ enter (index, row) {
783
+ console.log('录入数据。..', row)
784
+ let f_input_date = Vue.$login.toStandardTimeString()
785
+ let handplan = {
786
+ id: row.id,
787
+ f_oughtamount: row.f_oughtamount,
788
+ f_tablebase: row.f_tablebase,
789
+ f_hand_date: f_input_date,
790
+ f_input_date: f_input_date,
791
+ f_input_person: Vue.$login.f.name,
792
+ f_meter_state: '已抄表',
793
+ f_meter_source: '手动录入',
794
+ f_operator: Vue.$login.f.name,
795
+ f_operatorid: Vue.$login.f.id,
796
+ f_orgid: Vue.$login.f.orgid,
797
+ f_orgname: Vue.$login.f.orgs,
798
+ f_depid: Vue.$login.f.depids,
799
+ f_depname: Vue.$login.f.deps
800
+ }
801
+ console.log('抄表负数。。0', handplan)
802
+ this.$resetpost('api/af-revenue/entity/save/t_web_hand_plan_record', handplan, {
803
+ resolveMsg: null,
804
+ rejectMsg: '抄表数据保存出错!!!'
805
+ }).then((res) => {
806
+ row.f_meter_state = '已抄表'
807
+ row.f_input_date = f_input_date
808
+ let sql = `update t_userfiles set f_web_meter_base = ${row.f_tablebase},version = version + 1 where f_userfiles_id = '${row.f_userfiles_id}' `
809
+ this.$resetpost('api/af-revenue/logic/runSQL', { sql: sql })
810
+ }).catch((error) => {
811
+ row.state = '失败'
812
+ Vue.set(row, 'error', JSON.stringify(error))
813
+ this.speckText('抄表录入出错,请注意!')
814
+ })
815
+ },
816
+ clearError (row) {
817
+ if (row.f_tablebase === 0) {
818
+ row.f_tablebase = ''
819
+ }
820
+ Vue.set(row, 'error', null)
821
+ },
822
+ async speckText (str) {
823
+ var url = 'http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=6&text=' + encodeURI(str)
824
+ await new Audio(url).play()
825
+ this.err = str
826
+ this.showerr = true
827
+ this.paycodefocus()
828
+ },
829
+ closeerr () {
830
+ this.showerr = false
831
+ },
832
+ // 删除这条计划
833
+ delectHand (row) {
834
+ let sql = `update t_web_hand_plan_record set f_hand_state = '无效' where id = '${row.id}' `
835
+ this.$resetpost('api/af-revenue/logic/runSQL', { sql: sql }).then((res) => {
836
+ this.search()
837
+ })
838
+ },
839
+ cancelHand3 (row) {
840
+ // 抄表加入权限
841
+ if (!this.$login.r.find(value => value == '机表抄表冲正')) {
842
+ this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
843
+ return
844
+ }
845
+ // console.log('抄表冲正。、。。、', row)
846
+ let param = {
847
+ f_hand_id: row.id,
848
+ operInfo: {
849
+ f_operator: this.$login.f.name,
850
+ f_operatorid: this.$login.f.id,
851
+ f_orgid: this.$login.f.orgid,
852
+ f_orgname: this.$login.f.orgs,
853
+ f_depid: this.$login.f.depids,
854
+ f_depname: this.$login.f.deps
855
+ }
856
+ }
857
+ let url = 'api/af-revenue/logic/sale_commonEnterCancel'
858
+ this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
859
+ this.search()
860
+ this.close()
861
+ })
862
+ },
863
+ // 关闭下发计划得弹出框
864
+ close () {
865
+ this.show = false
866
+ this.inputtor_show = false
867
+ this.downConfirm = false
868
+ this.examineshow = false
869
+ this.examinetype = false
870
+ this.detailsShow = false
871
+ this.priceModel = false
872
+ // 初始化模态框数据
873
+ this.initModal()
874
+ if (this.uploadshow) {
875
+ this.uploadshow = false
876
+ // 讲选的文件清空
877
+ this.$refs.file.$el.querySelector('input').value = ''
878
+ }
879
+ },
880
+ initModal () {
881
+ this.downModel = {
882
+ downDate: Vue.$login.toStandardDateString(),
883
+ downWay: 'downWithUserfiles',
884
+ downInputtor: []
885
+ }
886
+ this.inputtorModel = {
887
+ inputtor: [],
888
+ reason: ''
889
+ }
890
+ },
891
+ // 判断当前登陆人是不是子公司的人员
892
+ isHead () {
893
+ return this.$login.f.parent.parent.name.includes('统一资源管理')
894
+ },
895
+ sort (field, rule) {
896
+ // 将所有排序方式设为不排序,实现相互排斥
897
+ for (let key in this.orderFields) {
898
+ if (key === field) {
899
+ this.orderFields[key] = rule
900
+ } else {
901
+ this.orderFields[key] = 'no'
902
+ }
903
+ }
904
+ // 如果新规则不排序,还原为默认排序
905
+ if (rule === 'no') {
906
+ this.model.paramSource.orderitem = `'${this.orderDefault}'`
907
+ } else {
908
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
909
+ }
910
+ this.search()
911
+ }
912
+ },
913
+ watch: {
914
+ 'detailsShow' (val) {
915
+ if (!val) {
916
+ this.should_base = 0
917
+ this.designFormulas = null
918
+ }
919
+ }
920
+ },
921
+ computed: {
922
+ danhutitle () {
923
+ return '单户抄表 当前计划年月:' + this.downModel.downDate
924
+ },
925
+ getCondition () {
926
+ return {
927
+ startDate: this.$refs.paged.$refs.criteria.model.startDate,
928
+ endDate: this.$refs.paged.$refs.criteria.model.endDate,
929
+ orderitem: this.orderDefault ? this.orderDefault : 'id',
930
+ condition: this.condition2
931
+ }
932
+ },
933
+ inputtores () {
934
+ // 获取抄表员
935
+ console.log('获取抄表员', this.$login.f)
936
+ let rs = []
937
+ if (this.$login.f.f_gasman.length > 0) {
938
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
939
+ let temp = {
940
+ label: this.$login.f.f_gasman[i].name,
941
+ value: this.$login.f.f_gasman[i].name
942
+ }
943
+ rs.push(temp)
944
+ }
945
+ }
946
+ this.inputtores2 = rs
947
+ return [...rs]
948
+ },
949
+ // 界面细节权限
950
+ jurisdiction () {
951
+ console.log('抄表界面细节', this.$login.r)
952
+ return this.$login.r ? this.$login.r : []
953
+ }
954
+ },
955
+ events: {
956
+ dblclick: function (row, index) {
957
+ this.row = row
958
+ this.detailsShow = true
959
+ },
960
+ // 删除Resid数组元素
961
+ 'delResid' (val) {
962
+ this.resid.$remove({id: val, f_biobid: ''})
963
+ },
964
+ // 增加Resid数组元素
965
+ 'resid' (val) {
966
+ console.log('-=', val)
967
+ this.resid.push({id: val, f_biobid: ''})
968
+ }
969
+ }
970
+ }
971
+ </script>
972
+ <style lang="less">
973
+ #handManager {
974
+ display: flex;
975
+ justify-content: space-around;
976
+ align-items: center;
977
+
978
+ .btn {
979
+ margin: 0px;
980
+ }
981
+
982
+ .hand-loading {
983
+ border: 3px solid #ccc;
984
+ border-right-color: #337ab7;
985
+ border-radius: 50%;
986
+ animation: spin 0.6s linear;
987
+ position: absolute;
988
+ animation-iteration-count: infinite;
989
+ top: 0;
990
+ right: 50%;
991
+ z-index: 2;
992
+ display: block;
993
+ width: 28px;
994
+ height: 28px;
995
+ line-height: 28px;
996
+ text-align: center;
997
+ pointer-events: none;
998
+ }
999
+
1000
+ @keyframes spin {
1001
+ 100% {
1002
+ transform: rotate(360deg);
1003
+ }
1004
+ }
1005
+
1006
+ .detail-panel {
1007
+ text-align: center;
1008
+ color: #31708f;
1009
+ background-color: #e8f1f9;
1010
+ border-color: #F2F6FA;
1011
+ }
1012
+ }
1013
+
1014
+ #hand_manager_grid {
1015
+ thead {
1016
+ position: relative;
1017
+ z-index: 2;
1018
+ }
1019
+ }
1020
+
1021
+ #machineHandManager {
1022
+ .color-red {
1023
+ color: red;
1024
+ }
1025
+ }
1026
+ </style>