safecheck-client 3.0.35-62 → 3.0.35-64

Sign up to get free protection for your applications and to get access to all the features.
Files changed (250) 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/pagination.less +89 -89
  175. package/src/bootstrap/less/panels.less +275 -275
  176. package/src/bootstrap/less/popovers.less +131 -131
  177. package/src/bootstrap/less/print.less +101 -101
  178. package/src/bootstrap/less/progress-bars.less +87 -87
  179. package/src/bootstrap/less/responsive-embed.less +35 -35
  180. package/src/bootstrap/less/responsive-utilities.less +194 -194
  181. package/src/bootstrap/less/scaffolding.less +161 -161
  182. package/src/bootstrap/less/theme.less +291 -291
  183. package/src/bootstrap/less/thumbnails.less +36 -36
  184. package/src/bootstrap/less/tooltip.less +102 -102
  185. package/src/bootstrap/less/type.less +303 -303
  186. package/src/bootstrap/less/utilities.less +55 -55
  187. package/src/bootstrap/less/wells.less +29 -29
  188. package/src/components/FileUpload.vue +696 -696
  189. package/src/components/Hello.vue +39 -39
  190. package/src/components/LeftTree.vue +27 -27
  191. package/src/components/android/AddressList.vue +61 -61
  192. package/src/components/android/AttendanceTally.vue +116 -116
  193. package/src/components/android/Blank.vue +10 -10
  194. package/src/components/android/CheckUnplanPage.vue +56 -56
  195. package/src/components/android/Checker.vue +12 -12
  196. package/src/components/android/CheckerAnnual.vue +81 -81
  197. package/src/components/android/CheckerAvarta.vue +82 -82
  198. package/src/components/android/EquipmentInspection.vue +348 -348
  199. package/src/components/android/FootprintMap.vue +120 -120
  200. package/src/components/android/HiddentroubleInvestigation.vue +192 -192
  201. package/src/components/android/Insurance/PhoneInsurancePurchaseDetail.vue +286 -286
  202. package/src/components/android/MasterMain.vue +77 -77
  203. package/src/components/android/Menu.vue +132 -132
  204. package/src/components/android/NavBottom.vue +157 -157
  205. package/src/components/android/PaperAlarm.vue +85 -85
  206. package/src/components/android/PaperDeviceNoncivil.vue +214 -214
  207. package/src/components/android/PhoneSellInfo.vue +148 -148
  208. package/src/components/android/PlumberAnnual.vue +83 -83
  209. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  210. package/src/components/android/PlumberMonthly.vue +84 -84
  211. package/src/components/android/PostMap.vue +83 -83
  212. package/src/components/android/QueryCheckHistory.vue +122 -122
  213. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  214. package/src/components/android/RepairMain.vue +60 -60
  215. package/src/components/android/Repairman.vue +12 -12
  216. package/src/components/android/StationMaster.vue +12 -12
  217. package/src/components/defects/DefectModal.vue +101 -101
  218. package/src/components/defects/DevicesAndItem.vue +39 -39
  219. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  220. package/src/components/notice/NoticeForm.vue +100 -100
  221. package/src/components/notice/NoticeIssue.vue +20 -20
  222. package/src/components/paper/PicViewer.vue +18 -18
  223. package/src/components/pc/SecurityCheckLedger.vue +143 -143
  224. package/src/components/pc/SecurityCheckManage.vue +113 -113
  225. package/src/components/pc/SecurityCheckUser.vue +441 -440
  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/userfile/MeterFile.vue +145 -145
  231. package/src/components/userfile/MeterModify.vue +46 -46
  232. package/src/components/userfileaudit/MeterAuditFile.vue +129 -129
  233. package/src/filiale/dexin/android/SafecheckOrderV.vue +2946 -2946
  234. package/src/filiale/siyang/pc/PlanManage.vue +849 -849
  235. package/src/filiale/tongchuan/android/SafecheckOrderV.vue +3035 -3035
  236. package/src/filiale/weinan/android/PaperFeedback.vue +1437 -1437
  237. package/src/plugins/LoadData.js +10 -10
  238. package/src/plugins/LoadParams.js +24 -24
  239. package/src/safecheck-android.js +303 -303
  240. package/src/safecheck.js +913 -913
  241. package/src/stores/wxconfig.js +10 -10
  242. package/src/utils/getNowDate.js +33 -33
  243. package/test/e2e/custom-assertions/elementCount.js +26 -26
  244. package/test/e2e/nightwatch.conf.js +40 -40
  245. package/test/e2e/runner.js +30 -30
  246. package/test/e2e/specs/test.js +13 -13
  247. package/test/unit/.eslintrc +5 -5
  248. package/test/unit/TestUtil.js +62 -62
  249. package/test/unit/context.html +20 -20
  250. package/test/unit/index.js +13 -13
