sale-client 3.6.310 → 3.6.311

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 (748) hide show
  1. package/build/dev-server.js +108 -108
  2. package/build/versionCheck.js +29 -29
  3. package/package.json +120 -120
  4. package/src/components/FilesManage/AddHostMeterUserList.vue +185 -185
  5. package/src/components/FilesManage/AddSubMeterUserList.vue +185 -185
  6. package/src/components/FilesManage/FileAddressList.vue +141 -141
  7. package/src/components/FilesManage/FileMergeInfo.vue +68 -68
  8. package/src/components/FilesManage/FileUserAddress.vue +776 -776
  9. package/src/components/FilesManage/FileUserAddressChange.vue +65 -65
  10. package/src/components/FilesManage/FileUserFiles.vue +1073 -1073
  11. package/src/components/FilesManage/FileUserMerge.vue +203 -203
  12. package/src/components/FilesManage/HostMeterAdd.vue +219 -219
  13. package/src/components/FilesManage/HostMeterList.vue +323 -323
  14. package/src/components/FilesManage/HostMeterUserList.vue +270 -270
  15. package/src/components/FilesManage/MeterinfoTest.vue +1207 -1207
  16. package/src/components/FilesManage/TemplateManage.vue +167 -167
  17. package/src/components/FilesManage/TotalSplit/SplitList.vue +154 -154
  18. package/src/components/FilesManage/TotalSplit/TotalSplitList.vue +83 -83
  19. package/src/components/FilesManage/UserAddressCollection.vue +694 -694
  20. package/src/components/FilesManage/UserAddressInFile.vue +646 -646
  21. package/src/components/FilesManage/UserDeviceInfoTest.vue +410 -410
  22. package/src/components/FilesManage/UserEssentialInfoTest.vue +602 -602
  23. package/src/components/FilesManage/UserGeneralInfoTest.vue +800 -800
  24. package/src/components/FilesManage/UserPaperInfoTest.vue +63 -63
  25. package/src/components/FilesManageNew/FileAddressList.vue +138 -138
  26. package/src/components/FilesManageNew/FileMergeInfo.vue +68 -68
  27. package/src/components/FilesManageNew/FileUserAddress.vue +484 -484
  28. package/src/components/FilesManageNew/FileUserAddressChange.vue +65 -65
  29. package/src/components/FilesManageNew/FileUserFiles.vue +749 -749
  30. package/src/components/FilesManageNew/FileUserMerge.vue +202 -202
  31. package/src/components/FilesManageNew/MeterinfoTest.vue +831 -831
  32. package/src/components/FilesManageNew/TotalSplit/SplitList.vue +154 -154
  33. package/src/components/FilesManageNew/TotalSplit/TotalSplitList.vue +83 -83
  34. package/src/components/FilesManageNew/UserGeneralInfoTest.vue +692 -692
  35. package/src/components/MaterialsManage/MaterialsBase.vue +163 -163
  36. package/src/components/MaterialsManage/MaterialsList.vue +186 -186
  37. package/src/components/SellGasCharge/ChargeCancel/CardMeterChargeCancel.vue +395 -395
  38. package/src/components/SellGasCharge/MeterCharge/CustomInvoice.vue +282 -282
  39. package/src/components/SellGasCharge/MeterChargeforUser/ChargeUserCenter.vue +183 -183
  40. package/src/components/SellGasCharge/MeterChargeforUser/ChargeUserManager.vue +112 -112
  41. package/src/components/SellGasCharge/MeterChargeforUser/ChargeUserlist.vue +82 -82
  42. package/src/components/SellGasCharge/MeterTrace/MeterList.vue +142 -142
  43. package/src/components/SellGasCharge/MeterTrace/MeterTrace.vue +222 -222
  44. package/src/components/UserFiles/AdjustableBox/AddBox.vue +343 -343
  45. package/src/components/UserFiles/AdjustableBox/BOXUserList.vue +54 -54
  46. package/src/components/UserFiles/AdjustableBox/BoxList.vue +186 -186
  47. package/src/components/UserFiles/AreaList.vue +84 -84
  48. package/src/components/UserFiles/Meterinfo.vue +428 -428
  49. package/src/components/UserFiles/NewAreaInfo.vue +556 -556
  50. package/src/components/UserFiles/UserFiles.vue +459 -459
  51. package/src/components/UserFiles/UserGeneralInfo.vue +378 -378
  52. package/src/components/UserFiles/UserPriceChangeHistory.vue +66 -66
  53. package/src/components/UserFiles/UserPriceChangeManage.vue +662 -662
  54. package/src/components/UserFiles/XieKaUser/AddUser.vue +208 -208
  55. package/src/components/UserFiles/XieKaUser/UsersList.vue +269 -269
  56. package/src/components/UserFiles/XieKaUser/XieKaManager.vue +148 -148
  57. package/src/components/UserFiles/admissibility.vue +46 -46
  58. package/src/components/UserFiles/batchUpdateInputtor.vue +347 -347
  59. package/src/components/WechatManage/Knowledge.vue +439 -439
  60. package/src/components/WechatManage/KnowledgeAdd.vue +326 -326
  61. package/src/components/WechatManage/KnowledgeModify.vue +325 -325
  62. package/src/components/WechatManage/KnowledgeRecord.vue +64 -64
  63. package/src/components/WechatManage/OrderCenter/Step.vue +153 -153
  64. package/src/components/WechatManage/OrderCenter/orderList.vue +258 -258
  65. package/src/components/WechatManage/OutLets.vue +461 -461
  66. package/src/components/WechatManage/OutLetsRecord.vue +65 -65
  67. package/src/components/WechatManage/Stopgas.vue +240 -240
  68. package/src/components/WechatManage/UserNoticeList.vue +745 -745
  69. package/src/components/WechatManage/UserNoticeRecord.vue +106 -106
  70. package/src/components/archives/ArchivesAdd.vue +190 -190
  71. package/src/components/archives/ArchivesList.vue +219 -219
  72. package/src/components/archives/UserfilesList.vue +351 -351
  73. package/src/components/baichuan/ChangeTable.vue +284 -284
  74. package/src/components/baichuan/newTableInfo.vue +202 -202
  75. package/src/components/charge/ChargeList.vue +948 -948
  76. package/src/components/charge/ChargeManage.vue +316 -316
  77. package/src/components/charge/ChargeManageOther.vue +204 -204
  78. package/src/components/charge/ChargeManageSell.vue +202 -202
  79. package/src/components/charge/ChargeModal.vue +101 -101
  80. package/src/components/charge/ChargeOper.vue +285 -285
  81. package/src/components/charge/ChargeOtherOper.vue +195 -195
  82. package/src/components/charge/HandList.vue +121 -121
  83. package/src/components/charge/NfcCardReplacement.vue +88 -88
  84. package/src/components/charge/business/CardChangeFill.vue +627 -627
  85. package/src/components/charge/business/CardMeterCenter.vue +980 -980
  86. package/src/components/charge/business/ChangeMeterAddGas.vue +559 -559
  87. package/src/components/charge/business/DigitalCharge.vue +440 -440
  88. package/src/components/charge/business/FilesComplete.vue +254 -254
  89. package/src/components/charge/business/IOT/IotChangeFill.vue +488 -488
  90. package/src/components/charge/business/IOTMeterCenter.vue +871 -871
  91. package/src/components/charge/business/IotOpen.vue +78 -78
  92. package/src/components/charge/business/NoCardMeterCenter.vue +498 -498
  93. package/src/components/charge/business/OtherCharge.vue +341 -341
  94. package/src/components/charge/business/OtherChargeByPay.vue +477 -477
  95. package/src/components/charge/business/OtherChargeNew.vue +614 -614
  96. package/src/components/charge/business/PriceChangeCompensation/IotCompensation.vue +307 -307
  97. package/src/components/charge/business/PriceChangeCompensation/JbCompensation.vue +343 -343
  98. package/src/components/charge/business/PriceChangeCompensation/SurplusRecordDetail.vue +72 -72
  99. package/src/components/charge/business/RepairCharge.vue +347 -347
  100. package/src/components/charge/business/ReturnMoneyExamine.vue +274 -274
  101. package/src/components/charge/business/ShowCardSellGas.vue +931 -931
  102. package/src/components/charge/business/ShowCardSellGasJB.vue +202 -202
  103. package/src/components/charge/business/ShowCardSellGasWeb.vue +203 -203
  104. package/src/components/charge/business/ShowCiTiaoCard.vue +169 -169
  105. package/src/components/charge/business/depositCharge/DepositCharge.vue +461 -461
  106. package/src/components/charge/business/machine/MachineChangeFill.vue +81 -81
  107. package/src/components/charge/business/machine/MachineCharge.vue +173 -173
  108. package/src/components/charge/business/machine/MachineMeterCenter.vue +691 -691
  109. package/src/components/charge/business/machine/MachineMeterPartCenter.vue +389 -389
  110. package/src/components/charge/business/machine/MachinePartCharge.vue +143 -143
  111. package/src/components/charge/business/machine/OweList.vue +157 -157
  112. package/src/components/charge/business/refund/DropTableRefund.vue +229 -229
  113. package/src/components/charge/business/refund/IOTRefund.vue +267 -267
  114. package/src/components/charge/business/refund/machineRefund.vue +223 -223
  115. package/src/components/charge/business/refund_copy/IOTRefund.vue +237 -237
  116. package/src/components/charge/business/refund_copy/machineRefund.vue +193 -193
  117. package/src/components/charge/bzjcancel.vue +309 -309
  118. package/src/components/charge/detailinfo/DevicesDetail.vue +69 -69
  119. package/src/components/charge/detailinfo/OldmeterDetail.vue +88 -88
  120. package/src/components/charge/detailinfo/OtherChargeRecord.vue +81 -81
  121. package/src/components/charge/detailinfo/UserfilesDetail.vue +79 -79
  122. package/src/components/charge/detailinfo/UserinfoDetail.vue +66 -66
  123. package/src/components/charge/detailinfo/price/MixpriceDetail.vue +48 -48
  124. package/src/components/charge/detailinfo/price/StairpriceDetail.vue +129 -129
  125. package/src/components/charge/gasloss/gasLossDetail.vue +262 -262
  126. package/src/components/charge/gasloss/gasLossForm.vue +90 -90
  127. package/src/components/charge/gasloss/gasLossOperate.vue +383 -383
  128. package/src/components/charge/gasloss/gasLossRecords.vue +294 -294
  129. package/src/components/charge/gasmove.vue +249 -249
  130. package/src/components/chargeBatch/BatchCharge.vue +374 -374
  131. package/src/components/chargeBatch/BatchChargeDetail.vue +72 -72
  132. package/src/components/chargeBatch/CardList.vue +518 -518
  133. package/src/components/chargeBatch/ChargeBatchList.vue +460 -460
  134. package/src/components/chargeBatch/ChargeGroupList.vue +337 -337
  135. package/src/components/chargeBatch/ChargeManageBatch.vue +214 -214
  136. package/src/components/chargeBatch/ChargeManageGroup.vue +216 -216
  137. package/src/components/chargeBatch/OweRecordQuery.vue +126 -126
  138. package/src/components/chargeBatch/RecordCancel.vue +346 -346
  139. package/src/components/chargeBatch/ReissueBillBatch.vue +97 -97
  140. package/src/components/chargeBatch/groupFeeDeduction.vue +118 -118
  141. package/src/components/chargeBatch/groupRefund.vue +181 -181
  142. package/src/components/chargeNew/BookBill.vue +121 -121
  143. package/src/components/chargeNew/ChargeList.vue +934 -934
  144. package/src/components/chargeNew/ChargeManageNew.vue +232 -232
  145. package/src/components/chargeNew/ChargeOper.vue +234 -234
  146. package/src/components/chargeNew/MeterReset.vue +81 -81
  147. package/src/components/chargeNew/SendBook.vue +107 -107
  148. package/src/components/chargeNew/thirdSurplus.vue +356 -356
  149. package/src/components/common/limit/LimitHistory.vue +299 -299
  150. package/src/components/common/limit/LimitList.vue +634 -634
  151. package/src/components/common/searchuploadfile/uploadFileSearch.vue +138 -138
  152. package/src/components/common/searchuploadfile/uploadFilesHistory.vue +187 -187
  153. package/src/components/common/userinfo_detail/SplitPrice.vue +354 -354
  154. package/src/components/common/userinfo_detail/TableUsageChart.vue +81 -81
  155. package/src/components/common/userinfo_detail/UserBaseInfo.vue +379 -379
  156. package/src/components/common/userinfo_detail/UserBaseInfoNew.vue +672 -672
  157. package/src/components/common/userinfo_detail/UserInfoDetailManage.vue +143 -143
  158. package/src/components/common/userinfo_detail/UserInfoDetailManageNew.vue +218 -218
  159. package/src/components/common/userinfo_detail/contractSig.vue +51 -51
  160. package/src/components/common/userinfo_detail/contractSigningBrain.vue +109 -109
  161. package/src/components/common/userinfo_detail/ic_detail/AutomaticPurse.vue +299 -299
  162. package/src/components/common/userinfo_detail/ic_detail/CardHandRecord.vue +268 -268
  163. package/src/components/common/userinfo_detail/ic_detail/ChangeMeterQueryUser.vue +240 -240
  164. package/src/components/common/userinfo_detail/ic_detail/ChangeRecord.vue +235 -235
  165. package/src/components/common/userinfo_detail/ic_detail/ChargeQueryUser.vue +530 -530
  166. package/src/components/common/userinfo_detail/ic_detail/ChargeRecordQuery.vue +102 -102
  167. package/src/components/common/userinfo_detail/ic_detail/DeveiceRecord.vue +251 -251
  168. package/src/components/common/userinfo_detail/ic_detail/FillCardQueryUser.vue +210 -210
  169. package/src/components/common/userinfo_detail/ic_detail/FillGasQueryUser.vue +229 -229
  170. package/src/components/common/userinfo_detail/ic_detail/HandQueryUser.vue +387 -387
  171. package/src/components/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +261 -261
  172. package/src/components/common/userinfo_detail/ic_detail/MeterParam.vue +152 -152
  173. package/src/components/common/userinfo_detail/ic_detail/OtherChargeQueryUser.vue +251 -251
  174. package/src/components/common/userinfo_detail/ic_detail/OtherChargeQueryUserDetail.vue +81 -81
  175. package/src/components/common/userinfo_detail/ic_detail/PriceAdjustmentQueryUser.vue +313 -313
  176. package/src/components/common/userinfo_detail/ic_detail/PriceChangeQueryUser.vue +194 -194
  177. package/src/components/common/userinfo_detail/ic_detail/RecordQueryUser.vue +252 -252
  178. package/src/components/common/userinfo_detail/ic_detail/Repurchase.vue +132 -132
  179. package/src/components/common/userinfo_detail/ic_detail/TransferQueryUser.vue +223 -223
  180. package/src/components/common/userinfo_detail/ic_detail/UserDeviceQuery.vue +252 -252
  181. package/src/components/common/userinfo_detail/ic_detail/WebAutomaticPurse.vue +298 -298
  182. package/src/components/common/userinfo_detail/ic_detail/WebChargeQueryUser.vue +378 -378
  183. package/src/components/common/userinfo_detail/ic_detail/WebHandQueryUser.vue +368 -368
  184. package/src/components/common/userinfo_detail/ic_detail/contractSigningList.vue +117 -117
  185. package/src/components/common/userinfo_detail/iot_detail/QueryHistoryInstruct.vue +304 -304
  186. package/src/components/common/userinfo_detail/iot_detail/QueryInstruct.vue +342 -342
  187. package/src/components/common/userinfo_detail/iot_detail/WatchCollection.vue +115 -115
  188. package/src/components/common/userinfo_detail/iot_detail/WatchDealWarning.vue +236 -236
  189. package/src/components/cooker/WareRecord.vue +85 -85
  190. package/src/components/matchmakingManagement/PlatformAddEdit.vue +145 -145
  191. package/src/components/matchmakingManagement/PlatformList.vue +150 -150
  192. package/src/components/meterBook/MeterList.vue +187 -187
  193. package/src/components/meterBook/MeterMsg.vue +194 -194
  194. package/src/components/meterBook/addMeterBook.vue +153 -153
  195. package/src/components/meterBook/addUserToBook.vue +155 -155
  196. package/src/components/newBill/CardList.vue +536 -536
  197. package/src/components/newBill/CardMeterCenter.vue +902 -902
  198. package/src/components/newBill/IOTMeterCenter.vue +797 -797
  199. package/src/components/newBill/NoCardMeterCenter.vue +466 -466
  200. package/src/components/newBill/PrintBill.vue +146 -146
  201. package/src/components/newBill/ReissueBill.vue +329 -329
  202. package/src/components/newpriceadjustment/NewPriceAdjustment.vue +906 -906
  203. package/src/components/newpriceadjustment/NewPriceAdjustmentSell.vue +596 -596
  204. package/src/components/newpriceadjustment/NewPriceAdjustmentWebmeter.vue +600 -600
  205. package/src/components/priceadjustment/adjustPrice.vue +121 -121
  206. package/src/components/priceadjustment/adjustUser.vue +247 -247
  207. package/src/components/revenue/Common/EticketModal.vue +95 -95
  208. package/src/components/revenue/Common/EticketPrint.vue +230 -230
  209. package/src/components/revenue/Common/EticketPrintAsync.vue +196 -196
  210. package/src/components/revenue/Common/LimitGas.vue +231 -231
  211. package/src/components/revenue/Common/MeterMessage.vue +184 -184
  212. package/src/components/revenue/Common/Movemeter.vue +467 -467
  213. package/src/components/revenue/Common/PaymentCode.vue +159 -159
  214. package/src/components/revenue/Common/PrintBill.vue +134 -134
  215. package/src/components/revenue/Common/ReissueBill.vue +294 -294
  216. package/src/components/revenue/Common/ValidateBill.vue +56 -56
  217. package/src/components/revenue/Common/batchDisable.vue +503 -503
  218. package/src/components/revenue/Common/uploadFiles.vue +503 -503
  219. package/src/components/revenue/Common/userFlowSheet.vue +154 -154
  220. package/src/components/revenue/HandManager/CardHand.vue +873 -873
  221. package/src/components/revenue/HandManager/EstimateCardManager.vue +1184 -1184
  222. package/src/components/revenue/HandManager/EstimateManager.vue +1769 -1769
  223. package/src/components/revenue/HandManager/HandManager.vue +1831 -1831
  224. package/src/components/revenue/HandManager/HandManagerCard.vue +1163 -1163
  225. package/src/components/revenue/HandManager/MbpeopleList.vue +498 -498
  226. package/src/components/revenue/HandManager/MeterBookAdd.vue +396 -396
  227. package/src/components/revenue/HandManager/MeterBookList.vue +488 -488
  228. package/src/components/revenue/HandManager/MeterBookUser.vue +724 -724
  229. package/src/components/revenue/HandManager/OverdueSetList.vue +295 -295
  230. package/src/components/revenue/HandManager/OverdueSetUser.vue +93 -93
  231. package/src/components/revenue/HandManager/PriceAdjustment.vue +377 -377
  232. package/src/components/revenue/HandManager/PriceAdjustmentCard.vue +377 -377
  233. package/src/components/revenue/HandManager/PriceAdjustmentSelling.vue +377 -377
  234. package/src/components/revenue/HandManager/PriceAdjustmentWebmeter.vue +430 -430
  235. package/src/components/revenue/HandManager/RemainAdjustment.vue +282 -282
  236. package/src/components/revenue/HandManager/VolumeAdjustment/VolumeAdjustmentManage.vue +406 -406
  237. package/src/components/revenue/HandManager/meterbookEntry.vue +90 -90
  238. package/src/components/revenue/HandManager/openEticket/HandUserManage.vue +154 -154
  239. package/src/components/revenue/HandManager/openEticket/HasOpenHand.vue +149 -149
  240. package/src/components/revenue/HandManager/openEticket/HasOpenReceipt.vue +137 -137
  241. package/src/components/revenue/HandManager/openEticket/UnOpenHand.vue +167 -167
  242. package/src/components/revenue/HandManager/openEticket/UnOpenReceipt.vue +221 -221
  243. package/src/components/revenue/HandManager/qtxCardHand/GassaleHand.vue +228 -228
  244. package/src/components/revenue/HandManager/qtxCardHand/TrqtmHand.vue +292 -292
  245. package/src/components/revenue/IssuanceManagement/batchCardIssuance.vue +339 -339
  246. package/src/components/revenue/analysis/FarawayQuery.vue +392 -392
  247. package/src/components/revenue/analysis/outStockQuery.vue +288 -288
  248. package/src/components/revenue/bank/BankForm.vue +156 -156
  249. package/src/components/revenue/bank/BankList.vue +143 -143
  250. package/src/components/revenue/bank/bankOffer.vue +199 -199
  251. package/src/components/revenue/bank/bankReturn.vue +217 -217
  252. package/src/components/revenue/base/GasWaterSearch.vue +195 -195
  253. package/src/components/revenue/base/PurchaseWater.vue +237 -237
  254. package/src/components/revenue/base/UserList.vue +480 -480
  255. package/src/components/revenue/base/leftview/CheckGas.vue +55 -55
  256. package/src/components/revenue/base/leftview/MeterUse.vue +140 -140
  257. package/src/components/revenue/base/leftview/MixPriceInfo.vue +60 -60
  258. package/src/components/revenue/base/leftview/RecordStoryinfo.vue +131 -131
  259. package/src/components/revenue/base/leftview/SafeCheck.vue +339 -339
  260. package/src/components/revenue/base/leftview/ServiceRepair.vue +128 -128
  261. package/src/components/revenue/base/leftview/Stairinfo.vue +156 -156
  262. package/src/components/revenue/base/leftview/UserFees.vue +57 -57
  263. package/src/components/revenue/base/leftview/Userinfo.vue +279 -279
  264. package/src/components/revenue/base/leftview/billMessage.vue +125 -125
  265. package/src/components/revenue/base/rightview/CardList.vue +558 -558
  266. package/src/components/revenue/base/rightview/InstallCardList.vue +298 -298
  267. package/src/components/revenue/base/rightview/RecordCancel.vue +338 -338
  268. package/src/components/revenue/base/rightview/canceldetail/AutoaccountsCancelDetail.vue +82 -82
  269. package/src/components/revenue/base/rightview/canceldetail/CardmetercenterCancelDetail.vue +64 -64
  270. package/src/components/revenue/base/rightview/canceldetail/ChangeMeterCancelDetail.vue +76 -76
  271. package/src/components/revenue/base/rightview/canceldetail/IOTMeterCenterCancelDetail.vue +62 -62
  272. package/src/components/revenue/base/rightview/canceldetail/MachinemetercenterCancelDetail.vue +86 -86
  273. package/src/components/revenue/base/rightview/canceldetail/OtherchargeCancelDetail.vue +62 -62
  274. package/src/components/revenue/base/rightview/canceldetail/ReplacecardmanageCancelDetail.vue +59 -59
  275. package/src/components/revenue/base/rightview/canceldetail/TransfermanageCancelDetail.vue +63 -63
  276. package/src/components/revenue/base/rightview/carddetail/AddUserDetail.vue +62 -62
  277. package/src/components/revenue/base/rightview/carddetail/AdvanceDeliveryDetail.vue +50 -50
  278. package/src/components/revenue/base/rightview/carddetail/AutoAccountsDetail.vue +77 -77
  279. package/src/components/revenue/base/rightview/carddetail/BankDKDetail.vue +77 -77
  280. package/src/components/revenue/base/rightview/carddetail/BankPay.vue +79 -79
  281. package/src/components/revenue/base/rightview/carddetail/BlacklistDetail.vue +63 -63
  282. package/src/components/revenue/base/rightview/carddetail/BuildFeeDetail.vue +77 -77
  283. package/src/components/revenue/base/rightview/carddetail/CancellationDetail.vue +58 -58
  284. package/src/components/revenue/base/rightview/carddetail/CardMeterCenterDetail.vue +72 -72
  285. package/src/components/revenue/base/rightview/carddetail/CardOverUserDetail.vue +64 -64
  286. package/src/components/revenue/base/rightview/carddetail/ChangeFeeDetail.vue +116 -116
  287. package/src/components/revenue/base/rightview/carddetail/ChangeFlowmeterDetail.vue +119 -119
  288. package/src/components/revenue/base/rightview/carddetail/ChangeMeterDetail.vue +80 -80
  289. package/src/components/revenue/base/rightview/carddetail/DisableManageDetail.vue +60 -60
  290. package/src/components/revenue/base/rightview/carddetail/EnableManageDetail.vue +53 -53
  291. package/src/components/revenue/base/rightview/carddetail/FeeDeductionDetail.vue +70 -70
  292. package/src/components/revenue/base/rightview/carddetail/GarbageDetail.vue +59 -59
  293. package/src/components/revenue/base/rightview/carddetail/GasLossDetail.vue +52 -52
  294. package/src/components/revenue/base/rightview/carddetail/GasPriceChangeDetail.vue +58 -58
  295. package/src/components/revenue/base/rightview/carddetail/IOTMeterCenterDetail.vue +62 -62
  296. package/src/components/revenue/base/rightview/carddetail/InputtorChangeDetail.vue +59 -59
  297. package/src/components/revenue/base/rightview/carddetail/MachineMeterCenterDetail.vue +72 -72
  298. package/src/components/revenue/base/rightview/carddetail/OffGasAddGasDetail.vue +68 -68
  299. package/src/components/revenue/base/rightview/carddetail/OpenMeterDetail.vue +48 -48
  300. package/src/components/revenue/base/rightview/carddetail/OtherChargeDetail.vue +67 -67
  301. package/src/components/revenue/base/rightview/carddetail/OverUserChangeDetail.vue +61 -61
  302. package/src/components/revenue/base/rightview/carddetail/PriceAdjustmentDetail.vue +76 -76
  303. package/src/components/revenue/base/rightview/carddetail/ReduceFeeDetail.vue +77 -77
  304. package/src/components/revenue/base/rightview/carddetail/RefundDetail.vue +62 -62
  305. package/src/components/revenue/base/rightview/carddetail/ReissueBill.vue +111 -111
  306. package/src/components/revenue/base/rightview/carddetail/RepairFeeDeduction.vue +70 -70
  307. package/src/components/revenue/base/rightview/carddetail/ReplaceCardManageDetail.vue +51 -51
  308. package/src/components/revenue/base/rightview/carddetail/ReturnMoney.vue +52 -52
  309. package/src/components/revenue/base/rightview/carddetail/SalecardgasDetail.vue +62 -62
  310. package/src/components/revenue/base/rightview/carddetail/StopApplyDetail.vue +70 -70
  311. package/src/components/revenue/base/rightview/carddetail/TransferManageDetail.vue +61 -61
  312. package/src/components/revenue/base/rightview/carddetail/UserChangeDetail.vue +79 -79
  313. package/src/components/revenue/base/rightview/carddetail/WeChatPay.vue +79 -79
  314. package/src/components/revenue/base/rightview/carddetail/WithGas.vue +70 -70
  315. package/src/components/revenue/base/rightview/carddetail/machineCardDetail.vue +48 -48
  316. package/src/components/revenue/base/rightview/carddetail/movegasDetail.vue +66 -66
  317. package/src/components/revenue/base/rightview/carddetail/movemeterdetail.vue +74 -74
  318. package/src/components/revenue/base/rightview/reissuebill/OtherBill.vue +197 -197
  319. package/src/components/revenue/base/rightview/valueaddinfo.vue +325 -325
  320. package/src/components/revenue/batchDeduction/batchDeduction.vue +47 -47
  321. package/src/components/revenue/batchDeduction/batchDeductionList.vue +238 -238
  322. package/src/components/revenue/batchDeduction/batchDeductionOper.vue +119 -119
  323. package/src/components/revenue/batchPreloads/batchPreloads.vue +41 -41
  324. package/src/components/revenue/batchPreloads/batchPreloadsCharge.vue +117 -117
  325. package/src/components/revenue/batchPreloads/batchPreloadsList.vue +234 -234
  326. package/src/components/revenue/cancelHandplan/IotHandplanCanel.vue +88 -88
  327. package/src/components/revenue/cardHandManage/cardDown.vue +1112 -1112
  328. package/src/components/revenue/cardHandManage/cardHandAudit.vue +483 -483
  329. package/src/components/revenue/cardHandManage/cardsHand.vue +891 -891
  330. package/src/components/revenue/changeInsurance/InsuranceAdd.vue +411 -411
  331. package/src/components/revenue/changeInsurance/InsuranceChargesDetails.vue +405 -405
  332. package/src/components/revenue/changeInsurance/InsuranceList.vue +264 -264
  333. package/src/components/revenue/changeInsurance/InsuranceRecord.vue +129 -129
  334. package/src/components/revenue/changeInsurance/UserInsurance.vue +77 -77
  335. package/src/components/revenue/comprehen/Bill/CustQueryEticket.vue +271 -271
  336. package/src/components/revenue/comprehen/Bill/CustomInvoice.vue +327 -327
  337. package/src/components/revenue/comprehen/Bill/Eticket/EticketOpenCard.vue +331 -331
  338. package/src/components/revenue/comprehen/Bill/Eticket/EticketOpenJBPage.vue +311 -311
  339. package/src/components/revenue/comprehen/Bill/Eticket/EticketOpenPage.vue +329 -329
  340. package/src/components/revenue/comprehen/Bill/Eticket/EticketRecordList.vue +269 -269
  341. package/src/components/revenue/comprehen/Bill/EticketManage.vue +198 -198
  342. package/src/components/revenue/comprehen/Bill/EticketRecordList.vue +354 -354
  343. package/src/components/revenue/comprehen/Bill/EticketV4/CustQueryEticket.vue +333 -333
  344. package/src/components/revenue/comprehen/Bill/EticketV4/EticketManage.vue +67 -67
  345. package/src/components/revenue/comprehen/Bill/EticketV4/EticketOpenCard.vue +348 -348
  346. package/src/components/revenue/comprehen/Bill/EticketV4/EticketOpenJBPage.vue +349 -349
  347. package/src/components/revenue/comprehen/Bill/EticketV4/EticketOpenPage.vue +340 -340
  348. package/src/components/revenue/comprehen/Bill/EticketV4/EticketRecordList.vue +400 -400
  349. package/src/components/revenue/comprehen/Bill/asyncEticket/CustQueryEticketAsync.vue +308 -308
  350. package/src/components/revenue/comprehen/Bill/paper/AddBill.vue +186 -186
  351. package/src/components/revenue/comprehen/Bill/paper/BillChangeDetail.vue +57 -57
  352. package/src/components/revenue/comprehen/Bill/paper/BillDetail.vue +289 -289
  353. package/src/components/revenue/comprehen/Bill/paper/BillList.vue +238 -238
  354. package/src/components/revenue/comprehen/Bill/paperbill/DistributionDetail.vue +186 -186
  355. package/src/components/revenue/comprehen/Bill/paperbill/DistributionGather.vue +139 -139
  356. package/src/components/revenue/comprehen/CardManage/CardAllotEdit.vue +171 -171
  357. package/src/components/revenue/comprehen/CardManage/CardAllotList.vue +110 -110
  358. package/src/components/revenue/comprehen/CardManage/CardDetailEdit.vue +130 -130
  359. package/src/components/revenue/comprehen/CardManage/CardDetailList.vue +110 -110
  360. package/src/components/revenue/comprehen/ComprehenOperation/BankPayment/BankPayment.vue +300 -300
  361. package/src/components/revenue/comprehen/ComprehenOperation/BankPayment/BankPaymentConstrast.vue +301 -301
  362. package/src/components/revenue/comprehen/ComprehenOperation/BatchChange/BatchCancellation.vue +245 -245
  363. package/src/components/revenue/comprehen/ComprehenOperation/BatchChange/ChangeMeterReader.vue +93 -93
  364. package/src/components/revenue/comprehen/ComprehenOperation/ChangeAccount/TransferManage.vue +533 -533
  365. package/src/components/revenue/comprehen/ComprehenOperation/ChangeAccount/TransferRecords.vue +236 -236
  366. package/src/components/revenue/comprehen/ComprehenOperation/ChangeAccount/Transferlist.vue +209 -209
  367. package/src/components/revenue/comprehen/ComprehenOperation/ChangeMeter/ChangeNewMeter.vue +562 -562
  368. package/src/components/revenue/comprehen/ComprehenOperation/ChangeMeter/IOTMeter.vue +133 -133
  369. package/src/components/revenue/comprehen/ComprehenOperation/ChangeMeter/MachineMeter.vue +114 -114
  370. package/src/components/revenue/comprehen/ComprehenOperation/FeeDeduction/feeDeduction.vue +201 -201
  371. package/src/components/revenue/comprehen/ComprehenOperation/FeeDeduction/feeMachine.vue +169 -169
  372. package/src/components/revenue/comprehen/ComprehenOperation/GiftFee/icTable.vue +255 -255
  373. package/src/components/revenue/comprehen/ComprehenOperation/GiftFee/iotTable.vue +162 -162
  374. package/src/components/revenue/comprehen/ComprehenOperation/MeterDisable/DisableManage.vue +95 -95
  375. package/src/components/revenue/comprehen/ComprehenOperation/MeterEnable/EnableManage.vue +186 -186
  376. package/src/components/revenue/comprehen/ComprehenOperation/OffGasAddGas/OffGasAddGas.vue +335 -335
  377. package/src/components/revenue/comprehen/ComprehenOperation/OrderDetails/OrderDetails.vue +412 -412
  378. package/src/components/revenue/comprehen/ComprehenOperation/OtherGas/OtherGas.vue +508 -508
  379. package/src/components/revenue/comprehen/ComprehenOperation/OverCharge/OverUseCharge.vue +438 -438
  380. package/src/components/revenue/comprehen/ComprehenOperation/PriceJustment/priceJustment.vue +124 -124
  381. package/src/components/revenue/comprehen/ComprehenOperation/RefundManage/RefundManage.vue +254 -254
  382. package/src/components/revenue/comprehen/ComprehenOperation/ReplaceCard/MachineCardBill.vue +92 -92
  383. package/src/components/revenue/comprehen/ComprehenOperation/ReplaceCard/ReplaceCardManage.vue +415 -415
  384. package/src/components/revenue/comprehen/ComprehenOperation/SellRecordChange/SellRecord.vue +83 -83
  385. package/src/components/revenue/comprehen/ComprehenOperation/SellRecordChange/UserinfoList.vue +74 -74
  386. package/src/components/revenue/comprehen/ComprehenOperation/newchangemeter/ChangeMeter.vue +1149 -1149
  387. package/src/components/revenue/comprehen/ComprehenOperation/newchangemeter/ResetMeter.vue +1101 -1101
  388. package/src/components/revenue/comprehen/ComprehenOperation/removeTable.vue +235 -235
  389. package/src/components/revenue/comprehen/ComprehenOperation/removeTableCancel.vue +136 -136
  390. package/src/components/revenue/comprehen/ComprehenOperation/resetShowCardgas/ResetShowCardGas.vue +163 -163
  391. package/src/components/revenue/comprehen/ComprehenOperation/wallheating/WallheatingInfoAdd.vue +174 -174
  392. package/src/components/revenue/comprehen/Exemption/GasFeeReduction.vue +250 -250
  393. package/src/components/revenue/comprehen/Maintenance/T+MoneyDocking/moneyDocking.vue +202 -202
  394. package/src/components/revenue/comprehen/Maintenance/T+MoneyDocking/moneyDockingTow.vue +169 -169
  395. package/src/components/revenue/comprehen/Maintenance/bill/billListMaintain.vue +160 -160
  396. package/src/components/revenue/comprehen/Maintenance/bill/billOperate.vue +266 -266
  397. package/src/components/revenue/comprehen/Maintenance/bill/billRecordMaintain.vue +119 -119
  398. package/src/components/revenue/comprehen/Maintenance/changeMeter/changemeterListMaintain.vue +374 -374
  399. package/src/components/revenue/comprehen/Maintenance/changeMeter/changemeterOperate.vue +283 -283
  400. package/src/components/revenue/comprehen/Maintenance/changeMeter/maintenanceChangeMeterRecords.vue +148 -148
  401. package/src/components/revenue/comprehen/Maintenance/fillgas/fillgasRecordMaintain.vue +148 -148
  402. package/src/components/revenue/comprehen/Maintenance/fillgas/fillgasRecordMaintainList.vue +337 -337
  403. package/src/components/revenue/comprehen/Maintenance/fillgas/fillgasSpecific.vue +297 -297
  404. package/src/components/revenue/comprehen/Maintenance/group/MeterOperatemaingroup.vue +394 -394
  405. package/src/components/revenue/comprehen/Maintenance/group/StockListmaingroup.vue +477 -477
  406. package/src/components/revenue/comprehen/Maintenance/group/maintenancegroup.vue +149 -149
  407. package/src/components/revenue/comprehen/Maintenance/hand/handListMaintain.vue +640 -640
  408. package/src/components/revenue/comprehen/Maintenance/hand/handOperate.vue +469 -469
  409. package/src/components/revenue/comprehen/Maintenance/hand/maintenanceHandmeterRecords.vue +148 -148
  410. package/src/components/revenue/comprehen/Maintenance/otherRecords/OtherMaintenanceLists.vue +233 -233
  411. package/src/components/revenue/comprehen/Maintenance/otherRecords/Otherrecordmaintenance.vue +173 -173
  412. package/src/components/revenue/comprehen/Maintenance/otherRecords/specificInformation.vue +416 -416
  413. package/src/components/revenue/comprehen/Maintenance/pictureManage/pictureListMaintain.vue +377 -377
  414. package/src/components/revenue/comprehen/Maintenance/revenue/MeterOperatemain.vue +397 -397
  415. package/src/components/revenue/comprehen/Maintenance/revenue/StockListmain.vue +529 -529
  416. package/src/components/revenue/comprehen/Maintenance/revenue/maintenance.vue +150 -150
  417. package/src/components/revenue/comprehen/Message/AllUser.vue +608 -608
  418. package/src/components/revenue/comprehen/Message/AllUserNew.vue +617 -617
  419. package/src/components/revenue/comprehen/Message/ArrearsList.vue +397 -397
  420. package/src/components/revenue/comprehen/Message/MessageList.vue +635 -635
  421. package/src/components/revenue/comprehen/Message/TemplateMessage.vue +92 -92
  422. package/src/components/revenue/comprehen/Message/UserDefinedMessage.vue +90 -90
  423. package/src/components/revenue/comprehen/Message/UserDefinedMessageNew.vue +114 -114
  424. package/src/components/revenue/comprehen/PreferentialPolicies/PrivilegeEdit.vue +257 -257
  425. package/src/components/revenue/comprehen/PreferentialPolicies/PrivilegeList.vue +135 -135
  426. package/src/components/revenue/comprehen/ResourceRecord/ResourceRecordQuery.vue +186 -186
  427. package/src/components/revenue/comprehen/SpecialUser/BasicLiving/BasicLiving.vue +277 -277
  428. package/src/components/revenue/comprehen/SpecialUser/BasicLiving/BasicLivingList.vue +280 -280
  429. package/src/components/revenue/comprehen/SpecialUser/BasicLiving/UpdateBasicLiving.vue +59 -59
  430. package/src/components/revenue/comprehen/SpecialUser/BasicLiving/stopBasicLiving.vue +171 -171
  431. package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackList.vue +290 -290
  432. package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackListDetail.vue +71 -71
  433. package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackListList.vue +275 -275
  434. package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackListRecord.vue +62 -62
  435. package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackModal.vue +211 -211
  436. package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackRecordQuery.vue +211 -211
  437. package/src/components/revenue/comprehen/StairPrice/GasPrice.vue +521 -521
  438. package/src/components/revenue/comprehen/StairPrice/GasPriceList.vue +319 -319
  439. package/src/components/revenue/comprehen/StairPrice/GasPriceUser.vue +485 -485
  440. package/src/components/revenue/comprehen/StairPrice/PriceChangeDetail.vue +76 -76
  441. package/src/components/revenue/comprehen/StairPrice/PriceChangeHistory.vue +71 -71
  442. package/src/components/revenue/comprehen/StairPrice/PriceRecord.vue +138 -138
  443. package/src/components/revenue/comprehen/StairPrice/UpdateInfo.vue +68 -68
  444. package/src/components/revenue/comprehen/ToolCard/CardTypeDetail.vue +191 -191
  445. package/src/components/revenue/comprehen/TotalSplit/AllUserFiles.vue +120 -120
  446. package/src/components/revenue/comprehen/TotalSplit/SplitList.vue +264 -264
  447. package/src/components/revenue/comprehen/TotalSplit/TotalSplitList.vue +126 -126
  448. package/src/components/revenue/comprehen/TotalSplit/TotalSplitManage.vue +46 -46
  449. package/src/components/revenue/comprehen/alipay/alipayConstrast.vue +291 -291
  450. package/src/components/revenue/comprehen/alipay/alipayDetail.vue +395 -395
  451. package/src/components/revenue/comprehen/batch/batchEditFiles.vue +237 -237
  452. package/src/components/revenue/comprehen/batch/batchEditHistory.vue +93 -93
  453. package/src/components/revenue/comprehen/batch/batchEditManage.vue +131 -131
  454. package/src/components/revenue/comprehen/batch/batchUserList.vue +327 -327
  455. package/src/components/revenue/comprehen/closeaccount/Closeaccount.vue +190 -190
  456. package/src/components/revenue/comprehen/closeaccount/battchcancelaudit.vue +419 -419
  457. package/src/components/revenue/comprehen/common/ImportExcel.vue +133 -133
  458. package/src/components/revenue/comprehen/device/deviceEdit.vue +106 -106
  459. package/src/components/revenue/comprehen/device/deviceList.vue +146 -146
  460. package/src/components/revenue/comprehen/gasbrand/AddGasBrand.vue +512 -512
  461. package/src/components/revenue/comprehen/gasbrand/AddGasMeterInitParam.vue +153 -153
  462. package/src/components/revenue/comprehen/gasbrand/AddGasModel.vue +122 -122
  463. package/src/components/revenue/comprehen/gasbrand/AddGasModelInfo.vue +128 -128
  464. package/src/components/revenue/comprehen/gasbrand/AddJsonParameter.vue +163 -163
  465. package/src/components/revenue/comprehen/gasbrand/AddUseringOrg.vue +177 -177
  466. package/src/components/revenue/comprehen/gasbrand/GasBrandList.vue +241 -241
  467. package/src/components/revenue/comprehen/gasbrand/GasBrandUser.vue +185 -185
  468. package/src/components/revenue/comprehen/gasbrand/GasModelInfo.vue +93 -93
  469. package/src/components/revenue/comprehen/gasbrand/Parames.vue +293 -293
  470. package/src/components/revenue/comprehen/gasbrand/ViewOrg.vue +43 -43
  471. package/src/components/revenue/comprehen/handAudit/MeterReadAudit.vue +392 -392
  472. package/src/components/revenue/comprehen/insurance/insuranceGuanL.vue +337 -337
  473. package/src/components/revenue/comprehen/ovdue/Overduetax.vue +624 -624
  474. package/src/components/revenue/comprehen/posQuery/PosQueryList.vue +430 -430
  475. package/src/components/revenue/comprehen/replacement/replaceMentList.vue +412 -412
  476. package/src/components/revenue/comprehen/replacement/replacementHandInfoRecord.vue +155 -155
  477. package/src/components/revenue/comprehen/replacement/replacementSingleInfoOperation.vue +296 -296
  478. package/src/components/revenue/comprehen/wechatpay/WeChatPayContrast.vue +327 -327
  479. package/src/components/revenue/comprehen/wechatpay/WeChatPayDetail.vue +448 -448
  480. package/src/components/revenue/comprehen/wechatpay/WeChatPayPos.vue +177 -177
  481. package/src/components/revenue/comprehen/wechatpay/wechatValidateManage.vue +303 -303
  482. package/src/components/revenue/concentrator/ncAddressList.vue +141 -141
  483. package/src/components/revenue/concentrator/ncArchivesAdd.vue +646 -646
  484. package/src/components/revenue/concentrator/ncArchivesList.vue +199 -199
  485. package/src/components/revenue/concentrator/ncUserfilesList.vue +391 -391
  486. package/src/components/revenue/concentrator/ncUserfilesList2.vue +478 -478
  487. package/src/components/revenue/dispatch/dispatchDown.vue +402 -402
  488. package/src/components/revenue/dispatch/dispatchList.vue +430 -430
  489. package/src/components/revenue/dispatch/showList.vue +83 -83
  490. package/src/components/revenue/invoiceuse/CompanyTitleInput.vue +98 -98
  491. package/src/components/revenue/invoiceuse/InvoiceChargeList.vue +301 -301
  492. package/src/components/revenue/invoiceuse/InvoiceEntry.vue +78 -78
  493. package/src/components/revenue/invoiceuse/InvoiceGoodsInfoEntry.vue +140 -140
  494. package/src/components/revenue/invoiceuse/InvoiceGoodsInput.vue +90 -90
  495. package/src/components/revenue/invoiceuse/InvoiceInfoEntry.vue +142 -142
  496. package/src/components/revenue/invoiceuse/InvoiceInformationInput.vue +110 -110
  497. package/src/components/revenue/invoiceuse/InvoiceUse.vue +269 -269
  498. package/src/components/revenue/machineHandManage/ArrearsQuery.vue +919 -919
  499. package/src/components/revenue/machineHandManage/HandplanQuery.vue +1350 -1350
  500. package/src/components/revenue/machineHandManage/machineDown.vue +1148 -1148
  501. package/src/components/revenue/machineHandManage/machineHand.vue +2071 -2071
  502. package/src/components/revenue/machineHandManage/machineHandAudit.vue +773 -773
  503. package/src/components/revenue/machineHandManage/machineUploaded.vue +316 -316
  504. package/src/components/revenue/priceAdjustment/CardPriceAdjustment.vue +169 -169
  505. package/src/components/revenue/priceAdjustment/cardMange/cardSellingDifference.vue +331 -331
  506. package/src/components/revenue/printing/PrintingFileUserFiles.vue +867 -867
  507. package/src/components/revenue/regionalgas/regionalList.vue +232 -232
  508. package/src/components/revenue/regionalgas/regionalListRecord.vue +72 -72
  509. package/src/components/revenue/regionalgas/regionaladd.vue +267 -267
  510. package/src/components/revenue/stopairmanage/stopairList.vue +201 -201
  511. package/src/components/revenue/stopairmanage/stopairListRecord.vue +82 -82
  512. package/src/components/revenue/stopairmanage/stopairadd.vue +228 -228
  513. package/src/components/revenue/third/rizhao/transferAudit.vue +205 -205
  514. package/src/components/revenue/third/rizhao/transferAuditDisposeBasics.vue +220 -220
  515. package/src/components/revenue/third/transferAudit.vue +205 -205
  516. package/src/components/revenue/third/transferAuditDisposeBasics.vue +213 -213
  517. package/src/components/revenue/todoList/CompileList.vue +93 -93
  518. package/src/components/revenue/todoList/TodoList.vue +129 -129
  519. package/src/components/service/BluetoothSell.js +76 -76
  520. package/src/components/service/PCSell.js +77 -77
  521. package/src/components/service/Save.js +77 -77
  522. package/src/components/valueaddserver/valueaddservershow.vue +253 -253
  523. package/src/components/webMeter/MeterManage/WebMeterBatchOperate.vue +200 -200
  524. package/src/components/webMeter/MeterManage/WebMeterBatchOperationValve.vue +818 -818
  525. package/src/components/webMeter/NewWebMeterHandPlan.vue +716 -716
  526. package/src/components/webMeter/WebBalanceQuery.vue +532 -532
  527. package/src/components/webMeter/WebmeterFlowmeter.vue +1064 -1064
  528. package/src/components/webMeter/approvalHandleList.vue +548 -548
  529. package/src/components/webMeter/common/MeterMsg.vue +596 -596
  530. package/src/components/webMeter/common/NewWatchMsg.vue +586 -586
  531. package/src/components/webMeter/common/QueryInstruct.vue +244 -244
  532. package/src/components/webMeter/common/SignParameter.vue +278 -278
  533. package/src/components/webMeter/common/WatchCollection.vue +96 -96
  534. package/src/components/webMeter/common/WatchCost.vue +101 -101
  535. package/src/components/webMeter/common/WatchDealWarning.vue +231 -231
  536. package/src/components/webMeter/common/WatchRecharge.vue +159 -159
  537. package/src/components/webMeter/common/WebMeterInfoManage.vue +124 -124
  538. package/src/components/webMeter/common/batteryEcharts.vue +159 -159
  539. package/src/components/webMeter/common/signalEcharts.vue +155 -155
  540. package/src/components/webMeter/dataCollection/NewWebMeterHandPlan.vue +810 -810
  541. package/src/components/webMeter/iotBalanceAnalyse.vue +374 -374
  542. package/src/components/webMeter/meterinfo/NewMeterList.vue +706 -706
  543. package/src/components/webMeter/paramSave/ParamHistory.vue +115 -115
  544. package/src/components/webMeter/paramSave/ParamSet.vue +668 -668
  545. package/src/components/webMeter/paramSave/ParamSetForm.vue +344 -344
  546. package/src/components/webMeter/paramSaveNew/ParamExceptions.vue +56 -56
  547. package/src/components/webMeter/paramSaveNew/ParamHistory.vue +164 -164
  548. package/src/components/webMeter/paramSaveNew/ParamSet.vue +596 -596
  549. package/src/components/webMeter/paramSaveNew/ParamSetDefault.vue +221 -221
  550. package/src/components/webMeter/paramSaveNew/ParamSetDefaultList.vue +68 -68
  551. package/src/components/webMeter/paramSaveNew/ParamSetForm.vue +507 -507
  552. package/src/components/webMeter/webInfo/EditWebMeterInfo.vue +278 -278
  553. package/src/components/webMeter/webInfo/MeterHistory.vue +74 -74
  554. package/src/components/webMeter/webInfo/UseWebMeter.vue +185 -185
  555. package/src/components/webMeter/webInfo/WebMeterInfo.vue +80 -80
  556. package/src/components/webMeter/webInfo/WebMeterList.vue +430 -430
  557. package/src/components/webMeter/webInfo/qinhua/EditWebMeterInfo.vue +247 -247
  558. package/src/components/webMeter/webInfo/qinhua/MeterHistory.vue +74 -74
  559. package/src/components/webMeter/webInfo/qinhua/WebMeterInfo.vue +79 -79
  560. package/src/components/webMeter/webInfo/qinhua/WebMeterList.vue +357 -357
  561. package/src/components/weinan/YuShou.vue +116 -116
  562. package/src/components/weinan/tree/Hhhh.vue +194 -194
  563. package/src/components/weinan/tree/ShowMessage.vue +136 -136
  564. package/src/components/zhoukou/DeveloperInfo.vue +327 -327
  565. package/src/components/zhoukou/LogRecordList.vue +188 -188
  566. package/src/filiale/alashan/UserBaseInfoNew.vue +481 -481
  567. package/src/filiale/ancheng/NewMeterList.vue +607 -607
  568. package/src/filiale/bayan/CardMeterCenter.vue +956 -956
  569. package/src/filiale/bayan/CardService.js +2237 -2237
  570. package/src/filiale/bayan/ChargeManage.vue +316 -316
  571. package/src/filiale/bayan/ChargeOper.vue +312 -312
  572. package/src/filiale/bayan/IOTMeterCenter.vue +873 -873
  573. package/src/filiale/bayan/MachineMeterCenter.vue +665 -665
  574. package/src/filiale/bayan/NoCardMeterCenter.vue +501 -501
  575. package/src/filiale/bayan/OtherChargeNew.vue +643 -643
  576. package/src/filiale/bayan/ReplaceCardManage.vue +419 -419
  577. package/src/filiale/bayan/ShowCardSellGas.vue +935 -935
  578. package/src/filiale/bayan/UnWriteCardCenter.vue +112 -112
  579. package/src/filiale/bayan/Userinfo.vue +280 -280
  580. package/src/filiale/bayan/sale.js +30 -30
  581. package/src/filiale/dexin/TransferManage.vue +534 -534
  582. package/src/filiale/dexin/sale.js +7 -7
  583. package/src/filiale/dongguan/components/common/userinfo_detail/UserBaseInfoNew.vue +504 -504
  584. package/src/filiale/dongguan/components/common/userinfo_detail/WebMeterBatchOperationValve.vue +789 -789
  585. package/src/filiale/ganquan/components/UserFiles/UserPaperInfoTest.vue +81 -81
  586. package/src/filiale/gehua/UserBaseInfoNew.vue +469 -469
  587. package/src/filiale/gehua/machineHandManage/HandplanQuery.vue +1259 -1259
  588. package/src/filiale/guangxi/WebMeterBatchOperationValve.vue +788 -788
  589. package/src/filiale/haile/UserBaseInfoNew.vue +463 -463
  590. package/src/filiale/haile/machineHand.vue +2135 -2135
  591. package/src/filiale/haile/unHandplanQuery.vue +760 -760
  592. package/src/filiale/jingyang/ChangeMeter.vue +1171 -1171
  593. package/src/filiale/jingyang/EticketPrint.vue +228 -228
  594. package/src/filiale/jingyang/EticketV4/CustQueryEticket.vue +417 -417
  595. package/src/filiale/jingyang/EticketV4/EticketManage.vue +67 -67
  596. package/src/filiale/jingyang/EticketV4/EticketOpenCard.vue +411 -411
  597. package/src/filiale/jingyang/EticketV4/EticketOpenPage.vue +431 -431
  598. package/src/filiale/jingyang/EticketV4/EticketRecordList.vue +448 -448
  599. package/src/filiale/jingyang/GovernmentSell.vue +361 -361
  600. package/src/filiale/jingyang/charge/IOTMeterCenter.vue +872 -872
  601. package/src/filiale/jingyang/sale.js +26 -26
  602. package/src/filiale/kelai/FeeDeduction/deductionManage.vue +25 -25
  603. package/src/filiale/kelai/FeeDeduction/feeDeduction.vue +211 -211
  604. package/src/filiale/kelai/FeeDeduction/feeMachine.vue +169 -169
  605. package/src/filiale/kelai/meterinfodetail.vue +255 -255
  606. package/src/filiale/kelai/sale.js +52 -52
  607. package/src/filiale/liaoyuan/CardList.vue +559 -559
  608. package/src/filiale/liaoyuan/FileManage/MeterinfoTest.vue +581 -581
  609. package/src/filiale/liaoyuan/UserBaseInfoNew.vue +472 -472
  610. package/src/filiale/liaoyuan/sale.js +57 -57
  611. package/src/filiale/lixianV3/MachineMeterCenter.vue +691 -691
  612. package/src/filiale/lixianV3/OweDetailList.vue +79 -79
  613. package/src/filiale/lixianV3/OweList.vue +157 -157
  614. package/src/filiale/lixianV3/sale.js +21 -21
  615. package/src/filiale/macheng/FilesManageNew/UserEssentialInfoTest.vue +373 -373
  616. package/src/filiale/macheng/HandManager.vue +1597 -1597
  617. package/src/filiale/macheng/UserBaseInfoNew.vue +353 -353
  618. package/src/filiale/macheng/UserEssentialInfoTest.vue +368 -368
  619. package/src/filiale/meihekou/ChargeList.vue +807 -807
  620. package/src/filiale/meihekou/FileUserFiles.vue +986 -986
  621. package/src/filiale/meihekou/HandManager.vue +1789 -1789
  622. package/src/filiale/meihekou/MbpeopleList.vue +573 -573
  623. package/src/filiale/meihekou/MeterBookAdd.vue +410 -410
  624. package/src/filiale/meihekou/MeterinfoTest.vue +635 -635
  625. package/src/filiale/meihekou/UserBaseInfoNew.vue +488 -488
  626. package/src/filiale/meihekou/meterinfodetail.vue +240 -240
  627. package/src/filiale/meihekou/sale.js +52 -52
  628. package/src/filiale/ningjin/HandplanQuery.vue +1194 -1194
  629. package/src/filiale/qianneng/ArrearsList.vue +417 -417
  630. package/src/filiale/qianneng/components/common/userinfo_detail/UserBaseInfoNew.vue +470 -470
  631. package/src/filiale/qianneng/revenue/common/ic_detail/HandQueryUser.vue +419 -419
  632. package/src/filiale/qianneng/sale.js +103 -103
  633. package/src/filiale/qingtongxia/UserBaseInfoNew.vue +603 -603
  634. package/src/filiale/qingtongxia/sale.js +17 -17
  635. package/src/filiale/rizhao/ChargeList.vue +1062 -1062
  636. package/src/filiale/rizhao/IOTMeterCenter.vue +795 -795
  637. package/src/filiale/rizhao/UserBaseInfoNew.vue +452 -452
  638. package/src/filiale/rizhao/otherinfo.vue +92 -92
  639. package/src/filiale/rongchuang/CardMeterCenter.vue +918 -918
  640. package/src/filiale/rongchuang/DepositCharge.vue +373 -373
  641. package/src/filiale/rongchuang/EticketPrint.vue +503 -503
  642. package/src/filiale/rongchuang/EticketRecordList.vue +265 -265
  643. package/src/filiale/rongchuang/GasPriceList.vue +359 -359
  644. package/src/filiale/rongchuang/IOTMeterCenter.vue +809 -809
  645. package/src/filiale/rongchuang/LimitGas.vue +233 -233
  646. package/src/filiale/rongchuang/MeterinfoTest.vue +752 -752
  647. package/src/filiale/rongchuang/NoCardMeterCenter.vue +469 -469
  648. package/src/filiale/rongchuang/OtherChargeNew.vue +445 -445
  649. package/src/filiale/rongchuang/OtherGas.vue +329 -329
  650. package/src/filiale/rongchuang/OverUseCharge.vue +435 -435
  651. package/src/filiale/rongchuang/PrintBill.vue +113 -113
  652. package/src/filiale/rongchuang/ReissueBill.vue +294 -294
  653. package/src/filiale/rongchuang/ReplaceCardManage.vue +412 -412
  654. package/src/filiale/rongchuang/ShowCardSellGas.vue +852 -852
  655. package/src/filiale/rongchuang/Userinfo.vue +176 -176
  656. package/src/filiale/rongchuang/bill/CustQueryEticket.vue +439 -439
  657. package/src/filiale/rongchuang/bill/EticketOpenCard.vue +264 -264
  658. package/src/filiale/rongchuang/bill/EticketOpenJBPage.vue +261 -261
  659. package/src/filiale/rongchuang/bill/EticketOpenPage.vue +249 -249
  660. package/src/filiale/rongchuang/bill/EticketRecordList.vue +277 -277
  661. package/src/filiale/rongchuang/handListMaintain.vue +641 -641
  662. package/src/filiale/rongchuang/handOperate.vue +454 -454
  663. package/src/filiale/rongchuang/sale.js +50 -50
  664. package/src/filiale/shangluo/ChangeMeter.vue +1184 -1184
  665. package/src/filiale/shangluo/sale.js +19 -19
  666. package/src/filiale/shanxian/components/webMeter/WebMeterBatchOperationValve.vue +792 -792
  667. package/src/filiale/shanxian/components/webMeter/meterinfo/NewMeterList.vue +602 -602
  668. package/src/filiale/shaoguan/HandplanQuery.vue +1329 -1329
  669. package/src/filiale/shaoguan/base/UserBaseInfoNew.vue +474 -474
  670. package/src/filiale/shexian/ChargeList.vue +1026 -1026
  671. package/src/filiale/shexian/UserBaseInfoNew.vue +469 -469
  672. package/src/filiale/shexian/revenue/newchangemeter/ChangeMeter.vue +1168 -1168
  673. package/src/filiale/shiquan/GasPriceList.vue +342 -342
  674. package/src/filiale/shiquan/sale.js +31 -31
  675. package/src/filiale/taizhoukesi/ChangeMeterQueryUser.vue +244 -244
  676. package/src/filiale/taizhoukesi/UserInfoDetailManageNew.vue +214 -214
  677. package/src/filiale/taizhoukesi/sale.js +6 -6
  678. package/src/filiale/tongchuan/EticketManage.vue +60 -60
  679. package/src/filiale/tongchuan/Maintenance/revenue/MeterOperatemain.vue +319 -319
  680. package/src/filiale/tongchuan/UserBaseInfoNew.vue +378 -378
  681. package/src/filiale/tongchuan/bill/CustQueryEticketQueryV4.vue +337 -337
  682. package/src/filiale/tongchuan/bill/EticketOpenCard.vue +323 -323
  683. package/src/filiale/tongchuan/bill/EticketOpenIotSalePage.vue +333 -333
  684. package/src/filiale/tongchuan/bill/EticketOpenJBPage.vue +386 -386
  685. package/src/filiale/tongchuan/bill/EticketOpenPage.vue +347 -347
  686. package/src/filiale/tongchuan/bill/EticketPrint.vue +483 -483
  687. package/src/filiale/tongchuan/bill/EticketRecordList.vue +278 -278
  688. package/src/filiale/tongchuan/paperaudit.vue +310 -310
  689. package/src/filiale/tongchuan/sale.js +154 -154
  690. package/src/filiale/wenxi/DisableManage.vue +150 -150
  691. package/src/filiale/wenxi/cardsHand.vue +974 -974
  692. package/src/filiale/wenxi/plugging/UserPlugging.vue +100 -100
  693. package/src/filiale/xinkang/UserBaseInfoNew.vue +446 -446
  694. package/src/filiale/xinkang/WebMeterBatchOperationValve.vue +789 -789
  695. package/src/filiale/yangchun/CardList.vue +559 -559
  696. package/src/filiale/yangchun/CardMeterCenter.vue +992 -965
  697. package/src/filiale/yangchun/ChangeMeter.vue +1191 -1191
  698. package/src/filiale/yangchun/EticketModal.vue +95 -95
  699. package/src/filiale/yangchun/EticketV4/CustQueryEticket.vue +334 -334
  700. package/src/filiale/yangchun/EticketV4/EticketManage.vue +64 -64
  701. package/src/filiale/yangchun/EticketV4/EticketOpenCard.vue +349 -349
  702. package/src/filiale/yangchun/EticketV4/EticketOpenJBPage.vue +350 -350
  703. package/src/filiale/yangchun/EticketV4/EticketOpenPage.vue +341 -341
  704. package/src/filiale/yangchun/FilesManage/UserEssentialInfoTest.vue +643 -643
  705. package/src/filiale/yangchun/FilesManage/UserGeneralInfoTest.vue +810 -810
  706. package/src/filiale/yangchun/FilesManage/UserPaperInfoTest.vue +63 -63
  707. package/src/filiale/yangchun/OtherChargeDetail.vue +97 -97
  708. package/src/filiale/yangchun/OtherChargeNew.vue +702 -702
  709. package/src/filiale/yangchun/plugins/LogicService.js +496 -496
  710. package/src/filiale/yangchun/sale.js +65 -65
  711. package/src/filiale/yuansheng/UserBaseInfoNew.vue +447 -447
  712. package/src/filiale/yuncheng/ChargeManage.vue +316 -316
  713. package/src/filiale/yuncheng/ChargeOper.vue +286 -286
  714. package/src/filiale/yuncheng/HandplanQuery.vue +1377 -1377
  715. package/src/filiale/yuncheng/Mulitinfo.vue +75 -75
  716. package/src/filiale/yuncheng/deviceinfodetail.vue +144 -144
  717. package/src/filiale/yuncheng/machineDown.vue +1151 -1151
  718. package/src/filiale/yuncheng/machineHandAudit.vue +893 -893
  719. package/src/filiale/yuncheng/sale.js +52 -52
  720. package/src/filiale/zhongsheng/charge/UserBaseInfoNew.vue +451 -451
  721. package/src/filiale/zhongyi/HandplanQuery.vue +1198 -1198
  722. package/src/filiale/zhongyi/common/MeterMessage.vue +184 -184
  723. package/src/filiale/zhongyi/machineHand.vue +2212 -2212
  724. package/src/filiale/zhongyi/sale.js +40 -40
  725. package/src/main.js +33 -33
  726. package/src/plugins/BillService.js +63 -63
  727. package/src/plugins/CancelService.js +298 -298
  728. package/src/plugins/CardManageService.js +21 -21
  729. package/src/plugins/CardService.js +2119 -2119
  730. package/src/plugins/ChangeMeterService.js +760 -760
  731. package/src/plugins/CommonService.js +302 -302
  732. package/src/plugins/FileManageService.js +460 -460
  733. package/src/plugins/FileService.js +270 -270
  734. package/src/plugins/GetLoginInfoService.js +495 -495
  735. package/src/plugins/GetSaleParams.js +217 -217
  736. package/src/plugins/HandService.js +35 -35
  737. package/src/plugins/InvoiceService.js +80 -80
  738. package/src/plugins/LoadParams.js +117 -117
  739. package/src/plugins/LogicService.js +491 -491
  740. package/src/plugins/MachineChargeService.js +120 -120
  741. package/src/plugins/OffGasAddGasService.js +176 -176
  742. package/src/plugins/PrintService.js +134 -134
  743. package/src/plugins/SelectService.js +44 -44
  744. package/src/plugins/jsign.js +168 -168
  745. package/src/project/State.js +17 -17
  746. package/src/sale.js +1212 -1212
  747. package/src/sign.html +399 -399
  748. package/src/stores/MagLoadParams.js +61 -61
