safecheck-client 3.0.34-6 → 3.0.34-61

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. package/docs/FormPrint.md +18 -18
  2. package/docs/GridTree.md +47 -47
  3. package/docs/PrintFile.md +38 -38
  4. package/docs/tree.md +40 -40
  5. package/package.json +1 -1
  6. package/src/App-/345/215/225/351/241/265/351/235/242/346/211/223/345/214/205/347/224/250.vue +55 -0
  7. package/src/assets/123.png +0 -0
  8. package/src/assets/f8632d3c8c4c1cb68e99da754cab1a7.png +0 -0
  9. package/src/components/LoadData.vue +62 -0
  10. package/src/components/NewDefectList/DefectListNew.vue +617 -616
  11. package/src/components/android/AddGas.vue +147 -147
  12. package/src/components/android/AndroidDefectDeal.vue +1 -0
  13. package/src/components/android/AreaPlan.vue +566 -566
  14. package/src/components/android/AreaSelect.vue +208 -0
  15. package/src/components/android/BuildingSelect.vue +217 -0
  16. package/src/components/android/CheckPlanSelect.vue +248 -0
  17. package/src/components/android/CheckerMonthly.vue +84 -84
  18. package/src/components/android/LcheckUnplan.vue +108 -108
  19. package/src/components/android/PaperFeedback.vue +33 -0
  20. package/src/components/android/QRCode/QRCodeBinding.vue +300 -0
  21. package/src/components/android/QRCode/QRCodePage.vue +212 -0
  22. package/src/components/android/SafecheckDevices.vue +2 -2
  23. package/src/components/android/SafecheckOrderV.vue +8 -12
  24. package/src/components/android/SwitchValve.vue +323 -323
  25. package/src/components/android/examples/SafeListExamples.vue +96 -0
  26. package/src/components/android/examples/UserExamples.vue +130 -0
  27. package/src/components/checkerphonestate/Checker.vue +32 -32
  28. package/src/components/checkerphonestate/CheckerState.vue +97 -97
  29. package/src/components/defects/AddDefectModal.vue +120 -120
  30. package/src/components/defects/AddDevice.vue +95 -95
  31. package/src/components/defects/DevicesSeting.vue +106 -106
  32. package/src/components/metterfiles/AddUserfiles.vue +246 -246
  33. package/src/components/metterfiles/MetterFiles.vue +104 -104
  34. package/src/components/notice/NoticeQuery.vue +76 -76
  35. package/src/components/paper/RepairVerifyForm.vue +76 -76
  36. package/src/components/phonestate/DailyTraffic.vue +57 -57
  37. package/src/components/phonestate/LastKnownState.vue +74 -74
  38. package/src/components/rongcheng/AddPlanItem.vue +4 -0
  39. package/src/components/rongcheng/AspiratedUserInfo.vue +1 -1
  40. package/src/components/rongcheng/CheckSearchUser.vue +40 -14
  41. package/src/components/rongcheng/PaperStatem.vue +6 -1
  42. package/src/components/rongcheng/PhoneDevicesInfo.vue +16 -1
  43. package/src/components/rongcheng/PhoneUpUserinfo.vue +0 -92
  44. package/src/components/rongcheng/SafecheckOrderV.vue +12 -3
  45. package/src/components/rongcheng/SafecheckOrderVCli.vue +9 -0
  46. package/src/components/task/RepairAnnual.vue +79 -79
  47. package/src/components/task/RepairAnnualDetail.vue +49 -49
  48. package/src/components/task/RepairMonthly.vue +91 -91
  49. package/src/components/task/TaskAnnual.vue +77 -77
  50. package/src/components/task/TaskAnnualDetail.vue +47 -47
  51. package/src/components/task/TaskMonthly.vue +89 -89
  52. package/src/components/userfile/UserfileChange.vue +277 -277
  53. package/src/filiale/baiyin/android/AndroidDefectDeal.vue +4 -4
  54. package/src/filiale/baiyin/android/SafecheckOrderV.vue +2785 -0
  55. package/src/filiale/baiyin/android.js +1 -0
  56. package/src/filiale/baiyin/pc/CheckSearchUser.vue +2 -2
  57. package/src/filiale/baiyin/pc/DefectListNew.vue +3 -3
  58. package/src/filiale/baiyin/pc/PaperList.vue +7 -7
  59. package/src/filiale/baiyin/pc/checkUserList.vue +771 -771
  60. package/src/filiale/baiyin/pc.js +21 -21
  61. package/src/filiale/bayan/android/SafecheckOrderV.vue +52 -29
  62. package/src/filiale/bayan/pc/PaperList.vue +1 -0
  63. package/src/filiale/fugou/pc/CheckBookSearchUser.vue +35 -15
  64. package/src/filiale/huaran/android/SafecheckOrderV.vue +2803 -0
  65. package/src/filiale/huaran/android.js +12 -0
  66. package/src/filiale/huaran/pc/CheckBook.vue +313 -0
  67. package/src/filiale/huaran/pc/CheckBookAll.vue +69 -0
  68. package/src/filiale/huaran/pc/CheckBookArea.vue +170 -0
  69. package/src/filiale/huaran/pc/CheckBookCompany.vue +166 -0
  70. package/src/filiale/huaran/pc/CheckBookDetails.vue +196 -0
  71. package/src/filiale/huaran/pc/CheckBookEntry.vue +61 -0
  72. package/src/filiale/huaran/pc/CheckBookList.vue +386 -0
  73. package/src/filiale/huaran/pc/CheckBookSearchArea.vue +564 -0
  74. package/src/filiale/huaran/pc/CheckBookSearchUnit.vue +229 -0
  75. package/src/filiale/huaran/pc/CheckBookSearchUser.vue +604 -0
  76. package/src/filiale/huaran/pc/CheckBookUser.vue +112 -0
  77. package/src/filiale/huaran/pc/PaperList.vue +822 -0
  78. package/src/filiale/huaran/pc/PlanManage.vue +887 -0
  79. package/src/filiale/huaran/pc/checkPlanList.vue +419 -0
  80. package/src/filiale/huaran/pc/checkUserList.vue +867 -0
  81. package/src/filiale/huaran/pc.js +27 -0
  82. package/src/filiale/jiaxian/android/AddPlanItem.vue +447 -0
  83. package/src/filiale/jiaxian/android/PhoneUpUserinfo.vue +1229 -0
  84. package/src/filiale/jiaxian/android/SafecheckDevices.vue +6 -6
  85. package/src/filiale/jiaxian/android/SafecheckOrderV.vue +2807 -0
  86. package/src/filiale/jiaxian/android/SafecheckUserInfo.vue +784 -0
  87. package/src/filiale/jiaxian/android.js +4 -0
  88. package/src/filiale/kelai/pc/CheckPlanAreaList.vue +15 -7
  89. package/src/filiale/ruihua/android/SafecheckOrderV.vue +2747 -0
  90. package/src/filiale/ruihua/android/SafecheckUserInfo.vue +804 -0
  91. package/src/filiale/ruihua/android.js +11 -0
  92. package/src/filiale/shanxian/pc/checkUserList.vue +700 -700
  93. package/src/filiale/siyang/pc/CheckBookSearchArea.vue +645 -0
  94. package/src/filiale/siyang/pc/CheckPlanAreaList.vue +512 -0
  95. package/src/filiale/siyang/pc/CheckSearchUser.vue +982 -0
  96. package/src/filiale/siyang/pc/HiddenSituation.vue +167 -0
  97. package/src/filiale/siyang/pc/checkPlanList.vue +367 -0
  98. package/src/filiale/siyang/pc/checkUserList.vue +22 -18
  99. package/src/filiale/siyang/pc.js +5 -0
  100. package/src/filiale/tongchuan/android/Select.vue +421 -0
  101. package/src/filiale/tongchuan/android.js +1 -0
  102. package/src/filiale/tongchuan/pc/CheckPlanCountChartArea.vue +3 -1
  103. package/src/filiale/tongchuan/pc/DefectPaperWeiXiu.vue +6 -2
  104. package/src/filiale/tongchuan/pc/HiddenSituation.vue +3 -1
  105. package/src/filiale/tongchuan/pc/NewCheckpaper.vue +13 -22
  106. package/src/filiale/tongchuan/pc/PaperDefectMain.vue +1060 -1060
  107. package/src/filiale/tongchuan/pc/SelectCheckPlan.vue +5 -2
  108. package/src/filiale/tongchuan/utils/EventListener.js +29 -0
  109. package/src/filiale/tongchuan/utils/coerceBoolean.js +7 -0
  110. package/src/filiale/weinan/android/SafecheckDevices.vue +1 -1
  111. package/src/filiale/weinan/android/SafecheckOrderV.vue +1 -1
  112. package/src/filiale/weinan/pc/CheckBookSearchUserList.vue +735 -722
  113. package/src/filiale/weinan/pc/CheckDetail.vue +278 -278
  114. package/src/filiale/weinan/pc/DefectListNew.vue +617 -617
  115. package/src/filiale/weinan/pc/DefectMainNew.vue +63 -63
  116. package/src/filiale/weinan/pc/DefectPaperNew.vue +31 -0
  117. package/src/filiale/weinan/pc/DeviceChange.vue +1088 -0
  118. package/src/filiale/weinan/pc/checkUserList.vue +712 -776
  119. package/src/filiale/weinan/pc.js +47 -46
  120. package/src/filiale/wuan/android/SafecheckOrderV.vue +1 -0
  121. package/src/filiale/wuan/android/SafecheckUserInfo.vue +4 -0
  122. package/src/filiale/yangchunboneng/android/CurrentCreate.vue +1192 -1192
  123. package/src/filiale/yangchunboneng/android/DailyworkloadQuery.vue +472 -472
  124. package/src/filiale/yangchunboneng/android/safeHistoryLook.vue +473 -473
  125. package/src/filiale/yangchunboneng/pc/CheckBookSearchUser.vue +13 -11
  126. package/src/filiale/yangchunboneng/pc/CheckBookUser.vue +6 -6
  127. package/src/filiale/yangchunboneng/pc/CheckSearchUser.vue +10 -10
  128. package/src/filiale/yangchunboneng/pc/DefectPaperNew.vue +10 -10
  129. package/src/filiale/yangchunboneng/pc/PaperDefectMain.vue +6 -6
  130. package/src/filiale/yangchunboneng/pc/PaperList.vue +6 -6
  131. package/src/filiale/yuansheng/android/SafecheckDevices.vue +11 -1
  132. package/src/filiale/yuansheng/pc/NewCheckpaper.vue +10 -2
  133. package/src/main-/345/215/225/351/241/265/351/235/242/346/211/223/345/214/205/347/224/250.js +24 -0
  134. package/src/safecheck-android.js +7 -0
  135. package/src/safecheck-page.js +10 -0