@@ -1,440 +1,441 @@
1
- <template>
2
- <div class="flex">
3
- <criteria-paged :model="model" v-ref:paged>
4
- <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:criteria>
5
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
6
- <div class="row">
7
- <div class="form-group col-sm-4">
8
- <label class="font_normal_body">用户名称</label>
9
- <input type="text" class="input_search" style="width:60%" v-model="model.f_user_name" placeholder='用户名称'
10
- condition="ui.f_user_name like '%{}%'">
11
- </div>
12
- <div class="form-group col-sm-4">
13
- <label class="font_normal_body">用户编号</label>
14
- <input type="text" class="input_search" style="width:60%" v-model="model.f_userinfo_code"
15
- placeholder='用户编号' condition="ui.f_userinfo_code like '%{}%'">
16
- </div>
17
- <div class="form-group col-sm-4">
18
- <label class="font_normal_body">用户地址</label>
19
- <input type="text" class="input_search" style="width:60%" v-model="model.f_userinfo_code"
20
- placeholder='用户地址' condition="ua.f_address like '%{}%'">
21
- </div>
22
- <div class="form-group col-sm-4">
23
- <label class="font_normal_body">用户类型:</label>
24
- <v-select class="select select_list" :value.sync="model.f_user_type" v-model="model.f_user_type"
25
- :options='$parent.$parent.userTypes' placeholder='请选择' condition="uf.f_user_type='{}'" :search="false"
26
- close-on-select value-single>
27
- </v-select>
28
- </div>
29
- <div class="form-group col-sm-4">
30
- <label class="font_normal_body">用户状态:</label>
31
- <v-select class="select select_list" :value.sync="model.f_user_state" v-model="model.f_user_state"
32
- :options='$parent.$parent.userStates' placeholder='请选择' condition="ui.f_user_state='{}'" :search="false"
33
- close-on-select value-single>
34
- </v-select>
35
- </div>
36
- <div class="form-group col-sm-4">
37
- <label class="font_normal_body">用气性质:</label>
38
- <v-select class="select select_list" :value.sync="model.f_gasproperties" v-model="model.f_gasproperties"
39
- :options='$parent.$parent.gasproperties' placeholder='请选择' condition="uf.f_gasproperties='{}'"
40
- :search="false" close-on-select value-single>
41
- </v-select>
42
- </div>
43
- <div class="form-group col-sm-4">
44
- <label class="font_normal_body">开户起始:</label>
45
- <datepicker placeholder='请选择' style="width:60%" :disabled-days-of-week="[]" :format="'yyyy-MM-dd'"
46
- :show-rest-button="reset" :value.sync="model.f_startfile_time" v-model="model.f_startfile_time"
47
- condition="ui.f_createfile_date >= '{} 00:00:00'">
48
- </datepicker>
49
- </div>
50
- <div class="form-group col-sm-4">
51
- <label class="font_normal_body">开户截止:</label>
52
- <datepicker placeholder='请选择' :disabled-days-of-week="[]" style="width:60%" :format="'yyyy-MM-dd'"
53
- :show-rest-button="reset" :value.sync="model.f_endfile_time" v-model="model.f_endfile_time"
54
- condition="ui.f_createfile_date <= '{} 23:59:59'">
55
- </datepicker>
56
- </div>
57
- <div class="form-group col-sm-4">
58
- <label class="font_normal_body">派发情况:</label>
59
- <v-select class="select select_list" :value.sync="model.yearCheck" v-model="model.yearCheck"
60
- :options='$parent.$parent.yearCheckList' placeholder='请选择' condition="{}" :search="false"
61
- close-on-select value-single>
62
- </v-select>
63
- </div>
64
- <div class="form-group col-sm-4">
65
- <label class="font_normal_body">安检起始:</label>
66
- <datepicker placeholder='请选择' style="width:60%" :disabled-days-of-week="[]" :format="'yyyy-MM-dd'"
67
- :show-rest-button="reset" :value.sync="model.f_start_time" v-model="model.f_start_time">
68
- </datepicker>
69
- </div>
70
- <div class="form-group col-sm-4">
71
- <label class="font_normal_body">安检截止:</label>
72
- <datepicker placeholder='请选择' :disabled-days-of-week="[]" style="width:60%" :format="'yyyy-MM-dd'"
73
- :show-rest-button="reset" :value.sync="model.f_end_time" v-model="model.f_end_time">
74
- </datepicker>
75
- </div>
76
- <div class="form-group col-sm-4">
77
- <label class="font_normal_body">安检状态:</label>
78
- <v-select class="select select_list" :value.sync="model.f_last_check_state"
79
- v-model="model.f_last_check_state" :options='$parent.$parent.entry_status' placeholder='请选择'
80
- :search="false" close-on-select value-single>
81
- </v-select>
82
- </div>
83
- <div class="form-group col-sm-4">
84
- <label class="font_normal_body">安检时间:</label>
85
- <input type="number" class="input_search" v-model="model.month" style="width: 60%"
86
- placeholder="距上次安检时间(月)">
87
- </div>
88
- <div class="form-group col-sm-4">
89
- <label class="font_normal_body">入户次数</label>
90
- <input type="text" class="input_search" style="width:60%" v-model="model.f_userinfo_code"
91
- placeholder='入户次数' condition="f_num = '{}'">
92
- </div>
93
- </div>
94
- <div class="row">
95
- <div class="form-group col-sm-2 button-range">
96
- <button class="button_search" style="margin-right: 10px" @click="search()" v-el:cba>查询</button>
97
- <button class="button_search" style="margin-right: 10px" @click="$parent.$parent.showCreateCheckPlan()"
98
- v-el:cba>生成并下发</button>
99
- </div>
100
- </div>
101
- </div>
102
- </criteria>
103
- <data-grid :model="model" class="table_sy" partial='list' v-ref:grid>
104
- <template partial='head'>
105
- <tr>
106
- <th>
107
- <nobr>
108
- <input type="checkbox" onClick="event.cancelBubble = true" :checked="$parent.$parent.$parent.checkAll"
109
- @change="$parent.$parent.$parent.setCheckAll()" /> 全选
110
- </nobr>
111
- </th>
112
- <th>
113
- <nobr>用户编号</nobr>
114
- </th>
115
- <th>
116
- <nobr>用户名称</nobr>
117
- </th>
118
- <th>
119
- <nobr>用户类型</nobr>
120
- </th>
121
- <th>
122
- <nobr>用户电话</nobr>
123
- </th>
124
- <th>
125
- <nobr>表具类型</nobr>
126
- </th>
127
- <th>
128
- <nobr>安检日期</nobr>
129
- </th>
130
- <th>
131
- <nobr>详细地址</nobr>
132
- </th>
133
- </tr>
134
- </template>
135
- <template partial='body'>
136
- <tr>
137
- <td style="text-align: center;white-space:nowrap;">
138
- <input v-if="!row.f_plan_id" type="checkbox" onClick="event.cancelBubble = true"
139
- :checked="$parent.$parent.$parent.isChecked(row.id)"
140
- @change="$parent.$parent.$parent.setCheckes(row.id)" />
141
- </td>
142
- <td style="text-align:center"><span>{{ row.f_userinfo_code }}</span></td>
143
- <td style="text-align:center"><span>{{ row.f_user_name }}</span></td>
144
- <td style="text-align:center"><span>{{ row.f_user_type }}</span></td>
145
- <td style="text-align:center"><span>{{ row.f_user_phone }}</span></td>
146
- <td style="text-align:center"><span>{{ row.f_meter_classify }}</span></td>
147
- <td style="text-align:center"><span>{{ row.f_last_check_date }}</span></td>
148
- <td style="text-align:center"><span>{{ row.f_address }}</span></td>
149
- </tr>
150
- </template>
151
- <template partial='foot'></template>
152
- </data-grid>
153
- </criteria-paged>
154
- <modal :show.sync="showCreatePlan" v-ref:modal1 :width="'50%'" :backdrop="false">
155
- <div slot="modal-header" class="modal-header">
156
- <h4 class="modal-title">
157
- 新建计划
158
- </h4>
159
- </div>
160
- <div slot="modal-body" class="modal-body">
161
- <div class="row">
162
- <div class="form-group col-sm-4">
163
- <label class="font_normal_body">计划名称:</label>
164
- <input type="text" class="input_search" v-model="createPlan.f_plan_name" style="width: 60%"
165
- placeholder="请选择" />
166
- </div>
167
- <div class="form-group col-sm-4">
168
- <label class="font_normal_body">计划年份:</label>
169
- <v-select class="select select_list" :value.sync="createPlan.f_plan_year" v-model="createPlan.f_plan_year"
170
- :search="false" :options='yearList' placeholder='请选择' close-on-select value-single>
171
- </v-select>
172
- </div>
173
- <div class="form-group col-sm-4">
174
- <label class="font_normal_body">计划月份:</label>
175
- <v-select class="select select_list" :value.sync="createPlan.f_plan_month" v-model="createPlan.f_plan_month"
176
- :search="false" :options='monthList' placeholder='请选择' close-on-select value-single>
177
- </v-select>
178
- </div>
179
- <div class="form-group col-sm-4">
180
- <label class="font_normal_body">是否共享:</label>
181
- <v-select class="select select_list" :search="false" :value.sync="createPlan.isShare"
182
- v-model="createPlan.isShare" :options='isAndNot' placeholder='请选择' close-on-select value-single>
183
- </v-select>
184
- </div>
185
- <div class="form-group col-sm-4" v-show="createPlan.isShare == '否'">
186
- <label class="font_normal_body">安&ensp;检&ensp;员:</label>
187
- <v-select class="select select_list" :value.sync="createPlan.checker" v-model="createPlan.checker"
188
- :options='checker' placeholder='请选择' close-on-select value-single>
189
- </v-select>
190
- </div>
191
-
192
- <div class="form-group col-sm-4">
193
- <label class="font_normal_body">安检类型:</label>
194
- <v-select class="select select_list" :value.sync="createPlan.f_safecheck_type"
195
- v-model="createPlan.f_safecheck_type" :search="false" :options='ntoway' placeholder='请选择' close-on-select
196
- value-single>
197
- </v-select>
198
- </div>
199
- <!-- <div class="form-group col-sm-4" v-show="createPlan.isShare=='是'">-->
200
- <!-- <label class="font_normal_body">安&ensp;检&ensp;员:</label>-->
201
- <!-- <v-select-->
202
- <!-- class="select select_list"-->
203
- <!-- :value.sync="createPlan.checkers"-->
204
- <!-- v-model="createPlan.checkers"-->
205
- <!-- :options='checker'-->
206
- <!-- placeholder='请选择'-->
207
- <!-- :multiple="true"-->
208
- <!-- >-->
209
- <!-- </v-select>-->
210
- <!-- </div>-->
211
- </div>
212
- </div>
213
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
214
- <button class="button_search" style="margin-right: 15px" @click="addNewPlan()">创建计划</button>
215
- <button class="button_search" @click="cancel">取消</button>
216
- </div>
217
- </modal>
218
- <work-busy :is-busy="isBusy"></work-busy>
219
-
220
- </div>
221
- </template>
222
-
223
- <script>
224
- import { HttpResetClass, PagedList } from 'vue-client'
225
- import Vue from "vue";
226
- import * as Util from "./../Util";
227
- export default {
228
- title: '安检情况明细',
229
- data() {
230
- return {
231
- checkAll: false,
232
- searchCondition: '',
233
- isBusy:false,
234
- createPlan: {
235
- f_plan_name: '',
236
- f_plan_year: '',
237
- checkers: [],
238
- f_plan_month: '',
239
- isShare: '否',
240
- f_issued: '否',
241
- f_checker_id: null,
242
- checker: {},
243
- f_checker: null,
244
- f_safecheck_type: '',
245
- },
246
- yearList: [{ label: 2020, value: 2020 }, { label: 2021, value: 2021 }, { label: 2022, value: 2022 }, { label: 2023, value: 2023 }, { label: 2024, value: 2024 }, { label: 2025, value: 2025 }, { label: 2026, value: 2026 }, { label: 2027, value: 2027 }, { label: 2028, value: 2028 }, { label: 2029, value: 2029 }, { label: 2030, value: 2030 }],
247
- monthList: [{ label: "1", value: 1 }, { label: "2", value: 2 }, { label: "3", value: 3 }, { label: "4", value: 4 }, { label: "5", value: 5 }, { label: "6", value: 6 }, { label: "7", value: 7 }, { label: "8", value: 8 }, { label: "9", value: 9 }, { label: "10", value: 10 }, { label: "11", value: 11 }, { label: "12", value: 12 }],
248
- isAndNot: [{ label: '是', value: '是' }, { label: '否', value: '否' }],
249
- checker: [],
250
- checkes: [],
251
- showCreatePlan: false,
252
- entry_status: this.$appdata.getParam('安检状态') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('安检状态')] : [{ label: '全部', value: '' }],
253
- yearCheckList: [{ label: "全部", value: "" }, { label: "已在计划中", value: "ua.f_plan_id is not null" }, { label: "未在计划中", value: "ua.f_plan_id is null" }],
254
- gasproperties: this.$appdata.getParam('用气性质') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('用气性质')] : [{ label: '全部', value: '' }],
255
- userStates: this.$appdata.getParam('安检用户状态') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('安检用户状态')] : [{ label: '全部', value: '' }],
256
- userTypes: this.$appdata.getParam('用户类型') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('用户类型')] : [{ label: '全部', value: '' }],
257
- model: new PagedList('rs/sql/FetchUserFileByOrgNoRuHuSXQ', 50, { orderitem: '"f_residential_area,f_building,f_unit,f_floor,f_room"' }),
258
- }
259
- },
260
- props: ['checkrow'],
261
- async ready() {
262
- this.search()
263
- await this.searchChecker()
264
- },
265
- computed: {
266
- ntoway() {
267
- return this.$appdata.getParam('安检类型')
268
- }
269
- },
270
- methods: {
271
- isChecked(v) {
272
- // 如果全选,不在的按选中算,否则,在的按选中算
273
- if (this.checkAll) {
274
- return this.checkes.indexOf(v) == -1
275
- } else {
276
- return this.checkes.indexOf(v) != -1
277
- }
278
- },
279
- setCheckes(id) {
280
- let index = this.checkes.indexOf(id)
281
- if (index < 0) {
282
- this.checkes.push(id)
283
- } else {
284
- this.checkes.splice(index, 1)
285
- }
286
- },
287
- async searchChecker() {
288
- let res = await new HttpResetClass().load('POST', '/rs/search', {
289
- source: `root.getResourceById($${this.$login.f.orgid}$,$organization$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1)`,
290
- userid: this.$login.f.id
291
- }, { resolveMsg: null, rejectMsg: null })
292
- let arr = []
293
- res.data.forEach((resRow) => {
294
- if (!arr.includes(resRow.name) && resRow.state == '在职') {
295
- arr.push(resRow.name)
296
- this.checker.push({ label: resRow.name, value: resRow })
297
- }
298
- })
299
- },
300
- setCheckAll() {
301
- this.checkAll = !this.checkAll
302
- this.checkes = []
303
- },
304
- showCreateCheckPlan() {
305
- if (this.model.rows.length == 0) {
306
- Vue.showMessage("未检测到列表中有用户!")
307
- return
308
- }
309
- if (!this.checkAll && this.checkes.length == 0) {
310
- Vue.showMessage("请先勾选用户!")
311
- return
312
- }
313
- this.showCreatePlan = true
314
- },
315
- validationCreatePlan() {
316
- if (!this.createPlan.f_plan_name) {
317
- Vue.showMessage("请输入安检计划名称!")
318
- return false
319
- }
320
- if (!this.createPlan.f_plan_year) {
321
- Vue.showMessage("请选择安检年份!")
322
- return false
323
- }
324
- if (!this.createPlan.f_plan_month) {
325
- Vue.showMessage("请选择安检月份!")
326
- return false
327
- }
328
- if (this.createPlan.isShare == "否") {
329
- if (JSON.stringify(this.createPlan.checker) == '{}') {
330
- Vue.showMessage("请选择安检人员!")
331
- return false
332
- }
333
- } else {
334
- this.createPlan.f_checker = ''
335
- }
336
- if (!this.createPlan.f_safecheck_type) {
337
- Vue.showMessage("请选择安检类型!")
338
- return false
339
- }
340
- return true
341
- },
342
- async addNewPlan() {
343
- if (!this.validationCreatePlan()) {
344
- return
345
- }
346
- this.isBusy = true
347
- let res = await new HttpResetClass().load("POST", "/rs/sql/getCheckplan", { data: { condition: "f_plan_name='" + this.createPlan.f_plan_name + "'", sortfield: 'f_create_time desc' } })
348
- if (res.data.length > 0) {
349
- Vue.showMessage("计划名称不能重复!")
350
- this.isBusy = false
351
- return
352
- }
353
- if (this.createPlan.isShare == "是") {
354
- if (this.createPlan.checkers.length > 0) {
355
- this.createPlan.checkers.forEach((value) => {
356
- this.createPlan.f_checkerstr += `${value},`
357
- })
358
- this.createPlan.f_checkerstr = this.createPlan.f_checkerstr.slice(0, -1)
359
- }
360
- this.createPlan.f_checker_id = null
361
- this.createPlan.f_checker = null
362
- } else {
363
- this.createPlan.f_checker_id = this.createPlan.checker.id
364
- this.createPlan.f_checker = this.createPlan.checker.name
365
- }
366
- this.createPlan.f_plan_type = '预约计划'
367
- this.createPlan.f_subcompany = this.$login.f.orgs
368
- this.createPlan.f_filialeid = this.$login.f.orgid
369
- this.createPlan.f_create_operator = this.$login.f.name
370
- this.createPlan.f_create_time = Util.toStandardTimeString()
371
- this.createPlan.checkAll = this.checkAll
372
- this.createPlan.searchCondition = this.searchCondition
373
- this.createPlan.checkes = this.checkes.join()
374
-
375
- new HttpResetClass().load('POST', "/rs/logic/createCheckPlanAndAddPlanItem", {
376
- data: this.createPlan
377
- }, { resolveMsg: '新建计划成功!', rejectMsg: '新建计划失败!' })
378
- .then(() => {
379
- this.checkAll = false
380
- this.checkes = []
381
- this.showCreatePlan = false
382
- this.$showMessage('创建计划成功')
383
- this.isBusy = false
384
- }).catch(() => {
385
- this.checkAll = false
386
- this.checkes = []
387
- this.showCreatePlan = false
388
- this.$showMessage('创建计划失败')
389
- this.isBusy = false
390
- })
391
- this.createPlan = {
392
- f_plan_name: '',
393
- f_plan_year: '',
394
- f_plan_month: '',
395
- isShare: '',
396
- f_issued: '否',
397
- f_checker_id: null,
398
- checker: {},
399
- checkers: [],
400
- f_checker: null,
401
- f_checkerstr: null,
402
- f_safecheck_type: '',
403
- f_create_operator: ''
404
- }
405
- },
406
- cancel() {
407
- this.showCreatePlan = false
408
- this.checkes = []
409
- this.createPlan = {
410
- f_plan_name: '',
411
- f_plan_year: '',
412
- f_plan_month: '',
413
- isShare: '',
414
- f_issued: '否',
415
- f_checker_id: null,
416
- checker: {},
417
- f_checker: null,
418
- f_safecheck_type: '',
419
- }
420
- },
421
- search() {
422
- this.$refs.paged.$refs.criteria.search()
423
- },
424
- async selfSearch(args) {
425
- if (!this.checkrow) {
426
- return
427
- }
428
- let condition = ''
429
- condition = args.condition += `and area.f_residential_area = '${this.checkrow.f_residential_area}'`
430
- this.searchCondition = condition
431
- this.model.search(condition)
432
- },
433
- },
434
- watch: {
435
- 'checkrow'() {
436
- this.search()
437
- }
438
- }
439
- }
440
- </script>
1
+ <template>
2
+ <div class="flex">
3
+ <criteria-paged :model="model" v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:criteria>
5
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
6
+ <div class="row">
7
+ <div class="form-group col-sm-4">
8
+ <label class="font_normal_body">用户名称</label>
9
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_user_name" placeholder='用户名称'
10
+ condition="ui.f_user_name like '%{}%'">
11
+ </div>
12
+ <div class="form-group col-sm-4">
13
+ <label class="font_normal_body">用户编号</label>
14
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_userinfo_code"
15
+ placeholder='用户编号' condition="ui.f_userinfo_code like '%{}%'">
16
+ </div>
17
+ <div class="form-group col-sm-4">
18
+ <label class="font_normal_body">用户地址</label>
19
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_userinfo_code"
20
+ placeholder='用户地址' condition="ua.f_address like '%{}%'">
21
+ </div>
22
+ <div class="form-group col-sm-4">
23
+ <label class="font_normal_body">用户类型:</label>
24
+ <v-select class="select select_list" :value.sync="model.f_user_type" v-model="model.f_user_type"
25
+ :options='$parent.$parent.userTypes' placeholder='请选择' condition="uf.f_user_type='{}'" :search="false"
26
+ close-on-select value-single>
27
+ </v-select>
28
+ </div>
29
+ <div class="form-group col-sm-4">
30
+ <label class="font_normal_body">用户状态:</label>
31
+ <v-select class="select select_list" :value.sync="model.f_user_state" v-model="model.f_user_state"
32
+ :options='$parent.$parent.userStates' placeholder='请选择' condition="ui.f_user_state='{}'" :search="false"
33
+ close-on-select value-single>
34
+ </v-select>
35
+ </div>
36
+ <div class="form-group col-sm-4">
37
+ <label class="font_normal_body">用气性质:</label>
38
+ <v-select class="select select_list" :value.sync="model.f_gasproperties" v-model="model.f_gasproperties"
39
+ :options='$parent.$parent.gasproperties' placeholder='请选择' condition="uf.f_gasproperties='{}'"
40
+ :search="false" close-on-select value-single>
41
+ </v-select>
42
+ </div>
43
+ <div class="form-group col-sm-4">
44
+ <label class="font_normal_body">开户起始:</label>
45
+ <datepicker placeholder='请选择' style="width:60%" :disabled-days-of-week="[]" :format="'yyyy-MM-dd'"
46
+ :show-rest-button="reset" :value.sync="model.f_startfile_time" v-model="model.f_startfile_time"
47
+ condition="ui.f_createfile_date >= '{} 00:00:00'">
48
+ </datepicker>
49
+ </div>
50
+ <div class="form-group col-sm-4">
51
+ <label class="font_normal_body">开户截止:</label>
52
+ <datepicker placeholder='请选择' :disabled-days-of-week="[]" style="width:60%" :format="'yyyy-MM-dd'"
53
+ :show-rest-button="reset" :value.sync="model.f_endfile_time" v-model="model.f_endfile_time"
54
+ condition="ui.f_createfile_date <= '{} 23:59:59'">
55
+ </datepicker>
56
+ </div>
57
+ <div class="form-group col-sm-4">
58
+ <label class="font_normal_body">派发情况:</label>
59
+ <v-select class="select select_list" :value.sync="model.yearCheck" v-model="model.yearCheck"
60
+ :options='$parent.$parent.yearCheckList' placeholder='请选择' condition="{}" :search="false"
61
+ close-on-select value-single>
62
+ </v-select>
63
+ </div>
64
+ <div class="form-group col-sm-4">
65
+ <label class="font_normal_body">安检起始:</label>
66
+ <datepicker placeholder='请选择' style="width:60%" :disabled-days-of-week="[]" :format="'yyyy-MM-dd'"
67
+ :show-rest-button="reset" :value.sync="model.f_start_time" v-model="model.f_start_time">
68
+ </datepicker>
69
+ </div>
70
+ <div class="form-group col-sm-4">
71
+ <label class="font_normal_body">安检截止:</label>
72
+ <datepicker placeholder='请选择' :disabled-days-of-week="[]" style="width:60%" :format="'yyyy-MM-dd'"
73
+ :show-rest-button="reset" :value.sync="model.f_end_time" v-model="model.f_end_time">
74
+ </datepicker>
75
+ </div>
76
+ <div class="form-group col-sm-4">
77
+ <label class="font_normal_body">安检状态:</label>
78
+ <v-select class="select select_list" :value.sync="model.f_last_check_state"
79
+ v-model="model.f_last_check_state" :options='$parent.$parent.entry_status' placeholder='请选择'
80
+ :search="false" close-on-select value-single>
81
+ </v-select>
82
+ </div>
83
+ <div class="form-group col-sm-4">
84
+ <label class="font_normal_body">安检时间:</label>
85
+ <input type="number" class="input_search" v-model="model.month" style="width: 60%"
86
+ placeholder="距上次安检时间(月)">
87
+ </div>
88
+ <div class="form-group col-sm-4">
89
+ <label class="font_normal_body">入户次数</label>
90
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_userinfo_code"
91
+ placeholder='入户次数' condition="f_num = '{}'">
92
+ </div>
93
+ </div>
94
+ <div class="row">
95
+ <div class="form-group col-sm-2 button-range">
96
+ <button class="button_search" style="margin-right: 10px" @click="search()" v-el:cba>查询</button>
97
+ <button class="button_search" style="margin-right: 10px" @click="$parent.$parent.showCreateCheckPlan()"
98
+ v-el:cba>生成并下发</button>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </criteria>
103
+ <data-grid :model="model" class="table_sy" partial='list' v-ref:grid>
104
+ <template partial='head'>
105
+ <tr>
106
+ <th>
107
+ <nobr>
108
+ <input type="checkbox" onClick="event.cancelBubble = true" :checked="$parent.$parent.$parent.checkAll"
109
+ @change="$parent.$parent.$parent.setCheckAll()" /> 全选
110
+ </nobr>
111
+ </th>
112
+ <th>
113
+ <nobr>用户编号</nobr>
114
+ </th>
115
+ <th>
116
+ <nobr>用户名称</nobr>
117
+ </th>
118
+ <th>
119
+ <nobr>用户类型</nobr>
120
+ </th>
121
+ <th>
122
+ <nobr>用户电话</nobr>
123
+ </th>
124
+ <th>
125
+ <nobr>表具类型</nobr>
126
+ </th>
127
+ <th>
128
+ <nobr>安检日期</nobr>
129
+ </th>
130
+ <th>
131
+ <nobr>详细地址</nobr>
132
+ </th>
133
+ </tr>
134
+ </template>
135
+ <template partial='body'>
136
+ <tr>
137
+ <td style="text-align: center;white-space:nowrap;">
138
+ <input v-if="!row.f_plan_id" type="checkbox" onClick="event.cancelBubble = true"
139
+ :checked="$parent.$parent.$parent.isChecked(row.id)"
140
+ @change="$parent.$parent.$parent.setCheckes(row.id)" />
141
+ </td>
142
+ <td style="text-align:center"><span>{{ row.f_userinfo_code }}</span></td>
143
+ <td style="text-align:center"><span>{{ row.f_user_name }}</span></td>
144
+ <td style="text-align:center"><span>{{ row.f_user_type }}</span></td>
145
+ <td style="text-align:center"><span>{{ row.f_user_phone }}</span></td>
146
+ <td style="text-align:center"><span>{{ row.f_meter_classify }}</span></td>
147
+ <td style="text-align:center"><span>{{ row.f_last_check_date }}</span></td>
148
+ <td style="text-align:center"><span>{{ row.f_address }}</span></td>
149
+ </tr>
150
+ </template>
151
+ <template partial='foot'></template>
152
+ </data-grid>
153
+ </criteria-paged>
154
+ <modal :show.sync="showCreatePlan" v-ref:modal1 :width="'50%'" :backdrop="false">
155
+ <div slot="modal-header" class="modal-header">
156
+ <h4 class="modal-title">
157
+ 新建计划
158
+ </h4>
159
+ </div>
160
+ <div slot="modal-body" class="modal-body">
161
+ <div class="row">
162
+ <div class="form-group col-sm-4">
163
+ <label class="font_normal_body">计划名称:</label>
164
+ <input type="text" class="input_search" v-model="createPlan.f_plan_name" style="width: 60%"
165
+ placeholder="请选择" />
166
+ </div>
167
+ <div class="form-group col-sm-4">
168
+ <label class="font_normal_body">计划年份:</label>
169
+ <v-select class="select select_list" :value.sync="createPlan.f_plan_year" v-model="createPlan.f_plan_year"
170
+ :search="false" :options='yearList' placeholder='请选择' close-on-select value-single>
171
+ </v-select>
172
+ </div>
173
+ <div class="form-group col-sm-4">
174
+ <label class="font_normal_body">计划月份:</label>
175
+ <v-select class="select select_list" :value.sync="createPlan.f_plan_month" v-model="createPlan.f_plan_month"
176
+ :search="false" :options='monthList' placeholder='请选择' close-on-select value-single>
177
+ </v-select>
178
+ </div>
179
+ <div class="form-group col-sm-4">
180
+ <label class="font_normal_body">是否共享:</label>
181
+ <v-select class="select select_list" :search="false" :value.sync="createPlan.isShare"
182
+ v-model="createPlan.isShare" :options='isAndNot' placeholder='请选择' close-on-select value-single>
183
+ </v-select>
184
+ </div>
185
+ <div class="form-group col-sm-4" v-show="createPlan.isShare == '否'">
186
+ <label class="font_normal_body">安&ensp;检&ensp;员:</label>
187
+ <v-select class="select select_list" :value.sync="createPlan.checker" v-model="createPlan.checker"
188
+ :options='checker' placeholder='请选择' close-on-select value-single>
189
+ </v-select>
190
+ </div>
191
+
192
+ <div class="form-group col-sm-4">
193
+ <label class="font_normal_body">安检类型:</label>
194
+ <v-select class="select select_list" :value.sync="createPlan.f_safecheck_type"
195
+ v-model="createPlan.f_safecheck_type" :search="false" :options='ntoway' placeholder='请选择' close-on-select
196
+ value-single>
197
+ </v-select>
198
+ </div>
199
+ <!-- <div class="form-group col-sm-4" v-show="createPlan.isShare=='是'">-->
200
+ <!-- <label class="font_normal_body">安&ensp;检&ensp;员:</label>-->
201
+ <!-- <v-select-->
202
+ <!-- class="select select_list"-->
203
+ <!-- :value.sync="createPlan.checkers"-->
204
+ <!-- v-model="createPlan.checkers"-->
205
+ <!-- :options='checker'-->
206
+ <!-- placeholder='请选择'-->
207
+ <!-- :multiple="true"-->
208
+ <!-- >-->
209
+ <!-- </v-select>-->
210
+ <!-- </div>-->
211
+ </div>
212
+ </div>
213
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
214
+ <button class="button_search" style="margin-right: 15px" @click="addNewPlan()">创建计划</button>
215
+ <button class="button_search" @click="cancel">取消</button>
216
+ </div>
217
+ </modal>
218
+ <work-busy :is-busy="isBusy"></work-busy>
219
+
220
+ </div>
221
+ </template>
222
+
223
+ <script>
224
+ import { HttpResetClass, PagedList } from 'vue-client'
225
+ import Vue from "vue";
226
+ import * as Util from "./../Util";
227
+ export default {
228
+ title: '安检情况明细',
229
+ data() {
230
+ return {
231
+ checkAll: false,
232
+ searchCondition: '',
233
+ isBusy:false,
234
+ createPlan: {
235
+ f_plan_name: '',
236
+ f_plan_year: '',
237
+ checkers: [],
238
+ f_plan_month: '',
239
+ isShare: '否',
240
+ f_issued: '否',
241
+ f_checker_id: null,
242
+ checker: {},
243
+ f_checker: null,
244
+ f_safecheck_type: '',
245
+ },
246
+ yearList: [{ label: 2020, value: 2020 }, { label: 2021, value: 2021 }, { label: 2022, value: 2022 }, { label: 2023, value: 2023 }, { label: 2024, value: 2024 }, { label: 2025, value: 2025 }, { label: 2026, value: 2026 }, { label: 2027, value: 2027 }, { label: 2028, value: 2028 }, { label: 2029, value: 2029 }, { label: 2030, value: 2030 }],
247
+ monthList: [{ label: "1", value: 1 }, { label: "2", value: 2 }, { label: "3", value: 3 }, { label: "4", value: 4 }, { label: "5", value: 5 }, { label: "6", value: 6 }, { label: "7", value: 7 }, { label: "8", value: 8 }, { label: "9", value: 9 }, { label: "10", value: 10 }, { label: "11", value: 11 }, { label: "12", value: 12 }],
248
+ isAndNot: [{ label: '是', value: '是' }, { label: '否', value: '否' }],
249
+ checker: [],
250
+ checkes: [],
251
+ showCreatePlan: false,
252
+ entry_status: this.$appdata.getParam('安检状态') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('安检状态')] : [{ label: '全部', value: '' }],
253
+ yearCheckList: [{ label: "全部", value: "" }, { label: "已在计划中", value: "ua.f_plan_id is not null" }, { label: "未在计划中", value: "ua.f_plan_id is null" }],
254
+ gasproperties: this.$appdata.getParam('用气性质') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('用气性质')] : [{ label: '全部', value: '' }],
255
+ userStates: this.$appdata.getParam('安检用户状态') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('安检用户状态')] : [{ label: '全部', value: '' }],
256
+ userTypes: this.$appdata.getParam('用户类型') ? [{ label: '全部', value: '' }, ...this.$appdata.getParam('用户类型')] : [{ label: '全部', value: '' }],
257
+ model: new PagedList('rs/sql/FetchUserFileByOrgNoRuHuSXQ', 50, { orderitem: '"f_residential_area,f_building,f_unit,f_floor,f_room"' }),
258
+ }
259
+ },
260
+ props: ['checkrow'],
261
+ async ready() {
262
+ this.search()
263
+ await this.searchChecker()
264
+ },
265
+ computed: {
266
+ ntoway() {
267
+ return this.$appdata.getParam('安检类型')
268
+ }
269
+ },
270
+ methods: {
271
+ isChecked(v) {
272
+ // 如果全选,不在的按选中算,否则,在的按选中算
273
+ if (this.checkAll) {
274
+ return this.checkes.indexOf(v) == -1
275
+ } else {
276
+ return this.checkes.indexOf(v) != -1
277
+ }
278
+ },
279
+ setCheckes(id) {
280
+ let index = this.checkes.indexOf(id)
281
+ if (index < 0) {
282
+ this.checkes.push(id)
283
+ } else {
284
+ this.checkes.splice(index, 1)
285
+ }
286
+ },
287
+ async searchChecker() {
288
+ let res = await new HttpResetClass().load('POST', '/rs/search', {
289
+ source: `root.getResourceById($${this.$login.f.orgid}$,$organization$).getSpecialResByType($user$).where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1)`,
290
+ userid: this.$login.f.id
291
+ }, { resolveMsg: null, rejectMsg: null })
292
+ let arr = []
293
+ res.data.forEach((resRow) => {
294
+ if (!arr.includes(resRow.name) && resRow.state == '在职') {
295
+ arr.push(resRow.name)
296
+ this.checker.push({ label: resRow.name, value: resRow })
297
+ }
298
+ })
299
+ },
300
+ setCheckAll() {
301
+ this.checkAll = !this.checkAll
302
+ this.checkes = []
303
+ },
304
+ showCreateCheckPlan() {
305
+ if (this.model.rows.length == 0) {
306
+ Vue.showMessage("未检测到列表中有用户!")
307
+ return
308
+ }
309
+ if (!this.checkAll && this.checkes.length == 0) {
310
+ Vue.showMessage("请先勾选用户!")
311
+ return
312
+ }
313
+ this.createPlan.f_plan_name = this.checkrow.f_residential_area
314
+ this.showCreatePlan = true
315
+ },
316
+ validationCreatePlan() {
317
+ if (!this.createPlan.f_plan_name) {
318
+ Vue.showMessage("请输入安检计划名称!")
319
+ return false
320
+ }
321
+ if (!this.createPlan.f_plan_year) {
322
+ Vue.showMessage("请选择安检年份!")
323
+ return false
324
+ }
325
+ if (!this.createPlan.f_plan_month) {
326
+ Vue.showMessage("请选择安检月份!")
327
+ return false
328
+ }
329
+ if (this.createPlan.isShare == "否") {
330
+ if (JSON.stringify(this.createPlan.checker) == '{}') {
331
+ Vue.showMessage("请选择安检人员!")
332
+ return false
333
+ }
334
+ } else {
335
+ this.createPlan.f_checker = ''
336
+ }
337
+ if (!this.createPlan.f_safecheck_type) {
338
+ Vue.showMessage("请选择安检类型!")
339
+ return false
340
+ }
341
+ return true
342
+ },
343
+ async addNewPlan() {
344
+ if (!this.validationCreatePlan()) {
345
+ return
346
+ }
347
+ this.isBusy = true
348
+ let res = await new HttpResetClass().load("POST", "/rs/sql/getCheckplan", { data: { condition: "f_plan_name='" + this.createPlan.f_plan_name + "'", sortfield: 'f_create_time desc' } })
349
+ if (res.data.length > 0) {
350
+ Vue.showMessage("计划名称不能重复!")
351
+ this.isBusy = false
352
+ return
353
+ }
354
+ if (this.createPlan.isShare == "是") {
355
+ if (this.createPlan.checkers.length > 0) {
356
+ this.createPlan.checkers.forEach((value) => {
357
+ this.createPlan.f_checkerstr += `${value},`
358
+ })
359
+ this.createPlan.f_checkerstr = this.createPlan.f_checkerstr.slice(0, -1)
360
+ }
361
+ this.createPlan.f_checker_id = null
362
+ this.createPlan.f_checker = null
363
+ } else {
364
+ this.createPlan.f_checker_id = this.createPlan.checker.id
365
+ this.createPlan.f_checker = this.createPlan.checker.name
366
+ }
367
+ this.createPlan.f_plan_type = '预约计划'
368
+ this.createPlan.f_subcompany = this.$login.f.orgs
369
+ this.createPlan.f_filialeid = this.$login.f.orgid
370
+ this.createPlan.f_create_operator = this.$login.f.name
371
+ this.createPlan.f_create_time = Util.toStandardTimeString()
372
+ this.createPlan.checkAll = this.checkAll
373
+ this.createPlan.searchCondition = this.searchCondition
374
+ this.createPlan.checkes = this.checkes.join()
375
+
376
+ new HttpResetClass().load('POST', "/rs/logic/createCheckPlanAndAddPlanItem", {
377
+ data: this.createPlan
378
+ }, { resolveMsg: '新建计划成功!', rejectMsg: '新建计划失败!' })
379
+ .then(() => {
380
+ this.checkAll = false
381
+ this.checkes = []
382
+ this.showCreatePlan = false
383
+ this.$showMessage('创建计划成功')
384
+ this.isBusy = false
385
+ }).catch(() => {
386
+ this.checkAll = false
387
+ this.checkes = []
388
+ this.showCreatePlan = false
389
+ this.$showMessage('创建计划失败')
390
+ this.isBusy = false
391
+ })
392
+ this.createPlan = {
393
+ f_plan_name: '',
394
+ f_plan_year: '',
395
+ f_plan_month: '',
396
+ isShare: '否',
397
+ f_issued: '否',
398
+ f_checker_id: null,
399
+ checker: {},
400
+ checkers: [],
401
+ f_checker: null,
402
+ f_checkerstr: null,
403
+ f_safecheck_type: '',
404
+ f_create_operator: ''
405
+ }
406
+ },
407
+ cancel() {
408
+ this.showCreatePlan = false
409
+ this.checkes = []
410
+ this.createPlan = {
411
+ f_plan_name: '',
412
+ f_plan_year: '',
413
+ f_plan_month: '',
414
+ isShare: '否',
415
+ f_issued: '否',
416
+ f_checker_id: null,
417
+ checker: {},
418
+ f_checker: null,
419
+ f_safecheck_type: '',
420
+ }
421
+ },
422
+ search() {
423
+ this.$refs.paged.$refs.criteria.search()
424
+ },
425
+ async selfSearch(args) {
426
+ if (!this.checkrow) {
427
+ return
428
+ }
429
+ let condition = ''
430
+ condition = args.condition += `and area.f_residential_area = '${this.checkrow.f_residential_area}'`
431
+ this.searchCondition = condition
432
+ this.model.search(condition)
433
+ },
434
+ },
435
+ watch: {
436
+ 'checkrow'() {
437
+ this.search()
438
+ }
439
+ }
440
+ }
441
+ </script>