@@ -1,1769 +1,1769 @@
1
- <template xmlns:v-el="">
2
- <div class="flex-row">
3
- <div class="basic-main">
4
- <criteria-paged :model="model" v-ref:paged @sort="sort">
5
- <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
6
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
- <modal :show.sync="$parent.$parent.upshow" width="500px" title="文件导入" v-ref:modal large backdrop="false">
8
- <article slot="modal-body" class="modal-body">
9
- <file-upload class="my-file-uploader " name="UploadFile" class="btn btn-success" style="border-radius: 2px;"
10
- action="rs/file/uploadFile" tagname="导入" v-ref:file :headers="headers" multiple></file-upload>
11
- </article>
12
- <footer slot="modal-footer" class="modal-footer">
13
- </footer>
14
- </modal>
15
- <div class="row">
16
- <!--<div class="col-sm-6">-->
17
- <!--style="border: 1px solid #a6d5ea; box-shadow: darkgrey 1px 1px 1px 2px;padding: 0.5%">-->
18
- <div class="col-sm-2 form-group">
19
- <label class="font_normal_body">归属起始</label>
20
- <datepicker placeholder="开始日期"
21
- style="width:60%"
22
- class="datepicker"
23
- v-model="model.startDate"
24
- :value.sync="model.startDate"
25
- :format="'yyyy-MM-dd'"
26
- ></datepicker>
27
- </div>
28
- <div class="col-sm-2 form-group">
29
- <label class="font_normal_body">归属结束</label>
30
- <datepicker placeholder="结束日期"
31
- style="width:60%"
32
- v-model="model.endDate"
33
- :value.sync="model.endDate"
34
- :format="'yyyy-MM-dd'"
35
- ></datepicker>
36
- </div>
37
-
38
- <div class="col-sm-2 form-group">
39
- <label class="font_normal_body">客户编号</label>
40
- <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
41
- condition="f_userinfo_code='{}'" placeholder='客户编号'>
42
- </div>
43
-
44
- <div class="span" style="float:right;">
45
-
46
- <button class="button_search button_spacing" @click="$parent.$parent.estimaterclick0()">估表抄表</button>
47
- <button v-if="!$parent.$parent.saveenterflag" class="button_search button_spacing" @click="$parent.$parent.startestimaterall()">开始批量抄表</button>
48
- <button v-if="$parent.$parent.saveenterflag" class="button_clear button_spacing" @click="$parent.$parent.endestimaterall()">取消批量抄表</button>
49
- <button v-if="$parent.$parent.saveenterflag" class="button_search button_spacing" @click="$parent.$parent.estimaterallclick()">批量抄表保存</button>
50
- <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
51
- <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
52
- <button class="button_search button_spacing" @click="$parent.$parent.clickupshow()">导入抄表</button>
53
- <!-- <button class="button_search button_spacing" @click="$parent.$parent.searchPrint()">导出信息Excel</button>-->
54
-
55
- <button v-if="$parent.$parent.meter_state" class="button_search button_spacing" @click="$parent.$parent.batchDownHand()">计划下发</button>
56
- <button v-if="$parent.$parent.inputtor_change" class="button_search button_spacing" @click="$parent.$parent.batchInputtorChange()">抄表员调整</button>
57
-
58
- <export-excel
59
- :data="$parent.$parent.getCondition"
60
- :field="$parent.$parent.getfield"
61
- sqlurl="rs/logic/saleExport" progress="saleGetExportProgress" sql-name="periodAlreadyIssuedOrder" template-name='抄表导出'
62
- :choose-col="true">
63
- </export-excel>
64
- <div
65
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
66
- @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
67
- </div>
68
- </div>
69
- <div class="row" v-show="$parent.$parent.criteriaShow">
70
- <div class="col-sm-2 form-group">
71
- <label class="font_normal_body">表&ensp;编&ensp;号</label>
72
- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_id"
73
- condition="f_user_id='{}'" placeholder='表编号'>
74
- </div>
75
- <div class="col-sm-2 form-group">
76
- <label class="font_normal_body">客户姓名</label>
77
- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name" placeholder='客户姓名'
78
- condition="f_user_name = '{}'">
79
- </div>
80
- <div class="col-sm-2 form-group">
81
- <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
82
- <v-select :value.sync="model.f_residential_area"
83
- class="select_list select"
84
- enter-push
85
- v-model="model.f_residential_area"
86
- style="width: 60%"
87
- multiple = "true"
88
- :options='$parent.$parent.residentialArea' 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_building"
95
- condition="f_building = '{}'" placeholder='楼栋'>
96
- </div>
97
- <div class="col-sm-2 form-group">
98
- <label class="font_normal_body">单&emsp;&emsp;元</label>
99
- <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
100
- condition="f_unit = '{}'" placeholder='单元'>
101
- </div>
102
- <div class="col-sm-2 form-group">
103
- <label class="font_normal_body">楼&emsp;&emsp;层</label>
104
- <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
105
- condition="f_floor = '{}'" placeholder='楼层'>
106
- </div>
107
- <div class="col-sm-2 form-group">
108
- <label class="font_normal_body">门&ensp;牌&ensp;号</label>
109
- <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
110
- condition="f_room like '%{}%'" placeholder='门牌号'>
111
- </div>
112
- <div class="col-sm-2 form-group">
113
- <label class="font_normal_body">客户地址</label>
114
- <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
115
- condition="f_address like '%{}%'" placeholder='客户地址'>
116
- </div>
117
- <div class="col-sm-2 form-group">
118
- <label class="font_normal_body">抄&ensp;表&ensp;员</label>
119
- <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
120
- style="width:60%"
121
- multiple="true"
122
- :options='$parent.$parent.inputtores' placeholder='抄表员'
123
- close-on-select
124
- v-el:cc></v-select>
125
- </div>
126
- <div class="col-sm-2 form-group">
127
- <label class="font_normal_body">是否缴费</label>
128
- <v-select :value.sync="model.f_whether_pay" v-model='model.f_whether_pay'
129
- style="width:60%"
130
- :options='$parent.$parent.whetherpaies' placeholder='是否缴费'
131
- close-on-select
132
- condition="f_whether_pay = '{}'"></v-select>
133
- </div>
134
- <div class="col-sm-2 form-group">
135
- <label class="font_normal_body">抄表状态</label>
136
- <v-select :value.sync="model.f_meter_state" v-model='model.f_meter_state'
137
- style="width:60%"
138
- :options='$parent.$parent.meterstates' placeholder='抄表状态'
139
- close-on-select
140
- condition="f_meter_state = '{}'"></v-select>
141
- </div>
142
- <div class="col-sm-2 form-group">
143
- <label class="font_normal_body">气表类型</label>
144
- <v-select :value.sync="model.f_meter_classify" v-model="model.f_meter_classify"
145
- style="width:60%"
146
- :options='$parent.$parent.meters' placeholder='气表类型'
147
- close-on-select
148
- condition="f_meter_classify = '{}'"
149
- default-value="'机表'"></v-select>
150
- </div>
151
- <div class="col-sm-2 form-group" >
152
- <label for="belongmonth" class="font_normal_body" >所属年月</label>
153
- <datepicker placeholder="所属年月" style="width:60%"
154
- v-model="model.belongmonth"
155
- :value.sync="model.belongmonth"
156
- :format="'yyyy-MM'"
157
- :show-reset-button="true"
158
- condition="belongmonth = '{}'"
159
- :select-month="true">
160
- </datepicker>
161
- </div>
162
- <div class="col-sm-2 form-group">
163
- <label class="font_normal_body">客户类型</label>
164
- <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
165
- :options='$parent.$parent.usertypes' placeholder='客户类型'
166
- style="width:60%"
167
- close-on-select
168
- condition="f_user_type = '{}'"></v-select>
169
- </div>
170
-
171
- <div class="col-sm-2 form-group">
172
- <label class="font_normal_body">抄&ensp;表&ensp;册</label>
173
- <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"
174
- :options='$parent.$parent.meterbooks' placeholder='抄表册'
175
- style="width:60%"
176
- close-on-select
177
- condition="f_meter_book_num = '{}'"></v-select>
178
- </div>
179
- <div class="col-sm-2 form-group">
180
- <label class="font_normal_body">调压箱名</label>
181
- <v-select :value.sync="model.f_adjustable_name" v-model="model.f_adjustable_name"
182
- :options='$parent.$parent.adjustablename' placeholder='调压箱名称'
183
- style="width:60%"
184
- close-on-select
185
- condition="f_adjustable_name = '{}'"></v-select>
186
- </div>
187
- <res-select-group :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
188
- <div class="col-sm-2 form-group">
189
- <label class="font_normal_body">使用类型</label>
190
- <v-select :value.sync="model.f_usetype" v-model="model.f_usetype"
191
- :options='$parent.$parent.usetype' placeholder='使用类型'
192
- style="width:60%"
193
- close-on-select
194
- condition="f_usetype = '{}'"></v-select>
195
- </div>
196
- <div class="col-sm-2 form-group">
197
- <label class="font_normal_body">用户等级</label>
198
- <v-select :value.sync="model.f_user_level" v-model="model.f_user_level"
199
- :options='$parent.$parent.userlevels' placeholder='用户等级'
200
- style="width:60%"
201
- close-on-select
202
- condition="f_user_level = '{}'"></v-select>
203
- </div>
204
- </div>
205
-
206
-
207
- </div>
208
- </criteria>
209
- <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid >
210
- <template partial='head'>
211
- <tr>
212
- <th><nobr>序号</nobr></th>
213
- <th><nobr><data-order field="f_userinfo_code" name="客户编号"
214
- :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order></nobr>
215
- </th>
216
- <th><nobr>表编号</nobr></th>
217
- <th><nobr><data-order field="f_address" name="基本信息"
218
- :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order></nobr>
219
- </th>
220
- <th><nobr>用户等级</nobr></th>
221
- <th><nobr>所属年月</nobr></th>
222
- <th><nobr>调压箱名称</nobr></th>
223
- <th><nobr>抄表员</nobr></th>
224
- <th><nobr>上期结余</nobr></th>
225
- <th><nobr><data-order field="f_last_input_date" name="上次抄表录入日期"
226
- :order.sync="$parent.$parent.$parent.orderFields.f_last_input_date"></data-order></nobr>
227
- </th>
228
- <th><nobr><data-order field="f_hand_date" name="下发日期"
229
- :order.sync="$parent.$parent.$parent.orderFields.f_hand_date"></data-order></nobr>
230
- </th>
231
- <th><nobr><data-order field="f_input_date" name="抄表录入日期"
232
- :order.sync="$parent.$parent.$parent.orderFields.f_input_date"></data-order></nobr>
233
- </th>
234
- <th><nobr>上期底数</nobr></th>
235
- <th><nobr>上期用气量</nobr></th>
236
- <th><nobr>上期抄表状态</nobr></th>
237
- <th><nobr>本期底数</nobr></th>
238
- <th><nobr>批量操作</nobr></th>
239
- <th><nobr>平均用气量</nobr></th>
240
- <th><nobr>抄表结果状态</nobr></th>
241
- <th><nobr>应交金额</nobr></th>
242
- <th><nobr>欠费金额</nobr></th>
243
- <th><nobr>应交气量</nobr></th>
244
- <th><nobr>是否缴费</nobr></th>
245
- <th><nobr><data-order field="f_book_name" name="抄表册"
246
- :order.sync="$parent.$parent.$parent.orderFields.f_book_name"></data-order></nobr>
247
-
248
- </th>
249
- <th><nobr>操作</nobr></th>
250
- </tr>
251
- </template>
252
- <template partial='body'>
253
-
254
- <td style="text-align: center;">{{$index + 1}}</td>
255
- <td>{{row.f_userinfo_code}}</td>
256
- <td>{{row.f_user_id}}</td>
257
- <td>{{row.f_user_name}}&nbsp;&nbsp;{{row.f_address}}</td>
258
- <td>{{row.f_user_level}}</td>
259
- <td>{{row.belongmonth}}</td>
260
- <td>{{row.f_adjustable_name}}</td>
261
- <td>{{row.f_inputtor}}</td>
262
- <td>{{row.f_balacne}}</td>
263
- <td>{{row.f_last_input_date}}</td>
264
- <td>{{row.f_hand_date}}</td>
265
- <td>
266
- <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
267
- 'has-success has-feedback': !row.error,
268
- 'has-error has-feedback': row.error}"
269
- v-if="row.f_meter_state === '未抄表' && row.states !== 0 && $parent.$parent.$parent.jurisdiction.includes('录入日期修正')">
270
- <datepicker id="endDate" placeholder="抄表时间"
271
- v-model="row.f_input_date"
272
- :value.sync="row.f_input_date"
273
- :format="'yyyy-MM-dd HH:mm:ss'"
274
- :show-reset-button="true">
275
- </datepicker>
276
- </div>
277
- <div v-else>
278
- {{row.f_input_date}}
279
- </div>
280
- </td>
281
- <td>{{row.f_meter_base}}</td>
282
- <td>{{row.lastoutamount}}</td>
283
- <td>{{row.lastmeterstate}}</td>
284
- <td id="hand-creat">
285
- <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
286
- 'has-success has-feedback': !row.error,
287
- 'has-error has-feedback': row.error}"
288
- v-if="row.f_meter_state === '未抄表' && row.states !== 0">
289
-
290
- <input title="只能录入整数" type="text" class="input_search" v-model="row.f_tablebase"
291
- @blur="$parent.$parent.$parent.beforenter($index, row)"
292
- v-next-el="{id: $index+2}" :id="$index+1" style="width: 100px;padding: 6px;"
293
- @focus="$parent.$parent.$parent.clearError(row)"
294
- :disabled="row.state === '开始'">
295
- </div>
296
- <div id="handManager" v-else>
297
- <span
298
- v-if="row.states === 0">{{row.f_tablebase || row.f_tablebase === 0 ? row.f_tablebase : '本期无计划'}}</span>
299
- <span
300
- v-if="row.states === 1">{{row.f_tablebase || row.f_tablebase === 0 ? row.f_tablebase : '尚未下发'}}</span>
301
- </div>
302
- <span v-if="row.error" style="color: #ff0000;">{{row.error}}</span>
303
- </td>
304
- <td>
305
- <button type="button" name="button" class="btn btn-link"
306
- @click.stop="$parent.$parent.$parent.deleteBattchEnter(row) "
307
- v-if="row.f_tablebase!='' && $parent.$parent.$parent.saveenterflag">删除
308
- </button>
309
- </td>
310
- <td style="text-align: center;">{{Math.round(row.avggas)}}</td>
311
- <td>
312
- <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
313
- 'has-success has-feedback': !row.error,
314
- 'has-error has-feedback': row.error}"
315
- v-if="row.f_meter_state === '未抄表' && row.states !== 0">
316
- <v-select :value.sync="row.f_result_state" v-model="row.f_result_state"
317
- :options='$parent.$parent.$parent.resultstate' placeholder='抄表结果状态'
318
- style="width:120%"
319
- :width="'100%'"
320
- :value-single="true"
321
- close-on-select></v-select>
322
- </div>
323
- <div v-else>
324
- {{row.f_result_state}}
325
- </div>
326
- </td>
327
- <td style="text-align: center;">{{row.f_oughtfee}}</td>
328
- <td style="text-align: center;">{{row.f_debt_money}}</td>
329
- <td style="text-align: center;">{{row.f_oughtamount = row.f_tablebase ?
330
- (row.f_share_gas ?
331
- (row.f_tablebase - 0 - (row.f_meter_base - 0)).toFixed(4) + (row.f_share_gas > 0 ? '+' : '') + row.f_share_gas.toFixed(2) : (row.f_tablebase - 0 - (row.f_meter_base - 0)).toFixed(2)) : 0}}
332
- </td>
333
- <td style="text-align: center;">{{row.f_whether_pay}}</td>
334
- <td>{{row.f_book_name}}</td>
335
- <td style="text-align: center;">
336
- <button type="button" name="button" class="btn btn-link"
337
- v-if="row.f_audit_state != '审核中'&& row.states === 1 && row.f_meter_state === '已抄表' && row.f_oper_state === '正常' && (row.f_whether_pay === '否' || row.f_accounts_state === '自动下账')"
338
- @click.stop="$parent.$parent.$parent.cancelHand2(row)">冲正
339
- </button>
340
- <button type="button" name="button" class="btn btn-link"
341
- v-if="row.f_audit_state === '审核中' && $parent.$parent.$parent.jurisdiction.includes('抄表冲正审核')"
342
- @click.stop="$parent.$parent.$parent.cancelHand4(row)">审核通过
343
- </button>
344
- <div v-if="row.f_audit_state === '审核中' && !$parent.$parent.$parent.jurisdiction.includes('抄表冲正审核')">
345
- 审核中
346
- </div>
347
- <button type="button" name="button" class="btn btn-link"
348
- v-if="$parent.$parent.$parent.config.customCal && row.f_meter_state === '已抄表' && row.states === 1 && row.f_oper_state === '正常' && row.f_whether_pay === '否'"
349
- @click.stop="$parent.$parent.$parent.fileterprice(row)">自定义划价
350
- </button>
351
-
352
- <button type="button" name="button" class="btn btn-link" disabled="disabled"
353
- v-if="row.f_oper_state === '换表'">已换表
354
- </button>
355
-
356
- <button type="button" name="button" class="btn btn-link"
357
- @click.stop="$parent.$parent.$parent.delectHand(row) && row.states === 1"
358
- v-if="row.f_meter_state === '未抄表' && row.states === 1">删除
359
- </button>
360
-
361
- <button type="button" name="button" class="btn btn-link"
362
- @click.stop="$parent.$parent.$parent.downHand(row)"
363
- v-if="row.f_meter_state === '未下发'">下发计划
364
- </button>
365
- <button type="button" name="button" class="btn btn-link"
366
- v-if="row.f_meter_state === '待审核' ">待审核
367
- </button>
368
-
369
- <button type="button" name="button" class="btn btn-link"
370
- @click.stop="$parent.$parent.$parent.pass(row)"
371
- v-if="row.f_meter_state === '待审核'">通过
372
- </button>
373
-
374
- <button type="button" name="button" class="btn btn-link"
375
- @click.stop="$parent.$parent.$parent.nopass(row)"
376
- v-if="row.f_meter_state === '待审核' ">不通过
377
- </button>
378
- </td>
379
- </template>
380
- </data-grid>
381
- </criteria-paged>
382
- <split-price :showdata="splitdata" :pricesplit="priceSplit" v-if="priceSplit" ></split-price>
383
- <modal :show.sync="show" v-ref:modal backdrop="false">
384
- <header slot="modal-header" class="modal-header">
385
- <h4 class="modal-title">计划下发</h4>
386
- </header>
387
- <article slot="modal-body" class="modal-body">
388
- <form class="form-horizontal">
389
- <div class="row auto">
390
- <div class="form-group form-input-group col-sm-6">
391
- <label class="label-control">下发日期</label>
392
- <datepicker placeholder="下发日期" :value.sync="downModel.downDate"></datepicker>
393
- </div>
394
- </div>
395
- <div class="row auto">
396
- <div class="form-group form-input-group col-sm-3">
397
- <div class="col-sm-2"></div>
398
- <input type="radio" value="downWithUserfiles" v-model="downModel.downWay" checked>
399
- <label>表册抄表员</label>
400
- </div>
401
- <div class="form-group form-input-group col-sm-3">
402
- <input type="radio" value="downWithSelf" v-model="downModel.downWay">
403
- <label class="label-control">自定义抄表员</label>
404
- </div>
405
- </div>
406
- <div class="row auto" v-if="downModel.downWay === 'downWithSelf'">
407
- <div class="form-group form-input-group col-sm-6">
408
- <label class="label-control">抄表员</label>
409
- <div class="col-sm-4">
410
- <v-select :value.sync="downModel.downInputtor" v-model='downModel.downInputtor'
411
- :options='inputtores2' placeholder='抄表员'
412
- close-on-select></v-select>
413
- </div>
414
- </div>
415
- </div>
416
- </form>
417
- </article>
418
-
419
- <footer slot="modal-footer" class="modal-footer">
420
- <button type="button" class="btn btn-default" @click='close()'>取消</button>
421
- <button type="button" class="btn btn-success" @click='confirm()'>确认</button>
422
- </footer>
423
- </modal>
424
- <modal :show.sync="downConfirm" backdrop="false">
425
- <header slot="modal-header" class="modal-header">
426
- <h4 class="modal-title">下发确认</h4>
427
- </header>
428
- <article slot="modal-body" class="modal-body">
429
- <div class="col-sm-2 form-group">
430
- {{msg}}
431
- </div>
432
- </article>
433
-
434
- <footer slot="modal-footer" class="modal-footer">
435
- <button type="button" class="btn btn-success" @click='downContinue'>继续下发</button>
436
- <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>
437
- <button type="button" class="btn btn-default" @click='close'>取消</button>
438
- </footer>
439
- </modal>
440
-
441
- <modal :show.sync="downConfirm" backdrop="false">
442
- <header slot="modal-header" class="modal-header">
443
- <h4 class="modal-title">下发确认</h4>
444
- </header>
445
- <article slot="modal-body" class="modal-body">
446
- <div class="col-sm-2 form-group">
447
- {{msg}}
448
- </div>
449
- </article>
450
-
451
- <footer slot="modal-footer" class="modal-footer">
452
- <button type="button" class="btn btn-success" @click='downContinue'>继续下发</button>
453
- <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>
454
- <button type="button" class="btn btn-default" @click='close'>取消</button>
455
- </footer>
456
- </modal>
457
- <modal :show.sync="inputtor_show" backdrop="false">
458
- <header slot="modal-header" class="modal-header">
459
- <h4 class="modal-title">抄表员变更</h4>
460
- </header>
461
- <article slot="modal-body" class="modal-body">
462
- <form class="form-horizontal">
463
- <div class="row auto">
464
- <div class="form-group form-input-group col-sm-6">
465
- <label>调整客户数</label>
466
- <input class="input_search" v-model="model.count" disabled>
467
- </div>
468
- </div>
469
- <div class="row auto">
470
- <div class="form-group form-input-group col-sm-6">
471
- <label class="label-control">抄表员</label>
472
- <div class="col-sm-4">
473
- <v-select :value.sync="inputtorModel.inputtor" v-model='inputtorModel.inputtor'
474
- :options='inputtores2' placeholder='抄表员'
475
- close-on-select></v-select>
476
- </div>
477
- </div>
478
- </div>
479
- </form>
480
- </article>
481
-
482
- <footer slot="modal-footer" class="modal-footer">
483
- <button type="button" class="btn btn-success" @click='inputtorConfirm'>确认</button>
484
- <button type="button" class="btn btn-default" @click='close'>取消</button>
485
- </footer>
486
- </modal>
487
-
488
- <modal :show.sync="uploadshow" v-ref:modal backdrop="false">
489
- <header slot="modal-header" class="modal-header">
490
- <button type="button" class="close" @click="close"><span>&times;</span></button>
491
- <h4 class="modal-title">文件上传</h4>
492
- </header>
493
- <article slot="modal-body" class="modal-body">
494
- <div class="col-sm-2 form-group">
495
- <file-upload class="my-file-uploader" name="myFile"
496
- action="rs/file/upload" tagname="文件上传" :headers="headers" multiple v-ref:file></file-upload>
497
- </div>
498
- </article>
499
-
500
- <footer slot="modal-footer" class="modal-footer">
501
- <!-- <button v-show="show" type="button" class="btn btn-default" @click='close'>取消</button>
502
- <button v-show="show" type="button" class="btn btn-success" @click='confirm(filename)'>确认</button> -->
503
- </footer>
504
- </modal>
505
- <modal :show.sync="examineshow" v-ref:modal backdrop="false">
506
- <header slot="modal-header" class="modal-header">
507
- <button type="button" class="close" @click="close"><span>&times;</span></button>
508
- <h4 class="modal-title">冲正审核</h4>
509
- </header>
510
- <article slot="modal-body" class="modal-body">
511
- <div class = "row">
512
- <div class="col-sm-12 form-group">
513
- <label class="font_normal_body">冲正原因</label>
514
- <input type="text" style="width:90%" class="input_search" :disabled="examinetype" v-model="examinerow.f_examinereason"
515
- placeholder='冲正原因'>
516
- </div>
517
- <upload :blodid="examinerow.id" v-ref:upload :fusetype="uploadText" isremark="true" style="width:auto" ></upload>
518
- </div>
519
-
520
- </article>
521
-
522
- <footer slot="modal-footer" class="modal-footer">
523
- <button v-show="examineshow" type="button" class="btn btn-default" @click='close'>取消</button>
524
- <button v-show="!examinetype" type="button" class="btn btn-success" @click='examineconfirm()'>确认</button>
525
- <button type="button" v-show="examinetype" class="btn btn-success" @click='cancelHand5()'>审核通过</button>
526
- </footer>
527
- </modal>
528
-
529
- <modal :show.sync="showerr" backdrop="false">
530
- <header slot="modal-header" class="modal-header">
531
- <button type="button" class="close" @click="closeerr"><span>&times;</span></button>
532
- <h4 class="modal-title">抄表出错!</h4>
533
- </header>
534
- <article slot="modal-body" class="modal-body">
535
- <div class = "row">
536
- <p> {{err}}</p>
537
- <input type="text" class="form-control" @blur="paycodefocus" v-el:paycode>
538
- </div>
539
-
540
- </article>
541
-
542
- <footer slot="modal-footer" class="modal-footer">
543
- <button v-show="showerr" type="button" class="btn btn-default" @click='closeerr'>关闭</button>
544
- </footer>
545
- </modal>
546
- </div>
547
- <modal :show.sync="progressShow" v-ref:modal backdrop="true" width="50%" style="width:auto;" >
548
- <header slot="modal-header" class="modal-header">
549
- 估表抄表
550
- </header>
551
- <article slot="modal-body" class="modal-body">
552
- <div style="margin: 20px" >
553
- <p>正在进行估表抄表,请耐心等待...</p>
554
- </div>
555
- </article>
556
- <footer slot="modal-footer" class="modal-footer">
557
- <button type="button" class="btn btn-default" @click='progressclose'>关闭</button>
558
- </footer>
559
- </modal>
560
- <modal :show.sync="progressShow2" v-ref:modal backdrop="true" width="50%" style="width:auto;" >
561
- <header slot="modal-header" class="modal-header">
562
- 批量抄表
563
- </header>
564
- <article slot="modal-body" class="modal-body">
565
- <div style="margin: 20px" >
566
- <p>正在进行批量抄表,请耐心等待...</p>
567
- </div>
568
- </article>
569
- <footer slot="modal-footer" class="modal-footer">
570
- <button type="button" class="btn btn-default" @click='progressclose'>关闭</button>
571
- </footer>
572
- </modal>
573
- <work-busy :is-busy="iswork" v-show="iswork"></work-busy>
574
- </div>
575
- </template>
576
- <script>
577
- import {HttpResetClass, PagedList} from 'vue-client'
578
- import Vue from 'vue'
579
- import co from 'co'
580
- import axios from 'axios'
581
-
582
- let readyGen = async function (self) {
583
- await self.$getConfig(self, 'HandManager')
584
- await self.$LoadParams.loadMeterBook(self.f_filialeid)
585
- self.loadMeterBooks()
586
- self.getfield = self.config.excelHeaders
587
- self.reflash()
588
- }
589
-
590
- let downGen = function *(type, condition, data, self) {
591
- self.condition = condition
592
- self.msg = '确认下发计划'
593
- // 判断之前是否有未抄表数据
594
- let getUnhand = null
595
- if (type === 'single') {
596
- getUnhand = yield Vue.resetpost('rs/sql/getUnhand', {
597
- data: {
598
- startDate: self.model.params.startDate,
599
- condition: condition
600
- }
601
- }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
602
- self.msg = `下发客户编号为${data.f_userinfo_code}的抄表计划?`
603
- // } else if (type === 'all') {
604
- } else if (type === 'batch') {
605
- let tempCondition = condition.replace("and f_meter_state = '未下发'", '')
606
- getUnhand = yield Vue.resetpost('rs/sql/getUnhand', {
607
- data: {
608
- startDate: self.model.params.startDate,
609
- condition: tempCondition
610
- }
611
- }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
612
- self.msg = `确认下发当前总计: ${data} 户计划`
613
- }
614
- for (let i = 0; i < getUnhand.data.length; i++) {
615
- let temp = {
616
- id: getUnhand.data[i].id,
617
- f_user_id: getUnhand.data[i].f_user_id,
618
- f_userfiles_id: getUnhand.data[i].f_userfiles_id,
619
- f_adjustable_id: getUnhand.data[i].f_adjustable_id,
620
- f_adjustable_name: getUnhand.data[i].f_adjustable_name
621
- }
622
- console.log('=================================================================================')
623
- console.log('下发计划查看调压箱和调压箱编号', temp)
624
- console.log('========================================================================================')
625
- self.unhandplan.push(temp)
626
- }
627
- if (getUnhand.data.length > 0) {
628
- self.msg = self.msg + `, 警告: 之前有 ${getUnhand.data.length} 条未抄表数据`
629
- }
630
- self.show = true
631
- }
632
-
633
- let beforenterGen = async function (self, index, row) {
634
- // 验证是不是总表
635
- // self.enter(index, row)
636
- if (row.f_totalsplit_type === '总表') {
637
- let hasUnHand = await self.$HandService.getSplitInfo(row.f_userfiles_id)
638
- if (hasUnHand) {
639
- self.$showAlert('该表下面有未抄或未审核的分表信息!!请先抄录或审核分表信息!', 'danger', 0)
640
- row.f_tablebase = null
641
- } else {
642
- self.enter(index, row)
643
- }
644
- } else {
645
- self.enter(index, row)
646
- }
647
- }
648
-
649
- let inputtotChangeGen = async function (self) {
650
- let param = {
651
- f_change_content: self.inputtorModel.inputtor[0],
652
- f_change_cause: self.inputtorModel.reason,
653
- condition: self.model.condition,
654
- startDate: self.model.params.startDate,
655
- endDate: self.model.params.endDate,
656
- f_operator: self.$login.f.name,
657
- f_change_count: self.model.count,
658
- f_change_type: '抄表员变更',
659
- // f_input_person: self.$login.f.name,
660
- f_operatorid: self.$login.f.id,
661
- f_orgid: self.$login.f.orgid,
662
- f_orgname: self.$login.f.orgs,
663
- f_depid: self.$login.f.depids,
664
- f_depname: self.$login.f.deps
665
- }
666
- console.log('抄表单抄表员变更', param)
667
- await self.$resetpost('rs/logic/changeInputtor', param, {resolveMsg: null, rejectMsg: '批量抄表员变更失败'})
668
- self.$showAlert(`总计变更 ${self.model.count} 户抄表员为 ${self.inputtorModel.inputtor[0]}`, 'success', 2000)
669
- self.inputtor_show = false
670
- self.initModal()
671
- self.reflash()
672
- }
673
-
674
- let paramsdata = function(self){
675
- //将本条记录中所有只放入需抄表值
676
- if(self.$refs.paged.$refs.grid.model.rows.length>0){
677
- self.$refs.paged.$refs.grid.model.rows.forEach(item=>{
678
- let param = {
679
- f_meter_classify: item.f_meter_classify,
680
- f_meter_brand: item.f_meter_brand,
681
- f_hand_id: item.id,
682
- f_operator: Vue.$login.f.name,
683
- f_tablebase: item.f_meter_base,
684
- f_userinfo_id: item.f_userinfo_id,
685
- f_userinfo_code:item.f_userinfo_code
686
- };
687
- item.f_tablebase = item.f_meter_base;
688
- self.metertneterarr.push(param);
689
- })
690
- }
691
- }
692
-
693
- export default {
694
- title: '估表抄表',
695
- data () {
696
- return {
697
- progressShow:false,
698
- progressShow2:false,
699
- percent:0,
700
- initres: {
701
- org: [this.$login.f.orgid],
702
- dep: [],
703
- user: []
704
- },
705
- orgCondtionStr: '',
706
- priceSplit: false,
707
- criteriaShow: false,
708
- model: new PagedList('rs/sql/EstimateperiodAlreadyIssuedOrder', 30, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'id'`}),
709
- config: {
710
-
711
- // 导出列要和查询列相同
712
- excelHeaders: {
713
- 'f_user_id': '表编号',
714
- 'f_inputtor': '抄表员',
715
- 'f_balance': '上期结余',
716
- 'f_last_input_date': '上次抄表',
717
- 'f_hand_date': '下发时间',
718
- 'f_input_date': '抄表日期',
719
- 'f_userinfo_code': '客户编号',
720
- 'f_address': '客户地址',
721
- 'f_residential_area': '小区名称',
722
- 'f_user_name': '客户姓名',
723
- 'f_meter_base': '上期底数',
724
- 'f_tablebase': '本期指数',
725
- 'f_oughtfee': '应交金额',
726
- 'f_oughtamount': '应交气量',
727
- 'f_whether_pay': '是否缴费',
728
- 'f_book_name': '抄表册',
729
- 'f_meter_classify': '气表分类',
730
- 'f_price_type': '气价类型',
731
- 'f_price_name': '气价名称',
732
- 'f_price_list': '气价单价',
733
- 'f_meter_type': '气表类型',
734
- 'f_meter_style': '气表型号',
735
- 'f_accounts_state': '下账标识',
736
- 'f_user_phone': '客户电话',
737
- 'f_adjustable_id': '表箱号'
738
- },
739
- examine: true,
740
- customCal: false
741
- },
742
- meter_state: false, // 是否显示计划下发按钮
743
- downModel: {
744
- downDate: Vue.$login.toStandardTimeString(),
745
- downWay: 'downWithUserfiles',
746
- downInputtor: []
747
- },
748
- inputtor_change: false, // 是否显示抄表员变更按钮
749
- inputtor_show: false, // 控制抄表员变更模板
750
- inputtorModel: {
751
- inputtor: [],
752
- reason: ''
753
- },
754
- plans: [], // 记录当前行是否被勾选
755
- all: false, // 是否全选
756
- show: false, // 下发日期模态框显示
757
- unhandplan: [], // 之前是否有未抄表记录
758
- downConfirm: false, // 下发若有未抄记录,确认框
759
- uploadshow: false,
760
- // 小区
761
- residentialArea: [],
762
-
763
- msg: '',
764
- condition: '',
765
- headers: {'username': Vue.$login.f.name, 'blodid': Vue.$login.guid()},
766
- orderDefault: 'id',
767
- orderFields: {
768
- f_userinfo_id: 'no'
769
- },
770
- getfield: {},
771
- outlet: '',
772
- filiale: '',
773
- condition2: '',
774
- area: [],
775
- inputtouPerson: [],
776
- meters: [{label: '全部', value: ''}, {label: '机表', value: '机表'}, {label: '物联网表', value: '物联网表'}],
777
- resultstate: this.$appdata.getParam('抄表结果状态'),
778
- meterstates: this.$appdata.getParam('抄表状态') ? [{
779
- label: '全部',
780
- value: ''
781
- }, ...this.$appdata.getParam('抄表状态')] : [],
782
- usertypes: this.$appdata.getParam('客户类型') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('客户类型')] : [],
783
- userlevels: this.$appdata.getParam('用户等级') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('用户等级')] : [],
784
- adjustablename: this.$appdata.getParam('调压箱名称') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('调压箱名称')] : [],
785
- inputtores2: [], // 下发时使用自定义抄表员,
786
- splitdata: '',
787
- f_filialeid: this.$login.f.orgid,
788
- meterbooks: [{label: '全部', value: ''}],
789
- upshow: false,
790
- inputid: 0,
791
- examineshow: false,
792
- examinerow: null,
793
- showfiles: false,
794
- uploadText: '抄表',
795
- examinetype: false,
796
- showerr: false,
797
- err: '',
798
- searchOrderstr: '',
799
- iswork: false,
800
- metertneterarr:[], //保存批量抄表数据
801
- saveenterflag:false,
802
- timer:''
803
- }
804
- },
805
- ready () {
806
- this.getaddress()
807
- readyGen(this)
808
- },
809
- mounted () {
810
- console.log(this.inputid)
811
- document.getElementById(this.inputid).focus()
812
- },
813
- methods: {
814
- deleteBattchEnter(row){
815
- if(this.saveenterflag){
816
- this.metertneterarr.forEach((item,index)=>{
817
- if(item.f_hand_id == row.id){
818
- row.f_tablebase=0;
819
- this.metertneterarr.splice(index,1);
820
- }
821
- })
822
- this.$showAlert('删除成功','success',1500);
823
- }
824
- },
825
- progressclose(){
826
- this.progressShow = false;
827
- this.progressShow2 = false;
828
- if(this.timer != null){
829
- clearInterval(this.timer);
830
- }
831
- },
832
- getuuid(){
833
- let uuidA = '';
834
- var s = [];
835
- var hexDigits = '0123456789abcdef';
836
- for (var i = 0; i < 36; i++) {
837
- s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
838
- }
839
- s[14] = '4';
840
- s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
841
- s[8] = s[13] = s[18] = s[23] = '-';
842
- uuidA = s.join('');
843
- this.uuida = uuidA;
844
- },
845
- async startestimaterall(){
846
- if(this.$refs.paged.$refs.criteria.model.f_meter_state != '未抄表'){
847
- this.$showAlert('请选择抄表状态为未抄表开始批量抄表!', 'warning', 2000)
848
- }else{
849
- await this.search();
850
- this.$showMessage("本页未抄表数据以上期底数存为待抄表数据,是否继续?",['confirm','cancel']).then(res=>{
851
- if(res == 'confirm'){
852
- paramsdata(this);
853
- }
854
- })
855
- this.saveenterflag = true;
856
- }
857
- },
858
- endestimaterall(){
859
- this.$showMessage("正在进行批量录入抄表,确认后录入数据将丢失是否继续?",['confirm','cancel']).then(res=>{
860
- if(res == 'confirm'){
861
- this.saveenterflag = false;
862
- this.metertneterarr = [];
863
- }
864
- });
865
- },
866
- //批量抄表
867
- estimaterallclick(){
868
- if(!this.saveenterflag || this.metertneterarr.length <=0){
869
- this.$showAlert('无任何批量抄表数据,无法进行批量抄表,请录入后进行点击此按钮','warning',2000);
870
- return;
871
- }
872
- this.$showMessage("是否要进行批量估表抄表保存?",['confirm','cancel']).then(res=>{
873
- if(res == 'confirm'){
874
- this.meterenterallsave();
875
- }
876
- })
877
- },
878
- meterenterallsave(){
879
- this.$showMessage(`将进行抄表${this.metertneterarr.length}条,是否继续?`, ['confirm', 'cancel']).then(async (res) => {
880
- if(res == 'confirm'){
881
- this.getuuid();
882
- let param = {
883
- info: this.metertneterarr,
884
- modeluser : {
885
- f_operator: this.$login.f.name,
886
- f_operatorid: this.$login.f.id,
887
- f_orgid: this.$login.f.orgid,
888
- f_orgname: this.$login.f.orgs,
889
- f_depid: this.$login.f.depids,
890
- f_depname: this.$login.f.deps
891
- },
892
- uuid: this.uuida
893
- }
894
- try{
895
- await this.$resetpost('rs/logic/estimateCommonEnternoSQL',{data: param},{resolveMsg: null, rejectMsg: null},1000).then((res)=>{
896
- if(res.data){
897
- }
898
- })
899
- }catch(error){}
900
- let getparam = {
901
- uuid: this.uuida
902
- }
903
- let self = this;
904
- this.progressShow2=true;
905
- this.timer = setInterval(function(){
906
- self.$resetpost('/rs/logic/getBatchOperaPro',{data:getparam},{resolveMsg: null, rejectMsg: null}, 0).then((res)=>{
907
- if(res.data ){
908
- if(res.data.msg ){
909
- self.progressclose();
910
- self.metertneterarr=[];
911
- self.saveenterflag=false;
912
- self.$showMessage(res.data.msg);
913
- self.search();
914
- }
915
- }
916
- });
917
- },3000);
918
- }
919
- });
920
-
921
- },
922
- estimaterclick0(){
923
- if(this.saveenterflag){
924
- this.$showMessage("正在进行批量录入抄表,确认后将退出批量抄表并且录入数据将丢失是否继续?",['confirm','cancel']).then(res=>{
925
- if(res == 'confirm'){
926
- this.metertneterarr =[];
927
- this.saveenterflag=false;
928
- this.estimaterclick();
929
- }else{
930
- return;
931
- }
932
- })
933
- }else{
934
- this.estimaterclick();
935
- }
936
- },
937
- // 估表抄表
938
- async estimaterclick () {
939
-
940
- if(this.$refs.paged.$refs.criteria.model.f_meter_state != '未抄表'){
941
- this.$showAlert('请选择抄表状态为未抄表进行估表抄表!', 'warning', 2000)
942
- return
943
- }
944
- await this.search()
945
- if (this.searchOrderstr == '') {
946
- this.$showAlert('请选择点击查询后进行估表抄表!', 'warning', 2000)
947
- return
948
- }
949
- // 2. 查询有多少需要进行估表抄表
950
- if (this.model.rows.length <=0 ) {
951
- this.$showAlert('当前无需要估表抄表数据!', 'warning', 2000)
952
- return
953
- }
954
- // 是否有需要估表抄表的
955
- if (this.model.count < 1) {
956
- this.$showAlert('当前无需要估表抄表数据!', 'warning', 2000)
957
- return
958
- }
959
- // 进行估表抄表
960
- this.$showMessage(`将进行估表抄表${this.model.count}户,是否继续?`, ['confirm', 'cancel']).then(async (res) => {
961
- if (res == 'confirm') {
962
- this.percent = 0;
963
- this.getuuid();
964
- let param = {
965
- info: this.getCondition,
966
- modeluser : {
967
- f_operator: this.$login.f.name,
968
- f_operatorid: this.$login.f.id,
969
- f_orgid: this.$login.f.orgid,
970
- f_orgname: this.$login.f.orgs,
971
- f_depid: this.$login.f.depids,
972
- f_depname: this.$login.f.deps
973
- },
974
- uuid: this.uuida
975
- }
976
- try{
977
- await this.$resetpost('rs/logic/estimateCommonEnter',{data: param},{resolveMsg: null, rejectMsg: null},1000).then((res)=>{
978
- if(res.data){
979
- }
980
- })
981
- }catch(error){}
982
- let getparam = {
983
- uuid: this.uuida
984
- }
985
- let self = this;
986
- this.progressShow=true;
987
- this.timer = setInterval(function(){
988
- self.$resetpost('/rs/logic/getBatchOperaPro',{data:getparam},{resolveMsg: null, rejectMsg: null}, 0).then((res)=>{
989
- if(res.data ){
990
- if(res.data.msg ){
991
- self.progressclose();
992
- self.$showMessage(res.data.msg);
993
- self.search();
994
- }
995
- }
996
- });
997
- },3000);
998
- }
999
- })
1000
- },
1001
- paycodefocus () {
1002
- this.$nextTick(() => {
1003
- this.$els.paycode.focus()
1004
- })
1005
- },
1006
- getRes (obj) {
1007
- this.orgCondtionStr = obj
1008
- },
1009
- async getaddress () {
1010
- console.log('开始获取小区')
1011
- let HttpReset = new HttpResetClass()
1012
- var data = await HttpReset.load('POST', 'rs/sql/manage_getarealist', {
1013
- data: {
1014
- condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
1015
- }
1016
- }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
1017
- console.log('小区', data)
1018
- let house = []
1019
- house.push()
1020
- for (let row of data.data) {
1021
- console.log('开始保存小区')
1022
- house.push({label: row.f_residential_area, value: row.f_residential_area})
1023
- }
1024
- this.residentialArea = house
1025
- },
1026
- loadMeterBooks () {
1027
- this.meterbooks = [...this.meterbooks, ...this.$GetSaleParam.getMeterBooks()]
1028
- },
1029
-
1030
- fileterprice (row) {
1031
- this.splitdata = row
1032
- this.priceSplit = true
1033
- console.log('row==>', row)
1034
- },
1035
- hidden () {
1036
- this.criteriaShow = !this.criteriaShow
1037
- },
1038
- clear () {
1039
- Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
1040
- this.$refs.paged.$refs.criteria.model[key] = []
1041
- })
1042
- this.$refs.paged.$refs.criteria.model.f_meter_classify = ['机表']
1043
- },
1044
-
1045
- // 判断当前页是否全选
1046
- isChooseAll (rows) {
1047
- if (this.plans.length == 0 && rows.length == 0) {
1048
- return false
1049
- }
1050
- for (var i = 0; i < rows.length; i++) {
1051
- let flag = false
1052
- if (rows[i].f_meter_state == '未下发') {
1053
- for (let plan of this.plans) {
1054
- if (plan.id == rows[i].f_userfiles_id) {
1055
- flag = true
1056
- if (!plan.state) {
1057
- return false
1058
- }
1059
- }
1060
- }
1061
- if (!flag) {
1062
- return false
1063
- }
1064
- }
1065
- }
1066
- return true
1067
- },
1068
- // 选择需要下发的计划
1069
- chooseOne (e, row, rows) {
1070
- console.log('row', row)
1071
- let checked = e.target.checked
1072
- console.log('state', e.target.checked)
1073
- // 判断当前行是否被选中
1074
- if (checked) {
1075
- let onePlan = {
1076
- id: row.f_userfiles_id,
1077
- state: true
1078
- }
1079
- // 记录被选中计划的状态
1080
- let flag = false
1081
- for (let plan of this.plans) {
1082
- if (plan.id == row.f_userfiles_id) {
1083
- flag = true
1084
- plan.state = true
1085
- }
1086
- }
1087
- if (!flag) {
1088
- this.plans.push(onePlan)
1089
- }
1090
- } else {
1091
- for (let plan of this.plans) {
1092
- if (plan.id == row.f_userfiles_id) {
1093
- plan.state = false
1094
- }
1095
- }
1096
- }
1097
- // let param = {id:row.id,isChoose:true}
1098
-
1099
- if (this.isChooseAll(rows)) {
1100
- this.all = true
1101
- } else {
1102
- this.all = false
1103
- }
1104
- // this.delRepetition()
1105
- },
1106
- uploadFiles () {
1107
- this.showfiles = !this.showfiles
1108
- },
1109
- chooseAll () {
1110
- if (this.all) {
1111
- for (let row of this.model.rows) {
1112
- if (row.f_meter_state == '未下发') {
1113
- let onePlan = {
1114
- id: row.f_userfiles_id,
1115
- state: true
1116
- }
1117
- let flag = false
1118
- for (let plan of this.plans) {
1119
- if (plan.id == row.f_userfiles_id) {
1120
- flag = true
1121
- plan.state = true
1122
- }
1123
- }
1124
- if (!flag) {
1125
- this.plans.push(onePlan)
1126
- }
1127
- }
1128
- }
1129
- } else {
1130
- // this.chooseInfo[index-1] = []
1131
- // console.log("this.chooseInfo[index-1]",this.chooseInfo[index-1])
1132
- for (let row of this.model.rows) {
1133
- if (row.f_meter_state == '未下发') {
1134
- for (let plan of this.plans) {
1135
- if (plan.id == row.f_userfiles_id) {
1136
- plan.state = false
1137
- }
1138
- }
1139
- }
1140
- }
1141
- }
1142
- },
1143
- search () {
1144
- // 查询前清空选择项
1145
- this.plans = []
1146
- this.$refs.paged.$refs.criteria.search()
1147
- },
1148
- clickupshow () {
1149
- this.upshow = !this.upshow
1150
- },
1151
- searchPrint () {
1152
- console.log('mode', this.model)
1153
- let cons = this.model.params
1154
- let data = {
1155
- 'body': {
1156
- 'data': {
1157
- 'condition': ''
1158
- },
1159
- 'field': [],
1160
- 'templateName': '',
1161
- 'sqlName': ''
1162
- },
1163
- 'condition': cons,
1164
- 'sqlname': 'periodAlreadyIssuedOrder'
1165
- }
1166
- this.$resetpost('rs/logic/allExportExcel', {data: data}, {resolveMsg: null, rejectMsg: '上传失败'}).then((res) => {
1167
- if (res.data === 'no user') {
1168
- this.$showAlert(`无匹配用户,无法导出对应excel`, 'warning', 2000)
1169
- } else {
1170
- var link = document.createElement('a')
1171
- res.data.forEach((item) => {
1172
- console.log('导出路径', item.filename)
1173
- let path = item.filename
1174
- // 本地
1175
- // let pathName = "http://" + location.host + "/excel" + path.split('excel')[1]
1176
- // 服务器
1177
- let pathName = 'http://' + location.host + '/webapps' + path.split('webapps')[1]
1178
- link.href = pathName
1179
- console.log('=============================', path.split('excel/')[1])
1180
- link.download = path.split('excel/')[1]
1181
- link.dispatchEvent(new MouseEvent('click'))
1182
- })
1183
- }
1184
- })
1185
- },
1186
- selfSearch (args) {
1187
- if(this.saveenterflag){
1188
- this.$showMessage("是否重新查询,重新查询后本次未保存抄表结果将丢失,是否继续?",['confirm','cancel']).then(res=>{
1189
- if(res != 'confirm'){
1190
- return;
1191
- }else{
1192
- this.metertneterarr=[];
1193
- this.saveenterflag = false;
1194
- this.searchnew(args);
1195
- }
1196
- })
1197
- }else{
1198
- this.searchnew(args);
1199
- }
1200
-
1201
- },
1202
- searchnew(args){
1203
- this.meter_state = args.condition.includes('未下发')
1204
- this.inputtor_change = args.condition.includes('未抄表')
1205
-
1206
- if (!this.orgCondtionStr) {
1207
- args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
1208
- } else {
1209
- args.condition = `${args.condition}` + this.orgCondtionStr
1210
- }
1211
-
1212
- // 抄表员查询条件
1213
- this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
1214
- if (this.inputtouPerson.length !== 0) {
1215
- let str = JSON.stringify(this.inputtouPerson)
1216
- str = str.replace(/"/g, `'`)
1217
- str = str.replace(/\[/g, ``)
1218
- str = str.replace(/\]/g, ``)
1219
- // 查询多个抄表员时条件
1220
- args.condition += ` and f_inputtor in ( ${str} )`
1221
- }
1222
- // 小区查询条件
1223
- this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
1224
- console.log('=====小区model绑定====', this.area)
1225
- if (this.area.length !== 0) {
1226
- let str = JSON.stringify(this.area)
1227
- str = str.replace(/"/g, `'`)
1228
- str = str.replace(/\[/g, ``)
1229
- str = str.replace(/\]/g, ``)
1230
- // 查询多个小区时条件
1231
- args.condition += ` and f_residential_area in ( ${str} )`
1232
- }
1233
-
1234
- if (args.model.f_meter_brand && args.model.f_meter_brand.length > 0) {
1235
- if (args.model.f_meter_brand[0].f_meter_brand) {
1236
- args.condition = `${args.condition} and f_meter_brand = '${args.model.f_meter_brand[0].f_meter_brand}'`
1237
- }
1238
- }
1239
- this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
1240
- this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
1241
- this.condition2 = args.condition
1242
- console.log('selfsearch..', args.condition, this.model)
1243
- this.searchOrderstr = args.condition
1244
- this.model.search(args.condition, this.model)
1245
- },
1246
- reflash () {
1247
- this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
1248
- this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0]
1249
- this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1]
1250
- //this.search()
1251
- },
1252
- beforenter (index, row) {
1253
- this.inputid = index + 1
1254
- // 限制本次抄表不能低于上次
1255
- if (row.f_tablebase) {
1256
- if (row.f_tablebase - parseInt(row.f_tablebase) !== 0) {
1257
- row.state = '失败'
1258
- Vue.set(row, 'error', '底数只能输入整数')
1259
- this.speckText('底数只能输入整数,请注意!')
1260
- } else if (row.f_tablebase < row.f_meter_base) {
1261
- row.state = '失败'
1262
- Vue.set(row, 'error', '本期表底数不能低于上期表底数')
1263
- this.speckText('本期表底数不能低于上期表底数,请注意!')
1264
- } else {
1265
- beforenterGen(this, index, row)
1266
- }
1267
- }
1268
- },
1269
- enter (index, row) {
1270
- console.log('录入数据。..', row)
1271
- if (this.$appdata.getSingleValue('抄表审核') === '启用') {
1272
- let f_input_date = Vue.$login.toStandardDateString()
1273
- if (row.f_input_date && row.f_input_date != '') {
1274
- f_input_date = row.f_input_date
1275
- }
1276
- let handplan = {
1277
- id: row.id,
1278
- f_oughtamount: row.f_oughtamount,
1279
- f_tablebase: row.f_tablebase,
1280
- f_hand_date: row.f_hand_date,
1281
- f_input_date: f_input_date,
1282
- f_input_person: Vue.$login.f.name,
1283
- f_meter_state: '待审核',
1284
- f_meter_source: '手动录入',
1285
-
1286
- f_operator: Vue.$login.f.name,
1287
- f_operatorid: Vue.$login.f.id,
1288
- f_orgid: Vue.$login.f.orgid,
1289
- f_orgname: Vue.$login.f.orgs,
1290
- f_depid: Vue.$login.f.depids,
1291
- f_depname: Vue.$login.f.deps
1292
-
1293
- }
1294
- console.log('抄表负数。。0', handplan)
1295
- this.$resetpost('rs/entity/t_handplan', handplan, {
1296
- resolveMsg: null,
1297
- rejectMsg: '抄表数据保存出错!!!'
1298
- }).then((res) => {
1299
- row.f_meter_state = '待审核'
1300
- row.f_whether_pay = '否'
1301
- row.f_input_date = res.data.f_input_date
1302
- this.$parent.search()
1303
- }).catch((error) => {
1304
- row.state = '失败'
1305
- Vue.set(row, 'error', JSON.stringify(error))
1306
- this.speckText('抄表录入出错,请注意!')
1307
- })
1308
- } else {
1309
- // 没有启用抄表审核功能
1310
- row.f_input_person = this.$login.f.name
1311
- row.f_inputtor = row.f_inputtor
1312
- row.f_userinfo_id = row.f_userinfo_id + ''
1313
- row.f_userfiles_id = row.f_userfiles_id + ''
1314
- this.pass(row)
1315
- }
1316
- },
1317
- pass (row) {
1318
- let param = {
1319
- f_meter_classify: row.f_meter_classify,
1320
- f_meter_brand: row.f_meter_brand,
1321
- f_hand_id: row.id,
1322
- f_operator: Vue.$login.f.name,
1323
- f_tablebase: row.f_tablebase,
1324
- f_userinfo_id: row.f_userinfo_id,
1325
- f_userinfo_code:row.f_userinfo_code
1326
- }
1327
- //判断是否要进行批量抄表
1328
- if(this.saveenterflag){
1329
- let flag =false;
1330
- this.metertneterarr.forEach(item=>{
1331
- if(item.f_hand_id == param.f_hand_id){
1332
- flag=true;
1333
- item.f_tablebase = param.f_tablebase;
1334
- }
1335
- })
1336
- if(!flag){
1337
- this.metertneterarr.push(param);
1338
- }
1339
- }else{
1340
- this.$resetpost('rs/logic/sale_commonEnter', {data: param}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1341
- row.f_meter_state = res.data.f_meter_state
1342
- row.f_whether_pay = res.data.f_whether_pay
1343
- let f_result_state = '估表'
1344
- if (row.f_result_state && row.f_result_state != '') {
1345
- f_result_state = row.f_result_state
1346
- }
1347
- let f_input_date = ''
1348
- if (row.f_input_date && row.f_input_date != '') {
1349
- f_input_date = ` ,f_input_date = '${row.f_input_date}'`
1350
- }
1351
- let sqldata = `update t_handplan set f_result_state = '${f_result_state}' ${f_input_date} where id = '${row.id}'`
1352
- this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: '业务单号保存失败'})
1353
- }).catch((error) => {
1354
- row.state = '失败'
1355
- Vue.set(row, 'error', JSON.stringify(error))
1356
- this.speckText('抄表出错,请注意!')
1357
- })
1358
- }
1359
- },
1360
- nopass (row) {
1361
- console.log('不通过。。。', row)
1362
- let handplan = {
1363
- id: row.id,
1364
- f_oughtamount: 0,
1365
- f_tablebase: 0,
1366
- f_input_date: null,
1367
- f_meter_state: '未抄表',
1368
- f_meter_source: null
1369
- }
1370
- this.$resetpost('rs/entity/t_handplan', handplan, {
1371
- resolveMsg: null,
1372
- rejectMsg: '未通过,抄表数据返回未抄表保存出错!!!'
1373
- }).then((res) => {
1374
- row.f_tablebase = null
1375
- row.f_meter_state = '未抄表'
1376
- row.f_whether_pay = '否'
1377
- this.search()
1378
- }).catch((error) => {
1379
- row.state = '失败'
1380
- Vue.set(row, 'error', JSON.stringify(error))
1381
- this.speckText('抄表录入出错,请注意!')
1382
- })
1383
- },
1384
- clearError (row) {
1385
- if (row.f_tablebase === 0) {
1386
- row.f_tablebase = ''
1387
- }
1388
- Vue.set(row, 'error', null)
1389
- },
1390
- async speckText (str) {
1391
- var url = 'http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=6&text=' + encodeURI(str)
1392
- await new Audio(url).play()
1393
- this.err = str
1394
- this.showerr = true
1395
- this.paycodefocus()
1396
- },
1397
- closeerr () {
1398
- this.showerr = false
1399
- },
1400
- fileUpload () {
1401
- this.uploadshow = true
1402
- },
1403
- // 删除这条计划
1404
- delectHand (row) {
1405
- this.$showMessage('删除后不可恢复,确认删除吗?', ['confirm', 'cancel']).then((res) => {
1406
- if (res === 'confirm') {
1407
- this.$resetpost('rs/logic/deletePlan', {data: row}).then(() => {
1408
- this.$dispatch('refresh', '删除计划', row)
1409
- this.search()
1410
- })
1411
- }
1412
- })
1413
- },
1414
- cancelHand4 (row) {
1415
- this.examinerow = row
1416
- this.examineshow = true
1417
- this.examinetype = true
1418
- },
1419
- cancelHand2 (row) {
1420
- if (this.config.examine) {
1421
- let handdate = new Date(row.f_hand_date)
1422
- console.log('获取月份', handdate.getMonth())
1423
- let ima = new Date()
1424
- console.log('获取月份', ima.getMonth())
1425
- if (handdate.getMonth() == ima.getMonth()) {
1426
- this.cancelHand3(row)
1427
- } else {
1428
- if (!this.$login.r.find(value => value == '抄表隔月冲正')) {
1429
- this.$showMessage('当前登录用户没有隔月冲正权限, 请联系管理员!')
1430
- } else {
1431
- this.cancelHand3(row)
1432
- }
1433
- }
1434
- } else {
1435
- this.cancelHand3(row)
1436
- }
1437
- },
1438
- async cancelHand5 () {
1439
- let sqldata = `update t_handplan set f_audit_state ='已审核',f_audit_person='${this.$login.f.name}',
1440
- f_audit_date='${this.$login.toStandardTimeString()}' where id ='${this.examinerow.id}'`
1441
- await this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: '更新收费记录订单号失败'})
1442
-
1443
- this.cancelHand3(this.examinerow)
1444
- },
1445
- cancelHand3 (row) {
1446
- // 抄表加入权限
1447
- if (!this.$login.r.find(value => value == '机表抄表冲正')) {
1448
- this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
1449
- return
1450
- }
1451
- console.log('抄表冲正。、。。、', row)
1452
- let param = {
1453
- f_hand_id: row.id,
1454
- operInfo: {
1455
- f_operator: this.$login.f.name,
1456
- f_operatorid: this.$login.f.id,
1457
- f_orgid: this.$login.f.orgid,
1458
- f_orgname: this.$login.f.orgs,
1459
- f_depid: this.$login.f.depids,
1460
- f_depname: this.$login.f.deps
1461
- }
1462
- }
1463
- let url = 'rs/logic/sale_commonEnterCancel'
1464
- this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
1465
- this.search()
1466
- this.close()
1467
- })
1468
- },
1469
- down (type, condition, data) {
1470
- co(downGen(type, condition, data, this))
1471
- },
1472
- // 单条下发计划
1473
- downHand (row) {
1474
- console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + row.f_userfiles_id)
1475
- this.down('single', `f_userfiles_id = '${row.f_userfiles_id}'`, row)
1476
- },
1477
- // 批量下发计划
1478
- batchDownHand () {
1479
- this.down('batch', this.model.condition, this.model.count)
1480
- },
1481
- batchInputtorChange () {
1482
- this.inputtor_show = true
1483
- },
1484
- inputtorConfirm () {
1485
- this.$showMessage(`确认变更前请确认选择的时间区间和查询条件是否正确,确认变更当前 ${this.model.count} 户抄表员`, ['confirm', 'cancel']).then((res) => {
1486
- if (res === 'confirm') {
1487
- inputtotChangeGen(this)
1488
- }
1489
- })
1490
- },
1491
- confirm () {
1492
- // 正式提交下发
1493
- // 进行日期校验,判断下发的日期是否属于选择的归属期内
1494
- console.log('下发日期校验', this.downModel, this.$refs.paged.$refs.criteria.model)
1495
- if (this.validateDate()) {
1496
- this.show = false
1497
- if (this.unhandplan.length > 0) {
1498
- this.downConfirm = true
1499
- } else {
1500
- this.confirmDownHand()
1501
- }
1502
- } else {
1503
- this.$showAlert('您选择的下发时间不在归属期内, 请重新选择下发时间', 'warning', 3000)
1504
- }
1505
- },
1506
- validateDate () {
1507
- let currentDown = new Date(this.downModel.downDate)
1508
- console.log(new Date(this.$refs.paged.$refs.criteria.model.startDate))
1509
- console.log(new Date(this.$refs.paged.$refs.criteria.model.endDate))
1510
- 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')
1511
- },
1512
-
1513
- downContinue () {
1514
- this.downConfirm = false
1515
- this.confirmDownHand()
1516
- },
1517
- downFilter () {
1518
- this.downConfirm = false
1519
- console.log('过滤有未抄记录的抄表')
1520
- let filterUser = ''
1521
- for (let json of this.unhandplan) {
1522
- filterUser += `'${json.f_userfiles_id}',`
1523
- }
1524
- filterUser = filterUser.slice(0, filterUser.length - 1)
1525
- this.condition = this.condition + ` and f_userfiles_id not in (${filterUser})`
1526
- console.log('获取新的条件。', this.condition)
1527
- this.confirmDownHand()
1528
- },
1529
- confirmDownHand () {
1530
- console.log('下发数据。。', this.downModel)
1531
- let param = {
1532
- downDate: this.downModel.downDate,
1533
- startDate: this.model.params.startDate,
1534
- endDate: this.model.params.endDate,
1535
- condition: this.condition,
1536
- f_operator: this.$login.f.name,
1537
- f_operatorid: this.$login.f.id
1538
- }
1539
- if (this.downModel.downWay === 'downWithSelf') {
1540
- param.inputtor = this.downModel.downInputtor[0]
1541
- }
1542
- console.log('下发参数:', param)
1543
- this.$resetpost('rs/logic/downHand', {data: param}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1544
- // 将缓存的未抄表ID数组置空
1545
- this.unhandplan = []
1546
- this.initModal()
1547
- this.search()
1548
- this.$showAlert(`全部下发,总计下发${res.data}户`, 'success', 2000)
1549
- }).catch((error) => {
1550
- this.$showAlert(`下发失败,请注意查看,失败原因:${error}`, 'danger', 0)
1551
- })
1552
- },
1553
- async examineconfirm () {
1554
- let sqldata = `update t_handplan set f_audit_state ='审核中',f_examinereason='${this.examinerow.f_examinereason}' where id ='${this.examinerow.id}'`
1555
- await this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: null})
1556
- this.close()
1557
- this.search()
1558
- },
1559
- // 关闭下发计划得弹出框
1560
- close () {
1561
- this.show = false
1562
- this.inputtor_show = false
1563
- this.downConfirm = false
1564
- this.examineshow = false
1565
- this.examinetype = false
1566
- // 初始化模态框数据
1567
- this.initModal()
1568
- if (this.uploadshow) {
1569
- this.uploadshow = false
1570
- // 讲选的文件清空
1571
- this.$refs.file.$el.querySelector('input').value = ''
1572
- }
1573
- },
1574
- initModal () {
1575
- this.downModel = {
1576
- downDate: Vue.$login.toStandardDateString(),
1577
- downWay: 'downWithUserfiles',
1578
- downInputtor: []
1579
- }
1580
- this.inputtorModel = {
1581
- inputtor: [],
1582
- reason: ''
1583
- }
1584
- },
1585
- // 判断当前登陆人是不是子公司的人员
1586
- isHead () {
1587
- return this.$login.f.parent.parent.name.includes('统一资源管理')
1588
- },
1589
- sort (field, rule) {
1590
- // 将所有排序方式设为不排序,实现相互排斥
1591
- for (let key in this.orderFields) {
1592
- if (key === field) {
1593
- this.orderFields[key] = rule
1594
- } else {
1595
- this.orderFields[key] = 'no'
1596
- }
1597
- }
1598
- // 如果新规则不排序,还原为默认排序
1599
- if (rule === 'no') {
1600
- this.model.paramSource.orderitem = `'${this.orderDefault}'`
1601
- } else {
1602
- this.model.paramSource.orderitem = `'${field} ${rule}'`
1603
- }
1604
- this.search()
1605
- }
1606
- },
1607
- watch: {
1608
- 'downModel.downWay' (val) {
1609
- if (val === 'downWithSelf') {
1610
- console.log('抄表员。。', this.inputtores2)
1611
- if (this.inputtores2.length > 0) {
1612
- this.downModel.downInputtor = [this.inputtores2[0].value]
1613
- }
1614
- }
1615
- }
1616
- },
1617
- computed: {
1618
- // 使用类型获取
1619
- usetype () {
1620
- return this.$appdata.getParam('使用类型')
1621
- },
1622
- getCondition () {
1623
- // return {condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr}
1624
- return {startDate: this.$refs.paged.$refs.criteria.model.startDate,
1625
- endDate: this.$refs.paged.$refs.criteria.model.endDate,
1626
- orderitem: this.orderDefault ? this.orderDefault : 'id',
1627
- condition: this.condition2}
1628
- },
1629
-
1630
- inputtores () {
1631
- // 获取抄表员
1632
- console.log('获取抄表员', this.$login.f)
1633
- let rs = []
1634
- if (this.$login.f.f_gasman.length > 0) {
1635
- for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
1636
- let temp = {
1637
- label: this.$login.f.f_gasman[i].name,
1638
- value: this.$login.f.f_gasman[i].name
1639
- }
1640
- rs.push(temp)
1641
- }
1642
- }
1643
- this.inputtores2 = rs
1644
- return [ ...rs]
1645
- },
1646
- whetherpaies () {
1647
- return [
1648
- {label: '全部', value: ''},
1649
- {label: '已缴费', value: '是'},
1650
- {label: '未缴费', value: '否'}
1651
- ]
1652
- },
1653
- // 界面细节权限
1654
- jurisdiction () {
1655
- console.log('抄表界面细节', this.$login.r)
1656
- return this.$login.r ? this.$login.r : []
1657
- },
1658
- firestates () {
1659
- return [
1660
- {label: '全部', value: ''},
1661
- {label: '已点火', value: '1'},
1662
- {label: '未点火', value: '0'}
1663
- ]
1664
- },
1665
- ischecked () {
1666
- return function (row) {
1667
- for (let plan of this.plans) {
1668
- if (plan.id == row.f_userfiles_id) {
1669
- return plan.state
1670
- }
1671
- }
1672
- }
1673
- }
1674
- },
1675
- events: {
1676
- onFileUpload: function (file, res) {
1677
- if (this.upshow) {
1678
- let data = {
1679
- model: {
1680
- f_operator: this.$login.f.name,
1681
- f_end_date: this.$login.nextMonth20(this.$login.toStandardTimeString())
1682
- },
1683
- filepath: res.f_downloadpath
1684
- }
1685
- let http2 = new HttpResetClass()
1686
- http2.load('POST', 'rs/logic/batchSettleFileupdate', data, {resolveMsg: null, rejectMsg: '上传失败'})
1687
- this.uploadshow = false
1688
- try {
1689
- this.$showAlert(`文件上传成功,正在后台批量结算......`, 'success', 2000)
1690
- } catch (error) {
1691
- console.log('抄表已经超时请求(不影响其他!)')
1692
- }
1693
- // this.$showMessage(`一共上传${res.data.allsize}条数据, 成功${res.data.size}条, 失败下发${filenum}条`+";;失败数据:"+res.data.error.join(",")+";;抄表数过低数据:"+res.data.error2.join(",")+";;用气量超过2000: "+res.data.infoData.join(","));
1694
- this.$parent.search()
1695
- this.batchMeterShow = false
1696
- // })
1697
- return
1698
- }
1699
- let data = {
1700
- model: {
1701
- f_operator: this.$login.f.name,
1702
- f_end_date: this.$login.nextMonth20(this.$login.toStandardTimeString())
1703
- },
1704
- filepath: res.path
1705
- }
1706
- if (res.f_downloadpath.includes('抄表数据')) {
1707
- console.log('进入了抄表上传')
1708
- let data1 = {
1709
- filepath: res.f_downloadpath
1710
- }
1711
- this.$resetpost('rs/logic/upLoadHand', data1, {resolveMsg: null, rejectMsg: '上传失败'}, 0).then((res) => {
1712
- // console.log('终于成功了', res)
1713
- this.upshow = false
1714
- // this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
1715
- // this.$parent.search()
1716
- })
1717
- } else if (data.filepath.includes('先锋')) {
1718
- this.$resetpost('rs/logic/xfimport', data, {resolveMsg: null, rejectMsg: '上传失败'}, 0).then((res) => {
1719
- // console.log('终于成功了', res)
1720
- this.uploadshow = false
1721
- this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
1722
- this.$parent.search()
1723
- })
1724
- } else if (data.filepath.includes('伦力')) {
1725
- this.$resetpost('rs/logic/llimport', data, {resolveMsg: null, rejectMsg: '上传失败'}, 0).then((res) => {
1726
- // console.log('终于成功了', res)
1727
- this.uploadshow = false
1728
- this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
1729
- this.$parent.search()
1730
- })
1731
- }
1732
- }
1733
- }
1734
- }
1735
- </script>
1736
- <style lang="less" scoped>
1737
- #handManager {
1738
- display: flex;
1739
- justify-content: space-around;
1740
- align-items: center;
1741
- .btn {
1742
- margin: 0px;
1743
- }
1744
- }
1745
-
1746
- .hand-loading {
1747
- border: 3px solid #ccc;
1748
- border-right-color: #337ab7;
1749
- border-radius: 50%;
1750
- animation: spin 0.6s linear;
1751
- position: absolute;
1752
- animation-iteration-count: infinite;
1753
- top: 0;
1754
- right: 50%;
1755
- z-index: 2;
1756
- display: block;
1757
- width: 28px;
1758
- height: 28px;
1759
- line-height: 28px;
1760
- text-align: center;
1761
- pointer-events: none;
1762
- }
1763
-
1764
- @keyframes spin {
1765
- 100% {
1766
- transform: rotate(360deg);
1767
- }
1768
- }
1769
- </style>
1
+ <template xmlns:v-el="">
2
+ <div class="flex-row">
3
+ <div class="basic-main">
4
+ <criteria-paged :model="model" v-ref:paged @sort="sort">
5
+ <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
6
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <modal :show.sync="$parent.$parent.upshow" width="500px" title="文件导入" v-ref:modal large backdrop="false">
8
+ <article slot="modal-body" class="modal-body">
9
+ <file-upload class="my-file-uploader " name="UploadFile" class="btn btn-success" style="border-radius: 2px;"
10
+ action="rs/file/uploadFile" tagname="导入" v-ref:file :headers="headers" multiple></file-upload>
11
+ </article>
12
+ <footer slot="modal-footer" class="modal-footer">
13
+ </footer>
14
+ </modal>
15
+ <div class="row">
16
+ <!--<div class="col-sm-6">-->
17
+ <!--style="border: 1px solid #a6d5ea; box-shadow: darkgrey 1px 1px 1px 2px;padding: 0.5%">-->
18
+ <div class="col-sm-2 form-group">
19
+ <label class="font_normal_body">归属起始</label>
20
+ <datepicker placeholder="开始日期"
21
+ style="width:60%"
22
+ class="datepicker"
23
+ v-model="model.startDate"
24
+ :value.sync="model.startDate"
25
+ :format="'yyyy-MM-dd'"
26
+ ></datepicker>
27
+ </div>
28
+ <div class="col-sm-2 form-group">
29
+ <label class="font_normal_body">归属结束</label>
30
+ <datepicker placeholder="结束日期"
31
+ style="width:60%"
32
+ v-model="model.endDate"
33
+ :value.sync="model.endDate"
34
+ :format="'yyyy-MM-dd'"
35
+ ></datepicker>
36
+ </div>
37
+
38
+ <div class="col-sm-2 form-group">
39
+ <label class="font_normal_body">客户编号</label>
40
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
41
+ condition="f_userinfo_code='{}'" placeholder='客户编号'>
42
+ </div>
43
+
44
+ <div class="span" style="float:right;">
45
+
46
+ <button class="button_search button_spacing" @click="$parent.$parent.estimaterclick0()">估表抄表</button>
47
+ <button v-if="!$parent.$parent.saveenterflag" class="button_search button_spacing" @click="$parent.$parent.startestimaterall()">开始批量抄表</button>
48
+ <button v-if="$parent.$parent.saveenterflag" class="button_clear button_spacing" @click="$parent.$parent.endestimaterall()">取消批量抄表</button>
49
+ <button v-if="$parent.$parent.saveenterflag" class="button_search button_spacing" @click="$parent.$parent.estimaterallclick()">批量抄表保存</button>
50
+ <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
51
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
52
+ <button class="button_search button_spacing" @click="$parent.$parent.clickupshow()">导入抄表</button>
53
+ <!-- <button class="button_search button_spacing" @click="$parent.$parent.searchPrint()">导出信息Excel</button>-->
54
+
55
+ <button v-if="$parent.$parent.meter_state" class="button_search button_spacing" @click="$parent.$parent.batchDownHand()">计划下发</button>
56
+ <button v-if="$parent.$parent.inputtor_change" class="button_search button_spacing" @click="$parent.$parent.batchInputtorChange()">抄表员调整</button>
57
+
58
+ <export-excel
59
+ :data="$parent.$parent.getCondition"
60
+ :field="$parent.$parent.getfield"
61
+ sqlurl="rs/logic/saleExport" progress="saleGetExportProgress" sql-name="periodAlreadyIssuedOrder" template-name='抄表导出'
62
+ :choose-col="true">
63
+ </export-excel>
64
+ <div
65
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
66
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
67
+ </div>
68
+ </div>
69
+ <div class="row" v-show="$parent.$parent.criteriaShow">
70
+ <div class="col-sm-2 form-group">
71
+ <label class="font_normal_body">表&ensp;编&ensp;号</label>
72
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_id"
73
+ condition="f_user_id='{}'" placeholder='表编号'>
74
+ </div>
75
+ <div class="col-sm-2 form-group">
76
+ <label class="font_normal_body">客户姓名</label>
77
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name" placeholder='客户姓名'
78
+ condition="f_user_name = '{}'">
79
+ </div>
80
+ <div class="col-sm-2 form-group">
81
+ <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
82
+ <v-select :value.sync="model.f_residential_area"
83
+ class="select_list select"
84
+ enter-push
85
+ v-model="model.f_residential_area"
86
+ style="width: 60%"
87
+ multiple = "true"
88
+ :options='$parent.$parent.residentialArea' 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_building"
95
+ condition="f_building = '{}'" placeholder='楼栋'>
96
+ </div>
97
+ <div class="col-sm-2 form-group">
98
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
99
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
100
+ condition="f_unit = '{}'" placeholder='单元'>
101
+ </div>
102
+ <div class="col-sm-2 form-group">
103
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
104
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
105
+ condition="f_floor = '{}'" placeholder='楼层'>
106
+ </div>
107
+ <div class="col-sm-2 form-group">
108
+ <label class="font_normal_body">门&ensp;牌&ensp;号</label>
109
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
110
+ condition="f_room like '%{}%'" placeholder='门牌号'>
111
+ </div>
112
+ <div class="col-sm-2 form-group">
113
+ <label class="font_normal_body">客户地址</label>
114
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
115
+ condition="f_address like '%{}%'" placeholder='客户地址'>
116
+ </div>
117
+ <div class="col-sm-2 form-group">
118
+ <label class="font_normal_body">抄&ensp;表&ensp;员</label>
119
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
120
+ style="width:60%"
121
+ multiple="true"
122
+ :options='$parent.$parent.inputtores' placeholder='抄表员'
123
+ close-on-select
124
+ v-el:cc></v-select>
125
+ </div>
126
+ <div class="col-sm-2 form-group">
127
+ <label class="font_normal_body">是否缴费</label>
128
+ <v-select :value.sync="model.f_whether_pay" v-model='model.f_whether_pay'
129
+ style="width:60%"
130
+ :options='$parent.$parent.whetherpaies' placeholder='是否缴费'
131
+ close-on-select
132
+ condition="f_whether_pay = '{}'"></v-select>
133
+ </div>
134
+ <div class="col-sm-2 form-group">
135
+ <label class="font_normal_body">抄表状态</label>
136
+ <v-select :value.sync="model.f_meter_state" v-model='model.f_meter_state'
137
+ style="width:60%"
138
+ :options='$parent.$parent.meterstates' placeholder='抄表状态'
139
+ close-on-select
140
+ condition="f_meter_state = '{}'"></v-select>
141
+ </div>
142
+ <div class="col-sm-2 form-group">
143
+ <label class="font_normal_body">气表类型</label>
144
+ <v-select :value.sync="model.f_meter_classify" v-model="model.f_meter_classify"
145
+ style="width:60%"
146
+ :options='$parent.$parent.meters' placeholder='气表类型'
147
+ close-on-select
148
+ condition="f_meter_classify = '{}'"
149
+ default-value="'机表'"></v-select>
150
+ </div>
151
+ <div class="col-sm-2 form-group" >
152
+ <label for="belongmonth" class="font_normal_body" >所属年月</label>
153
+ <datepicker placeholder="所属年月" style="width:60%"
154
+ v-model="model.belongmonth"
155
+ :value.sync="model.belongmonth"
156
+ :format="'yyyy-MM'"
157
+ :show-reset-button="true"
158
+ condition="belongmonth = '{}'"
159
+ :select-month="true">
160
+ </datepicker>
161
+ </div>
162
+ <div class="col-sm-2 form-group">
163
+ <label class="font_normal_body">客户类型</label>
164
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
165
+ :options='$parent.$parent.usertypes' placeholder='客户类型'
166
+ style="width:60%"
167
+ close-on-select
168
+ condition="f_user_type = '{}'"></v-select>
169
+ </div>
170
+
171
+ <div class="col-sm-2 form-group">
172
+ <label class="font_normal_body">抄&ensp;表&ensp;册</label>
173
+ <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"
174
+ :options='$parent.$parent.meterbooks' placeholder='抄表册'
175
+ style="width:60%"
176
+ close-on-select
177
+ condition="f_meter_book_num = '{}'"></v-select>
178
+ </div>
179
+ <div class="col-sm-2 form-group">
180
+ <label class="font_normal_body">调压箱名</label>
181
+ <v-select :value.sync="model.f_adjustable_name" v-model="model.f_adjustable_name"
182
+ :options='$parent.$parent.adjustablename' placeholder='调压箱名称'
183
+ style="width:60%"
184
+ close-on-select
185
+ condition="f_adjustable_name = '{}'"></v-select>
186
+ </div>
187
+ <res-select-group :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
188
+ <div class="col-sm-2 form-group">
189
+ <label class="font_normal_body">使用类型</label>
190
+ <v-select :value.sync="model.f_usetype" v-model="model.f_usetype"
191
+ :options='$parent.$parent.usetype' placeholder='使用类型'
192
+ style="width:60%"
193
+ close-on-select
194
+ condition="f_usetype = '{}'"></v-select>
195
+ </div>
196
+ <div class="col-sm-2 form-group">
197
+ <label class="font_normal_body">用户等级</label>
198
+ <v-select :value.sync="model.f_user_level" v-model="model.f_user_level"
199
+ :options='$parent.$parent.userlevels' placeholder='用户等级'
200
+ style="width:60%"
201
+ close-on-select
202
+ condition="f_user_level = '{}'"></v-select>
203
+ </div>
204
+ </div>
205
+
206
+
207
+ </div>
208
+ </criteria>
209
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid >
210
+ <template partial='head'>
211
+ <tr>
212
+ <th><nobr>序号</nobr></th>
213
+ <th><nobr><data-order field="f_userinfo_code" name="客户编号"
214
+ :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order></nobr>
215
+ </th>
216
+ <th><nobr>表编号</nobr></th>
217
+ <th><nobr><data-order field="f_address" name="基本信息"
218
+ :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order></nobr>
219
+ </th>
220
+ <th><nobr>用户等级</nobr></th>
221
+ <th><nobr>所属年月</nobr></th>
222
+ <th><nobr>调压箱名称</nobr></th>
223
+ <th><nobr>抄表员</nobr></th>
224
+ <th><nobr>上期结余</nobr></th>
225
+ <th><nobr><data-order field="f_last_input_date" name="上次抄表录入日期"
226
+ :order.sync="$parent.$parent.$parent.orderFields.f_last_input_date"></data-order></nobr>
227
+ </th>
228
+ <th><nobr><data-order field="f_hand_date" name="下发日期"
229
+ :order.sync="$parent.$parent.$parent.orderFields.f_hand_date"></data-order></nobr>
230
+ </th>
231
+ <th><nobr><data-order field="f_input_date" name="抄表录入日期"
232
+ :order.sync="$parent.$parent.$parent.orderFields.f_input_date"></data-order></nobr>
233
+ </th>
234
+ <th><nobr>上期底数</nobr></th>
235
+ <th><nobr>上期用气量</nobr></th>
236
+ <th><nobr>上期抄表状态</nobr></th>
237
+ <th><nobr>本期底数</nobr></th>
238
+ <th><nobr>批量操作</nobr></th>
239
+ <th><nobr>平均用气量</nobr></th>
240
+ <th><nobr>抄表结果状态</nobr></th>
241
+ <th><nobr>应交金额</nobr></th>
242
+ <th><nobr>欠费金额</nobr></th>
243
+ <th><nobr>应交气量</nobr></th>
244
+ <th><nobr>是否缴费</nobr></th>
245
+ <th><nobr><data-order field="f_book_name" name="抄表册"
246
+ :order.sync="$parent.$parent.$parent.orderFields.f_book_name"></data-order></nobr>
247
+
248
+ </th>
249
+ <th><nobr>操作</nobr></th>
250
+ </tr>
251
+ </template>
252
+ <template partial='body'>
253
+
254
+ <td style="text-align: center;">{{$index + 1}}</td>
255
+ <td>{{row.f_userinfo_code}}</td>
256
+ <td>{{row.f_user_id}}</td>
257
+ <td>{{row.f_user_name}}&nbsp;&nbsp;{{row.f_address}}</td>
258
+ <td>{{row.f_user_level}}</td>
259
+ <td>{{row.belongmonth}}</td>
260
+ <td>{{row.f_adjustable_name}}</td>
261
+ <td>{{row.f_inputtor}}</td>
262
+ <td>{{row.f_balacne}}</td>
263
+ <td>{{row.f_last_input_date}}</td>
264
+ <td>{{row.f_hand_date}}</td>
265
+ <td>
266
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
267
+ 'has-success has-feedback': !row.error,
268
+ 'has-error has-feedback': row.error}"
269
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0 && $parent.$parent.$parent.jurisdiction.includes('录入日期修正')">
270
+ <datepicker id="endDate" placeholder="抄表时间"
271
+ v-model="row.f_input_date"
272
+ :value.sync="row.f_input_date"
273
+ :format="'yyyy-MM-dd HH:mm:ss'"
274
+ :show-reset-button="true">
275
+ </datepicker>
276
+ </div>
277
+ <div v-else>
278
+ {{row.f_input_date}}
279
+ </div>
280
+ </td>
281
+ <td>{{row.f_meter_base}}</td>
282
+ <td>{{row.lastoutamount}}</td>
283
+ <td>{{row.lastmeterstate}}</td>
284
+ <td id="hand-creat">
285
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
286
+ 'has-success has-feedback': !row.error,
287
+ 'has-error has-feedback': row.error}"
288
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0">
289
+
290
+ <input title="只能录入整数" type="text" class="input_search" v-model="row.f_tablebase"
291
+ @blur="$parent.$parent.$parent.beforenter($index, row)"
292
+ v-next-el="{id: $index+2}" :id="$index+1" style="width: 100px;padding: 6px;"
293
+ @focus="$parent.$parent.$parent.clearError(row)"
294
+ :disabled="row.state === '开始'">
295
+ </div>
296
+ <div id="handManager" v-else>
297
+ <span
298
+ v-if="row.states === 0">{{row.f_tablebase || row.f_tablebase === 0 ? row.f_tablebase : '本期无计划'}}</span>
299
+ <span
300
+ v-if="row.states === 1">{{row.f_tablebase || row.f_tablebase === 0 ? row.f_tablebase : '尚未下发'}}</span>
301
+ </div>
302
+ <span v-if="row.error" style="color: #ff0000;">{{row.error}}</span>
303
+ </td>
304
+ <td>
305
+ <button type="button" name="button" class="btn btn-link"
306
+ @click.stop="$parent.$parent.$parent.deleteBattchEnter(row) "
307
+ v-if="row.f_tablebase!='' && $parent.$parent.$parent.saveenterflag">删除
308
+ </button>
309
+ </td>
310
+ <td style="text-align: center;">{{Math.round(row.avggas)}}</td>
311
+ <td>
312
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
313
+ 'has-success has-feedback': !row.error,
314
+ 'has-error has-feedback': row.error}"
315
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0">
316
+ <v-select :value.sync="row.f_result_state" v-model="row.f_result_state"
317
+ :options='$parent.$parent.$parent.resultstate' placeholder='抄表结果状态'
318
+ style="width:120%"
319
+ :width="'100%'"
320
+ :value-single="true"
321
+ close-on-select></v-select>
322
+ </div>
323
+ <div v-else>
324
+ {{row.f_result_state}}
325
+ </div>
326
+ </td>
327
+ <td style="text-align: center;">{{row.f_oughtfee}}</td>
328
+ <td style="text-align: center;">{{row.f_debt_money}}</td>
329
+ <td style="text-align: center;">{{row.f_oughtamount = row.f_tablebase ?
330
+ (row.f_share_gas ?
331
+ (row.f_tablebase - 0 - (row.f_meter_base - 0)).toFixed(4) + (row.f_share_gas > 0 ? '+' : '') + row.f_share_gas.toFixed(2) : (row.f_tablebase - 0 - (row.f_meter_base - 0)).toFixed(2)) : 0}}
332
+ </td>
333
+ <td style="text-align: center;">{{row.f_whether_pay}}</td>
334
+ <td>{{row.f_book_name}}</td>
335
+ <td style="text-align: center;">
336
+ <button type="button" name="button" class="btn btn-link"
337
+ v-if="row.f_audit_state != '审核中'&& row.states === 1 && row.f_meter_state === '已抄表' && row.f_oper_state === '正常' && (row.f_whether_pay === '否' || row.f_accounts_state === '自动下账')"
338
+ @click.stop="$parent.$parent.$parent.cancelHand2(row)">冲正
339
+ </button>
340
+ <button type="button" name="button" class="btn btn-link"
341
+ v-if="row.f_audit_state === '审核中' && $parent.$parent.$parent.jurisdiction.includes('抄表冲正审核')"
342
+ @click.stop="$parent.$parent.$parent.cancelHand4(row)">审核通过
343
+ </button>
344
+ <div v-if="row.f_audit_state === '审核中' && !$parent.$parent.$parent.jurisdiction.includes('抄表冲正审核')">
345
+ 审核中
346
+ </div>
347
+ <button type="button" name="button" class="btn btn-link"
348
+ v-if="$parent.$parent.$parent.config.customCal && row.f_meter_state === '已抄表' && row.states === 1 && row.f_oper_state === '正常' && row.f_whether_pay === '否'"
349
+ @click.stop="$parent.$parent.$parent.fileterprice(row)">自定义划价
350
+ </button>
351
+
352
+ <button type="button" name="button" class="btn btn-link" disabled="disabled"
353
+ v-if="row.f_oper_state === '换表'">已换表
354
+ </button>
355
+
356
+ <button type="button" name="button" class="btn btn-link"
357
+ @click.stop="$parent.$parent.$parent.delectHand(row) && row.states === 1"
358
+ v-if="row.f_meter_state === '未抄表' && row.states === 1">删除
359
+ </button>
360
+
361
+ <button type="button" name="button" class="btn btn-link"
362
+ @click.stop="$parent.$parent.$parent.downHand(row)"
363
+ v-if="row.f_meter_state === '未下发'">下发计划
364
+ </button>
365
+ <button type="button" name="button" class="btn btn-link"
366
+ v-if="row.f_meter_state === '待审核' ">待审核
367
+ </button>
368
+
369
+ <button type="button" name="button" class="btn btn-link"
370
+ @click.stop="$parent.$parent.$parent.pass(row)"
371
+ v-if="row.f_meter_state === '待审核'">通过
372
+ </button>
373
+
374
+ <button type="button" name="button" class="btn btn-link"
375
+ @click.stop="$parent.$parent.$parent.nopass(row)"
376
+ v-if="row.f_meter_state === '待审核' ">不通过
377
+ </button>
378
+ </td>
379
+ </template>
380
+ </data-grid>
381
+ </criteria-paged>
382
+ <split-price :showdata="splitdata" :pricesplit="priceSplit" v-if="priceSplit" ></split-price>
383
+ <modal :show.sync="show" v-ref:modal backdrop="false">
384
+ <header slot="modal-header" class="modal-header">
385
+ <h4 class="modal-title">计划下发</h4>
386
+ </header>
387
+ <article slot="modal-body" class="modal-body">
388
+ <form class="form-horizontal">
389
+ <div class="row auto">
390
+ <div class="form-group form-input-group col-sm-6">
391
+ <label class="label-control">下发日期</label>
392
+ <datepicker placeholder="下发日期" :value.sync="downModel.downDate"></datepicker>
393
+ </div>
394
+ </div>
395
+ <div class="row auto">
396
+ <div class="form-group form-input-group col-sm-3">
397
+ <div class="col-sm-2"></div>
398
+ <input type="radio" value="downWithUserfiles" v-model="downModel.downWay" checked>
399
+ <label>表册抄表员</label>
400
+ </div>
401
+ <div class="form-group form-input-group col-sm-3">
402
+ <input type="radio" value="downWithSelf" v-model="downModel.downWay">
403
+ <label class="label-control">自定义抄表员</label>
404
+ </div>
405
+ </div>
406
+ <div class="row auto" v-if="downModel.downWay === 'downWithSelf'">
407
+ <div class="form-group form-input-group col-sm-6">
408
+ <label class="label-control">抄表员</label>
409
+ <div class="col-sm-4">
410
+ <v-select :value.sync="downModel.downInputtor" v-model='downModel.downInputtor'
411
+ :options='inputtores2' placeholder='抄表员'
412
+ close-on-select></v-select>
413
+ </div>
414
+ </div>
415
+ </div>
416
+ </form>
417
+ </article>
418
+
419
+ <footer slot="modal-footer" class="modal-footer">
420
+ <button type="button" class="btn btn-default" @click='close()'>取消</button>
421
+ <button type="button" class="btn btn-success" @click='confirm()'>确认</button>
422
+ </footer>
423
+ </modal>
424
+ <modal :show.sync="downConfirm" backdrop="false">
425
+ <header slot="modal-header" class="modal-header">
426
+ <h4 class="modal-title">下发确认</h4>
427
+ </header>
428
+ <article slot="modal-body" class="modal-body">
429
+ <div class="col-sm-2 form-group">
430
+ {{msg}}
431
+ </div>
432
+ </article>
433
+
434
+ <footer slot="modal-footer" class="modal-footer">
435
+ <button type="button" class="btn btn-success" @click='downContinue'>继续下发</button>
436
+ <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>
437
+ <button type="button" class="btn btn-default" @click='close'>取消</button>
438
+ </footer>
439
+ </modal>
440
+
441
+ <modal :show.sync="downConfirm" backdrop="false">
442
+ <header slot="modal-header" class="modal-header">
443
+ <h4 class="modal-title">下发确认</h4>
444
+ </header>
445
+ <article slot="modal-body" class="modal-body">
446
+ <div class="col-sm-2 form-group">
447
+ {{msg}}
448
+ </div>
449
+ </article>
450
+
451
+ <footer slot="modal-footer" class="modal-footer">
452
+ <button type="button" class="btn btn-success" @click='downContinue'>继续下发</button>
453
+ <button type="button" class="btn btn-success" @click='downFilter'>下发无抄表</button>
454
+ <button type="button" class="btn btn-default" @click='close'>取消</button>
455
+ </footer>
456
+ </modal>
457
+ <modal :show.sync="inputtor_show" backdrop="false">
458
+ <header slot="modal-header" class="modal-header">
459
+ <h4 class="modal-title">抄表员变更</h4>
460
+ </header>
461
+ <article slot="modal-body" class="modal-body">
462
+ <form class="form-horizontal">
463
+ <div class="row auto">
464
+ <div class="form-group form-input-group col-sm-6">
465
+ <label>调整客户数</label>
466
+ <input class="input_search" v-model="model.count" disabled>
467
+ </div>
468
+ </div>
469
+ <div class="row auto">
470
+ <div class="form-group form-input-group col-sm-6">
471
+ <label class="label-control">抄表员</label>
472
+ <div class="col-sm-4">
473
+ <v-select :value.sync="inputtorModel.inputtor" v-model='inputtorModel.inputtor'
474
+ :options='inputtores2' placeholder='抄表员'
475
+ close-on-select></v-select>
476
+ </div>
477
+ </div>
478
+ </div>
479
+ </form>
480
+ </article>
481
+
482
+ <footer slot="modal-footer" class="modal-footer">
483
+ <button type="button" class="btn btn-success" @click='inputtorConfirm'>确认</button>
484
+ <button type="button" class="btn btn-default" @click='close'>取消</button>
485
+ </footer>
486
+ </modal>
487
+
488
+ <modal :show.sync="uploadshow" v-ref:modal backdrop="false">
489
+ <header slot="modal-header" class="modal-header">
490
+ <button type="button" class="close" @click="close"><span>&times;</span></button>
491
+ <h4 class="modal-title">文件上传</h4>
492
+ </header>
493
+ <article slot="modal-body" class="modal-body">
494
+ <div class="col-sm-2 form-group">
495
+ <file-upload class="my-file-uploader" name="myFile"
496
+ action="rs/file/upload" tagname="文件上传" :headers="headers" multiple v-ref:file></file-upload>
497
+ </div>
498
+ </article>
499
+
500
+ <footer slot="modal-footer" class="modal-footer">
501
+ <!-- <button v-show="show" type="button" class="btn btn-default" @click='close'>取消</button>
502
+ <button v-show="show" type="button" class="btn btn-success" @click='confirm(filename)'>确认</button> -->
503
+ </footer>
504
+ </modal>
505
+ <modal :show.sync="examineshow" v-ref:modal backdrop="false">
506
+ <header slot="modal-header" class="modal-header">
507
+ <button type="button" class="close" @click="close"><span>&times;</span></button>
508
+ <h4 class="modal-title">冲正审核</h4>
509
+ </header>
510
+ <article slot="modal-body" class="modal-body">
511
+ <div class = "row">
512
+ <div class="col-sm-12 form-group">
513
+ <label class="font_normal_body">冲正原因</label>
514
+ <input type="text" style="width:90%" class="input_search" :disabled="examinetype" v-model="examinerow.f_examinereason"
515
+ placeholder='冲正原因'>
516
+ </div>
517
+ <upload :blodid="examinerow.id" v-ref:upload :fusetype="uploadText" isremark="true" style="width:auto" ></upload>
518
+ </div>
519
+
520
+ </article>
521
+
522
+ <footer slot="modal-footer" class="modal-footer">
523
+ <button v-show="examineshow" type="button" class="btn btn-default" @click='close'>取消</button>
524
+ <button v-show="!examinetype" type="button" class="btn btn-success" @click='examineconfirm()'>确认</button>
525
+ <button type="button" v-show="examinetype" class="btn btn-success" @click='cancelHand5()'>审核通过</button>
526
+ </footer>
527
+ </modal>
528
+
529
+ <modal :show.sync="showerr" backdrop="false">
530
+ <header slot="modal-header" class="modal-header">
531
+ <button type="button" class="close" @click="closeerr"><span>&times;</span></button>
532
+ <h4 class="modal-title">抄表出错!</h4>
533
+ </header>
534
+ <article slot="modal-body" class="modal-body">
535
+ <div class = "row">
536
+ <p> {{err}}</p>
537
+ <input type="text" class="form-control" @blur="paycodefocus" v-el:paycode>
538
+ </div>
539
+
540
+ </article>
541
+
542
+ <footer slot="modal-footer" class="modal-footer">
543
+ <button v-show="showerr" type="button" class="btn btn-default" @click='closeerr'>关闭</button>
544
+ </footer>
545
+ </modal>
546
+ </div>
547
+ <modal :show.sync="progressShow" v-ref:modal backdrop="true" width="50%" style="width:auto;" >
548
+ <header slot="modal-header" class="modal-header">
549
+ 估表抄表
550
+ </header>
551
+ <article slot="modal-body" class="modal-body">
552
+ <div style="margin: 20px" >
553
+ <p>正在进行估表抄表,请耐心等待...</p>
554
+ </div>
555
+ </article>
556
+ <footer slot="modal-footer" class="modal-footer">
557
+ <button type="button" class="btn btn-default" @click='progressclose'>关闭</button>
558
+ </footer>
559
+ </modal>
560
+ <modal :show.sync="progressShow2" v-ref:modal backdrop="true" width="50%" style="width:auto;" >
561
+ <header slot="modal-header" class="modal-header">
562
+ 批量抄表
563
+ </header>
564
+ <article slot="modal-body" class="modal-body">
565
+ <div style="margin: 20px" >
566
+ <p>正在进行批量抄表,请耐心等待...</p>
567
+ </div>
568
+ </article>
569
+ <footer slot="modal-footer" class="modal-footer">
570
+ <button type="button" class="btn btn-default" @click='progressclose'>关闭</button>
571
+ </footer>
572
+ </modal>
573
+ <work-busy :is-busy="iswork" v-show="iswork"></work-busy>
574
+ </div>
575
+ </template>
576
+ <script>
577
+ import {HttpResetClass, PagedList} from 'vue-client'
578
+ import Vue from 'vue'
579
+ import co from 'co'
580
+ import axios from 'axios'
581
+
582
+ let readyGen = async function (self) {
583
+ await self.$getConfig(self, 'HandManager')
584
+ await self.$LoadParams.loadMeterBook(self.f_filialeid)
585
+ self.loadMeterBooks()
586
+ self.getfield = self.config.excelHeaders
587
+ self.reflash()
588
+ }
589
+
590
+ let downGen = function *(type, condition, data, self) {
591
+ self.condition = condition
592
+ self.msg = '确认下发计划'
593
+ // 判断之前是否有未抄表数据
594
+ let getUnhand = null
595
+ if (type === 'single') {
596
+ getUnhand = yield Vue.resetpost('rs/sql/getUnhand', {
597
+ data: {
598
+ startDate: self.model.params.startDate,
599
+ condition: condition
600
+ }
601
+ }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
602
+ self.msg = `下发客户编号为${data.f_userinfo_code}的抄表计划?`
603
+ // } else if (type === 'all') {
604
+ } else if (type === 'batch') {
605
+ let tempCondition = condition.replace("and f_meter_state = '未下发'", '')
606
+ getUnhand = yield Vue.resetpost('rs/sql/getUnhand', {
607
+ data: {
608
+ startDate: self.model.params.startDate,
609
+ condition: tempCondition
610
+ }
611
+ }, {resolveMsg: null, rejectMsg: '获取未抄表数据异常!!'})
612
+ self.msg = `确认下发当前总计: ${data} 户计划`
613
+ }
614
+ for (let i = 0; i < getUnhand.data.length; i++) {
615
+ let temp = {
616
+ id: getUnhand.data[i].id,
617
+ f_user_id: getUnhand.data[i].f_user_id,
618
+ f_userfiles_id: getUnhand.data[i].f_userfiles_id,
619
+ f_adjustable_id: getUnhand.data[i].f_adjustable_id,
620
+ f_adjustable_name: getUnhand.data[i].f_adjustable_name
621
+ }
622
+ console.log('=================================================================================')
623
+ console.log('下发计划查看调压箱和调压箱编号', temp)
624
+ console.log('========================================================================================')
625
+ self.unhandplan.push(temp)
626
+ }
627
+ if (getUnhand.data.length > 0) {
628
+ self.msg = self.msg + `, 警告: 之前有 ${getUnhand.data.length} 条未抄表数据`
629
+ }
630
+ self.show = true
631
+ }
632
+
633
+ let beforenterGen = async function (self, index, row) {
634
+ // 验证是不是总表
635
+ // self.enter(index, row)
636
+ if (row.f_totalsplit_type === '总表') {
637
+ let hasUnHand = await self.$HandService.getSplitInfo(row.f_userfiles_id)
638
+ if (hasUnHand) {
639
+ self.$showAlert('该表下面有未抄或未审核的分表信息!!请先抄录或审核分表信息!', 'danger', 0)
640
+ row.f_tablebase = null
641
+ } else {
642
+ self.enter(index, row)
643
+ }
644
+ } else {
645
+ self.enter(index, row)
646
+ }
647
+ }
648
+
649
+ let inputtotChangeGen = async function (self) {
650
+ let param = {
651
+ f_change_content: self.inputtorModel.inputtor[0],
652
+ f_change_cause: self.inputtorModel.reason,
653
+ condition: self.model.condition,
654
+ startDate: self.model.params.startDate,
655
+ endDate: self.model.params.endDate,
656
+ f_operator: self.$login.f.name,
657
+ f_change_count: self.model.count,
658
+ f_change_type: '抄表员变更',
659
+ // f_input_person: self.$login.f.name,
660
+ f_operatorid: self.$login.f.id,
661
+ f_orgid: self.$login.f.orgid,
662
+ f_orgname: self.$login.f.orgs,
663
+ f_depid: self.$login.f.depids,
664
+ f_depname: self.$login.f.deps
665
+ }
666
+ console.log('抄表单抄表员变更', param)
667
+ await self.$resetpost('rs/logic/changeInputtor', param, {resolveMsg: null, rejectMsg: '批量抄表员变更失败'})
668
+ self.$showAlert(`总计变更 ${self.model.count} 户抄表员为 ${self.inputtorModel.inputtor[0]}`, 'success', 2000)
669
+ self.inputtor_show = false
670
+ self.initModal()
671
+ self.reflash()
672
+ }
673
+
674
+ let paramsdata = function(self){
675
+ //将本条记录中所有只放入需抄表值
676
+ if(self.$refs.paged.$refs.grid.model.rows.length>0){
677
+ self.$refs.paged.$refs.grid.model.rows.forEach(item=>{
678
+ let param = {
679
+ f_meter_classify: item.f_meter_classify,
680
+ f_meter_brand: item.f_meter_brand,
681
+ f_hand_id: item.id,
682
+ f_operator: Vue.$login.f.name,
683
+ f_tablebase: item.f_meter_base,
684
+ f_userinfo_id: item.f_userinfo_id,
685
+ f_userinfo_code:item.f_userinfo_code
686
+ };
687
+ item.f_tablebase = item.f_meter_base;
688
+ self.metertneterarr.push(param);
689
+ })
690
+ }
691
+ }
692
+
693
+ export default {
694
+ title: '估表抄表',
695
+ data () {
696
+ return {
697
+ progressShow:false,
698
+ progressShow2:false,
699
+ percent:0,
700
+ initres: {
701
+ org: [this.$login.f.orgid],
702
+ dep: [],
703
+ user: []
704
+ },
705
+ orgCondtionStr: '',
706
+ priceSplit: false,
707
+ criteriaShow: false,
708
+ model: new PagedList('rs/sql/EstimateperiodAlreadyIssuedOrder', 30, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'id'`}),
709
+ config: {
710
+
711
+ // 导出列要和查询列相同
712
+ excelHeaders: {
713
+ 'f_user_id': '表编号',
714
+ 'f_inputtor': '抄表员',
715
+ 'f_balance': '上期结余',
716
+ 'f_last_input_date': '上次抄表',
717
+ 'f_hand_date': '下发时间',
718
+ 'f_input_date': '抄表日期',
719
+ 'f_userinfo_code': '客户编号',
720
+ 'f_address': '客户地址',
721
+ 'f_residential_area': '小区名称',
722
+ 'f_user_name': '客户姓名',
723
+ 'f_meter_base': '上期底数',
724
+ 'f_tablebase': '本期指数',
725
+ 'f_oughtfee': '应交金额',
726
+ 'f_oughtamount': '应交气量',
727
+ 'f_whether_pay': '是否缴费',
728
+ 'f_book_name': '抄表册',
729
+ 'f_meter_classify': '气表分类',
730
+ 'f_price_type': '气价类型',
731
+ 'f_price_name': '气价名称',
732
+ 'f_price_list': '气价单价',
733
+ 'f_meter_type': '气表类型',
734
+ 'f_meter_style': '气表型号',
735
+ 'f_accounts_state': '下账标识',
736
+ 'f_user_phone': '客户电话',
737
+ 'f_adjustable_id': '表箱号'
738
+ },
739
+ examine: true,
740
+ customCal: false
741
+ },
742
+ meter_state: false, // 是否显示计划下发按钮
743
+ downModel: {
744
+ downDate: Vue.$login.toStandardTimeString(),
745
+ downWay: 'downWithUserfiles',
746
+ downInputtor: []
747
+ },
748
+ inputtor_change: false, // 是否显示抄表员变更按钮
749
+ inputtor_show: false, // 控制抄表员变更模板
750
+ inputtorModel: {
751
+ inputtor: [],
752
+ reason: ''
753
+ },
754
+ plans: [], // 记录当前行是否被勾选
755
+ all: false, // 是否全选
756
+ show: false, // 下发日期模态框显示
757
+ unhandplan: [], // 之前是否有未抄表记录
758
+ downConfirm: false, // 下发若有未抄记录,确认框
759
+ uploadshow: false,
760
+ // 小区
761
+ residentialArea: [],
762
+
763
+ msg: '',
764
+ condition: '',
765
+ headers: {'username': Vue.$login.f.name, 'blodid': Vue.$login.guid()},
766
+ orderDefault: 'id',
767
+ orderFields: {
768
+ f_userinfo_id: 'no'
769
+ },
770
+ getfield: {},
771
+ outlet: '',
772
+ filiale: '',
773
+ condition2: '',
774
+ area: [],
775
+ inputtouPerson: [],
776
+ meters: [{label: '全部', value: ''}, {label: '机表', value: '机表'}, {label: '物联网表', value: '物联网表'}],
777
+ resultstate: this.$appdata.getParam('抄表结果状态'),
778
+ meterstates: this.$appdata.getParam('抄表状态') ? [{
779
+ label: '全部',
780
+ value: ''
781
+ }, ...this.$appdata.getParam('抄表状态')] : [],
782
+ usertypes: this.$appdata.getParam('客户类型') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('客户类型')] : [],
783
+ userlevels: this.$appdata.getParam('用户等级') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('用户等级')] : [],
784
+ adjustablename: this.$appdata.getParam('调压箱名称') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('调压箱名称')] : [],
785
+ inputtores2: [], // 下发时使用自定义抄表员,
786
+ splitdata: '',
787
+ f_filialeid: this.$login.f.orgid,
788
+ meterbooks: [{label: '全部', value: ''}],
789
+ upshow: false,
790
+ inputid: 0,
791
+ examineshow: false,
792
+ examinerow: null,
793
+ showfiles: false,
794
+ uploadText: '抄表',
795
+ examinetype: false,
796
+ showerr: false,
797
+ err: '',
798
+ searchOrderstr: '',
799
+ iswork: false,
800
+ metertneterarr:[], //保存批量抄表数据
801
+ saveenterflag:false,
802
+ timer:''
803
+ }
804
+ },
805
+ ready () {
806
+ this.getaddress()
807
+ readyGen(this)
808
+ },
809
+ mounted () {
810
+ console.log(this.inputid)
811
+ document.getElementById(this.inputid).focus()
812
+ },
813
+ methods: {
814
+ deleteBattchEnter(row){
815
+ if(this.saveenterflag){
816
+ this.metertneterarr.forEach((item,index)=>{
817
+ if(item.f_hand_id == row.id){
818
+ row.f_tablebase=0;
819
+ this.metertneterarr.splice(index,1);
820
+ }
821
+ })
822
+ this.$showAlert('删除成功','success',1500);
823
+ }
824
+ },
825
+ progressclose(){
826
+ this.progressShow = false;
827
+ this.progressShow2 = false;
828
+ if(this.timer != null){
829
+ clearInterval(this.timer);
830
+ }
831
+ },
832
+ getuuid(){
833
+ let uuidA = '';
834
+ var s = [];
835
+ var hexDigits = '0123456789abcdef';
836
+ for (var i = 0; i < 36; i++) {
837
+ s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
838
+ }
839
+ s[14] = '4';
840
+ s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
841
+ s[8] = s[13] = s[18] = s[23] = '-';
842
+ uuidA = s.join('');
843
+ this.uuida = uuidA;
844
+ },
845
+ async startestimaterall(){
846
+ if(this.$refs.paged.$refs.criteria.model.f_meter_state != '未抄表'){
847
+ this.$showAlert('请选择抄表状态为未抄表开始批量抄表!', 'warning', 2000)
848
+ }else{
849
+ await this.search();
850
+ this.$showMessage("本页未抄表数据以上期底数存为待抄表数据,是否继续?",['confirm','cancel']).then(res=>{
851
+ if(res == 'confirm'){
852
+ paramsdata(this);
853
+ }
854
+ })
855
+ this.saveenterflag = true;
856
+ }
857
+ },
858
+ endestimaterall(){
859
+ this.$showMessage("正在进行批量录入抄表,确认后录入数据将丢失是否继续?",['confirm','cancel']).then(res=>{
860
+ if(res == 'confirm'){
861
+ this.saveenterflag = false;
862
+ this.metertneterarr = [];
863
+ }
864
+ });
865
+ },
866
+ //批量抄表
867
+ estimaterallclick(){
868
+ if(!this.saveenterflag || this.metertneterarr.length <=0){
869
+ this.$showAlert('无任何批量抄表数据,无法进行批量抄表,请录入后进行点击此按钮','warning',2000);
870
+ return;
871
+ }
872
+ this.$showMessage("是否要进行批量估表抄表保存?",['confirm','cancel']).then(res=>{
873
+ if(res == 'confirm'){
874
+ this.meterenterallsave();
875
+ }
876
+ })
877
+ },
878
+ meterenterallsave(){
879
+ this.$showMessage(`将进行抄表${this.metertneterarr.length}条,是否继续?`, ['confirm', 'cancel']).then(async (res) => {
880
+ if(res == 'confirm'){
881
+ this.getuuid();
882
+ let param = {
883
+ info: this.metertneterarr,
884
+ modeluser : {
885
+ f_operator: this.$login.f.name,
886
+ f_operatorid: this.$login.f.id,
887
+ f_orgid: this.$login.f.orgid,
888
+ f_orgname: this.$login.f.orgs,
889
+ f_depid: this.$login.f.depids,
890
+ f_depname: this.$login.f.deps
891
+ },
892
+ uuid: this.uuida
893
+ }
894
+ try{
895
+ await this.$resetpost('rs/logic/estimateCommonEnternoSQL',{data: param},{resolveMsg: null, rejectMsg: null},1000).then((res)=>{
896
+ if(res.data){
897
+ }
898
+ })
899
+ }catch(error){}
900
+ let getparam = {
901
+ uuid: this.uuida
902
+ }
903
+ let self = this;
904
+ this.progressShow2=true;
905
+ this.timer = setInterval(function(){
906
+ self.$resetpost('/rs/logic/getBatchOperaPro',{data:getparam},{resolveMsg: null, rejectMsg: null}, 0).then((res)=>{
907
+ if(res.data ){
908
+ if(res.data.msg ){
909
+ self.progressclose();
910
+ self.metertneterarr=[];
911
+ self.saveenterflag=false;
912
+ self.$showMessage(res.data.msg);
913
+ self.search();
914
+ }
915
+ }
916
+ });
917
+ },3000);
918
+ }
919
+ });
920
+
921
+ },
922
+ estimaterclick0(){
923
+ if(this.saveenterflag){
924
+ this.$showMessage("正在进行批量录入抄表,确认后将退出批量抄表并且录入数据将丢失是否继续?",['confirm','cancel']).then(res=>{
925
+ if(res == 'confirm'){
926
+ this.metertneterarr =[];
927
+ this.saveenterflag=false;
928
+ this.estimaterclick();
929
+ }else{
930
+ return;
931
+ }
932
+ })
933
+ }else{
934
+ this.estimaterclick();
935
+ }
936
+ },
937
+ // 估表抄表
938
+ async estimaterclick () {
939
+
940
+ if(this.$refs.paged.$refs.criteria.model.f_meter_state != '未抄表'){
941
+ this.$showAlert('请选择抄表状态为未抄表进行估表抄表!', 'warning', 2000)
942
+ return
943
+ }
944
+ await this.search()
945
+ if (this.searchOrderstr == '') {
946
+ this.$showAlert('请选择点击查询后进行估表抄表!', 'warning', 2000)
947
+ return
948
+ }
949
+ // 2. 查询有多少需要进行估表抄表
950
+ if (this.model.rows.length <=0 ) {
951
+ this.$showAlert('当前无需要估表抄表数据!', 'warning', 2000)
952
+ return
953
+ }
954
+ // 是否有需要估表抄表的
955
+ if (this.model.count < 1) {
956
+ this.$showAlert('当前无需要估表抄表数据!', 'warning', 2000)
957
+ return
958
+ }
959
+ // 进行估表抄表
960
+ this.$showMessage(`将进行估表抄表${this.model.count}户,是否继续?`, ['confirm', 'cancel']).then(async (res) => {
961
+ if (res == 'confirm') {
962
+ this.percent = 0;
963
+ this.getuuid();
964
+ let param = {
965
+ info: this.getCondition,
966
+ modeluser : {
967
+ f_operator: this.$login.f.name,
968
+ f_operatorid: this.$login.f.id,
969
+ f_orgid: this.$login.f.orgid,
970
+ f_orgname: this.$login.f.orgs,
971
+ f_depid: this.$login.f.depids,
972
+ f_depname: this.$login.f.deps
973
+ },
974
+ uuid: this.uuida
975
+ }
976
+ try{
977
+ await this.$resetpost('rs/logic/estimateCommonEnter',{data: param},{resolveMsg: null, rejectMsg: null},1000).then((res)=>{
978
+ if(res.data){
979
+ }
980
+ })
981
+ }catch(error){}
982
+ let getparam = {
983
+ uuid: this.uuida
984
+ }
985
+ let self = this;
986
+ this.progressShow=true;
987
+ this.timer = setInterval(function(){
988
+ self.$resetpost('/rs/logic/getBatchOperaPro',{data:getparam},{resolveMsg: null, rejectMsg: null}, 0).then((res)=>{
989
+ if(res.data ){
990
+ if(res.data.msg ){
991
+ self.progressclose();
992
+ self.$showMessage(res.data.msg);
993
+ self.search();
994
+ }
995
+ }
996
+ });
997
+ },3000);
998
+ }
999
+ })
1000
+ },
1001
+ paycodefocus () {
1002
+ this.$nextTick(() => {
1003
+ this.$els.paycode.focus()
1004
+ })
1005
+ },
1006
+ getRes (obj) {
1007
+ this.orgCondtionStr = obj
1008
+ },
1009
+ async getaddress () {
1010
+ console.log('开始获取小区')
1011
+ let HttpReset = new HttpResetClass()
1012
+ var data = await HttpReset.load('POST', 'rs/sql/manage_getarealist', {
1013
+ data: {
1014
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
1015
+ }
1016
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
1017
+ console.log('小区', data)
1018
+ let house = []
1019
+ house.push()
1020
+ for (let row of data.data) {
1021
+ console.log('开始保存小区')
1022
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
1023
+ }
1024
+ this.residentialArea = house
1025
+ },
1026
+ loadMeterBooks () {
1027
+ this.meterbooks = [...this.meterbooks, ...this.$GetSaleParam.getMeterBooks()]
1028
+ },
1029
+
1030
+ fileterprice (row) {
1031
+ this.splitdata = row
1032
+ this.priceSplit = true
1033
+ console.log('row==>', row)
1034
+ },
1035
+ hidden () {
1036
+ this.criteriaShow = !this.criteriaShow
1037
+ },
1038
+ clear () {
1039
+ Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
1040
+ this.$refs.paged.$refs.criteria.model[key] = []
1041
+ })
1042
+ this.$refs.paged.$refs.criteria.model.f_meter_classify = ['机表']
1043
+ },
1044
+
1045
+ // 判断当前页是否全选
1046
+ isChooseAll (rows) {
1047
+ if (this.plans.length == 0 && rows.length == 0) {
1048
+ return false
1049
+ }
1050
+ for (var i = 0; i < rows.length; i++) {
1051
+ let flag = false
1052
+ if (rows[i].f_meter_state == '未下发') {
1053
+ for (let plan of this.plans) {
1054
+ if (plan.id == rows[i].f_userfiles_id) {
1055
+ flag = true
1056
+ if (!plan.state) {
1057
+ return false
1058
+ }
1059
+ }
1060
+ }
1061
+ if (!flag) {
1062
+ return false
1063
+ }
1064
+ }
1065
+ }
1066
+ return true
1067
+ },
1068
+ // 选择需要下发的计划
1069
+ chooseOne (e, row, rows) {
1070
+ console.log('row', row)
1071
+ let checked = e.target.checked
1072
+ console.log('state', e.target.checked)
1073
+ // 判断当前行是否被选中
1074
+ if (checked) {
1075
+ let onePlan = {
1076
+ id: row.f_userfiles_id,
1077
+ state: true
1078
+ }
1079
+ // 记录被选中计划的状态
1080
+ let flag = false
1081
+ for (let plan of this.plans) {
1082
+ if (plan.id == row.f_userfiles_id) {
1083
+ flag = true
1084
+ plan.state = true
1085
+ }
1086
+ }
1087
+ if (!flag) {
1088
+ this.plans.push(onePlan)
1089
+ }
1090
+ } else {
1091
+ for (let plan of this.plans) {
1092
+ if (plan.id == row.f_userfiles_id) {
1093
+ plan.state = false
1094
+ }
1095
+ }
1096
+ }
1097
+ // let param = {id:row.id,isChoose:true}
1098
+
1099
+ if (this.isChooseAll(rows)) {
1100
+ this.all = true
1101
+ } else {
1102
+ this.all = false
1103
+ }
1104
+ // this.delRepetition()
1105
+ },
1106
+ uploadFiles () {
1107
+ this.showfiles = !this.showfiles
1108
+ },
1109
+ chooseAll () {
1110
+ if (this.all) {
1111
+ for (let row of this.model.rows) {
1112
+ if (row.f_meter_state == '未下发') {
1113
+ let onePlan = {
1114
+ id: row.f_userfiles_id,
1115
+ state: true
1116
+ }
1117
+ let flag = false
1118
+ for (let plan of this.plans) {
1119
+ if (plan.id == row.f_userfiles_id) {
1120
+ flag = true
1121
+ plan.state = true
1122
+ }
1123
+ }
1124
+ if (!flag) {
1125
+ this.plans.push(onePlan)
1126
+ }
1127
+ }
1128
+ }
1129
+ } else {
1130
+ // this.chooseInfo[index-1] = []
1131
+ // console.log("this.chooseInfo[index-1]",this.chooseInfo[index-1])
1132
+ for (let row of this.model.rows) {
1133
+ if (row.f_meter_state == '未下发') {
1134
+ for (let plan of this.plans) {
1135
+ if (plan.id == row.f_userfiles_id) {
1136
+ plan.state = false
1137
+ }
1138
+ }
1139
+ }
1140
+ }
1141
+ }
1142
+ },
1143
+ search () {
1144
+ // 查询前清空选择项
1145
+ this.plans = []
1146
+ this.$refs.paged.$refs.criteria.search()
1147
+ },
1148
+ clickupshow () {
1149
+ this.upshow = !this.upshow
1150
+ },
1151
+ searchPrint () {
1152
+ console.log('mode', this.model)
1153
+ let cons = this.model.params
1154
+ let data = {
1155
+ 'body': {
1156
+ 'data': {
1157
+ 'condition': ''
1158
+ },
1159
+ 'field': [],
1160
+ 'templateName': '',
1161
+ 'sqlName': ''
1162
+ },
1163
+ 'condition': cons,
1164
+ 'sqlname': 'periodAlreadyIssuedOrder'
1165
+ }
1166
+ this.$resetpost('rs/logic/allExportExcel', {data: data}, {resolveMsg: null, rejectMsg: '上传失败'}).then((res) => {
1167
+ if (res.data === 'no user') {
1168
+ this.$showAlert(`无匹配用户,无法导出对应excel`, 'warning', 2000)
1169
+ } else {
1170
+ var link = document.createElement('a')
1171
+ res.data.forEach((item) => {
1172
+ console.log('导出路径', item.filename)
1173
+ let path = item.filename
1174
+ // 本地
1175
+ // let pathName = "http://" + location.host + "/excel" + path.split('excel')[1]
1176
+ // 服务器
1177
+ let pathName = 'http://' + location.host + '/webapps' + path.split('webapps')[1]
1178
+ link.href = pathName
1179
+ console.log('=============================', path.split('excel/')[1])
1180
+ link.download = path.split('excel/')[1]
1181
+ link.dispatchEvent(new MouseEvent('click'))
1182
+ })
1183
+ }
1184
+ })
1185
+ },
1186
+ selfSearch (args) {
1187
+ if(this.saveenterflag){
1188
+ this.$showMessage("是否重新查询,重新查询后本次未保存抄表结果将丢失,是否继续?",['confirm','cancel']).then(res=>{
1189
+ if(res != 'confirm'){
1190
+ return;
1191
+ }else{
1192
+ this.metertneterarr=[];
1193
+ this.saveenterflag = false;
1194
+ this.searchnew(args);
1195
+ }
1196
+ })
1197
+ }else{
1198
+ this.searchnew(args);
1199
+ }
1200
+
1201
+ },
1202
+ searchnew(args){
1203
+ this.meter_state = args.condition.includes('未下发')
1204
+ this.inputtor_change = args.condition.includes('未抄表')
1205
+
1206
+ if (!this.orgCondtionStr) {
1207
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
1208
+ } else {
1209
+ args.condition = `${args.condition}` + this.orgCondtionStr
1210
+ }
1211
+
1212
+ // 抄表员查询条件
1213
+ this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
1214
+ if (this.inputtouPerson.length !== 0) {
1215
+ let str = JSON.stringify(this.inputtouPerson)
1216
+ str = str.replace(/"/g, `'`)
1217
+ str = str.replace(/\[/g, ``)
1218
+ str = str.replace(/\]/g, ``)
1219
+ // 查询多个抄表员时条件
1220
+ args.condition += ` and f_inputtor in ( ${str} )`
1221
+ }
1222
+ // 小区查询条件
1223
+ this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
1224
+ console.log('=====小区model绑定====', this.area)
1225
+ if (this.area.length !== 0) {
1226
+ let str = JSON.stringify(this.area)
1227
+ str = str.replace(/"/g, `'`)
1228
+ str = str.replace(/\[/g, ``)
1229
+ str = str.replace(/\]/g, ``)
1230
+ // 查询多个小区时条件
1231
+ args.condition += ` and f_residential_area in ( ${str} )`
1232
+ }
1233
+
1234
+ if (args.model.f_meter_brand && args.model.f_meter_brand.length > 0) {
1235
+ if (args.model.f_meter_brand[0].f_meter_brand) {
1236
+ args.condition = `${args.condition} and f_meter_brand = '${args.model.f_meter_brand[0].f_meter_brand}'`
1237
+ }
1238
+ }
1239
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
1240
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
1241
+ this.condition2 = args.condition
1242
+ console.log('selfsearch..', args.condition, this.model)
1243
+ this.searchOrderstr = args.condition
1244
+ this.model.search(args.condition, this.model)
1245
+ },
1246
+ reflash () {
1247
+ this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
1248
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0]
1249
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1]
1250
+ //this.search()
1251
+ },
1252
+ beforenter (index, row) {
1253
+ this.inputid = index + 1
1254
+ // 限制本次抄表不能低于上次
1255
+ if (row.f_tablebase) {
1256
+ if (row.f_tablebase - parseInt(row.f_tablebase) !== 0) {
1257
+ row.state = '失败'
1258
+ Vue.set(row, 'error', '底数只能输入整数')
1259
+ this.speckText('底数只能输入整数,请注意!')
1260
+ } else if (row.f_tablebase < row.f_meter_base) {
1261
+ row.state = '失败'
1262
+ Vue.set(row, 'error', '本期表底数不能低于上期表底数')
1263
+ this.speckText('本期表底数不能低于上期表底数,请注意!')
1264
+ } else {
1265
+ beforenterGen(this, index, row)
1266
+ }
1267
+ }
1268
+ },
1269
+ enter (index, row) {
1270
+ console.log('录入数据。..', row)
1271
+ if (this.$appdata.getSingleValue('抄表审核') === '启用') {
1272
+ let f_input_date = Vue.$login.toStandardDateString()
1273
+ if (row.f_input_date && row.f_input_date != '') {
1274
+ f_input_date = row.f_input_date
1275
+ }
1276
+ let handplan = {
1277
+ id: row.id,
1278
+ f_oughtamount: row.f_oughtamount,
1279
+ f_tablebase: row.f_tablebase,
1280
+ f_hand_date: row.f_hand_date,
1281
+ f_input_date: f_input_date,
1282
+ f_input_person: Vue.$login.f.name,
1283
+ f_meter_state: '待审核',
1284
+ f_meter_source: '手动录入',
1285
+
1286
+ f_operator: Vue.$login.f.name,
1287
+ f_operatorid: Vue.$login.f.id,
1288
+ f_orgid: Vue.$login.f.orgid,
1289
+ f_orgname: Vue.$login.f.orgs,
1290
+ f_depid: Vue.$login.f.depids,
1291
+ f_depname: Vue.$login.f.deps
1292
+
1293
+ }
1294
+ console.log('抄表负数。。0', handplan)
1295
+ this.$resetpost('rs/entity/t_handplan', handplan, {
1296
+ resolveMsg: null,
1297
+ rejectMsg: '抄表数据保存出错!!!'
1298
+ }).then((res) => {
1299
+ row.f_meter_state = '待审核'
1300
+ row.f_whether_pay = '否'
1301
+ row.f_input_date = res.data.f_input_date
1302
+ this.$parent.search()
1303
+ }).catch((error) => {
1304
+ row.state = '失败'
1305
+ Vue.set(row, 'error', JSON.stringify(error))
1306
+ this.speckText('抄表录入出错,请注意!')
1307
+ })
1308
+ } else {
1309
+ // 没有启用抄表审核功能
1310
+ row.f_input_person = this.$login.f.name
1311
+ row.f_inputtor = row.f_inputtor
1312
+ row.f_userinfo_id = row.f_userinfo_id + ''
1313
+ row.f_userfiles_id = row.f_userfiles_id + ''
1314
+ this.pass(row)
1315
+ }
1316
+ },
1317
+ pass (row) {
1318
+ let param = {
1319
+ f_meter_classify: row.f_meter_classify,
1320
+ f_meter_brand: row.f_meter_brand,
1321
+ f_hand_id: row.id,
1322
+ f_operator: Vue.$login.f.name,
1323
+ f_tablebase: row.f_tablebase,
1324
+ f_userinfo_id: row.f_userinfo_id,
1325
+ f_userinfo_code:row.f_userinfo_code
1326
+ }
1327
+ //判断是否要进行批量抄表
1328
+ if(this.saveenterflag){
1329
+ let flag =false;
1330
+ this.metertneterarr.forEach(item=>{
1331
+ if(item.f_hand_id == param.f_hand_id){
1332
+ flag=true;
1333
+ item.f_tablebase = param.f_tablebase;
1334
+ }
1335
+ })
1336
+ if(!flag){
1337
+ this.metertneterarr.push(param);
1338
+ }
1339
+ }else{
1340
+ this.$resetpost('rs/logic/sale_commonEnter', {data: param}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1341
+ row.f_meter_state = res.data.f_meter_state
1342
+ row.f_whether_pay = res.data.f_whether_pay
1343
+ let f_result_state = '估表'
1344
+ if (row.f_result_state && row.f_result_state != '') {
1345
+ f_result_state = row.f_result_state
1346
+ }
1347
+ let f_input_date = ''
1348
+ if (row.f_input_date && row.f_input_date != '') {
1349
+ f_input_date = ` ,f_input_date = '${row.f_input_date}'`
1350
+ }
1351
+ let sqldata = `update t_handplan set f_result_state = '${f_result_state}' ${f_input_date} where id = '${row.id}'`
1352
+ this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: '业务单号保存失败'})
1353
+ }).catch((error) => {
1354
+ row.state = '失败'
1355
+ Vue.set(row, 'error', JSON.stringify(error))
1356
+ this.speckText('抄表出错,请注意!')
1357
+ })
1358
+ }
1359
+ },
1360
+ nopass (row) {
1361
+ console.log('不通过。。。', row)
1362
+ let handplan = {
1363
+ id: row.id,
1364
+ f_oughtamount: 0,
1365
+ f_tablebase: 0,
1366
+ f_input_date: null,
1367
+ f_meter_state: '未抄表',
1368
+ f_meter_source: null
1369
+ }
1370
+ this.$resetpost('rs/entity/t_handplan', handplan, {
1371
+ resolveMsg: null,
1372
+ rejectMsg: '未通过,抄表数据返回未抄表保存出错!!!'
1373
+ }).then((res) => {
1374
+ row.f_tablebase = null
1375
+ row.f_meter_state = '未抄表'
1376
+ row.f_whether_pay = '否'
1377
+ this.search()
1378
+ }).catch((error) => {
1379
+ row.state = '失败'
1380
+ Vue.set(row, 'error', JSON.stringify(error))
1381
+ this.speckText('抄表录入出错,请注意!')
1382
+ })
1383
+ },
1384
+ clearError (row) {
1385
+ if (row.f_tablebase === 0) {
1386
+ row.f_tablebase = ''
1387
+ }
1388
+ Vue.set(row, 'error', null)
1389
+ },
1390
+ async speckText (str) {
1391
+ var url = 'http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=6&text=' + encodeURI(str)
1392
+ await new Audio(url).play()
1393
+ this.err = str
1394
+ this.showerr = true
1395
+ this.paycodefocus()
1396
+ },
1397
+ closeerr () {
1398
+ this.showerr = false
1399
+ },
1400
+ fileUpload () {
1401
+ this.uploadshow = true
1402
+ },
1403
+ // 删除这条计划
1404
+ delectHand (row) {
1405
+ this.$showMessage('删除后不可恢复,确认删除吗?', ['confirm', 'cancel']).then((res) => {
1406
+ if (res === 'confirm') {
1407
+ this.$resetpost('rs/logic/deletePlan', {data: row}).then(() => {
1408
+ this.$dispatch('refresh', '删除计划', row)
1409
+ this.search()
1410
+ })
1411
+ }
1412
+ })
1413
+ },
1414
+ cancelHand4 (row) {
1415
+ this.examinerow = row
1416
+ this.examineshow = true
1417
+ this.examinetype = true
1418
+ },
1419
+ cancelHand2 (row) {
1420
+ if (this.config.examine) {
1421
+ let handdate = new Date(row.f_hand_date)
1422
+ console.log('获取月份', handdate.getMonth())
1423
+ let ima = new Date()
1424
+ console.log('获取月份', ima.getMonth())
1425
+ if (handdate.getMonth() == ima.getMonth()) {
1426
+ this.cancelHand3(row)
1427
+ } else {
1428
+ if (!this.$login.r.find(value => value == '抄表隔月冲正')) {
1429
+ this.$showMessage('当前登录用户没有隔月冲正权限, 请联系管理员!')
1430
+ } else {
1431
+ this.cancelHand3(row)
1432
+ }
1433
+ }
1434
+ } else {
1435
+ this.cancelHand3(row)
1436
+ }
1437
+ },
1438
+ async cancelHand5 () {
1439
+ let sqldata = `update t_handplan set f_audit_state ='已审核',f_audit_person='${this.$login.f.name}',
1440
+ f_audit_date='${this.$login.toStandardTimeString()}' where id ='${this.examinerow.id}'`
1441
+ await this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: '更新收费记录订单号失败'})
1442
+
1443
+ this.cancelHand3(this.examinerow)
1444
+ },
1445
+ cancelHand3 (row) {
1446
+ // 抄表加入权限
1447
+ if (!this.$login.r.find(value => value == '机表抄表冲正')) {
1448
+ this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
1449
+ return
1450
+ }
1451
+ console.log('抄表冲正。、。。、', row)
1452
+ let param = {
1453
+ f_hand_id: row.id,
1454
+ operInfo: {
1455
+ f_operator: this.$login.f.name,
1456
+ f_operatorid: this.$login.f.id,
1457
+ f_orgid: this.$login.f.orgid,
1458
+ f_orgname: this.$login.f.orgs,
1459
+ f_depid: this.$login.f.depids,
1460
+ f_depname: this.$login.f.deps
1461
+ }
1462
+ }
1463
+ let url = 'rs/logic/sale_commonEnterCancel'
1464
+ this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
1465
+ this.search()
1466
+ this.close()
1467
+ })
1468
+ },
1469
+ down (type, condition, data) {
1470
+ co(downGen(type, condition, data, this))
1471
+ },
1472
+ // 单条下发计划
1473
+ downHand (row) {
1474
+ console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + row.f_userfiles_id)
1475
+ this.down('single', `f_userfiles_id = '${row.f_userfiles_id}'`, row)
1476
+ },
1477
+ // 批量下发计划
1478
+ batchDownHand () {
1479
+ this.down('batch', this.model.condition, this.model.count)
1480
+ },
1481
+ batchInputtorChange () {
1482
+ this.inputtor_show = true
1483
+ },
1484
+ inputtorConfirm () {
1485
+ this.$showMessage(`确认变更前请确认选择的时间区间和查询条件是否正确,确认变更当前 ${this.model.count} 户抄表员`, ['confirm', 'cancel']).then((res) => {
1486
+ if (res === 'confirm') {
1487
+ inputtotChangeGen(this)
1488
+ }
1489
+ })
1490
+ },
1491
+ confirm () {
1492
+ // 正式提交下发
1493
+ // 进行日期校验,判断下发的日期是否属于选择的归属期内
1494
+ console.log('下发日期校验', this.downModel, this.$refs.paged.$refs.criteria.model)
1495
+ if (this.validateDate()) {
1496
+ this.show = false
1497
+ if (this.unhandplan.length > 0) {
1498
+ this.downConfirm = true
1499
+ } else {
1500
+ this.confirmDownHand()
1501
+ }
1502
+ } else {
1503
+ this.$showAlert('您选择的下发时间不在归属期内, 请重新选择下发时间', 'warning', 3000)
1504
+ }
1505
+ },
1506
+ validateDate () {
1507
+ let currentDown = new Date(this.downModel.downDate)
1508
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.startDate))
1509
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.endDate))
1510
+ 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')
1511
+ },
1512
+
1513
+ downContinue () {
1514
+ this.downConfirm = false
1515
+ this.confirmDownHand()
1516
+ },
1517
+ downFilter () {
1518
+ this.downConfirm = false
1519
+ console.log('过滤有未抄记录的抄表')
1520
+ let filterUser = ''
1521
+ for (let json of this.unhandplan) {
1522
+ filterUser += `'${json.f_userfiles_id}',`
1523
+ }
1524
+ filterUser = filterUser.slice(0, filterUser.length - 1)
1525
+ this.condition = this.condition + ` and f_userfiles_id not in (${filterUser})`
1526
+ console.log('获取新的条件。', this.condition)
1527
+ this.confirmDownHand()
1528
+ },
1529
+ confirmDownHand () {
1530
+ console.log('下发数据。。', this.downModel)
1531
+ let param = {
1532
+ downDate: this.downModel.downDate,
1533
+ startDate: this.model.params.startDate,
1534
+ endDate: this.model.params.endDate,
1535
+ condition: this.condition,
1536
+ f_operator: this.$login.f.name,
1537
+ f_operatorid: this.$login.f.id
1538
+ }
1539
+ if (this.downModel.downWay === 'downWithSelf') {
1540
+ param.inputtor = this.downModel.downInputtor[0]
1541
+ }
1542
+ console.log('下发参数:', param)
1543
+ this.$resetpost('rs/logic/downHand', {data: param}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1544
+ // 将缓存的未抄表ID数组置空
1545
+ this.unhandplan = []
1546
+ this.initModal()
1547
+ this.search()
1548
+ this.$showAlert(`全部下发,总计下发${res.data}户`, 'success', 2000)
1549
+ }).catch((error) => {
1550
+ this.$showAlert(`下发失败,请注意查看,失败原因:${error}`, 'danger', 0)
1551
+ })
1552
+ },
1553
+ async examineconfirm () {
1554
+ let sqldata = `update t_handplan set f_audit_state ='审核中',f_examinereason='${this.examinerow.f_examinereason}' where id ='${this.examinerow.id}'`
1555
+ await this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: null})
1556
+ this.close()
1557
+ this.search()
1558
+ },
1559
+ // 关闭下发计划得弹出框
1560
+ close () {
1561
+ this.show = false
1562
+ this.inputtor_show = false
1563
+ this.downConfirm = false
1564
+ this.examineshow = false
1565
+ this.examinetype = false
1566
+ // 初始化模态框数据
1567
+ this.initModal()
1568
+ if (this.uploadshow) {
1569
+ this.uploadshow = false
1570
+ // 讲选的文件清空
1571
+ this.$refs.file.$el.querySelector('input').value = ''
1572
+ }
1573
+ },
1574
+ initModal () {
1575
+ this.downModel = {
1576
+ downDate: Vue.$login.toStandardDateString(),
1577
+ downWay: 'downWithUserfiles',
1578
+ downInputtor: []
1579
+ }
1580
+ this.inputtorModel = {
1581
+ inputtor: [],
1582
+ reason: ''
1583
+ }
1584
+ },
1585
+ // 判断当前登陆人是不是子公司的人员
1586
+ isHead () {
1587
+ return this.$login.f.parent.parent.name.includes('统一资源管理')
1588
+ },
1589
+ sort (field, rule) {
1590
+ // 将所有排序方式设为不排序,实现相互排斥
1591
+ for (let key in this.orderFields) {
1592
+ if (key === field) {
1593
+ this.orderFields[key] = rule
1594
+ } else {
1595
+ this.orderFields[key] = 'no'
1596
+ }
1597
+ }
1598
+ // 如果新规则不排序,还原为默认排序
1599
+ if (rule === 'no') {
1600
+ this.model.paramSource.orderitem = `'${this.orderDefault}'`
1601
+ } else {
1602
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
1603
+ }
1604
+ this.search()
1605
+ }
1606
+ },
1607
+ watch: {
1608
+ 'downModel.downWay' (val) {
1609
+ if (val === 'downWithSelf') {
1610
+ console.log('抄表员。。', this.inputtores2)
1611
+ if (this.inputtores2.length > 0) {
1612
+ this.downModel.downInputtor = [this.inputtores2[0].value]
1613
+ }
1614
+ }
1615
+ }
1616
+ },
1617
+ computed: {
1618
+ // 使用类型获取
1619
+ usetype () {
1620
+ return this.$appdata.getParam('使用类型')
1621
+ },
1622
+ getCondition () {
1623
+ // return {condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr}
1624
+ return {startDate: this.$refs.paged.$refs.criteria.model.startDate,
1625
+ endDate: this.$refs.paged.$refs.criteria.model.endDate,
1626
+ orderitem: this.orderDefault ? this.orderDefault : 'id',
1627
+ condition: this.condition2}
1628
+ },
1629
+
1630
+ inputtores () {
1631
+ // 获取抄表员
1632
+ console.log('获取抄表员', this.$login.f)
1633
+ let rs = []
1634
+ if (this.$login.f.f_gasman.length > 0) {
1635
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
1636
+ let temp = {
1637
+ label: this.$login.f.f_gasman[i].name,
1638
+ value: this.$login.f.f_gasman[i].name
1639
+ }
1640
+ rs.push(temp)
1641
+ }
1642
+ }
1643
+ this.inputtores2 = rs
1644
+ return [ ...rs]
1645
+ },
1646
+ whetherpaies () {
1647
+ return [
1648
+ {label: '全部', value: ''},
1649
+ {label: '已缴费', value: '是'},
1650
+ {label: '未缴费', value: '否'}
1651
+ ]
1652
+ },
1653
+ // 界面细节权限
1654
+ jurisdiction () {
1655
+ console.log('抄表界面细节', this.$login.r)
1656
+ return this.$login.r ? this.$login.r : []
1657
+ },
1658
+ firestates () {
1659
+ return [
1660
+ {label: '全部', value: ''},
1661
+ {label: '已点火', value: '1'},
1662
+ {label: '未点火', value: '0'}
1663
+ ]
1664
+ },
1665
+ ischecked () {
1666
+ return function (row) {
1667
+ for (let plan of this.plans) {
1668
+ if (plan.id == row.f_userfiles_id) {
1669
+ return plan.state
1670
+ }
1671
+ }
1672
+ }
1673
+ }
1674
+ },
1675
+ events: {
1676
+ onFileUpload: function (file, res) {
1677
+ if (this.upshow) {
1678
+ let data = {
1679
+ model: {
1680
+ f_operator: this.$login.f.name,
1681
+ f_end_date: this.$login.nextMonth20(this.$login.toStandardTimeString())
1682
+ },
1683
+ filepath: res.f_downloadpath
1684
+ }
1685
+ let http2 = new HttpResetClass()
1686
+ http2.load('POST', 'rs/logic/batchSettleFileupdate', data, {resolveMsg: null, rejectMsg: '上传失败'})
1687
+ this.uploadshow = false
1688
+ try {
1689
+ this.$showAlert(`文件上传成功,正在后台批量结算......`, 'success', 2000)
1690
+ } catch (error) {
1691
+ console.log('抄表已经超时请求(不影响其他!)')
1692
+ }
1693
+ // this.$showMessage(`一共上传${res.data.allsize}条数据, 成功${res.data.size}条, 失败下发${filenum}条`+";;失败数据:"+res.data.error.join(",")+";;抄表数过低数据:"+res.data.error2.join(",")+";;用气量超过2000: "+res.data.infoData.join(","));
1694
+ this.$parent.search()
1695
+ this.batchMeterShow = false
1696
+ // })
1697
+ return
1698
+ }
1699
+ let data = {
1700
+ model: {
1701
+ f_operator: this.$login.f.name,
1702
+ f_end_date: this.$login.nextMonth20(this.$login.toStandardTimeString())
1703
+ },
1704
+ filepath: res.path
1705
+ }
1706
+ if (res.f_downloadpath.includes('抄表数据')) {
1707
+ console.log('进入了抄表上传')
1708
+ let data1 = {
1709
+ filepath: res.f_downloadpath
1710
+ }
1711
+ this.$resetpost('rs/logic/upLoadHand', data1, {resolveMsg: null, rejectMsg: '上传失败'}, 0).then((res) => {
1712
+ // console.log('终于成功了', res)
1713
+ this.upshow = false
1714
+ // this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
1715
+ // this.$parent.search()
1716
+ })
1717
+ } else if (data.filepath.includes('先锋')) {
1718
+ this.$resetpost('rs/logic/xfimport', data, {resolveMsg: null, rejectMsg: '上传失败'}, 0).then((res) => {
1719
+ // console.log('终于成功了', res)
1720
+ this.uploadshow = false
1721
+ this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
1722
+ this.$parent.search()
1723
+ })
1724
+ } else if (data.filepath.includes('伦力')) {
1725
+ this.$resetpost('rs/logic/llimport', data, {resolveMsg: null, rejectMsg: '上传失败'}, 0).then((res) => {
1726
+ // console.log('终于成功了', res)
1727
+ this.uploadshow = false
1728
+ this.$showAlert(`一共上传${res.data.total}条数据, 成功${res.data.successnum}条, 未抄下发${res.data.nohandnum}条, 失败下发${res.data.failednum}条, 异常下发${res.data.exceptionnum}条`, 'success', 2000)
1729
+ this.$parent.search()
1730
+ })
1731
+ }
1732
+ }
1733
+ }
1734
+ }
1735
+ </script>
1736
+ <style lang="less" scoped>
1737
+ #handManager {
1738
+ display: flex;
1739
+ justify-content: space-around;
1740
+ align-items: center;
1741
+ .btn {
1742
+ margin: 0px;
1743
+ }
1744
+ }
1745
+
1746
+ .hand-loading {
1747
+ border: 3px solid #ccc;
1748
+ border-right-color: #337ab7;
1749
+ border-radius: 50%;
1750
+ animation: spin 0.6s linear;
1751
+ position: absolute;
1752
+ animation-iteration-count: infinite;
1753
+ top: 0;
1754
+ right: 50%;
1755
+ z-index: 2;
1756
+ display: block;
1757
+ width: 28px;
1758
+ height: 28px;
1759
+ line-height: 28px;
1760
+ text-align: center;
1761
+ pointer-events: none;
1762
+ }
1763
+
1764
+ @keyframes spin {
1765
+ 100% {
1766
+ transform: rotate(360deg);
1767
+ }
1768
+ }
1769
+ </style>