sale-client 4.1.230 → 4.2.1-ronghao

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 (171) hide show
  1. package/build/dev-server.js +29 -46
  2. package/package.json +2 -2
  3. package/src/App.vue +3 -3
  4. package/src/components/FilesManage/UserGeneralInfoTest.vue +4 -4
  5. package/src/components/FilesManageNew/FileUserFiles.vue +2 -4
  6. package/src/components/FilesManageNew/MeterinfoTest.vue +9 -9
  7. package/src/components/FilesManageNew/UserEssentialInfoTest.vue +201 -227
  8. package/src/components/FilesManageNew/UserGeneralInfoTest.vue +0 -2
  9. package/src/components/charge/business/CardMeterCenter.vue +1 -1
  10. package/src/components/charge/business/FilesComplete.vue +3 -3
  11. package/src/components/charge/business/IOTMeterCenter.vue +1 -1
  12. package/src/components/charge/business/OtherChargeNew.vue +68 -48
  13. package/src/components/common/userinfo_detail/UserInfoDetailManageNew.vue +10 -1
  14. package/src/components/common/userinfo_detail/ic_detail/CardHandRecord.vue +1 -1
  15. package/src/components/common/userinfo_detail/ic_detail/ChangeMeterQueryUser.vue +1 -1
  16. package/src/components/common/userinfo_detail/ic_detail/GarbageRecordList.vue +69 -0
  17. package/src/components/common/userinfo_detail/ic_detail/InsuranceChargesRecord.vue +384 -0
  18. package/src/components/common/userinfo_detail/ic_detail/WebHandQueryUser.vue +1 -1
  19. package/src/components/revenue/Common/MeterMessage.vue +1 -1
  20. package/src/components/revenue/HandManager/MeterBookUser.vue +726 -726
  21. package/src/components/revenue/HandManager/WebHand.vue +7 -4
  22. package/src/components/revenue/base/leftview/SafeCheck.vue +41 -3
  23. package/src/components/revenue/base/leftview/UserFeeInfo.vue +76 -0
  24. package/src/components/revenue/base/leftview/otherinfo.vue +1 -0
  25. package/src/components/revenue/base/rightview/CardList.vue +7 -3
  26. package/src/components/revenue/batchDeduction/batchDeductionList.vue +1 -1
  27. package/src/components/revenue/cardHandManage/cardDown.vue +18 -0
  28. package/src/components/revenue/changeInsurance/InsuranceAdd.vue +1 -0
  29. package/src/components/revenue/changeInsurance/InsuranceRecord.vue +2 -1
  30. package/src/components/revenue/comprehen/ComprehenOperation/BankPayment/BankPayment.vue +1 -1
  31. package/src/components/revenue/comprehen/ComprehenOperation/GiftFee/icTable.vue +4 -2
  32. package/src/components/revenue/comprehen/ComprehenOperation/QrPay/QrPaymentDetailed.vue +423 -423
  33. package/src/components/revenue/comprehen/Maintenance/hand/handOperate.vue +469 -469
  34. package/src/components/revenue/comprehen/Maintenance/revenue/MeterOperatemain.vue +2 -2
  35. package/src/components/revenue/machineHandManage/ArrearsQuery.vue +938 -938
  36. package/src/components/revenue/machineHandManage/HandplanQuery.vue +1 -1
  37. package/src/components/revenue/machineHandManage/machineHand.vue +3 -2
  38. package/src/components/webMeter/MeterManage/WebMeterBatchOperationValve.vue +970 -970
  39. package/src/filiale/alashan/eticket/EticketRecordList.vue +428 -428
  40. package/src/filiale/bayan/ChargeList.vue +1010 -1010
  41. package/src/filiale/bayan/StockListmain.vue +543 -543
  42. package/src/filiale/beifangshiye/OtherChargeNew.vue +625 -625
  43. package/src/filiale/dexin/MeterinfoTest.vue +1239 -0
  44. package/src/filiale/dexin/UserEssentialInfoTest.vue +602 -0
  45. package/src/filiale/dexin/sale.js +5 -0
  46. package/src/filiale/fugou/MeterinfoTest.vue +1 -1
  47. package/src/filiale/jiaxian/AutomaticPurse.vue +349 -0
  48. package/src/filiale/jiaxian/ChangeMeterQueryUser.vue +303 -0
  49. package/src/filiale/jiaxian/ChangeRecord.vue +44 -2
  50. package/src/filiale/jiaxian/FillCardQueryUser.vue +250 -0
  51. package/src/filiale/jiaxian/FillGasQueryUser.vue +270 -0
  52. package/src/filiale/jiaxian/OtherChargeQueryUser.vue +305 -0
  53. package/src/filiale/jiaxian/PriceAdjustmentQueryUser.vue +368 -0
  54. package/src/filiale/jiaxian/PriceChangeQueryUser.vue +243 -0
  55. package/src/filiale/jiaxian/QueryInstruct.vue +436 -0
  56. package/src/filiale/jiaxian/RecordQueryUser.vue +321 -0
  57. package/src/filiale/jiaxian/Repurchase.vue +181 -0
  58. package/src/filiale/jiaxian/TransferQueryUser.vue +274 -0
  59. package/src/filiale/jiaxian/UserInfoDetailManageNew.vue +11 -11
  60. package/src/filiale/jiaxian/Userinfo.vue +426 -0
  61. package/src/filiale/jiaxian/WatchCollection.vue +54 -1
  62. package/src/filiale/jiaxian/WebAutomaticPurse.vue +348 -0
  63. package/src/filiale/jiaxian/contractSigningList.vue +149 -0
  64. package/src/filiale/jiaxian/sale.js +5 -0
  65. package/src/filiale/jinhong/AutoAccountsDetail.vue +63 -0
  66. package/src/filiale/jinhong/CardList.vue +572 -0
  67. package/src/filiale/jinhong/CardMeterCenter.vue +1 -1
  68. package/src/filiale/jinhong/CardMeterCenterInner.vue +61 -22
  69. package/src/filiale/jinhong/GarbageCharge.vue +1 -1
  70. package/src/filiale/jinhong/HandplanQuery.vue +1430 -0
  71. package/src/filiale/jinhong/IOTMeterCenterInner.vue +42 -14
  72. package/src/filiale/jinhong/InsuranceAdd.vue +27 -5
  73. package/src/filiale/jinhong/InsuranceChargesDetails.vue +11 -5
  74. package/src/filiale/jinhong/InsuranceRecord.vue +4 -5
  75. package/src/filiale/jinhong/InsuranceTemp.vue +33 -5
  76. package/src/filiale/jinhong/MachineChargeService.js +8 -0
  77. package/src/filiale/jinhong/MachineMeterCenter.vue +38 -11
  78. package/src/filiale/jinhong/ShowCardSellGasInner.vue +46 -14
  79. package/src/filiale/jinhong/Userinfo.vue +75 -1
  80. package/src/filiale/jinhong/insuranceGuanL.vue +349 -0
  81. package/src/filiale/jinhong/machineDown.vue +1205 -0
  82. package/src/filiale/jinhong/sale.js +9 -0
  83. package/src/filiale/jinhuang/UserInfoDetailManageNew.vue +259 -0
  84. package/src/filiale/jinhuang/WebHand.vue +1026 -0
  85. package/src/filiale/jinhuang/WebHandQueryUser.vue +413 -0
  86. package/src/filiale/jinhuang/cardsHand.vue +911 -0
  87. package/src/filiale/jinhuang/sale.js +8 -0
  88. package/src/filiale/lixianV3/ArrearsQuery.vue +938 -938
  89. package/src/filiale/lixianV3/InsuranceAdd.vue +1 -0
  90. package/src/filiale/lixianV3/InsuranceChargesDetails.vue +425 -425
  91. package/src/filiale/meihekou/CardMeterCenter.vue +991 -0
  92. package/src/filiale/meihekou/ChargeManage.vue +3 -2
  93. package/src/filiale/meihekou/ChargeOper.vue +279 -169
  94. package/src/filiale/meihekou/HandManager.vue +57 -2
  95. package/src/filiale/meihekou/NoCardMeterCenter.vue +542 -0
  96. package/src/filiale/meihekou/OverUseCharge.vue +1 -1
  97. package/src/filiale/meihekou/PrintBill.vue +48 -41
  98. package/src/filiale/meihekou/ReissueBill.vue +4 -1
  99. package/src/filiale/meihekou/ShowCardSellGas.vue +935 -0
  100. package/src/filiale/meihekou/TransferManage.vue +704 -0
  101. package/src/filiale/meihekou/Userinfo.vue +233 -5
  102. package/src/filiale/meihekou/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +281 -281
  103. package/src/filiale/meihekou/icTable.vue +233 -0
  104. package/src/filiale/meihekou/machineHand.vue +2158 -0
  105. package/src/filiale/meihekou/manualChargeCenter.vue +394 -0
  106. package/src/filiale/meihekou/meterTable.vue +220 -0
  107. package/src/filiale/meihekou/sale.js +15 -0
  108. package/src/filiale/qianneng/MeterMessage.vue +1 -1
  109. package/src/filiale/qianneng/revenue/sms/AccountMessageList.vue +508 -508
  110. package/src/filiale/rizhao/InsuranceAdd.vue +1 -0
  111. package/src/filiale/ronghao/ArrearsQuery.vue +974 -974
  112. package/src/filiale/ronghao/CardList.vue +19 -17
  113. package/src/filiale/ronghao/CardMeterChargeCancel.vue +5 -0
  114. package/src/filiale/ronghao/CardService.js +2144 -2144
  115. package/src/filiale/ronghao/ChangeMeterService.js +1 -1
  116. package/src/filiale/ronghao/ChargeList.vue +17 -17
  117. package/src/filiale/ronghao/ChargeManage.vue +325 -0
  118. package/src/filiale/ronghao/ChargeOper.vue +330 -0
  119. package/src/filiale/ronghao/FilesManageNew/UserEssentialInfoTest.vue +457 -0
  120. package/src/filiale/ronghao/FilesManageNew/UserGeneralInfoTest.vue +690 -0
  121. package/src/filiale/ronghao/HandplanQuery.vue +13 -14
  122. package/src/filiale/ronghao/IOTMeterCenter.vue +15 -6
  123. package/src/filiale/ronghao/InsuranceAdd.vue +1 -0
  124. package/src/filiale/ronghao/InsuranceManage.vue +58 -58
  125. package/src/filiale/ronghao/MachineChargeService.js +149 -149
  126. package/src/filiale/ronghao/NoCardMeterCenter.vue +534 -534
  127. package/src/filiale/ronghao/PaymentCode.vue +174 -174
  128. package/src/filiale/ronghao/PriceChangeCompensation/CompensationManage.vue +26 -26
  129. package/src/filiale/ronghao/PriceChangeCompensation/IotCompensation.vue +318 -318
  130. package/src/filiale/ronghao/PriceChangeCompensation/JbCompensation.vue +343 -343
  131. package/src/filiale/ronghao/PriceChangeCompensation/SurplusRecordDetail.vue +74 -74
  132. package/src/filiale/ronghao/ReplaceCardManage.vue +415 -415
  133. package/src/filiale/ronghao/Upload.vue +654 -654
  134. package/src/filiale/ronghao/Userinfo.vue +18 -18
  135. package/src/filiale/ronghao/cardDown.vue +1141 -1141
  136. package/src/filiale/ronghao/changemeterOperate.vue +315 -315
  137. package/src/filiale/ronghao/fillgasSpecific.vue +313 -313
  138. package/src/filiale/ronghao/ic_detail/ChargeRecordQuery.vue +106 -106
  139. package/src/filiale/ronghao/ic_detail/WatchCollection.vue +115 -115
  140. package/src/filiale/ronghao/ic_detail/WebHandQueryUser.vue +411 -411
  141. package/src/filiale/ronghao/machineDown.vue +1176 -1176
  142. package/src/filiale/ronghao/machineRefund.vue +3 -1
  143. package/src/filiale/ronghao/replacementSingleInfoOperation.vue +315 -315
  144. package/src/filiale/ronghao/sale.js +11 -0
  145. package/src/filiale/ronghao/specificInformation.vue +537 -537
  146. package/src/filiale/ronghao/uploadFilesHistory.vue +214 -0
  147. package/src/filiale/ruihua/FilesManage/MeterinfoTest.vue +10 -0
  148. package/src/filiale/shanxian/components/revenue/InsuranceAdd.vue +1 -0
  149. package/src/filiale/wuan/MeterMessage.vue +1 -1
  150. package/src/filiale/yangchun/BasicLivingList.vue +281 -0
  151. package/src/filiale/yangchun/BlackList/BlackRecordQuery.vue +1 -0
  152. package/src/filiale/yangchun/CardChangeFill.vue +1 -1
  153. package/src/filiale/yangchun/ChargeList.vue +954 -954
  154. package/src/filiale/yangchun/FilesManage/UserPaperInfoTest.vue +3 -3
  155. package/src/filiale/yangchun/NewMeterList.vue +742 -0
  156. package/src/filiale/yangchun/sale.js +3 -0
  157. package/src/filiale/yuncheng/CardList.vue +1 -1
  158. package/src/filiale/yuncheng/IndustryCommerceHand.vue +1145 -0
  159. package/src/filiale/yuncheng/IndustryCommerceHandAudit.vue +794 -0
  160. package/src/filiale/yuncheng/IndustryCommerceHandManager.vue +64 -0
  161. package/src/filiale/yuncheng/InsuranceAdd.vue +1 -0
  162. package/src/filiale/yuncheng/MeterBookUser.vue +781 -0
  163. package/src/filiale/yuncheng/UserDeviceInfoTest.vue +2 -2
  164. package/src/filiale/yuncheng/changemeterListMaintain.vue +504 -504
  165. package/src/filiale/yuncheng/industryDown.vue +1118 -0
  166. package/src/filiale/yuncheng/sale.js +11 -0
  167. package/src/filiale/yuncheng/uploadFilesHistory.vue +185 -0
  168. package/src/filiale/zhongsheng/BlackListList.vue +293 -293
  169. package/src/filiale/zhongyi/HandQueryUser.vue +389 -389
  170. package/src/plugins/CardService.js +2217 -2217
  171. package/src/sale.js +3 -1
