apply-clients 3.5.1 → 3.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/build/dev-server.js +142 -133
  2. package/package.json +118 -118
  3. package/src/App.vue +26 -21
  4. package/src/applyAndroid.js +58 -58
  5. package/src/components/android/AppSign.vue +152 -152
  6. package/src/components/android/AppTakePic.vue +181 -181
  7. package/src/components/android/Process/AppChargeList.vue +224 -224
  8. package/src/components/android/Process/AppExplorationUser.vue +508 -508
  9. package/src/components/android/Process/AppOtherChargeList.vue +255 -219
  10. package/src/components/product/Install/ContractCharge.vue +210 -210
  11. package/src/filiale/fugou/android/AppChargeManagement.vue +625 -625
  12. package/src/filiale/hongda/pc/FunctionServiceControl.vue +526 -525
  13. package/src/filiale/qianneng/android/AppExplorationUser.vue +441 -441
  14. package/src/filiale/qianneng/android/AppServiceControl.vue +1608 -1608
  15. package/src/filiale/qianneng/pc/Applybatchdispatch.vue +685 -685
  16. package/src/filiale/qianneng/pc/ExplorationSelect.vue +492 -492
  17. package/src/filiale/qianneng/pc/FunctionServiceControl.vue +521 -521
  18. package/src/filiale/qianneng/pc/InstallInfoSelect.vue +392 -392
  19. package/src/filiale/qianneng/pc/InstallationDetails.vue +561 -561
  20. package/src/filiale/qianneng/pc/ServiceControl.vue +1351 -1340
  21. package/src/filiale/qianneng/pc/SupervisoryList.vue +344 -344
  22. package/src/filiale/qianneng/pc/SupervisoryServiceControl.vue +871 -871
  23. package/src/filiale/qianneng/pc/chargeManagement.vue +656 -656
  24. package/src/filiale/qianneng/pc/printactivatecard.vue +295 -295
  25. package/src/filiale/qianneng/pc/supplementalAgreement.vue +344 -344
  26. package/src/filiale/yangchunboneng/android/AppAddMaterialScience.vue +390 -390
  27. package/src/filiale/yangchunboneng/android/AppChargeManagement.vue +120 -120
  28. package/src/filiale/yangchunboneng/android/AppDevicesManagement.vue +552 -552
  29. package/src/filiale/yangchunboneng/android/AppExplorationUser.vue +507 -507
  30. package/src/filiale/yangchunboneng/android/AppInstallationDetails.vue +492 -492
  31. package/src/filiale/yangchunboneng/android/AppOtherChargeManagement.vue +116 -116
  32. package/src/filiale/yangchunboneng/android/AppServiceControl.vue +1552 -1552
  33. package/src/filiale/yangchunboneng/android/AppTakePic.vue +181 -181
  34. package/src/filiale/yangchunboneng/android/chargesList.vue +170 -170
  35. package/src/filiale/yangchunboneng/android.js +16 -16
  36. package/src/filiale/yangchunboneng/pc/ExplorationSelect.vue +496 -496
  37. package/src/filiale/yangchunboneng/pc/InstallationDetails.vue +609 -609
  38. package/src/filiale/yangchunboneng/pc/ServiceControl.vue +1782 -1782
  39. package/src/filiale/yangchunboneng/pc/ServiceView.vue +1005 -1005
  40. package/src/filiale/yangchunboneng/pc/addMaterialScience.vue +374 -374
  41. package/src/filiale/yangchunboneng/pc/chargeManagement.vue +960 -960
  42. package/src/filiale/yangchunboneng/pc/devicesManagement.vue +511 -511
  43. package/src/filiale/yangchunboneng/pc/otherchargeManagement.vue +214 -214
  44. package/src/filiale/yangchunboneng/pc.js +17 -17
  45. package/src/main.js +23 -23
