safecheck-client 3.0.35-4 → 3.0.35-6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) 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/GetParams.md +11 -11
  15. package/docs/HttpBusy.md +13 -13
  16. package/docs/HttpStore.md +29 -29
  17. package/docs/MessageBox.md +28 -28
  18. package/docs/PagedList.md +29 -29
  19. package/docs/Pager.md +21 -21
  20. package/docs/Project.md +23 -23
  21. package/docs/Route.md +105 -105
  22. package/docs/SafetyCheck/AdjustPlan.md +13 -13
  23. package/docs/SafetyCheck/CheckerPlan.md +12 -12
  24. package/docs/Task.md +46 -46
  25. package/docs/TreeList.md +28 -28
  26. package/docs/TreeMixin.md +18 -18
  27. package/docs/all.md +10 -10
  28. package/docs/list.md +42 -42
  29. package/docs/partial.md +75 -75
  30. package/docs/selector.md +82 -82
  31. package/docs//345/274/200/345/217/221/346/226/207/346/241/243/Snippets.md +28 -28
  32. 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
  33. 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
  34. 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
  35. package/docs//347/225/214/351/235/242/345/210/266/344/275/234/350/247/204/350/214/203.md +54 -54
  36. package/examples/AddressList/App.vue +13 -13
  37. package/examples/AddressList/index.html +11 -11
  38. package/examples/DispatchList/App.vue +10 -10
  39. package/examples/DispatchList/BaseTree.vue +13 -13
  40. package/examples/DispatchList/Init.vue +22 -22
  41. package/examples/DispatchList/Test.vue +20 -20
  42. package/examples/DispatchList/index.html +11 -11
  43. package/examples/DispatchList/main.js +18 -18
  44. package/home.html +16 -16
  45. package/package.json +1 -1
  46. package/publish.bat +7 -7
  47. package/release.bat +5 -5
  48. package/src/Widget.vue +13 -13
  49. package/src/android-bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  50. package/src/android-bootstrap/less/.csscomb.json +304 -304
  51. package/src/android-bootstrap/less/.csslintrc +19 -19
  52. package/src/android-bootstrap/less/alerts.less +73 -73
  53. package/src/android-bootstrap/less/badges.less +66 -66
  54. package/src/android-bootstrap/less/bootstrap.less +56 -56
  55. package/src/android-bootstrap/less/breadcrumbs.less +26 -26
  56. package/src/android-bootstrap/less/button-groups.less +247 -247
  57. package/src/android-bootstrap/less/buttons.less +173 -173
  58. package/src/android-bootstrap/less/carousel.less +269 -269
  59. package/src/android-bootstrap/less/close.less +34 -34
  60. package/src/android-bootstrap/less/code.less +69 -69
  61. package/src/android-bootstrap/less/component-animations.less +33 -33
  62. package/src/android-bootstrap/less/grid.less +84 -84
  63. package/src/android-bootstrap/less/input-groups.less +167 -167
  64. package/src/android-bootstrap/less/jumbotron.less +52 -52
  65. package/src/android-bootstrap/less/labels.less +64 -64
  66. package/src/android-bootstrap/less/list-group.less +141 -141
  67. package/src/android-bootstrap/less/media.less +66 -66
  68. package/src/android-bootstrap/less/mixins/alerts.less +14 -14
  69. package/src/android-bootstrap/less/mixins/background-variant.less +9 -9
  70. package/src/android-bootstrap/less/mixins/border-radius.less +18 -18
  71. package/src/android-bootstrap/less/mixins/buttons.less +69 -69
  72. package/src/android-bootstrap/less/mixins/center-block.less +7 -7
  73. package/src/android-bootstrap/less/mixins/clearfix.less +22 -22
  74. package/src/android-bootstrap/less/mixins/forms.less +90 -90
  75. package/src/android-bootstrap/less/mixins/gradients.less +59 -59
  76. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -92
  77. package/src/android-bootstrap/less/mixins/grid.less +122 -122
  78. package/src/android-bootstrap/less/mixins/hide-text.less +21 -21
  79. package/src/android-bootstrap/less/mixins/image.less +33 -33
  80. package/src/android-bootstrap/less/mixins/labels.less +12 -12
  81. package/src/android-bootstrap/less/mixins/list-group.less +30 -30
  82. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -10
  83. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -9
  84. package/src/android-bootstrap/less/mixins/opacity.less +8 -8
  85. package/src/android-bootstrap/less/mixins/pagination.less +24 -24
  86. package/src/android-bootstrap/less/mixins/panels.less +24 -24
  87. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -10
  88. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -8
  89. package/src/android-bootstrap/less/mixins/reset-text.less +18 -18
  90. package/src/android-bootstrap/less/mixins/resize.less +6 -6
  91. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -15
  92. package/src/android-bootstrap/less/mixins/size.less +10 -10
  93. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -9
  94. package/src/android-bootstrap/less/mixins/table-row.less +44 -44
  95. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -9
  96. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -8
  97. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -227
  98. package/src/android-bootstrap/less/mixins.less +40 -40
  99. package/src/android-bootstrap/less/modals.less +151 -151
  100. package/src/android-bootstrap/less/navbar.less +660 -660
  101. package/src/android-bootstrap/less/navs.less +290 -290
  102. package/src/android-bootstrap/less/normalize.less +424 -424
  103. package/src/android-bootstrap/less/pager.less +76 -76
  104. package/src/android-bootstrap/less/pagination.less +89 -89
  105. package/src/android-bootstrap/less/panels.less +274 -274
  106. package/src/android-bootstrap/less/popovers.less +131 -131
  107. package/src/android-bootstrap/less/print.less +101 -101
  108. package/src/android-bootstrap/less/progress-bars.less +87 -87
  109. package/src/android-bootstrap/less/responsive-embed.less +35 -35
  110. package/src/android-bootstrap/less/responsive-utilities.less +194 -194
  111. package/src/android-bootstrap/less/scaffolding.less +161 -161
  112. package/src/android-bootstrap/less/tables.less +262 -262
  113. package/src/android-bootstrap/less/theme.less +291 -291
  114. package/src/android-bootstrap/less/thumbnails.less +36 -36
  115. package/src/android-bootstrap/less/tooltip.less +102 -102
  116. package/src/android-bootstrap/less/type.less +303 -303
  117. package/src/android-bootstrap/less/utilities.less +55 -55
  118. package/src/android-bootstrap/less/variables.less +896 -896
  119. package/src/android-bootstrap/less/wells.less +29 -29
  120. package/src/androidTest.js +20 -20
  121. package/src/bootstrap/less/.csscomb.json +304 -304
  122. package/src/bootstrap/less/.csslintrc +19 -19
  123. package/src/bootstrap/less/alerts.less +73 -73
  124. package/src/bootstrap/less/badges.less +66 -66
  125. package/src/bootstrap/less/breadcrumbs.less +26 -26
  126. package/src/bootstrap/less/button-groups.less +247 -247
  127. package/src/bootstrap/less/buttons.less +172 -172
  128. package/src/bootstrap/less/carousel.less +269 -269
  129. package/src/bootstrap/less/close.less +34 -34
  130. package/src/bootstrap/less/code.less +69 -69
  131. package/src/bootstrap/less/component-animations.less +33 -33
  132. package/src/bootstrap/less/dropdowns.less +216 -216
  133. package/src/bootstrap/less/forms.less +626 -626
  134. package/src/bootstrap/less/grid.less +84 -84
  135. package/src/bootstrap/less/input-groups.less +167 -167
  136. package/src/bootstrap/less/jumbotron.less +52 -52
  137. package/src/bootstrap/less/labels.less +64 -64
  138. package/src/bootstrap/less/list-group.less +141 -141
  139. package/src/bootstrap/less/media.less +66 -66
  140. package/src/bootstrap/less/mixins/alerts.less +14 -14
  141. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  142. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  143. package/src/bootstrap/less/mixins/buttons.less +69 -69
  144. package/src/bootstrap/less/mixins/center-block.less +7 -7
  145. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  146. package/src/bootstrap/less/mixins/forms.less +90 -90
  147. package/src/bootstrap/less/mixins/gradients.less +59 -59
  148. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  149. package/src/bootstrap/less/mixins/grid.less +122 -122
  150. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  151. package/src/bootstrap/less/mixins/image.less +33 -33
  152. package/src/bootstrap/less/mixins/labels.less +12 -12
  153. package/src/bootstrap/less/mixins/list-group.less +30 -30
  154. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  155. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  156. package/src/bootstrap/less/mixins/opacity.less +8 -8
  157. package/src/bootstrap/less/mixins/pagination.less +24 -24
  158. package/src/bootstrap/less/mixins/panels.less +24 -24
  159. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  160. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  161. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  162. package/src/bootstrap/less/mixins/resize.less +6 -6
  163. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  164. package/src/bootstrap/less/mixins/size.less +10 -10
  165. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  166. package/src/bootstrap/less/mixins/table-row.less +44 -44
  167. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  168. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  169. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  170. package/src/bootstrap/less/mixins.less +40 -40
  171. package/src/bootstrap/less/modals.less +151 -151
  172. package/src/bootstrap/less/navbar.less +660 -660
  173. package/src/bootstrap/less/normalize.less +424 -424
  174. package/src/bootstrap/less/pager.less +76 -76
  175. package/src/bootstrap/less/pagination.less +89 -89
  176. package/src/bootstrap/less/panels.less +275 -275
  177. package/src/bootstrap/less/popovers.less +131 -131
  178. package/src/bootstrap/less/print.less +101 -101
  179. package/src/bootstrap/less/progress-bars.less +87 -87
  180. package/src/bootstrap/less/responsive-embed.less +35 -35
  181. package/src/bootstrap/less/responsive-utilities.less +194 -194
  182. package/src/bootstrap/less/scaffolding.less +161 -161
  183. package/src/bootstrap/less/theme.less +291 -291
  184. package/src/bootstrap/less/thumbnails.less +36 -36
  185. package/src/bootstrap/less/tooltip.less +102 -102
  186. package/src/bootstrap/less/type.less +303 -303
  187. package/src/bootstrap/less/utilities.less +55 -55
  188. package/src/bootstrap/less/wells.less +29 -29
  189. package/src/components/FileUpload.vue +696 -696
  190. package/src/components/Hello.vue +39 -39
  191. package/src/components/LeftTree.vue +27 -27
  192. package/src/components/NewDefectList/DefectListNew.vue +617 -617
  193. package/src/components/android/AddPlanItemYy.vue +451 -451
  194. package/src/components/android/AddressList.vue +61 -61
  195. package/src/components/android/AttendanceTally.vue +116 -116
  196. package/src/components/android/Blank.vue +10 -10
  197. package/src/components/android/CheckUnplanPage.vue +56 -56
  198. package/src/components/android/Checker.vue +12 -12
  199. package/src/components/android/CheckerAnnual.vue +81 -81
  200. package/src/components/android/CheckerAvarta.vue +82 -82
  201. package/src/components/android/EquipmentInspection.vue +348 -348
  202. package/src/components/android/FootprintMap.vue +120 -120
  203. package/src/components/android/HiddentroubleInvestigation.vue +192 -192
  204. package/src/components/android/MasterMain.vue +77 -77
  205. package/src/components/android/Menu.vue +132 -132
  206. package/src/components/android/NavBottom.vue +157 -157
  207. package/src/components/android/PaperAlarm.vue +85 -85
  208. package/src/components/android/PaperDeviceNoncivil.vue +214 -214
  209. package/src/components/android/PlumberAnnual.vue +83 -83
  210. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  211. package/src/components/android/PlumberMonthly.vue +84 -84
  212. package/src/components/android/PostMap.vue +83 -83
  213. package/src/components/android/QueryCheckHistory.vue +122 -122
  214. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  215. package/src/components/android/RepairMain.vue +60 -60
  216. package/src/components/android/Repairman.vue +12 -12
  217. package/src/components/android/SafecheckOrderV.vue +2805 -2805
  218. package/src/components/android/StationMaster.vue +12 -12
  219. package/src/components/android/examples/SafeListExamples.vue +296 -296
  220. package/src/components/defects/DefectModal.vue +101 -101
  221. package/src/components/defects/DevicesAndItem.vue +39 -39
  222. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  223. package/src/components/notice/NoticeForm.vue +100 -100
  224. package/src/components/notice/NoticeIssue.vue +20 -20
  225. package/src/components/paper/PicViewer.vue +18 -18
  226. package/src/components/phonestate/MonthlyTraffic.vue +66 -66
  227. package/src/components/phonestate/MonthlyTrafficRouter.vue +15 -15
  228. package/src/components/phonestate/PostMap.vue +82 -82
  229. package/src/components/querycheckpaper/PaperItem.vue +59 -59
  230. package/src/components/rongcheng/AspiratedAreaPlan.vue +574 -574
  231. package/src/components/rongcheng/PhoneUpUserinfo.vue +1236 -1236
  232. package/src/components/userfile/MeterFile.vue +145 -145
  233. package/src/components/userfile/MeterModify.vue +46 -46
  234. package/src/components/userfileaudit/MeterAuditFile.vue +129 -129
  235. package/src/filiale/bayan/android/AddPlanItem.vue +430 -430
  236. package/src/filiale/bayan/android/CheckPlanDown.vue +2 -2
  237. package/src/filiale/bayan/android/PhoneUpUserinfo.vue +1380 -1377
  238. package/src/filiale/bayan/android/SafecheckOrderV.vue +2922 -2866
  239. package/src/filiale/bayan/pc/PlanManage.vue +2 -0
  240. package/src/filiale/jiaxian/android/SafecheckOrderV.vue +2807 -2807
  241. package/src/filiale/qianneng/android/SafecheckOrderV.vue +2785 -2785
  242. package/src/filiale/shanxian/android/AddPlanItem.vue +447 -447
  243. package/src/filiale/shanxian/android/SafecheckOrderV.vue +2979 -2979
  244. package/src/filiale/shanxian/pc/checkUserList.vue +700 -700
  245. package/src/filiale/siyang/android/AddPlanItem.vue +450 -450
  246. package/src/filiale/siyang/pc/CheckSearchUser.vue +1035 -1035
  247. package/src/filiale/tongchuan/pc/PaperDefectMain.vue +1060 -1060
  248. package/src/filiale/weinan/pc/CheckBookSearchUserList.vue +735 -735
  249. package/src/filiale/weinan/pc/CheckDetail.vue +278 -278
  250. package/src/filiale/weinan/pc/checkUserList.vue +712 -712
  251. package/src/filiale/xilan/android/AddPlanItem.vue +461 -461
  252. package/src/filiale/xilan/android/CurrentCreate.vue +1067 -1067
  253. package/src/filiale/xilan/android.js +11 -11
  254. package/src/main.js +33 -33
  255. package/src/plugins/LoadData.js +10 -10
  256. package/src/plugins/LoadParams.js +24 -24
  257. package/src/safecheck-android.js +307 -307
  258. package/src/stores/wxconfig.js +10 -10
  259. package/src/utils/getNowDate.js +33 -33
  260. package/test/e2e/custom-assertions/elementCount.js +26 -26
  261. package/test/e2e/nightwatch.conf.js +40 -40
  262. package/test/e2e/runner.js +30 -30
  263. package/test/e2e/specs/test.js +13 -13
  264. package/test/unit/.eslintrc +5 -5
  265. package/test/unit/TestUtil.js +62 -62
  266. package/test/unit/context.html +20 -20
  267. package/test/unit/index.js +13 -13
