safecheck-client 3.0.35-55 → 3.0.35-57

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) 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/PlumberAnnual.vue +83 -83
  208. package/src/components/android/PlumberAnnualDetail.vue +65 -65
  209. package/src/components/android/PlumberMonthly.vue +84 -84
  210. package/src/components/android/PostMap.vue +83 -83
  211. package/src/components/android/QueryCheckHistory.vue +122 -122
  212. package/src/components/android/QueryCheckHistoryItem.vue +62 -62
  213. package/src/components/android/RepairMain.vue +60 -60
  214. package/src/components/android/Repairman.vue +12 -12
  215. package/src/components/android/StationMaster.vue +12 -12
  216. package/src/components/defects/DefectModal.vue +101 -101
  217. package/src/components/defects/DevicesAndItem.vue +39 -39
  218. package/src/components/issueplan/IssuePlanMain.vue +23 -23
  219. package/src/components/notice/NoticeForm.vue +100 -100
  220. package/src/components/notice/NoticeIssue.vue +20 -20
  221. package/src/components/paper/PicViewer.vue +18 -18
  222. package/src/components/pc/SecurityCheckLedger.vue +143 -133
  223. package/src/components/pc/SecurityCheckManage.vue +113 -106
  224. package/src/components/pc/SecurityCheckUser.vue +440 -0
  225. package/src/components/phonestate/MonthlyTraffic.vue +66 -66
  226. package/src/components/phonestate/MonthlyTrafficRouter.vue +15 -15
  227. package/src/components/phonestate/PostMap.vue +82 -82
  228. package/src/components/querycheckpaper/PaperItem.vue +59 -59
  229. package/src/components/userfile/MeterFile.vue +145 -145
  230. package/src/components/userfile/MeterModify.vue +46 -46
  231. package/src/components/userfileaudit/MeterAuditFile.vue +129 -129
  232. package/src/filiale/siyang/pc/PlanManage.vue +849 -839
  233. package/src/filiale/weinan/android/SafecheckUserInfo.vue +791 -791
  234. package/src/plugins/LoadData.js +10 -10
  235. package/src/plugins/LoadParams.js +24 -24
  236. package/src/safecheck.js +913 -910
  237. package/src/stores/wxconfig.js +10 -10
  238. package/src/utils/getNowDate.js +33 -33
  239. package/test/e2e/custom-assertions/elementCount.js +26 -26
  240. package/test/e2e/nightwatch.conf.js +40 -40
  241. package/test/e2e/runner.js +30 -30
  242. package/test/e2e/specs/test.js +13 -13
  243. package/test/unit/.eslintrc +5 -5
  244. package/test/unit/TestUtil.js +62 -62
  245. package/test/unit/context.html +20 -20
  246. package/test/unit/index.js +13 -13
