safecheck-client 3.0.34-5 → 3.0.34-7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) hide show
  1. package/.babelrc +5 -5
  2. package/.editorconfig +9 -9
  3. package/android.html +18 -18
  4. package/config/dev.env.js +6 -6
  5. package/config/index.js +38 -38
  6. package/config/prod.env.js +3 -3
  7. package/config/test.env.js +6 -6
  8. package/docs/AppBase.md +22 -22
  9. package/docs/Busy.md +14 -14
  10. package/docs/CriteriaPaged.md +47 -47
  11. package/docs/DataGrid.md +54 -54
  12. package/docs/DataModel.md +22 -22
  13. package/docs/Dynamic.md +42 -42
  14. package/docs/FormPrint.md +18 -18
  15. package/docs/GetParams.md +11 -11
  16. package/docs/GridTree.md +47 -47
  17. package/docs/HttpBusy.md +13 -13
  18. package/docs/HttpStore.md +29 -29
  19. package/docs/MessageBox.md +28 -28
  20. package/docs/PagedList.md +29 -29
  21. package/docs/Pager.md +21 -21
  22. package/docs/PrintFile.md +38 -38
  23. package/docs/Project.md +23 -23
  24. package/docs/Route.md +105 -105
  25. package/docs/SafetyCheck/AdjustPlan.md +13 -13
  26. package/docs/SafetyCheck/CheckerPlan.md +12 -12
  27. package/docs/Task.md +46 -46
  28. package/docs/TreeList.md +28 -28
  29. package/docs/TreeMixin.md +18 -18
  30. package/docs/all.md +10 -10
  31. package/docs/list.md +42 -42
  32. package/docs/partial.md +75 -75
  33. package/docs/selector.md +82 -82
  34. package/docs/tree.md +40 -40
  35. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/Snippets.md +28 -28
  36. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue-strap/345/217/230/346/233/264/350/256/260/345/275/225.md +7 -7
  37. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/vue/345/217/230/346/233/264/350/256/260/345/275/225.md +13 -13
  38. package/docs//345/274/200/345/217/221/346/226/207/346/241/243//345/274/200/345/217/221/347/216/257/345/242/203/350/256/276/347/275/256.md +77 -77
  39. package/docs//347/225/214/351/235/242/345/210/266/344/275/234/350/247/204/350/214/203.md +54 -54
  40. package/examples/AddressList/App.vue +13 -13
  41. package/examples/AddressList/index.html +11 -11
  42. package/examples/DispatchList/App.vue +10 -10
  43. package/examples/DispatchList/BaseTree.vue +13 -13
  44. package/examples/DispatchList/Init.vue +22 -22
  45. package/examples/DispatchList/Test.vue +20 -20
  46. package/examples/DispatchList/index.html +11 -11
  47. package/examples/DispatchList/main.js +18 -18
  48. package/home.html +16 -16
  49. package/package.json +1 -1
  50. package/publish.bat +7 -7
  51. package/release.bat +5 -5
  52. package/src/Widget.vue +13 -13
  53. package/src/android-bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  54. package/src/android-bootstrap/less/.csscomb.json +304 -304
  55. package/src/android-bootstrap/less/.csslintrc +19 -19
  56. package/src/android-bootstrap/less/alerts.less +73 -73
  57. package/src/android-bootstrap/less/badges.less +66 -66
  58. package/src/android-bootstrap/less/bootstrap.less +56 -56
  59. package/src/android-bootstrap/less/breadcrumbs.less +26 -26
  60. package/src/android-bootstrap/less/button-groups.less +247 -247
  61. package/src/android-bootstrap/less/buttons.less +173 -173
  62. package/src/android-bootstrap/less/carousel.less +269 -269
  63. package/src/android-bootstrap/less/close.less +34 -34
  64. package/src/android-bootstrap/less/code.less +69 -69
  65. package/src/android-bootstrap/less/component-animations.less +33 -33
  66. package/src/android-bootstrap/less/grid.less +84 -84
  67. package/src/android-bootstrap/less/input-groups.less +167 -167
  68. package/src/android-bootstrap/less/jumbotron.less +52 -52
  69. package/src/android-bootstrap/less/labels.less +64 -64
  70. package/src/android-bootstrap/less/list-group.less +141 -141
  71. package/src/android-bootstrap/less/media.less +66 -66
  72. package/src/android-bootstrap/less/mixins/alerts.less +14 -14
  73. package/src/android-bootstrap/less/mixins/background-variant.less +9 -9
  74. package/src/android-bootstrap/less/mixins/border-radius.less +18 -18
  75. package/src/android-bootstrap/less/mixins/buttons.less +69 -69
  76. package/src/android-bootstrap/less/mixins/center-block.less +7 -7
  77. package/src/android-bootstrap/less/mixins/clearfix.less +22 -22
  78. package/src/android-bootstrap/less/mixins/forms.less +90 -90
  79. package/src/android-bootstrap/less/mixins/gradients.less +59 -59
  80. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -92
  81. package/src/android-bootstrap/less/mixins/grid.less +122 -122
  82. package/src/android-bootstrap/less/mixins/hide-text.less +21 -21
  83. package/src/android-bootstrap/less/mixins/image.less +33 -33
  84. package/src/android-bootstrap/less/mixins/labels.less +12 -12
  85. package/src/android-bootstrap/less/mixins/list-group.less +30 -30
  86. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -10
  87. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -9
  88. package/src/android-bootstrap/less/mixins/opacity.less +8 -8
  89. package/src/android-bootstrap/less/mixins/pagination.less +24 -24
  90. package/src/android-bootstrap/less/mixins/panels.less +24 -24
  91. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -10
  92. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -8
  93. package/src/android-bootstrap/less/mixins/reset-text.less +18 -18
  94. package/src/android-bootstrap/less/mixins/resize.less +6 -6
  95. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -15
  96. package/src/android-bootstrap/less/mixins/size.less +10 -10
  97. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -9
  98. package/src/android-bootstrap/less/mixins/table-row.less +44 -44
  99. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -9
  100. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -8
  101. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -227
  102. package/src/android-bootstrap/less/mixins.less +40 -40
  103. package/src/android-bootstrap/less/modals.less +151 -151
  104. package/src/android-bootstrap/less/navbar.less +660 -660
  105. package/src/android-bootstrap/less/navs.less +290 -290
  106. package/src/android-bootstrap/less/normalize.less +424 -424
  107. package/src/android-bootstrap/less/pager.less +76 -76
  108. package/src/android-bootstrap/less/pagination.less +89 -89
  109. package/src/android-bootstrap/less/panels.less +274 -274
  110. package/src/android-bootstrap/less/popovers.less +131 -131
  111. package/src/android-bootstrap/less/print.less +101 -101
  112. package/src/android-bootstrap/less/progress-bars.less +87 -87
  113. package/src/android-bootstrap/less/responsive-embed.less +35 -35
  114. package/src/android-bootstrap/less/responsive-utilities.less +194 -194
  115. package/src/android-bootstrap/less/scaffolding.less +161 -161
  116. package/src/android-bootstrap/less/tables.less +262 -262
  117. package/src/android-bootstrap/less/theme.less +291 -291
  118. package/src/android-bootstrap/less/thumbnails.less +36 -36
  119. package/src/android-bootstrap/less/tooltip.less +102 -102
  120. package/src/android-bootstrap/less/type.less +303 -303
  121. package/src/android-bootstrap/less/utilities.less +55 -55
  122. package/src/android-bootstrap/less/variables.less +896 -896
  123. package/src/android-bootstrap/less/wells.less +29 -29
  124. package/src/androidTest.js +20 -20
  125. package/src/bootstrap/less/.csscomb.json +304 -304
  126. package/src/bootstrap/less/.csslintrc +19 -19
  127. package/src/bootstrap/less/alerts.less +73 -73
  128. package/src/bootstrap/less/badges.less +66 -66
  129. package/src/bootstrap/less/breadcrumbs.less +26 -26
  130. package/src/bootstrap/less/button-groups.less +247 -247
  131. package/src/bootstrap/less/buttons.less +172 -172
  132. package/src/bootstrap/less/carousel.less +269 -269
  133. package/src/bootstrap/less/close.less +34 -34
  134. package/src/bootstrap/less/code.less +69 -69
  135. package/src/bootstrap/less/component-animations.less +33 -33
  136. package/src/bootstrap/less/dropdowns.less +216 -216
  137. package/src/bootstrap/less/forms.less +626 -626
  138. package/src/bootstrap/less/grid.less +84 -84
  139. package/src/bootstrap/less/input-groups.less +167 -167
  140. package/src/bootstrap/less/jumbotron.less +52 -52
  141. package/src/bootstrap/less/labels.less +64 -64
  142. package/src/bootstrap/less/list-group.less +141 -141
  143. package/src/bootstrap/less/media.less +66 -66
  144. package/src/bootstrap/less/mixins/alerts.less +14 -14
  145. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  146. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  147. package/src/bootstrap/less/mixins/buttons.less +69 -69
  148. package/src/bootstrap/less/mixins/center-block.less +7 -7
  149. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  150. package/src/bootstrap/less/mixins/forms.less +90 -90
  151. package/src/bootstrap/less/mixins/gradients.less +59 -59
  152. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  153. package/src/bootstrap/less/mixins/grid.less +122 -122
  154. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  155. package/src/bootstrap/less/mixins/image.less +33 -33
  156. package/src/bootstrap/less/mixins/labels.less +12 -12
  157. package/src/bootstrap/less/mixins/list-group.less +30 -30
  158. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  159. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  160. package/src/bootstrap/less/mixins/opacity.less +8 -8
  161. package/src/bootstrap/less/mixins/pagination.less +24 -24
  162. package/src/bootstrap/less/mixins/panels.less +24 -24
  163. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  164. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  165. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  166. package/src/bootstrap/less/mixins/resize.less +6 -6
  167. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  168. package/src/bootstrap/less/mixins/size.less +10 -10
  169. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  170. package/src/bootstrap/less/mixins/table-row.less +44 -44
  171. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  172. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  173. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  174. package/src/bootstrap/less/mixins.less +40 -40
  175. package/src/bootstrap/less/modals.less +151 -151
  176. package/src/bootstrap/less/navbar.less +660 -660
  177. package/src/bootstrap/less/normalize.less +424 -424
  178. package/src/bootstrap/less/pager.less +76 -76
  179. package/src/bootstrap/less/pagination.less +89 -89
  180. package/src/bootstrap/less/panels.less +275 -275
  181. package/src/bootstrap/less/popovers.less +131 -131
  182. package/src/bootstrap/less/print.less +101 -101
  183. package/src/bootstrap/less/progress-bars.less +87 -87
  184. package/src/bootstrap/less/responsive-embed.less +35 -35
  185. package/src/bootstrap/less/responsive-utilities.less +194 -194
  186. package/src/bootstrap/less/scaffolding.less +161 -161
  187. package/src/bootstrap/less/theme.less +291 -291
  188. package/src/bootstrap/less/thumbnails.less +36 -36
  189. package/src/bootstrap/less/tooltip.less +102 -102
  190. package/src/bootstrap/less/type.less +303 -303
  191. package/src/bootstrap/less/utilities.less +55 -55
  192. package/src/bootstrap/less/wells.less +29 -29
  193. package/src/components/FileUpload.vue +696 -696
  194. package/src/components/Hello.vue +39 -39
  195. package/src/components/LeftTree.vue +27 -27
  196. package/src/components/android/AddGas.vue +147 -147
  197. package/src/components/android/AddressList.vue +61 -61
  198. package/src/components/android/AreaPlan.vue +566 -572
  199. package/src/components/android/AttendanceTally.vue +116 -116
  200. package/src/components/android/Blank.vue +10 -10
  201. package/src/components/android/CheckUnplanPage.vue +56 -56
  202. package/src/components/android/Checker.vue +12 -12
  203. package/src/components/android/CheckerAnnual.vue +81 -81
  204. package/src/components/android/CheckerAvarta.vue +82 -82
  205. package/src/components/android/CheckerMonthly.vue +84 -84
  206. package/src/components/android/EquipmentInspection.vue +348 -348
  207. package/src/components/android/FootprintMap.vue +120 -120
  208. package/src/components/android/HiddentroubleInvestigation.vue +192 -192
  209. package/src/components/android/LcheckUnplan.vue +108 -108
  210. package/src/components/android/MasterMain.vue +77 -77
  211. package/src/components/android/Menu.vue +132 -132
  212. package/src/components/android/NavBottom.vue +157 -157
  213. package/src/components/android/PaperAlarm.vue +85 -85
  214. package/src/components/android/PaperDeviceNoncivil.vue +214 -214
  215. package/src/components/android/PaperFeedback.vue +1481 -1481
  216. package/src/components/android/PaperFeedbackTemp.vue +1470 -1470
  217. package/src/components/android/PlumberAnnual.vue +83 -83
  218. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  219. package/src/components/android/PlumberMonthly.vue +84 -84
  220. package/src/components/android/PostMap.vue +83 -83
  221. package/src/components/android/QueryCheckHistory.vue +122 -122
  222. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  223. package/src/components/android/RepairMain.vue +60 -60
  224. package/src/components/android/Repairman.vue +12 -12
  225. package/src/components/android/SafePlanItem.vue +509 -509
  226. package/src/components/android/SafecheckDevices.vue +1 -1
  227. package/src/components/android/SafecheckDevicesTemp.vue +1333 -1333
  228. package/src/components/android/SafecheckOrderV.vue +2809 -2809
  229. package/src/components/android/StationMaster.vue +12 -12
  230. package/src/components/android/SwitchValve.vue +323 -323
  231. package/src/components/android/userinfo/SafecheckUserInfo.vue +776 -776
  232. package/src/components/checkerphonestate/Checker.vue +32 -32
  233. package/src/components/checkerphonestate/CheckerState.vue +97 -97
  234. package/src/components/defects/AddDefectModal.vue +120 -120
  235. package/src/components/defects/AddDevice.vue +95 -95
  236. package/src/components/defects/DefectModal.vue +101 -101
  237. package/src/components/defects/DevicesAndItem.vue +39 -39
  238. package/src/components/defects/DevicesSeting.vue +106 -106
  239. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  240. package/src/components/metterfiles/AddUserfiles.vue +246 -246
  241. package/src/components/metterfiles/MetterFiles.vue +104 -104
  242. package/src/components/notice/NoticeForm.vue +100 -100
  243. package/src/components/notice/NoticeIssue.vue +20 -20
  244. package/src/components/notice/NoticeQuery.vue +76 -76
  245. package/src/components/paper/PicViewer.vue +18 -18
  246. package/src/components/paper/RepairVerifyForm.vue +76 -76
  247. package/src/components/phonestate/DailyTraffic.vue +57 -57
  248. package/src/components/phonestate/LastKnownState.vue +74 -74
  249. package/src/components/phonestate/MonthlyTraffic.vue +66 -66
  250. package/src/components/phonestate/MonthlyTrafficRouter.vue +15 -15
  251. package/src/components/phonestate/PostMap.vue +82 -82
  252. package/src/components/querycheckpaper/PaperItem.vue +59 -59
  253. package/src/components/safecheckNew/android/SafecheckOrderV.vue +2731 -2731
  254. package/src/components/task/RepairAnnual.vue +79 -79
  255. package/src/components/task/RepairAnnualDetail.vue +49 -49
  256. package/src/components/task/RepairMonthly.vue +91 -91
  257. package/src/components/task/TaskAnnual.vue +77 -77
  258. package/src/components/task/TaskAnnualDetail.vue +47 -47
  259. package/src/components/task/TaskMonthly.vue +89 -89
  260. package/src/components/userfile/MeterFile.vue +145 -145
  261. package/src/components/userfile/MeterModify.vue +46 -46
  262. package/src/components/userfile/UserfileChange.vue +277 -277
  263. package/src/components/userfileaudit/MeterAuditFile.vue +129 -129
  264. package/src/filiale/baiyin/pc/checkUserList.vue +771 -771
  265. package/src/filiale/baiyin/pc.js +21 -21
  266. package/src/filiale/bayan/android/PaperFeedback.vue +1651 -1651
  267. package/src/filiale/bayan/android/SafecheckDevices.vue +1303 -1303
  268. package/src/filiale/bayan/android/SafecheckUserInfo.vue +863 -863
  269. package/src/filiale/dexin/android/SafecheckDevices.vue +1305 -1305
  270. package/src/filiale/hanzhong/android/PaperFeedback.vue +1477 -1477
  271. package/src/filiale/hanzhong/android/SafecheckDevices.vue +1313 -1313
  272. package/src/filiale/hanzhong/android/SafecheckUserInfo.vue +786 -786
  273. package/src/filiale/jiaxian/android/SafecheckDevices.vue +1298 -1298
  274. package/src/filiale/jingyang/android/PaperFeedback.vue +1493 -1493
  275. package/src/filiale/jingyang/android/SafecheckUserInfo.vue +781 -781
  276. package/src/filiale/pingxiang/android/PaperFeedback.vue +1399 -1399
  277. package/src/filiale/qingjian/android/SafecheckDevices.vue +1269 -1269
  278. package/src/filiale/qingjian/android/SafecheckUserInfo.vue +800 -800
  279. package/src/filiale/rongchuang/android/SafecheckOrderV.vue +2696 -2696
  280. package/src/filiale/shiquan/android/SafecheckDevices.vue +1269 -1269
  281. package/src/filiale/siyang/android/SafecheckUserInfo.vue +789 -789
  282. package/src/filiale/siyang/pc/NewCheckpaper.vue +1938 -1938
  283. package/src/filiale/siyang/pc/checkUserList.vue +786 -786
  284. package/src/filiale/siyang/pc.js +16 -16
  285. package/src/filiale/weinan/android/SafecheckDevices.vue +1295 -1295
  286. package/src/filiale/weinan/pc/DefectListNew.vue +617 -617
  287. package/src/filiale/weinan/pc/DefectMainNew.vue +63 -63
  288. package/src/filiale/weinan/pc.js +46 -46
  289. package/src/filiale/wuan/android/SafecheckOrderV.vue +2240 -2240
  290. package/src/filiale/wuan/android/SafecheckUserInfo.vue +592 -592
  291. package/src/filiale/yangchunboneng/android/CurrentCreate.vue +1192 -1200
  292. package/src/filiale/yangchunboneng/android/DailyworkloadQuery.vue +472 -480
  293. package/src/filiale/yangchunboneng/android/PaperFeedback.vue +1731 -1731
  294. package/src/filiale/yangchunboneng/android/SafecheckDevices.vue +1 -1
  295. package/src/filiale/yangchunboneng/android/SafecheckUserInfo.vue +887 -887
  296. package/src/filiale/yangchunboneng/android/safeHistoryLook.vue +473 -481
  297. package/src/filiale/yangchunboneng/pc/CheckBookUser.vue +269 -269
  298. package/src/filiale/yangchunboneng/pc/DefectPaperNew.vue +1128 -1128
  299. package/src/filiale/yangchunboneng/pc/PaperDefectMain.vue +972 -972
  300. package/src/filiale/yangchunboneng/pc/PaperList.vue +773 -773
  301. package/src/filiale/yongzhou/android/PaperFeedback.vue +1519 -1519
  302. package/src/filiale/yongzhou/android/SafecheckDevices.vue +1294 -1294
  303. package/src/filiale/yongzhou/android/SafecheckUserInfo.vue +776 -776
  304. package/src/filiale/yuansheng/android/SwitchValve.vue +322 -322
  305. package/src/filiale/yuansheng/android.js +17 -17
  306. package/src/filiale/yunchengminsheng/android/PaperFeedback.vue +1508 -1508
  307. package/src/filiale/yunchengminsheng/android/SafecheckDevices.vue +1270 -1270
  308. package/src/filiale/yunchengminsheng/android/SafecheckUserInfo.vue +784 -784
  309. package/src/plugins/LoadData.js +10 -10
  310. package/src/plugins/LoadParams.js +24 -24
  311. package/src/stores/wxconfig.js +10 -10
  312. package/src/utils/getNowDate.js +33 -33
  313. package/test/e2e/custom-assertions/elementCount.js +26 -26
  314. package/test/e2e/nightwatch.conf.js +40 -40
  315. package/test/e2e/runner.js +30 -30
  316. package/test/e2e/specs/test.js +13 -13
  317. package/test/unit/.eslintrc +5 -5
  318. package/test/unit/TestUtil.js +62 -62
  319. package/test/unit/context.html +20 -20
  320. package/test/unit/index.js +13 -13