@@ -1,1060 +1,1060 @@
1
- <template>
2
- <div class="flex-row">
3
- <div class="basic-main">
4
- <criteria-paged :model="model" v-ref:paged @sort="sort">
5
- <criteria partial='criteria' class="search_area" @condition-changed='$parent.selfSearch' v-ref:criteria>
6
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
- <div class="row">
8
- <div class="form-group col-sm-2">
9
- <label class="font_normal_body">客户编号</label>
10
- <input type="text" class="input_search" v-model="model.f_userinfo_code"
11
- style="width: 60%" placeholder="客户编号" condition="f_userinfo_code='{}'">
12
- </div>
13
- <div class="form-group col-sm-2">
14
- <label class="font_normal_body">客户名称</label>
15
- <input type="text" class="input_search" v-model="model.f_user_name" style="width: 60%"
16
- placeholder="客户名称" condition="f_user_name like '%{}%'">
17
- </div>
18
- <div class="form-group col-sm-2">
19
- <label class="font_normal_body">客户电话</label>
20
- <input type="text" class="input_search" v-model="model.f_user_phone" style="width: 60%"
21
- placeholder="客户电话" condition="f_user_phone like '%{}%'">
22
- </div>
23
- <div class="form-group col-sm-2">
24
- <label class="font_normal_body">小&emsp;&emsp;区</label>
25
- <input type="text" class="input_search" v-model="model.f_residential_area"
26
- style="width: 60%" placeholder="小区" condition="f_residential_area like '%{}%'">
27
- </div>
28
- <div class="form-group col-sm-2">
29
- <label class="font_normal_body">详细地址</label>
30
- <input type="text" class="input_search" v-model="model.f_address" style="width: 60%"
31
- placeholder="详细地址" condition="f_address like '%{}%'">
32
- </div>
33
- <div class="form-group col-sm-2" style="width: auto;margin-top:8px;float: right">
34
-
35
- <export-excel-safe :data="$parent.$parent.searchData"
36
- :field="$parent.$parent.excelHeaders" progress="safeGetExportProgress"
37
- sqlurl="rs/logic/SafeExportExcel" sql-name="defectDetails" template-name='安检隐患明细'
38
- :choose-col="true"></export-excel-safe>
39
- <!-- <button class="button_spacing button_search" @click="$parent.$parent.showaudio()" v-if="!$parent.$parent.audioshow">录音</button>-->
40
- <button class="button_spacing button_search" @click="$parent.$parent.showaudio()"
41
- v-if="$parent.$parent.audioshow">隐藏</button>
42
- <button class="button_search" @click="$parent.$parent.toRepair"
43
- v-if="$parent.$parent.canToRepair == '是'">转维修</button>
44
-
45
- <button class="button_spacing button_search" @click="search()">查询</button>
46
- <div style="float: right" class="button_spacing"
47
- :class="{ 'button_shrink_top': $parent.$parent.criteriaShow, 'button_shrink_bottom': !$parent.$parent.criteriaShow }"
48
- @click="$parent.$parent.hidden()"></div>
49
- </div>
50
-
51
- </div>
52
- <div class="row">
53
- <div class="col-sm-4 form-group" v-show="$parent.$parent.criteriaShow" style="margin: 0">
54
- <role-selector-safe role-name="安检员" role-lable="安&nbsp;检&nbsp;员&nbsp;"
55
- @re-res="$parent.$parent.getRes" :value.sync="model.f_checker_id"
56
- v-model="model.f_checker_id" condition="f_checker_name in {}"
57
- :value-multiple="true">
58
- </role-selector-safe>
59
- </div>
60
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
61
- <label class="font_normal_body">检&ensp;查&ensp;项</label>
62
- <v-select :value.sync="model.f_device_type" v-model='model.f_device_type'
63
- :value-single="true" style="width: 60%" class="select_list select"
64
- :options='$parent.$parent.device_types' placeholder='检查项' close-on-select
65
- @change="$parent.$parent.changeDefect"
66
- condition="f_device_type like '%{}%'"></v-select>
67
- <!--<input type="text" class="input_search" v-model="model.f_device_type"-->
68
- <!--style="width: 60%" placeholder="检&ensp;查&ensp;项" condition="f_device_type like '%{}%'">-->
69
- </div>
70
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
71
- <label class="font_normal_body">隐患名称</label>
72
- <v-select :value.sync="model.f_item_name" v-model='model.f_item_name'
73
- :value-single="true" style="width: 60%" class="select_list select"
74
- :options='$parent.$parent.DefectConfigs' placeholder='隐患名称' close-on-select
75
- condition="f_item_name like '%{}%'"></v-select>
76
- </div>
77
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
78
- <label class="font_normal_body">安检起始</label>
79
- <datepicker :value.sync="model.f_check_start" placeholder='安检起始时间' style="width: 60%"
80
- :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
81
- v-model="model.f_check_start" condition="f_offsite_time >='{} 00:00:00'">
82
- </datepicker>
83
- </div>
84
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
85
- <label class="font_normal_body">安检结束</label>
86
- <datepicker :value.sync="model.f_check_end" placeholder='安检结束时间' style="width: 60%"
87
- :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
88
- v-model="model.f_check_end" condition="f_offsite_time <='{} 23:59:59'">
89
- </datepicker>
90
- </div>
91
-
92
- </div>
93
- <div class="row">
94
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
95
- <label class="font_normal_body">维修结果</label>
96
- <v-select class="select_list select" placeholder='维修结果' style="width: 60%"
97
- :value.sync="model.f_repaired" v-model="model.f_repaired"
98
- :options='$parent.$parent.repaireds' filer-key="name" close-on-select clear-button
99
- condition="f_repaired='{}'" :value-single="true">
100
- </v-select>
101
- <!--<input type="text" class="input_search" v-model="model.f_device_type"-->
102
- <!--style="width: 60%" placeholder="检&ensp;查&ensp;项" condition="f_device_type like '%{}%'">-->
103
- </div>
104
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
105
- <label class="font_normal_body">用户类型</label>
106
- <v-select class="select_list select" placeholder='用户类型' style="width: 60%"
107
- :value.sync="model.f_check_type" v-model="model.f_check_type"
108
- :options='$parent.$parent.checktype' filer-key="name" close-on-select clear-button
109
- condition="f_check_type='{}'" :value-single="true">
110
- </v-select>
111
- </div>
112
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
113
- <label class="font_normal_body">片&emsp;&emsp;区</label>
114
- <v-select class="select_list select" placeholder='片区' style="width: 60%"
115
- :value.sync="model.f_slice_area" v-model="model.f_slice_area"
116
- :options='$parent.$parent.sliceArea' filer-key="name" close-on-select clear-button
117
- condition="f_slice_area='{}'" :value-single="true">
118
- </v-select>
119
- </div>
120
-
121
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
122
- <label class="font_normal_body">区&emsp;&emsp;域</label>
123
- <v-select class="select_list select" placeholder='请选择' style="width: 60%"
124
- :value.sync="model.f_pcd" v-model="model.f_pcd" :options='$parent.$parent.pcds'
125
- filer-key="name" clear-button condition="f_pcd in {}" :multiple="true">
126
- </v-select>
127
- </div>
128
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
129
- <label class="font_normal_body">处理人</label>
130
- <input type="text" class="input_search" v-model="model.f_repairman" style="width: 60%"
131
- placeholder="处理人" condition="f_repairman like '%{}%'">
132
- </div>
133
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
134
- <label class="font_normal_body">处理起始</label>
135
- <datepicker :value.sync="model.f_repair_start" placeholder='处理起始时间' style="width: 60%"
136
- :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
137
- v-model="model.f_repair_start" condition="f_repair_date >='{} 00:00:00'">
138
- </datepicker>
139
- </div>
140
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
141
- <label class="font_normal_body">处理结束</label>
142
- <datepicker :value.sync="model.f_repair_end" placeholder='处理结束时间' style="width: 60%"
143
- :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
144
- v-model="model.f_repair_end" condition="f_repair_date <='{} 23:59:59'">
145
- </datepicker>
146
- </div>
147
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
148
- <label class="font_normal_body">处理结果</label>
149
- <v-select class="select_list select" placeholder='处理结果' style="width: 60%"
150
- :value.sync="model.f_repair_result" v-model="model.f_repair_result"
151
- :options='$parent.$parent.repairresults' filer-key="name" close-on-select
152
- clear-button :value-single="true">
153
- </v-select>
154
- </div>
155
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
156
- <label class="font_normal_body">逾期起始</label>
157
- <datepicker :value.sync="model.f_handle_start" placeholder='逾期起始时间' style="width: 60%"
158
- :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
159
- v-model="model.f_handle_start" condition="f_handle_date >='{} 00:00:00'">
160
- </datepicker>
161
- </div>
162
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
163
- <label class="font_normal_body">逾期结束</label>
164
- <datepicker :value.sync="model.f_handle_end" placeholder='逾期结束时间' style="width: 60%"
165
- :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
166
- v-model="model.f_handle_end" condition="f_handle_date <='{} 23:59:59'">
167
- </datepicker>
168
- </div>
169
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
170
- <label class="font_normal_body">逾期状态</label>
171
- <v-select class="select_list select" placeholder='逾期状态' style="width: 60%"
172
- :value.sync="model.f_is_handle" v-model="model.f_is_handle"
173
- :options='$parent.$parent.ishandles' filer-key="name" close-on-select clear-button
174
- condition="f_is_handle='{}'" :value-single="true">
175
- </v-select>
176
- </div>
177
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
178
- <label class="font_normal_body">处理方式</label>
179
- <v-select class="select_list select" placeholder='处理方式' style="width: 60%"
180
- :value.sync="model.f_is_repaired" v-model="model.f_is_repaired"
181
- :options='$parent.$parent.is_repaired' filer-key="name" close-on-select clear-button
182
- condition="f_is_repaired='{}'" :value-single="true">
183
- </v-select>
184
- </div>
185
- <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
186
- <label class="font_normal_body">隐患状态</label>
187
- <v-select class="select_list select" placeholder='隐患状态' style="width: 60%"
188
- :value.sync="model.is_repaired" v-model="model.is_repaired"
189
- :options='$parent.$parent.is_repaireds' filer-key="name" close-on-select
190
- clear-button condition="is_repaired='{}'" :value-single="true">
191
- </v-select>
192
- </div>
193
- </div>
194
- <modal :show.sync="$parent.$parent.showModal" v-ref:modal>
195
- <div slot="modal-header" class="modal-header">
196
- <h4 class="modal-title">
197
- 选择计划
198
- </h4>
199
- </div>
200
- <div slot="modal-body" class="modal-body">
201
- <plan-chooser :f.sync="$parent.$parent.fun" v-ref:chooser></plan-chooser>
202
- </div>
203
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
204
- <button class="button_search" @click="$parent.$parent.ok">确认</button>
205
- <button class="button_search" @click="$parent.$parent.cancel">取消</button>
206
- </div>
207
- </modal>
208
- </div>
209
- </criteria>
210
- <data-grid class="list_area table_sy" style="overflow: hidden" :model="model" partial='list' v-ref:grid>
211
- <template partial='head'>
212
- <tr>
213
- <th v-if="$parent.$parent.$parent.canToRepair == '是'">
214
- <nobr>选择</nobr>
215
- </th>
216
- <th>
217
- <nobr>检查项</nobr>
218
- </th>
219
- <th>
220
- <nobr>隐患原因</nobr>
221
- </th>
222
- <th>
223
- <nobr>隐患别名</nobr>
224
- </th>
225
- <th>
226
- <nobr>隐患级别</nobr>
227
- </th>
228
- <th>
229
- <nobr>客户编号</nobr>
230
- </th>
231
- <th>
232
- <nobr>客户名称</nobr>
233
- </th>
234
- <th>
235
- <nobr>客户电话</nobr>
236
- </th>
237
- <th>
238
- <nobr>客户小区</nobr>
239
- </th>
240
- <th>
241
- <data-order field="f_address" name="客户地址"></data-order>
242
- </th>
243
-
244
- <th>
245
- <data-order field="f_offsite_time" name="安检时间"></data-order>
246
- </th>
247
- <th>
248
- <nobr>逾期时间</nobr>
249
- </th>
250
- <th>
251
- <nobr>逾期状态</nobr>
252
- </th>
253
- <th>
254
- <nobr>安检员</nobr>
255
- </th>
256
- <th>
257
- <nobr>处理方式</nobr>
258
- </th>
259
- <th>
260
- <nobr>处理人</nobr>
261
- </th>
262
- <th>
263
- <nobr>处理时间</nobr>
264
- </th>
265
- <th>
266
- <nobr>处理结果</nobr>
267
- </th>
268
- <th>
269
- <nobr>操作</nobr>
270
- </th>
271
- </tr>
272
- </template>
273
- <template partial='body'>
274
- <td v-if="$parent.$parent.$parent.canToRepair == '是'"
275
- style="text-align: center;white-space:nowrap;"><input type="checkbox"
276
- v-if="['现场已处理', '维修已处理', '无隐患', '转维修'].indexOf(row.f_is_repaired) == -1"
277
- @click="$event.cancelBubble = true" :checked="$parent.$parent.$parent.isChecked(row)"
278
- @change="$parent.$parent.$parent.setCheckes(row)"></input></td>
279
- <td style="text-align: center">{{ row.f_device_type }}</td>
280
- <td style="text-align: center">{{ row.f_item_name }}/{{ row.f_item_value }}</td>
281
- <td style="text-align: center">{{ row.f_alias_name }}</td>
282
- <td style="text-align: center">{{ row.f_defect_level }}</td>
283
- <td style="text-align: center">{{ row.f_userinfo_code }}</td>
284
- <td style="text-align: center">{{ row.f_user_name }}</td>
285
- <td style="text-align: center">{{ row.f_user_phone }}</td>
286
- <td style="text-align: center">{{ row.f_residential_area }}</td>
287
- <td style="text-align: center">{{ row.f_address }}</td>
288
- <td style="text-align: center">{{ row.f_offsite_time }}</td>
289
- <td style="text-align: center">{{ row.f_handle_date }}</td>
290
- <td style="text-align: center">{{ row.f_is_handle }}</td>
291
- <td style="text-align: center">{{ row.f_checker_name }}</td>
292
- <td style="text-align: center">{{ row.f_is_repaired }}</td>
293
- <td style="text-align: center">{{ row.f_repairman }}</td>
294
- <td style="text-align: center">{{ row.f_repair_date }}</td>
295
- <td style="text-align: center">{{ row.f_repair_result }}</td>
296
- <td style="text-align: center">
297
- <button
298
- v-if="row.f_is_repaired == '隐患未处理' || (row.f_is_repaired == '用户自行整改' && row.f_repair_result == '未处理')"
299
- class="button_spacing button_search-1"
300
- @click="$parent.$parent.$parent.solveDefect(row, 'solve')">处理隐患</button>
301
- </td>
302
- </template>
303
- </data-grid>
304
- </criteria-paged>
305
- <check-msg v-if="showcheckmsg" :show="showcheckmsg" :data="checkInfo"></check-msg>
306
- </div>
307
- <modal :show.sync="showModal2" :backdrop="false">
308
- <div slot="modal-header" class="modal-header">
309
- <h4 class="modal-title">
310
- 转维修
311
- </h4>
312
- </div>
313
- <div slot="modal-body" class="modal-body">
314
- <div class="row" style="margin-top: 10px">
315
- <label class="control-label font text-left"
316
- style="float:left;margin-left:20%;margin-top:5px">派发类型</label>
317
- <div class="col-xs-8 col-md-8">
318
- <v-select :value.sync="selectData.dispatchType" :value-single="true"
319
- v-model="selectData.dispatchType" :options='dispatchTypeOptions' placeholder='派发类型'
320
- close-on-select>
321
- </v-select>
322
- </div>
323
- </div>
324
- <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType == '派发给维修员'">
325
- <label class="control-label font text-left"
326
- style="float:left;margin-left:20%;margin-top:5px">维&ensp;修&ensp;员</label>
327
- <div class="col-xs-8 col-md-8">
328
- <v-select :value.sync="selectData.f_repairman" :value-single="true" :options='repairers'
329
- placeholder='请选择维修员' close-on-select></v-select>
330
- </div>
331
- </div>
332
- <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType == '派发给站点'">
333
- <label class="control-label font text-left"
334
- style="float:left;margin-left:20%;margin-top:5px">站&ensp;&ensp;&ensp;&ensp;点</label>
335
- <div class="col-xs-8 col-md-8">
336
- <right-tree islist :userid="userid"
337
- :source="'dep=this.getParentByType($organization$).getSpecialResByType($department$),tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))'"
338
- @re-res="getSiteRes"></right-tree>
339
- </div>
340
- </div>
341
- <div class="row" style="margin-top: 10px"
342
- v-if="selectData.dispatchType == '派发给站点' || selectData.dispatchType == '派发给维修员'">
343
- <label class="control-label font text-left"
344
- style="float:left;margin-left:20%;margin-top:5px">报修类型</label>
345
- <div class="col-xs-8 col-md-8">
346
- <v-select :value.sync="selectData.f_repairtype" style="width:60%" class="select select_list"
347
- :value-single="true" :options='repairTypeOptions' close-on-select>
348
- </v-select>
349
- </div>
350
- </div>
351
- <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType == '派发给站点' || selectData.dispatchType == '派发给维修员'">
352
- <label class="control-label font text-left"
353
- style="float:left;margin-left:20%;margin-top:5px">备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注</label>
354
- <div class="col-xs-8 col-md-8">
355
- <textarea style="width: 60%; height: 100px" v-model="selectData.f_remarks"></textarea>
356
- </div>
357
- </div>
358
- </div>
359
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
360
- <button class="button_search" @click="rectification">处理</button>
361
- <button class="button_search" @click="cancel1">取消</button>
362
- </div>
363
- </modal>
364
- <modal :show.sync="showSolveModal" v-ref:solveModal>
365
- <div slot="modal-header" class="modal-header">
366
- <h4 class="modal-title">
367
- {{ solveModal.preData.type == 'view' ? '处理详情' : '处理隐患' }}
368
- </h4>
369
- </div>
370
- <div slot="modal-body" class="modal-body">
371
- <div style="width: 100%;height: 36px;background-color: #f1f8ff;float: left">
372
- <div style="width: 8px;height: 100%;background-color: #6aa6e2;margin-right: 20px;float: left"></div>
373
- <div style="width: auto;height:100%;float: left;">
374
- <p class="title-font" style="margin-top: 5px">处理前</p>
375
- </div>
376
- </div>
377
-
378
- <div class="col-sm-6" style="margin-top: 10px">
379
- <label class="font_normal_body">安&nbsp;检&nbsp;员</label>
380
- <input class="input_search" style="width: 60%" type="text" disabled="true"
381
- v-model="check.f_checker_name" placeholder="安检员">
382
- </div>
383
- <div class="col-sm-6" style="margin-top: 10px">
384
- <label class="font_normal_body">安检时间</label>
385
- <input class="input_search" style="width: 60%" type="text" disabled="true"
386
- v-model="check.f_offsite_time" placeholder="安检时间">
387
- </div>
388
- <div class="col-sm-12" style="margin-bottom: 10px">
389
- <label class="font_normal_body">隐患图片</label>
390
- <img-self :width="200" :height="200" :src="solveModal.preData.defectImg"></img-self>
391
- </div>
392
-
393
- <div style="width: 100%;height: 36px;background-color: #f1f8ff;float: left">
394
- <div style="width: 8px;height: 100%;background-color: #6aa6e2;margin-right: 20px;float: left"></div>
395
- <div style="width: auto;height:100%;float: left;">
396
- <p class="title-font" style="margin-top: 5px">处理后</p>
397
- </div>
398
- </div>
399
- <div class="col-sm-6" style="margin-top: 10px">
400
- <label class="font_normal_body">处&nbsp;理&nbsp;人</label>
401
- <input class="input_search" style="width: 60%" disabled="true" type="text"
402
- v-model="solveModal.uploadData.f_repairman" placeholder="处理人">
403
- </div>
404
- <div class="col-sm-6" style="margin-top: 10px">
405
- <label class="font_normal_body">处理时间</label>
406
- <datepicker :disabled="solveModal.preData.type == 'view'" placeholder='处理时间' style="width:60%"
407
- :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
408
- :value.sync="solveModal.uploadData.f_repair_date">
409
- </datepicker>
410
- </div>
411
- <div v-if="solveModal.preData.type == 'solve'" class="col-sm-12" style="margin-bottom: 10px">
412
- <label class="font_normal_body">处理后图片</label>
413
- <avatar-upload :width="200" :height="200" :img-src.sync="solveModal.uploadData.imgSrc"
414
- :filename.sync="solveModal.uploadData.filename" v-ref:imginfo></avatar-upload>
415
- </div>
416
- <div v-if="solveModal.preData.type == 'view'" class="col-sm-12" style="margin-bottom: 10px">
417
- <label class="font_normal_body">处理后图片</label>
418
- <img-self :width="200" :height="200" :src="solveModal.preData.repairedImg"></img-self>
419
- </div>
420
- </div>
421
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
422
- <button class="button_search" v-if="solveModal.preData.type == 'solve'" @click="ok2">确认</button>
423
- <button class="button_search" @click="cancel2">取消</button>
424
- </div>
425
- </modal>
426
- </div>
427
- </template>
428
-
429
- <script>
430
- import { PagedList } from 'vue-client'
431
- import Vue from 'vue'
432
- import co from 'co'
433
- import HttpResetClass from "vue-client/src/plugins/HttpResetClass";
434
- import BenzAMRRecorder from 'benz-amr-recorder'
435
- import * as Util from "../../Util";
436
-
437
- const upSolveDefect = function* (self) {
438
- let uploadData = self.solveModal.uploadData
439
- //tag)
440
- self.$resetpost('/rs/logic/pcRepairDefect', self.solveModal.uploadData, { resolveMsg: null, rejectMsg: null })
441
- .then(res => {
442
- if (res.data.code == 200) {
443
- self.$showMessage('隐患已处理。')
444
- self.showSolveModal = false
445
- self.$refs.paged.$refs.criteria.search()
446
- }
447
- })
448
- }
449
-
450
- //获取json配置文件
451
- let asyncReady = async function (self) {
452
- // 获取配置信息
453
- try {
454
- let res = await Vue.resetget(`/phone/rs/vue`, { data: {} }, { resolveMsg: null, rejectMsg: null })
455
- Vue.config = res.data
456
- self.getDefectInfoConfig(res.data)
457
- } catch (error) {
458
- // 忽略704,文件找不到异常R
459
- if (error.status !== 704) {
460
- throw error
461
- }
462
- }
463
- }
464
-
465
- let select = function* (self) {
466
- let http = new HttpResetClass()
467
- let getGasman = yield http.load('POST', '/rs/search', {
468
- source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1))',
469
- userid: self.$login.f.id
470
- }, { resolveMsg: null, rejectMsg: null })
471
- self.checkersid.push({ label: '全部', value: '' })
472
- getGasman.data.forEach((checker) => {
473
- self.checkersid.push({ label: checker.name, value: checker.id })
474
- })
475
- }
476
-
477
- export default {
478
- title: '隐患明细查看',
479
- data() {
480
- let model = new PagedList('rs/sql/defectDetails', 20)
481
- model.f_plan_id = ''
482
- model.f_approved = ''
483
- model.f_entry = ''
484
- model.f_no_checkplan = ''
485
- model.f_filialeid = `('${this.$login.f.orgid}')`
486
- //model.f_check_type='民用'
487
- // let searchData={
488
- // f_plan_id: this.model.f_checker_id==undefined?"":this.model.f_checker_id,
489
- // f_approved: this.model.f_approved,
490
- // f_entry_status: this.model.f_entry,
491
- // f_no_checkplan:this.model.f_no_checkplan[0],
492
- // f_filialeid: this.model.f_filialeid,
493
- // //orderitem: this.model.f_offsite_time,
494
- // //condition:this.model.condition
495
- // }
496
- // model.f_subcompany = this.$login.f.f_fengongsi
497
- return {
498
- audioshow: false,
499
- showSolveModal: false,
500
- searchData: {
501
- condition: "1=1",
502
- },
503
- model: model,
504
- //searchData:searchData,
505
- excelHeaders: {
506
- 'f_device_type': '检查项',
507
- 'f_item_name': '隐患名称',
508
- 'f_item_value': '隐患原因',
509
- 'f_alias_name': '隐患别名',
510
- 'f_userinfo_code': '客户编号',
511
- 'f_user_name': '客户姓名',
512
- 'f_user_phone': '客户电话',
513
- 'f_residential_area': '小区',
514
- 'f_address': '客户地址',
515
- 'f_offsite_time': '安检时间',
516
- 'f_handle_date': '逾期时间',
517
- 'f_is_handle': '逾期状态',
518
- 'f_checker_name': '安检员',
519
- 'f_is_repaired': '处理方式',
520
- 'f_repairman': '处理人',
521
- 'f_repair_date': '处理时间',
522
- 'f_repair_result': '处理结果'
523
- },
524
- fun: this.$login.f,
525
- checkersid: [],
526
- safetype: this.getSafeParam('安检类型'),
527
- criteriaShow: false,
528
- repaireds: [{ label: '全部', value: '' }, { label: '已修', value: '已修' }, { label: '未修', value: '未修' }],
529
- checktype: [{ label: '全部', value: '' }, { label: '民用', value: '民用' }, { label: '非民用', value: '非民用' }],
530
- showModal: false,
531
- pcds: [],
532
- f_approval_states: this.getSafeParam('安检单审核状态'),
533
- f_entry_status: this.getSafeParam('安检状态'),
534
- f_checkplans: this.getSafeParam('有无计划'),
535
- is_repaired: this.getSafeParam('安检患隐处理方式'),
536
- is_repaireds: [{ label: '全部', value: '' }, { label: '已处理未消除隐患', value: '已处理未消除隐患' }, { label: '已处理已消除隐患', value: '已处理已消除隐患' }],
537
- showcheckmsg: false,
538
- checkInfo: {},
539
- repairers: [],
540
- dispatchTypeOptions: [{ label: '派发给站点', value: '派发给站点' }, { label: '派发给维修员', value: '派发给维修员' }, { label: '用户自行整改', value: '用户自行整改' }],
541
- canToRepair: this.$appdata.getSingleValue('隐患明细转维修') || '是',
542
- repairTypeOptions: this.$appdata.getParam('报修类型'),
543
- selectData: {
544
- dispatchType: '',
545
- f_repairman: '',
546
- f_remarks: '',
547
- f_repairtype: ''
548
- },
549
- checkes: [],
550
- showModal2: false,
551
- solveModal: {
552
- preData: {
553
- type: 'view',
554
- defectImg: '',
555
- repairedImg: ''
556
- },
557
- uploadData: {
558
- id: '',
559
- f_repairman: this.$login.f.name,
560
- f_repair_date: Util.getNowDate().substr(0, 10),
561
- f_repair_path: '',
562
- imgSrc: '',
563
- filename: ''
564
- }
565
- },
566
- orderDefault: "'f_offsite_time'",
567
- orderFields: {
568
- f_offsite_time: 'no'
569
- },
570
- sliceArea: [],
571
- cbc: [],
572
- DefectConfig: '',
573
- DefectConfigs: [{ label: '全部', value: '' }, { label: '气量异常差值', value: '气量异常差值' }],
574
- ishandles: [{ label: '全部', value: '' }, { label: '未逾期', value: '未逾期' }, { label: '已逾期', value: '已逾期' }],
575
- repairresults: [{ label: '全部', value: '' }, { label: '已处理', value: '已处理' }, { label: '未处理', value: '未处理' }],
576
- device_types: [{ label: '全部', value: '' }],
577
- }
578
- },
579
- methods: {
580
- ok2() {
581
- if (!(this.solveModal.uploadData.filename && this.solveModal.uploadData.filename.length > 0)) {
582
- this.$showMessage('请录入处理后照片')
583
- return
584
- }
585
- co(upSolveDefect(this))
586
- },
587
- cancel2() {
588
- this.showSolveModal = false
589
- this.showToRepairModal = false
590
- },
591
- solveDefect(row, type) {
592
- if (row.f_repair_path && row.f_repair_path.startsWith('http')) {
593
- this.solveModal.preData.repairedImg = row.f_repair_path
594
- } else {
595
- this.solveModal.preData.repairedImg = '/rs/image/file/' + row.f_repair_path
596
- }
597
- this.solveModal.preData.defectImg = '/rs/image/file/' + row.f_path
598
- this.solveModal.uploadData.id = row.id
599
- this.solveModal.preData.type = type
600
- if (type == 'view') {
601
- this.solveModal.preData.f_repair_path = '/rs/image/file/' + row.f_repair_path
602
- this.solveModal.uploadData.f_repairman = row.f_repairman
603
- this.solveModal.uploadData.f_repair_date = row.f_repair_date
604
- } else {
605
- this.solveModal.uploadData.f_repairman = this.$login.f.name
606
- this.solveModal.uploadData.f_repair_date = Util.getNowDate().substr(0, 10)
607
- }
608
- this.showSolveModal = !this.showSolveModal
609
- },
610
- getEmp() {
611
- let val = { source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($维修员$) != -1 ))', userid: `${this.$login.f.id}` }
612
- let http = new HttpResetClass()
613
- http.load('POST', '/rs/search', { data: val }, { resolveMsg: null, rejectMsg: null }).then((res) => {
614
- if (res.data.length == 0) {
615
- this.repairers = []
616
- return
617
- }
618
- res.data.forEach((user) => {
619
- this.repairers.push({ label: user.name, value: user.name })
620
- })
621
- })
622
- },
623
- getSiteRes(obj) {
624
- console.log('siteRes ---> ')
625
- console.log(obj)
626
- if (obj.resids[0]) {
627
- this.selectData.f_meetunit = obj.res.join('.')
628
- this.selectData.f_reciever = obj.resids.join('.')
629
- this.selectData.f_outlets = obj.res[obj.res.length - 1]
630
- } else {
631
- this.selectData.f_meetunit = ''
632
- this.selectData.f_reciever = ''
633
- this.selectData.f_outlets = ''
634
- }
635
- },
636
- cancel1() {
637
- this.showModal2 = false
638
- this.selectData = {
639
- dispatchType: '',
640
- f_repairman: '',
641
- f_remarks: '',
642
- f_repairtype: ''
643
- }
644
- },
645
- async rectification() {
646
- if (this.selectData.dispatchType == '用户自行整改') {
647
- let defectIdStr = ''
648
- let defectIds = []
649
- for (let i = 0; i < this.dangerGroups.length; i++) {
650
- for (let j = 0; j < this.dangerGroups[i].dangers.length; j++) {
651
- defectIds.push(`'${this.dangerGroups[i].dangers[j].f_defect_id}'`)
652
- }
653
- }
654
- defectIdStr = `(${defectIds.join(',')})`
655
- let http = new HttpResetClass()
656
- let sql = `update t_devices_items set f_deal_dispose = '自行整改' where id in ${defectIdStr}`
657
- http.load('POST', 'rs/logic/runSQL', { data: { sql: sql } },
658
- { resolveMsg: null, rejectMsg: null }).then(()=>{
659
- this.showModal3 = false
660
- this.checkes = []
661
- this.cancel1()
662
- this.$showMessage('修改成功')
663
- }).catch(()=>{
664
- this.showModal3 = false
665
- this.checkes = []
666
- this.cancel1()
667
- this.$showMessage('修改异常,请检查网络状况后重新尝试。')
668
- })
669
- } else {
670
- await this.repair()
671
- }
672
- },
673
- async repair() {
674
- if (this.selectData.dispatchType) {
675
- if (this.selectData.dispatchType == '派发给站点') {
676
- if (!this.selectData.f_reciever) {
677
- this.$showMessage('请选择部门!')
678
- return
679
- }
680
- } else {
681
- if (!this.selectData.f_repairman) {
682
- this.$showMessage('请选择维修员!')
683
- return
684
- }
685
- }
686
- } else {
687
- this.$showMessage('请选择派发类型!')
688
- return
689
- }
690
-
691
- if (!this.selectData.f_repairtype) {
692
- this.$showMessage('请选择报修类型!')
693
- return
694
- }
695
- this.showModal3 = true
696
- let act = {}
697
- let toRepair = ''
698
- let successCount = 0
699
- if (this.selectData.dispatchType == '派发给站点') {
700
- act = { f_meetunit: this.selectData.f_meetunit, f_reciever: this.selectData.f_reciever, f_service_acitivity_type: '派单' }
701
- toRepair = null
702
- } else {
703
- console.log('派发给维修员---------' + this.selectData.f_repairman)
704
- act = { f_meetunit: '', f_reciever: this.selectData.f_repairman, f_service_acitivity_type: '派单' }
705
- toRepair = '一级派单'
706
- }
707
- let rep = {
708
- loginUser: {
709
- name: this.$login.f.name,
710
- ename: this.$login.f.ename
711
- },
712
- f_meetunit: this.$login.f.deps,
713
- f_attendant: this.$login.f.name,
714
- f_outlets: this.$login.f.deps,
715
- f_remarks: this.selectData.f_remarks,
716
- f_repairtype: this.selectData.f_repairtype,
717
- toRepair: toRepair,
718
- activity: act
719
- }
720
- for (let i = 0; i < this.dangerGroups.length; i++) {
721
- let defectIdStr = ''
722
- const defectIds = []
723
- for (let j = 0; j < this.dangerGroups[i].dangers.length; j++) {
724
- defectIds.push(`'${this.dangerGroups[i].dangers[j].f_defect_id}'`)
725
- }
726
- defectIdStr = `(${defectIds.join(',')})`
727
- const data = {
728
- id: this.dangerGroups[i].dangers[0].f_paper_id,
729
- repData: rep,
730
- source: 'pc',
731
- defectIdStr: defectIdStr
732
- }
733
- console.log('data=', JSON.stringify(data))
734
- try {
735
- let result = await new HttpResetClass().load('post', '/rs/logic/phoneUploadRectification', data, { resolveMsg: null, rejectMsg: null })
736
- if (result.data.code == 200) {
737
- successCount += result.data.successcon
738
- this.progressbarWidth = Math.ceil((i + 1) * 100 / (this.dangerGroups.length))
739
- }
740
- } catch (e) {
741
- this.showModal3 = false
742
- this.$showMessage('网络异常,请稍后再试!')
743
- return
744
- }
745
- }
746
- this.showModal3 = false
747
- this.cancel1()
748
- this.$showMessage('本次转维修成功' + successCount + '单')
749
- },
750
- isChecked(row) {
751
- return this.checkes.findIndex(item => item.f_defect_id == row.f_defect_id) != -1
752
- },
753
- setCheckes(row) {
754
- let index = this.checkes.findIndex(item => item.f_defect_id == row.f_defect_id)
755
- if (index < 0) {
756
- this.checkes.push(row)
757
- } else {
758
- this.checkes.splice(index, 1)
759
- }
760
- console.log('this.checkes=', JSON.stringify(this.checkes))
761
- },
762
- toRepair() {
763
- console.log('this.checkes=', JSON.stringify(this.checkes))
764
- if (this.checkes.length == 0) {
765
- return this.$showMessage('请先选择需要转维修的隐患!')
766
- }
767
-
768
- const dangerGroups = []
769
- for (const danger of this.checkes) {
770
- let i = dangerGroups.findIndex(dangerGroup => dangerGroup.f_userinfo_code === danger.f_userinfo_code)
771
- if (i == -1) {
772
- dangerGroups.push({
773
- f_userinfo_code: danger.f_userinfo_code,
774
- dangers: []
775
- })
776
- i = dangerGroups.length - 1
777
- }
778
- dangerGroups[i].dangers.push(danger)
779
- }
780
- this.dangerGroups = dangerGroups
781
- console.log('this.dangerGroups=', JSON.stringify(this.dangerGroups))
782
- this.showModal2 = true
783
- },
784
- changeDefect(val) {
785
- try {
786
- if (val) {
787
- for (var Key1 in this.DefectConfig) {
788
- if (Key1 == val) {
789
- this.DefectConfigs = [{ label: '全部', value: '' }]
790
- for (var Key2 in this.DefectConfig[Key1].items) {
791
- this.DefectConfigs.push({ label: Key2, value: Key2 })
792
- }
793
- return
794
- }
795
- }
796
- } else if (val == '') {
797
- this.DefectConfigs = [{ label: '全部', value: '' }]
798
- for (var Key1 in this.DefectConfig) {
799
- for (var Key2 in this.DefectConfig[Key1].items) {
800
- this.DefectConfigs.push({ label: Key2, value: Key2 })
801
- }
802
- }
803
- }
804
- } catch (e) {
805
- //tag
806
- }
807
- },
808
- getDefectInfoConfig(val) {
809
- try {
810
- if (val.safecheck.DevicesSetConfig != undefined) {
811
- this.DefectConfig = val.safecheck.DevicesConfig
812
- // 获取到配置项,进行遍历,获取每个隐患项
813
- for (var Key1 in this.DefectConfig) {
814
- this.device_types.push({ label: Key1, value: Key1 })
815
- for (var Key2 in this.DefectConfig[Key1].items) {
816
- this.DefectConfigs.push({ label: Key2, value: Key2 })
817
- }
818
- }
819
- // 非民用或其他配置项加入,在进行遍历
820
- }
821
- } catch (e) {
822
- //tag
823
- }
824
- },
825
- showaudio() {
826
- //tag
827
- this.audioshow = !this.audioshow
828
- //tag
829
- },
830
- getmeterbook(val) {
831
- this.cbc = []
832
- this.cbc.push({
833
- label: '全部',
834
- value: ''
835
- })
836
- if (val == '') {
837
-
838
- this.cbcs.forEach(res => {
839
- this.cbc.push({
840
- label: res.f_book_name,
841
- value: res.id
842
- })
843
- })
844
- } else {
845
- this.cbcs.forEach(res => {
846
- if (res.f_book_slice_area == val) {
847
- this.cbc.push({
848
- label: res.f_book_name,
849
- value: res.id
850
- })
851
- }
852
- })
853
- }
854
- },
855
- getSafeParam(val) {
856
- if (this.$appdata.getParam(val)) {
857
- return [{ label: '全部', value: '' }, ...this.$appdata.getParam(val)]
858
- } else {
859
- return [{ label: '全部', value: '' }]
860
- }
861
-
862
- },
863
- Mreadibook(val) {
864
- if (val) {
865
- new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
866
- data: {
867
- items: 'name',
868
- tablename: 't_zone',
869
- condition: `parentid in ${val}`,
870
- orderitem: 'id'
871
- }
872
- }, { resolveMsg: null, rejectMsg: null }).then((res) => {
873
- this.sliceArea = [{
874
- label: '全部',
875
- value: ''
876
- }]
877
- res.data.forEach(ress => {
878
- this.sliceArea.push({
879
- label: ress.name,
880
- value: ress.name
881
- })
882
- })
883
-
884
- })
885
- }
886
- },
887
- getAllMeterBook(val) {
888
- this.cbcs = []
889
- if (val) {
890
- new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
891
- data: {
892
- items: 'f_book_name,f_book_slice_area,id',
893
- tablename: 't_meter_book',
894
- condition: `f_filiale_id in ${val}`,
895
- orderitem: 'id'
896
- }
897
- }, { resolveMsg: null, rejectMsg: null }).then((res) => {
898
- res.data.forEach(ress => {
899
- this.cbcs.push({
900
- id: ress.id,
901
- f_book_name: ress.f_book_name,
902
- f_book_slice_area: ress.f_book_slice_area
903
- })
904
- })
905
- this.cbc = []
906
- this.cbc.push({
907
- label: '全部',
908
- value: ''
909
- })
910
- this.cbcs.forEach(res => {
911
- this.cbc.push({
912
- label: res.f_book_name,
913
- value: res.id
914
- })
915
- })
916
- })
917
- }
918
- },
919
- getRes(obj) {
920
- this.model.f_filialeid = this.$login.convertToIn(obj.resids);
921
- this.searchData.f_filialeid = this.$login.convertToIn(obj.resids);
922
- this.Mreadibook(this.model.f_filialeid)
923
- // this.getAllMeterBook(this.model.f_filialeid)
924
- //this.$refs.paged.$refs.criteria.search()
925
- },
926
-
927
- change(row) {
928
- // Vue.$login = {jwt: row.f_checker_id}
929
- asyncReady(this).then(() => {
930
- ////tag)
931
- row.f_upload_state = '已传'
932
- this.$goto('new-check-paper', { f_plan_id: row.f_check_plan_id, item: row, role: 'view' }, 'self')
933
- }).catch(
934
- (respanse) => {
935
- alert('获取配置文件失败')
936
- })
937
- },
938
- readConfig() {
939
- let gen = asyncReady(this)
940
- return co(gen)
941
- },
942
- showChooser() {
943
- this.showModal = true
944
- },
945
- hidden() {
946
- this.criteriaShow = !this.criteriaShow
947
- },
948
- refresh() {
949
- this.$refs.paged.$refs.criteria.search()
950
- },
951
- ok() {
952
- this.showModal = false
953
- if (this.$refs.paged.$refs.criteria.$refs.modal.$children[0].selectedRow.id) {
954
- this.model.f_plan_id = this.$refs.paged.$refs.criteria.$refs.modal.$children[0].selectedRow.id
955
- this.model.f_check_plan = this.$refs.paged.$refs.criteria.$refs.modal.$children[0].selectedRow
956
- }
957
- },
958
- cancel() {
959
- this.showModal = false
960
- this.model.f_check_plan = { f_plan_name: '', id: '' }
961
- this.model.f_plan_id = ''
962
- },
963
- print(row) {
964
- this.showcheckmsg = true
965
- this.checkInfo = row
966
- },
967
-
968
- sort(field, rule) {
969
- // 将所有排序方式设为不排序,实现相互排斥
970
- for (let key in this.orderFields) {
971
- if (key === field) {
972
- this.orderFields[key] = rule
973
- } else {
974
- this.orderFields[key] = 'no'
975
- }
976
- }
977
- // 如果新规则不排序,还原为默认排序
978
- if (rule === 'no') {
979
- this.model.paramSource.orderitem = `'${this.orderDefault}'`
980
- } else {
981
- this.model.paramSource.orderitem = `'${field} ${rule}'`
982
- }
983
- this.search()
984
- },
985
- search() {
986
- this.$refs.paged.$refs.criteria.search()
987
- },
988
- selfSearch(args) {
989
- ////tag
990
- if (args.model.f_repair_result == '已处理') {
991
- args.condition += ` and f_repair_date != '****-**-** **:**:**' `
992
- }
993
- if (args.model.f_repair_result == '未处理') {
994
- args.condition += ` and f_repair_date = '****-**-** **:**:**' `
995
- }
996
- args.condition += ` and f_filialeid in ${this.model.f_filialeid} `
997
- this.model.search(args.condition, args.model, args.condValue)
998
- },
999
- getPcds(val) {
1000
- this.pcds = [{ label: '全部', value: '' }]
1001
- new HttpResetClass().load("POST", `/rs/sql/safe_singleTable_OrderBy`,
1002
- { data: { items: "*", tablename: "t_pcd", orderitem: "id", condition: `f_orgid in ${val}` } },
1003
- { resolveMsg: null, rejectMsg: null }).then((pcdlist) => {
1004
- pcdlist.data.forEach((result) => {
1005
- this.pcds.push({ label: result.f_pcd, value: result.f_pcd })
1006
- })
1007
- })
1008
- },
1009
- },
1010
-
1011
- ready() {
1012
- this.getEmp()
1013
- this.readConfig()
1014
- this.function = this.f
1015
- this.getPcds(`('${this.$login.f.orgid}')`)
1016
- let gen = select(this)
1017
- // this.Mreadibook(`('${this.$login.f.orgid}')`)
1018
- co(gen)
1019
- },
1020
- watch: {
1021
- 'model.f_no_checkplan'(val) {
1022
- if (this.model.f_no_checkplan) {
1023
- this.searchData.f_no_checkplan = val
1024
- }
1025
- if (this.model.f_no_checkplan == '有计划安检') {
1026
-
1027
- this.showChooser()
1028
- }
1029
- },
1030
- 'model.condition'(val) {
1031
- if (val) {
1032
- this.searchData.condition = val
1033
- }
1034
-
1035
- },
1036
- 'model.f_entry'(val) {
1037
- if (val) {
1038
- this.searchData.f_entry_status = val
1039
-
1040
- }
1041
- },
1042
- 'model.f_plan_id'(val) {
1043
- if (val) {
1044
- this.searchData.f_plan_id = val
1045
- }
1046
- },
1047
- 'model.f_slice_area'(val) {
1048
- if (val) {
1049
-
1050
- }
1051
- },
1052
- 'model.f_approved'(val) {
1053
- if (val) {
1054
- this.searchData.f_approved = val
1055
- }
1056
- },
1057
- }
1058
-
1059
- }
1060
- </script>
1
+ <template>
2
+ <div class="flex-row">
3
+ <div class="basic-main">
4
+ <criteria-paged :model="model" v-ref:paged @sort="sort">
5
+ <criteria partial='criteria' class="search_area" @condition-changed='$parent.selfSearch' v-ref:criteria>
6
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <div class="row">
8
+ <div class="form-group col-sm-2">
9
+ <label class="font_normal_body">客户编号</label>
10
+ <input type="text" class="input_search" v-model="model.f_userinfo_code"
11
+ style="width: 60%" placeholder="客户编号" condition="f_userinfo_code='{}'">
12
+ </div>
13
+ <div class="form-group col-sm-2">
14
+ <label class="font_normal_body">客户名称</label>
15
+ <input type="text" class="input_search" v-model="model.f_user_name" style="width: 60%"
16
+ placeholder="客户名称" condition="f_user_name like '%{}%'">
17
+ </div>
18
+ <div class="form-group col-sm-2">
19
+ <label class="font_normal_body">客户电话</label>
20
+ <input type="text" class="input_search" v-model="model.f_user_phone" style="width: 60%"
21
+ placeholder="客户电话" condition="f_user_phone like '%{}%'">
22
+ </div>
23
+ <div class="form-group col-sm-2">
24
+ <label class="font_normal_body">小&emsp;&emsp;区</label>
25
+ <input type="text" class="input_search" v-model="model.f_residential_area"
26
+ style="width: 60%" placeholder="小区" condition="f_residential_area like '%{}%'">
27
+ </div>
28
+ <div class="form-group col-sm-2">
29
+ <label class="font_normal_body">详细地址</label>
30
+ <input type="text" class="input_search" v-model="model.f_address" style="width: 60%"
31
+ placeholder="详细地址" condition="f_address like '%{}%'">
32
+ </div>
33
+ <div class="form-group col-sm-2" style="width: auto;margin-top:8px;float: right">
34
+
35
+ <export-excel-safe :data="$parent.$parent.searchData"
36
+ :field="$parent.$parent.excelHeaders" progress="safeGetExportProgress"
37
+ sqlurl="rs/logic/SafeExportExcel" sql-name="defectDetails" template-name='安检隐患明细'
38
+ :choose-col="true"></export-excel-safe>
39
+ <!-- <button class="button_spacing button_search" @click="$parent.$parent.showaudio()" v-if="!$parent.$parent.audioshow">录音</button>-->
40
+ <button class="button_spacing button_search" @click="$parent.$parent.showaudio()"
41
+ v-if="$parent.$parent.audioshow">隐藏</button>
42
+ <button class="button_search" @click="$parent.$parent.toRepair"
43
+ v-if="$parent.$parent.canToRepair == '是'">转维修</button>
44
+
45
+ <button class="button_spacing button_search" @click="search()">查询</button>
46
+ <div style="float: right" class="button_spacing"
47
+ :class="{ 'button_shrink_top': $parent.$parent.criteriaShow, 'button_shrink_bottom': !$parent.$parent.criteriaShow }"
48
+ @click="$parent.$parent.hidden()"></div>
49
+ </div>
50
+
51
+ </div>
52
+ <div class="row">
53
+ <div class="col-sm-4 form-group" v-show="$parent.$parent.criteriaShow" style="margin: 0">
54
+ <role-selector-safe role-name="安检员" role-lable="安&nbsp;检&nbsp;员&nbsp;"
55
+ @re-res="$parent.$parent.getRes" :value.sync="model.f_checker_id"
56
+ v-model="model.f_checker_id" condition="f_checker_name in {}"
57
+ :value-multiple="true">
58
+ </role-selector-safe>
59
+ </div>
60
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
61
+ <label class="font_normal_body">检&ensp;查&ensp;项</label>
62
+ <v-select :value.sync="model.f_device_type" v-model='model.f_device_type'
63
+ :value-single="true" style="width: 60%" class="select_list select"
64
+ :options='$parent.$parent.device_types' placeholder='检查项' close-on-select
65
+ @change="$parent.$parent.changeDefect"
66
+ condition="f_device_type like '%{}%'"></v-select>
67
+ <!--<input type="text" class="input_search" v-model="model.f_device_type"-->
68
+ <!--style="width: 60%" placeholder="检&ensp;查&ensp;项" condition="f_device_type like '%{}%'">-->
69
+ </div>
70
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
71
+ <label class="font_normal_body">隐患名称</label>
72
+ <v-select :value.sync="model.f_item_name" v-model='model.f_item_name'
73
+ :value-single="true" style="width: 60%" class="select_list select"
74
+ :options='$parent.$parent.DefectConfigs' placeholder='隐患名称' close-on-select
75
+ condition="f_item_name like '%{}%'"></v-select>
76
+ </div>
77
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
78
+ <label class="font_normal_body">安检起始</label>
79
+ <datepicker :value.sync="model.f_check_start" placeholder='安检起始时间' style="width: 60%"
80
+ :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
81
+ v-model="model.f_check_start" condition="f_offsite_time >='{} 00:00:00'">
82
+ </datepicker>
83
+ </div>
84
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
85
+ <label class="font_normal_body">安检结束</label>
86
+ <datepicker :value.sync="model.f_check_end" placeholder='安检结束时间' style="width: 60%"
87
+ :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
88
+ v-model="model.f_check_end" condition="f_offsite_time <='{} 23:59:59'">
89
+ </datepicker>
90
+ </div>
91
+
92
+ </div>
93
+ <div class="row">
94
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
95
+ <label class="font_normal_body">维修结果</label>
96
+ <v-select class="select_list select" placeholder='维修结果' style="width: 60%"
97
+ :value.sync="model.f_repaired" v-model="model.f_repaired"
98
+ :options='$parent.$parent.repaireds' filer-key="name" close-on-select clear-button
99
+ condition="f_repaired='{}'" :value-single="true">
100
+ </v-select>
101
+ <!--<input type="text" class="input_search" v-model="model.f_device_type"-->
102
+ <!--style="width: 60%" placeholder="检&ensp;查&ensp;项" condition="f_device_type like '%{}%'">-->
103
+ </div>
104
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
105
+ <label class="font_normal_body">用户类型</label>
106
+ <v-select class="select_list select" placeholder='用户类型' style="width: 60%"
107
+ :value.sync="model.f_check_type" v-model="model.f_check_type"
108
+ :options='$parent.$parent.checktype' filer-key="name" close-on-select clear-button
109
+ condition="f_check_type='{}'" :value-single="true">
110
+ </v-select>
111
+ </div>
112
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
113
+ <label class="font_normal_body">片&emsp;&emsp;区</label>
114
+ <v-select class="select_list select" placeholder='片区' style="width: 60%"
115
+ :value.sync="model.f_slice_area" v-model="model.f_slice_area"
116
+ :options='$parent.$parent.sliceArea' filer-key="name" close-on-select clear-button
117
+ condition="f_slice_area='{}'" :value-single="true">
118
+ </v-select>
119
+ </div>
120
+
121
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
122
+ <label class="font_normal_body">区&emsp;&emsp;域</label>
123
+ <v-select class="select_list select" placeholder='请选择' style="width: 60%"
124
+ :value.sync="model.f_pcd" v-model="model.f_pcd" :options='$parent.$parent.pcds'
125
+ filer-key="name" clear-button condition="f_pcd in {}" :multiple="true">
126
+ </v-select>
127
+ </div>
128
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
129
+ <label class="font_normal_body">处理人</label>
130
+ <input type="text" class="input_search" v-model="model.f_repairman" style="width: 60%"
131
+ placeholder="处理人" condition="f_repairman like '%{}%'">
132
+ </div>
133
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
134
+ <label class="font_normal_body">处理起始</label>
135
+ <datepicker :value.sync="model.f_repair_start" placeholder='处理起始时间' style="width: 60%"
136
+ :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
137
+ v-model="model.f_repair_start" condition="f_repair_date >='{} 00:00:00'">
138
+ </datepicker>
139
+ </div>
140
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
141
+ <label class="font_normal_body">处理结束</label>
142
+ <datepicker :value.sync="model.f_repair_end" placeholder='处理结束时间' style="width: 60%"
143
+ :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
144
+ v-model="model.f_repair_end" condition="f_repair_date <='{} 23:59:59'">
145
+ </datepicker>
146
+ </div>
147
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
148
+ <label class="font_normal_body">处理结果</label>
149
+ <v-select class="select_list select" placeholder='处理结果' style="width: 60%"
150
+ :value.sync="model.f_repair_result" v-model="model.f_repair_result"
151
+ :options='$parent.$parent.repairresults' filer-key="name" close-on-select
152
+ clear-button :value-single="true">
153
+ </v-select>
154
+ </div>
155
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
156
+ <label class="font_normal_body">逾期起始</label>
157
+ <datepicker :value.sync="model.f_handle_start" placeholder='逾期起始时间' style="width: 60%"
158
+ :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
159
+ v-model="model.f_handle_start" condition="f_handle_date >='{} 00:00:00'">
160
+ </datepicker>
161
+ </div>
162
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
163
+ <label class="font_normal_body">逾期结束</label>
164
+ <datepicker :value.sync="model.f_handle_end" placeholder='逾期结束时间' style="width: 60%"
165
+ :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
166
+ v-model="model.f_handle_end" condition="f_handle_date <='{} 23:59:59'">
167
+ </datepicker>
168
+ </div>
169
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
170
+ <label class="font_normal_body">逾期状态</label>
171
+ <v-select class="select_list select" placeholder='逾期状态' style="width: 60%"
172
+ :value.sync="model.f_is_handle" v-model="model.f_is_handle"
173
+ :options='$parent.$parent.ishandles' filer-key="name" close-on-select clear-button
174
+ condition="f_is_handle='{}'" :value-single="true">
175
+ </v-select>
176
+ </div>
177
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
178
+ <label class="font_normal_body">处理方式</label>
179
+ <v-select class="select_list select" placeholder='处理方式' style="width: 60%"
180
+ :value.sync="model.f_is_repaired" v-model="model.f_is_repaired"
181
+ :options='$parent.$parent.is_repaired' filer-key="name" close-on-select clear-button
182
+ condition="f_is_repaired='{}'" :value-single="true">
183
+ </v-select>
184
+ </div>
185
+ <div class="form-group col-sm-2" v-show="$parent.$parent.criteriaShow">
186
+ <label class="font_normal_body">隐患状态</label>
187
+ <v-select class="select_list select" placeholder='隐患状态' style="width: 60%"
188
+ :value.sync="model.is_repaired" v-model="model.is_repaired"
189
+ :options='$parent.$parent.is_repaireds' filer-key="name" close-on-select
190
+ clear-button condition="is_repaired='{}'" :value-single="true">
191
+ </v-select>
192
+ </div>
193
+ </div>
194
+ <modal :show.sync="$parent.$parent.showModal" v-ref:modal>
195
+ <div slot="modal-header" class="modal-header">
196
+ <h4 class="modal-title">
197
+ 选择计划
198
+ </h4>
199
+ </div>
200
+ <div slot="modal-body" class="modal-body">
201
+ <plan-chooser :f.sync="$parent.$parent.fun" v-ref:chooser></plan-chooser>
202
+ </div>
203
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
204
+ <button class="button_search" @click="$parent.$parent.ok">确认</button>
205
+ <button class="button_search" @click="$parent.$parent.cancel">取消</button>
206
+ </div>
207
+ </modal>
208
+ </div>
209
+ </criteria>
210
+ <data-grid class="list_area table_sy" style="overflow: hidden" :model="model" partial='list' v-ref:grid>
211
+ <template partial='head'>
212
+ <tr>
213
+ <th v-if="$parent.$parent.$parent.canToRepair == '是'">
214
+ <nobr>选择</nobr>
215
+ </th>
216
+ <th>
217
+ <nobr>检查项</nobr>
218
+ </th>
219
+ <th>
220
+ <nobr>隐患原因</nobr>
221
+ </th>
222
+ <th>
223
+ <nobr>隐患别名</nobr>
224
+ </th>
225
+ <th>
226
+ <nobr>隐患级别</nobr>
227
+ </th>
228
+ <th>
229
+ <nobr>客户编号</nobr>
230
+ </th>
231
+ <th>
232
+ <nobr>客户名称</nobr>
233
+ </th>
234
+ <th>
235
+ <nobr>客户电话</nobr>
236
+ </th>
237
+ <th>
238
+ <nobr>客户小区</nobr>
239
+ </th>
240
+ <th>
241
+ <data-order field="f_address" name="客户地址"></data-order>
242
+ </th>
243
+
244
+ <th>
245
+ <data-order field="f_offsite_time" name="安检时间"></data-order>
246
+ </th>
247
+ <th>
248
+ <nobr>逾期时间</nobr>
249
+ </th>
250
+ <th>
251
+ <nobr>逾期状态</nobr>
252
+ </th>
253
+ <th>
254
+ <nobr>安检员</nobr>
255
+ </th>
256
+ <th>
257
+ <nobr>处理方式</nobr>
258
+ </th>
259
+ <th>
260
+ <nobr>处理人</nobr>
261
+ </th>
262
+ <th>
263
+ <nobr>处理时间</nobr>
264
+ </th>
265
+ <th>
266
+ <nobr>处理结果</nobr>
267
+ </th>
268
+ <th>
269
+ <nobr>操作</nobr>
270
+ </th>
271
+ </tr>
272
+ </template>
273
+ <template partial='body'>
274
+ <td v-if="$parent.$parent.$parent.canToRepair == '是'"
275
+ style="text-align: center;white-space:nowrap;"><input type="checkbox"
276
+ v-if="['现场已处理', '维修已处理', '无隐患', '转维修'].indexOf(row.f_is_repaired) == -1"
277
+ @click="$event.cancelBubble = true" :checked="$parent.$parent.$parent.isChecked(row)"
278
+ @change="$parent.$parent.$parent.setCheckes(row)"></input></td>
279
+ <td style="text-align: center">{{ row.f_device_type }}</td>
280
+ <td style="text-align: center">{{ row.f_item_name }}/{{ row.f_item_value }}</td>
281
+ <td style="text-align: center">{{ row.f_alias_name }}</td>
282
+ <td style="text-align: center">{{ row.f_defect_level }}</td>
283
+ <td style="text-align: center">{{ row.f_userinfo_code }}</td>
284
+ <td style="text-align: center">{{ row.f_user_name }}</td>
285
+ <td style="text-align: center">{{ row.f_user_phone }}</td>
286
+ <td style="text-align: center">{{ row.f_residential_area }}</td>
287
+ <td style="text-align: center">{{ row.f_address }}</td>
288
+ <td style="text-align: center">{{ row.f_offsite_time }}</td>
289
+ <td style="text-align: center">{{ row.f_handle_date }}</td>
290
+ <td style="text-align: center">{{ row.f_is_handle }}</td>
291
+ <td style="text-align: center">{{ row.f_checker_name }}</td>
292
+ <td style="text-align: center">{{ row.f_is_repaired }}</td>
293
+ <td style="text-align: center">{{ row.f_repairman }}</td>
294
+ <td style="text-align: center">{{ row.f_repair_date }}</td>
295
+ <td style="text-align: center">{{ row.f_repair_result }}</td>
296
+ <td style="text-align: center">
297
+ <button
298
+ v-if="row.f_is_repaired == '隐患未处理' || (row.f_is_repaired == '用户自行整改' && row.f_repair_result == '未处理')"
299
+ class="button_spacing button_search-1"
300
+ @click="$parent.$parent.$parent.solveDefect(row, 'solve')">处理隐患</button>
301
+ </td>
302
+ </template>
303
+ </data-grid>
304
+ </criteria-paged>
305
+ <check-msg v-if="showcheckmsg" :show="showcheckmsg" :data="checkInfo"></check-msg>
306
+ </div>
307
+ <modal :show.sync="showModal2" :backdrop="false">
308
+ <div slot="modal-header" class="modal-header">
309
+ <h4 class="modal-title">
310
+ 转维修
311
+ </h4>
312
+ </div>
313
+ <div slot="modal-body" class="modal-body">
314
+ <div class="row" style="margin-top: 10px">
315
+ <label class="control-label font text-left"
316
+ style="float:left;margin-left:20%;margin-top:5px">派发类型</label>
317
+ <div class="col-xs-8 col-md-8">
318
+ <v-select :value.sync="selectData.dispatchType" :value-single="true"
319
+ v-model="selectData.dispatchType" :options='dispatchTypeOptions' placeholder='派发类型'
320
+ close-on-select>
321
+ </v-select>
322
+ </div>
323
+ </div>
324
+ <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType == '派发给维修员'">
325
+ <label class="control-label font text-left"
326
+ style="float:left;margin-left:20%;margin-top:5px">维&ensp;修&ensp;员</label>
327
+ <div class="col-xs-8 col-md-8">
328
+ <v-select :value.sync="selectData.f_repairman" :value-single="true" :options='repairers'
329
+ placeholder='请选择维修员' close-on-select></v-select>
330
+ </div>
331
+ </div>
332
+ <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType == '派发给站点'">
333
+ <label class="control-label font text-left"
334
+ style="float:left;margin-left:20%;margin-top:5px">站&ensp;&ensp;&ensp;&ensp;点</label>
335
+ <div class="col-xs-8 col-md-8">
336
+ <right-tree islist :userid="userid"
337
+ :source="'dep=this.getParentByType($organization$).getSpecialResByType($department$),tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))'"
338
+ @re-res="getSiteRes"></right-tree>
339
+ </div>
340
+ </div>
341
+ <div class="row" style="margin-top: 10px"
342
+ v-if="selectData.dispatchType == '派发给站点' || selectData.dispatchType == '派发给维修员'">
343
+ <label class="control-label font text-left"
344
+ style="float:left;margin-left:20%;margin-top:5px">报修类型</label>
345
+ <div class="col-xs-8 col-md-8">
346
+ <v-select :value.sync="selectData.f_repairtype" style="width:60%" class="select select_list"
347
+ :value-single="true" :options='repairTypeOptions' close-on-select>
348
+ </v-select>
349
+ </div>
350
+ </div>
351
+ <div class="row" style="margin-top: 10px" v-if="selectData.dispatchType == '派发给站点' || selectData.dispatchType == '派发给维修员'">
352
+ <label class="control-label font text-left"
353
+ style="float:left;margin-left:20%;margin-top:5px">备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注</label>
354
+ <div class="col-xs-8 col-md-8">
355
+ <textarea style="width: 60%; height: 100px" v-model="selectData.f_remarks"></textarea>
356
+ </div>
357
+ </div>
358
+ </div>
359
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
360
+ <button class="button_search" @click="rectification">处理</button>
361
+ <button class="button_search" @click="cancel1">取消</button>
362
+ </div>
363
+ </modal>
364
+ <modal :show.sync="showSolveModal" v-ref:solveModal>
365
+ <div slot="modal-header" class="modal-header">
366
+ <h4 class="modal-title">
367
+ {{ solveModal.preData.type == 'view' ? '处理详情' : '处理隐患' }}
368
+ </h4>
369
+ </div>
370
+ <div slot="modal-body" class="modal-body">
371
+ <div style="width: 100%;height: 36px;background-color: #f1f8ff;float: left">
372
+ <div style="width: 8px;height: 100%;background-color: #6aa6e2;margin-right: 20px;float: left"></div>
373
+ <div style="width: auto;height:100%;float: left;">
374
+ <p class="title-font" style="margin-top: 5px">处理前</p>
375
+ </div>
376
+ </div>
377
+
378
+ <div class="col-sm-6" style="margin-top: 10px">
379
+ <label class="font_normal_body">安&nbsp;检&nbsp;员</label>
380
+ <input class="input_search" style="width: 60%" type="text" disabled="true"
381
+ v-model="check.f_checker_name" placeholder="安检员">
382
+ </div>
383
+ <div class="col-sm-6" style="margin-top: 10px">
384
+ <label class="font_normal_body">安检时间</label>
385
+ <input class="input_search" style="width: 60%" type="text" disabled="true"
386
+ v-model="check.f_offsite_time" placeholder="安检时间">
387
+ </div>
388
+ <div class="col-sm-12" style="margin-bottom: 10px">
389
+ <label class="font_normal_body">隐患图片</label>
390
+ <img-self :width="200" :height="200" :src="solveModal.preData.defectImg"></img-self>
391
+ </div>
392
+
393
+ <div style="width: 100%;height: 36px;background-color: #f1f8ff;float: left">
394
+ <div style="width: 8px;height: 100%;background-color: #6aa6e2;margin-right: 20px;float: left"></div>
395
+ <div style="width: auto;height:100%;float: left;">
396
+ <p class="title-font" style="margin-top: 5px">处理后</p>
397
+ </div>
398
+ </div>
399
+ <div class="col-sm-6" style="margin-top: 10px">
400
+ <label class="font_normal_body">处&nbsp;理&nbsp;人</label>
401
+ <input class="input_search" style="width: 60%" disabled="true" type="text"
402
+ v-model="solveModal.uploadData.f_repairman" placeholder="处理人">
403
+ </div>
404
+ <div class="col-sm-6" style="margin-top: 10px">
405
+ <label class="font_normal_body">处理时间</label>
406
+ <datepicker :disabled="solveModal.preData.type == 'view'" placeholder='处理时间' style="width:60%"
407
+ :disabled-days-of-week="[]" :format="'yyyy-MM-dd'" :show-rest-button="reset"
408
+ :value.sync="solveModal.uploadData.f_repair_date">
409
+ </datepicker>
410
+ </div>
411
+ <div v-if="solveModal.preData.type == 'solve'" class="col-sm-12" style="margin-bottom: 10px">
412
+ <label class="font_normal_body">处理后图片</label>
413
+ <avatar-upload :width="200" :height="200" :img-src.sync="solveModal.uploadData.imgSrc"
414
+ :filename.sync="solveModal.uploadData.filename" v-ref:imginfo></avatar-upload>
415
+ </div>
416
+ <div v-if="solveModal.preData.type == 'view'" class="col-sm-12" style="margin-bottom: 10px">
417
+ <label class="font_normal_body">处理后图片</label>
418
+ <img-self :width="200" :height="200" :src="solveModal.preData.repairedImg"></img-self>
419
+ </div>
420
+ </div>
421
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
422
+ <button class="button_search" v-if="solveModal.preData.type == 'solve'" @click="ok2">确认</button>
423
+ <button class="button_search" @click="cancel2">取消</button>
424
+ </div>
425
+ </modal>
426
+ </div>
427
+ </template>
428
+
429
+ <script>
430
+ import { PagedList } from 'vue-client'
431
+ import Vue from 'vue'
432
+ import co from 'co'
433
+ import HttpResetClass from "vue-client/src/plugins/HttpResetClass";
434
+ import BenzAMRRecorder from 'benz-amr-recorder'
435
+ import * as Util from "../../Util";
436
+
437
+ const upSolveDefect = function* (self) {
438
+ let uploadData = self.solveModal.uploadData
439
+ //tag)
440
+ self.$resetpost('/rs/logic/pcRepairDefect', self.solveModal.uploadData, { resolveMsg: null, rejectMsg: null })
441
+ .then(res => {
442
+ if (res.data.code == 200) {
443
+ self.$showMessage('隐患已处理。')
444
+ self.showSolveModal = false
445
+ self.$refs.paged.$refs.criteria.search()
446
+ }
447
+ })
448
+ }
449
+
450
+ //获取json配置文件
451
+ let asyncReady = async function (self) {
452
+ // 获取配置信息
453
+ try {
454
+ let res = await Vue.resetget(`/phone/rs/vue`, { data: {} }, { resolveMsg: null, rejectMsg: null })
455
+ Vue.config = res.data
456
+ self.getDefectInfoConfig(res.data)
457
+ } catch (error) {
458
+ // 忽略704,文件找不到异常R
459
+ if (error.status !== 704) {
460
+ throw error
461
+ }
462
+ }
463
+ }
464
+
465
+ let select = function* (self) {
466
+ let http = new HttpResetClass()
467
+ let getGasman = yield http.load('POST', '/rs/search', {
468
+ source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1))',
469
+ userid: self.$login.f.id
470
+ }, { resolveMsg: null, rejectMsg: null })
471
+ self.checkersid.push({ label: '全部', value: '' })
472
+ getGasman.data.forEach((checker) => {
473
+ self.checkersid.push({ label: checker.name, value: checker.id })
474
+ })
475
+ }
476
+
477
+ export default {
478
+ title: '隐患明细查看',
479
+ data() {
480
+ let model = new PagedList('rs/sql/defectDetails', 20)
481
+ model.f_plan_id = ''
482
+ model.f_approved = ''
483
+ model.f_entry = ''
484
+ model.f_no_checkplan = ''
485
+ model.f_filialeid = `('${this.$login.f.orgid}')`
486
+ //model.f_check_type='民用'
487
+ // let searchData={
488
+ // f_plan_id: this.model.f_checker_id==undefined?"":this.model.f_checker_id,
489
+ // f_approved: this.model.f_approved,
490
+ // f_entry_status: this.model.f_entry,
491
+ // f_no_checkplan:this.model.f_no_checkplan[0],
492
+ // f_filialeid: this.model.f_filialeid,
493
+ // //orderitem: this.model.f_offsite_time,
494
+ // //condition:this.model.condition
495
+ // }
496
+ // model.f_subcompany = this.$login.f.f_fengongsi
497
+ return {
498
+ audioshow: false,
499
+ showSolveModal: false,
500
+ searchData: {
501
+ condition: "1=1",
502
+ },
503
+ model: model,
504
+ //searchData:searchData,
505
+ excelHeaders: {
506
+ 'f_device_type': '检查项',
507
+ 'f_item_name': '隐患名称',
508
+ 'f_item_value': '隐患原因',
509
+ 'f_alias_name': '隐患别名',
510
+ 'f_userinfo_code': '客户编号',
511
+ 'f_user_name': '客户姓名',
512
+ 'f_user_phone': '客户电话',
513
+ 'f_residential_area': '小区',
514
+ 'f_address': '客户地址',
515
+ 'f_offsite_time': '安检时间',
516
+ 'f_handle_date': '逾期时间',
517
+ 'f_is_handle': '逾期状态',
518
+ 'f_checker_name': '安检员',
519
+ 'f_is_repaired': '处理方式',
520
+ 'f_repairman': '处理人',
521
+ 'f_repair_date': '处理时间',
522
+ 'f_repair_result': '处理结果'
523
+ },
524
+ fun: this.$login.f,
525
+ checkersid: [],
526
+ safetype: this.getSafeParam('安检类型'),
527
+ criteriaShow: false,
528
+ repaireds: [{ label: '全部', value: '' }, { label: '已修', value: '已修' }, { label: '未修', value: '未修' }],
529
+ checktype: [{ label: '全部', value: '' }, { label: '民用', value: '民用' }, { label: '非民用', value: '非民用' }],
530
+ showModal: false,
531
+ pcds: [],
532
+ f_approval_states: this.getSafeParam('安检单审核状态'),
533
+ f_entry_status: this.getSafeParam('安检状态'),
534
+ f_checkplans: this.getSafeParam('有无计划'),
535
+ is_repaired: this.getSafeParam('安检患隐处理方式'),
536
+ is_repaireds: [{ label: '全部', value: '' }, { label: '已处理未消除隐患', value: '已处理未消除隐患' }, { label: '已处理已消除隐患', value: '已处理已消除隐患' }],
537
+ showcheckmsg: false,
538
+ checkInfo: {},
539
+ repairers: [],
540
+ dispatchTypeOptions: [{ label: '派发给站点', value: '派发给站点' }, { label: '派发给维修员', value: '派发给维修员' }, { label: '用户自行整改', value: '用户自行整改' }],
541
+ canToRepair: this.$appdata.getSingleValue('隐患明细转维修') || '是',
542
+ repairTypeOptions: this.$appdata.getParam('报修类型'),
543
+ selectData: {
544
+ dispatchType: '',
545
+ f_repairman: '',
546
+ f_remarks: '',
547
+ f_repairtype: ''
548
+ },
549
+ checkes: [],
550
+ showModal2: false,
551
+ solveModal: {
552
+ preData: {
553
+ type: 'view',
554
+ defectImg: '',
555
+ repairedImg: ''
556
+ },
557
+ uploadData: {
558
+ id: '',
559
+ f_repairman: this.$login.f.name,
560
+ f_repair_date: Util.getNowDate().substr(0, 10),
561
+ f_repair_path: '',
562
+ imgSrc: '',
563
+ filename: ''
564
+ }
565
+ },
566
+ orderDefault: "'f_offsite_time'",
567
+ orderFields: {
568
+ f_offsite_time: 'no'
569
+ },
570
+ sliceArea: [],
571
+ cbc: [],
572
+ DefectConfig: '',
573
+ DefectConfigs: [{ label: '全部', value: '' }, { label: '气量异常差值', value: '气量异常差值' }],
574
+ ishandles: [{ label: '全部', value: '' }, { label: '未逾期', value: '未逾期' }, { label: '已逾期', value: '已逾期' }],
575
+ repairresults: [{ label: '全部', value: '' }, { label: '已处理', value: '已处理' }, { label: '未处理', value: '未处理' }],
576
+ device_types: [{ label: '全部', value: '' }],
577
+ }
578
+ },
579
+ methods: {
580
+ ok2() {
581
+ if (!(this.solveModal.uploadData.filename && this.solveModal.uploadData.filename.length > 0)) {
582
+ this.$showMessage('请录入处理后照片')
583
+ return
584
+ }
585
+ co(upSolveDefect(this))
586
+ },
587
+ cancel2() {
588
+ this.showSolveModal = false
589
+ this.showToRepairModal = false
590
+ },
591
+ solveDefect(row, type) {
592
+ if (row.f_repair_path && row.f_repair_path.startsWith('http')) {
593
+ this.solveModal.preData.repairedImg = row.f_repair_path
594
+ } else {
595
+ this.solveModal.preData.repairedImg = '/rs/image/file/' + row.f_repair_path
596
+ }
597
+ this.solveModal.preData.defectImg = '/rs/image/file/' + row.f_path
598
+ this.solveModal.uploadData.id = row.id
599
+ this.solveModal.preData.type = type
600
+ if (type == 'view') {
601
+ this.solveModal.preData.f_repair_path = '/rs/image/file/' + row.f_repair_path
602
+ this.solveModal.uploadData.f_repairman = row.f_repairman
603
+ this.solveModal.uploadData.f_repair_date = row.f_repair_date
604
+ } else {
605
+ this.solveModal.uploadData.f_repairman = this.$login.f.name
606
+ this.solveModal.uploadData.f_repair_date = Util.getNowDate().substr(0, 10)
607
+ }
608
+ this.showSolveModal = !this.showSolveModal
609
+ },
610
+ getEmp() {
611
+ let val = { source: 'this.getParentByType($department$).getAllChildrens().where(row.getAttributes().get($rolestr$).indexOf($维修员$) != -1 ))', userid: `${this.$login.f.id}` }
612
+ let http = new HttpResetClass()
613
+ http.load('POST', '/rs/search', { data: val }, { resolveMsg: null, rejectMsg: null }).then((res) => {
614
+ if (res.data.length == 0) {
615
+ this.repairers = []
616
+ return
617
+ }
618
+ res.data.forEach((user) => {
619
+ this.repairers.push({ label: user.name, value: user.name })
620
+ })
621
+ })
622
+ },
623
+ getSiteRes(obj) {
624
+ console.log('siteRes ---> ')
625
+ console.log(obj)
626
+ if (obj.resids[0]) {
627
+ this.selectData.f_meetunit = obj.res.join('.')
628
+ this.selectData.f_reciever = obj.resids.join('.')
629
+ this.selectData.f_outlets = obj.res[obj.res.length - 1]
630
+ } else {
631
+ this.selectData.f_meetunit = ''
632
+ this.selectData.f_reciever = ''
633
+ this.selectData.f_outlets = ''
634
+ }
635
+ },
636
+ cancel1() {
637
+ this.showModal2 = false
638
+ this.selectData = {
639
+ dispatchType: '',
640
+ f_repairman: '',
641
+ f_remarks: '',
642
+ f_repairtype: ''
643
+ }
644
+ },
645
+ async rectification() {
646
+ if (this.selectData.dispatchType == '用户自行整改') {
647
+ let defectIdStr = ''
648
+ let defectIds = []
649
+ for (let i = 0; i < this.dangerGroups.length; i++) {
650
+ for (let j = 0; j < this.dangerGroups[i].dangers.length; j++) {
651
+ defectIds.push(`'${this.dangerGroups[i].dangers[j].f_defect_id}'`)
652
+ }
653
+ }
654
+ defectIdStr = `(${defectIds.join(',')})`
655
+ let http = new HttpResetClass()
656
+ let sql = `update t_devices_items set f_deal_dispose = '自行整改' where id in ${defectIdStr}`
657
+ http.load('POST', 'rs/logic/runSQL', { data: { sql: sql } },
658
+ { resolveMsg: null, rejectMsg: null }).then(()=>{
659
+ this.showModal3 = false
660
+ this.checkes = []
661
+ this.cancel1()
662
+ this.$showMessage('修改成功')
663
+ }).catch(()=>{
664
+ this.showModal3 = false
665
+ this.checkes = []
666
+ this.cancel1()
667
+ this.$showMessage('修改异常,请检查网络状况后重新尝试。')
668
+ })
669
+ } else {
670
+ await this.repair()
671
+ }
672
+ },
673
+ async repair() {
674
+ if (this.selectData.dispatchType) {
675
+ if (this.selectData.dispatchType == '派发给站点') {
676
+ if (!this.selectData.f_reciever) {
677
+ this.$showMessage('请选择部门!')
678
+ return
679
+ }
680
+ } else {
681
+ if (!this.selectData.f_repairman) {
682
+ this.$showMessage('请选择维修员!')
683
+ return
684
+ }
685
+ }
686
+ } else {
687
+ this.$showMessage('请选择派发类型!')
688
+ return
689
+ }
690
+
691
+ if (!this.selectData.f_repairtype) {
692
+ this.$showMessage('请选择报修类型!')
693
+ return
694
+ }
695
+ this.showModal3 = true
696
+ let act = {}
697
+ let toRepair = ''
698
+ let successCount = 0
699
+ if (this.selectData.dispatchType == '派发给站点') {
700
+ act = { f_meetunit: this.selectData.f_meetunit, f_reciever: this.selectData.f_reciever, f_service_acitivity_type: '派单' }
701
+ toRepair = null
702
+ } else {
703
+ console.log('派发给维修员---------' + this.selectData.f_repairman)
704
+ act = { f_meetunit: '', f_reciever: this.selectData.f_repairman, f_service_acitivity_type: '派单' }
705
+ toRepair = '一级派单'
706
+ }
707
+ let rep = {
708
+ loginUser: {
709
+ name: this.$login.f.name,
710
+ ename: this.$login.f.ename
711
+ },
712
+ f_meetunit: this.$login.f.deps,
713
+ f_attendant: this.$login.f.name,
714
+ f_outlets: this.$login.f.deps,
715
+ f_remarks: this.selectData.f_remarks,
716
+ f_repairtype: this.selectData.f_repairtype,
717
+ toRepair: toRepair,
718
+ activity: act
719
+ }
720
+ for (let i = 0; i < this.dangerGroups.length; i++) {
721
+ let defectIdStr = ''
722
+ const defectIds = []
723
+ for (let j = 0; j < this.dangerGroups[i].dangers.length; j++) {
724
+ defectIds.push(`'${this.dangerGroups[i].dangers[j].f_defect_id}'`)
725
+ }
726
+ defectIdStr = `(${defectIds.join(',')})`
727
+ const data = {
728
+ id: this.dangerGroups[i].dangers[0].f_paper_id,
729
+ repData: rep,
730
+ source: 'pc',
731
+ defectIdStr: defectIdStr
732
+ }
733
+ console.log('data=', JSON.stringify(data))
734
+ try {
735
+ let result = await new HttpResetClass().load('post', '/rs/logic/phoneUploadRectification', data, { resolveMsg: null, rejectMsg: null })
736
+ if (result.data.code == 200) {
737
+ successCount += result.data.successcon
738
+ this.progressbarWidth = Math.ceil((i + 1) * 100 / (this.dangerGroups.length))
739
+ }
740
+ } catch (e) {
741
+ this.showModal3 = false
742
+ this.$showMessage('网络异常,请稍后再试!')
743
+ return
744
+ }
745
+ }
746
+ this.showModal3 = false
747
+ this.cancel1()
748
+ this.$showMessage('本次转维修成功' + successCount + '单')
749
+ },
750
+ isChecked(row) {
751
+ return this.checkes.findIndex(item => item.f_defect_id == row.f_defect_id) != -1
752
+ },
753
+ setCheckes(row) {
754
+ let index = this.checkes.findIndex(item => item.f_defect_id == row.f_defect_id)
755
+ if (index < 0) {
756
+ this.checkes.push(row)
757
+ } else {
758
+ this.checkes.splice(index, 1)
759
+ }
760
+ console.log('this.checkes=', JSON.stringify(this.checkes))
761
+ },
762
+ toRepair() {
763
+ console.log('this.checkes=', JSON.stringify(this.checkes))
764
+ if (this.checkes.length == 0) {
765
+ return this.$showMessage('请先选择需要转维修的隐患!')
766
+ }
767
+
768
+ const dangerGroups = []
769
+ for (const danger of this.checkes) {
770
+ let i = dangerGroups.findIndex(dangerGroup => dangerGroup.f_userinfo_code === danger.f_userinfo_code)
771
+ if (i == -1) {
772
+ dangerGroups.push({
773
+ f_userinfo_code: danger.f_userinfo_code,
774
+ dangers: []
775
+ })
776
+ i = dangerGroups.length - 1
777
+ }
778
+ dangerGroups[i].dangers.push(danger)
779
+ }
780
+ this.dangerGroups = dangerGroups
781
+ console.log('this.dangerGroups=', JSON.stringify(this.dangerGroups))
782
+ this.showModal2 = true
783
+ },
784
+ changeDefect(val) {
785
+ try {
786
+ if (val) {
787
+ for (var Key1 in this.DefectConfig) {
788
+ if (Key1 == val) {
789
+ this.DefectConfigs = [{ label: '全部', value: '' }]
790
+ for (var Key2 in this.DefectConfig[Key1].items) {
791
+ this.DefectConfigs.push({ label: Key2, value: Key2 })
792
+ }
793
+ return
794
+ }
795
+ }
796
+ } else if (val == '') {
797
+ this.DefectConfigs = [{ label: '全部', value: '' }]
798
+ for (var Key1 in this.DefectConfig) {
799
+ for (var Key2 in this.DefectConfig[Key1].items) {
800
+ this.DefectConfigs.push({ label: Key2, value: Key2 })
801
+ }
802
+ }
803
+ }
804
+ } catch (e) {
805
+ //tag
806
+ }
807
+ },
808
+ getDefectInfoConfig(val) {
809
+ try {
810
+ if (val.safecheck.DevicesSetConfig != undefined) {
811
+ this.DefectConfig = val.safecheck.DevicesConfig
812
+ // 获取到配置项,进行遍历,获取每个隐患项
813
+ for (var Key1 in this.DefectConfig) {
814
+ this.device_types.push({ label: Key1, value: Key1 })
815
+ for (var Key2 in this.DefectConfig[Key1].items) {
816
+ this.DefectConfigs.push({ label: Key2, value: Key2 })
817
+ }
818
+ }
819
+ // 非民用或其他配置项加入,在进行遍历
820
+ }
821
+ } catch (e) {
822
+ //tag
823
+ }
824
+ },
825
+ showaudio() {
826
+ //tag
827
+ this.audioshow = !this.audioshow
828
+ //tag
829
+ },
830
+ getmeterbook(val) {
831
+ this.cbc = []
832
+ this.cbc.push({
833
+ label: '全部',
834
+ value: ''
835
+ })
836
+ if (val == '') {
837
+
838
+ this.cbcs.forEach(res => {
839
+ this.cbc.push({
840
+ label: res.f_book_name,
841
+ value: res.id
842
+ })
843
+ })
844
+ } else {
845
+ this.cbcs.forEach(res => {
846
+ if (res.f_book_slice_area == val) {
847
+ this.cbc.push({
848
+ label: res.f_book_name,
849
+ value: res.id
850
+ })
851
+ }
852
+ })
853
+ }
854
+ },
855
+ getSafeParam(val) {
856
+ if (this.$appdata.getParam(val)) {
857
+ return [{ label: '全部', value: '' }, ...this.$appdata.getParam(val)]
858
+ } else {
859
+ return [{ label: '全部', value: '' }]
860
+ }
861
+
862
+ },
863
+ Mreadibook(val) {
864
+ if (val) {
865
+ new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
866
+ data: {
867
+ items: 'name',
868
+ tablename: 't_zone',
869
+ condition: `parentid in ${val}`,
870
+ orderitem: 'id'
871
+ }
872
+ }, { resolveMsg: null, rejectMsg: null }).then((res) => {
873
+ this.sliceArea = [{
874
+ label: '全部',
875
+ value: ''
876
+ }]
877
+ res.data.forEach(ress => {
878
+ this.sliceArea.push({
879
+ label: ress.name,
880
+ value: ress.name
881
+ })
882
+ })
883
+
884
+ })
885
+ }
886
+ },
887
+ getAllMeterBook(val) {
888
+ this.cbcs = []
889
+ if (val) {
890
+ new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
891
+ data: {
892
+ items: 'f_book_name,f_book_slice_area,id',
893
+ tablename: 't_meter_book',
894
+ condition: `f_filiale_id in ${val}`,
895
+ orderitem: 'id'
896
+ }
897
+ }, { resolveMsg: null, rejectMsg: null }).then((res) => {
898
+ res.data.forEach(ress => {
899
+ this.cbcs.push({
900
+ id: ress.id,
901
+ f_book_name: ress.f_book_name,
902
+ f_book_slice_area: ress.f_book_slice_area
903
+ })
904
+ })
905
+ this.cbc = []
906
+ this.cbc.push({
907
+ label: '全部',
908
+ value: ''
909
+ })
910
+ this.cbcs.forEach(res => {
911
+ this.cbc.push({
912
+ label: res.f_book_name,
913
+ value: res.id
914
+ })
915
+ })
916
+ })
917
+ }
918
+ },
919
+ getRes(obj) {
920
+ this.model.f_filialeid = this.$login.convertToIn(obj.resids);
921
+ this.searchData.f_filialeid = this.$login.convertToIn(obj.resids);
922
+ this.Mreadibook(this.model.f_filialeid)
923
+ // this.getAllMeterBook(this.model.f_filialeid)
924
+ //this.$refs.paged.$refs.criteria.search()
925
+ },
926
+
927
+ change(row) {
928
+ // Vue.$login = {jwt: row.f_checker_id}
929
+ asyncReady(this).then(() => {
930
+ ////tag)
931
+ row.f_upload_state = '已传'
932
+ this.$goto('new-check-paper', { f_plan_id: row.f_check_plan_id, item: row, role: 'view' }, 'self')
933
+ }).catch(
934
+ (respanse) => {
935
+ alert('获取配置文件失败')
936
+ })
937
+ },
938
+ readConfig() {
939
+ let gen = asyncReady(this)
940
+ return co(gen)
941
+ },
942
+ showChooser() {
943
+ this.showModal = true
944
+ },
945
+ hidden() {
946
+ this.criteriaShow = !this.criteriaShow
947
+ },
948
+ refresh() {
949
+ this.$refs.paged.$refs.criteria.search()
950
+ },
951
+ ok() {
952
+ this.showModal = false
953
+ if (this.$refs.paged.$refs.criteria.$refs.modal.$children[0].selectedRow.id) {
954
+ this.model.f_plan_id = this.$refs.paged.$refs.criteria.$refs.modal.$children[0].selectedRow.id
955
+ this.model.f_check_plan = this.$refs.paged.$refs.criteria.$refs.modal.$children[0].selectedRow
956
+ }
957
+ },
958
+ cancel() {
959
+ this.showModal = false
960
+ this.model.f_check_plan = { f_plan_name: '', id: '' }
961
+ this.model.f_plan_id = ''
962
+ },
963
+ print(row) {
964
+ this.showcheckmsg = true
965
+ this.checkInfo = row
966
+ },
967
+
968
+ sort(field, rule) {
969
+ // 将所有排序方式设为不排序,实现相互排斥
970
+ for (let key in this.orderFields) {
971
+ if (key === field) {
972
+ this.orderFields[key] = rule
973
+ } else {
974
+ this.orderFields[key] = 'no'
975
+ }
976
+ }
977
+ // 如果新规则不排序,还原为默认排序
978
+ if (rule === 'no') {
979
+ this.model.paramSource.orderitem = `'${this.orderDefault}'`
980
+ } else {
981
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
982
+ }
983
+ this.search()
984
+ },
985
+ search() {
986
+ this.$refs.paged.$refs.criteria.search()
987
+ },
988
+ selfSearch(args) {
989
+ ////tag
990
+ if (args.model.f_repair_result == '已处理') {
991
+ args.condition += ` and f_repair_date != '****-**-** **:**:**' `
992
+ }
993
+ if (args.model.f_repair_result == '未处理') {
994
+ args.condition += ` and f_repair_date = '****-**-** **:**:**' `
995
+ }
996
+ args.condition += ` and f_filialeid in ${this.model.f_filialeid} `
997
+ this.model.search(args.condition, args.model, args.condValue)
998
+ },
999
+ getPcds(val) {
1000
+ this.pcds = [{ label: '全部', value: '' }]
1001
+ new HttpResetClass().load("POST", `/rs/sql/safe_singleTable_OrderBy`,
1002
+ { data: { items: "*", tablename: "t_pcd", orderitem: "id", condition: `f_orgid in ${val}` } },
1003
+ { resolveMsg: null, rejectMsg: null }).then((pcdlist) => {
1004
+ pcdlist.data.forEach((result) => {
1005
+ this.pcds.push({ label: result.f_pcd, value: result.f_pcd })
1006
+ })
1007
+ })
1008
+ },
1009
+ },
1010
+
1011
+ ready() {
1012
+ this.getEmp()
1013
+ this.readConfig()
1014
+ this.function = this.f
1015
+ this.getPcds(`('${this.$login.f.orgid}')`)
1016
+ let gen = select(this)
1017
+ // this.Mreadibook(`('${this.$login.f.orgid}')`)
1018
+ co(gen)
1019
+ },
1020
+ watch: {
1021
+ 'model.f_no_checkplan'(val) {
1022
+ if (this.model.f_no_checkplan) {
1023
+ this.searchData.f_no_checkplan = val
1024
+ }
1025
+ if (this.model.f_no_checkplan == '有计划安检') {
1026
+
1027
+ this.showChooser()
1028
+ }
1029
+ },
1030
+ 'model.condition'(val) {
1031
+ if (val) {
1032
+ this.searchData.condition = val
1033
+ }
1034
+
1035
+ },
1036
+ 'model.f_entry'(val) {
1037
+ if (val) {
1038
+ this.searchData.f_entry_status = val
1039
+
1040
+ }
1041
+ },
1042
+ 'model.f_plan_id'(val) {
1043
+ if (val) {
1044
+ this.searchData.f_plan_id = val
1045
+ }
1046
+ },
1047
+ 'model.f_slice_area'(val) {
1048
+ if (val) {
1049
+
1050
+ }
1051
+ },
1052
+ 'model.f_approved'(val) {
1053
+ if (val) {
1054
+ this.searchData.f_approved = val
1055
+ }
1056
+ },
1057
+ }
1058
+
1059
+ }
1060
+ </script>