@@ -0,0 +1,440 @@
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,66 +1,66 @@
1
- <template>
2
- <div>
3
- <criteria-paged :model="model" v-ref:paged>
4
- <criteria partial='criteria' @condition-changed='search'>
5
- <div novalidate class="form-inline auto" partial>
6
- <div class="form-group">
7
- <label class="col-sm-12 control-label">选择年月:</label>
8
- <div class="col-sm-12">
9
- <datepicker placeholder="请选择年月"
10
- :value.sync="$parent.$parent.model.f_ym"
11
- :disabled-days-of-Week="[]"
12
- :format="'yyyy-MM'">
13
- </datepicker>
14
- <button class="btn btn-default" @click="search()">查询</button>
15
- <div class="form-group">
16
- 部门:
17
- <chooser :userid.sync='$parent.$parent.f.id' resource-type="organization" :width='200' :select-data.sync='$parent.$parent.model.chosenOrg'></chooser>
18
- </div>
19
- {{$parent.$parent.model.chosenOrg.fullname}}
20
- </div>
21
- </div>
22
- </div>
23
- </criteria>
24
- <data-grid :model="model" partial='list' v-ref:grid>
25
- <template partial='head'>
26
- <tr>
27
- <th>手机使用者</th>
28
- <th>流量Mb</th>
29
- </tr>
30
- </template>
31
- <template partial='body'>
32
- <td v-on:click.stop.prevent='$parent.$parent.$parent.dailyTraffic(row)'>{{row.f_user_name}}&nbsp;&nbsp;&nbsp;&nbsp;<span class="glyphicon glyphicon-option-horizontal"></span></td>
33
- <td>{{row.f_traffic}}</td>
34
- </template>
35
- </data-grid>
36
- </criteria-paged>
37
- </div>
38
- </template>
39
-
40
- <script>
41
- import { PagedList } from 'vue-client'
42
- import * as Util from '../Util'
43
-
44
- export default {
45
- title: '月流量统计',
46
- props: ['f'],
47
- data () {
48
- let model = new PagedList('rs/rcq/月度流量统计', 20, {f_loggedOnUserId: 'this.f_loggedOnUserId', f_loggedOnOrgId: 'this.chosenOrg.id', f_ym: 'this.f_ym'})
49
- model.f_ym = Util.toStandardYearMonth()
50
- model.chosenOrg = {id:0}
51
- return {
52
- model: model,
53
- }
54
- },
55
- methods: {
56
- dailyTraffic (row) {
57
- this.$goto('daily-traffic', {f_userinfoid: row.f_userinfoid, f_user_name: row.f_user_name, f_ym: this.model.f_ym}, 'self')
58
- }
59
- },
60
- ready () {
61
- this.model.f_loggedOnUserId = this.f.id
62
- this.model.chosenOrg.id = this.f.parent.id
63
- this.model.search()
64
- }
65
- }
66
- </script>
1
+ <template>
2
+ <div>
3
+ <criteria-paged :model="model" v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='search'>
5
+ <div novalidate class="form-inline auto" partial>
6
+ <div class="form-group">
7
+ <label class="col-sm-12 control-label">选择年月:</label>
8
+ <div class="col-sm-12">
9
+ <datepicker placeholder="请选择年月"
10
+ :value.sync="$parent.$parent.model.f_ym"
11
+ :disabled-days-of-Week="[]"
12
+ :format="'yyyy-MM'">
13
+ </datepicker>
14
+ <button class="btn btn-default" @click="search()">查询</button>
15
+ <div class="form-group">
16
+ 部门:
17
+ <chooser :userid.sync='$parent.$parent.f.id' resource-type="organization" :width='200' :select-data.sync='$parent.$parent.model.chosenOrg'></chooser>
18
+ </div>
19
+ {{$parent.$parent.model.chosenOrg.fullname}}
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </criteria>
24
+ <data-grid :model="model" partial='list' v-ref:grid>
25
+ <template partial='head'>
26
+ <tr>
27
+ <th>手机使用者</th>
28
+ <th>流量Mb</th>
29
+ </tr>
30
+ </template>
31
+ <template partial='body'>
32
+ <td v-on:click.stop.prevent='$parent.$parent.$parent.dailyTraffic(row)'>{{row.f_user_name}}&nbsp;&nbsp;&nbsp;&nbsp;<span class="glyphicon glyphicon-option-horizontal"></span></td>
33
+ <td>{{row.f_traffic}}</td>
34
+ </template>
35
+ </data-grid>
36
+ </criteria-paged>
37
+ </div>
38
+ </template>
39
+
40
+ <script>
41
+ import { PagedList } from 'vue-client'
42
+ import * as Util from '../Util'
43
+
44
+ export default {
45
+ title: '月流量统计',
46
+ props: ['f'],
47
+ data () {
48
+ let model = new PagedList('rs/rcq/月度流量统计', 20, {f_loggedOnUserId: 'this.f_loggedOnUserId', f_loggedOnOrgId: 'this.chosenOrg.id', f_ym: 'this.f_ym'})
49
+ model.f_ym = Util.toStandardYearMonth()
50
+ model.chosenOrg = {id:0}
51
+ return {
52
+ model: model,
53
+ }
54
+ },
55
+ methods: {
56
+ dailyTraffic (row) {
57
+ this.$goto('daily-traffic', {f_userinfoid: row.f_userinfoid, f_user_name: row.f_user_name, f_ym: this.model.f_ym}, 'self')
58
+ }
59
+ },
60
+ ready () {
61
+ this.model.f_loggedOnUserId = this.f.id
62
+ this.model.chosenOrg.id = this.f.parent.id
63
+ this.model.search()
64
+ }
65
+ }
66
+ </script>
@@ -1,15 +1,15 @@
1
- <template>
2
- <div>
3
- <route :comp="{name: 'void-page'}" name="traffic-router"></route>
4
- </div>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- title: '月流量统计',
10
- props: ['f'],
11
- ready () {
12
- this.$goto('monthly-traffic-list', {f: this.f}, 'self')
13
- }
14
- }
15
- </script>
1
+ <template>
2
+ <div>
3
+ <route :comp="{name: 'void-page'}" name="traffic-router"></route>
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ title: '月流量统计',
10
+ props: ['f'],
11
+ ready () {
12
+ this.$goto('monthly-traffic-list', {f: this.f}, 'self')
13
+ }
14
+ }
15
+ </script>