@@ -1,1128 +1,1128 @@
1
- <template>
2
- <div class="flex">
3
- <work-busy :is-busy="isbusy"></work-busy>
4
- <criteria-paged :model="model" v-ref:paged>
5
- <criteria partial='criteria' @condition-changed='$parent.search' v-ref:criteria>
6
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
- <div class="row" v-show="!$parent.$parent.$parent.showItem">
8
- <div :class="$parent.$parent.style">
9
- <label class="font_normal_body">模糊查询</label>
10
- <input style="width: 60%" type="text" class="input_search" v-model="model.f_userinfo"
11
- id="f_userinfo"
12
- placeholder="编号 名称 电话 地址"
13
- condition="(f_userinfo_code like '%{}%' or f_user_name like '%{}%' or f_user_phone like '%{}%' or f_address like '%{}%' or f_zuhu_phone like '%${}%' or f_rent_phone like '%${}%')">
14
- </div>
15
- <div :class="$parent.$parent.style">
16
- <label class="font_normal_body">安检计划</label>
17
- <input type="text" class="input_search" v-model="$parent.$parent.f_check_plan.f_plan_name"
18
- @click="$parent.$parent.showChooser"
19
- style="width: 60%" placeholder="安检计划" readonly="readonly">
20
- </div>
21
- <div :class="$parent.$parent.style" v-show="false">
22
- <label class="font_normal_body">存在隐患</label>
23
- <v-select style="width:60% "
24
- class="select select_list"
25
- :value.sync="model.f_has_defect"
26
- v-model="model.f_has_defect"
27
- :options='$parent.$parent.hasDefectOptions'
28
- :placeholder='model.f_has_defect'
29
- condition="f_has_defect = '{}'"
30
- close-on-select>
31
- </v-select>
32
- </div>
33
- <div :class="$parent.$parent.style">
34
- <label class="font_normal_body">用户编号</label>
35
- <input type="text" class="input_search" v-model="model.f_userinfo_code"
36
- condition="f_userinfo_code = '{}'"
37
- style="width: 60%" placeholder="用户编号">
38
- </div>
39
- <div :class="$parent.$parent.style">
40
- <label class="font_normal_body">完成情况</label>
41
- <v-select
42
- placeholder='完成情况查询'
43
- :value-single="true"
44
- class="select select_list" style="width: 60%"
45
- v-model='model.f_is_repair'
46
- :value.sync="model.f_is_repair"
47
- :options='$parent.$parent.repaired'
48
- condition="f_is_repair = '{}'"
49
- close-on-select clear-button> </v-select>
50
- </div>
51
- <div :class="$parent.$parent.style">
52
- <label class="font_normal_body">处理情况</label>
53
- <v-select
54
- placeholder='处理情况查询'
55
- :value-single="true"
56
- class="select select_list" style="width: 60%"
57
- v-model='model.f_is_deal'
58
- :value.sync="model.f_is_deal"
59
- :options='$parent.$parent.deals'
60
- condition="f_is_deal = '{}'"
61
- close-on-select clear-button> </v-select>
62
- </div>
63
- <div class=" col-sm-4 form-group button-range" >
64
- <div class="span" style="float: right;margin-top: 8px">
65
- <div style="float: right" class="button_spacing"
66
- :class="{'button_shrink_left':$parent.$parent.$parent.showItem,'button_shrink_right':!$parent.$parent.$parent.showItem}"
67
- @click="$parent.$parent.hiddenr()"></div>
68
- <div style="float: right" class="button_spacing"
69
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
70
- @click="$parent.$parent.hidden()"></div>
71
- <button style="float: right" class="button_search button_spacing" @click="search">查询</button>
72
- <button style="float: right" v-if="$parent.$parent.transfer=='是'" class="button_search button_spacing" @click="$parent.$parent.toRepair">转维修</button>
73
- <div style="float: right">
74
- <export-excel-safe :data="{condition: $parent.$parent.model.condition,f_filialeids:$parent.$parent.model.f_filialeids,f_defect_content:$parent.$parent.model.f_defect_content}"
75
- :field="$parent.$parent.getfield"
76
- progress="safeGetExportProgress"
77
- sqlurl="rs/logic/SafeExportExcel" sql-name="GetCheckPaperByDefectNew" template-name='安检隐患明细' :choose-col="true"></export-excel-safe>
78
- </div>
79
- </div>
80
- </div>
81
- </div>
82
- <div class="row" v-show="$parent.$parent.criteriaShow&&!$parent.$parent.$parent.showItem">
83
- <div :class="$parent.$parent.style">
84
- <label class="font_normal_body">片&emsp;&emsp;区</label>
85
- <v-select class="select_list select"
86
- placeholder='片区/管理站' style="width: 60%"
87
- :value.sync="model.f_slice_area" v-model="model.f_slice_area"
88
- :options='$parent.$parent.sliceArea'
89
- filer-key="name"
90
- close-on-select clear-button
91
- condition="f_slice_area='{}'"
92
- @change="$parent.$parent.getmeterbook(model.f_slice_area)"
93
- :value-single="true">
94
- </v-select>
95
- </div>
96
- <div :class="$parent.$parent.style2" style="margin: 0">
97
- <role-selector-safe
98
- role-name="安检员"
99
- role-lable="安&nbsp;检&nbsp;员&nbsp;"
100
- :resobjprop.sync="$parent.$parent.resids"
101
- @re-res="$parent.$parent.getRes"
102
- :value.sync="model.f_checker_id"
103
- v-model="model.f_checker_id"
104
- condition="f_checker_name = '{}'">
105
- </role-selector-safe>
106
- </div>
107
-
108
- <div :class="$parent.$parent.style">
109
- <label class="font_normal_body">抄&ensp;表&ensp;册</label>
110
- <v-select class="select_list select"
111
- placeholder='抄表册' style="width: 60%"
112
- :value.sync="model.f_meter_book_num" v-model="model.f_meter_book_num"
113
- :options='$parent.$parent.cbc'
114
- filer-key="name"
115
- close-on-select clear-button
116
- condition="f_meter_book_num={}"
117
- :value-single="true">
118
- </v-select>
119
- </div>
120
- <div :class="$parent.$parent.style">
121
- <label class="font_normal_body">起始时间</label>
122
- <datepicker
123
- placeholder='起始时间' style="width:60%"
124
- :disabled-days-of-week="[]"
125
- :format="'yyyy-MM-dd'"
126
- :show-rest-button="reset"
127
- :value.sync="model.f_start_time"
128
- v-model="model.f_start_time"
129
- condition="f_offsite_time >= '{} 00:00:00'">
130
- </datepicker>
131
- </div>
132
- <div :class="$parent.$parent.style">
133
- <label class="font_normal_body">结束时间</label>
134
- <datepicker
135
- placeholder='结束时间' style="width:60%"
136
- :disabled-days-of-week="[]"
137
- :format="'yyyy-MM-dd'"
138
- :show-rest-button="reset"
139
- :value.sync="model.f_end_time"
140
- v-model="model.f_end_time"
141
- condition="f_offsite_time <= '{} 23:59:59'">
142
- </datepicker>
143
- </div>
144
-
145
-
146
- </div>
147
- <div class="row" v-show="$parent.$parent.criteriaShow&&!$parent.$parent.$parent.showItem">
148
-
149
- <div :class="$parent.$parent.style">
150
- <label class="font_normal_body">维&ensp;修&ensp;员</label>
151
- <input type="text" class="input_search" v-model="model.f_repairman"
152
- condition="f_repairman = '{}'"
153
- style="width: 60%" placeholder="维修员">
154
- </div>
155
- <div :class="$parent.$parent.style">
156
- <label class="font_normal_body">用户名称</label>
157
- <input type="text" class="input_search" v-model="model.f_user_name"
158
- condition="f_user_name = '{}'"
159
- style="width: 60%" placeholder="用户名称">
160
- </div>
161
- <div :class="$parent.$parent.style" >
162
- <label class="font_normal_body">通气开始</label>
163
- <datepicker
164
- :value.sync="model.f_gas_start"
165
- placeholder='首次通气时间' style="width: 60%"
166
- :disabled-days-of-week="[]"
167
- :format="'yyyy-MM-dd'"
168
- :show-rest-button="reset"
169
- v-model="model.f_gas_start"
170
- condition="f_uservent_date >='{} 00:00:00'">
171
- </datepicker>
172
- </div>
173
- <div :class="$parent.$parent.style" >
174
- <label class="font_normal_body">通气结束</label>
175
- <datepicker
176
- :value.sync="model.f_gas_end"
177
- placeholder='首次通气时间' style="width: 60%"
178
- :disabled-days-of-week="[]"
179
- :format="'yyyy-MM-dd'"
180
- :show-rest-button="reset"
181
- v-model="model.f_gas_end"
182
- condition="f_uservent_date <= '{} 23:59:59'">
183
- </datepicker>
184
- </div>
185
- </div>
186
-
187
-
188
-
189
- <div class="row" v-show="$parent.$parent.$parent.showItem">
190
- <div :class="$parent.$parent.style">
191
- <label class="font_normal_body">安检计划</label>
192
- <input type="text" class="input_search" v-model="$parent.$parent.f_check_plan.f_plan_name"
193
- @click="$parent.$parent.showChooser"
194
- style="width: 60%" placeholder="安检计划" readonly="readonly">
195
- </div>
196
- <div :class="$parent.$parent.style" v-show="false">
197
- <label class="font_normal_body">存在隐患</label>
198
- <v-select style="width:60% "
199
- class="select select_list"
200
- :value.sync="model.f_has_defect"
201
- v-model="model.f_has_defect"
202
- :options='$parent.$parent.hasDefectOptions'
203
- :placeholder='model.f_has_defect'
204
- condition="f_has_defect = '{}'"
205
- close-on-select>
206
- </v-select>
207
- </div>
208
- <div class="row" v-show="$parent.$parent.$parent.showItem">
209
- <div :class="$parent.$parent.style">
210
- <label class="font_normal_body">用户编号</label>
211
- <input type="text" class="input_search" v-model="model.f_userinfo_code"
212
- condition="f_userinfo_code = '{}'"
213
- style="width: 60%" placeholder="用户编号">
214
- </div>
215
-
216
- <div class=" col-sm-4 form-group button-range">
217
- <div class="span" style="float: right;margin-top: 8px;margin-right: 50px">
218
- <div style="float: right" class="button_spacing"
219
- :class="{'button_shrink_left':$parent.$parent.$parent.showItem,'button_shrink_right':!$parent.$parent.$parent.showItem}"
220
- @click="$parent.$parent.hiddenr()"></div>
221
- <div style="float: right" class="button_spacing"
222
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
223
- @click="$parent.$parent.hidden()"></div>
224
- <button style="float: right" class="button_search button_spacing" @click="search">查询</button>
225
- <button style="float: right" v-if="$parent.$parent.transfer=='是'" class="button_search button_spacing" @click="$parent.$parent.toRepair">转维修</button>
226
- <div style="float: right">
227
- <export-excel-old :data="{condition: $parent.$parent.model.condition,f_filialeids:$parent.$parent.model.f_filialeids}"
228
- :field="$parent.$parent.getfield"
229
- progress="safeGetExportProgress"
230
- sqlurl="rs/logic/SafeExportExcel" sql-name="GetCheckPaperByDefectNew" template-name='安检计划明细' :choose-col="true"></export-excel-old>
231
- </div>
232
- </div>
233
- </div>
234
-
235
- </div>
236
-
237
- <div :class="$parent.$parent.style">
238
- <label class="font_normal_body">完成情况</label>
239
- <v-select
240
- placeholder='完成情况查询'
241
- :value-single="true"
242
- class="select select_list" style="width: 60%"
243
- v-model='model.f_repaired'
244
- :value.sync="model.f_repaired"
245
- :options='$parent.$parent.repaired'
246
- condition="f_repaired = '{}'"
247
- close-on-select clear-button> </v-select>
248
- </div>
249
- <div :class="$parent.$parent.style">
250
- <label class="font_normal_body">处理情况</label>
251
- <v-select
252
- placeholder='处理情况查询'
253
- :value-single="true"
254
- class="select select_list" style="width: 60%"
255
- v-model='model.f_is_deal'
256
- :value.sync="model.f_is_deal"
257
- :options='$parent.$parent.deals'
258
- condition="f_is_deal = '{}'"
259
- close-on-select clear-button> </v-select>
260
- </div>
261
- <div :class="$parent.$parent.style2" style="margin: 0">
262
- <role-selector-safe
263
- role-name="安检员"
264
- :resobjprop.sync="$parent.$parent.resids"
265
- role-lable="安&nbsp;检&nbsp;员&nbsp;"
266
- @re-res="$parent.$parent.getRes"
267
- :value.sync="model.f_checker_id"
268
- v-model="model.f_checker_id"
269
- condition="f_checker_name = '{}'">
270
- </role-selector-safe>
271
- </div>
272
- </div>
273
- <div class="row" v-show="$parent.$parent.criteriaShow && $parent.$parent.$parent.showItem">
274
- <div :class="$parent.$parent.style">
275
- <label class="font_normal_body">片&emsp;&emsp;区</label>
276
- <v-select class="select_list select"
277
- placeholder='片区/管理站' style="width: 60%"
278
- :value.sync="model.f_slice_area" v-model="model.f_slice_area"
279
- :options='$parent.$parent.sliceArea'
280
- filer-key="name"
281
- close-on-select clear-button
282
- condition="f_slice_area='{}'"
283
- @change="$parent.$parent.getmeterbook(model.f_slice_area)"
284
- :value-single="true">
285
- </v-select>
286
- </div>
287
- <div :class="$parent.$parent.style">
288
- <label class="font_normal_body">抄&ensp;表&ensp;册</label>
289
- <v-select class="select_list select"
290
- placeholder='抄表册' style="width: 60%"
291
- :value.sync="model.f_meter_book_num" v-model="model.f_meter_book_num"
292
- :options='$parent.$parent.cbc'
293
- filer-key="name"
294
- close-on-select clear-button
295
- condition="f_meter_book_num={}"
296
- :value-single="true">
297
- </v-select>
298
- </div>
299
- <div :class="$parent.$parent.style">
300
- <label class="font_normal_body">起始时间</label>
301
- <datepicker
302
- placeholder='起始时间' style="width:60%"
303
- :disabled-days-of-week="[]"
304
- :format="'yyyy-MM-dd'"
305
- :show-rest-button="reset"
306
- :value.sync="model.f_start_time"
307
- v-model="model.f_start_time"
308
- condition="f_offsite_time >= '{} 00:00:00'">
309
- </datepicker>
310
- </div>
311
- <div :class="$parent.$parent.style">
312
- <label class="font_normal_body">结束时间</label>
313
- <datepicker
314
- placeholder='结束时间' style="width:60%"
315
- :disabled-days-of-week="[]"
316
- :format="'yyyy-MM-dd'"
317
- :show-rest-button="reset"
318
- :value.sync="model.f_end_time"
319
- v-model="model.f_end_time"
320
- condition="f_offsite_time <= '{} 23:59:59'">
321
- </datepicker>
322
- </div>
323
- </div>
324
- <div class="row" v-show="$parent.$parent.criteriaShow && $parent.$parent.$parent.showItem">
325
- <div :class="$parent.$parent.style">
326
- <label class="font_normal_body">维&ensp;修&ensp;员</label>
327
- <input type="text" class="input_search" v-model="model.f_repairman"
328
- condition="f_repairman = '{}'"
329
- style="width: 60%" placeholder="维修员">
330
- </div>
331
- <div :class="$parent.$parent.style">
332
- <label class="font_normal_body">用户名称</label>
333
- <input type="text" class="input_search" v-model="model.f_user_name"
334
- condition="f_user_name = '{}'"
335
- style="width: 60%" placeholder="用户名称">
336
- </div>
337
- <div :class="$parent.$parent.style" >
338
- <label class="font_normal_body">通气开始</label>
339
- <datepicker
340
- :value.sync="model.f_gas_start"
341
- placeholder='首次通气时间' style="width: 60%"
342
- :disabled-days-of-week="[]"
343
- :format="'yyyy-MM-dd'"
344
- :show-rest-button="reset"
345
- v-model="model.f_gas_start"
346
- condition="f_uservent_date >='{} 00:00:00'">
347
- </datepicker>
348
- </div>
349
- <div :class="$parent.$parent.style" >
350
- <label class="font_normal_body">通气结束</label>
351
- <datepicker
352
- :value.sync="model.f_gas_end"
353
- placeholder='首次通气时间' style="width: 60%"
354
- :disabled-days-of-week="[]"
355
- :format="'yyyy-MM-dd'"
356
- :show-rest-button="reset"
357
- v-model="model.f_gas_end"
358
- condition="f_uservent_date <= '{} 23:59:59'">
359
- </datepicker>
360
- </div>
361
- </div>
362
- </div>
363
- </criteria>
364
- <data-grid :model="model" partial='list' v-ref:grid class="list_area table_sy">
365
- <template partial='head'>
366
- <tr>
367
- <th v-if="$parent.$parent.$parent.transfer=='是'"><nobr><!--<input type="checkbox" v-model="$parent.$parent.$parent.checkAll" @click.stop="()=>{return}" />-->选择</nobr></th>
368
- <th><nobr>入户状态</nobr></th>
369
- <th><nobr>用户编号</nobr></th>
370
- <th><nobr>用户名</nobr></th>
371
- <th><nobr>用户电话</nobr></th>
372
- <th><nobr>用户小区</nobr></th>
373
- <th><nobr>用户地址</nobr></th>
374
- <th>
375
- <nobr>通气时间</nobr>
376
- </th>
377
- <th><nobr>安检时间</nobr></th>
378
- <th><nobr>安检员</nobr></th>
379
- <th><nobr>计划名</nobr></th>
380
- <th><nobr>是否有隐患</nobr></th>
381
- <th><nobr>隐患数</nobr></th>
382
- <th><nobr>处理数</nobr></th>
383
- <th><nobr>完成数</nobr></th>
384
- <th><nobr>处理情况</nobr></th>
385
- <th><nobr>完成情况</nobr></th>
386
- <!-- <th><nobr>维修情况</nobr></th>-->
387
- <th><nobr>维修员</nobr></th>
388
- <th><nobr>隐患明细</nobr></th>
389
- </tr>
390
- </template>
391
- <template partial='body'>
392
- <td v-if="$parent.$parent.$parent.transfer=='是'" style="text-align: center;white-space:nowrap;"><input type="checkbox" v-if="row.f_defect_count>row.f_deal_count && (row.f_defect_count - row.f_repair_count) > row.zxzg_count" @click="$event.cancelBubble=true" :checked="$parent.$parent.$parent.isChecked(row.id)" @change="$parent.$parent.$parent.setCheckes(row.id)"></input></td>
393
- <td style="text-align: center;white-space:nowrap;">{{row.f_entry_status}}</td>
394
- <td style="text-align: center;white-space:nowrap;">{{row.f_userinfo_code}}</td>
395
- <td style="text-align: center;white-space:nowrap;">{{row.f_user_name}}</td>
396
- <td style="text-align: center;white-space:nowrap;">{{row.f_user_phone}}</td>
397
- <td style="text-align: center;white-space:nowrap;">{{row.f_residential_area}}</td>
398
- <td style="text-align: center;white-space:nowrap;">{{row.f_address}}</td>
399
- <td style="text-align: center;white-space:nowrap;">{{row.f_uservent_date}}</td>
400
- <td style="text-align: center;white-space:nowrap;">{{row.f_offsite_time}}</td>
401
- <td style="text-align: center;white-space:nowrap;">{{row.f_checker_name}}</td>
402
- <td style="text-align: center;white-space:nowrap;">{{row.f_plan_name}}</td>
403
- <td style="text-align: center;white-space:nowrap;">{{row.f_has_defect}}</td>
404
- <td style="text-align: center;white-space:nowrap;">{{row.f_defect_count}}</td>
405
- <td style="text-align: center;white-space:nowrap;">{{row.f_deal_count}}</td>
406
- <td style="text-align: center;white-space:nowrap;">{{row.f_repair_count}}</td>
407
- <td style="text-align: center;white-space:nowrap;">{{row.f_is_deal}}</td>
408
- <td style="text-align: center;white-space:nowrap;">{{row.f_is_repair}}</td>
409
- <!-- <td style="text-align: center;white-space:nowrap;">{{row.f_repaired}}</td>-->
410
- <td style="text-align: center;white-space:nowrap;">{{row.f_repairman}}</td>
411
- <td style="text-align: center;white-space:nowrap;"><span :title="$parent.$parent.$parent.trouble(row.f_defect_content)" style="display: block;max-width: 300px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{ $parent.$parent.$parent.trouble(row.f_defect_content)}}</span></td>
412
- </template>
413
- </data-grid>
414
- </criteria-paged>
415
-
416
- <modal :show.sync="showModal" v-ref:modal>
417
- <div slot="modal-header" class="modal-header">
418
- <h4 class="modal-title">
419
- 选择计划
420
- </h4>
421
- </div>
422
- <div slot="modal-body" class="modal-body">
423
- <plan-chooser :f.sync="this.$login.f" v-ref:chooser></plan-chooser>
424
- </div>
425
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
426
- <button class="button_search" @click="ok">确认</button>
427
- <button class="button_search" @click="cancel">取消</button>
428
- </div>
429
- </modal>
430
- <modal :show.sync="showModal2" :backdrop="false">
431
- <div slot="modal-header" class="modal-header">
432
- <h4 class="modal-title">
433
- 转维修
434
- </h4>
435
- </div>
436
- <div slot="modal-body" class="modal-body">
437
- <div v-if="true">
438
- <div class="row" style="margin-top: 10px">
439
- <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">派发类型</label>
440
- <div class="col-xs-8 col-md-8">
441
- <v-select :value.sync="selectData.dispatchType" :value-single="true" v-model="selectData.dispatchType"
442
- :options='dispatchTypeOptions' placeholder='派发类型'
443
- close-on-select>
444
- </v-select>
445
- </div>
446
- </div>
447
- <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType=='派发给维修员'">
448
- <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">维&ensp;修&ensp;员</label>
449
- <div class="col-xs-8 col-md-8">
450
- <v-select
451
- :value.sync="selectData.f_repairman"
452
- :value-single="true"
453
- :options='repairers'
454
- placeholder='请选择维修员'
455
- close-on-select></v-select>
456
- </div>
457
- </div>
458
- <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType=='派发给站点'">
459
- <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">站&ensp;&ensp;&ensp;&ensp;点</label>
460
- <div class="col-xs-8 col-md-8">
461
- <right-tree
462
- islist
463
- :userid="userid"
464
- :source="'dep=this.getParentByType($organization$).getSpecialResByType($department$),tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))'"
465
- @re-res="getSiteRes"></right-tree>
466
- </div>
467
- </div>
468
- <div class="row" style="margin-top: 10px">
469
- <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">报修类型</label>
470
- <div class="col-xs-8 col-md-8">
471
- <v-select :value.sync="selectData.f_repairtype" style="width:60%"
472
- class="select select_list"
473
- :value-single="true"
474
- :options='repairTypeOptions'
475
- close-on-select>
476
- </v-select>
477
- </div>
478
- </div>
479
- <div class="row" style="margin-top: 10px">
480
- <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注</label>
481
- <div class="col-xs-8 col-md-8">
482
- <textarea style="width: 60%; height: 100px" v-model="selectData.f_remarks"></textarea>
483
- </div>
484
- </div>
485
- </div>
486
- </div>
487
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
488
- <button class="button_search" @click="rectification">转维修</button>
489
- <button class="button_search" @click="cancel1">取消</button>
490
- </div>
491
- </modal>
492
- <modal :show.sync="showModal3">
493
- <div slot="modal-header" class="modal-header">
494
- <h4 class="modal-title">
495
- 转维修进度{{ progressbarWidth }}%
496
- </h4>
497
- </div>
498
- <div slot="modal-body" class="modal-body">
499
- <div class="progress">
500
- <div class="progress-bar" role="progressbar" aria-valuenow="60"
501
- aria-valuemin="0" aria-valuemax="100" :style="'width:'+ progressbarWidth+'%'">
502
- <!-- <span class="sr-only">40% 完成</span>-->
503
- </div>
504
- </div>
505
- </div>
506
- <div slot="modal-footer" class="modal-footer" style="text-align: center" v-show="false"></div>
507
- </modal>
508
- </div>
509
- </template>
510
- <script>
511
- import {PagedList} from 'vue-client'
512
- import HttpResetClass from "vue-client/src/plugins/HttpResetClass";
513
- import co from 'co'
514
- import Vue from 'vue'
515
- import * as Util from '../../../components/Util'
516
-
517
- let select = function* (self) {
518
- let http = new HttpResetClass()
519
- let getGasman = yield http.load('POST', '/rs/search', {
520
- source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1))',
521
- userid: self.$login.f.id
522
- }, {resolveMsg: null, rejectMsg: null})
523
- //tag
524
- self.checkersid.push({label: '全部', value: ''})
525
- getGasman.data.forEach((checker) => {
526
- self.checkersid.push({label: checker.name, value: checker.name})
527
- })
528
- }
529
- export default {
530
- title: '隐患查询',
531
- data() {
532
- let model = new PagedList('rs/sql/GetCheckPaperByDefectNew', 20, {
533
- f_filialeids: 'this.f_filialeids',f_defect_content: 'this.f_defect_content'
534
- })
535
- model.f_filialeids = '(' + this.$login.f.orgid + ')'
536
- model.f_defect_content="CASE WHEN CHARINDEX( '\"result\":\"正常\"', f_defect_content ) > 0 THEN '无隐患' ELSE replace(replace(replace( replace( RIGHT ( f_defect_content, len( f_defect_content ) - 26 ), substring('{}',2,1), '' ), substring('{}',1,1), '' ),']',''),'\"','') END"
537
- return {
538
- repaired:[{label: '全部', value: ''},{label: '未完成', value: '未完成'}, {label: '已完成', value: '已完成'}],
539
- deals:[{label: '全部', value: ''},{label: '未处理', value: '未处理'}, {label: '已处理', value: '已处理'}],
540
- hasDefectOptions: [{label: '全部', value: ''}, {label: '有隐患', value: '有隐患'}, {label: '无隐患', value: '无隐患'}],
541
- f: this.$login.f,
542
- model: model,
543
- criteriaShow: false,
544
- checkAll:false,
545
- timercount:0,
546
- showModal2:false,
547
- repairTypeOptions:this.$appdata.getParam('报修类型'),
548
- dispatchTypeOptions: [{label: '派发给站点', value: '派发给站点'},{label: '派发给维修员', value: '派发给维修员'}],
549
- checkes:[],
550
- showModal: false,
551
- f_check_plan: {f_plan_name: '', id: ''},
552
- sumsmodel: {},
553
- resids:{},
554
- all: false,
555
- fields: {},
556
-
557
- selectData:{
558
- dispatchType:'',
559
- f_repairman:'',
560
- f_remarks:'',
561
- f_repairtype:''
562
- },
563
- progressbarWidth:'0',
564
- modelval: [],
565
- isbusy:false,
566
- transfer: null,
567
- checkersid: [],
568
- showModal3:false,
569
- toRepairCount:0,
570
- sliceArea: [],
571
- callSends:[],
572
- cbc:[],
573
- repairedOptions:[{label: '全部', value: ''},{label: '已修', value: '已修'}, {label: '未修', value: '未修'}],
574
- repairers:[],
575
- cbcs:[],
576
- thead: '',
577
- headData: ['入户状态','用户编号','用户名','用户电话','用户小区','用户地址','通气时间','安检时间','安检员','计划名','是否有隐患','隐患数','隐患明细','处理数','完成数','处理情况','完成情况','维修员'],
578
- bodyData: ['f_entry_status','f_userinfo_code','f_user_name','f_user_phone','f_residential_area','f_address','f_uservent_date','f_offsite_time','f_checker_name','f_plan_name','f_has_defect','f_defect_count','f_defect_content','f_deal_count','f_repair_count','f_is_deal','f_is_repair','f_repairman'],
579
- }
580
- },
581
- props:{
582
- style: {
583
- type: String,
584
- default: 'col-sm-2 form-group'
585
- },
586
- style2: {
587
- type: String,
588
- default: 'col-sm-4 form-group'
589
- }
590
-
591
- },
592
-
593
- methods: {
594
- getSiteRes(obj) {
595
- console.log('siteRes ---> ')
596
- console.log(obj)
597
- if(obj.resids[0]){
598
- this.selectData.f_meetunit = obj.res.join('.')
599
- this.selectData.f_reciever = obj.resids.join('.')
600
- this.selectData.f_outlets = obj.res[obj.res.length - 1]
601
- }else {
602
- this.selectData.f_meetunit = ''
603
- this.selectData.f_reciever = ''
604
- this.selectData.f_outlets = ''
605
- }
606
- },
607
- trouble(val) {
608
- // return val.replaceAll("'",'')
609
- // .replaceAll("\"",'')
610
- // .replaceAll("{",'')
611
- // .replaceAll("}",'')
612
- // .replaceAll("]",'')
613
- // .replaceAll("[",'')
614
- // .replaceAll("result:",'')
615
- // .replaceAll("data:",'')
616
- // .replaceAll("有隐患",'')
617
- // .replaceAll(",",'')
618
-
619
-
620
- const defect_content = JSON.parse(val)
621
- let result = ''
622
- if (defect_content.data) {
623
- const jsonData = defect_content.data
624
- for (const itemdata of jsonData) {
625
- const keys = Object.keys(itemdata)
626
- for (const itm of keys) {
627
- const value = itemdata[itm]
628
- result += itm + ':' + value
629
- }
630
- }
631
- }
632
- return result
633
- },
634
- getEmp() {
635
- let val = {source: 'this.getParentByType($organization$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$)!=null ).where(row.getAttributes().get($rolestr$).indexOf($维修员$) != -1))', userid: `${this.$login.f.id}`}
636
- let http = new HttpResetClass()
637
- http.load('POST', '/rs/search', {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
638
- let str=''
639
- res.data.forEach((item,idx,arr) => {
640
- //tag
641
- if(idx+1==arr.length){
642
- str += item.id
643
- }else{
644
- str += item.id+','
645
- }
646
-
647
- })
648
- let http1 = new HttpResetClass()
649
- http1.load('POST', 'rs/sql/tel_singleTable_OrderBy', {
650
- data: {
651
- items: 'id,f_user_telephone',
652
- tablename: 't_user',
653
- condition: `id in (${str})`,
654
- orderitem: 'id'
655
- }
656
- }, {resolveMsg: null, rejectMsg: null}).then((ress) => {
657
-
658
- res.data.forEach((user)=>{
659
- try {
660
- ress.data.forEach((tel,tidx,arr)=>{
661
- //tag
662
- if(user.id==tel.id){
663
- this.repairers.push({label: `${user.name}:${tel.f_user_telephone}`, value: user.name})
664
- ress.data.splice(tidx,1)
665
- //tag
666
- throw new Error("跳出循环");
667
- }
668
- })
669
- }catch (e) {
670
- //tag
671
- }
672
- })
673
- })
674
-
675
- })
676
- },
677
- toRepair(){
678
- if(this.checkes.length==0){
679
- return this.$showMessage('请先选择需要转维修的用户!')
680
- }
681
- this.showModal2=true
682
- },
683
- async rectification(){
684
-
685
- if(this.selectData.dispatchType){
686
- if(this.selectData.dispatchType=='派发给站点'){
687
- if(!this.selectData.f_reciever){
688
- this.$showMessage('请选择部门!')
689
- return
690
- }
691
- }else{
692
- if(!this.selectData.f_repairman){
693
- this.$showMessage('请选择维修员!')
694
- return
695
- }
696
- }
697
- }else {
698
- this.$showMessage('请选择派发类型!')
699
- return
700
- }
701
-
702
- if(!this.selectData.f_repairtype){
703
- this.$showMessage('请选择报修类型!')
704
- return
705
- }
706
- this.showModal3=true
707
- let act={}
708
- let toRepair=''
709
- let successCount=0
710
- if(this.selectData.dispatchType=='派发给站点'){
711
- act={f_meetunit:this.selectData.f_meetunit,f_reciever:this.selectData.f_reciever,f_service_acitivity_type:'派单'}
712
- toRepair=null
713
- }else{
714
- console.log('派发给维修员---------'+this.selectData.f_repairman)
715
- act={f_meetunit:'',f_reciever:this.selectData.f_repairman,f_service_acitivity_type:'派单'}
716
- toRepair='一级派单'
717
- }
718
- let rep={
719
- loginUser: {
720
- name: this.$login.f.name,
721
- ename: this.$login.f.ename
722
- },
723
- f_meetunit: this.$login.f.deps,
724
- f_attendant: this.$login.f.name,
725
- f_outlets: this.$login.f.deps,
726
- f_remarks: this.selectData.f_remarks,
727
- f_repairtype: this.selectData.f_repairtype,
728
- toRepair: toRepair,
729
- activity:act
730
- }
731
- for(let i=0; i<this.checkes.length; i++){
732
- try {
733
- let result =await new HttpResetClass().load('post','/rs/logic/phoneUploadRectification', {
734
- id:this.checkes[i],
735
- repData:rep,
736
- source:'pc'
737
- }, {resolveMsg: null, rejectMsg: null})
738
- if (result.data.code==200) {
739
- successCount += result.data.successcon
740
- this.progressbarWidth=Math.ceil((i+1)*100/(this.checkes.length))
741
- }
742
- }catch (e) {
743
- this.showModal3=false
744
- this.$showMessage('网络异常,请稍后再试!')
745
- return
746
- }
747
- }
748
- this.showModal3=false
749
- this.cancel1()
750
- this.$showMessage('本次转维修成功'+successCount+'单')
751
- },
752
- /*async rectification(){
753
- this.isbusy =true
754
- console.log("----this.checkes",this.checkes.toString())
755
- console.log("----this.getcon()",this.getcon())
756
- if(this.checkes.length==0){
757
- return this.$showMessage('请先选择需要转维修的用户!')
758
- }
759
- // if (this.checkAll){
760
- let data={
761
- f_filialeids: this.model.params.f_filialeids,
762
- f_defect_content: this.model.params.f_defect_content,
763
- condition: `${this.model.params.condition} and id in(${this.getcon()})`
764
- }
765
- let res1= await new HttpResetClass().load('post','rs/sql/GetCheckPaperByDefectNew',{data: data })
766
- for (let i = 0; i < res1.data.length; i++) {
767
- let data1={
768
- f_paper_id: res1.data[i].id,
769
- condition:`f_repaire_type = '隐患未处理'`
770
- }
771
- let res2 = await new HttpResetClass().load('POST' , 'rs/sql/GetDefectByPaperIdNew' , {data: data1 } )
772
- //tag
773
- if(res2.data.length==0){
774
- continue
775
- }
776
- const uploadData = {
777
- model: {
778
- serviceacitivity: [{
779
- f_service_acitivity_type: '派单'
780
- }],
781
- f_repairitems: {},
782
- failure: '',
783
- f_source: '安检',
784
- f_service_id: '',
785
- f_contact_phone: res1.data[i].f_user_phone,
786
- f_meetunit: this.$login.f.deps,
787
- f_phone: '',
788
- f_user_name: res1.data[i].f_user_name,
789
- f_address: res1.data[i].f_address,
790
- f_repair_date: Util.getNowDate(),
791
- f_reciever: '',
792
- f_remarks: this.selectData.f_remarks,
793
- f_user_type: res1.data[i].f_check_type,
794
- f_area: '',
795
- f_unit_name: '',
796
- f_street: res1.data[i].f_street,
797
- f_residential_area: res1.data[i].f_residential_area,
798
- f_building: res1.data[i].f_building,
799
- f_unit: res1.data[i].f_unit,
800
- f_floor: res1.data[i].f_floor,
801
- f_room: res1.data[i].f_room,
802
- aState: '',
803
- f_repairtype: this.selectData.f_repairtype,
804
- f_userinfo_id: res1.data[i].f_userinfo_id,
805
- f_userinfo_code: res1.data[i].f_userinfo_code,
806
- f_orgstr: res1.data[i].f_filialeid,
807
- f_outlets: '',
808
- f_attendant: this.$login.f.name
809
- },
810
- loginUser: {
811
- name: this.$login.f.name,
812
- ename: this.$login.f.ename
813
- },
814
- user: {
815
- f_userinfo_id: res1.data[i].f_userinfo_id
816
- },
817
- callObj: null
818
- }
819
- uploadData.model.serviceacitivity[0].f_reciever = this.selectData.f_repairman
820
- // uploadData.model.f_meetunit = self.$login.f.orgpathnames
821
- // uploadData.model.f_orgstr = self.$login.f.orgpathstr
822
- // uploadData.model.f_outlets = self.$login.f.f_parentname
823
- uploadData.model.f_orgid = this.$login.f.orgid
824
- uploadData.model.f_filiale = this.$login.f.org
825
- uploadData.model.f_outlets = this.$login.f.deps
826
- uploadData.model.f_filiale_id = this.$login.f.orgid
827
- uploadData.toRepair = '一级派单'
828
- // let res3 = await new HttpResetClass().load('post','/rs/sql/GetUserForRepaireNew', {data: {f_userinfo_id: res1.data[i].f_userinfo_id}})
829
- // uploadData.model = Object.assign(uploadData.model, res3.data[0])
830
- let failure = []
831
- res2.data.forEach(row => {
832
- console.log('row.f_item_value',row.f_item_value)
833
- failure.push({
834
- f_failure_type: row.f_item_name,
835
- failurecase: row.f_item_value?row.f_item_value.split(','):''
836
- })
837
- })
838
- uploadData.model.failure = failure
839
- // 拼接repairitems
840
- let rows = JSON.parse(JSON.stringify(res2.data))
841
- let repairitems = {
842
- data: []
843
- }
844
- let safecheckOptions = [{"data": "已处理"}, {"data": "未处理"}]
845
- // 取隐患未处理的
846
- rows = rows.filter(row => row.f_repaire_type == '隐患未处理')
847
- //tag)
848
- // 开始拼接
849
- rows.forEach(row => {
850
- let existIndex = -1
851
- // 判断该设备是否已经存在
852
- for (let i = 0; i < repairitems.data.length; i++) {
853
- if (repairitems.data[i].f_type == row.f_device_type) {
854
- existIndex = i
855
- break
856
- }
857
- }
858
- if (existIndex == -1) {
859
- // 不存在则新建
860
- let newItem = {
861
- f_type: row.f_device_type,
862
- details: [{
863
- f_defect_id: row.id,
864
- f_project: `${row.f_item_name}:${row.f_item_value}`,
865
- type: 'selector',
866
- options: safecheckOptions
867
- }]
868
- }
869
- repairitems.data.push(newItem)
870
- } else {
871
- // 存在则追加
872
- repairitems.data[existIndex].details.push({
873
- f_defect_id: row.id,
874
- f_project: `${row.f_item_name}:${row.f_item_value}`,
875
- type: 'selector',
876
- options: safecheckOptions
877
- })
878
- }
879
- })
880
- uploadData.model.f_repairitems = repairitems
881
- uploadData.rows=rows
882
- //tag)
883
- //tag
884
- console.log('uploadData---', uploadData)
885
- if (uploadData.model.f_repairitems.data.length>0){
886
- this.callSends.push(uploadData)
887
- }else{
888
- //tag
889
- }
890
- }
891
- //tag)
892
- let timer = setInterval(async ()=>{
893
- this.showModal3=true
894
- this.isbusy=false
895
- if (this.timercount<this.callSends.length){
896
- //tag)
897
- let rows=this.callSends[this.timercount].rows
898
- //tag)
899
- let result = await this.$resetpost('/rs/logic/callerSend1', this.callSends[this.timercount])
900
- //tag)
901
- if (result.data.f_service_id) {
902
- const data = {
903
- f_paper_id: rows[0].f_paper_id,
904
- f_service_id: result.data.f_service_id,
905
- itemsId: this.$login.convertToIn(rows.map(row => row.id))
906
- }
907
- //tag
908
- let updateRes = await this.$resetpost('/rs/logic/updateDefectStateNew', data)
909
- }
910
- this.toRepairCount++
911
- //tag
912
- this.timercount++
913
- }else{
914
- clearInterval(timer)
915
- //tag
916
- this.callSends=[]
917
- this.timercount=0
918
- this.showModal3=false
919
- this.cancel1()
920
- this.$showMessage('本次转维修成功'+this.toRepairCount+'单')
921
- this.toRepairCount=0
922
- }
923
- }, 3000)
924
- },*/
925
- cancel1(){
926
- this.showModal2=false
927
- this.selectData={
928
- dispatchType:'',
929
- f_repairman:'',
930
- f_remarks:'',
931
- f_repairtype:''
932
- }
933
- },
934
- sleep(d){
935
- //tag)
936
- var t = Date.now()
937
- while(Date.now - t <= d){
938
-
939
- }
940
- //tag)
941
- },
942
- isChecked(v) {
943
- // 如果全选,不在的按选中算,否则,在的按选中算
944
- if (this.checkAll) {
945
- return this.checkes.indexOf(v) == -1
946
- } else {
947
- return this.checkes.indexOf(v) != -1
948
- }
949
- },
950
- setCheckAll() {
951
- this.checkAll=this.checkAll?false:true;
952
- // 全选改变后,清空选中数据
953
- this.checkes = []
954
- },
955
- setCheckes(id) {
956
- let index=this.checkes.indexOf(id)
957
- if(index<0){
958
- this.checkes.push(id)
959
- }else{
960
- this.checkes.splice(index,1)
961
- }
962
- },
963
-
964
- getmeterbook(val){
965
- this.cbc=[]
966
- this.cbc.push({
967
- label:'全部',
968
- value:''
969
- })
970
- if (val==''){
971
-
972
- this.cbcs.forEach(res=>{
973
- this.cbc.push({
974
- label:res.f_book_name,
975
- value:res.id
976
- })
977
- })
978
- }else{
979
- this.cbcs.forEach(res=>{
980
- if (res.f_book_slice_area==val){
981
- this.cbc.push({
982
- label:res.f_book_name,
983
- value:res.id
984
- })
985
- }
986
- })
987
- }
988
- },
989
-
990
- Mreadibook(val){
991
- //tag
992
- //tag
993
- this.sliceArea=[]
994
- if (val){
995
- new HttpResetClass().load('POST',`/rs/sql/tel_singleTable_OrderBy`, {data: {
996
- items: 'name',
997
- tablename: 't_zone',
998
- condition: `parentid in ${val}`,
999
- orderitem: 'id'
1000
- }}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1001
- this.sliceArea.push({
1002
- label:'全部',
1003
- value:''
1004
- })
1005
- res.data.forEach(ress=>{
1006
- this.sliceArea.push({
1007
- label:ress.name,
1008
- value:ress.name
1009
- })
1010
- })
1011
-
1012
- })
1013
- }
1014
- },
1015
- getAllMeterBook(val){
1016
- //tag
1017
- //tag
1018
- this.cbcs=[]
1019
- if (val){
1020
- new HttpResetClass().load('POST',`/rs/sql/tel_singleTable_OrderBy`, {data: {
1021
- items: 'f_book_name,f_book_slice_area,id',
1022
- tablename: 't_meter_book',
1023
- condition: `f_filiale_id in ${val}`,
1024
- orderitem: 'id'
1025
- }}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1026
- res.data.forEach(ress=>{
1027
- this.cbcs.push({
1028
- id:ress.id,
1029
- f_book_name:ress.f_book_name,
1030
- f_book_slice_area:ress.f_book_slice_area
1031
- })
1032
- })
1033
- this.cbc=[]
1034
- this.cbc.push({
1035
- label:'全部',
1036
- value:''
1037
- })
1038
- this.cbcs.forEach(res=>{
1039
- this.cbc.push({
1040
- label:res.f_book_name,
1041
- value:res.id
1042
- })
1043
- })
1044
- })
1045
- }
1046
- },
1047
- hiddenr() {
1048
- this.$parent.showItem = !this.$parent.showItem
1049
- },
1050
- hidden() {
1051
- this.criteriaShow = !this.criteriaShow
1052
- },
1053
- search(args) {
1054
- //tag
1055
- if (this.f_check_plan.f_plan_name) {
1056
- args.condition += ` and f_check_plan_id = '${this.f_check_plan.id}'`
1057
- }
1058
- this.checkes = []
1059
- this.checkAll=false
1060
- this.model.search(args.condition, args.model)
1061
- },
1062
- getRes(obj) {
1063
- //tag
1064
- this.resids = {res:obj.res[0], resids:obj.resids[0]}
1065
- this.model.f_filialeids = this.$login.convertToIn(obj.resids);
1066
- this.Mreadibook(this.model.f_filialeids)
1067
- this.getAllMeterBook(this.model.f_filialeids)
1068
- },
1069
- showChooser() {
1070
- this.showModal = true
1071
- },
1072
- ok() {
1073
- this.showModal = false
1074
- if (this.$refs.modal.$children[0].selectedRow.id) {
1075
- this.f_check_plan = this.$refs.modal.$children[0].selectedRow
1076
- }
1077
- },
1078
- cancel() {
1079
- this.showModal = false
1080
- this.f_check_plan = {f_plan_name: '', id: ''}
1081
- }
1082
- },
1083
- ready() {
1084
- //tag
1085
- this.transfer=Vue.$appdata.getSingleValue('安检转工单')
1086
- this.$refs.paged.$refs.criteria.model.f_has_defect = '有隐患'
1087
- this.getEmp()
1088
- let gen = select(this)
1089
- // this.Mreadibook(`('${this.$login.f.orgid}')`)
1090
- co(gen)
1091
- },
1092
- watch:{
1093
- 'timercount'(){
1094
- if (this.timercount===0){
1095
- this.progressbarWidth = '0'
1096
- }else {
1097
- //tag
1098
- //tag
1099
- this.progressbarWidth=parseInt(this.timercount*100/(this.callSends.length+1))
1100
- }
1101
-
1102
- }
1103
- },
1104
- computed: {
1105
- selected() {
1106
- return this.$refs.paged.$refs.grid.selected
1107
- },
1108
- getfield () {
1109
- //tag
1110
- let data = {}
1111
- this.bodyData.forEach((value, index) => {
1112
- data[this.bodyData[index]] = this.headData[index]
1113
- })
1114
- //合计字段打印
1115
- this.tfoot = `<tr><th colspan=${this.modelval.length}>全表汇总信息: `
1116
- if (this.sumsmodel) {
1117
- Object.keys(this.sumsmodel).forEach((key) => {
1118
- this.tfoot += this.fields[key] + '合计: ' + `<font color="blue">${this.sumsmodel[key]} </font>`
1119
- })
1120
- } else {
1121
- this.tfoot += '暂无'
1122
- }
1123
- this.tfoot += '</th></tr>'
1124
- return data
1125
- }
1126
- }
1127
- }
1128
- </script>
1
+ <template>
2
+ <div class="flex">
3
+ <work-busy :is-busy="isbusy"></work-busy>
4
+ <criteria-paged :model="model" v-ref:paged>
5
+ <criteria partial='criteria' @condition-changed='$parent.search' v-ref:criteria>
6
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <div class="row" v-show="!$parent.$parent.$parent.showItem">
8
+ <div :class="$parent.$parent.style">
9
+ <label class="font_normal_body">模糊查询</label>
10
+ <input style="width: 60%" type="text" class="input_search" v-model="model.f_userinfo"
11
+ id="f_userinfo"
12
+ placeholder="编号 名称 电话 地址"
13
+ condition="(f_userinfo_code like '%{}%' or f_user_name like '%{}%' or f_user_phone like '%{}%' or f_address like '%{}%' or f_zuhu_phone like '%${}%' or f_rent_phone like '%${}%')">
14
+ </div>
15
+ <div :class="$parent.$parent.style">
16
+ <label class="font_normal_body">安检计划</label>
17
+ <input type="text" class="input_search" v-model="$parent.$parent.f_check_plan.f_plan_name"
18
+ @click="$parent.$parent.showChooser"
19
+ style="width: 60%" placeholder="安检计划" readonly="readonly">
20
+ </div>
21
+ <div :class="$parent.$parent.style" v-show="false">
22
+ <label class="font_normal_body">存在隐患</label>
23
+ <v-select style="width:60% "
24
+ class="select select_list"
25
+ :value.sync="model.f_has_defect"
26
+ v-model="model.f_has_defect"
27
+ :options='$parent.$parent.hasDefectOptions'
28
+ :placeholder='model.f_has_defect'
29
+ condition="f_has_defect = '{}'"
30
+ close-on-select>
31
+ </v-select>
32
+ </div>
33
+ <div :class="$parent.$parent.style">
34
+ <label class="font_normal_body">用户编号</label>
35
+ <input type="text" class="input_search" v-model="model.f_userinfo_code"
36
+ condition="f_userinfo_code = '{}'"
37
+ style="width: 60%" placeholder="用户编号">
38
+ </div>
39
+ <div :class="$parent.$parent.style">
40
+ <label class="font_normal_body">完成情况</label>
41
+ <v-select
42
+ placeholder='完成情况查询'
43
+ :value-single="true"
44
+ class="select select_list" style="width: 60%"
45
+ v-model='model.f_is_repair'
46
+ :value.sync="model.f_is_repair"
47
+ :options='$parent.$parent.repaired'
48
+ condition="f_is_repair = '{}'"
49
+ close-on-select clear-button> </v-select>
50
+ </div>
51
+ <div :class="$parent.$parent.style">
52
+ <label class="font_normal_body">处理情况</label>
53
+ <v-select
54
+ placeholder='处理情况查询'
55
+ :value-single="true"
56
+ class="select select_list" style="width: 60%"
57
+ v-model='model.f_is_deal'
58
+ :value.sync="model.f_is_deal"
59
+ :options='$parent.$parent.deals'
60
+ condition="f_is_deal = '{}'"
61
+ close-on-select clear-button> </v-select>
62
+ </div>
63
+ <div class=" col-sm-4 form-group button-range" >
64
+ <div class="span" style="float: right;margin-top: 8px">
65
+ <div style="float: right" class="button_spacing"
66
+ :class="{'button_shrink_left':$parent.$parent.$parent.showItem,'button_shrink_right':!$parent.$parent.$parent.showItem}"
67
+ @click="$parent.$parent.hiddenr()"></div>
68
+ <div style="float: right" class="button_spacing"
69
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
70
+ @click="$parent.$parent.hidden()"></div>
71
+ <button style="float: right" class="button_search button_spacing" @click="search">查询</button>
72
+ <button style="float: right" v-if="$parent.$parent.transfer=='是'" class="button_search button_spacing" @click="$parent.$parent.toRepair">转维修</button>
73
+ <div style="float: right">
74
+ <export-excel-safe :data="{condition: $parent.$parent.model.condition,f_filialeids:$parent.$parent.model.f_filialeids,f_defect_content:$parent.$parent.model.f_defect_content}"
75
+ :field="$parent.$parent.getfield"
76
+ progress="safeGetExportProgress"
77
+ sqlurl="rs/logic/SafeExportExcel" sql-name="GetCheckPaperByDefectNew" template-name='安检隐患明细' :choose-col="true"></export-excel-safe>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ <div class="row" v-show="$parent.$parent.criteriaShow&&!$parent.$parent.$parent.showItem">
83
+ <div :class="$parent.$parent.style">
84
+ <label class="font_normal_body">片&emsp;&emsp;区</label>
85
+ <v-select class="select_list select"
86
+ placeholder='片区/管理站' style="width: 60%"
87
+ :value.sync="model.f_slice_area" v-model="model.f_slice_area"
88
+ :options='$parent.$parent.sliceArea'
89
+ filer-key="name"
90
+ close-on-select clear-button
91
+ condition="f_slice_area='{}'"
92
+ @change="$parent.$parent.getmeterbook(model.f_slice_area)"
93
+ :value-single="true">
94
+ </v-select>
95
+ </div>
96
+ <div :class="$parent.$parent.style2" style="margin: 0">
97
+ <role-selector-safe
98
+ role-name="安检员"
99
+ role-lable="安&nbsp;检&nbsp;员&nbsp;"
100
+ :resobjprop.sync="$parent.$parent.resids"
101
+ @re-res="$parent.$parent.getRes"
102
+ :value.sync="model.f_checker_id"
103
+ v-model="model.f_checker_id"
104
+ condition="f_checker_name = '{}'">
105
+ </role-selector-safe>
106
+ </div>
107
+
108
+ <div :class="$parent.$parent.style">
109
+ <label class="font_normal_body">抄&ensp;表&ensp;册</label>
110
+ <v-select class="select_list select"
111
+ placeholder='抄表册' style="width: 60%"
112
+ :value.sync="model.f_meter_book_num" v-model="model.f_meter_book_num"
113
+ :options='$parent.$parent.cbc'
114
+ filer-key="name"
115
+ close-on-select clear-button
116
+ condition="f_meter_book_num={}"
117
+ :value-single="true">
118
+ </v-select>
119
+ </div>
120
+ <div :class="$parent.$parent.style">
121
+ <label class="font_normal_body">起始时间</label>
122
+ <datepicker
123
+ placeholder='起始时间' style="width:60%"
124
+ :disabled-days-of-week="[]"
125
+ :format="'yyyy-MM-dd'"
126
+ :show-rest-button="reset"
127
+ :value.sync="model.f_start_time"
128
+ v-model="model.f_start_time"
129
+ condition="f_offsite_time >= '{} 00:00:00'">
130
+ </datepicker>
131
+ </div>
132
+ <div :class="$parent.$parent.style">
133
+ <label class="font_normal_body">结束时间</label>
134
+ <datepicker
135
+ placeholder='结束时间' style="width:60%"
136
+ :disabled-days-of-week="[]"
137
+ :format="'yyyy-MM-dd'"
138
+ :show-rest-button="reset"
139
+ :value.sync="model.f_end_time"
140
+ v-model="model.f_end_time"
141
+ condition="f_offsite_time <= '{} 23:59:59'">
142
+ </datepicker>
143
+ </div>
144
+
145
+
146
+ </div>
147
+ <div class="row" v-show="$parent.$parent.criteriaShow&&!$parent.$parent.$parent.showItem">
148
+
149
+ <div :class="$parent.$parent.style">
150
+ <label class="font_normal_body">维&ensp;修&ensp;员</label>
151
+ <input type="text" class="input_search" v-model="model.f_repairman"
152
+ condition="f_repairman = '{}'"
153
+ style="width: 60%" placeholder="维修员">
154
+ </div>
155
+ <div :class="$parent.$parent.style">
156
+ <label class="font_normal_body">用户名称</label>
157
+ <input type="text" class="input_search" v-model="model.f_user_name"
158
+ condition="f_user_name = '{}'"
159
+ style="width: 60%" placeholder="用户名称">
160
+ </div>
161
+ <div :class="$parent.$parent.style" >
162
+ <label class="font_normal_body">通气开始</label>
163
+ <datepicker
164
+ :value.sync="model.f_gas_start"
165
+ placeholder='首次通气时间' style="width: 60%"
166
+ :disabled-days-of-week="[]"
167
+ :format="'yyyy-MM-dd'"
168
+ :show-rest-button="reset"
169
+ v-model="model.f_gas_start"
170
+ condition="f_uservent_date >='{} 00:00:00'">
171
+ </datepicker>
172
+ </div>
173
+ <div :class="$parent.$parent.style" >
174
+ <label class="font_normal_body">通气结束</label>
175
+ <datepicker
176
+ :value.sync="model.f_gas_end"
177
+ placeholder='首次通气时间' style="width: 60%"
178
+ :disabled-days-of-week="[]"
179
+ :format="'yyyy-MM-dd'"
180
+ :show-rest-button="reset"
181
+ v-model="model.f_gas_end"
182
+ condition="f_uservent_date <= '{} 23:59:59'">
183
+ </datepicker>
184
+ </div>
185
+ </div>
186
+
187
+
188
+
189
+ <div class="row" v-show="$parent.$parent.$parent.showItem">
190
+ <div :class="$parent.$parent.style">
191
+ <label class="font_normal_body">安检计划</label>
192
+ <input type="text" class="input_search" v-model="$parent.$parent.f_check_plan.f_plan_name"
193
+ @click="$parent.$parent.showChooser"
194
+ style="width: 60%" placeholder="安检计划" readonly="readonly">
195
+ </div>
196
+ <div :class="$parent.$parent.style" v-show="false">
197
+ <label class="font_normal_body">存在隐患</label>
198
+ <v-select style="width:60% "
199
+ class="select select_list"
200
+ :value.sync="model.f_has_defect"
201
+ v-model="model.f_has_defect"
202
+ :options='$parent.$parent.hasDefectOptions'
203
+ :placeholder='model.f_has_defect'
204
+ condition="f_has_defect = '{}'"
205
+ close-on-select>
206
+ </v-select>
207
+ </div>
208
+ <div class="row" v-show="$parent.$parent.$parent.showItem">
209
+ <div :class="$parent.$parent.style">
210
+ <label class="font_normal_body">用户编号</label>
211
+ <input type="text" class="input_search" v-model="model.f_userinfo_code"
212
+ condition="f_userinfo_code = '{}'"
213
+ style="width: 60%" placeholder="用户编号">
214
+ </div>
215
+
216
+ <div class=" col-sm-4 form-group button-range">
217
+ <div class="span" style="float: right;margin-top: 8px;margin-right: 50px">
218
+ <div style="float: right" class="button_spacing"
219
+ :class="{'button_shrink_left':$parent.$parent.$parent.showItem,'button_shrink_right':!$parent.$parent.$parent.showItem}"
220
+ @click="$parent.$parent.hiddenr()"></div>
221
+ <div style="float: right" class="button_spacing"
222
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
223
+ @click="$parent.$parent.hidden()"></div>
224
+ <button style="float: right" class="button_search button_spacing" @click="search">查询</button>
225
+ <button style="float: right" v-if="$parent.$parent.transfer=='是'" class="button_search button_spacing" @click="$parent.$parent.toRepair">转维修</button>
226
+ <div style="float: right">
227
+ <export-excel-old :data="{condition: $parent.$parent.model.condition,f_filialeids:$parent.$parent.model.f_filialeids}"
228
+ :field="$parent.$parent.getfield"
229
+ progress="safeGetExportProgress"
230
+ sqlurl="rs/logic/SafeExportExcel" sql-name="GetCheckPaperByDefectNew" template-name='安检计划明细' :choose-col="true"></export-excel-old>
231
+ </div>
232
+ </div>
233
+ </div>
234
+
235
+ </div>
236
+
237
+ <div :class="$parent.$parent.style">
238
+ <label class="font_normal_body">完成情况</label>
239
+ <v-select
240
+ placeholder='完成情况查询'
241
+ :value-single="true"
242
+ class="select select_list" style="width: 60%"
243
+ v-model='model.f_repaired'
244
+ :value.sync="model.f_repaired"
245
+ :options='$parent.$parent.repaired'
246
+ condition="f_repaired = '{}'"
247
+ close-on-select clear-button> </v-select>
248
+ </div>
249
+ <div :class="$parent.$parent.style">
250
+ <label class="font_normal_body">处理情况</label>
251
+ <v-select
252
+ placeholder='处理情况查询'
253
+ :value-single="true"
254
+ class="select select_list" style="width: 60%"
255
+ v-model='model.f_is_deal'
256
+ :value.sync="model.f_is_deal"
257
+ :options='$parent.$parent.deals'
258
+ condition="f_is_deal = '{}'"
259
+ close-on-select clear-button> </v-select>
260
+ </div>
261
+ <div :class="$parent.$parent.style2" style="margin: 0">
262
+ <role-selector-safe
263
+ role-name="安检员"
264
+ :resobjprop.sync="$parent.$parent.resids"
265
+ role-lable="安&nbsp;检&nbsp;员&nbsp;"
266
+ @re-res="$parent.$parent.getRes"
267
+ :value.sync="model.f_checker_id"
268
+ v-model="model.f_checker_id"
269
+ condition="f_checker_name = '{}'">
270
+ </role-selector-safe>
271
+ </div>
272
+ </div>
273
+ <div class="row" v-show="$parent.$parent.criteriaShow && $parent.$parent.$parent.showItem">
274
+ <div :class="$parent.$parent.style">
275
+ <label class="font_normal_body">片&emsp;&emsp;区</label>
276
+ <v-select class="select_list select"
277
+ placeholder='片区/管理站' style="width: 60%"
278
+ :value.sync="model.f_slice_area" v-model="model.f_slice_area"
279
+ :options='$parent.$parent.sliceArea'
280
+ filer-key="name"
281
+ close-on-select clear-button
282
+ condition="f_slice_area='{}'"
283
+ @change="$parent.$parent.getmeterbook(model.f_slice_area)"
284
+ :value-single="true">
285
+ </v-select>
286
+ </div>
287
+ <div :class="$parent.$parent.style">
288
+ <label class="font_normal_body">抄&ensp;表&ensp;册</label>
289
+ <v-select class="select_list select"
290
+ placeholder='抄表册' style="width: 60%"
291
+ :value.sync="model.f_meter_book_num" v-model="model.f_meter_book_num"
292
+ :options='$parent.$parent.cbc'
293
+ filer-key="name"
294
+ close-on-select clear-button
295
+ condition="f_meter_book_num={}"
296
+ :value-single="true">
297
+ </v-select>
298
+ </div>
299
+ <div :class="$parent.$parent.style">
300
+ <label class="font_normal_body">起始时间</label>
301
+ <datepicker
302
+ placeholder='起始时间' style="width:60%"
303
+ :disabled-days-of-week="[]"
304
+ :format="'yyyy-MM-dd'"
305
+ :show-rest-button="reset"
306
+ :value.sync="model.f_start_time"
307
+ v-model="model.f_start_time"
308
+ condition="f_offsite_time >= '{} 00:00:00'">
309
+ </datepicker>
310
+ </div>
311
+ <div :class="$parent.$parent.style">
312
+ <label class="font_normal_body">结束时间</label>
313
+ <datepicker
314
+ placeholder='结束时间' style="width:60%"
315
+ :disabled-days-of-week="[]"
316
+ :format="'yyyy-MM-dd'"
317
+ :show-rest-button="reset"
318
+ :value.sync="model.f_end_time"
319
+ v-model="model.f_end_time"
320
+ condition="f_offsite_time <= '{} 23:59:59'">
321
+ </datepicker>
322
+ </div>
323
+ </div>
324
+ <div class="row" v-show="$parent.$parent.criteriaShow && $parent.$parent.$parent.showItem">
325
+ <div :class="$parent.$parent.style">
326
+ <label class="font_normal_body">维&ensp;修&ensp;员</label>
327
+ <input type="text" class="input_search" v-model="model.f_repairman"
328
+ condition="f_repairman = '{}'"
329
+ style="width: 60%" placeholder="维修员">
330
+ </div>
331
+ <div :class="$parent.$parent.style">
332
+ <label class="font_normal_body">用户名称</label>
333
+ <input type="text" class="input_search" v-model="model.f_user_name"
334
+ condition="f_user_name = '{}'"
335
+ style="width: 60%" placeholder="用户名称">
336
+ </div>
337
+ <div :class="$parent.$parent.style" >
338
+ <label class="font_normal_body">通气开始</label>
339
+ <datepicker
340
+ :value.sync="model.f_gas_start"
341
+ placeholder='首次通气时间' style="width: 60%"
342
+ :disabled-days-of-week="[]"
343
+ :format="'yyyy-MM-dd'"
344
+ :show-rest-button="reset"
345
+ v-model="model.f_gas_start"
346
+ condition="f_uservent_date >='{} 00:00:00'">
347
+ </datepicker>
348
+ </div>
349
+ <div :class="$parent.$parent.style" >
350
+ <label class="font_normal_body">通气结束</label>
351
+ <datepicker
352
+ :value.sync="model.f_gas_end"
353
+ placeholder='首次通气时间' style="width: 60%"
354
+ :disabled-days-of-week="[]"
355
+ :format="'yyyy-MM-dd'"
356
+ :show-rest-button="reset"
357
+ v-model="model.f_gas_end"
358
+ condition="f_uservent_date <= '{} 23:59:59'">
359
+ </datepicker>
360
+ </div>
361
+ </div>
362
+ </div>
363
+ </criteria>
364
+ <data-grid :model="model" partial='list' v-ref:grid class="list_area table_sy">
365
+ <template partial='head'>
366
+ <tr>
367
+ <th v-if="$parent.$parent.$parent.transfer=='是'"><nobr><!--<input type="checkbox" v-model="$parent.$parent.$parent.checkAll" @click.stop="()=>{return}" />-->选择</nobr></th>
368
+ <th><nobr>入户状态</nobr></th>
369
+ <th><nobr>用户编号</nobr></th>
370
+ <th><nobr>用户名</nobr></th>
371
+ <th><nobr>用户电话</nobr></th>
372
+ <th><nobr>用户小区</nobr></th>
373
+ <th><nobr>用户地址</nobr></th>
374
+ <th>
375
+ <nobr>通气时间</nobr>
376
+ </th>
377
+ <th><nobr>安检时间</nobr></th>
378
+ <th><nobr>安检员</nobr></th>
379
+ <th><nobr>计划名</nobr></th>
380
+ <th><nobr>是否有隐患</nobr></th>
381
+ <th><nobr>隐患数</nobr></th>
382
+ <th><nobr>处理数</nobr></th>
383
+ <th><nobr>完成数</nobr></th>
384
+ <th><nobr>处理情况</nobr></th>
385
+ <th><nobr>完成情况</nobr></th>
386
+ <!-- <th><nobr>维修情况</nobr></th>-->
387
+ <th><nobr>维修员</nobr></th>
388
+ <th><nobr>隐患明细</nobr></th>
389
+ </tr>
390
+ </template>
391
+ <template partial='body'>
392
+ <td v-if="$parent.$parent.$parent.transfer=='是'" style="text-align: center;white-space:nowrap;"><input type="checkbox" v-if="row.f_defect_count>row.f_deal_count && (row.f_defect_count - row.f_repair_count) > row.zxzg_count" @click="$event.cancelBubble=true" :checked="$parent.$parent.$parent.isChecked(row.id)" @change="$parent.$parent.$parent.setCheckes(row.id)"></input></td>
393
+ <td style="text-align: center;white-space:nowrap;">{{row.f_entry_status}}</td>
394
+ <td style="text-align: center;white-space:nowrap;">{{row.f_userinfo_code}}</td>
395
+ <td style="text-align: center;white-space:nowrap;">{{row.f_user_name}}</td>
396
+ <td style="text-align: center;white-space:nowrap;">{{row.f_user_phone}}</td>
397
+ <td style="text-align: center;white-space:nowrap;">{{row.f_residential_area}}</td>
398
+ <td style="text-align: center;white-space:nowrap;">{{row.f_address}}</td>
399
+ <td style="text-align: center;white-space:nowrap;">{{row.f_uservent_date}}</td>
400
+ <td style="text-align: center;white-space:nowrap;">{{row.f_offsite_time}}</td>
401
+ <td style="text-align: center;white-space:nowrap;">{{row.f_checker_name}}</td>
402
+ <td style="text-align: center;white-space:nowrap;">{{row.f_plan_name}}</td>
403
+ <td style="text-align: center;white-space:nowrap;">{{row.f_has_defect}}</td>
404
+ <td style="text-align: center;white-space:nowrap;">{{row.f_defect_count}}</td>
405
+ <td style="text-align: center;white-space:nowrap;">{{row.f_deal_count}}</td>
406
+ <td style="text-align: center;white-space:nowrap;">{{row.f_repair_count}}</td>
407
+ <td style="text-align: center;white-space:nowrap;">{{row.f_is_deal}}</td>
408
+ <td style="text-align: center;white-space:nowrap;">{{row.f_is_repair}}</td>
409
+ <!-- <td style="text-align: center;white-space:nowrap;">{{row.f_repaired}}</td>-->
410
+ <td style="text-align: center;white-space:nowrap;">{{row.f_repairman}}</td>
411
+ <td style="text-align: center;white-space:nowrap;"><span :title="$parent.$parent.$parent.trouble(row.f_defect_content)" style="display: block;max-width: 300px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{ $parent.$parent.$parent.trouble(row.f_defect_content)}}</span></td>
412
+ </template>
413
+ </data-grid>
414
+ </criteria-paged>
415
+
416
+ <modal :show.sync="showModal" v-ref:modal>
417
+ <div slot="modal-header" class="modal-header">
418
+ <h4 class="modal-title">
419
+ 选择计划
420
+ </h4>
421
+ </div>
422
+ <div slot="modal-body" class="modal-body">
423
+ <plan-chooser :f.sync="this.$login.f" v-ref:chooser></plan-chooser>
424
+ </div>
425
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
426
+ <button class="button_search" @click="ok">确认</button>
427
+ <button class="button_search" @click="cancel">取消</button>
428
+ </div>
429
+ </modal>
430
+ <modal :show.sync="showModal2" :backdrop="false">
431
+ <div slot="modal-header" class="modal-header">
432
+ <h4 class="modal-title">
433
+ 转维修
434
+ </h4>
435
+ </div>
436
+ <div slot="modal-body" class="modal-body">
437
+ <div v-if="true">
438
+ <div class="row" style="margin-top: 10px">
439
+ <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">派发类型</label>
440
+ <div class="col-xs-8 col-md-8">
441
+ <v-select :value.sync="selectData.dispatchType" :value-single="true" v-model="selectData.dispatchType"
442
+ :options='dispatchTypeOptions' placeholder='派发类型'
443
+ close-on-select>
444
+ </v-select>
445
+ </div>
446
+ </div>
447
+ <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType=='派发给维修员'">
448
+ <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">维&ensp;修&ensp;员</label>
449
+ <div class="col-xs-8 col-md-8">
450
+ <v-select
451
+ :value.sync="selectData.f_repairman"
452
+ :value-single="true"
453
+ :options='repairers'
454
+ placeholder='请选择维修员'
455
+ close-on-select></v-select>
456
+ </div>
457
+ </div>
458
+ <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType=='派发给站点'">
459
+ <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">站&ensp;&ensp;&ensp;&ensp;点</label>
460
+ <div class="col-xs-8 col-md-8">
461
+ <right-tree
462
+ islist
463
+ :userid="userid"
464
+ :source="'dep=this.getParentByType($organization$).getSpecialResByType($department$),tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))'"
465
+ @re-res="getSiteRes"></right-tree>
466
+ </div>
467
+ </div>
468
+ <div class="row" style="margin-top: 10px">
469
+ <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">报修类型</label>
470
+ <div class="col-xs-8 col-md-8">
471
+ <v-select :value.sync="selectData.f_repairtype" style="width:60%"
472
+ class="select select_list"
473
+ :value-single="true"
474
+ :options='repairTypeOptions'
475
+ close-on-select>
476
+ </v-select>
477
+ </div>
478
+ </div>
479
+ <div class="row" style="margin-top: 10px">
480
+ <label class="control-label font text-left" style="float:left;margin-left:20%;margin-top:5px">备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注</label>
481
+ <div class="col-xs-8 col-md-8">
482
+ <textarea style="width: 60%; height: 100px" v-model="selectData.f_remarks"></textarea>
483
+ </div>
484
+ </div>
485
+ </div>
486
+ </div>
487
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
488
+ <button class="button_search" @click="rectification">转维修</button>
489
+ <button class="button_search" @click="cancel1">取消</button>
490
+ </div>
491
+ </modal>
492
+ <modal :show.sync="showModal3">
493
+ <div slot="modal-header" class="modal-header">
494
+ <h4 class="modal-title">
495
+ 转维修进度{{ progressbarWidth }}%
496
+ </h4>
497
+ </div>
498
+ <div slot="modal-body" class="modal-body">
499
+ <div class="progress">
500
+ <div class="progress-bar" role="progressbar" aria-valuenow="60"
501
+ aria-valuemin="0" aria-valuemax="100" :style="'width:'+ progressbarWidth+'%'">
502
+ <!-- <span class="sr-only">40% 完成</span>-->
503
+ </div>
504
+ </div>
505
+ </div>
506
+ <div slot="modal-footer" class="modal-footer" style="text-align: center" v-show="false"></div>
507
+ </modal>
508
+ </div>
509
+ </template>
510
+ <script>
511
+ import {PagedList} from 'vue-client'
512
+ import HttpResetClass from "vue-client/src/plugins/HttpResetClass";
513
+ import co from 'co'
514
+ import Vue from 'vue'
515
+ import * as Util from '../../../components/Util'
516
+
517
+ let select = function* (self) {
518
+ let http = new HttpResetClass()
519
+ let getGasman = yield http.load('POST', '/rs/search', {
520
+ source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1))',
521
+ userid: self.$login.f.id
522
+ }, {resolveMsg: null, rejectMsg: null})
523
+ //tag
524
+ self.checkersid.push({label: '全部', value: ''})
525
+ getGasman.data.forEach((checker) => {
526
+ self.checkersid.push({label: checker.name, value: checker.name})
527
+ })
528
+ }
529
+ export default {
530
+ title: '隐患查询',
531
+ data() {
532
+ let model = new PagedList('rs/sql/GetCheckPaperByDefectNew', 20, {
533
+ f_filialeids: 'this.f_filialeids',f_defect_content: 'this.f_defect_content'
534
+ })
535
+ model.f_filialeids = '(' + this.$login.f.orgid + ')'
536
+ model.f_defect_content="CASE WHEN CHARINDEX( '\"result\":\"正常\"', f_defect_content ) > 0 THEN '无隐患' ELSE replace(replace(replace( replace( RIGHT ( f_defect_content, len( f_defect_content ) - 26 ), substring('{}',2,1), '' ), substring('{}',1,1), '' ),']',''),'\"','') END"
537
+ return {
538
+ repaired:[{label: '全部', value: ''},{label: '未完成', value: '未完成'}, {label: '已完成', value: '已完成'}],
539
+ deals:[{label: '全部', value: ''},{label: '未处理', value: '未处理'}, {label: '已处理', value: '已处理'}],
540
+ hasDefectOptions: [{label: '全部', value: ''}, {label: '有隐患', value: '有隐患'}, {label: '无隐患', value: '无隐患'}],
541
+ f: this.$login.f,
542
+ model: model,
543
+ criteriaShow: false,
544
+ checkAll:false,
545
+ timercount:0,
546
+ showModal2:false,
547
+ repairTypeOptions:this.$appdata.getParam('报修类型'),
548
+ dispatchTypeOptions: [{label: '派发给站点', value: '派发给站点'},{label: '派发给维修员', value: '派发给维修员'}],
549
+ checkes:[],
550
+ showModal: false,
551
+ f_check_plan: {f_plan_name: '', id: ''},
552
+ sumsmodel: {},
553
+ resids:{},
554
+ all: false,
555
+ fields: {},
556
+
557
+ selectData:{
558
+ dispatchType:'',
559
+ f_repairman:'',
560
+ f_remarks:'',
561
+ f_repairtype:''
562
+ },
563
+ progressbarWidth:'0',
564
+ modelval: [],
565
+ isbusy:false,
566
+ transfer: null,
567
+ checkersid: [],
568
+ showModal3:false,
569
+ toRepairCount:0,
570
+ sliceArea: [],
571
+ callSends:[],
572
+ cbc:[],
573
+ repairedOptions:[{label: '全部', value: ''},{label: '已修', value: '已修'}, {label: '未修', value: '未修'}],
574
+ repairers:[],
575
+ cbcs:[],
576
+ thead: '',
577
+ headData: ['入户状态','用户编号','用户名','用户电话','用户小区','用户地址','通气时间','安检时间','安检员','计划名','是否有隐患','隐患数','隐患明细','处理数','完成数','处理情况','完成情况','维修员'],
578
+ bodyData: ['f_entry_status','f_userinfo_code','f_user_name','f_user_phone','f_residential_area','f_address','f_uservent_date','f_offsite_time','f_checker_name','f_plan_name','f_has_defect','f_defect_count','f_defect_content','f_deal_count','f_repair_count','f_is_deal','f_is_repair','f_repairman'],
579
+ }
580
+ },
581
+ props:{
582
+ style: {
583
+ type: String,
584
+ default: 'col-sm-2 form-group'
585
+ },
586
+ style2: {
587
+ type: String,
588
+ default: 'col-sm-4 form-group'
589
+ }
590
+
591
+ },
592
+
593
+ methods: {
594
+ getSiteRes(obj) {
595
+ console.log('siteRes ---> ')
596
+ console.log(obj)
597
+ if(obj.resids[0]){
598
+ this.selectData.f_meetunit = obj.res.join('.')
599
+ this.selectData.f_reciever = obj.resids.join('.')
600
+ this.selectData.f_outlets = obj.res[obj.res.length - 1]
601
+ }else {
602
+ this.selectData.f_meetunit = ''
603
+ this.selectData.f_reciever = ''
604
+ this.selectData.f_outlets = ''
605
+ }
606
+ },
607
+ trouble(val) {
608
+ // return val.replaceAll("'",'')
609
+ // .replaceAll("\"",'')
610
+ // .replaceAll("{",'')
611
+ // .replaceAll("}",'')
612
+ // .replaceAll("]",'')
613
+ // .replaceAll("[",'')
614
+ // .replaceAll("result:",'')
615
+ // .replaceAll("data:",'')
616
+ // .replaceAll("有隐患",'')
617
+ // .replaceAll(",",'')
618
+
619
+
620
+ const defect_content = JSON.parse(val)
621
+ let result = ''
622
+ if (defect_content.data) {
623
+ const jsonData = defect_content.data
624
+ for (const itemdata of jsonData) {
625
+ const keys = Object.keys(itemdata)
626
+ for (const itm of keys) {
627
+ const value = itemdata[itm]
628
+ result += itm + ':' + value
629
+ }
630
+ }
631
+ }
632
+ return result
633
+ },
634
+ getEmp() {
635
+ let val = {source: 'this.getParentByType($organization$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$)!=null ).where(row.getAttributes().get($rolestr$).indexOf($维修员$) != -1))', userid: `${this.$login.f.id}`}
636
+ let http = new HttpResetClass()
637
+ http.load('POST', '/rs/search', {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
638
+ let str=''
639
+ res.data.forEach((item,idx,arr) => {
640
+ //tag
641
+ if(idx+1==arr.length){
642
+ str += item.id
643
+ }else{
644
+ str += item.id+','
645
+ }
646
+
647
+ })
648
+ let http1 = new HttpResetClass()
649
+ http1.load('POST', 'rs/sql/tel_singleTable_OrderBy', {
650
+ data: {
651
+ items: 'id,f_user_telephone',
652
+ tablename: 't_user',
653
+ condition: `id in (${str})`,
654
+ orderitem: 'id'
655
+ }
656
+ }, {resolveMsg: null, rejectMsg: null}).then((ress) => {
657
+
658
+ res.data.forEach((user)=>{
659
+ try {
660
+ ress.data.forEach((tel,tidx,arr)=>{
661
+ //tag
662
+ if(user.id==tel.id){
663
+ this.repairers.push({label: `${user.name}:${tel.f_user_telephone}`, value: user.name})
664
+ ress.data.splice(tidx,1)
665
+ //tag
666
+ throw new Error("跳出循环");
667
+ }
668
+ })
669
+ }catch (e) {
670
+ //tag
671
+ }
672
+ })
673
+ })
674
+
675
+ })
676
+ },
677
+ toRepair(){
678
+ if(this.checkes.length==0){
679
+ return this.$showMessage('请先选择需要转维修的用户!')
680
+ }
681
+ this.showModal2=true
682
+ },
683
+ async rectification(){
684
+
685
+ if(this.selectData.dispatchType){
686
+ if(this.selectData.dispatchType=='派发给站点'){
687
+ if(!this.selectData.f_reciever){
688
+ this.$showMessage('请选择部门!')
689
+ return
690
+ }
691
+ }else{
692
+ if(!this.selectData.f_repairman){
693
+ this.$showMessage('请选择维修员!')
694
+ return
695
+ }
696
+ }
697
+ }else {
698
+ this.$showMessage('请选择派发类型!')
699
+ return
700
+ }
701
+
702
+ if(!this.selectData.f_repairtype){
703
+ this.$showMessage('请选择报修类型!')
704
+ return
705
+ }
706
+ this.showModal3=true
707
+ let act={}
708
+ let toRepair=''
709
+ let successCount=0
710
+ if(this.selectData.dispatchType=='派发给站点'){
711
+ act={f_meetunit:this.selectData.f_meetunit,f_reciever:this.selectData.f_reciever,f_service_acitivity_type:'派单'}
712
+ toRepair=null
713
+ }else{
714
+ console.log('派发给维修员---------'+this.selectData.f_repairman)
715
+ act={f_meetunit:'',f_reciever:this.selectData.f_repairman,f_service_acitivity_type:'派单'}
716
+ toRepair='一级派单'
717
+ }
718
+ let rep={
719
+ loginUser: {
720
+ name: this.$login.f.name,
721
+ ename: this.$login.f.ename
722
+ },
723
+ f_meetunit: this.$login.f.deps,
724
+ f_attendant: this.$login.f.name,
725
+ f_outlets: this.$login.f.deps,
726
+ f_remarks: this.selectData.f_remarks,
727
+ f_repairtype: this.selectData.f_repairtype,
728
+ toRepair: toRepair,
729
+ activity:act
730
+ }
731
+ for(let i=0; i<this.checkes.length; i++){
732
+ try {
733
+ let result =await new HttpResetClass().load('post','/rs/logic/phoneUploadRectification', {
734
+ id:this.checkes[i],
735
+ repData:rep,
736
+ source:'pc'
737
+ }, {resolveMsg: null, rejectMsg: null})
738
+ if (result.data.code==200) {
739
+ successCount += result.data.successcon
740
+ this.progressbarWidth=Math.ceil((i+1)*100/(this.checkes.length))
741
+ }
742
+ }catch (e) {
743
+ this.showModal3=false
744
+ this.$showMessage('网络异常,请稍后再试!')
745
+ return
746
+ }
747
+ }
748
+ this.showModal3=false
749
+ this.cancel1()
750
+ this.$showMessage('本次转维修成功'+successCount+'单')
751
+ },
752
+ /*async rectification(){
753
+ this.isbusy =true
754
+ console.log("----this.checkes",this.checkes.toString())
755
+ console.log("----this.getcon()",this.getcon())
756
+ if(this.checkes.length==0){
757
+ return this.$showMessage('请先选择需要转维修的用户!')
758
+ }
759
+ // if (this.checkAll){
760
+ let data={
761
+ f_filialeids: this.model.params.f_filialeids,
762
+ f_defect_content: this.model.params.f_defect_content,
763
+ condition: `${this.model.params.condition} and id in(${this.getcon()})`
764
+ }
765
+ let res1= await new HttpResetClass().load('post','rs/sql/GetCheckPaperByDefectNew',{data: data })
766
+ for (let i = 0; i < res1.data.length; i++) {
767
+ let data1={
768
+ f_paper_id: res1.data[i].id,
769
+ condition:`f_repaire_type = '隐患未处理'`
770
+ }
771
+ let res2 = await new HttpResetClass().load('POST' , 'rs/sql/GetDefectByPaperIdNew' , {data: data1 } )
772
+ //tag
773
+ if(res2.data.length==0){
774
+ continue
775
+ }
776
+ const uploadData = {
777
+ model: {
778
+ serviceacitivity: [{
779
+ f_service_acitivity_type: '派单'
780
+ }],
781
+ f_repairitems: {},
782
+ failure: '',
783
+ f_source: '安检',
784
+ f_service_id: '',
785
+ f_contact_phone: res1.data[i].f_user_phone,
786
+ f_meetunit: this.$login.f.deps,
787
+ f_phone: '',
788
+ f_user_name: res1.data[i].f_user_name,
789
+ f_address: res1.data[i].f_address,
790
+ f_repair_date: Util.getNowDate(),
791
+ f_reciever: '',
792
+ f_remarks: this.selectData.f_remarks,
793
+ f_user_type: res1.data[i].f_check_type,
794
+ f_area: '',
795
+ f_unit_name: '',
796
+ f_street: res1.data[i].f_street,
797
+ f_residential_area: res1.data[i].f_residential_area,
798
+ f_building: res1.data[i].f_building,
799
+ f_unit: res1.data[i].f_unit,
800
+ f_floor: res1.data[i].f_floor,
801
+ f_room: res1.data[i].f_room,
802
+ aState: '',
803
+ f_repairtype: this.selectData.f_repairtype,
804
+ f_userinfo_id: res1.data[i].f_userinfo_id,
805
+ f_userinfo_code: res1.data[i].f_userinfo_code,
806
+ f_orgstr: res1.data[i].f_filialeid,
807
+ f_outlets: '',
808
+ f_attendant: this.$login.f.name
809
+ },
810
+ loginUser: {
811
+ name: this.$login.f.name,
812
+ ename: this.$login.f.ename
813
+ },
814
+ user: {
815
+ f_userinfo_id: res1.data[i].f_userinfo_id
816
+ },
817
+ callObj: null
818
+ }
819
+ uploadData.model.serviceacitivity[0].f_reciever = this.selectData.f_repairman
820
+ // uploadData.model.f_meetunit = self.$login.f.orgpathnames
821
+ // uploadData.model.f_orgstr = self.$login.f.orgpathstr
822
+ // uploadData.model.f_outlets = self.$login.f.f_parentname
823
+ uploadData.model.f_orgid = this.$login.f.orgid
824
+ uploadData.model.f_filiale = this.$login.f.org
825
+ uploadData.model.f_outlets = this.$login.f.deps
826
+ uploadData.model.f_filiale_id = this.$login.f.orgid
827
+ uploadData.toRepair = '一级派单'
828
+ // let res3 = await new HttpResetClass().load('post','/rs/sql/GetUserForRepaireNew', {data: {f_userinfo_id: res1.data[i].f_userinfo_id}})
829
+ // uploadData.model = Object.assign(uploadData.model, res3.data[0])
830
+ let failure = []
831
+ res2.data.forEach(row => {
832
+ console.log('row.f_item_value',row.f_item_value)
833
+ failure.push({
834
+ f_failure_type: row.f_item_name,
835
+ failurecase: row.f_item_value?row.f_item_value.split(','):''
836
+ })
837
+ })
838
+ uploadData.model.failure = failure
839
+ // 拼接repairitems
840
+ let rows = JSON.parse(JSON.stringify(res2.data))
841
+ let repairitems = {
842
+ data: []
843
+ }
844
+ let safecheckOptions = [{"data": "已处理"}, {"data": "未处理"}]
845
+ // 取隐患未处理的
846
+ rows = rows.filter(row => row.f_repaire_type == '隐患未处理')
847
+ //tag)
848
+ // 开始拼接
849
+ rows.forEach(row => {
850
+ let existIndex = -1
851
+ // 判断该设备是否已经存在
852
+ for (let i = 0; i < repairitems.data.length; i++) {
853
+ if (repairitems.data[i].f_type == row.f_device_type) {
854
+ existIndex = i
855
+ break
856
+ }
857
+ }
858
+ if (existIndex == -1) {
859
+ // 不存在则新建
860
+ let newItem = {
861
+ f_type: row.f_device_type,
862
+ details: [{
863
+ f_defect_id: row.id,
864
+ f_project: `${row.f_item_name}:${row.f_item_value}`,
865
+ type: 'selector',
866
+ options: safecheckOptions
867
+ }]
868
+ }
869
+ repairitems.data.push(newItem)
870
+ } else {
871
+ // 存在则追加
872
+ repairitems.data[existIndex].details.push({
873
+ f_defect_id: row.id,
874
+ f_project: `${row.f_item_name}:${row.f_item_value}`,
875
+ type: 'selector',
876
+ options: safecheckOptions
877
+ })
878
+ }
879
+ })
880
+ uploadData.model.f_repairitems = repairitems
881
+ uploadData.rows=rows
882
+ //tag)
883
+ //tag
884
+ console.log('uploadData---', uploadData)
885
+ if (uploadData.model.f_repairitems.data.length>0){
886
+ this.callSends.push(uploadData)
887
+ }else{
888
+ //tag
889
+ }
890
+ }
891
+ //tag)
892
+ let timer = setInterval(async ()=>{
893
+ this.showModal3=true
894
+ this.isbusy=false
895
+ if (this.timercount<this.callSends.length){
896
+ //tag)
897
+ let rows=this.callSends[this.timercount].rows
898
+ //tag)
899
+ let result = await this.$resetpost('/rs/logic/callerSend1', this.callSends[this.timercount])
900
+ //tag)
901
+ if (result.data.f_service_id) {
902
+ const data = {
903
+ f_paper_id: rows[0].f_paper_id,
904
+ f_service_id: result.data.f_service_id,
905
+ itemsId: this.$login.convertToIn(rows.map(row => row.id))
906
+ }
907
+ //tag
908
+ let updateRes = await this.$resetpost('/rs/logic/updateDefectStateNew', data)
909
+ }
910
+ this.toRepairCount++
911
+ //tag
912
+ this.timercount++
913
+ }else{
914
+ clearInterval(timer)
915
+ //tag
916
+ this.callSends=[]
917
+ this.timercount=0
918
+ this.showModal3=false
919
+ this.cancel1()
920
+ this.$showMessage('本次转维修成功'+this.toRepairCount+'单')
921
+ this.toRepairCount=0
922
+ }
923
+ }, 3000)
924
+ },*/
925
+ cancel1(){
926
+ this.showModal2=false
927
+ this.selectData={
928
+ dispatchType:'',
929
+ f_repairman:'',
930
+ f_remarks:'',
931
+ f_repairtype:''
932
+ }
933
+ },
934
+ sleep(d){
935
+ //tag)
936
+ var t = Date.now()
937
+ while(Date.now - t <= d){
938
+
939
+ }
940
+ //tag)
941
+ },
942
+ isChecked(v) {
943
+ // 如果全选,不在的按选中算,否则,在的按选中算
944
+ if (this.checkAll) {
945
+ return this.checkes.indexOf(v) == -1
946
+ } else {
947
+ return this.checkes.indexOf(v) != -1
948
+ }
949
+ },
950
+ setCheckAll() {
951
+ this.checkAll=this.checkAll?false:true;
952
+ // 全选改变后,清空选中数据
953
+ this.checkes = []
954
+ },
955
+ setCheckes(id) {
956
+ let index=this.checkes.indexOf(id)
957
+ if(index<0){
958
+ this.checkes.push(id)
959
+ }else{
960
+ this.checkes.splice(index,1)
961
+ }
962
+ },
963
+
964
+ getmeterbook(val){
965
+ this.cbc=[]
966
+ this.cbc.push({
967
+ label:'全部',
968
+ value:''
969
+ })
970
+ if (val==''){
971
+
972
+ this.cbcs.forEach(res=>{
973
+ this.cbc.push({
974
+ label:res.f_book_name,
975
+ value:res.id
976
+ })
977
+ })
978
+ }else{
979
+ this.cbcs.forEach(res=>{
980
+ if (res.f_book_slice_area==val){
981
+ this.cbc.push({
982
+ label:res.f_book_name,
983
+ value:res.id
984
+ })
985
+ }
986
+ })
987
+ }
988
+ },
989
+
990
+ Mreadibook(val){
991
+ //tag
992
+ //tag
993
+ this.sliceArea=[]
994
+ if (val){
995
+ new HttpResetClass().load('POST',`/rs/sql/tel_singleTable_OrderBy`, {data: {
996
+ items: 'name',
997
+ tablename: 't_zone',
998
+ condition: `parentid in ${val}`,
999
+ orderitem: 'id'
1000
+ }}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1001
+ this.sliceArea.push({
1002
+ label:'全部',
1003
+ value:''
1004
+ })
1005
+ res.data.forEach(ress=>{
1006
+ this.sliceArea.push({
1007
+ label:ress.name,
1008
+ value:ress.name
1009
+ })
1010
+ })
1011
+
1012
+ })
1013
+ }
1014
+ },
1015
+ getAllMeterBook(val){
1016
+ //tag
1017
+ //tag
1018
+ this.cbcs=[]
1019
+ if (val){
1020
+ new HttpResetClass().load('POST',`/rs/sql/tel_singleTable_OrderBy`, {data: {
1021
+ items: 'f_book_name,f_book_slice_area,id',
1022
+ tablename: 't_meter_book',
1023
+ condition: `f_filiale_id in ${val}`,
1024
+ orderitem: 'id'
1025
+ }}, {resolveMsg: null, rejectMsg: null}).then((res) => {
1026
+ res.data.forEach(ress=>{
1027
+ this.cbcs.push({
1028
+ id:ress.id,
1029
+ f_book_name:ress.f_book_name,
1030
+ f_book_slice_area:ress.f_book_slice_area
1031
+ })
1032
+ })
1033
+ this.cbc=[]
1034
+ this.cbc.push({
1035
+ label:'全部',
1036
+ value:''
1037
+ })
1038
+ this.cbcs.forEach(res=>{
1039
+ this.cbc.push({
1040
+ label:res.f_book_name,
1041
+ value:res.id
1042
+ })
1043
+ })
1044
+ })
1045
+ }
1046
+ },
1047
+ hiddenr() {
1048
+ this.$parent.showItem = !this.$parent.showItem
1049
+ },
1050
+ hidden() {
1051
+ this.criteriaShow = !this.criteriaShow
1052
+ },
1053
+ search(args) {
1054
+ //tag
1055
+ if (this.f_check_plan.f_plan_name) {
1056
+ args.condition += ` and f_check_plan_id = '${this.f_check_plan.id}'`
1057
+ }
1058
+ this.checkes = []
1059
+ this.checkAll=false
1060
+ this.model.search(args.condition, args.model)
1061
+ },
1062
+ getRes(obj) {
1063
+ //tag
1064
+ this.resids = {res:obj.res[0], resids:obj.resids[0]}
1065
+ this.model.f_filialeids = this.$login.convertToIn(obj.resids);
1066
+ this.Mreadibook(this.model.f_filialeids)
1067
+ this.getAllMeterBook(this.model.f_filialeids)
1068
+ },
1069
+ showChooser() {
1070
+ this.showModal = true
1071
+ },
1072
+ ok() {
1073
+ this.showModal = false
1074
+ if (this.$refs.modal.$children[0].selectedRow.id) {
1075
+ this.f_check_plan = this.$refs.modal.$children[0].selectedRow
1076
+ }
1077
+ },
1078
+ cancel() {
1079
+ this.showModal = false
1080
+ this.f_check_plan = {f_plan_name: '', id: ''}
1081
+ }
1082
+ },
1083
+ ready() {
1084
+ //tag
1085
+ this.transfer=Vue.$appdata.getSingleValue('安检转工单')
1086
+ this.$refs.paged.$refs.criteria.model.f_has_defect = '有隐患'
1087
+ this.getEmp()
1088
+ let gen = select(this)
1089
+ // this.Mreadibook(`('${this.$login.f.orgid}')`)
1090
+ co(gen)
1091
+ },
1092
+ watch:{
1093
+ 'timercount'(){
1094
+ if (this.timercount===0){
1095
+ this.progressbarWidth = '0'
1096
+ }else {
1097
+ //tag
1098
+ //tag
1099
+ this.progressbarWidth=parseInt(this.timercount*100/(this.callSends.length+1))
1100
+ }
1101
+
1102
+ }
1103
+ },
1104
+ computed: {
1105
+ selected() {
1106
+ return this.$refs.paged.$refs.grid.selected
1107
+ },
1108
+ getfield () {
1109
+ //tag
1110
+ let data = {}
1111
+ this.bodyData.forEach((value, index) => {
1112
+ data[this.bodyData[index]] = this.headData[index]
1113
+ })
1114
+ //合计字段打印
1115
+ this.tfoot = `<tr><th colspan=${this.modelval.length}>全表汇总信息: `
1116
+ if (this.sumsmodel) {
1117
+ Object.keys(this.sumsmodel).forEach((key) => {
1118
+ this.tfoot += this.fields[key] + '合计: ' + `<font color="blue">${this.sumsmodel[key]} </font>`
1119
+ })
1120
+ } else {
1121
+ this.tfoot += '暂无'
1122
+ }
1123
+ this.tfoot += '</th></tr>'
1124
+ return data
1125
+ }
1126
+ }
1127
+ }
1128
+ </script>