@@ -0,0 +1,2158 @@
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
+ <modal :show.sync="$parent.$parent.upshow" width="500px" title="文件导入" v-ref:modal large
8
+ backdrop="false">
9
+ <article slot="modal-body" class="modal-body">
10
+ <file-upload class="my-file-uploader btn btn-success" name="UploadFile"
11
+ style="border-radius: 2px;"
12
+ action="api/af-revenue/file/uploadFile" tagname="导入" v-ref:filebattch :headers="headers"
13
+ multiple></file-upload>
14
+ </article>
15
+ <footer slot="modal-footer" class="modal-footer">
16
+ </footer>
17
+ </modal>
18
+ <div class="row">
19
+ <!--<div class="col-sm-6">-->
20
+ <!--style="border: 1px solid #a6d5ea; box-shadow: darkgrey 1px 1px 1px 2px;padding: 0.5%">-->
21
+ <div class="col-sm-2 form-group">
22
+ <label class="font_normal_body color-red">归属起始</label>
23
+ <datepicker placeholder="开始日期"
24
+ style="width:60%"
25
+ class="datepicker"
26
+ v-model="model.startDate"
27
+ condition="f_hand_date >='{} 00:00:00'"
28
+
29
+ :value.sync="model.startDate"
30
+ :format="'yyyy-MM-dd'"
31
+ ></datepicker>
32
+ </div>
33
+ <div class="col-sm-2 form-group">
34
+ <label class="font_normal_body color-red">归属结束</label>
35
+ <datepicker placeholder="结束日期"
36
+ style="width:60%"
37
+ v-model="model.endDate"
38
+ :value.sync="model.endDate"
39
+ condition="f_hand_date <='{} 23:59:59'"
40
+ :format="'yyyy-MM-dd'"
41
+ ></datepicker>
42
+ </div>
43
+
44
+ <div class="col-sm-2 form-group">
45
+ <label class="font_normal_body">客户编号</label>
46
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
47
+ condition="f_userinfo_code='{}'" placeholder='客户编号'>
48
+ </div>
49
+
50
+ <div class="span" style="float:right;">
51
+ <button
52
+ class="button_search button_spacing" style="width:90px" @click="$parent.$parent.danhuShow()">
53
+ 单户抄表
54
+ </button>
55
+
56
+ <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
57
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
58
+ <button class="button_delete button_spacing" @click="$parent.$parent.deletehand()">删除抄表</button>
59
+ <button class="button_search button_spacing" style="width: 90px"
60
+ @click="$parent.$parent.downloadFiles()">模板下载
61
+ </button>
62
+ <button class="button_search button_spacing" @click="$parent.$parent.clickupshow()">导入抄表</button>
63
+
64
+ <export-excel
65
+ :data="$parent.$parent.getCondition"
66
+ :field="$parent.$parent.getfield"
67
+ sqlurl="api/af-revenue/logic/saleExport" sql-name="getPlan" template-name='抄表导出'
68
+ :choose-col="true">
69
+ </export-excel>
70
+ <div
71
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
72
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
73
+ </div>
74
+ </div>
75
+ <div class="row" v-show="$parent.$parent.criteriaShow">
76
+ <!-- <div class="col-sm-2 form-group">-->
77
+ <!-- <label class="font_normal_body">表&ensp;编&ensp;号</label>-->
78
+ <!-- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_id"-->
79
+ <!-- condition="f_user_id='{}'" placeholder='表编号'>-->
80
+ <!-- </div>-->
81
+ <div class="col-sm-2 form-group">
82
+ <label class="font_normal_body">抄表状态</label>
83
+ <v-select :value.sync="model.f_audit_state"
84
+ class="select_list select"
85
+ v-model="model.f_audit_state"
86
+ style="width: 60%"
87
+ condition="f_meter_state = '{}'"
88
+ :options='$parent.$parent.auditState' placeholder='抄表状态'
89
+ close-on-select v-el:cc>
90
+ </v-select>
91
+ </div>
92
+ <div class="col-sm-2 form-group">
93
+ <label class="font_normal_body">表&emsp;&emsp;号</label>
94
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
95
+ condition="f_meternumber 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_user_name"
100
+ placeholder='客户姓名'
101
+ condition="f_user_name = '{}'">
102
+ </div>
103
+ <div class="col-sm-2 form-group">
104
+ <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
105
+ <v-select :value.sync="model.f_residential_area"
106
+ class="select_list select"
107
+ enter-push
108
+ v-model="model.f_residential_area"
109
+ style="width: 60%"
110
+ multiple="true"
111
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
112
+ close-on-select v-el:cc>
113
+ </v-select>
114
+ </div>
115
+ <div class="col-sm-2 form-group">
116
+ <label class="font_normal_body">楼&emsp;&emsp;栋</label>
117
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_building"
118
+ condition="f_building = '{}'" placeholder='楼栋'>
119
+ </div>
120
+ <div class="col-sm-2 form-group">
121
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
122
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
123
+ condition="f_unit = '{}'" placeholder='单元'>
124
+ </div>
125
+ <div class="col-sm-2 form-group">
126
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
127
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
128
+ condition="f_floor = '{}'" placeholder='楼层'>
129
+ </div>
130
+ <div class="col-sm-2 form-group">
131
+ <label class="font_normal_body">门&ensp;牌&ensp;号</label>
132
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
133
+ condition="f_room like '%{}%'" placeholder='门牌号'>
134
+ </div>
135
+ <div class="col-sm-2 form-group">
136
+ <label class="font_normal_body">客户地址</label>
137
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
138
+ condition="f_address like '%{}%'" placeholder='客户地址'>
139
+ </div>
140
+ <div class="col-sm-2 form-group">
141
+ <label class="font_normal_body">抄&ensp;表&ensp;员</label>
142
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
143
+ style="width:60%"
144
+ multiple="true"
145
+ :options='$parent.$parent.inputtores' placeholder='抄表员'
146
+ close-on-select
147
+ v-el:cc></v-select>
148
+ </div>
149
+ <!-- <div class="col-sm-2 form-group">-->
150
+ <!-- <label class="font_normal_body">是否缴费</label>-->
151
+ <!-- <v-select :value.sync="model.f_whether_pay" v-model='model.f_whether_pay'-->
152
+ <!-- style="width:60%"-->
153
+ <!-- :options='$parent.$parent.whetherpaies' placeholder='是否缴费'-->
154
+ <!-- close-on-select-->
155
+ <!-- condition="f_whether_pay = '{}'"></v-select>-->
156
+ <!-- </div>-->
157
+ <div class="col-sm-2 form-group">
158
+ <label class="font_normal_body">抄表单状态</label>
159
+ <v-select :value.sync="model.f_meter_state" v-model='model.f_meter_state'
160
+ style="width:60%"
161
+ :options='$parent.$parent.meterstates' placeholder='抄表单状态'
162
+ close-on-select
163
+ condition="f_meter_state = '{}'"></v-select>
164
+ </div>
165
+
166
+ <div class="col-sm-2 form-group">
167
+ <label for="belongmonth" class="font_normal_body">所属年月</label>
168
+ <datepicker placeholder="所属年月" style="width:60%"
169
+ v-model="model.belongmonth"
170
+ :value.sync="model.belongmonth"
171
+ :format="'yyyy-MM'"
172
+ :show-reset-button="true"
173
+ condition="belongmonth = '{}'"
174
+ :select-month="true">
175
+ </datepicker>
176
+ </div>
177
+ <div class="col-sm-2 form-group">
178
+ <label class="font_normal_body">客户类型</label>
179
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
180
+ :options='$parent.$parent.usertypes' placeholder='客户类型'
181
+ style="width:60%"
182
+ close-on-select
183
+ condition="f_user_type = '{}'"></v-select>
184
+ </div>
185
+ <div class="col-sm-2 form-group">
186
+ <label class="font_normal_body">用户等级</label>
187
+ <v-select :value.sync="model.f_user_level" v-model="model.f_user_level"
188
+ :options='$parent.$parent.userlevels' placeholder='用户等级'
189
+ style="width:60%"
190
+ close-on-select
191
+ condition="f_user_level = '{}'"></v-select>
192
+ </div>
193
+ <div class="col-sm-2 form-group">
194
+ <label class="font_normal_body color-red">抄&ensp;表&ensp;册</label>
195
+ <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"
196
+ :options='$parent.$parent.meterbooks' placeholder='抄表册'
197
+ :multiple="true"
198
+ style="width:60%"
199
+ condition="f_meter_book_num in {}"></v-select>
200
+ </div>
201
+ <div class="col-sm-2 form-group">
202
+ <label class="font_normal_body">调压箱名</label>
203
+ <v-select :value.sync="model.f_adjustable_name" v-model="model.f_adjustable_name"
204
+ :options='$parent.$parent.adjustablename' placeholder='调压箱名称'
205
+ style="width:60%"
206
+ close-on-select
207
+ condition="f_adjustable_name = '{}'"></v-select>
208
+ </div>
209
+ <div class="col-sm-2 flex-row" style="white-space: nowrap">
210
+ <label class="font_normal_body">应交气量</label>
211
+ <div class="row">
212
+ <input type="text" style="width:30%" class="input_search" v-model="model.oughtamountmin"
213
+ condition="f_oughtamount >= {} " placeholder="">
214
+ <label class="font_normal_body"> ≤ x ≤ </label>
215
+ <input type="text" style="width:30%" class="input_search" v-model="model.oughtamountmax"
216
+ condition="f_oughtamount <= {} " placeholder="">
217
+ </div>
218
+ </div>
219
+ <res-select-group :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes"
220
+ v-ref:sel></res-select-group>
221
+ </div>
222
+
223
+
224
+ <!-- 多选框 -->
225
+ <!--<div class="col-sm-2 form-group">-->
226
+ <!--<button class="btn btn-success" @click="$parent.$parent.batchDownHand()">计划下发</button>-->
227
+ <!--</div>-->
228
+
229
+ <!--<div class="form-group" v-if="$parent.$parent.meter_state">-->
230
+ <!--<button class="btn btn-success" @click="$parent.$parent.allDownHand()" >全部下发</button>-->
231
+ <!--</div>-->
232
+ <!-- 多选框结束 -->
233
+
234
+ <!--<div class="col-sm-2 form-group">-->
235
+ <!--<button class="btn btn-success" @click="$parent.$parent.adjust()">抄表员调整</button>-->
236
+ <!--</div>-->
237
+ <!--<div class="col-sm-2 form-group">-->
238
+ <!--<button class="btn btn-success" @click="$parent.$parent.fileUpload()">文件上传</button>-->
239
+ <!--</div>-->
240
+ <!--<div class="col-sm-2 form-group">-->
241
+ <!--<button class="btn btn-success" @click="search(), $parent.$parent.clean()">打印</button>-->
242
+ <!--</div>-->
243
+
244
+ </div>
245
+ </criteria>
246
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="hand_manager_grid">
247
+ <template partial='head'>
248
+ <tr>
249
+ <!--<th><input type='checkbox' v-model="$parent.$parent.$parent.all" @change="$parent.$parent.$parent.chooseAll"></th>-->
250
+ <th>
251
+ <nobr>序号</nobr>
252
+ </th>
253
+ <th>
254
+ <nobr>
255
+ <data-order field="f_userinfo_code" name="客户编号"
256
+ :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
257
+ </nobr>
258
+ </th>
259
+ <!-- <th>-->
260
+ <!-- <nobr>表编号</nobr>-->
261
+ <!-- </th>-->
262
+ <!-- <th>基本信息</th>-->
263
+ <th>
264
+ <nobr>
265
+ <data-order field="f_address" name="基本信息"
266
+ :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
267
+ </nobr>
268
+ </th>
269
+ <th>
270
+ <nobr>用户等级</nobr>
271
+ </th>
272
+ <!--<th><nobr><data-order field="f_building" name="楼号"-->
273
+ <!--:order.sync="$parent.$parent.$parent.orderFields.f_building"></data-order></nobr>-->
274
+ <!--</th>-->
275
+ <!--<th><nobr><data-order field="f_unit" name="单元号"-->
276
+ <!--:order.sync="$parent.$parent.$parent.orderFields.f_unit"></data-order></nobr>-->
277
+ <!--</th>-->
278
+ <!--<th><nobr><data-order field="f_room" name="房号"-->
279
+ <!--:order.sync="$parent.$parent.$parent.orderFields.f_room"></data-order></nobr>-->
280
+ <!--</th>-->
281
+ <th>
282
+ <nobr>所属年月</nobr>
283
+ </th>
284
+ <th>
285
+ <nobr>上期结余</nobr>
286
+ </th>
287
+ <th>
288
+ <nobr>表号</nobr>
289
+ </th>
290
+ <th>
291
+ <nobr>用户电话</nobr>
292
+ </th>
293
+ <th>
294
+ <nobr>上期底数</nobr>
295
+ </th>
296
+ <th>
297
+ <nobr>本期底数</nobr>
298
+ </th>
299
+
300
+
301
+ <th>
302
+ <nobr>应交气量</nobr>
303
+ </th>
304
+ <th>
305
+ <nobr>增量值</nobr>
306
+ </th>
307
+ <th>
308
+ <nobr>应交金额</nobr>
309
+ </th>
310
+ <th>
311
+ <nobr>抄表结果状态</nobr>
312
+ </th>
313
+ <th>
314
+ <nobr>是否缴费</nobr>
315
+ </th>
316
+ <!-- <th>上次抄表日期</th>-->
317
+ <th>
318
+ <nobr>
319
+ <data-order field="f_last_input_date" name="上次抄表录入日期"
320
+ :order.sync="$parent.$parent.$parent.orderFields.f_last_input_date"></data-order>
321
+ </nobr>
322
+ </th>
323
+ <!-- <th>下发日期</th>-->
324
+ <th>
325
+ <nobr>
326
+ <data-order field="f_hand_date" name="下发日期"
327
+ :order.sync="$parent.$parent.$parent.orderFields.f_hand_date"></data-order>
328
+ </nobr>
329
+ </th>
330
+ <!-- <th>抄表日期</th>-->
331
+ <th>
332
+ <nobr>
333
+ <data-order field="f_input_date" name="抄表录入日期"
334
+ :order.sync="$parent.$parent.$parent.orderFields.f_input_date"></data-order>
335
+ </nobr>
336
+ </th>
337
+ <!-- <th>抄表册</th>-->
338
+ <th>
339
+ <nobr>
340
+ <data-order field="f_book_name" name="抄表册"
341
+ :order.sync="$parent.$parent.$parent.orderFields.f_book_name"></data-order>
342
+ </nobr>
343
+
344
+ </th>
345
+ <th>
346
+ <nobr>册内排序</nobr>
347
+ </th>
348
+ <th>
349
+ <nobr>调压箱名称</nobr>
350
+ </th>
351
+ <th>
352
+ <nobr>抄表员</nobr>
353
+ </th>
354
+ <th>
355
+ <nobr>录入人员</nobr>
356
+ </th>
357
+ <th>
358
+ <nobr>下发人员</nobr>
359
+ </th>
360
+ <th>
361
+ <nobr>备注</nobr>
362
+ </th>
363
+ <th>
364
+ <nobr>操作</nobr>
365
+ </th>
366
+ <!-- f_oughtfee-->
367
+ </tr>
368
+ </template>
369
+ <template partial='body'>
370
+ <!--<td style="text-align: center;">-->
371
+ <!--<input v-if="row.f_meter_state === '未下发'"-->
372
+ <!--:id="model.pageIndex" type='checkbox' @change="$parent.$parent.$parent.chooseOne($event,row,model.rows)"-->
373
+ <!--:checked="$parent.$parent.$parent.ischecked(row)"/>-->
374
+ <!--</td>-->
375
+ <td style="text-align: center;">{{ $index + 1 }}</td>
376
+ <td>{{ row.f_userinfo_code }}</td>
377
+ <td style="text-align: center;">{{ row.f_user_name }}&nbsp;&nbsp;{{ row.f_address }}</td>
378
+ <td style="text-align: center;">{{ row.f_user_level }}</td>
379
+ <!--<td>{{row.f_building}}</td>-->
380
+ <!--<td>{{row.f_unit}}</td>-->
381
+ <!--<td>{{row.f_room}}</td>-->
382
+ <td style="text-align: center;">{{ row.belongmonth }}</td>
383
+ <td style="text-align: center;">{{ row.f_balance }}</td>
384
+ <td style="text-align: center;">{{ row.f_meternumber }}</td>
385
+ <td style="text-align: center;">{{ row.f_user_phone }}</td>
386
+ <td style="text-align: center;">{{ row.f_last_tablebase }}</td>
387
+ <td id="hand-creat" v-if="row.f_meter_state === '未抄表' " style="text-align: center;">
388
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
389
+ 'has-success has-feedback': !row.error,
390
+ 'has-error has-feedback': row.error}"
391
+ >
392
+
393
+ <input title="可录入小数点后三位" type="text" class="input_search" v-model="row.f_tablebase"
394
+ @blur="$parent.$parent.$parent.beforenter($index, row)"
395
+ v-next-el="{id: $index+2}" :id="$index+1" style="width: 100px;padding: 6px;"
396
+ @focus="$parent.$parent.$parent.clearError(row)"
397
+ :disabled="row.state === '开始'">
398
+ </div>
399
+
400
+ <span v-if="row.error && row.error !== ''" style="color: #ff0000;">{{ row.error }}</span>
401
+ </td>
402
+ <td id="hand-creat" v-if="row.f_meter_state !== '未抄表' " style="text-align: center;">
403
+ {{ row.f_tablebase }}
404
+ </td>
405
+ <!--<td style="text-align: center;" v-if="row.f_oughtamount">{{ row.f_oughtamount }}</td>-->
406
+ <td style="text-align: center;">{{ $parent.$parent.$parent.calculationBase(row) }}</td>
407
+ <td style="text-align: center;">
408
+ <div class="form-group" style="margin-bottom:0px;display: contents;"
409
+ :class="{'has-success has-feedback': !row.error,'has-error has-feedback': row.error}"
410
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0 && $parent.$parent.$parent.jurisdiction.includes('增量录入')">
411
+ <input title="底数最多只能输入小数点后3位" type="number" class="input_search"
412
+ v-model="row.f_adjustment_volume"
413
+ style="width: 100px;padding: 6px;"
414
+ :disabled="row.state === '开始'">
415
+ </div>
416
+ <div v-else>
417
+ {{ row.f_adjustment_volume }}
418
+ </div>
419
+ </td>
420
+ <td style="text-align: center;">{{ row.f_oughtfee }}</td>
421
+
422
+ <td style="text-align: center;">
423
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
424
+ 'has-success has-feedback': !row.error,
425
+ 'has-error has-feedback': row.error}"
426
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0">
427
+ <v-select :value.sync="row.f_result_state" v-model="row.f_result_state"
428
+ :options='$parent.$parent.$parent.resultstate' placeholder='抄表结果状态'
429
+ style="margin-right:90px" width="100%"
430
+ :value-single="true"
431
+ close-on-select
432
+ condition="f_adjustable_name = '{}'"></v-select>
433
+ <!-- <span id="inputError2Status" class="sr-only">(error)</span> -->
434
+ </div>
435
+ <div style="text-align: center;" v-else>
436
+ {{ row.f_result_state }}
437
+ </div>
438
+ </td>
439
+ <td style="text-align: center;">{{ row.f_whether_pay }}</td>
440
+ <td style="text-align: center;">{{ row.f_last_input_date }}</td>
441
+ <td style="text-align: center;">{{ row.f_hand_date }}</td>
442
+ <td style="text-align: center;">
443
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
444
+ 'has-success has-feedback': !row.error,
445
+ 'has-error has-feedback': row.error}"
446
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0 && $parent.$parent.$parent.jurisdiction.includes('录入日期修正')">
447
+ <datepicker id="endDate" placeholder="抄表时间"
448
+ v-model="row.f_input_date"
449
+ :value.sync="row.f_input_date"
450
+ :format="'yyyy-MM-dd HH:mm:ss'"
451
+ :show-reset-button="true">
452
+ </datepicker>
453
+ </div>
454
+ <div v-else>
455
+ {{ row.f_input_date }}
456
+ </div>
457
+ </td>
458
+ <td style="text-align: center;">{{ row.f_book_name }}</td>
459
+ <td style="text-align: center;">{{ row.f_meter_book_sort }}</td>
460
+ <td style="text-align: center;">{{ row.f_adjustable_name }}</td>
461
+ <td style="text-align: center;">{{ row.f_inputtor }}</td>
462
+ <td style="text-align: center;">{{ row.f_input_person }}</td>
463
+ <td style="text-align: center;">{{ row.f_operator }}</td>
464
+ <td style="text-align: center;">{{ row.f_comments }}</td>
465
+ <td style="text-align: center;">
466
+ <nobr>
467
+ <!-- 已抄表,还没审核-->
468
+ <button type="button" name="button" class="button_search button_spacing width-60"
469
+ v-if="row.f_meter_state === '待审核' && (row.id == row.maxid || !row.maxid)"
470
+ @click.stop="$parent.$parent.$parent.cancelAuditHand(row)">撤销
471
+ </button>
472
+ <!-- 未抄表,删除计划,直接删表内数据-->
473
+ <button type="button" name="button" class="btn btn-danger"
474
+ v-if="row.f_meter_state === '未抄表'"
475
+ @click.stop="$parent.$parent.$parent.delectHand(row) && row.states === 1"
476
+ >删除
477
+ </button>
478
+ <!-- 已抄表,已审核,冲正(状态改为冲正,添加负记录,需要重新下发)-->
479
+ <button type="button" name="button" class="button_search button_spacing width-60"
480
+ @click.stop="$parent.$parent.$parent.cancelHand(row)"
481
+ v-if="row.f_meter_state === '已抄表' && row.maxid==row.id && (row.f_whether_pay === '否' || row.f_accounts_state === '自动下账' || (row.f_whether_pay === '是' && row.f_oughtfee == 0 ))">
482
+ 冲正
483
+ </button>
484
+
485
+ <!-- <button type="button" name="button" class="btn btn-link"-->
486
+ <!-- v-if="row.f_meter_state === '待审核' ">待审核-->
487
+ <!-- </button>-->
488
+
489
+
490
+ </nobr>
491
+ </td>
492
+ </template>
493
+ </data-grid>
494
+ </criteria-paged>
495
+ <table class="table-hover">
496
+ <tr style="position: relative" class="table-bordered">
497
+ <td
498
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
499
+ 汇总信息
500
+ </td>
501
+ <td
502
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
503
+ 应缴气量:&emsp;{{ sumsmodel.f_oughtamount }}
504
+ </td>
505
+ <td
506
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
507
+ 应缴金额:&emsp;{{ sumsmodel.f_oughtfee }}
508
+ </td>
509
+ </tr>
510
+ </table>
511
+ <split-price :showdata="splitdata" :pricesplit="priceSplit" v-if="priceSplit"></split-price>
512
+
513
+ <modal :show.sync="danhu.show" :title='danhutitle' backdrop="false" coverstyle="danhumodal">
514
+ <article slot="modal-body" class="modal-body">
515
+ <div class="panel panel-primary datapanel">
516
+ <div class="row">
517
+ <label class="control-label col-sm-6 flex-row"
518
+ style="transform: translate(0,8px)">客户姓名:{{ danhu.info.f_user_name }}</label>
519
+ <label class="control-label col-sm-6 flex-row"
520
+ style="transform: translate(0,8px)">客户编号:{{ danhu.info.f_userinfo_code }}</label>
521
+ <label class="control-label col-sm-6 flex-row"
522
+ style="transform: translate(0,8px)">用户证号:{{ danhu.info.f_book_no }}</label>
523
+ <label class="control-label col-sm-12 flex-row"
524
+ style="transform: translate(0,8px)">客户地址:{{ danhu.info.f_address }}</label>
525
+ <label class="control-label col-sm-6 flex-row"
526
+ style="transform: translate(0,8px)">上期抄表结果:{{ danhu.info.f_result_state }}</label>
527
+ <div class="col-sm-6 flex-row">
528
+ <label class="control-label" style="transform: translate(0,8px)">抄表结果状态:</label>
529
+ <v-select placeholder='抄表结果状态' close-on-select
530
+ v-model="f_new_result_state"
531
+ :value-single="true"
532
+ :multiple="false"
533
+ style="width:50%"
534
+ :value.sync="f_new_result_state"
535
+ :options="resultstate">
536
+ </v-select>
537
+ </div>
538
+ <label class="control-label col-sm-6 flex-row"
539
+ style="transform: translate(0,8px)">上次抄表日期:{{ danhu.info.f_hand_date }}</label>
540
+ <label class="control-label col-sm-6 flex-row"
541
+ style="transform: translate(0,8px)">上期底数:{{ danhu.info.f_tablebase }}</label>
542
+ </div>
543
+ </div>
544
+ <div class="panel panel-primary datapanel">
545
+ <div class="row">
546
+ <div class="col-sm-6 flex-row" style="margin-top: 2px">
547
+ <label for="danhucode" class="control-label" style="transform: translate(0,8px)">客户编号</label>
548
+ <input id="danhucode" type="text" class="input_search " style="width: 60% !important;"
549
+ v-model="danhu.f_userinfo_code" v-ref:danhucode @keyup.enter.stop="danhuCodeSearch"
550
+ placeholder='客户编号'/>
551
+ </div>
552
+ <div class="col-sm-6 flex-row" style="margin-top: 2px">
553
+ <label for="danhubase" class="control-label" style="transform: translate(0,8px)">本期底数</label>
554
+ <input id="danhubase" type="number" class="input_search " style="width: 60% !important;"
555
+ v-model="danhu.f_tablebase" @keyup.enter.stop="downAndHand"
556
+ placeholder='本期底数'/>
557
+ </div>
558
+ </div>
559
+ </div>
560
+ </article>
561
+ <footer slot="modal-footer">
562
+ </footer>
563
+ </modal>
564
+
565
+ <modal :show.sync="uploadshow" v-ref:modal backdrop="false">
566
+ <header slot="modal-header" class="modal-header">
567
+ <button type="button" class="close" @click="close"><span>&times;</span></button>
568
+ <h4 class="modal-title">文件上传</h4>
569
+ </header>
570
+ <article slot="modal-body" class="modal-body">
571
+ <div class="col-sm-2 form-group">
572
+ <file-upload class="my-file-uploader" name="myFile"
573
+ action="api/af-revenue/file/uploadFile" tagname="文件上传" :headers="headers" multiple
574
+ v-ref:file></file-upload>
575
+ </div>
576
+ </article>
577
+
578
+ <footer slot="modal-footer" class="modal-footer">
579
+ <!-- <button v-show="show" type="button" class="btn btn-default" @click='close'>取消</button>
580
+ <button v-show="show" type="button" class="btn btn-success" @click='confirm(filename)'>确认</button> -->
581
+ </footer>
582
+ </modal>
583
+ <modal :show.sync="examineshow" v-ref:modal backdrop="false">
584
+ <header slot="modal-header" class="modal-header">
585
+ <button type="button" class="close" @click="close"><span>&times;</span></button>
586
+ <h4 class="modal-title">冲正审核</h4>
587
+ </header>
588
+ <article slot="modal-body" class="modal-body">
589
+ <div class="row">
590
+ <div class="col-sm-12 form-group">
591
+ <label class="font_normal_body">冲正原因</label>
592
+ <input type="text" style="width:90%" class="input_search" :disabled="examinetype"
593
+ v-model="examinerow.f_examinereason"
594
+ placeholder='冲正原因'>
595
+ </div>
596
+ <upload :blodid="examinerow.id" v-ref:upload :fusetype="uploadText" isremark="true"
597
+ style="width:auto"></upload>
598
+ </div>
599
+
600
+ </article>
601
+
602
+ <footer slot="modal-footer" class="modal-footer">
603
+ <button v-show="examineshow" type="button" class="btn btn-default" @click='close'>取消</button>
604
+ <button v-show="!examinetype" type="button" class="btn btn-success" @click='examineconfirm()'>确认</button>
605
+ <button type="button" v-show="examinetype" class="btn btn-success" @click='cancelHand5()'>审核通过</button>
606
+ </footer>
607
+ </modal>
608
+
609
+ <modal :show.sync="showerr" backdrop="false">
610
+ <header slot="modal-header" class="modal-header">
611
+ <button type="button" class="close" @click="closeerr"><span>&times;</span></button>
612
+ <h4 class="modal-title">抄表出错!</h4>
613
+ </header>
614
+ <article slot="modal-body" class="modal-body">
615
+ <div class="row">
616
+ <p> {{ err }}</p>
617
+ <input type="text" class="form-control" @blur="paycodefocus" v-el:paycode>
618
+ </div>
619
+
620
+ </article>
621
+
622
+ <footer slot="modal-footer" class="modal-footer">
623
+ <button v-show="showerr" type="button" class="btn btn-default" @click='closeerr'>关闭</button>
624
+ </footer>
625
+ </modal>
626
+
627
+ <modal :show.sync="detailsShow" v-ref:model_details backdrop="true" width="700px">
628
+ <article slot="modal-body" class="modal-body">
629
+ <div class="flex-row">
630
+ <div style="width: 50%">
631
+ <mix-price-info :data="row" v-if="row.f_price_type === '固定气价'" v-ref:mix_price></mix-price-info>
632
+ <stairinfo :data="row" v-if="row.f_price_type === '阶梯气价'" v-ref:statir></stairinfo>
633
+ </div>
634
+ <div style="width: 50%" class="panel">
635
+ <div class="panel-heading detail-panel">
636
+ <h4>计算工具</h4>
637
+ </div>
638
+ <form class="form-horizontal" style="padding: 10px">
639
+ <div class="form-group">
640
+ <label class="col-sm-4 col-md-4 control-label" style="text-align: left">预购金额:</label>
641
+ <div class="col-sm-8 col-md-8">
642
+ <input type="number" class="form-control" placeholder="预购金额" @blur="computeAmount"
643
+ v-el:inputmoney>
644
+ </div>
645
+ </div>
646
+ <div class="form-group">
647
+ <label class="col-sm-4 col-md-4 control-label" style="text-align: left">当前底数:</label>
648
+ <div class="col-sm-8 col-md-8">
649
+ <input type="number" class="form-control" placeholder="当前底数" v-model="row.f_last_tablebase"
650
+ disabled>
651
+ </div>
652
+ </div>
653
+ <div class="form-group">
654
+ <label class="col-sm-4 col-md-4 control-label" style="text-align: left">应抄底数:</label>
655
+ <div class="col-sm-8 col-md-8">
656
+ <input type="number" class="form-control" placeholder="应抄底数" v-model="should_base" disabled>
657
+ </div>
658
+ </div>
659
+ <div class="form-group">
660
+ <label class="col-sm-12 col-md-12 control-label" style="text-align: center">计算公式</label>
661
+ <div class="col-sm-12 col-md-12">
662
+ <input type="text" class="form-control" placeholder="计算公式" v-model="designFormulas" disabled>
663
+ </div>
664
+ </div>
665
+ </form>
666
+ </div>
667
+ </div>
668
+ </article>
669
+ <footer slot="modal-footer" class="modal-footer">
670
+ <button type="button" class="button_search button_spacing" @click='customPricing()'>自定义划价</button>
671
+ </footer>
672
+ </modal>
673
+
674
+ <modal :show.sync="priceModel" v-ref:modal backdrop="false">
675
+ <header slot="modal-header" class="modal-header">
676
+ <h4 class="modal-title">自定义划价</h4>
677
+ </header>
678
+ <article slot="modal-body" class="modal-body">
679
+ <div>
680
+ <mix-price-info :data="row" v-if="row.f_price_type === '固定气价'" v-ref:mix_price></mix-price-info>
681
+ <stairinfo :data="row" v-if="row.f_price_type === '阶梯气价'" v-ref:statir></stairinfo>
682
+ </div>
683
+ <div class="row">
684
+ <template v-if="row.f_price_type === '固定气价'">
685
+ <div class="col-sm-4 form-group">
686
+ <label class="font_normal_body">单价</label>
687
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_price1"
688
+ placeholder='单价'></input>
689
+ </div>
690
+ <div class="col-sm-4 form-group">
691
+ <label class="font_normal_body">数量</label>
692
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_gas1"
693
+ placeholder='数量'></input>
694
+ </div>
695
+ <div class="col-sm-4 form-group">
696
+ <label class="font_normal_body">金额</label>
697
+ <p class="form-control" style="width:60%" disabled>
698
+ {{ row.f_stair_money1 = stairMoney(row.f_stair_price1, row.f_stair_gas1) }}</p>
699
+ </div>
700
+ </template>
701
+
702
+ <template v-if="row.f_price_type === '阶梯气价'">
703
+ <div class="col-sm-4 form-group">
704
+ <label class="font_normal_body">阶梯一单价</label>
705
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_price1"
706
+ placeholder='阶梯一单价'></input>
707
+ </div>
708
+ <div class="col-sm-4 form-group">
709
+ <label class="font_normal_body">阶梯一数量</label>
710
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_gas1"
711
+ placeholder='阶梯一数量'></input>
712
+ </div>
713
+ <div class="col-sm-4 form-group">
714
+ <label class="font_normal_body">阶梯一金额</label>
715
+ <p class="form-control" style="width:60%" disabled>
716
+ {{ row.f_stair_money1 = stairMoney(row.f_stair_price1, row.f_stair_gas1) }}</p>
717
+ </div>
718
+ <div class="col-sm-4 form-group">
719
+ <label class="font_normal_body">阶梯二单价</label>
720
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_price2"
721
+ placeholder='阶梯二单价'></input>
722
+ </div>
723
+ <div class="col-sm-4 form-group">
724
+ <label class="font_normal_body">阶梯二数量</label>
725
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_gas2"
726
+ placeholder='阶梯二数量'></input>
727
+ </div>
728
+ <div class="col-sm-4 form-group">
729
+ <label class="font_normal_body">阶梯二金额</label>
730
+ <p class="form-control" style="width:60%" disabled>
731
+ {{ row.f_stair_money2 = stairMoney(row.f_stair_price2, row.f_stair_gas2) }}</p>
732
+ </div>
733
+ <div class="col-sm-4 form-group">
734
+ <label class="font_normal_body">阶梯三单价</label>
735
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_price3"
736
+ placeholder='阶梯三单价'></input>
737
+ </div>
738
+ <div class="col-sm-4 form-group">
739
+ <label class="font_normal_body">阶梯三数量</label>
740
+ <input type="text" class="form-control" style="width:60%" v-model="row.f_stair_gas3"
741
+ placeholder='阶梯三数量'></input>
742
+ </div>
743
+ <div class="col-sm-4 form-group">
744
+ <label class="font_normal_body">阶梯三金额</label>
745
+ <p class="form-control" style="width:60%" disabled>
746
+ {{ row.f_stair_money3 = stairMoney(row.f_stair_price3, row.f_stair_gas3) }}</p>
747
+ </div>
748
+ </template>
749
+ <div class="col-sm-4 form-group">
750
+ </div>
751
+ <div class="col-sm-4 form-group">
752
+ <label class="font_normal_body">总用气量</label>
753
+ <p class="form-control" style="width:60%" disabled>
754
+ {{ ((row.f_stair_gas1 - 0) + (row.f_stair_gas2 - 0) + (row.f_stair_gas3 - 0)).toFixed(3) }}</p>
755
+ </div>
756
+ <div class="col-sm-4 form-group">
757
+ <label class="font_normal_body">总用气金额</label>
758
+ <p class="form-control" style="width:60%" disabled>
759
+ {{ ((row.f_stair_money1 - 0) + (row.f_stair_money2 - 0) + (row.f_stair_money3 - 0)).toFixed(3) }}</p>
760
+ </div>
761
+ <p style="color: red">注意: 自定义气量总量必须等于本次抄表用气量, 本次抄表总量: {{ row.f_oughtamount }}</p>
762
+ </div>
763
+ </article>
764
+ <footer slot="modal-footer" class="modal-footer">
765
+ <button type="button" class="button_clear button_spacing" @click="close()">取消</button>
766
+ <button type="button" class="button_search button_spacing" @click='customPricingConfirm()'>确认</button>
767
+ </footer>
768
+ </modal>
769
+ </div>
770
+ </div>
771
+ </template>
772
+ <script>
773
+ // eslint-disable-next-line import/no-unresolved
774
+ import MixPriceInfo from '../../components/revenue/base/leftview/MixPriceInfo'
775
+ import {PagedList, HttpResetClass} from 'vue-client'
776
+ import Vue from 'vue'
777
+ import co from 'co'
778
+
779
+ let readyGen = async function (self) {
780
+ await self.$getConfig(self, 'HandManager')
781
+ await self.$LoadParams.loadMeterBook(self.f_filialeid)
782
+ self.loadMeterBooks()
783
+ self.getfield = self.config.excelHeaders
784
+ self.sumsmodel = self.$refs.paged.$refs.grid.model.sums
785
+ self.reflash()
786
+ }
787
+
788
+ let downGen = function* (type, condition, data, self) {
789
+ // if(data == 0 ) {
790
+ // self.$showAlert('下发计划户数为0!请选择需要下发的计划!!', 'danger', 0)
791
+ // return
792
+ // }
793
+ self.condition = condition
794
+ self.msg = '确认下发计划'
795
+ // 判断之前是否有未抄表数据
796
+ let getUnhand = null
797
+ // let getUnhand = yield Vue.resetpost('api/af-revenue/sql/getUnhand', {data: {startDate: self.startDate, condition: self.condition}}, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
798
+ // if (type === 'batch' || type === 'single') {
799
+ if (type === 'single') {
800
+ getUnhand = yield Vue.resetpost('api/af-revenue/sql/getUnhand', {
801
+ data: {
802
+ startDate: self.model.params.startDate,
803
+ condition: condition
804
+ }
805
+ }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
806
+ self.msg = `下发客户编号为${data.f_userinfo_code}的抄表计划?`
807
+ // } else if (type === 'all') {
808
+ } else if (type === 'batch') {
809
+ let tempCondition = condition.replace("and f_meter_state = '未下发'", '')
810
+ getUnhand = yield Vue.resetpost('api/af-revenue/sql/getUnhand', {
811
+ data: {
812
+ startDate: self.model.params.startDate,
813
+ condition: tempCondition
814
+ }
815
+ }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
816
+ self.msg = `确认下发当前总计: ${data} 户计划`
817
+ }
818
+ for (let i = 0; i < getUnhand.data.length; i++) {
819
+ let temp = {
820
+ id: getUnhand.data[i].id,
821
+ f_user_id: getUnhand.data[i].f_user_id,
822
+ f_userfiles_id: getUnhand.data[i].f_userfiles_id,
823
+ f_adjustable_id: getUnhand.data[i].f_adjustable_id,
824
+ f_adjustable_name: getUnhand.data[i].f_adjustable_name
825
+ }
826
+ console.log('=================================================================================')
827
+ console.log('下发计划查看调压箱和调压箱编号', temp)
828
+ console.log('========================================================================================')
829
+ self.unhandplan.push(temp)
830
+ }
831
+ if (getUnhand.data.length > 0) {
832
+ self.msg = self.msg + `, 警告: 之前有 ${getUnhand.data.length} 条未抄表数据`
833
+ }
834
+ self.show = true
835
+ }
836
+
837
+ let beforenterGen = async function (self, index, row) {
838
+ // 验证是不是总表
839
+ // self.enter(index, row)
840
+ if (row.f_totalsplit_type === '总表') {
841
+ let hasUnHand = await self.$HandService.getSplitInfo(row.f_userfiles_id)
842
+ if (hasUnHand) {
843
+ self.$showAlert('该表下面有未抄或未审核的分表信息!!请先抄录或审核分表信息!', 'danger', 0)
844
+ row.f_tablebase = null
845
+ } else {
846
+ self.enter(index, row)
847
+ }
848
+ } else {
849
+ self.enter(index, row)
850
+ }
851
+ }
852
+
853
+ export default {
854
+ title: '机表抄表',
855
+ components: {MixPriceInfo},
856
+ data () {
857
+ return {
858
+ priceModel: false,
859
+ initres: {
860
+ org: [this.$login.f.orgid],
861
+ dep: [],
862
+ user: []
863
+ },
864
+ sumsmodel: [],
865
+ orgCondtionStr: '',
866
+ priceSplit: false,
867
+ deletestate: false,
868
+ criteriaShow: false,
869
+ model: new PagedList('api/af-revenue/sql/getPlan', 50, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'f_hand_date desc'`}, {
870
+ f_oughtamount: 0,
871
+ f_oughtfee: 0
872
+ }),
873
+ config: {
874
+
875
+ // 导出列要和查询列相同
876
+ excelHeaders: {
877
+ 'f_user_id': '表编号',
878
+ 'f_meternumber': '表号',
879
+ 'f_inputtor': '抄表员',
880
+ 'f_balance': '上期结余',
881
+ 'f_last_input_date': '上次抄表',
882
+ 'f_hand_date': '下发时间',
883
+ 'f_input_date': '抄表日期',
884
+ 'f_userinfo_code': '客户编号',
885
+ 'f_address': '客户地址',
886
+ 'f_residential_area': '小区名称',
887
+ 'f_user_name': '客户姓名',
888
+ 'f_last_tablebase': '上期底数',
889
+ 'f_tablebase': '本期指数',
890
+ 'f_oughtfee': '应交金额',
891
+ 'f_oughtamount': '应交气量',
892
+ 'f_whether_pay': '是否缴费',
893
+ 'f_book_name': '抄表册',
894
+ 'f_meter_book_sort': '册内排序',
895
+ 'f_input_person': '录入人员',
896
+ 'f_operator': '下发人员',
897
+ 'f_meter_classify': '气表分类',
898
+ 'f_meter_style': '气表型号',
899
+ 'f_accounts_state': '下账标识',
900
+ 'f_user_phone': '客户电话',
901
+ 'f_adjustable_id': '表箱号',
902
+ 'f_comments': '备注'
903
+ },
904
+ examine: true,
905
+ customCal: false
906
+ },
907
+ meter_state: false, // 是否显示计划下发按钮
908
+ downModel: {
909
+ downDate: Vue.$login.toStandardTimeString(),
910
+ downWay: 'downWithUserfiles',
911
+ downInputtor: []
912
+ },
913
+ inputtorModel: {
914
+ inputtor: [],
915
+ reason: ''
916
+ },
917
+ auditState: [{label: '全部', value: ''}, {label: '未抄表', value: '未抄表'}, {
918
+ label: '待审核',
919
+ value: '待审核'
920
+ }, {label: '已抄表', value: '已抄表'}],
921
+
922
+ plans: [], // 记录当前行是否被勾选
923
+ all: false, // 是否全选
924
+ show: false, // 下发日期模态框显示
925
+ unhandplan: [], // 之前是否有未抄表记录
926
+ downConfirm: false, // 下发若有未抄记录,确认框
927
+ uploadshow: false,
928
+ // 小区
929
+ residentialArea: [],
930
+ f_new_result_state: '正常使用',
931
+
932
+ // downDate: this.$login.toStandardYearMonth().replace("-", ""),
933
+ msg: '',
934
+ condition: '',
935
+ headers: {'username': Vue.$login.f.name, 'blodid': Vue.$login.guid()},
936
+ orderDefault: 'f_hand_date',
937
+ orderFields: {
938
+ f_userinfo_id: 'no'
939
+ },
940
+ getfield: {},
941
+ outlet: '',
942
+ filiale: '',
943
+ condition2: '',
944
+ area: [],
945
+ inputtouPerson: [],
946
+ meters: [{label: '全部', value: ''}, {label: '机表', value: '机表'}, {label: '物联网表', value: '物联网表'}],
947
+ resultstate: this.$appdata.getParam('抄表结果状态'),
948
+ meterstates: this.$appdata.getParam('抄表状态') ? [{
949
+ label: '全部',
950
+ value: ''
951
+ }, ...this.$appdata.getParam('抄表状态')] : [],
952
+ usertypes: this.$appdata.getParam('客户类型') ? [{
953
+ label: '全部',
954
+ value: ''
955
+ }, ...this.$appdata.getParam('客户类型')] : [],
956
+ userlevels: this.$appdata.getParam('用户等级') ? [{
957
+ label: '全部',
958
+ value: ''
959
+ }, ...this.$appdata.getParam('用户等级')] : [],
960
+ adjustablename: this.$appdata.getParam('调压箱名称') ? [{
961
+ label: '全部',
962
+ value: ''
963
+ }, ...this.$appdata.getParam('调压箱名称')] : [],
964
+ inputtores2: [], // 下发时使用自定义抄表员,
965
+ splitdata: '',
966
+ f_filialeid: this.$login.f.orgid,
967
+ meterbooks: [],
968
+ upshow: false,
969
+ inputid: 0,
970
+ examineshow: false,
971
+ examinerow: null,
972
+ showfiles: false,
973
+ uploadText: '抄表',
974
+ examinetype: false,
975
+ danhu: {
976
+ show: false,
977
+ f_userinfo_code: '',
978
+ f_tablebase: '',
979
+ info: {}
980
+ },
981
+ showerr: false,
982
+ err: '',
983
+ // 请求对象(批量导入,查询进度使用)
984
+ HttpReset: new HttpResetClass(),
985
+ // 气价使用详情展示
986
+ detailsShow: false,
987
+ row: null,
988
+ // 应抄底数
989
+ should_base: 0,
990
+ // 计算公式
991
+ designFormulas: null,
992
+ usermlimit: this.$appdata.getSingleValue('民用自动审核区间'),
993
+ userfmlimit: this.$appdata.getSingleValue('非民用自动审核区间')
994
+ }
995
+ },
996
+ ready () {
997
+ this.getaddress()
998
+ readyGen(this)
999
+ },
1000
+ mounted () {
1001
+ console.log(this.inputid)
1002
+ document.getElementById(this.inputid).focus()
1003
+ },
1004
+ methods: {
1005
+ stairMoney (price, gas) {
1006
+ return (price * gas).toFixed(3) - 0
1007
+ },
1008
+ async customPricingConfirm () {
1009
+ let sumGas = (this.row.f_stair_gas1 - 0) + (this.row.f_stair_gas2 - 0) + (this.row.f_stair_gas3 - 0)
1010
+ if (sumGas !== (this.row.f_oughtamount - 0)) {
1011
+ this.$showMessage('自定义划价总气量不符, 请检查')
1012
+ return
1013
+ }
1014
+ let row = {
1015
+ id: this.row.id,
1016
+ f_oughtfee: ((this.row.f_stair_money1 - 0) + (this.row.f_stair_money2 - 0) + (this.row.f_stair_money3 - 0)).toFixed(3),
1017
+ f_stair_price1: this.row.f_stair_price1,
1018
+ f_stair_gas1: this.row.f_stair_gas1,
1019
+ f_stair_money1: this.row.f_stair_money1,
1020
+ f_stair_price2: this.row.f_stair_price2,
1021
+ f_stair_gas2: this.row.f_stair_gas2,
1022
+ f_stair_money2: this.row.f_stair_money2,
1023
+ f_stair_price3: this.row.f_stair_price3,
1024
+ f_stair_gas3: this.row.f_stair_gas3,
1025
+ f_stair_money3: this.row.f_stair_money3
1026
+ }
1027
+ await this.$resetpost('api/af-revenue/logic/customPricing', {data: row}, {
1028
+ resolveMsg: '保存成功',
1029
+ rejectMsg: '保存失败'
1030
+ }).then(res => {
1031
+ this.close()
1032
+ this.search()
1033
+ })
1034
+ },
1035
+ customPricing () {
1036
+ if (!this.$login.r.find(value => value == '抄表自定义划价')) {
1037
+ this.$showMessage('当前登录用户没有【抄表自定义划价】权限, 请联系管理员!')
1038
+ return
1039
+ }
1040
+ if (this.row.f_meter_state !== '已抄表') {
1041
+ this.$showMessage('当前抄表单不是已抄表状态,无法进行自定义划价!')
1042
+ return
1043
+ }
1044
+ if (this.row.f_whether_pay !== '否') {
1045
+ this.$showMessage('当前抄表单已经缴费,无法进行自定义划价!')
1046
+ return
1047
+ }
1048
+ this.detailsShow = false
1049
+ this.priceModel = true
1050
+ },
1051
+ downloadFiles () {
1052
+ let downurl = 'api/af-revenue/downloadfile/file?filename=机表抄表导入Excel模板'
1053
+ this.$downFile(downurl, '机表抄表导入Excel模板.xlsx')
1054
+ },
1055
+ calculationBase (row) {
1056
+ let oughtamount = null
1057
+ if (row.f_tablebase) {
1058
+ if (row.f_share_gas) {
1059
+ oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(4) + (row.f_share_gas > 0 ? '+' : '') + row.f_share_gas.toFixed(3)
1060
+ } else {
1061
+ if (row.f_capacity && row.f_capacity > 0 && row.f_tablebase < row.f_last_tablebase) {
1062
+ oughtamount = (row.f_tablebase - 0 + (row.f_capacity - row.f_last_tablebase)).toFixed(3)
1063
+ } else {
1064
+ oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(3)
1065
+ }
1066
+ }
1067
+ } else {
1068
+ oughtamount = 0
1069
+ }
1070
+ row.f_oughtamount = oughtamount
1071
+ return oughtamount
1072
+ },
1073
+ cancelHand (row) {
1074
+ if (this.config.examine) {
1075
+ let handdate = new Date(row.f_hand_date)
1076
+ let ima = new Date()
1077
+ if (handdate.getMonth() == ima.getMonth()) {
1078
+ this.cancelHand3(row)
1079
+ } else {
1080
+ if (!this.$login.r.find(value => value == '抄表隔月冲正')) {
1081
+ this.$showMessage('当前登录用户没有【抄表隔月冲正】权限, 请联系管理员!')
1082
+ } else {
1083
+ this.cancelHand3(row)
1084
+ }
1085
+ }
1086
+ } else {
1087
+ this.cancelHand3(row)
1088
+ }
1089
+ },
1090
+ cancelAuditHand (row) {
1091
+ console.log('撤回本次录入。。。', row)
1092
+ let handplan = {
1093
+ id: row.id,
1094
+ f_oughtamount: 0,
1095
+ f_tablebase: 0,
1096
+ f_input_date: null,
1097
+ f_meter_state: '未抄表',
1098
+ f_meter_source: null
1099
+ }
1100
+ this.$resetpost('api/af-revenue/entity/save/t_handplan', handplan, {
1101
+ resolveMsg: null,
1102
+ rejectMsg: '撤回失败'
1103
+ }).then((res) => {
1104
+ this.search()
1105
+ })
1106
+ },
1107
+ async danhuCodeSearch () {
1108
+ this.danhu.f_userinfo_code = this.danhu.f_userinfo_code.replace(/(^\s*)|(\s*$)/g, '')
1109
+ await this.$resetpost('api/af-revenue/sql/getInfoOfDanhu', {
1110
+ data: {
1111
+ f_userinfo_code: this.danhu.f_userinfo_code,
1112
+ f_orgid: this.f_filialeid
1113
+ }
1114
+ },
1115
+ {resolveMsg: null, rejectMsg: '查询用户信息失败,网络错误'}).then(res => {
1116
+ if (res.data.length !== 1) {
1117
+ this.$showAlert(res.data.length === 0 ? '没有查询到用户' : '查询到多条用户信息', 'warning', 3000)
1118
+ return
1119
+ }
1120
+ if (res.data[0].f_meter_state === '待审核') {
1121
+ this.$showAlert('用户有待审核的记录', 'warning', 3000)
1122
+ return
1123
+ }
1124
+ if (res.data[0].f_whether_pay === '否') {
1125
+ this.$showAlert('用户有未缴费的抄表记录', 'warning', 3000)
1126
+ }
1127
+ this.danhu.info = res.data[0]
1128
+ // = Object.assign(this.danhu,{info:res.data[0]})
1129
+ document.getElementById('danhubase').focus()
1130
+ })
1131
+ },
1132
+ // 单户抄表 下发计划并抄表
1133
+ async downAndHand () {
1134
+ if (!this.danhu.info.f_userinfo_code || this.danhu.info.f_userinfo_code === '') {
1135
+ this.$showAlert(`请先查询用户信息`, 'warning', 2000)
1136
+ return
1137
+ }
1138
+
1139
+ if (this.danhu.f_tablebase < 0) {
1140
+ this.$showAlert(`底数不能小于0,请注意!`, 'warning', 2000)
1141
+ return
1142
+ } else if (this.danhu.f_tablebase.toString().split('.').length > 1 && this.danhu.f_tablebase.toString().split('.')[1].length > 3) {
1143
+ this.$showAlert(`底数最多只能输入小数点后3位,请注意!`, 'warning', 2000)
1144
+ return
1145
+ } else if (this.danhu.f_tablebase < this.danhu.info.f_tablebase && !this.danhu.info.f_capacity) {
1146
+ this.$showAlert(`本期表底数不能低于上期表底数`, 'warning', 2000)
1147
+ return
1148
+ } else {
1149
+ if (this.danhu.f_tablebase < this.danhu.info.f_tablebase) {
1150
+ this.$showMessage('本次抄表已超越最大量程, 请熟知!')
1151
+ }
1152
+ }
1153
+ let param = {
1154
+ downDate: this.downModel.downDate,
1155
+ startDate: this.model.params.startDate,
1156
+ endDate: this.model.params.endDate,
1157
+ condition: ` f_userfiles_id = '${this.danhu.info.f_userfiles_id}' `,
1158
+ f_operator: this.$login.f.name,
1159
+ f_result_state: this.f_new_result_state,
1160
+ f_operatorid: this.$login.f.id,
1161
+ danhu: true,
1162
+ userfilesid: this.danhu.info.f_userfiles_id
1163
+ }
1164
+ console.log('下发参数:', param)
1165
+ this.$resetpost('api/af-revenue/logic/downHand', {data: param}, {
1166
+ resolveMsg: null,
1167
+ rejectMsg: '下发失败,请检查该用户是否在该归属期内已有抄表记录'
1168
+ }).then((res) => {
1169
+ console.log('下发计划成功', res)
1170
+ this.$resetpost('/api/af-revenue/sql/querySingleTable', {
1171
+ data: {
1172
+ items: 'max(id) id',
1173
+ tablename: 't_handplan',
1174
+ condition: ` f_userfiles_id = '${this.danhu.info.f_userfiles_id}' `
1175
+ }
1176
+ }, {resolveMsg: null, rejectMsg: '查询抄表信息失败'}).then((res2) => {
1177
+ let handParam = {
1178
+ f_meter_classify: this.danhu.info.f_meter_classify,
1179
+ f_meter_brand: this.danhu.info.f_meter_brand,
1180
+ f_hand_id: res2.data[0].id,
1181
+ f_tablebase: this.danhu.f_tablebase,
1182
+ f_result_state: this.f_new_result_state,
1183
+ f_userinfo_id: this.danhu.info.f_userinfo_id
1184
+ }
1185
+ this.$resetpost('api/af-revenue/logic/sale_commonEnter', {data: handParam}, {
1186
+ resolveMsg: null,
1187
+ rejectMsg: null
1188
+ })
1189
+ }).then((res) => {
1190
+ this.$showAlert(`单户抄表成功!`, 'success', 2000)
1191
+ this.danhuShow()
1192
+ }).catch((error) => {
1193
+ this.danhu.show = false
1194
+ this.$showAlert(`单户抄表失败!` + JSON.toString(error), 'danger', 2000)
1195
+ })
1196
+ }).catch((error) => {
1197
+ this.danhu.show = false
1198
+ this.$showAlert(`抄表失败,请注意查看,失败原因:` + JSON.toString(error), 'danger', 2000)
1199
+ })
1200
+ },
1201
+ // 获得本月的最后一天。
1202
+ getLastDayOfMonth (year, month) {
1203
+ let new_year = year // 取当前的年份
1204
+ let new_month = month++// 取下一个月的第一天,方便计算(最后一天不固定)
1205
+ if (month > 12) { // 如果当前大于12月,则年份转到下一年
1206
+ new_month -= 12 // 月份减
1207
+ new_year++ // 年份增
1208
+ }
1209
+ let new_date = new Date(new_year, new_month, 1) // 取当年当月中的第一天
1210
+ let date_count = (new Date(new_date.getTime() - 1000 * 60 * 60 * 24)).getDate()// 获取当月的天数
1211
+ // let last_date = new Date(new_date.getTime() - 1000 * 60 * 60 * 24);//获得当月最后一天的日期
1212
+ return date_count
1213
+ },
1214
+ danhuShow () {
1215
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
1216
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
1217
+ this.downModel.downDate = this.$login.toStandardTimeString()
1218
+ this.danhu = {
1219
+ show: true,
1220
+ f_userinfo_code: '',
1221
+ f_tablebase: '',
1222
+ info: {}
1223
+ }
1224
+ setTimeout(() => {
1225
+ document.getElementById('danhucode').focus()
1226
+ this.$refs.paged.$refs.criteria.search()
1227
+ }, 100)
1228
+ },
1229
+ paycodefocus () {
1230
+ this.$nextTick(() => {
1231
+ this.$els.paycode.focus()
1232
+ })
1233
+ },
1234
+ getRes (obj) {
1235
+ this.orgCondtionStr = obj
1236
+ },
1237
+ async getaddress () {
1238
+ console.log('开始获取小区')
1239
+ let HttpReset = new HttpResetClass()
1240
+ var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
1241
+ data: {
1242
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
1243
+ }
1244
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
1245
+ console.log('小区', data)
1246
+ let house = []
1247
+ house.push()
1248
+ for (let row of data.data) {
1249
+ console.log('开始保存小区')
1250
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
1251
+ }
1252
+ this.residentialArea = house
1253
+ },
1254
+ loadMeterBooks () {
1255
+ this.meterbooks = this.$GetSaleParam.getMeterBooks()
1256
+ },
1257
+
1258
+ fileterprice (row) {
1259
+ this.splitdata = row
1260
+ this.priceSplit = true
1261
+ console.log('row==>', row)
1262
+ },
1263
+ hidden () {
1264
+ this.criteriaShow = !this.criteriaShow
1265
+ },
1266
+ clear () {
1267
+ Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
1268
+ this.$refs.paged.$refs.criteria.model[key] = []
1269
+ })
1270
+ },
1271
+
1272
+ // 判断当前页是否全选
1273
+ isChooseAll (rows) {
1274
+ if (this.plans.length == 0 && rows.length == 0) {
1275
+ return false
1276
+ }
1277
+ for (var i = 0; i < rows.length; i++) {
1278
+ let flag = false
1279
+ if (rows[i].f_meter_state == '未下发') {
1280
+ for (let plan of this.plans) {
1281
+ if (plan.id == rows[i].f_userfiles_id) {
1282
+ flag = true
1283
+ if (!plan.state) {
1284
+ return false
1285
+ }
1286
+ }
1287
+ }
1288
+ if (!flag) {
1289
+ return false
1290
+ }
1291
+ }
1292
+ }
1293
+ return true
1294
+ },
1295
+ // 选择需要下发的计划
1296
+ chooseOne (e, row, rows) {
1297
+ console.log('row', row)
1298
+ let checked = e.target.checked
1299
+ console.log('state', e.target.checked)
1300
+ // 判断当前行是否被选中
1301
+ if (checked) {
1302
+ let onePlan = {
1303
+ id: row.f_userfiles_id,
1304
+ state: true
1305
+ }
1306
+ // 记录被选中计划的状态
1307
+ let flag = false
1308
+ for (let plan of this.plans) {
1309
+ if (plan.id == row.f_userfiles_id) {
1310
+ flag = true
1311
+ plan.state = true
1312
+ }
1313
+ }
1314
+ if (!flag) {
1315
+ this.plans.push(onePlan)
1316
+ }
1317
+ } else {
1318
+ for (let plan of this.plans) {
1319
+ if (plan.id == row.f_userfiles_id) {
1320
+ plan.state = false
1321
+ }
1322
+ }
1323
+ }
1324
+ // let param = {id:row.id,isChoose:true}
1325
+
1326
+ if (this.isChooseAll(rows)) {
1327
+ this.all = true
1328
+ } else {
1329
+ this.all = false
1330
+ }
1331
+ // this.delRepetition()
1332
+ },
1333
+ uploadFiles () {
1334
+ this.showfiles = !this.showfiles
1335
+ },
1336
+ chooseAll () {
1337
+ if (this.all) {
1338
+ // this.chooseInfo[index-1] = []
1339
+ // for (let row of this.model.rows){
1340
+ // this.chooseInfo[index-1].push(row)
1341
+ // }
1342
+ // this.chooseInfo = Object.assign([],this.chooseInfo,this.model.rows)
1343
+
1344
+ for (let row of this.model.rows) {
1345
+ if (row.f_meter_state == '未下发') {
1346
+ let onePlan = {
1347
+ id: row.f_userfiles_id,
1348
+ state: true
1349
+ }
1350
+ let flag = false
1351
+ for (let plan of this.plans) {
1352
+ if (plan.id == row.f_userfiles_id) {
1353
+ flag = true
1354
+ plan.state = true
1355
+ }
1356
+ }
1357
+ if (!flag) {
1358
+ this.plans.push(onePlan)
1359
+ }
1360
+ }
1361
+ }
1362
+ } else {
1363
+ // this.chooseInfo[index-1] = []
1364
+ // console.log("this.chooseInfo[index-1]",this.chooseInfo[index-1])
1365
+ for (let row of this.model.rows) {
1366
+ if (row.f_meter_state == '未下发') {
1367
+ for (let plan of this.plans) {
1368
+ if (plan.id == row.f_userfiles_id) {
1369
+ plan.state = false
1370
+ }
1371
+ }
1372
+ }
1373
+ }
1374
+ }
1375
+ },
1376
+ search () {
1377
+ // 查询前清空选择项
1378
+ this.plans = []
1379
+ this.$refs.paged.$refs.criteria.search()
1380
+ },
1381
+ clickupshow () {
1382
+ if (!this.$login.r.find(value => value == '机表抄表导入抄表')) {
1383
+ this.$showMessage('你没有机表抄表导入抄表的权限,请联系管理员!')
1384
+ return
1385
+ }
1386
+ this.upshow = !this.upshow
1387
+ },
1388
+ deletehand () {
1389
+ if (!this.$login.r.find(value => value == '抄表计划删除')) {
1390
+ this.$showMessage('你没有【抄表计划删除】的权限,请联系管理员!')
1391
+ } else {
1392
+ if (this.deletestate) {
1393
+ console.log('mode', this.model)
1394
+ let cons = this.model.params
1395
+ this.$showMessage('删除后不可恢复,确认删除该批未抄表计划吗?', ['confirm', 'cancel']).then((res) => {
1396
+ if (res === 'confirm') {
1397
+ this.$resetpost('api/af-revenue/logic/deletePlanAll', {data: cons}).then((res) => {
1398
+ this.$dispatch('refresh', '删除计划', cons)
1399
+ console.log('ressss:', res)
1400
+ this.$showAlert(`共计删除${res.data.index}条记录`, 'success', 2000)
1401
+ this.search()
1402
+ })
1403
+ }
1404
+ })
1405
+ } else {
1406
+ this.$showMessage('为保证误删操作,请先选择抄表单查询条件为未抄表,查询后,再点击删除计划按钮!')
1407
+ }
1408
+ }
1409
+ },
1410
+ searchPrint () {
1411
+ console.log('mode', this.model)
1412
+ let cons = this.model.params
1413
+ let data = {
1414
+ 'body': {
1415
+ 'data': {
1416
+ 'condition': ''
1417
+ },
1418
+ 'field': [],
1419
+ 'templateName': '',
1420
+ 'sqlName': ''
1421
+ },
1422
+ 'condition': cons,
1423
+ 'sqlname': 'periodAlreadyIssuedOrder'
1424
+ }
1425
+ this.$resetpost('api/af-revenue/logic/allExportExcel', {data: data}, {
1426
+ resolveMsg: null,
1427
+ rejectMsg: '上传失败'
1428
+ }).then((res) => {
1429
+ if (res.data === 'no user') {
1430
+ this.$showAlert(`无匹配用户,无法导出对应excel`, 'warning', 2000)
1431
+ } else {
1432
+ var link = document.createElement('a')
1433
+ res.data.forEach((item) => {
1434
+ console.log('导出路径', item.filename)
1435
+ let path = item.filename
1436
+ // 本地
1437
+ // let pathName = "http://" + location.host + "/excel" + path.split('excel')[1]
1438
+ // 服务器
1439
+ let pathName = 'http://' + location.host + '/webapps' + path.split('webapps')[1]
1440
+ link.href = pathName
1441
+ console.log('=============================', path.split('excel/')[1])
1442
+ link.download = path.split('excel/')[1]
1443
+ link.dispatchEvent(new MouseEvent('click'))
1444
+ })
1445
+ }
1446
+ })
1447
+ },
1448
+ selfSearch (args) {
1449
+ this.meter_state = args.condition.includes('未下发')
1450
+ this.inputtor_change = args.condition.includes('未抄表')
1451
+ console.log('=====抄表1====', args.condition.includes('未抄表'))
1452
+ console.log('=====抄表1====', this.deletestate)
1453
+ if (args.condition.includes('未抄表')) {
1454
+ this.deletestate = true
1455
+ } else {
1456
+ this.deletestate = false
1457
+ }
1458
+ console.log('=====抄表1====', this.deletestate)
1459
+ if (!this.orgCondtionStr) {
1460
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
1461
+ } else {
1462
+ args.condition = `${args.condition}` + this.orgCondtionStr
1463
+ }
1464
+
1465
+ // 抄表员查询条件
1466
+ this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
1467
+ if (this.inputtouPerson.length !== 0) {
1468
+ let str = JSON.stringify(this.inputtouPerson)
1469
+ str = str.replace(/"/g, `'`)
1470
+ str = str.replace(/\[/g, ``)
1471
+ str = str.replace(/\]/g, ``)
1472
+ console.log('=====抄表员model22222222222绑定====', str)
1473
+ // 查询多个抄表员时条件
1474
+ args.condition += ` and f_inputtor in ( ${str} )`
1475
+ }
1476
+ // 小区查询条件
1477
+ this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
1478
+ console.log('=====小区model绑定====', this.area)
1479
+ if (this.area.length !== 0) {
1480
+ let str = JSON.stringify(this.area)
1481
+ str = str.replace(/"/g, `'`)
1482
+ str = str.replace(/\[/g, ``)
1483
+ str = str.replace(/\]/g, ``)
1484
+ console.log('=====小区model22222222222绑定====', str)
1485
+ // 查询多个小区时条件
1486
+ args.condition += ` and f_residential_area in ( ${str} )`
1487
+ }
1488
+
1489
+ if (args.model.f_meter_brand && args.model.f_meter_brand.length > 0) {
1490
+ if (args.model.f_meter_brand[0].f_meter_brand) {
1491
+ args.condition = `${args.condition} and f_meter_brand = '${args.model.f_meter_brand[0].f_meter_brand}'`
1492
+ }
1493
+ }
1494
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
1495
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
1496
+ this.condition2 = args.condition
1497
+ console.log('selfsearch..', args.condition, this.model)
1498
+ this.model.search(args.condition, this.model)
1499
+ },
1500
+ reflash () {
1501
+ this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
1502
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0]
1503
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1]
1504
+ this.search()
1505
+ },
1506
+ beforenter (index, row) {
1507
+ this.inputid = index + 1
1508
+ // 限制本次抄表不能低于上次
1509
+ if (row.f_tablebase) {
1510
+ if (row.f_tablebase < 0) {
1511
+ row.state = '失败'
1512
+ Vue.set(row, 'error', '底数不能小于0')
1513
+ this.speckText('底数不能小于0,请注意!')
1514
+ } else if (this.danhu.f_tablebase.toString().split('.').length > 1 && this.danhu.f_tablebase.toString().split('.')[1].length > 3) {
1515
+ row.state = '失败'
1516
+ Vue.set(row, 'error', '底数最多只能输入小数点后3位')
1517
+ this.speckText('底数最多只能输入小数点后3位,请注意!')
1518
+ } else if (row.f_tablebase < row.f_last_tablebase && !row.f_capacity) {
1519
+ row.state = '失败'
1520
+ Vue.set(row, 'error', '本期表底数不能低于上期表底数')
1521
+ this.speckText('本期表底数不能低于上期表底数,请注意!')
1522
+ } else {
1523
+ if (row.f_tablebase < row.f_last_tablebase) {
1524
+ this.$showMessage('本次抄表已超越最大量程, 请熟知!')
1525
+ }
1526
+ // 抄表结果状态没选默认给正常
1527
+ row.f_result_state = row.f_result_state ? row.f_result_state : '正常'
1528
+ beforenterGen(this, index, row)
1529
+ }
1530
+ }
1531
+ },
1532
+ enter (index, row) {
1533
+ console.log('录入数据。..', row)
1534
+ let auditFlag = false
1535
+ let num = (row.f_tablebase - row.f_last_tablebase)
1536
+ let reg = /^\d+,\d+$/
1537
+ if (row.f_user_type === '民用' && this.usermlimit) {
1538
+ if (!reg.test(this.usermlimit)) {
1539
+ this.$showMessage('民用自动审核区间参数设置有误, 请检查!')
1540
+ return
1541
+ }
1542
+ let limit = this.usermlimit.split(',')
1543
+ if (!(limit[0] - 0 <= num && num <= limit[1] - 0)) {
1544
+ auditFlag = true
1545
+ }
1546
+ } else if (row.f_user_type === '非民用' && this.userfmlimit) {
1547
+ if (!reg.test(this.userfmlimit)) {
1548
+ this.$showMessage('非民用自动审核区间参数设置有误, 请检查!')
1549
+ return
1550
+ }
1551
+ let limit = this.userfmlimit.split(',')
1552
+ if (!(limit[0] - 0 <= num && num <= limit[1] - 0)) {
1553
+ auditFlag = true
1554
+ }
1555
+ } else if (this.$appdata.getSingleValue('抄表审核') === '启用') {
1556
+ auditFlag = true
1557
+ }
1558
+ if (auditFlag) {
1559
+ let f_input_date = Vue.$login.toStandardDateString()
1560
+ if (row.f_input_date && row.f_input_date != '') {
1561
+ f_input_date = row.f_input_date
1562
+ }
1563
+ let handplan = {
1564
+ id: row.id,
1565
+ f_oughtamount: row.f_oughtamount,
1566
+ f_adjustment_volume: row.f_adjustment_volume ? row.f_adjustment_volume : 0,
1567
+ f_tablebase: row.f_tablebase,
1568
+ f_hand_date: row.f_hand_date,
1569
+ f_input_date: f_input_date,
1570
+ f_input_person: Vue.$login.f.name,
1571
+ f_meter_state: '待审核',
1572
+ f_meter_source: '手动录入',
1573
+
1574
+ f_operator: Vue.$login.f.name,
1575
+ f_operatorid: Vue.$login.f.id,
1576
+ f_orgid: Vue.$login.f.orgid,
1577
+ f_orgname: Vue.$login.f.orgs,
1578
+ f_depid: Vue.$login.f.depids,
1579
+ f_depname: Vue.$login.f.deps
1580
+
1581
+ }
1582
+ console.log('抄表负数。。0', handplan)
1583
+ this.$resetpost('api/af-revenue/entity/save/t_handplan', handplan, {
1584
+ resolveMsg: null,
1585
+ rejectMsg: '抄表数据保存出错!!!'
1586
+ }).then((res) => {
1587
+ row.f_meter_state = '待审核'
1588
+ row.f_whether_pay = '否'
1589
+ row.f_input_date = res.data.f_input_date
1590
+ // this.search()
1591
+ }).catch((error) => {
1592
+ row.state = '失败'
1593
+ Vue.set(row, 'error', JSON.stringify(error))
1594
+ this.speckText('抄表录入出错,请注意!')
1595
+ })
1596
+ } else {
1597
+ // 没有启用抄表审核功能
1598
+ row.f_input_person = this.$login.f.name
1599
+ row.f_inputtor = row.f_inputtor
1600
+ row.f_userinfo_id = row.f_userinfo_id + ''
1601
+ row.f_userfiles_id = row.f_userfiles_id + ''
1602
+ this.pass(row)
1603
+ }
1604
+ // 在方法结束前添加以下代码
1605
+ this.$nextTick(() => {
1606
+ // 获取下一行数据并设置为选中状态
1607
+ const nextRowIndex = index + 1
1608
+ if (nextRowIndex < this.model.rows.length) {
1609
+ // 先清除当前选中
1610
+ this.$refs.paged.$refs.grid.selectStore.selected = null
1611
+ // 设置下一行为选中状态,这样会自动应用 success 样式
1612
+ this.$refs.paged.$refs.grid.select(this.model.rows[nextRowIndex])
1613
+ }
1614
+ })
1615
+ },
1616
+ pass (row) {
1617
+ let param = {
1618
+ f_meter_classify: row.f_meter_classify,
1619
+ f_meter_brand: row.f_meter_brand,
1620
+ f_hand_id: row.id,
1621
+ f_operator: Vue.$login.f.name,
1622
+ f_tablebase: row.f_tablebase,
1623
+ f_userinfo_id: row.f_userinfo_id,
1624
+ f_adjustment_volume: row.f_adjustment_volume ? row.f_adjustment_volume : 0
1625
+ }
1626
+ this.$resetpost('api/af-revenue/logic/sale_commonEnter', {data: param}, {
1627
+ resolveMsg: null,
1628
+ rejectMsg: null,
1629
+ newly: true
1630
+ }).then((res) => {
1631
+ row.f_meter_state = res.data.f_meter_state
1632
+ row.f_whether_pay = res.data.f_whether_pay
1633
+ row.f_oughtfee = res.data.f_oughtfee
1634
+ row.f_oughtamount = res.data.f_oughtamount
1635
+ // this.$resetpost('api/af-revenue/logic/getMeterSms', {data: param}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1636
+ // this.search()
1637
+ let f_result_state = '正常'
1638
+ if (row.f_result_state && row.f_result_state != '') {
1639
+ f_result_state = row.f_result_state
1640
+ }
1641
+ let f_input_date = ''
1642
+ if (row.f_input_date && row.f_input_date != '') {
1643
+ f_input_date = ` ,f_input_date = '${row.f_input_date}'`
1644
+ }
1645
+ let sqldata = `update t_handplan
1646
+ set f_result_state = '${f_result_state}' ${f_input_date}
1647
+ where id = '${row.id}'`
1648
+ this.$resetpost('api/af-revenue/logic/runSQL', {data: {sql: sqldata}}, {
1649
+ resolveMsg: null,
1650
+ rejectMsg: '业务单号保存失败',
1651
+ newly: true
1652
+ })
1653
+ // }).catch((error) => {
1654
+ // row.state = '失败'
1655
+ // Vue.set(row, 'error', JSON.stringify(error))
1656
+ // this.speckText('抄表出错,请注意!')
1657
+ // })
1658
+ // this.search()
1659
+ }).catch((error) => {
1660
+ row.state = '失败'
1661
+ Vue.set(row, 'error', JSON.stringify(error))
1662
+ this.speckText('抄表出错,请注意!')
1663
+ })
1664
+ },
1665
+ nopass (row) {
1666
+ console.log('不通过。。。', row)
1667
+ let handplan = {
1668
+ id: row.id,
1669
+ f_oughtamount: 0,
1670
+ f_tablebase: 0,
1671
+ f_input_date: null,
1672
+ f_meter_state: '未抄表',
1673
+ f_meter_source: null
1674
+ }
1675
+ this.$resetpost('api/af-revenue/entity/save/t_handplan', handplan, {
1676
+ resolveMsg: null,
1677
+ rejectMsg: '未通过,抄表数据返回未抄表保存出错!!!'
1678
+ }).then((res) => {
1679
+ row.f_tablebase = null
1680
+ row.f_meter_state = '未抄表'
1681
+ row.f_whether_pay = '否'
1682
+ this.search()
1683
+ }).catch((error) => {
1684
+ row.state = '失败'
1685
+ Vue.set(row, 'error', JSON.stringify(error))
1686
+ this.speckText('抄表录入出错,请注意!')
1687
+ })
1688
+ },
1689
+ clearError (row) {
1690
+ if (row.f_tablebase === 0) {
1691
+ row.f_tablebase = ''
1692
+ }
1693
+ Vue.set(row, 'error', null)
1694
+ },
1695
+ async speckText (str) {
1696
+ var url = 'http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=6&text=' + encodeURI(str)
1697
+ await new Audio(url).play()
1698
+ this.err = str
1699
+ this.showerr = true
1700
+ this.paycodefocus()
1701
+ },
1702
+ closeerr () {
1703
+ this.showerr = false
1704
+ },
1705
+ fileUpload () {
1706
+ this.uploadshow = true
1707
+ },
1708
+ // 删除这条计划
1709
+ delectHand (row) {
1710
+ this.$showMessage('删除后不可恢复,确认删除吗?', ['confirm', 'cancel']).then((res) => {
1711
+ if (res === 'confirm') {
1712
+ this.$resetpost('api/af-revenue/logic/deletePlan', {data: row}).then(() => {
1713
+ this.$dispatch('refresh', '删除计划', row)
1714
+ this.search()
1715
+ })
1716
+ }
1717
+ })
1718
+ },
1719
+ cancelHand4 (row) {
1720
+ this.examinerow = row
1721
+ this.examineshow = true
1722
+ this.examinetype = true
1723
+ },
1724
+ cancelHand2 (row) {
1725
+ if (this.config.examine) {
1726
+ let handdate = new Date(row.f_hand_date)
1727
+ console.log('获取月份', handdate.getMonth())
1728
+ let ima = new Date()
1729
+ console.log('获取月份', ima.getMonth())
1730
+ if (handdate.getMonth() == ima.getMonth()) {
1731
+ this.cancelHand3(row)
1732
+ } else {
1733
+ if (!this.$login.r.find(value => value == '抄表隔月冲正')) {
1734
+ this.$showMessage('当前登录用户没有隔月冲正权限, 请联系管理员!')
1735
+ } else {
1736
+ this.cancelHand3(row)
1737
+ }
1738
+ }
1739
+ } else {
1740
+ this.cancelHand3(row)
1741
+ }
1742
+ },
1743
+ async cancelHand5 () {
1744
+ let sqldata = `update t_handplan
1745
+ set f_audit_state ='已审核',
1746
+ f_audit_person='${this.$login.f.name}',
1747
+ f_audit_date='${this.$login.toStandardTimeString()}'
1748
+ where id = '${this.examinerow.id}'`
1749
+ await this.$resetpost('api/af-revenue/logic/runSQL', {data: {sql: sqldata}}, {
1750
+ resolveMsg: null,
1751
+ rejectMsg: '更新收费记录订单号失败'
1752
+ })
1753
+
1754
+ this.cancelHand3(this.examinerow)
1755
+ },
1756
+ cancelHand3 (row) {
1757
+ // 抄表加入权限
1758
+ if (!this.$login.r.find(value => value == '机表抄表冲正')) {
1759
+ this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
1760
+ return
1761
+ }
1762
+ // console.log('抄表冲正。、。。、', row)
1763
+ let param = {
1764
+ f_hand_id: row.id,
1765
+ operInfo: {
1766
+ f_operator: this.$login.f.name,
1767
+ f_operatorid: this.$login.f.id,
1768
+ f_orgid: this.$login.f.orgid,
1769
+ f_orgname: this.$login.f.orgs,
1770
+ f_depid: this.$login.f.depids,
1771
+ f_depname: this.$login.f.deps
1772
+ }
1773
+ }
1774
+ let url = 'api/af-revenue/logic/sale_commonEnterCancel'
1775
+ this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
1776
+ this.search()
1777
+ this.close()
1778
+ })
1779
+ },
1780
+ down (type, condition, data) {
1781
+ co(downGen(type, condition, data, this))
1782
+ },
1783
+ // 单条下发计划
1784
+ downHand (row) {
1785
+ console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + row.f_userfiles_id)
1786
+ this.down('single', `f_userfiles_id = '${row.f_userfiles_id}'`, row)
1787
+ },
1788
+ // 批量下发计划
1789
+ batchDownHand () {
1790
+ this.down('batch', this.model.condition, this.model.count)
1791
+ },
1792
+ // batchDownHand () {
1793
+ // this.condition = ''
1794
+ // let count = 0
1795
+ // for (let plan of this.plans){
1796
+ // if(plan.state){
1797
+ // this.condition = this.condition + plan.id + ','
1798
+ // count = count + 1
1799
+ // }
1800
+ // }
1801
+ // this.down('batch', `f_user_id in (${this.condition.substring(0,this.condition.length-1)})`,count)
1802
+ // },
1803
+ // allDownHand () {
1804
+ // this.down('all', this.model.condition, this.model.count)
1805
+ // },
1806
+
1807
+ validateDate () {
1808
+ let currentDown = new Date(this.downModel.downDate)
1809
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.startDate))
1810
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.endDate))
1811
+ 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')
1812
+ },
1813
+
1814
+ async examineconfirm () {
1815
+ let sqldata = `update t_handplan
1816
+ set f_audit_state ='审核中',
1817
+ f_examinereason='${this.examinerow.f_examinereason}'
1818
+ where id = '${this.examinerow.id}'`
1819
+ await this.$resetpost('api/af-revenue/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: null})
1820
+ this.close()
1821
+ this.search()
1822
+ },
1823
+ // 关闭下发计划得弹出框
1824
+ close () {
1825
+ this.show = false
1826
+ this.inputtor_show = false
1827
+ this.downConfirm = false
1828
+ this.examineshow = false
1829
+ this.examinetype = false
1830
+ this.detailsShow = false
1831
+ this.priceModel = false
1832
+ // 初始化模态框数据
1833
+ this.initModal()
1834
+ if (this.uploadshow) {
1835
+ this.uploadshow = false
1836
+ // 讲选的文件清空
1837
+ this.$refs.file.$el.querySelector('input').value = ''
1838
+ }
1839
+ },
1840
+ initModal () {
1841
+ this.downModel = {
1842
+ downDate: Vue.$login.toStandardDateString(),
1843
+ downWay: 'downWithUserfiles',
1844
+ downInputtor: []
1845
+ }
1846
+ this.inputtorModel = {
1847
+ inputtor: [],
1848
+ reason: ''
1849
+ }
1850
+ },
1851
+ // 判断当前登陆人是不是子公司的人员
1852
+ isHead () {
1853
+ return this.$login.f.parent.parent.name.includes('统一资源管理')
1854
+ },
1855
+ sort (field, rule) {
1856
+ // 将所有排序方式设为不排序,实现相互排斥
1857
+ for (let key in this.orderFields) {
1858
+ if (key === field) {
1859
+ this.orderFields[key] = rule
1860
+ } else {
1861
+ this.orderFields[key] = 'no'
1862
+ }
1863
+ }
1864
+ // 如果新规则不排序,还原为默认排序
1865
+ if (rule === 'no') {
1866
+ this.model.paramSource.orderitem = `'${this.orderDefault}'`
1867
+ } else {
1868
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
1869
+ }
1870
+ this.search()
1871
+ },
1872
+ guid () {
1873
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1874
+ let r = Math.random() * 16 | 0
1875
+ let v = c == 'x' ? r : (r & 0x3 | 0x8)
1876
+ return v.toString(16)
1877
+ })
1878
+ },
1879
+ computeAmount (event) {
1880
+ console.log('=============================>', event, this.row)
1881
+ let money = event.target.value
1882
+ if (this.row.f_price_type === '固定气价') {
1883
+ let price = this.$refs.mix_price.model.f_price
1884
+ // 可以购买的总气量
1885
+ let purchaseSum = (money / price).toFixed(3)
1886
+ // 计算应抄底数
1887
+ this.should_base = (this.row.f_last_tablebase - 0) + (purchaseSum - 0)
1888
+ // 计算公式
1889
+ this.designFormulas = `${purchaseSum}X${price}`
1890
+ } else {
1891
+ let mydata = this.$refs.statir.mydata
1892
+ // 剩余1阶气量
1893
+ let surplus1 = (mydata.f_stair1ceiling - (mydata.f_hasuse1 > 0 ? mydata.f_hasuse1 : 0))
1894
+ // 把1阶买完的钱
1895
+ let price1 = surplus1 * mydata.f_stair1price
1896
+ // 剩余2阶气量
1897
+ let surplus2 = (mydata.f_stair2ceiling - mydata.f_stair1ceiling - (mydata.f_hasuse2 > 0 ? mydata.f_hasuse2 : 0)).toFixed(3)
1898
+ // 把2阶买完的钱
1899
+ let price2 = surplus2 * mydata.f_stair2price
1900
+ // 兼容一下
1901
+ if (this.$refs.statir.jt != 3) {
1902
+ this.$showMessage('暂不支持该气价类型的运算,请联系开发人员!')
1903
+ }
1904
+ // 开始计算
1905
+ // 可以购买各阶梯量
1906
+ let purchase1 = 0
1907
+ let purchase2 = 0
1908
+ let purchase3 = 0
1909
+ if (money <= price1) {
1910
+ purchase1 = (money / mydata.f_stair1price).toFixed(3)
1911
+ } else if (money <= (price1 + price2)) {
1912
+ purchase1 = surplus1
1913
+ purchase2 = ((money - price1) / mydata.f_stair2price).toFixed(3)
1914
+ } else {
1915
+ purchase1 = surplus1
1916
+ purchase2 = surplus2
1917
+ purchase3 = ((money - price1 - price2) / mydata.f_stair3price).toFixed(3)
1918
+ }
1919
+ // 可以购买的总气量
1920
+ let purchaseSum = (purchase1 - 0) + (purchase2 - 0) + (purchase3 - 0)
1921
+ // 计算应抄底数
1922
+ this.should_base = (this.row.f_last_tablebase - 0) + purchaseSum
1923
+ // 计算公式
1924
+ this.designFormulas = `${purchase1}X${mydata.f_stair1price} + ${purchase2}X${mydata.f_stair2price} + ${purchase3}X${mydata.f_stair3price}`
1925
+ }
1926
+ this.should_base = this.should_base.toFixed(3) - 0
1927
+ }
1928
+ },
1929
+ watch: {
1930
+ 'downModel.downWay' (val) {
1931
+ if (val === 'downWithSelf') {
1932
+ console.log('抄表员。。', this.inputtores2)
1933
+ if (this.inputtores2.length > 0) {
1934
+ this.downModel.downInputtor = [this.inputtores2[0].value]
1935
+ }
1936
+ }
1937
+ },
1938
+ 'detailsShow' (val) {
1939
+ if (!val) {
1940
+ this.should_base = 0
1941
+ this.designFormulas = null
1942
+ this.$els.inputmoney.value = 0
1943
+ }
1944
+ }
1945
+ // 'model.rows'(val){
1946
+ // console.log('页面切换',val)
1947
+ // if(this.isChooseAll(val)){
1948
+ // this.all = true
1949
+ // }else{
1950
+ // this.all = false
1951
+ // }
1952
+ // },
1953
+ },
1954
+ computed: {
1955
+ danhutitle () {
1956
+ return '单户抄表 当前计划年月:' + this.downModel.downDate
1957
+ },
1958
+ getCondition () {
1959
+ // return {condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr}
1960
+ return {
1961
+ startDate: this.$refs.paged.$refs.criteria.model.startDate,
1962
+ endDate: this.$refs.paged.$refs.criteria.model.endDate,
1963
+ orderitem: this.orderDefault ? this.orderDefault : 'id',
1964
+ condition: this.condition2
1965
+ }
1966
+ },
1967
+
1968
+ inputtores () {
1969
+ // 获取抄表员
1970
+ console.log('获取抄表员', this.$login.f)
1971
+ let rs = []
1972
+ if (this.$login.f.f_gasman.length > 0) {
1973
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
1974
+ let temp = {
1975
+ label: this.$login.f.f_gasman[i].name,
1976
+ value: this.$login.f.f_gasman[i].name
1977
+ }
1978
+ rs.push(temp)
1979
+ }
1980
+ }
1981
+ this.inputtores2 = rs
1982
+ return [...rs]
1983
+ },
1984
+ whetherpaies () {
1985
+ return [
1986
+ {label: '全部', value: ''},
1987
+ {label: '已缴费', value: '是'},
1988
+ {label: '未缴费', value: '否'}
1989
+ ]
1990
+ },
1991
+ // 界面细节权限
1992
+ jurisdiction () {
1993
+ console.log('抄表界面细节', this.$login.r)
1994
+ return this.$login.r ? this.$login.r : []
1995
+ },
1996
+ firestates () {
1997
+ return [
1998
+ {label: '全部', value: ''},
1999
+ {label: '已点火', value: '1'},
2000
+ {label: '未点火', value: '0'}
2001
+ ]
2002
+ },
2003
+ ischecked () {
2004
+ return function (row) {
2005
+ for (let plan of this.plans) {
2006
+ if (plan.id == row.f_userfiles_id) {
2007
+ return plan.state
2008
+ }
2009
+ }
2010
+ }
2011
+ }
2012
+ },
2013
+ events: {
2014
+ onFileUpload: async function (file, res) {
2015
+ if (this.upshow) {
2016
+ let uuid = this.guid()
2017
+ let data = {
2018
+ model: {
2019
+ f_operator: this.$login.f.name,
2020
+ f_end_date: this.$login.nextMonth20(this.$login.toStandardTimeString()),
2021
+ f_operatorid: this.$login.f.id,
2022
+ f_orgid: this.$login.f.orgid,
2023
+ f_orgname: this.$login.f.orgs,
2024
+ f_depid: this.$login.f.depids,
2025
+ f_depname: this.$login.f.deps
2026
+ },
2027
+ uuid: uuid,
2028
+ filepath: res.f_downloadpath
2029
+ }
2030
+ try {
2031
+ await this.HttpReset.load('POST', 'api/af-revenue/logic/batchSettleFileupdate', data, {
2032
+ resolveMsg: null,
2033
+ rejectMsg: null
2034
+ }, 1000)
2035
+ } catch (e) {
2036
+ }
2037
+ this.$showAlert(`文件上传成功,正在后台批量结算, 请耐心等待结果......`, 'success')
2038
+ // 启动定时器定时查询上传结果
2039
+ let timer = setInterval(async () => {
2040
+ let res = await this.HttpReset.load('POST', 'api/af-revenue/logic/getBatchOperaPro', {data: {uuid: uuid}}, {
2041
+ resolveMsg: null,
2042
+ rejectMsg: null
2043
+ })
2044
+ console.log('查询进度返回: ', res)
2045
+ if (res.data.msg || res.data.error) {
2046
+ res.data.msg ? this.$showAlert(`${res.data.msg}`, 'success', 2000) : this.$showAlert(`${res.data.error}`, 'danger')
2047
+ this.upshow = false
2048
+ this.search()
2049
+ clearInterval(timer)
2050
+ }
2051
+ }, 5000)
2052
+ return
2053
+ }
2054
+ let data = {
2055
+ model: {
2056
+ f_operator: this.$login.f.name,
2057
+ f_end_date: this.$login.nextMonth20(this.$login.toStandardTimeString())
2058
+ },
2059
+ filepath: res.path
2060
+ }
2061
+ if (res.f_downloadpath.includes('抄表数据')) {
2062
+ console.log('进入了抄表上传')
2063
+ let data1 = {
2064
+ filepath: res.f_downloadpath
2065
+ }
2066
+ this.$resetpost('api/af-revenue/logic/upLoadHand', data1, {
2067
+ resolveMsg: null,
2068
+ rejectMsg: '上传失败'
2069
+ }, 0).then((res) => {
2070
+ // console.log('终于成功了', res)
2071
+ this.upshow = false
2072
+ // this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
2073
+ // this.$parent.search()
2074
+ })
2075
+ } else if (data.filepath.includes('先锋')) {
2076
+ this.$resetpost('api/af-revenue/logic/xfimport', data, {
2077
+ resolveMsg: null,
2078
+ rejectMsg: '上传失败'
2079
+ }, 0).then((res) => {
2080
+ // console.log('终于成功了', res)
2081
+ this.uploadshow = false
2082
+ this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
2083
+ this.$parent.search()
2084
+ })
2085
+ } else if (data.filepath.includes('伦力')) {
2086
+ this.$resetpost('api/af-revenue/logic/llimport', data, {
2087
+ resolveMsg: null,
2088
+ rejectMsg: '上传失败'
2089
+ }, 0).then((res) => {
2090
+ // console.log('终于成功了', res)
2091
+ this.uploadshow = false
2092
+ this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
2093
+ this.$parent.search()
2094
+ })
2095
+ }
2096
+ },
2097
+ dblclick: function (row, index) {
2098
+ this.row = row
2099
+ this.detailsShow = true
2100
+ }
2101
+ }
2102
+ }
2103
+ </script>
2104
+ <style lang="less">
2105
+ #handManager {
2106
+ display: flex;
2107
+ justify-content: space-around;
2108
+ align-items: center;
2109
+
2110
+ .btn {
2111
+ margin: 0px;
2112
+ }
2113
+
2114
+ .hand-loading {
2115
+ border: 3px solid #ccc;
2116
+ border-right-color: #337ab7;
2117
+ border-radius: 50%;
2118
+ animation: spin 0.6s linear;
2119
+ position: absolute;
2120
+ animation-iteration-count: infinite;
2121
+ top: 0;
2122
+ right: 50%;
2123
+ z-index: 2;
2124
+ display: block;
2125
+ width: 28px;
2126
+ height: 28px;
2127
+ line-height: 28px;
2128
+ text-align: center;
2129
+ pointer-events: none;
2130
+ }
2131
+
2132
+ @keyframes spin {
2133
+ 100% {
2134
+ transform: rotate(360deg);
2135
+ }
2136
+ }
2137
+
2138
+ .detail-panel {
2139
+ text-align: center;
2140
+ color: #31708f;
2141
+ background-color: #e8f1f9;
2142
+ border-color: #F2F6FA;
2143
+ }
2144
+ }
2145
+
2146
+ #hand_manager_grid {
2147
+ thead {
2148
+ position: relative;
2149
+ z-index: 2;
2150
+ }
2151
+ }
2152
+
2153
+ #machineHandManager {
2154
+ .color-red {
2155
+ color: red;
2156
+ }
2157
+ }
2158
+ </style>