@@ -1,492 +1,492 @@
1
- <template>
2
- <div>
3
- <criteria-paged :model="model" v-ref:cp>
4
- <criteria partial='criteria' @condition-changed='search' v-ref:cri>
5
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
6
- <div class="row">
7
- <div class="form-group col-sm-3">
8
- <label class="font_normal_body">客户名称:</label>
9
- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
10
- v-on:keyup.enter="$parent.$parent.search()" condition="f_user_name like '%{}%'" placeholder='客户名称'>
11
- </div>
12
- <div class="form-group col-sm-3">
13
- <label class="font_normal_body">用户地址:</label>
14
- <input type="text" style="width:60%" class="input_search" placeholder='用户地址' v-model="model.f_address"
15
- v-on:keyup.enter="$parent.$parent.search()"
16
- condition="f_address like '%{}%'">
17
- </div>
18
- <div class="form-group col-sm-3 button-range">
19
- <a type="button" class="button_new button_spacing" v-if="$parent.$parent.projectStart"
20
- href="/apply/download/excel/散户报装模板.xlsx" download>模板下载</a>
21
- <button class="button_new button_spacing" style="width: max-content"
22
- v-if="$parent.$parent.projectStart"
23
- @click="$parent.$parent.showFile = !$parent.$parent.showFile">批量散户导入</button>
24
- <button class="button_new button_spacing" style="width: max-content"
25
- v-if="$parent.$parent.projectStart"
26
- @click="$parent.$parent.showModal = !$parent.$parent.showModal">工程发起</button>
27
- <button class="button_search button_spacing" @click="$parent.$parent.search()" v-el:cx>查询</button>
28
- <button class="button_search button_spacing" @click="$parent.$parent.loadPage()">返回</button>
29
- <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
30
- <div
31
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
32
- @click="$parent.$parent.criteriaShow = !$parent.$parent.criteriaShow"
33
- class="button_spacing"
34
- style="float: right">
35
- </div>
36
- </div>
37
- </div>
38
- <div class="row" v-show="$parent.$parent.criteriaShow">
39
- <div class="form-group col-sm-3">
40
- <label class="font_normal_body">组织机构:</label>
41
- <res-select
42
- restype='organization'
43
- :initresid='$parent.$parent.curorgid'
44
- @res-select="$parent.$parent.getorg"
45
- is-mul="false"
46
- ></res-select>
47
- </div>
48
- <div class="form-group col-sm-3">
49
- <label class="font_normal_body">工程编号:</label>
50
- <input type="text" style="width:60%" class="input_search" placeholder='工程编号' v-model="model.f_apply_num"
51
- v-on:keyup.enter="$parent.$parent.search()"
52
- condition="u.f_apply_num like '%{}%'">
53
- </div>
54
- <div class="form-group col-sm-3">
55
- <label class="font_normal_body">用户编号:</label>
56
- <input type="text" style="width:60%" class="input_search" placeholder='用户编号' v-model="model.f_userinfo_code"
57
- v-on:keyup.enter="$parent.$parent.search()"
58
- condition="u.f_userinfo_code like '%{}%'">
59
- </div>
60
- <div class="form-group col-sm-3">
61
- <label class="font_normal_body">客户电话:</label>
62
- <input type="text" style="width:60%" class="input_search" placeholder='客户电话' v-model="model.f_phone"
63
- v-on:keyup.enter="$parent.$parent.search()"
64
- condition="u.f_phone like '%{}%'">
65
- </div>
66
- <div class="form-group col-sm-3">
67
- <label class="font_normal_body">入户证号:</label>
68
- <input type="text" style="width:60%" class="input_search" placeholder='入户证号' v-model="model.f_entry_number"
69
- v-on:keyup.enter="$parent.$parent.search()"
70
- condition="u.f_entry_number like '%{}%'">
71
- </div>
72
- <div class="form-group col-sm-3">
73
- <label class="font_normal_body">报建类型:</label>
74
- <v-select
75
- v-model="model.f_apply_type"
76
- placeholder='报建类型'
77
- condition="f_apply_type = '{}'"
78
- :value.sync="model.f_apply_type"
79
- :options='$parent.$parent.applytype'
80
- class="select select_list"
81
- :value-single="true"
82
- @change="$parent.$parent.applyTypeChange()"
83
- close-on-select ></v-select>
84
- </div>
85
- <div class="form-group col-sm-3">
86
- <label class="font_normal_body">办理环节:</label>
87
- <v-select
88
- v-model="model.defname"
89
- placeholder='办理环节'
90
- condition="act.defname = '{}'"
91
- :value.sync="model.defname"
92
- :options='$parent.$parent.defnames'
93
- class="select select_list"
94
- :value-single="true"
95
- close-on-select ></v-select>
96
- </div>
97
- <div class="form-group col-sm-3">
98
- <label class="font_normal_body">报建性质:</label>
99
- <v-select
100
- v-model="model.f_apply_nature"
101
- placeholder='报建性质'
102
- condition="f_apply_nature = '{}'"
103
- :value.sync="model.f_apply_nature"
104
- :options='$parent.$parent.applyNatures'
105
- class="select select_list"
106
- :value-single="true"
107
- close-on-select ></v-select>
108
- </div>
109
- <div class="form-group col-sm-3">
110
- <label for="startDate" class="font_normal_body">开始时间:</label>
111
- <datepicker id="startDate" placeholder="开始日期"
112
- style="width: 60%!important;"
113
- v-model="model.startDate"
114
- :value.sync="model.startDate"
115
- :format="'yyyy-MM-dd 00:00:00'"
116
- :show-reset-button="true"
117
- condition="f_apply_date >= '{}'">
118
- </datepicker>
119
- </div>
120
- <div class="form-group col-sm-3">
121
- <label for="endDate" class="font_normal_body">结束时间:</label>
122
- <datepicker id="endDate" placeholder="结束日期"
123
- style="width: 60%!important;"
124
- v-model="model.endDate"
125
- :value.sync="model.endDate"
126
- :format="'yyyy-MM-dd 23:59:59'"
127
- :show-reset-button="true"
128
- condition="f_apply_date <= '{}'">
129
- </datepicker>
130
- </div>
131
- <div class="form-group col-sm-3">
132
- <label class="font_normal_body">客户类型:</label>
133
- <v-select
134
- v-model="model.f_user_type"
135
- placeholder='客户类型'
136
- condition="f_user_type = '{}'"
137
- :value.sync="model.f_user_type"
138
- :options='$parent.$parent.usertype'
139
- class="select select_list"
140
- :value-single="true"
141
- close-on-select ></v-select>
142
- </div>
143
- <div class="form-group col-sm-3">
144
- <label class="font_normal_body">行业:</label>
145
- <v-select
146
- v-model="model.f_industry"
147
- placeholder='行业'
148
- condition=" f_industry like '%{}%'"
149
- :value.sync="model.f_industry"
150
- :options='$parent.$parent.industrys'
151
- class="select select_list"
152
- :value-single="true"
153
- close-on-select ></v-select>
154
- </div>
155
- <div class="form-group col-sm-3">
156
- <label class="font_normal_body">备注:</label>
157
- <input type="text" style="width:60%" class="input_search" v-model="model.f_apply_remarks"
158
- condition="f_apply_remarks like '%{}%'" placeholder='备注'>
159
- </div>
160
- <div class="form-group col-sm-3">
161
- <label class="font_normal_body">用气性质:</label>
162
- <v-select
163
- v-model="model.f_gas_nature"
164
- placeholder='用气性质'
165
- condition="f_gas_nature = '{}'"
166
- :value.sync="model.f_gas_nature"
167
- :options='$parent.$parent.gasNatures'
168
- class="select select_list"
169
- :value-single="true"
170
- close-on-select ></v-select>
171
- </div>
172
- <div class="form-group col-sm-3">
173
- <label class="font_normal_body">来源:</label>
174
- <v-select
175
- v-model="model.f_apply_source"
176
- placeholder='来源'
177
- condition="f_apply_source = '{}'"
178
- :value.sync="model.f_apply_source"
179
- :options='$parent.$parent.applysources'
180
- class="select select_list"
181
- :value-single="true"
182
- close-on-select ></v-select>
183
- </div>
184
- </div>
185
- </div>
186
- </criteria>
187
- <data-grid v-if="$parent.showData" :model="model" partial='list' v-ref:grid class="list_area table_sy" style="height: 100%">
188
- <template partial='head'>
189
- <tr>
190
- <th style="white-space: nowrap;">序号</th>
191
- <th style="white-space: nowrap;">工程编号</th>
192
- <th style="white-space: nowrap;">客户编号</th>
193
- <th style="white-space: nowrap;">客户名称</th>
194
- <th style="white-space: nowrap;">地址</th>
195
- <th style="white-space: nowrap;">电话</th>
196
- <th style="white-space: nowrap;">入户证号</th>
197
- <th style="white-space: nowrap;">来源</th>
198
- <th style="white-space: nowrap;">报建类型</th>
199
- <th style="white-space: nowrap;">流程状态</th>
200
- <th style="white-space: nowrap;">报建日期</th>
201
- <th style="white-space: nowrap;">操作</th>
202
- </tr>
203
- </template>
204
- <template partial='body'>
205
- <tr class="back-style">
206
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'', row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
207
- <nobr>{{$index+1}}</nobr>
208
- </td>
209
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
210
- <nobr>{{row.f_apply_num}}</nobr>
211
- </td>
212
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
213
- <nobr>{{row.f_userinfo_code}}</nobr>
214
- </td>
215
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
216
- <nobr>{{row.f_user_name}}</nobr>
217
- </td>
218
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
219
- <nobr>{{row.f_address}}</nobr>
220
- </td>
221
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
222
- <nobr>{{row.f_phone}}</nobr>
223
- </td>
224
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
225
- <nobr>{{row.f_entry_number}}</nobr>
226
- </td>
227
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
228
- <nobr>{{row.f_apply_source}}</nobr>
229
- </td>
230
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
231
- <nobr>{{row.f_apply_type}}</nobr>
232
- </td>
233
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
234
- <nobr>{{row.f_sub_state}}</nobr>
235
- </td>
236
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
237
- <nobr>{{row.f_apply_date}}</nobr>
238
- </td>
239
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
240
- <a href="#" @click="$parent.$parent.$parent.click(row)"><nobr>{{row.defname}}</nobr></a>
241
- </td>
242
- </tr>
243
- </template>
244
- </data-grid>
245
- </criteria-paged>
246
-
247
- <modal
248
- v-if="showModal"
249
- :show.sync="showModal"
250
- backdrop="false"
251
- title="工程类型"
252
- cancel-text="取消"
253
- ok-text="确认"
254
- :callback="apply"
255
- >
256
- <div class="form-horizontal" slot="modal-body">
257
- <div class="form-group" style="margin: 10px auto">
258
- <label class="col-sm-3 control-label">报建类型:</label>
259
- <div class="col-sm-9">
260
- <v-select
261
- v-model="applyType"
262
- placeholder='请选择需要发起的工程类型'
263
- :value.sync="applyType"
264
- :options='$appdata.getParam("报建类型")'
265
- :value-single="true"
266
- class="select select_list"
267
- :search="false"
268
- close-on-select ></v-select>
269
- </div>
270
- </div>
271
- </div>
272
- </modal>
273
-
274
- <modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="选择文件">
275
- <header slot="modal-header" class="modal-header">
276
- <button type="button" class="close" @click="closeFile"><span>&times;</span></button>
277
- <h4 class="modal-title">选择文件</h4>
278
- </header>
279
- <article slot="modal-body" class="modal-body">
280
- <div class="form-group">
281
- <file-upload class="my-file-uploader" action="rs/file/uploadFile" tagname="确定" v-ref:file></file-upload>
282
- </div>
283
- </article>
284
- <footer slot="modal-footer" class="modal-footer"></footer>
285
- </modal>
286
- </div>
287
- </template>
288
- <script>
289
- import {HttpResetClass, PagedList} from 'vue-client'
290
- import {isEmpty} from '../../../components/Util'
291
-
292
- export default {
293
- title: '工程列表',
294
- props: ['showData'],
295
- data () {
296
- return {
297
- model: new PagedList('rs/sql/checkuser', 20, {
298
- data: {
299
- id: this.$login.f.id,
300
- orgid: this.$login.f.orgid
301
- }
302
- }),
303
- gasNatures: [
304
- {label: '全部',value: ''},
305
- ...this.$appdata.getParam('用气性质')
306
- ],
307
- showModal: false, // 控制发起类型选择
308
- applyType: '', // 报建类型
309
- curorgid: [this.$login.f.orgid],
310
- applytype: [{label: '全部', value: ''}, ...this.$appdata.getParam('报建类型')],
311
- applysources: this.$appdata.getParam('报建来源')?[{label: '全部', value: ''}, ...this.$appdata.getParam('报建来源')]:[{label: '全部', value: ''}],
312
- industrys: this.$appdata.getParam('使用类型')?[{label: '全部', value: ''}, ...this.$appdata.getParam('使用类型')]:[{label: '全部', value: ''}],
313
- defnames: [{label: '全部', value: ''}], // 流程节点
314
- usertype: [{label: '全部', value: ''},{label: '民用', value: '民用'},{label: '非民用', value: '非民用'}],//客户类型
315
- applyNatures: [{label: '全部', value: ''}], // 报建性质
316
- criteriaShow: false,
317
- showFile: false,
318
- laterList: [
319
- {label: '全部', value: ''},
320
- {label: '有效', value: '有效'}
321
- ]
322
- }
323
- },
324
- ready () {
325
- // 调用查询
326
- this.search()
327
- },
328
- methods: {
329
- openLater (row) {
330
- this.$dispatch('openLater', row)
331
- },
332
- closeFile () {
333
- this.showFile = false
334
- // 将选的文件清空
335
- this.$refs.file.$el.querySelector('input').value = ''
336
- this.search()
337
- },
338
- // 点击操作
339
- click (val) {
340
- this.$dispatch('apply', val)
341
- },
342
- // 获取流程id
343
- async getProcessId(processname) {
344
- let data = {
345
- workname: processname
346
- }
347
- let http = new HttpResetClass()
348
- let res = await http.load(
349
- 'POST',
350
- 'rs/logic/getProcessId',
351
- {data: data},
352
- {resolveMsg: null, rejectMsg: '流程标识获取失败!!!'}
353
- )
354
-
355
- return res.data
356
- },
357
- // 报装申请
358
- async apply () {
359
- if (this.applyType === '' || this.applyType === null) {
360
- this.$showAlert('请选择需要发起的类型', 'warning', 3000)
361
- return
362
- }
363
- let data = {
364
- f_apply_type: this.applyType
365
- }
366
- if (this.applyType === '居民用户报建') {
367
- data.processname = '居民用户报建流程'
368
- data.defname = '报装申请'
369
- } else if (this.applyType === '非居用户报建') {
370
- data.processname = '非居用户报建流程'
371
- data.defname = '报装申请'
372
- } else if (this.applyType === '居民团体用户报建') {
373
- data.processname = '居民团体用户报建流程'
374
- data.defname = '报装申请'
375
- } else if (this.applyType === '居民团体单户报建') {
376
- data.processname = '居民团体单户报建流程'
377
- data.defname = '信息确认'
378
- } else if (this.applyType === '改管报建') {
379
- data.processname = '改管报建流程'
380
- data.defname = '报装申请'
381
- } else {
382
- this.$showMessage('暂无此类报装')
383
- return
384
- }
385
-
386
- data.f_sub_state = "新增"
387
- data.f_apply_source = "线下发起"
388
- data.f_process_id = await this.getProcessId(data.processname)
389
-
390
- // 调用ExplorationUser事件
391
- this.$dispatch('apply', data)
392
-
393
- this.applyType = null
394
- this.showModal = false
395
- },
396
- loadPage () {
397
- this.$dispatch('loadPage')
398
- },
399
- search () {
400
- this.$dispatch('search')
401
- },
402
- async applyTypeChange () {
403
- if (!isEmpty(this.$refs.cp.$refs.cri.model.f_apply_type)) {
404
- let res = await this.$resetpost('rs/logic/getDefnameByType',
405
- { f_apply_type: this.$refs.cp.$refs.cri.model.f_apply_type },
406
- {resolveMsg: null, rejectMsg: '节点信息获取失败!!!'}
407
- )
408
-
409
- this.defnames = [{label: '全部', value: ''}, ...res.data]
410
-
411
- this.applyNatures = isEmpty(this.$appdata.getParam(`${this.$refs.cp.$refs.cri.model.f_apply_type}性质`)) ? [{label: '全部', value: ''}] : [{label: '全部', value: ''}, ...this.$appdata.getParam(`${this.$refs.cp.$refs.cri.model.f_apply_type}性质`)]
412
- } else {
413
- this.defnames = [{label: '全部', value: ''}]
414
-
415
- this.applyNatures = [{label: '全部', value: ''}]
416
- }
417
- },
418
- clear () {
419
- Object.keys(this.$refs.cp.$refs.cri.model).forEach((key) => {
420
- this.$refs.cp.$refs.cri.model[key] = null
421
- })
422
- },
423
- getorg (val) {
424
- if (val.length <= 0) {
425
- return
426
- }
427
- this.model.params.data.orgid = val[0]
428
- }
429
- },
430
- computed: {
431
- projectStart () {
432
- return this.$login.r.includes('报建发起')
433
- }
434
- },
435
- watch: {
436
- 'model.rows': {
437
- handler: function () {
438
- let isover = [] // 过期(超时)数据
439
- let isbeforeover = [] // 未过期 提前提醒
440
- for (let i = 0; i < this.model.rows.length; i++) {
441
- let item = this.model.rows[i]
442
- if (item.isover === '过期') {
443
- isover.push(i + 1)
444
- }
445
- if (item.isbeforeover === '预期提醒') {
446
- isbeforeover.push(i + 1)
447
- }
448
- }
449
- let msg = null
450
- if (isover.length > 0) {
451
- msg = `第${isover.toString()}条数据已过期`
452
- this.$showAlert(msg, 'warning', 3000)
453
- }
454
-
455
- if (isbeforeover.length > 0) {
456
- msg = `第${isbeforeover.toString()}条数据即将过期`
457
- if (isover.length > 0) {
458
- setTimeout(() => {
459
- this.$showAlert(msg, 'warning', 3000)
460
- }, 4000)
461
- } else {
462
- this.$showAlert(msg, 'warning', 3000)
463
- }
464
- }
465
- }
466
- }
467
- },
468
- events: {
469
- async 'onFileUpload'(file, result) {
470
- let data = {
471
- filepath: result.f_downloadpath,
472
- user: this.$login.f
473
- }
474
- let res = await this.$resetpost(`rs/logic/importApply`, {data:data}, {resolveMsg: null, rejectMsg: '导入失败!!!', silent: true}, 0)
475
-
476
- this.closeFile()
477
- }
478
- }
479
- }
480
- </script>
481
- <style scoped>
482
- .back-style{
483
- background-color: #ffa726;
484
- }
485
- .p1 {
486
- color: #dc0b12;
487
- font-weight:bold
488
- }
489
- .p {
490
- color: #ffaf4f;
491
- }
492
- </style>
1
+ <template>
2
+ <div>
3
+ <criteria-paged :model="model" v-ref:cp>
4
+ <criteria partial='criteria' @condition-changed='search' v-ref:cri>
5
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
6
+ <div class="row">
7
+ <div class="form-group col-sm-3">
8
+ <label class="font_normal_body">客户名称:</label>
9
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
10
+ v-on:keyup.enter="$parent.$parent.search()" condition="f_user_name like '%{}%'" placeholder='客户名称'>
11
+ </div>
12
+ <div class="form-group col-sm-3">
13
+ <label class="font_normal_body">用户地址:</label>
14
+ <input type="text" style="width:60%" class="input_search" placeholder='用户地址' v-model="model.f_address"
15
+ v-on:keyup.enter="$parent.$parent.search()"
16
+ condition="f_address like '%{}%'">
17
+ </div>
18
+ <div class="form-group col-sm-3 button-range">
19
+ <a type="button" class="button_new button_spacing" v-if="$parent.$parent.projectStart"
20
+ href="/apply/download/excel/散户报装模板.xlsx" download>模板下载</a>
21
+ <button class="button_new button_spacing" style="width: max-content"
22
+ v-if="$parent.$parent.projectStart"
23
+ @click="$parent.$parent.showFile = !$parent.$parent.showFile">批量散户导入</button>
24
+ <button class="button_new button_spacing" style="width: max-content"
25
+ v-if="$parent.$parent.projectStart"
26
+ @click="$parent.$parent.showModal = !$parent.$parent.showModal">工程发起</button>
27
+ <button class="button_search button_spacing" @click="$parent.$parent.search()" v-el:cx>查询</button>
28
+ <button class="button_search button_spacing" @click="$parent.$parent.loadPage()">返回</button>
29
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
30
+ <div
31
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
32
+ @click="$parent.$parent.criteriaShow = !$parent.$parent.criteriaShow"
33
+ class="button_spacing"
34
+ style="float: right">
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div class="row" v-show="$parent.$parent.criteriaShow">
39
+ <div class="form-group col-sm-3">
40
+ <label class="font_normal_body">组织机构:</label>
41
+ <res-select
42
+ restype='organization'
43
+ :initresid='$parent.$parent.curorgid'
44
+ @res-select="$parent.$parent.getorg"
45
+ is-mul="false"
46
+ ></res-select>
47
+ </div>
48
+ <div class="form-group col-sm-3">
49
+ <label class="font_normal_body">工程编号:</label>
50
+ <input type="text" style="width:60%" class="input_search" placeholder='工程编号' v-model="model.f_apply_num"
51
+ v-on:keyup.enter="$parent.$parent.search()"
52
+ condition="u.f_apply_num like '%{}%'">
53
+ </div>
54
+ <div class="form-group col-sm-3">
55
+ <label class="font_normal_body">用户编号:</label>
56
+ <input type="text" style="width:60%" class="input_search" placeholder='用户编号' v-model="model.f_userinfo_code"
57
+ v-on:keyup.enter="$parent.$parent.search()"
58
+ condition="u.f_userinfo_code like '%{}%'">
59
+ </div>
60
+ <div class="form-group col-sm-3">
61
+ <label class="font_normal_body">客户电话:</label>
62
+ <input type="text" style="width:60%" class="input_search" placeholder='客户电话' v-model="model.f_phone"
63
+ v-on:keyup.enter="$parent.$parent.search()"
64
+ condition="u.f_phone like '%{}%'">
65
+ </div>
66
+ <div class="form-group col-sm-3">
67
+ <label class="font_normal_body">入户证号:</label>
68
+ <input type="text" style="width:60%" class="input_search" placeholder='入户证号' v-model="model.f_entry_number"
69
+ v-on:keyup.enter="$parent.$parent.search()"
70
+ condition="u.f_entry_number like '%{}%'">
71
+ </div>
72
+ <div class="form-group col-sm-3">
73
+ <label class="font_normal_body">报建类型:</label>
74
+ <v-select
75
+ v-model="model.f_apply_type"
76
+ placeholder='报建类型'
77
+ condition="f_apply_type = '{}'"
78
+ :value.sync="model.f_apply_type"
79
+ :options='$parent.$parent.applytype'
80
+ class="select select_list"
81
+ :value-single="true"
82
+ @change="$parent.$parent.applyTypeChange()"
83
+ close-on-select ></v-select>
84
+ </div>
85
+ <div class="form-group col-sm-3">
86
+ <label class="font_normal_body">办理环节:</label>
87
+ <v-select
88
+ v-model="model.defname"
89
+ placeholder='办理环节'
90
+ condition="act.defname = '{}'"
91
+ :value.sync="model.defname"
92
+ :options='$parent.$parent.defnames'
93
+ class="select select_list"
94
+ :value-single="true"
95
+ close-on-select ></v-select>
96
+ </div>
97
+ <div class="form-group col-sm-3">
98
+ <label class="font_normal_body">报建性质:</label>
99
+ <v-select
100
+ v-model="model.f_apply_nature"
101
+ placeholder='报建性质'
102
+ condition="f_apply_nature = '{}'"
103
+ :value.sync="model.f_apply_nature"
104
+ :options='$parent.$parent.applyNatures'
105
+ class="select select_list"
106
+ :value-single="true"
107
+ close-on-select ></v-select>
108
+ </div>
109
+ <div class="form-group col-sm-3">
110
+ <label for="startDate" class="font_normal_body">开始时间:</label>
111
+ <datepicker id="startDate" placeholder="开始日期"
112
+ style="width: 60%!important;"
113
+ v-model="model.startDate"
114
+ :value.sync="model.startDate"
115
+ :format="'yyyy-MM-dd 00:00:00'"
116
+ :show-reset-button="true"
117
+ condition="f_apply_date >= '{}'">
118
+ </datepicker>
119
+ </div>
120
+ <div class="form-group col-sm-3">
121
+ <label for="endDate" class="font_normal_body">结束时间:</label>
122
+ <datepicker id="endDate" placeholder="结束日期"
123
+ style="width: 60%!important;"
124
+ v-model="model.endDate"
125
+ :value.sync="model.endDate"
126
+ :format="'yyyy-MM-dd 23:59:59'"
127
+ :show-reset-button="true"
128
+ condition="f_apply_date <= '{}'">
129
+ </datepicker>
130
+ </div>
131
+ <div class="form-group col-sm-3">
132
+ <label class="font_normal_body">客户类型:</label>
133
+ <v-select
134
+ v-model="model.f_user_type"
135
+ placeholder='客户类型'
136
+ condition="f_user_type = '{}'"
137
+ :value.sync="model.f_user_type"
138
+ :options='$parent.$parent.usertype'
139
+ class="select select_list"
140
+ :value-single="true"
141
+ close-on-select ></v-select>
142
+ </div>
143
+ <div class="form-group col-sm-3">
144
+ <label class="font_normal_body">行业:</label>
145
+ <v-select
146
+ v-model="model.f_industry"
147
+ placeholder='行业'
148
+ condition=" f_industry like '%{}%'"
149
+ :value.sync="model.f_industry"
150
+ :options='$parent.$parent.industrys'
151
+ class="select select_list"
152
+ :value-single="true"
153
+ close-on-select ></v-select>
154
+ </div>
155
+ <div class="form-group col-sm-3">
156
+ <label class="font_normal_body">备注:</label>
157
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_apply_remarks"
158
+ condition="f_apply_remarks like '%{}%'" placeholder='备注'>
159
+ </div>
160
+ <div class="form-group col-sm-3">
161
+ <label class="font_normal_body">用气性质:</label>
162
+ <v-select
163
+ v-model="model.f_gas_nature"
164
+ placeholder='用气性质'
165
+ condition="f_gas_nature = '{}'"
166
+ :value.sync="model.f_gas_nature"
167
+ :options='$parent.$parent.gasNatures'
168
+ class="select select_list"
169
+ :value-single="true"
170
+ close-on-select ></v-select>
171
+ </div>
172
+ <div class="form-group col-sm-3">
173
+ <label class="font_normal_body">来源:</label>
174
+ <v-select
175
+ v-model="model.f_apply_source"
176
+ placeholder='来源'
177
+ condition="f_apply_source = '{}'"
178
+ :value.sync="model.f_apply_source"
179
+ :options='$parent.$parent.applysources'
180
+ class="select select_list"
181
+ :value-single="true"
182
+ close-on-select ></v-select>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </criteria>
187
+ <data-grid v-if="$parent.showData" :model="model" partial='list' v-ref:grid class="list_area table_sy" style="height: 100%">
188
+ <template partial='head'>
189
+ <tr>
190
+ <th style="white-space: nowrap;">序号</th>
191
+ <th style="white-space: nowrap;">工程编号</th>
192
+ <th style="white-space: nowrap;">客户编号</th>
193
+ <th style="white-space: nowrap;">客户名称</th>
194
+ <th style="white-space: nowrap;">地址</th>
195
+ <th style="white-space: nowrap;">电话</th>
196
+ <th style="white-space: nowrap;">入户证号</th>
197
+ <th style="white-space: nowrap;">来源</th>
198
+ <th style="white-space: nowrap;">报建类型</th>
199
+ <th style="white-space: nowrap;">流程状态</th>
200
+ <th style="white-space: nowrap;">报建日期</th>
201
+ <th style="white-space: nowrap;">操作</th>
202
+ </tr>
203
+ </template>
204
+ <template partial='body'>
205
+ <tr class="back-style">
206
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'', row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
207
+ <nobr>{{$index+1}}</nobr>
208
+ </td>
209
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
210
+ <nobr>{{row.f_apply_num}}</nobr>
211
+ </td>
212
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
213
+ <nobr>{{row.f_userinfo_code}}</nobr>
214
+ </td>
215
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
216
+ <nobr>{{row.f_user_name}}</nobr>
217
+ </td>
218
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
219
+ <nobr>{{row.f_address}}</nobr>
220
+ </td>
221
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
222
+ <nobr>{{row.f_phone}}</nobr>
223
+ </td>
224
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
225
+ <nobr>{{row.f_entry_number}}</nobr>
226
+ </td>
227
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
228
+ <nobr>{{row.f_apply_source}}</nobr>
229
+ </td>
230
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
231
+ <nobr>{{row.f_apply_type}}</nobr>
232
+ </td>
233
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
234
+ <nobr>{{row.f_sub_state}}</nobr>
235
+ </td>
236
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
237
+ <nobr>{{row.f_apply_date}}</nobr>
238
+ </td>
239
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
240
+ <a href="#" @click="$parent.$parent.$parent.click(row)"><nobr>{{row.defname}}</nobr></a>
241
+ </td>
242
+ </tr>
243
+ </template>
244
+ </data-grid>
245
+ </criteria-paged>
246
+
247
+ <modal
248
+ v-if="showModal"
249
+ :show.sync="showModal"
250
+ backdrop="false"
251
+ title="工程类型"
252
+ cancel-text="取消"
253
+ ok-text="确认"
254
+ :callback="apply"
255
+ >
256
+ <div class="form-horizontal" slot="modal-body">
257
+ <div class="form-group" style="margin: 10px auto">
258
+ <label class="col-sm-3 control-label">报建类型:</label>
259
+ <div class="col-sm-9">
260
+ <v-select
261
+ v-model="applyType"
262
+ placeholder='请选择需要发起的工程类型'
263
+ :value.sync="applyType"
264
+ :options='$appdata.getParam("报建类型")'
265
+ :value-single="true"
266
+ class="select select_list"
267
+ :search="false"
268
+ close-on-select ></v-select>
269
+ </div>
270
+ </div>
271
+ </div>
272
+ </modal>
273
+
274
+ <modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="选择文件">
275
+ <header slot="modal-header" class="modal-header">
276
+ <button type="button" class="close" @click="closeFile"><span>&times;</span></button>
277
+ <h4 class="modal-title">选择文件</h4>
278
+ </header>
279
+ <article slot="modal-body" class="modal-body">
280
+ <div class="form-group">
281
+ <file-upload class="my-file-uploader" action="rs/file/uploadFile" tagname="确定" v-ref:file></file-upload>
282
+ </div>
283
+ </article>
284
+ <footer slot="modal-footer" class="modal-footer"></footer>
285
+ </modal>
286
+ </div>
287
+ </template>
288
+ <script>
289
+ import {HttpResetClass, PagedList} from 'vue-client'
290
+ import {isEmpty} from '../../../components/Util'
291
+
292
+ export default {
293
+ title: '工程列表',
294
+ props: ['showData'],
295
+ data () {
296
+ return {
297
+ model: new PagedList('rs/sql/checkuser', 20, {
298
+ data: {
299
+ id: this.$login.f.id,
300
+ orgid: this.$login.f.orgid
301
+ }
302
+ }),
303
+ gasNatures: [
304
+ {label: '全部',value: ''},
305
+ ...this.$appdata.getParam('用气性质')
306
+ ],
307
+ showModal: false, // 控制发起类型选择
308
+ applyType: '', // 报建类型
309
+ curorgid: [this.$login.f.orgid],
310
+ applytype: [{label: '全部', value: ''}, ...this.$appdata.getParam('报建类型')],
311
+ applysources: this.$appdata.getParam('报建来源')?[{label: '全部', value: ''}, ...this.$appdata.getParam('报建来源')]:[{label: '全部', value: ''}],
312
+ industrys: this.$appdata.getParam('使用类型')?[{label: '全部', value: ''}, ...this.$appdata.getParam('使用类型')]:[{label: '全部', value: ''}],
313
+ defnames: [{label: '全部', value: ''}], // 流程节点
314
+ usertype: [{label: '全部', value: ''},{label: '民用', value: '民用'},{label: '非民用', value: '非民用'}],//客户类型
315
+ applyNatures: [{label: '全部', value: ''}], // 报建性质
316
+ criteriaShow: false,
317
+ showFile: false,
318
+ laterList: [
319
+ {label: '全部', value: ''},
320
+ {label: '有效', value: '有效'}
321
+ ]
322
+ }
323
+ },
324
+ ready () {
325
+ // 调用查询
326
+ this.search()
327
+ },
328
+ methods: {
329
+ openLater (row) {
330
+ this.$dispatch('openLater', row)
331
+ },
332
+ closeFile () {
333
+ this.showFile = false
334
+ // 将选的文件清空
335
+ this.$refs.file.$el.querySelector('input').value = ''
336
+ this.search()
337
+ },
338
+ // 点击操作
339
+ click (val) {
340
+ this.$dispatch('apply', val)
341
+ },
342
+ // 获取流程id
343
+ async getProcessId(processname) {
344
+ let data = {
345
+ workname: processname
346
+ }
347
+ let http = new HttpResetClass()
348
+ let res = await http.load(
349
+ 'POST',
350
+ 'rs/logic/getProcessId',
351
+ {data: data},
352
+ {resolveMsg: null, rejectMsg: '流程标识获取失败!!!'}
353
+ )
354
+
355
+ return res.data
356
+ },
357
+ // 报装申请
358
+ async apply () {
359
+ if (this.applyType === '' || this.applyType === null) {
360
+ this.$showAlert('请选择需要发起的类型', 'warning', 3000)
361
+ return
362
+ }
363
+ let data = {
364
+ f_apply_type: this.applyType
365
+ }
366
+ if (this.applyType === '居民用户报建') {
367
+ data.processname = '居民用户报建流程'
368
+ data.defname = '报装申请'
369
+ } else if (this.applyType === '非居用户报建') {
370
+ data.processname = '非居用户报建流程'
371
+ data.defname = '报装申请'
372
+ } else if (this.applyType === '居民团体用户报建') {
373
+ data.processname = '居民团体用户报建流程'
374
+ data.defname = '报装申请'
375
+ } else if (this.applyType === '居民团体单户报建') {
376
+ data.processname = '居民团体单户报建流程'
377
+ data.defname = '信息确认'
378
+ } else if (this.applyType === '改管报建') {
379
+ data.processname = '改管报建流程'
380
+ data.defname = '报装申请'
381
+ } else {
382
+ this.$showMessage('暂无此类报装')
383
+ return
384
+ }
385
+
386
+ data.f_sub_state = "新增"
387
+ data.f_apply_source = "线下发起"
388
+ data.f_process_id = await this.getProcessId(data.processname)
389
+
390
+ // 调用ExplorationUser事件
391
+ this.$dispatch('apply', data)
392
+
393
+ this.applyType = null
394
+ this.showModal = false
395
+ },
396
+ loadPage () {
397
+ this.$dispatch('loadPage')
398
+ },
399
+ search () {
400
+ this.$dispatch('search')
401
+ },
402
+ async applyTypeChange () {
403
+ if (!isEmpty(this.$refs.cp.$refs.cri.model.f_apply_type)) {
404
+ let res = await this.$resetpost('rs/logic/getDefnameByType',
405
+ { f_apply_type: this.$refs.cp.$refs.cri.model.f_apply_type },
406
+ {resolveMsg: null, rejectMsg: '节点信息获取失败!!!'}
407
+ )
408
+
409
+ this.defnames = [{label: '全部', value: ''}, ...res.data]
410
+
411
+ this.applyNatures = isEmpty(this.$appdata.getParam(`${this.$refs.cp.$refs.cri.model.f_apply_type}性质`)) ? [{label: '全部', value: ''}] : [{label: '全部', value: ''}, ...this.$appdata.getParam(`${this.$refs.cp.$refs.cri.model.f_apply_type}性质`)]
412
+ } else {
413
+ this.defnames = [{label: '全部', value: ''}]
414
+
415
+ this.applyNatures = [{label: '全部', value: ''}]
416
+ }
417
+ },
418
+ clear () {
419
+ Object.keys(this.$refs.cp.$refs.cri.model).forEach((key) => {
420
+ this.$refs.cp.$refs.cri.model[key] = null
421
+ })
422
+ },
423
+ getorg (val) {
424
+ if (val.length <= 0) {
425
+ return
426
+ }
427
+ this.model.params.data.orgid = val[0]
428
+ }
429
+ },
430
+ computed: {
431
+ projectStart () {
432
+ return this.$login.r.includes('报建发起')
433
+ }
434
+ },
435
+ watch: {
436
+ 'model.rows': {
437
+ handler: function () {
438
+ let isover = [] // 过期(超时)数据
439
+ let isbeforeover = [] // 未过期 提前提醒
440
+ for (let i = 0; i < this.model.rows.length; i++) {
441
+ let item = this.model.rows[i]
442
+ if (item.isover === '过期') {
443
+ isover.push(i + 1)
444
+ }
445
+ if (item.isbeforeover === '预期提醒') {
446
+ isbeforeover.push(i + 1)
447
+ }
448
+ }
449
+ let msg = null
450
+ if (isover.length > 0) {
451
+ msg = `第${isover.toString()}条数据已过期`
452
+ this.$showAlert(msg, 'warning', 3000)
453
+ }
454
+
455
+ if (isbeforeover.length > 0) {
456
+ msg = `第${isbeforeover.toString()}条数据即将过期`
457
+ if (isover.length > 0) {
458
+ setTimeout(() => {
459
+ this.$showAlert(msg, 'warning', 3000)
460
+ }, 4000)
461
+ } else {
462
+ this.$showAlert(msg, 'warning', 3000)
463
+ }
464
+ }
465
+ }
466
+ }
467
+ },
468
+ events: {
469
+ async 'onFileUpload'(file, result) {
470
+ let data = {
471
+ filepath: result.f_downloadpath,
472
+ user: this.$login.f
473
+ }
474
+ let res = await this.$resetpost(`rs/logic/importApply`, {data:data}, {resolveMsg: null, rejectMsg: '导入失败!!!', silent: true}, 0)
475
+
476
+ this.closeFile()
477
+ }
478
+ }
479
+ }
480
+ </script>
481
+ <style scoped>
482
+ .back-style{
483
+ background-color: #ffa726;
484
+ }
485
+ .p1 {
486
+ color: #dc0b12;
487
+ font-weight:bold
488
+ }
489
+ .p {
490
+ color: #ffaf4f;
491
+ }
492
+ </style>