@@ -1,776 +1,712 @@
1
- <template>
2
- <div>
3
- <criteria-paged :model="model" v-ref:paged>
4
- <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:criteria>
5
- <div partial>
6
- <div class="row " >
7
- <label class="form-group font_normal_body"><b>用户信息</b></label>
8
-
9
- <div class="form-group col-sm-1" >
10
- <input type="text" class="input_search" v-model="model.f_userinfo_code"
11
- style="width: 95%" placeholder="客户编号" condition="ui.f_userinfo_code='{}'">
12
- </div>
13
- <div class="form-group col-sm-1" v-if="false">
14
- <input type="text" class="input_search" v-model="model.f_user_name"
15
- style="width: 95%" placeholder="客户名称" condition="ui.f_user_name like '%{}%'">
16
- </div>
17
- <div class="form-group col-sm-1" v-if="false">
18
- <input type="text" class="input_search" v-model="model.f_address"
19
- style="width: 95%" placeholder="客户地址" condition="ua.f_address like '%{}%'">
20
- </div>
21
- <div class="form-group col-sm-1 upuserinfo_sel" >
22
- <v-select
23
- class="select select_list"
24
- :width="'95%'"
25
- :value.sync="model.f_area"
26
- v-model="model.f_area"
27
- :options='$parent.$parent.areaList'
28
- :timeout="500"
29
- @select-search="$parent.$parent.select_search"
30
- placeholder='小区选择'
31
- condition="ua.f_residential_area = '{}'"
32
- close-on-select
33
- value-single
34
- >
35
- </v-select>
36
- </div>
37
- <div class="form-group col-sm-4" >
38
- <button class="button_new" style="margin-right: 10px" @click="$parent.$parent.showUserCondition()">更多条件</button>
39
- <button class="button_new" style="margin-right: 10px" @click="$parent.$parent.showUploadCodeCondition()">导入编号</button>
40
- <button class="button_new" style="margin-right: 10px" @click="$parent.$parent.clearUserInfoId()">清空编号</button>
41
- <button class="button_search" style="margin-right: 10px" @click="search()">查询</button>
42
- </div>
43
- <div class="form-group col-sm-1" style="float: right">
44
- <button class="button_search" style="margin-right: 10px" @click="$parent.$parent.dragtoPlanItem()">添入计划</button>
45
- </div>
46
- <modal :show.sync="$parent.$parent.showCondtion" v-ref:modal :width="'50%'" :backdrop="false">
47
- <div slot="modal-header" class="modal-header">
48
- <h4 class="modal-title">
49
- 用户查询条件
50
- </h4>
51
- </div>
52
- <div slot="modal-body" class="modal-body">
53
- <div class="row">
54
- <div class="form-group col-sm-4" >
55
- <label class="font_normal_body">用户类型:</label>
56
- <v-select
57
- class="select select_list"
58
- :value.sync="model.f_user_type"
59
- v-model="model.f_user_type"
60
- :options='$parent.$parent.userTypes'
61
- placeholder='请选择'
62
- condition="uf.f_user_type='{}'"
63
- :search="false"
64
- close-on-select
65
- value-single
66
- >
67
- </v-select>
68
- </div>
69
- <div class="form-group col-sm-4" >
70
- <label class="font_normal_body"title="参数名称:用气性质">用气性质:</label>
71
- <v-select
72
- class="select select_list"
73
- :value.sync="model.f_gasproperties"
74
- v-model="model.f_gasproperties"
75
- :options='$parent.$parent.gasproperties'
76
- placeholder='请选择'
77
- condition="uf.f_gasproperties in {}"
78
- :search="false"
79
- :multiple="true"
80
- close-on-select
81
- >
82
- </v-select>
83
- </div>
84
- <div class="form-group col-sm-4" >
85
- <label class="font_normal_body">气表品牌:</label>
86
- <v-select
87
- class="select select_list"
88
- :value.sync="model.metergasbrand"
89
- v-model="model.metergasbrand"
90
- :options='$parent.$parent.meter_gasbrand'
91
- placeholder='气表品牌'
92
- condition="uf.f_gasbrand_id in {}"
93
- :search="false"
94
- :multiple="true"
95
- close-on-select
96
- >
97
- </v-select>
98
- </div>
99
- <div class="form-group col-sm-4" >
100
- <label class="font_normal_body">小区名称:</label>
101
- <v-select
102
- class="select select_list"
103
- :value.sync="model.f_residential_area"
104
- v-model="model.f_residential_area"
105
- :options='$parent.$parent.hasResidentialArea'
106
- placeholder='请选择'
107
- :search="false"
108
- close-on-select
109
- value-single
110
- >
111
- </v-select>
112
- </div>
113
- <div class="form-group col-sm-4" >
114
- <label class="font_normal_body">楼&ensp;栋&ensp;号:</label>
115
- <input type="text" class="input_search" v-model="model.f_building"
116
- style="width: 60%" placeholder="请选择" condition="ua.f_building='{}'">
117
- </div>
118
- <div class="form-group col-sm-4" >
119
- <label class="font_normal_body">单&ensp;元&ensp;号:</label>
120
- <input type="text" class="input_search" v-model="model.f_unit"
121
- style="width: 60%" placeholder="请选择" condition="ua.f_unit='{}'">
122
- </div>
123
- <!-- <div class="form-group col-sm-4" >-->
124
- <!-- <label class="font_normal_body">开户起始:</label>-->
125
- <!-- <datepicker-->
126
- <!-- placeholder='请选择'-->
127
- <!-- style="width:60%"-->
128
- <!-- :disabled-days-of-week="[]"-->
129
- <!-- :format="'yyyy-MM-dd'"-->
130
- <!-- :show-rest-button="reset"-->
131
- <!-- :value.sync="model.f_startfile_time"-->
132
- <!-- v-model="model.f_startfile_time"-->
133
- <!-- condition="ui.f_createfile_date >= '{} 00:00:00'">-->
134
- <!-- </datepicker>-->
135
- <!-- </div>-->
136
- <!-- <div class="form-group col-sm-4" >-->
137
- <!-- <label class="font_normal_body">开户截止:</label>-->
138
- <!-- <datepicker-->
139
- <!-- placeholder='请选择'-->
140
- <!-- :disabled-days-of-week="[]"-->
141
- <!-- style="width:60%"-->
142
- <!-- :format="'yyyy-MM-dd'"-->
143
- <!-- :show-rest-button="reset"-->
144
- <!-- :value.sync="model.f_endfile_time"-->
145
- <!-- v-model="model.f_endfile_time"-->
146
- <!-- condition="ui.f_createfile_date <= '{} 00:00:00'">-->
147
- <!-- </datepicker>-->
148
- <!-- </div>-->
149
- <!-- <div class="form-group col-sm-4" >-->
150
- <!-- <label class="font_normal_body">表&ensp;箱&ensp;号:</label>-->
151
- <!-- <input type="text" class="input_search" v-model="model.f_metertitles"-->
152
- <!-- style="width: 60%" placeholder="请选择" condition="uf.f_metertitles='{}'">-->
153
- <!-- </div>-->
154
- <!-- <div class="form-group col-sm-4" >-->
155
- <!-- <label class="font_normal_body">抄&ensp;表&ensp;册:</label>-->
156
- <!-- <v-select-->
157
- <!-- class="select select_list"-->
158
- <!-- :value.sync="model.f_meter_book_num"-->
159
- <!-- v-model="model.f_meter_book_num"-->
160
- <!-- :options='$parent.$parent.cbc'-->
161
- <!-- placeholder='请选择'-->
162
- <!-- condition="uf.f_meter_book_num='{}'"-->
163
- <!-- close-on-select-->
164
- <!-- value-single-->
165
- <!-- >-->
166
- <!-- </v-select>-->
167
- <!-- </div>-->
168
- <div class="form-group col-sm-4" >
169
- <label class="font_normal_body">派发情况:</label>
170
- <v-select
171
- class="select select_list"
172
- :value.sync="model.yearCheck"
173
- v-model="model.yearCheck"
174
- :options='$parent.$parent.yearCheckList'
175
- placeholder='请选择'
176
- condition="{}"
177
- :search="false"
178
- close-on-select
179
- value-single
180
- >
181
- </v-select>
182
- </div>
183
- <div class="form-group col-sm-4" >
184
- <label class="font_normal_body">安检状态:</label>
185
- <v-select
186
- class="select select_list"
187
- :value.sync="model.f_last_check_state"
188
- v-model="model.f_last_check_state"
189
- :options='$parent.$parent.entry_status'
190
- placeholder='请选择'
191
- :search="false"
192
- close-on-select
193
- value-single
194
- >
195
- </v-select>
196
- </div>
197
- <!-- <div class="form-group col-sm-4" >-->
198
- <!-- <label class="font_normal_body">安检情况:</label>-->
199
- <!-- <v-select-->
200
- <!-- class="select select_list"-->
201
- <!-- :value.sync="model.checkState"-->
202
- <!-- v-model="model.checkState"-->
203
- <!-- :options='$parent.$parent.checkStateList'-->
204
- <!-- placeholder='请选择'-->
205
- <!-- condition="{}"-->
206
- <!-- :search="false"-->
207
- <!-- close-on-select-->
208
- <!-- value-single-->
209
- <!-- >-->
210
- <!-- </v-select>-->
211
- <!-- </div>-->
212
- <div class="form-group col-sm-4" >
213
- <label class="font_normal_body">安检片区:</label>
214
- <v-select
215
- class="select select_list"
216
- :value.sync="model.checkBook"
217
- v-model="model.checkBook"
218
- :options='$parent.$parent.checkBooks'
219
- placeholder='请选择'
220
- @change="$parent.$parent.areaListdata(model.checkBook)"
221
- :search="false"
222
- :multiple="true"
223
- >
224
- </v-select>
225
- </div>
226
- <!--<div class="form-group col-sm-4" >
227
- <label class="font_normal_body">入户情况:</label>
228
- <v-select
229
- class="select select_list"
230
- :value.sync="model.f_hasHousehold"
231
- v-model="model.f_hasHousehold"
232
- :options='$parent.$parent.hasHousehold'
233
- placeholder='请选择'
234
- close-on-select
235
- :search="false"
236
- value-single
237
- >
238
- </v-select>
239
- </div>-->
240
- <div class="form-group col-sm-4" >
241
- <label class="font_normal_body">安检起始:</label>
242
- <datepicker
243
- placeholder='请选择'
244
- style="width:60%;text-align: center"
245
- :disabled-days-of-week="[]"
246
- :format="'yyyy-MM-dd'"
247
- :show-rest-button="reset"
248
- :value.sync="model.f_check_start"
249
- v-model="model.f_check_start"
250
- condition="ui.f_last_check_date >='{} 00:00:00'">
251
- </datepicker>
252
- </div>
253
- <div class="form-group col-sm-4" >
254
- <label class="font_normal_body">安检截止:</label>
255
- <datepicker
256
- placeholder='请选择'
257
- :disabled-days-of-week="[]"
258
- style="width:60%;text-align: center"
259
- :format="'yyyy-MM-dd'"
260
- :show-rest-button="reset"
261
- :value.sync="model.f_check_end"
262
- v-model="model.f_check_end"
263
- condition="ui.f_last_check_date <='{} 00:00:00'">
264
- </datepicker>
265
- </div>
266
-
267
- </div>
268
- </div>
269
- <div slot="modal-footer" class="modal-footer" style="text-align: center">
270
- <button class="button_search" style="margin-right: 15px" @click="search()">查询</button>
271
- <button class="button_search" @click="$parent.$parent.cancel">取消</button>
272
- </div>
273
- </modal>
274
- <modal :show.sync="$parent.$parent.excelUserCondtion" width="500px" v-ref:modal1 >
275
- <div slot="modal-header" class="modal-header">
276
- <h4 class="modal-title">
277
- 导入用户编号
278
- </h4>
279
- </div>
280
- <div slot="modal-body" class="modal-body">
281
- <div class="row">
282
- <file-upload class="my-file-uploader " name="UploadFile" class="btn btn-success" style="border-radius: 2px;"
283
- action="rs/file/uploadFile" tagname="档案信息导入" v-ref:file :headers="headers" multiple></file-upload>
284
- <img src="../../../assets/Excelformat.png" style="width: 100%"/>
285
- </div>
286
- </div>
287
- <footer slot="modal-footer" class="modal-footer">
288
- </footer>
289
- </modal>
290
- <!--<div class="form-group col-sm-4 button-range" >
291
-
292
- <button class="button_search" style="margin-right: 10px" @click="search()">查询</button>
293
- <export-excel-safe :data="$parent.$parent.exportParameter"
294
- :field="$parent.$parent.excelHeaders"
295
- sqlurl="rs/logic/SafeExportExcel" sql-name="planItem"
296
- template-name='安检计划明细' :choose-col="true">
297
- </export-excel-safe>
298
-
299
- </div>-->
300
- </div>
301
- </div>
302
- </criteria>
303
- <data-grid :model="model" partial='list' class="table_sy">
304
-
305
- <template partial='head'>
306
- <tr>
307
- <th><nobr><input type="checkbox" onClick="event.cancelBubble = true" :checked="$parent.$parent.$parent.checkAll" @change="$parent.$parent.$parent.setCheckAll()"/> 全选</nobr></th>
308
- <th><nobr>用户编号</nobr></th>
309
- <th><nobr>用户名称</nobr></th>
310
- <th><nobr>用户类型</nobr></th>
311
- <th><nobr>小区名称</nobr></th>
312
- <!-- <th><nobr>片区</nobr></th>-->
313
- <th><nobr>抄表册</nobr></th>
314
- <th title="当前所在的安检计划名称"><nobr>所属计划</nobr></th>
315
- <th title="最后一次安检日期"><nobr>安检日期</nobr></th>
316
- <th><nobr>详细地址</nobr></th>
317
- </tr>
318
- </template>
319
- <template partial='body'>
320
- <td style="text-align: center;white-space:nowrap;"><input type="checkbox" onClick="event.cancelBubble = true" :checked="$parent.$parent.$parent.isChecked(row.id)" @change="$parent.$parent.$parent.setCheckes(row.id)" /></td>
321
- <td style="text-align: center"><nobr>{{row.f_userinfo_code}}</nobr></td>
322
- <td style="text-align: center"><nobr>{{row.f_user_name}}</nobr></td>
323
- <td style="text-align: center"><nobr>{{row.f_user_type}}</nobr></td>
324
- <td style="text-align: center"><nobr>{{row.f_residential_area}}</nobr></td>
325
- <!-- <td style="text-align: center"><nobr>{{row.f_slice_area}}</nobr></td>-->
326
- <td style="text-align: center"><nobr>{{row.f_book_name}}</nobr></td>
327
- <td style="text-align: center"><nobr>{{row.f_plan_name}}</nobr></td>
328
- <td style="text-align: center"><nobr>{{row.f_last_check_date}}</nobr></td>
329
- <td style="text-align: center"><nobr>{{row.f_address}}</nobr></td>
330
- </template>
331
- </data-grid>
332
- </criteria-paged>
333
- </div>
334
- </template>
335
-
336
- <script>
337
- import {HttpResetClass, PagedList} from "vue-client";
338
- import * as Util from "../../../components/Util";
339
- import Vue from "vue";
340
-
341
- export default {
342
- name: "PlanManage",
343
- title: '计划管理',
344
- data() {
345
- return {
346
- model:new PagedList('/rs/sql/FetchUserFileByOrgNoRuHuSXQ', 100, {
347
- "orderitem": "'f_residential_area,f_building,f_unit,f_floor,f_room'",
348
- "f_usertype": "''",
349
- "month": "''",
350
- "SafeCheckSX": {"f_check_start": '', "f_check_end": ''},
351
- "SafeCheckCQ": "''",
352
- "startday":"''",
353
- "endday":"''"}),
354
- a:'1',
355
- opt:[{label:"测试",value:"测试"}],
356
- showCondtion:false,
357
- userTypes:[],//用户类型
358
- entry_status:[],
359
- userStates:[],//用户状态
360
- gasproperties:[],//用气性质
361
- meter_gasbrand:[],//气表品牌
362
- hasHousehold:[{label:"全部",value:""},{label:"已入户",value:"已入户"},{label:"未入户",value:"未入户"}],
363
- yearCheckList:[{label:"全部",value:""},{label:"已在计划中",value:"ua.f_plan_id is not null"},{label:"未在计划中",value:"ua.f_plan_id is null"}],
364
- checkStateList:[{label:"全部",value:""},{label:"两年内已检",value:"DATEDIFF(day,isnull(ui.f_last_check_date,'2010-01-01'),GETDATE())<=730"},{label:"两年内未检",value:"DATEDIFF(day,isnull(ui.f_last_check_date,'2010-01-01'),GETDATE())>730"},{label:"从未安检",value:"从未安检"}],
365
- hasResidentialArea:[{label:"全部",value:""},{label:"有名称",value:"有名称"},{label:"无名称",value:"无名称"}],
366
- sliceArea:[],
367
- meterbooks:[],
368
- checkBooks:[{label:'sss',value:'1-用户'},{label:'ssssss',value:'1-小区'}],
369
- cbc:[],
370
- areaList:[],
371
- checkAll:false,
372
- checkes:[],
373
- areaen:[],//片区
374
- excelUserCondtion:false,
375
- uploadCodeCondition:''
376
- }
377
- },
378
- props:["selectplan","userlogin"],
379
- ready(){
380
- // this.$refs.paged.$refs.criteria.model.f_endfile_time=Util.toStartDateYearString()
381
- //this.$refs.paged.$refs.criteria.model.f_hasHousehold='未入户'
382
- this.getCheckBook()
383
- this.setConList()
384
- this.loadpage()
385
- this.getGasbrand()
386
- },
387
- methods: {
388
- areaListdata(area){
389
- console.log('area=', JSON.stringify(area))
390
- let uass = []
391
- let areass = []
392
- if(area){
393
- for (let areas of area) {
394
- if(areas.toString().split("-")[1] === '用户'){
395
- uass.push(areas.toString().split("-")[0])
396
- }else{
397
- areass.push(areas.toString().split("-")[0])
398
- }
399
- }
400
- this.areaen=uass.concat(areass)
401
- console.log('areaen=', JSON.stringify(this.areaen))
402
- }
403
-
404
- // this.select_search(areaen)
405
- },
406
- getGasbrand(){
407
- this.meter_gasbrand=[]
408
- new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_GroupBy`, {
409
- data: {
410
- items: 'id,f_meter_brand',
411
- tablename: 't_gasbrand',
412
- condition: `f_orgid = '${this.userlogin.orgid}'`,
413
- groupitem: 'id,f_meter_brand'
414
- }
415
- }, {resolveMsg: null, rejectMsg: null}).then(res => {
416
- this.meter_gasbrand.push({label: '全部', value: ''})
417
- console.log('res=', JSON.stringify(res))
418
- res.data.forEach(ress => {
419
- console.log('ress=', JSON.stringify(ress))
420
- this.meter_gasbrand.push({
421
- label: ress.f_meter_brand,
422
- value: ress.id
423
- })
424
- })
425
- })
426
- },
427
- getCheckBook(){
428
- this.checkBooks=[]
429
- new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
430
- data: {
431
- items: 'id,f_check_book_name,f_check_book_type',
432
- tablename: 't_check_book',
433
- condition: `f_orgid = '${this.userlogin.orgid}'`,
434
- orderitem: 'id desc'
435
- }
436
- }, {resolveMsg: null, rejectMsg: null}).then(res => {
437
- this.checkBooks.push({label: '全部', value: ''})
438
- this.checkBooks.push({label: '未在片区内', value: '111111'})
439
- res.data.forEach(ress => {
440
- this.checkBooks.push({
441
- label: ress.f_check_book_name,
442
- value: `${ress.id}-${ress.f_check_book_type}`
443
- })
444
- })
445
- })
446
- },
447
- loadpage(){
448
- this.select_search()
449
- this.Mreadibook()
450
- this.getSliceArea()
451
- },
452
- cancel(){
453
- this.showCondtion=false
454
- this.excelUserCondtion=false
455
- },
456
- //清空用户编号
457
- clearUserInfoId(){
458
- this.uploadCodeCondition=''
459
- Vue.showMessage("已清空用户编号")
460
- },
461
- showUploadCodeCondition(){
462
- this.excelUserCondtion=true
463
- },
464
- selfSearch (args) {
465
- //tag)
466
- let condition1="(ui.f_last_check_date is null or ui.f_last_check_date ='')"
467
- let arge = args.condition.replace('从未安检',condition1)
468
- args.condition = arge
469
- args.condition += ` and ui.f_filialeid='${this.userlogin.orgid}'`
470
- if (!Util.isEmpty(args.model.f_last_check_state)){
471
- if (args.model.f_last_check_state == '未检'){
472
- args.condition +=" and (ui.f_last_check_state is null or ui.f_last_check_state ='')"
473
- }else {
474
- args.condition += `and ui.f_last_check_state = '${args.model.f_last_check_state}'`
475
- }
476
- }
477
- //(ua.f_residential_area is not null or ua.f_residential_area !='')
478
- // (ua.f_residential_area is null or ua.f_residential_area ='')
479
- if (args.model.f_residential_area == "无名称"){
480
- args.condition +=" and (ua.f_residential_area is null or ua.f_residential_area ='')"
481
- }else if (args.model.f_residential_area == "有名称"){
482
- args.condition +=" and (ua.f_residential_area is not null and ua.f_residential_area !='')"
483
- }
484
- console.log('查询条件',args)
485
- /*if(args.model.f_hasHousehold=='已入户'){
486
- args.condition +=` and Extract(year from TO_DATE(ua.f_last_check_date,'yyyy-mm-dd hh24:mi:ss'))=2021 and ua.F_LAST_CHECK_STATE='入户'`
487
- }else if(args.model.f_hasHousehold=='未入户'){
488
- args.condition +=` and (Extract(year from nvl(TO_DATE(ua.f_last_check_date,'yyyy-mm-dd hh24:mi:ss'),'1990-01-01 00:00:00'))!=2021 or nvl(ua.F_LAST_CHECK_STATE,'未入户')!='入户')`
489
- }*/
490
- if(args.model.checkBook){
491
- /* let arr=args.model.checkBook.split('-')
492
- if(arr[1] == '用户'){
493
- args.condition +=` and ua.f_check_book_id=${arr[0]}`
494
- }else{
495
- args.condition +=` and area.f_check_book_id=${arr[0]} and ua.f_check_book_id is null`
496
- }*/
497
- let uas = []
498
- let areas = []
499
- for (let item of args.model.checkBook) {
500
- if(item.split("-")[1] === '用户'){
501
- uas.push(item.split("-")[0])
502
- }else{
503
- areas.push(item.split("-")[0])
504
- }
505
- }
506
- let ua = this.$login.convertToIn(uas)
507
- let area = this.$login.convertToIn(areas)
508
- if (uas.length > 0 && areas.length > 0){
509
- if (area.indexOf("111111") > 0){
510
- args.condition += `and (ua.f_check_book_id in ${ua} or ( (area.f_check_book_id in ${area} or area.f_check_book_id is null ) and ua.f_check_book_id is null ) )`
511
- }else {
512
- args.condition += `and (ua.f_check_book_id in ${ua} or ( area.f_check_book_id in ${area} and ua.f_check_book_id is null ) )`
513
- }
514
- }else if (uas.length > 0 && areas.length < 1 ){
515
- args.condition += `and ua.f_check_book_id in ${ua}`
516
- } else if (uas.length < 1 && areas.length > 0){
517
- if (area.indexOf("111111") > 0 ){
518
- args.condition += `and (area.f_check_book_id in ${area} or area.f_check_book_id is null ) and ua.f_check_book_id is null`
519
- }else {
520
- args.condition += `and area.f_check_book_id in ${area} and ua.f_check_book_id is null`
521
- }
522
- }
523
- }
524
- if(this.uploadCodeCondition){
525
- args.condition +=` and ${this.uploadCodeCondition}`
526
- }
527
- this.cancel()
528
- this.checkes=[]
529
- this.checkAll=false
530
- this.model.search(args.condition, args.model, args.condValue)
531
- },
532
- showUserCondition(){
533
- this.showCondtion=true
534
- },
535
- setConList(){
536
- this.entry_status=this.$appdata.getParam('安检状态') ? [{
537
- label: '全部',
538
- value: ''
539
- }, ...this.$appdata.getParam('安检状态')] : [{label: '全部', value: ''}]
540
-
541
- this.userTypes=this.$appdata.getParam('用户类型') ? [{
542
- label: '全部',
543
- value: ''
544
- }, ...this.$appdata.getParam('用户类型')] : [{label: '全部', value: ''}]
545
- this.userStates=this.$appdata.getParam('安检用户状态') ? [{
546
- label: '全部',
547
- value: ''
548
- }, ...this.$appdata.getParam('安检用户状态')] : [{label: '全部', value: ''}]
549
- this.gasproperties=this.$appdata.getParam('用气性质') ? [{
550
- label: '全部',
551
- value: ''
552
- }, ...this.$appdata.getParam('用气性质')] : [{label: '全部', value: ''}]
553
- // this.meter_classifys=this.$appdata.getParam('气表类型') ? [{
554
- // label: '全部',
555
- // value: ''
556
- // }, ...this.$appdata.getParam('气表类型')] : [{label: '全部', value: ''}]
557
- },
558
- select_search(text, type){
559
- //tag
560
- let pcdText=text?` and f_residential_area like '%${text}%'`:''
561
- if (type == 'pqId'){
562
- if(text.length==0){
563
- pcdText=text?` and 1=1`:''
564
- }else {
565
- pcdText =text?`and f_check_book_id in (${text})`:''
566
- }
567
-
568
- }
569
- new HttpResetClass().load("POST", `${this.$androidUtil.getProxyUrl()}/rs/sql/safe_singleTable_OrderBy`, {data:{items:"*",tablename:"t_area",orderitem:"id",condition:`f_orgid = '${this.userlogin.orgid}' ${pcdText} `}}, {resolveMsg: null, rejectMsg: null}).then((res)=>{
570
- //tag)
571
- this.areaList=[]
572
- this.areaList.push({label:"全部",value:""})
573
- res.data.forEach((result)=>{
574
- this.areaList.push({label:result.f_residential_area,value:result.f_residential_area})
575
- console.log('this.areaList=', JSON.stringify(this.areaList))
576
- })
577
- //tag)
578
- })
579
-
580
-
581
- },
582
- //获取抄表册
583
- async Mreadibook(){
584
- this.cbc=[]
585
- this.sliceArea=[]
586
- let http = new HttpResetClass()
587
- let getMeterReadingBooks = await http.load('POST','rs/logic/getMeterBooksData',
588
- {data: {f_orgid: "('"+this.userlogin.orgid+"')"}},
589
- {resolveMsg: null, rejectMsg: '获取失败!!!'})
590
- this.cbc = [{label: '全部', value: ''}]
591
- //tag
592
- //tag)
593
- //tag
594
- this.meterbooks=[]
595
- this.meterbooks=getMeterReadingBooks.data.meterbooks
596
- this.meterbooks.forEach((res) => {
597
- this.cbc.push({label: res.f_book_name, value: res.id})
598
- /*if(res.f_book_slice_area){
599
- if(this.sliceArea.indexOf(res.f_book_slice_area)<0){
600
- this.sliceArea.push(res.f_book_slice_area)
601
- }
602
- }*/
603
- })
604
-
605
- },
606
- //片区获取
607
- async getSliceArea() {
608
- let http = new HttpResetClass()
609
- let getAllArea = await http.load('POST', '/rs/search', {
610
- source: 'this.getParentByType($organization$).getAllChildrens().where(row.getType() == $zone$)',
611
- userid: this.userlogin.id
612
- }, {resolveMsg: null, rejectMsg: '获取片区出错!!!'})
613
- this.sliceArea = [{label: '全部', value: ''}]
614
- //tag
615
- //tag
616
- //tag
617
- getAllArea.data.forEach((res) => {
618
- if(res.parentid==this.userlogin.orgid){
619
- this.sliceArea.push({label:res.name,value:res.name})
620
- }
621
- })
622
- //tag
623
- },
624
- //片区改变-对应抄表册下拉重新赋值
625
- slice_areaChange(value) {
626
- //tag
627
- if(!value){
628
- this.cbc=[]
629
- this.meterbooks.forEach((res) => {
630
- this.cbc.push({label: res.f_book_name, value: res.id})
631
- })
632
- }else{
633
- this.cbc=[]
634
- this.meterbooks.forEach((res) => {
635
- if(res.f_book_slice_area==value){
636
- this.cbc.push({label: res.f_book_name, value: res.id})
637
- }
638
- })
639
- }
640
- },
641
- isChecked(v) {
642
- // 如果全选,不在的按选中算,否则,在的按选中算
643
- if (this.checkAll) {
644
- return this.checkes.indexOf(v) == -1
645
- } else {
646
- return this.checkes.indexOf(v) != -1
647
- }
648
- },
649
- setCheckAll() {
650
- this.checkAll=this.checkAll?false:true;
651
- // 全选改变后,清空选中数据
652
- this.checkes = []
653
- },
654
- setCheckes(id) {
655
- let index=this.checkes.indexOf(id)
656
- if(index<0){
657
- this.checkes.push(id)
658
- }else{
659
- this.checkes.splice(index,1)
660
- }
661
- },
662
- //将客户信息拖至计划中
663
- async dragtoPlanItem() {
664
- if(this.model.rows.length==0){
665
- Vue.showMessage("未检测到列表中有用户!")
666
- return
667
- }
668
- if(!this.checkAll && this.checkes.length==0){
669
- Vue.showMessage("请先勾选你要添入到上方计划中的用户!")
670
- return
671
- }
672
- if(this.selectplan && this.selectplan.id){
673
- this.$parent.isSend=true
674
- try{
675
- let res=await new HttpResetClass().load("POST", "/rs/logic/AddCheckPlanItem", {
676
- data:{
677
- f_operator:this.userlogin.name,
678
- f_plan_id:this.selectplan.id,
679
- f_safecheck_type:this.selectplan.f_safecheck_type,
680
- f_filialeid:this.userlogin.orgid,
681
- f_subscribe_date:'',
682
- condition:this.model.condition,
683
- switchCheckAll:true,
684
- checkAll:this.checkAll,
685
- param:this.checkes,
686
- columnName: "ua.id"
687
- }
688
- }, {resolveMsg: null, rejectMsg: null})
689
- //tag+"---"+res.data.result.length)
690
- this.$parent.isSend=false
691
- if(res.data.code==200){
692
- //alert("添加成功!有"+res.data.result.length+"条用户地址已经存在于其他计划中: \n"+res.data.result.reduce((c,v)=>{c += v.f_user_name+":"+v.f_address+"\n"}),0)
693
- this.$showMessage("添加成功!"+(res.data.result.length>0?"有"+res.data.result.length+"条用户地址已经存在于其他计划中":""))
694
- this.$parent.refresh()
695
- }else{
696
- this.$showMessage("添加失败!")
697
- }
698
- }catch (e) {
699
- this.$showMessage("添加失败!")
700
- }
701
- }else{
702
- this.$parent.isSend=false
703
- this.$showMessage("请先打开一个计划再进行操作")
704
- }
705
- }
706
- },
707
- watch: {
708
- 'areaen'(val) {
709
- console.log('val=', JSON.stringify(val))
710
- this.select_search(val, 'pqId')
711
- }
712
- },
713
- events: {
714
- onFileUpload: function (file, res) {
715
- //tag)
716
- //tag)
717
- let data = {
718
- filepath: res.f_downloadpath
719
- }
720
- new HttpResetClass().load('POST','/rs/logic/safe_GetUserInfoFromExcel', {data: data}, {
721
- resolveMsg: '导入成功!已生成条件,若要去除导入条件请点击旁边 ‘清空用户编号’ 按钮。',
722
- rejectMsg: '导入失败'
723
- }).then((res) => {
724
- this.uploadCodeCondition=res.data.condition
725
- this.excelUserCondtion = false
726
- })
727
- },
728
-
729
- }
730
- }
731
- </script>
732
-
733
- <style scoped>
734
- .safe-planfont{
735
- font-family: MicrosoftYaHei;
736
- font-size: 15px;
737
- font-weight: normal;
738
- font-stretch: normal;
739
- letter-spacing: 2px;
740
- color: #333333;
741
- line-height: 25px;
742
- }
743
- .safe-bodyfont{
744
- font-family: MicrosoftYaHei;
745
- font-size: 14px;
746
- font-weight: normal;
747
- font-stretch: normal;
748
- letter-spacing: 0px;
749
- color: #999999;
750
- line-height: 30px;
751
- }
752
- .safe-leftplan{
753
- height:auto;
754
- border-bottom:1px solid #ececec;
755
- padding: 10px 5px
756
- }
757
- .leftplan-center{
758
- border-top:1px solid #ececec;
759
- border-bottom:1px solid #ececec;
760
- }
761
- .safe_p{
762
- white-space: nowrap;
763
- overflow: hidden;
764
- text-overflow: ellipsis;
765
- }
766
- .safe-div-p{
767
- color: #4792de;
768
- text-align: end;
769
- padding: 8px 15px;
770
- }
771
- </style>
772
- <style lang="less">
773
- .upuserinfo_sel ul{
774
- width: 150% !important;
775
- }
776
- </style>
1
+ <template>
2
+ <div>
3
+ <criteria-paged :model="model" v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:criteria>
5
+ <div partial>
6
+ <div class="row " >
7
+ <label class="form-group font_normal_body"><b>用户信息</b></label>
8
+
9
+ <div class="form-group col-sm-1" >
10
+ <input type="text" class="input_search" v-model="model.f_userinfo_code"
11
+ style="width: 95%" placeholder="客户编号" condition="ui.f_userinfo_code='{}'">
12
+ </div>
13
+ <div class="form-group col-sm-1" v-if="false">
14
+ <input type="text" class="input_search" v-model="model.f_user_name"
15
+ style="width: 95%" placeholder="客户名称" condition="ui.f_user_name like '%{}%'">
16
+ </div>
17
+ <div class="form-group col-sm-1" v-if="false">
18
+ <input type="text" class="input_search" v-model="model.f_address"
19
+ style="width: 95%" placeholder="客户地址" condition="ua.f_address like '%{}%'">
20
+ </div>
21
+ <div class="form-group col-sm-1 upuserinfo_sel" >
22
+ <v-select
23
+ class="select select_list"
24
+ :width="'95%'"
25
+ :value.sync="model.f_area"
26
+ v-model="model.f_area"
27
+ :options='$parent.$parent.areaList'
28
+ :timeout="500"
29
+ @select-search="$parent.$parent.select_search"
30
+ placeholder='小区选择'
31
+ condition="ua.f_residential_area = '{}'"
32
+ close-on-select
33
+ value-single
34
+ >
35
+ </v-select>
36
+ </div>
37
+ <div class="form-group col-sm-4" >
38
+ <button class="button_new" style="margin-right: 10px" @click="$parent.$parent.showUserCondition()">更多条件</button>
39
+ <button class="button_new" style="margin-right: 10px" @click="$parent.$parent.showUploadCodeCondition()">导入编号</button>
40
+ <button class="button_new" style="margin-right: 10px" @click="$parent.$parent.clearUserInfoId()">清空编号</button>
41
+ <button class="button_search" style="margin-right: 10px" @click="search()">查询</button>
42
+ </div>
43
+ <div class="form-group col-sm-1" style="float: right">
44
+ <button class="button_search" style="margin-right: 10px" @click="$parent.$parent.dragtoPlanItem()">添入计划</button>
45
+ </div>
46
+ <modal :show.sync="$parent.$parent.showCondtion" v-ref:modal :width="'50%'" :backdrop="false">
47
+ <div slot="modal-header" class="modal-header">
48
+ <h4 class="modal-title">
49
+ 用户查询条件
50
+ </h4>
51
+ </div>
52
+ <div slot="modal-body" class="modal-body">
53
+ <div class="row">
54
+ <div class="form-group col-sm-4" >
55
+ <label class="font_normal_body">用户类型:</label>
56
+ <v-select
57
+ class="select select_list"
58
+ :value.sync="model.f_user_type"
59
+ v-model="model.f_user_type"
60
+ :options='$parent.$parent.userTypes'
61
+ placeholder='请选择'
62
+ condition="uf.f_user_type='{}'"
63
+ :search="false"
64
+ close-on-select
65
+ value-single
66
+ >
67
+ </v-select>
68
+ </div>
69
+ <div class="form-group col-sm-4" >
70
+ <label class="font_normal_body"title="参数名称:用气性质">用气性质:</label>
71
+ <v-select
72
+ class="select select_list"
73
+ :value.sync="model.f_gasproperties"
74
+ v-model="model.f_gasproperties"
75
+ :options='$parent.$parent.gasproperties'
76
+ placeholder='请选择'
77
+ condition="uf.f_gasproperties in {}"
78
+ :search="false"
79
+ :multiple="true"
80
+ close-on-select
81
+ >
82
+ </v-select>
83
+ </div>
84
+ <div class="form-group col-sm-4" >
85
+ <label class="font_normal_body">气表品牌:</label>
86
+ <v-select
87
+ class="select select_list"
88
+ :value.sync="model.metergasbrand"
89
+ v-model="model.metergasbrand"
90
+ :options='$parent.$parent.meter_gasbrand'
91
+ placeholder='气表品牌'
92
+ condition="uf.f_gasbrand_id in {}"
93
+ :search="false"
94
+ :multiple="true"
95
+ close-on-select
96
+ >
97
+ </v-select>
98
+ </div>
99
+ <div class="form-group col-sm-4" >
100
+ <label class="font_normal_body">小区名称:</label>
101
+ <v-select
102
+ class="select select_list"
103
+ :value.sync="model.f_residential_area"
104
+ v-model="model.f_residential_area"
105
+ :options='$parent.$parent.hasResidentialArea'
106
+ placeholder='请选择'
107
+ :search="false"
108
+ close-on-select
109
+ value-single
110
+ >
111
+ </v-select>
112
+ </div>
113
+ <div class="form-group col-sm-4" >
114
+ <label class="font_normal_body">楼&ensp;栋&ensp;号:</label>
115
+ <input type="text" class="input_search" v-model="model.f_building"
116
+ style="width: 60%" placeholder="请选择" condition="ua.f_building='{}'">
117
+ </div>
118
+ <div class="form-group col-sm-4" >
119
+ <label class="font_normal_body">单&ensp;元&ensp;号:</label>
120
+ <input type="text" class="input_search" v-model="model.f_unit"
121
+ style="width: 60%" placeholder="请选择" condition="ua.f_unit='{}'">
122
+ </div>
123
+ <div class="form-group col-sm-4" >
124
+ <label class="font_normal_body">派发情况:</label>
125
+ <v-select
126
+ class="select select_list"
127
+ :value.sync="model.yearCheck"
128
+ v-model="model.yearCheck"
129
+ :options='$parent.$parent.yearCheckList'
130
+ placeholder='请选择'
131
+ condition="{}"
132
+ :search="false"
133
+ close-on-select
134
+ value-single
135
+ >
136
+ </v-select>
137
+ </div>
138
+ <div class="form-group col-sm-4" >
139
+ <label class="font_normal_body">安检状态:</label>
140
+ <v-select
141
+ class="select select_list"
142
+ :value.sync="model.f_last_check_state"
143
+ v-model="model.f_last_check_state"
144
+ :options='$parent.$parent.entry_status'
145
+ placeholder='请选择'
146
+ :search="false"
147
+ close-on-select
148
+ value-single
149
+ >
150
+ </v-select>
151
+ </div>
152
+ <div class="form-group col-sm-4" >
153
+ <label class="font_normal_body">安检片区:</label>
154
+ <v-select
155
+ class="select select_list"
156
+ :value.sync="model.checkBook"
157
+ v-model="model.checkBook"
158
+ :options='$parent.$parent.checkBooks'
159
+ placeholder='请选择'
160
+ @change="$parent.$parent.areaListdata(model.checkBook)"
161
+ :search="false"
162
+ :multiple="true"
163
+ >
164
+ </v-select>
165
+ </div>
166
+ <div class="form-group col-sm-4" >
167
+ <label class="font_normal_body">安检起始:</label>
168
+ <datepicker
169
+ placeholder='请选择'
170
+ style="width:60%;text-align: center"
171
+ :disabled-days-of-week="[]"
172
+ :format="'yyyy-MM-dd 00:00:00'"
173
+ :show-rest-button="reset"
174
+ :value.sync="model.f_check_start"
175
+ v-model="model.f_check_start">
176
+ </datepicker>
177
+ </div>
178
+ <div class="form-group col-sm-4" >
179
+ <label class="font_normal_body">安检截止:</label>
180
+ <datepicker
181
+ placeholder='请选择'
182
+ :disabled-days-of-week="[]"
183
+ style="width:60%;text-align: center"
184
+ :format="'yyyy-MM-dd 23:59:59'"
185
+ :show-rest-button="reset"
186
+ :value.sync="model.f_check_end"
187
+ v-model="model.f_check_end">
188
+ </datepicker>
189
+ </div>
190
+ <div class="form-group col-sm-4" >
191
+ <label class="font_normal_body">入户截止:</label>
192
+ <datepicker
193
+ placeholder='请选择'
194
+ :disabled-days-of-week="[]"
195
+ style="width:60%;text-align: center"
196
+ :format="'yyyy-MM-dd 23:59:59'"
197
+ :show-rest-button="reset"
198
+ :value.sync="model.f_ruhu_end"
199
+ v-model="model.f_ruhu_end">
200
+ </datepicker>
201
+ </div>
202
+
203
+ </div>
204
+ </div>
205
+ <div slot="modal-footer" class="modal-footer" style="text-align: center">
206
+ <button class="button_search" style="margin-right: 15px" @click="search()">查询</button>
207
+ <button class="button_search" @click="$parent.$parent.cancel">取消</button>
208
+ </div>
209
+ </modal>
210
+ <modal :show.sync="$parent.$parent.excelUserCondtion" width="500px" v-ref:modal1 >
211
+ <div slot="modal-header" class="modal-header">
212
+ <h4 class="modal-title">
213
+ 导入用户编号
214
+ </h4>
215
+ </div>
216
+ <div slot="modal-body" class="modal-body">
217
+ <div class="row">
218
+ <file-upload class="my-file-uploader " name="UploadFile" class="btn btn-success" style="border-radius: 2px;"
219
+ action="rs/file/uploadFile" tagname="档案信息导入" v-ref:file :headers="headers" multiple></file-upload>
220
+ <img src="../../../assets/Excelformat.png" style="width: 100%"/>
221
+ </div>
222
+ </div>
223
+ <footer slot="modal-footer" class="modal-footer">
224
+ </footer>
225
+ </modal>
226
+ <!--<div class="form-group col-sm-4 button-range" >
227
+
228
+ <button class="button_search" style="margin-right: 10px" @click="search()">查询</button>
229
+ <export-excel-safe :data="$parent.$parent.exportParameter"
230
+ :field="$parent.$parent.excelHeaders"
231
+ sqlurl="rs/logic/SafeExportExcel" sql-name="planItem"
232
+ template-name='安检计划明细' :choose-col="true">
233
+ </export-excel-safe>
234
+
235
+ </div>-->
236
+ </div>
237
+ </div>
238
+ </criteria>
239
+ <data-grid :model="model" partial='list' class="table_sy">
240
+
241
+ <template partial='head'>
242
+ <tr>
243
+ <th><nobr><input type="checkbox" onClick="event.cancelBubble = true" :checked="$parent.$parent.$parent.checkAll" @change="$parent.$parent.$parent.setCheckAll()"/> 全选</nobr></th>
244
+ <th><nobr>用户编号</nobr></th>
245
+ <th><nobr>用户名称</nobr></th>
246
+ <th><nobr>用户类型</nobr></th>
247
+ <th><nobr>小区名称</nobr></th>
248
+ <!-- <th><nobr>片区</nobr></th>-->
249
+ <th><nobr>抄表册</nobr></th>
250
+ <th title="当前所在的安检计划名称"><nobr>所属计划</nobr></th>
251
+ <th title="最后一次安检日期"><nobr>安检日期</nobr></th>
252
+ <th><nobr>详细地址</nobr></th>
253
+ </tr>
254
+ </template>
255
+ <template partial='body'>
256
+ <td style="text-align: center;white-space:nowrap;"><input type="checkbox" onClick="event.cancelBubble = true" :checked="$parent.$parent.$parent.isChecked(row.id)" @change="$parent.$parent.$parent.setCheckes(row.id)" /></td>
257
+ <td style="text-align: center"><nobr>{{row.f_userinfo_code}}</nobr></td>
258
+ <td style="text-align: center"><nobr>{{row.f_user_name}}</nobr></td>
259
+ <td style="text-align: center"><nobr>{{row.f_user_type}}</nobr></td>
260
+ <td style="text-align: center"><nobr>{{row.f_residential_area}}</nobr></td>
261
+ <!-- <td style="text-align: center"><nobr>{{row.f_slice_area}}</nobr></td>-->
262
+ <td style="text-align: center"><nobr>{{row.f_book_name}}</nobr></td>
263
+ <td style="text-align: center"><nobr>{{row.f_plan_name}}</nobr></td>
264
+ <td style="text-align: center"><nobr>{{row.f_last_check_date}}</nobr></td>
265
+ <td style="text-align: center"><nobr>{{row.f_address}}</nobr></td>
266
+ </template>
267
+ </data-grid>
268
+ </criteria-paged>
269
+ </div>
270
+ </template>
271
+
272
+ <script>
273
+ import {HttpResetClass, PagedList} from "vue-client";
274
+ import * as Util from "../../../components/Util";
275
+ import Vue from "vue";
276
+
277
+ export default {
278
+ name: "checkUserList",
279
+ title: '计划管理',
280
+ data() {
281
+ let model = new PagedList('/rs/sql/FetchUserFileByOrgNoRuHuSXQ', 20, {
282
+ "orderitem": "'f_residential_area,f_building,f_unit,f_floor,f_room'",
283
+ "f_usertype": "''",
284
+ "month": "''",
285
+ "SafeCheckSX": 'this.SafeCheckSX',
286
+ "SafeCheckCQ": "''",
287
+ "startday":"''",
288
+ "endday":"''"})
289
+ model.SafeCheckSX = '1 = 1'
290
+ return {
291
+ model: model,
292
+ a:'1',
293
+ opt:[{label:"测试",value:"测试"}],
294
+ showCondtion:false,
295
+ userTypes:[],//用户类型
296
+ entry_status:[],
297
+ userStates:[],//用户状态
298
+ gasproperties:[],//用气性质
299
+ meter_gasbrand:[],//气表品牌
300
+ hasHousehold:[{label:"全部",value:""},{label:"已入户",value:"已入户"},{label:"未入户",value:"未入户"}],
301
+ yearCheckList:[{label:"全部",value:""},{label:"已在计划中",value:"ua.f_plan_id is not null"},{label:"未在计划中",value:"ua.f_plan_id is null"}],
302
+ hasResidentialArea:[{label:"全部",value:""},{label:"有名称",value:"有名称"},{label:"无名称",value:"无名称"}],
303
+ sliceArea:[],
304
+ meterbooks:[],
305
+ checkBooks:[{label:'sss',value:'1-用户'},{label:'ssssss',value:'1-小区'}],
306
+ cbc:[],
307
+ areaList:[],
308
+ checkAll:false,
309
+ checkes:[],
310
+ areaen:[],//片区
311
+ excelUserCondtion:false,
312
+ uploadCodeCondition:''
313
+ }
314
+ },
315
+ props:["selectplan","userlogin"],
316
+ ready(){
317
+ // this.$refs.paged.$refs.criteria.model.f_endfile_time=Util.toStartDateYearString()
318
+ //this.$refs.paged.$refs.criteria.model.f_hasHousehold='未入户'
319
+ this.getCheckBook()
320
+ this.setConList()
321
+ this.loadpage()
322
+ this.getGasbrand()
323
+ },
324
+ methods: {
325
+ areaListdata(area){
326
+ console.log('area=', JSON.stringify(area))
327
+ let uass = []
328
+ let areass = []
329
+ if(area){
330
+ for (let areas of area) {
331
+ if(areas.toString().split("-")[1] === '用户'){
332
+ uass.push(areas.toString().split("-")[0])
333
+ }else{
334
+ areass.push(areas.toString().split("-")[0])
335
+ }
336
+ }
337
+ this.areaen=uass.concat(areass)
338
+ console.log('areaen=', JSON.stringify(this.areaen))
339
+ }
340
+
341
+ // this.select_search(areaen)
342
+ },
343
+ getGasbrand(){
344
+ this.meter_gasbrand=[]
345
+ new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_GroupBy`, {
346
+ data: {
347
+ items: 'id,f_meter_brand',
348
+ tablename: 't_gasbrand',
349
+ condition: `f_orgid = '${this.userlogin.orgid}'`,
350
+ groupitem: 'id,f_meter_brand'
351
+ }
352
+ }, {resolveMsg: null, rejectMsg: null}).then(res => {
353
+ this.meter_gasbrand.push({label: '全部', value: ''})
354
+ console.log('res=', JSON.stringify(res))
355
+ res.data.forEach(ress => {
356
+ console.log('ress=', JSON.stringify(ress))
357
+ this.meter_gasbrand.push({
358
+ label: ress.f_meter_brand,
359
+ value: ress.id
360
+ })
361
+ })
362
+ })
363
+ },
364
+ getCheckBook(){
365
+ this.checkBooks=[]
366
+ new HttpResetClass().load('POST', `/rs/sql/safe_singleTable_OrderBy`, {
367
+ data: {
368
+ items: 'id,f_check_book_name,f_check_book_type',
369
+ tablename: 't_check_book',
370
+ condition: `f_orgid = '${this.userlogin.orgid}'`,
371
+ orderitem: 'id desc'
372
+ }
373
+ }, {resolveMsg: null, rejectMsg: null}).then(res => {
374
+ this.checkBooks.push({label: '全部', value: ''})
375
+ this.checkBooks.push({label: '未在片区内', value: '111111'})
376
+ res.data.forEach(ress => {
377
+ this.checkBooks.push({
378
+ label: ress.f_check_book_name,
379
+ value: `${ress.id}-${ress.f_check_book_type}`
380
+ })
381
+ })
382
+ })
383
+ },
384
+ loadpage(){
385
+ this.select_search()
386
+ this.Mreadibook()
387
+ this.getSliceArea()
388
+ },
389
+ cancel(){
390
+ this.showCondtion=false
391
+ this.excelUserCondtion=false
392
+ },
393
+ //清空用户编号
394
+ clearUserInfoId(){
395
+ this.uploadCodeCondition=''
396
+ Vue.showMessage("已清空用户编号")
397
+ },
398
+ showUploadCodeCondition(){
399
+ this.excelUserCondtion=true
400
+ },
401
+ selfSearch (args) {
402
+ if( args.model.f_last_check_state == '入户' && args.model.f_ruhu_end) {
403
+ args.condition += `and DATEADD(YEAR, 2, CAST(ruhuend.f_offsite_time AS datetime)) < '${args.model.f_ruhu_end}'`
404
+ }
405
+ if(args.model.f_last_check_state && Util.isEmpty(args.model.f_ruhu_end) && (Util.isEmpty(args.model.f_check_start) || Util.isEmpty(args.model.f_check_end))) {
406
+ this.$showMessage("选择安检状态时,需要选择安检时间区间!")
407
+ return
408
+ }
409
+ if(args.model.f_last_check_state && Util.isEmpty(args.model.f_ruhu_end)) {
410
+ this.model.SafeCheckSX = ` f_offsite_time > '${args.model.f_check_start}' and f_offsite_time < '${args.model.f_check_end}'`
411
+ if (args.model.f_last_check_state == '未检') {
412
+ args.condition += ' and tcp.ruhu is null '
413
+ } else if (args.model.f_last_check_state == '入户') {
414
+ args.condition += ` and tcp.ruhu > 0`
415
+ } else if (args.model.f_last_check_state == '拒检') {
416
+ args.condition += ` and tcp.jujian > 0 and tcp.ruhu = 0 and tcp.daofang = 0 `
417
+ } else if (args.model.f_last_check_state == '到访不遇') {
418
+ args.condition += ` and tcp.daofang > 0 and tcp.ruhu = 0 and tcp.jujian = 0 `
419
+ }
420
+ }else{
421
+ //无条件
422
+ this.model.SafeCheckSX = ` 1 != 1 `
423
+ }
424
+ args.condition += ` and ui.f_filialeid='${this.userlogin.orgid}'`
425
+ if (args.model.f_residential_area == "无名称"){
426
+ args.condition +=" and (ua.f_residential_area is null or ua.f_residential_area ='')"
427
+ }else if (args.model.f_residential_area == "有名称"){
428
+ args.condition +=" and (ua.f_residential_area is not null and ua.f_residential_area !='')"
429
+ }
430
+ console.log('查询条件',args)
431
+ if(args.model.checkBook){
432
+ let uas = []
433
+ let areas = []
434
+ for (let item of args.model.checkBook) {
435
+ if(item.split("-")[1] === '用户'){
436
+ uas.push(item.split("-")[0])
437
+ }else{
438
+ areas.push(item.split("-")[0])
439
+ }
440
+ }
441
+ let ua = this.$login.convertToIn(uas)
442
+ let area = this.$login.convertToIn(areas)
443
+ if (uas.length > 0 && areas.length > 0){
444
+ if (area.indexOf("111111") > 0){
445
+ args.condition += `and (ua.f_check_book_id in ${ua} or ( (area.f_check_book_id in ${area} or area.f_check_book_id is null ) and ua.f_check_book_id is null ) )`
446
+ }else {
447
+ args.condition += `and (ua.f_check_book_id in ${ua} or ( area.f_check_book_id in ${area} and ua.f_check_book_id is null ) )`
448
+ }
449
+ }else if (uas.length > 0 && areas.length < 1 ){
450
+ args.condition += `and ua.f_check_book_id in ${ua}`
451
+ } else if (uas.length < 1 && areas.length > 0){
452
+ if (area.indexOf("111111") > 0 ){
453
+ args.condition += `and (area.f_check_book_id in ${area} or area.f_check_book_id is null ) and ua.f_check_book_id is null`
454
+ }else {
455
+ args.condition += `and area.f_check_book_id in ${area} and ua.f_check_book_id is null`
456
+ }
457
+ }
458
+ }
459
+ if(this.uploadCodeCondition){
460
+ args.condition +=` and ${this.uploadCodeCondition}`
461
+ }
462
+ this.cancel()
463
+ this.checkes=[]
464
+ this.checkAll=false
465
+ this.model.search(args.condition, args.model, args.condValue)
466
+ },
467
+ showUserCondition(){
468
+ this.showCondtion=true
469
+ },
470
+ setConList(){
471
+ this.entry_status=this.$appdata.getParam('安检状态') ? [{
472
+ label: '全部',
473
+ value: ''
474
+ }, ...this.$appdata.getParam('安检状态')] : [{label: '全部', value: ''}]
475
+
476
+ this.userTypes=this.$appdata.getParam('用户类型') ? [{
477
+ label: '全部',
478
+ value: ''
479
+ }, ...this.$appdata.getParam('用户类型')] : [{label: '全部', value: ''}]
480
+ this.userStates=this.$appdata.getParam('安检用户状态') ? [{
481
+ label: '全部',
482
+ value: ''
483
+ }, ...this.$appdata.getParam('安检用户状态')] : [{label: '全部', value: ''}]
484
+ this.gasproperties=this.$appdata.getParam('用气性质') ? [{
485
+ label: '全部',
486
+ value: ''
487
+ }, ...this.$appdata.getParam('用气性质')] : [{label: '全部', value: ''}]
488
+ // this.meter_classifys=this.$appdata.getParam('气表类型') ? [{
489
+ // label: '全部',
490
+ // value: ''
491
+ // }, ...this.$appdata.getParam('气表类型')] : [{label: '全部', value: ''}]
492
+ },
493
+ select_search(text, type){
494
+ //tag
495
+ let pcdText=text?` and f_residential_area like '%${text}%'`:''
496
+ if (type == 'pqId'){
497
+ if(text.length==0){
498
+ pcdText=text?` and 1=1`:''
499
+ }else {
500
+ pcdText =text?`and f_check_book_id in (${text})`:''
501
+ }
502
+
503
+ }
504
+ new HttpResetClass().load("POST", `${this.$androidUtil.getProxyUrl()}/rs/sql/safe_singleTable_OrderBy`, {data:{items:"*",tablename:"t_area",orderitem:"id",condition:`f_orgid = '${this.userlogin.orgid}' ${pcdText} `}}, {resolveMsg: null, rejectMsg: null}).then((res)=>{
505
+ //tag)
506
+ this.areaList=[]
507
+ this.areaList.push({label:"全部",value:""})
508
+ res.data.forEach((result)=>{
509
+ this.areaList.push({label:result.f_residential_area,value:result.f_residential_area})
510
+ console.log('this.areaList=', JSON.stringify(this.areaList))
511
+ })
512
+ //tag)
513
+ })
514
+
515
+
516
+ },
517
+ //获取抄表册
518
+ async Mreadibook(){
519
+ this.cbc=[]
520
+ this.sliceArea=[]
521
+ let http = new HttpResetClass()
522
+ let getMeterReadingBooks = await http.load('POST','rs/logic/getMeterBooksData',
523
+ {data: {f_orgid: "('"+this.userlogin.orgid+"')"}},
524
+ {resolveMsg: null, rejectMsg: '获取失败!!!'})
525
+ this.cbc = [{label: '全部', value: ''}]
526
+ //tag
527
+ //tag)
528
+ //tag
529
+ this.meterbooks=[]
530
+ this.meterbooks=getMeterReadingBooks.data.meterbooks
531
+ this.meterbooks.forEach((res) => {
532
+ this.cbc.push({label: res.f_book_name, value: res.id})
533
+ /*if(res.f_book_slice_area){
534
+ if(this.sliceArea.indexOf(res.f_book_slice_area)<0){
535
+ this.sliceArea.push(res.f_book_slice_area)
536
+ }
537
+ }*/
538
+ })
539
+
540
+ },
541
+ //片区获取
542
+ async getSliceArea() {
543
+ let http = new HttpResetClass()
544
+ let getAllArea = await http.load('POST', '/rs/search', {
545
+ source: 'this.getParentByType($organization$).getAllChildrens().where(row.getType() == $zone$)',
546
+ userid: this.userlogin.id
547
+ }, {resolveMsg: null, rejectMsg: '获取片区出错!!!'})
548
+ this.sliceArea = [{label: '全部', value: ''}]
549
+ //tag
550
+ //tag
551
+ //tag
552
+ getAllArea.data.forEach((res) => {
553
+ if(res.parentid==this.userlogin.orgid){
554
+ this.sliceArea.push({label:res.name,value:res.name})
555
+ }
556
+ })
557
+ //tag
558
+ },
559
+ //片区改变-对应抄表册下拉重新赋值
560
+ slice_areaChange(value) {
561
+ //tag
562
+ if(!value){
563
+ this.cbc=[]
564
+ this.meterbooks.forEach((res) => {
565
+ this.cbc.push({label: res.f_book_name, value: res.id})
566
+ })
567
+ }else{
568
+ this.cbc=[]
569
+ this.meterbooks.forEach((res) => {
570
+ if(res.f_book_slice_area==value){
571
+ this.cbc.push({label: res.f_book_name, value: res.id})
572
+ }
573
+ })
574
+ }
575
+ },
576
+ isChecked(v) {
577
+ // 如果全选,不在的按选中算,否则,在的按选中算
578
+ if (this.checkAll) {
579
+ return this.checkes.indexOf(v) == -1
580
+ } else {
581
+ return this.checkes.indexOf(v) != -1
582
+ }
583
+ },
584
+ setCheckAll() {
585
+ this.checkAll=this.checkAll?false:true;
586
+ // 全选改变后,清空选中数据
587
+ this.checkes = []
588
+ },
589
+ setCheckes(id) {
590
+ let index=this.checkes.indexOf(id)
591
+ if(index<0){
592
+ this.checkes.push(id)
593
+ }else{
594
+ this.checkes.splice(index,1)
595
+ }
596
+ },
597
+ //将客户信息拖至计划中
598
+ async dragtoPlanItem() {
599
+ if(this.model.rows.length==0){
600
+ Vue.showMessage("未检测到列表中有用户!")
601
+ return
602
+ }
603
+ if(!this.checkAll && this.checkes.length==0){
604
+ Vue.showMessage("请先勾选你要添入到上方计划中的用户!")
605
+ return
606
+ }
607
+ if(this.selectplan && this.selectplan.id){
608
+ this.$parent.isSend=true
609
+ try{
610
+ let res=await new HttpResetClass().load("POST", "/rs/logic/AddCheckPlanItem", {
611
+ data:{
612
+ f_operator:this.userlogin.name,
613
+ f_plan_id:this.selectplan.id,
614
+ f_safecheck_type:this.selectplan.f_safecheck_type,
615
+ f_filialeid:this.userlogin.orgid,
616
+ f_subscribe_date:'',
617
+ condition:this.model.condition,
618
+ SafeCheckSX: this.model.SafeCheckSX,
619
+ switchCheckAll:true,
620
+ checkAll:this.checkAll,
621
+ param:this.checkes,
622
+ columnName: "ua.id"
623
+ }
624
+ }, {resolveMsg: null, rejectMsg: null})
625
+ //tag+"---"+res.data.result.length)
626
+ this.$parent.isSend=false
627
+ if(res.data.code==200){
628
+ //alert("添加成功!有"+res.data.result.length+"条用户地址已经存在于其他计划中: \n"+res.data.result.reduce((c,v)=>{c += v.f_user_name+":"+v.f_address+"\n"}),0)
629
+ this.$showMessage("添加成功!"+(res.data.result.length>0?"有"+res.data.result.length+"条用户地址已经存在于其他计划中":""))
630
+ this.$parent.refresh()
631
+ }else{
632
+ this.$showMessage("添加失败!")
633
+ }
634
+ }catch (e) {
635
+ this.$showMessage("添加失败!")
636
+ }
637
+ }else{
638
+ this.$parent.isSend=false
639
+ this.$showMessage("请先打开一个计划再进行操作")
640
+ }
641
+ }
642
+ },
643
+ watch: {
644
+ 'areaen'(val) {
645
+ console.log('val=', JSON.stringify(val))
646
+ this.select_search(val, 'pqId')
647
+ }
648
+ },
649
+ events: {
650
+ onFileUpload: function (file, res) {
651
+ //tag)
652
+ //tag)
653
+ let data = {
654
+ filepath: res.f_downloadpath
655
+ }
656
+ new HttpResetClass().load('POST','/rs/logic/safe_GetUserInfoFromExcel', {data: data}, {
657
+ resolveMsg: '导入成功!已生成条件,若要去除导入条件请点击旁边 ‘清空用户编号’ 按钮。',
658
+ rejectMsg: '导入失败'
659
+ }).then((res) => {
660
+ this.uploadCodeCondition=res.data.condition
661
+ this.excelUserCondtion = false
662
+ })
663
+ },
664
+
665
+ }
666
+ }
667
+ </script>
668
+
669
+ <style scoped>
670
+ .safe-planfont{
671
+ font-family: MicrosoftYaHei;
672
+ font-size: 15px;
673
+ font-weight: normal;
674
+ font-stretch: normal;
675
+ letter-spacing: 2px;
676
+ color: #333333;
677
+ line-height: 25px;
678
+ }
679
+ .safe-bodyfont{
680
+ font-family: MicrosoftYaHei;
681
+ font-size: 14px;
682
+ font-weight: normal;
683
+ font-stretch: normal;
684
+ letter-spacing: 0px;
685
+ color: #999999;
686
+ line-height: 30px;
687
+ }
688
+ .safe-leftplan{
689
+ height:auto;
690
+ border-bottom:1px solid #ececec;
691
+ padding: 10px 5px
692
+ }
693
+ .leftplan-center{
694
+ border-top:1px solid #ececec;
695
+ border-bottom:1px solid #ececec;
696
+ }
697
+ .safe_p{
698
+ white-space: nowrap;
699
+ overflow: hidden;
700
+ text-overflow: ellipsis;
701
+ }
702
+ .safe-div-p{
703
+ color: #4792de;
704
+ text-align: end;
705
+ padding: 8px 15px;
706
+ }
707
+ </style>
708
+ <style lang="less">
709
+ .upuserinfo_sel ul{
710
+ width: 150% !important;
711
+ }
712
+ </style>