apply-clients 3.2.32 → 3.2.37

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 (37) hide show
  1. package/package.json +1 -1
  2. package/src/AndroidApp.vue +26 -26
  3. package/src/App.vue +20 -20
  4. package/src/apply.js +67 -67
  5. package/src/applyAndroid.js +24 -24
  6. package/src/components/Util.js +359 -359
  7. package/src/components/app_apply/AppOnetomany.vue +90 -90
  8. package/src/components/app_apply/AppServiceView.vue +664 -664
  9. package/src/components/app_apply/AppTakePic.vue +112 -112
  10. package/src/components/app_apply/Process/AppExplorationUser.vue +310 -310
  11. package/src/components/app_apply/Process/AppServiceControl.vue +409 -409
  12. package/src/components/app_apply/Process/Processes/AppInstallationDetails.vue +456 -456
  13. package/src/components/app_apply/Supervisory/AppProcessSupervisory.vue +300 -300
  14. package/src/components/app_apply/Supervisory/AppSupervisoryCart.vue +121 -121
  15. package/src/components/product/ApplyCharge/ApplyChargeList.vue +251 -251
  16. package/src/components/product/ApplyCharge/ApplyChargeReport.vue +107 -107
  17. package/src/components/product/ApplyCharge/ApplyChargeSearch.vue +30 -30
  18. package/src/components/product/Function/InstallFunction.vue +147 -147
  19. package/src/components/product/Function/InstallInfoSelect.vue +281 -281
  20. package/src/components/product/Function/Service/FunctionServiceControl.vue +245 -245
  21. package/src/components/product/Function/StopApplyCrrdList.vue +176 -176
  22. package/src/components/product/Function/functions/StopInstall.vue +106 -106
  23. package/src/components/product/Process/ExplorationSelect.vue +346 -346
  24. package/src/components/product/Process/ExplorationUser.vue +134 -134
  25. package/src/components/product/Process/Processes/InstallationDetails.vue +243 -233
  26. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +201 -201
  27. package/src/components/product/Process/Processes/chargeManagement.vue +555 -555
  28. package/src/components/product/Process/Processes/printCharge.vue +133 -133
  29. package/src/components/product/Process/Processes/supplementalAgreement.vue +297 -297
  30. package/src/components/product/Process/ShowBackReason.vue +32 -32
  31. package/src/components/product/ServiceView.vue +759 -759
  32. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +199 -199
  33. package/src/components/product/Supervisory/SupervisoryControl.vue +119 -119
  34. package/src/components/product/Supervisory/SupervisoryList.vue +208 -208
  35. package/src/components/product/Supervisory/SupervisoryhCart.vue +103 -103
  36. package/src/components/product/VueUtils/ApplyUpload.vue +261 -261
  37. package/src/main.js +23 -23
@@ -1,346 +1,346 @@
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-4">
8
- <label class="font_normal_body">项目名称/客户名称/联系人:</label>
9
- <input type="text" class="input_search" v-model="model.f_user_name"
10
- v-on:keyup.enter="$parent.$parent.search()" condition=" (f_entry_name like '%{}%' or f_user_name like '%{}%' or f_contact like '%{}%') " placeholder='三选一输入'>
11
- </div>
12
- <div class="form-group col-sm-3">
13
- <label class="font_normal_body">报建编号:</label>
14
- <input type="text" class="input_search" placeholder='报建编号' v-model="model.f_apply_num"
15
- v-on:keyup.enter="$parent.$parent.search()"
16
- condition="f_apply_num = '{}'">
17
- </div>
18
- <div class="form-group col-sm-5 button-range">
19
- <button class="button_new button_spacing" style="width: max-content"
20
- v-if="this.$login.f.rolesnames.indexOf('市场部报装') !== -1 || this.$login.f.rolesnames.indexOf('工程部报装') !== -1"
21
- @click="$parent.$parent.showModal = !$parent.$parent.showModal">工程发起</button>
22
- <button class="button_search button_spacing" @click="$parent.$parent.search()" v-el:cx>查询</button>
23
- <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
24
- <div
25
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
26
- @click="$parent.$parent.criteriaShow = !$parent.$parent.criteriaShow"
27
- class="button_spacing"
28
- style="float: right">
29
- </div>
30
- </div>
31
- </div>
32
- <div class="row" v-show="$parent.$parent.criteriaShow">
33
- <div class="form-group col-sm-3">
34
- <label class="font_normal_body">合同编号:</label>
35
- <input type="text" class="input_search" placeholder='合同编号' v-model="model.f_contract_number"
36
- v-on:keyup.enter="$parent.$parent.search()"
37
- condition="f_contract_number = '{}'">
38
- </div>
39
- <div class="form-group col-sm-3">
40
- <label class="font_normal_body">报建类型:</label>
41
- <v-select
42
- v-model="model.f_apply_type"
43
- placeholder='报建类型'
44
- condition="f_apply_type like '%{}%'"
45
- :value.sync="model.f_apply_type"
46
- :options='$parent.$parent.applytype'
47
- class="select select_list"
48
- :value-single="true"
49
- @change="$parent.$parent.applyTypeChange()"
50
- close-on-select ></v-select>
51
- </div>
52
- <div class="form-group col-sm-3">
53
- <label class="font_normal_body">办理环节:</label>
54
- <v-select
55
- v-model="model.defname"
56
- placeholder='办理环节'
57
- condition="defname = '{}'"
58
- :value.sync="model.defname"
59
- :options='$parent.$parent.defnames'
60
- class="select select_list"
61
- :value-single="true"
62
- close-on-select ></v-select>
63
- </div>
64
- <div class="form-group col-sm-3">
65
- <label class="font_normal_body">联系电话:</label>
66
- <input type="text" class="input_search" placeholder='联系电话' v-model="model.f_phone"
67
- v-on:keyup.enter="$parent.$parent.search()"
68
- condition="f_phone like '%{}%'">
69
- </div>
70
- <div class="form-group col-sm-3">
71
- <label class="font_normal_body">用户地址:</label>
72
- <input type="text" class="input_search" placeholder='用户地址' v-model="model.f_address"
73
- v-on:keyup.enter="$parent.$parent.search()"
74
- condition="f_address like '%{}%'">
75
- </div>
76
- <div class="form-group col-sm-3">
77
- <label for="startDate" class="font_normal_body">开始时间:</label>
78
- <datepicker id="startDate" placeholder="开始日期"
79
- style="width: 60%!important;"
80
- v-model="model.startDate"
81
- :value.sync="model.startDate"
82
- :format="'yyyy-MM-dd 00:00:00'"
83
- :show-reset-button="true"
84
- condition="f_apply_date >= '{}'">
85
- </datepicker>
86
- </div>
87
- <div class="form-group col-sm-3">
88
- <label for="endDate" class="font_normal_body">结束时间:</label>
89
- <datepicker id="endDate" placeholder="结束日期"
90
- style="width: 60%!important;"
91
- v-model="model.endDate"
92
- :value.sync="model.endDate"
93
- :format="'yyyy-MM-dd 23:59:59'"
94
- :show-reset-button="true"
95
- condition="f_apply_date <= '{}'">
96
- </datepicker>
97
- </div>
98
- </div>
99
- </div>
100
- </criteria>
101
- <data-grid v-if="$parent.showData" :model="model" partial='list' v-ref:grid class="list_area table_sy" style="height: 100%">
102
- <template partial='head'>
103
- <tr>
104
- <th style="white-space: nowrap;">序号</th>
105
- <th style="white-space: nowrap;">报建编号</th>
106
- <th style="white-space: nowrap;">项目名称/客户名称/联系人</th>
107
- <th style="white-space: nowrap;">合同编号</th>
108
- <th style="white-space: nowrap;">电话</th>
109
- <th style="white-space: nowrap;">地址</th>
110
- <th style="white-space: nowrap;">报建类型</th>
111
- <th style="white-space: nowrap;">办理环节</th>
112
- <th style="white-space: nowrap;">流程状态</th>
113
- <th style="white-space: nowrap;">报建日期</th>
114
- <th style="white-space: nowrap;">操作</th>
115
- </tr>
116
- </template>
117
- <template partial='body'>
118
- <tr >
119
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
120
- <nobr><font>{{$index+1}}</font></nobr>
121
- </td>
122
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
123
- <nobr><font>{{row.f_apply_num}}</font></nobr>
124
- </td>
125
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
126
- <nobr><font>{{row.f_entry_name}}/{{row.f_user_name}}/{{row.f_contact}}</font></nobr>
127
- </td>
128
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
129
- <nobr><font>{{row.f_contract_number}}</font></nobr>
130
- </td>
131
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
132
- <nobr><font>{{row.f_phone}}</font></nobr>
133
- </td>
134
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
135
- <nobr><font>{{row.f_address}}</font></nobr>
136
- </td>
137
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
138
- <nobr><font>{{row.f_apply_type}}</font></nobr>
139
- </td>
140
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
141
- <nobr><font>{{row.defname}}</font></nobr>
142
- </td>
143
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
144
- <nobr><font>{{row.f_sub_state}}</font></nobr>
145
- </td>
146
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
147
- <nobr><font>{{row.f_apply_date}}</font></nobr>
148
- </td>
149
- <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
150
- <dropdown>
151
- <button type="button" data-toggle="dropdown" style="border: 0px;background: none;">
152
- <span class="glyphicon glyphicon-th-list" style="position: inherit;"></span>
153
- </button>
154
- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-right">
155
- <li>
156
- <a href="#" @click="$parent.$parent.$parent.click(row)">{{row.defname}}</a>
157
- </li>
158
- </ul>
159
- </dropdown>
160
- </td>
161
- </tr>
162
- </template>
163
- </data-grid>
164
- </criteria-paged>
165
-
166
- <modal
167
- v-if="showModal"
168
- :show.sync="showModal"
169
- backdrop="false"
170
- title="工程类型"
171
- cancel-text="取消"
172
- ok-text="确认"
173
- :callback="apply"
174
- >
175
- <div class="form-horizontal" slot="modal-body">
176
- <div class="form-group" style="margin: 10px auto">
177
- <label class="col-sm-3 control-label">报建类型:</label>
178
- <div class="col-sm-9">
179
- <v-select
180
- v-model="f_apply_type"
181
- placeholder='请选择需要发起的工程类型'
182
- :value.sync="f_apply_type"
183
- :options='$appdata.getParam("报建类型")'
184
- :value-single="true"
185
- class="select select_list"
186
- :search="false"
187
- close-on-select ></v-select>
188
- </div>
189
- </div>
190
- </div>
191
- </modal>
192
- </div>
193
- </template>
194
- <script>
195
- import {PagedList} from 'vue-client'
196
- import {HttpResetClass} from 'vue-client'
197
- import {isEmpty} from '../../Util'
198
- export default {
199
- title: '工程列表',
200
- props: ['showData'],
201
- data () {
202
- return {
203
- applytype: [{label: '全部', value: ''}, ...this.$appdata.getParam('报建类型')], // 所有报建类型
204
- defnames: [{label: '全部', value: ''}], // 流程节点
205
- model: new PagedList('rs/sql/checkuser', 20, {
206
- data: {
207
- id: this.$login.f.id,
208
- orgid: this.$login.f.orgid
209
- }
210
- }),
211
- f_apply_type: '', // 报建类型
212
- // startname: null, // 启动节点
213
- criteriaShow: false, // 控制查询条件显示
214
- showModal: false // 控制发起类型选择
215
- }
216
- },
217
- ready () {
218
- // 调用查询
219
- this.search()
220
- },
221
- methods: {
222
- clear () {
223
- Object.keys(this.$refs.cp.$refs.cri.model).forEach((key) => {
224
- this.$refs.cp.$refs.cri.model[key] = []
225
- })
226
- },
227
- // 查询
228
- search () {
229
- this.$dispatch('search')
230
- },
231
- // 根据保健类型获取对应的流程节点
232
- applyTypeChange () {
233
- if (!isEmpty(this.$refs.cp.$refs.cri.model.f_apply_type)) {
234
- let http = new HttpResetClass()
235
- http.load('POST', 'rs/logic/getDefnameByType', {
236
- f_apply_type: this.$refs.cp.$refs.cri.model.f_apply_type
237
- }, {resolveMsg: null, rejectMsg: null}).then((res) => {
238
- this.defnames = [{label: '全部', value: ''}, ...res.data]
239
- })
240
- } else {
241
- this.defnames = [{label: '全部', value: ''}]
242
- }
243
- },
244
- // 获取流程id
245
- async getProcessId(processname) {
246
- let http = new HttpResetClass()
247
- let data = {
248
- workname: processname
249
- }
250
- let res = await http.load('POST', 'rs/logic/getProcessId', {data: data}, {resolveMsg: null, rejectMsg: null})
251
-
252
- return res.data
253
- },
254
- // 报装申请
255
- async apply () {
256
- if (this.f_apply_type === '' || this.f_apply_type === null) {
257
- this.$showAlert('请选择需要发起的类型', 'warning', 3000)
258
- return
259
- }
260
- let val = {
261
- f_apply_type: this.f_apply_type
262
- }
263
- if (this.f_apply_type === '散户报建') {
264
- val.defname = '用户受理'
265
- val.processname = '散户报建流程'
266
- } else if (this.f_apply_type === '工业户报建') {
267
- val.defname = '用户受理'
268
- val.processname = '工商户报建流程'
269
- } else if (this.f_apply_type === '商业户报建') {
270
- val.defname = '用户受理'
271
- val.processname = '工商户报建流程'
272
- } else if (this.f_apply_type === '散户集体报建') {
273
- val.defname = '用户受理'
274
- val.processname = '散户集体报建流程'
275
- } else if (this.f_apply_type === '开发商集体报建') {
276
- val.defname = '用户受理'
277
- val.processname = '开发商集体报建流程'
278
- } else if (this.f_apply_type === '煤改气报建') {
279
- val.defname = '用户受理'
280
- val.processname = '散户集体报建流程'
281
- } else {
282
- this.$showMessage('暂无此类报装')
283
- return
284
- }
285
-
286
- val.f_sub_state = "新增"
287
- val.f_process_id = await this.getProcessId(val.processname)
288
-
289
- // 调用ExplorationUser事件
290
- this.$dispatch('apply', val)
291
-
292
- this.f_apply_type = null
293
- this.showModal = false
294
- },
295
- // 点击操作
296
- click (val) {
297
- this.$dispatch('apply', val)
298
- }
299
- },
300
- computed: {
301
- },
302
- watch: {
303
- 'model.rows': {
304
- handler: function () {
305
- let isover = [] // 过期(超时)数据
306
- let isbeforeover = [] // 未过期 提前提醒
307
- for (let i = 0; i < this.model.rows.length; i++) {
308
- let item = this.model.rows[i]
309
- if (item.isover === '过期') {
310
- isover.push(i + 1)
311
- }
312
- if (item.isbeforeover === '预期提醒') {
313
- isbeforeover.push(i + 1)
314
- }
315
- }
316
- let msg = null
317
- if (isover.length > 0) {
318
- msg = `第${isover.toString()}条数据已过期`
319
- this.$showAlert(msg, 'warning', 3000)
320
- }
321
-
322
- if (isbeforeover.length > 0) {
323
- msg = `第${isbeforeover.toString()}条数据即将过期`
324
- if (isover.length > 0) {
325
- setTimeout(() => {
326
- this.$showAlert(msg, 'warning', 3000)
327
- }, 4000)
328
- } else {
329
- this.$showAlert(msg, 'warning', 3000)
330
- }
331
- }
332
- }
333
- }
334
- }
335
- }
336
- </script>
337
- <style scoped>
338
-
339
- .p1 {
340
- color: #dc0b12;
341
- font-weight:bold
342
- }
343
- .p {
344
- color: #ffaf4f;
345
- }
346
- </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-4">
8
+ <label class="font_normal_body">项目名称/客户名称/联系人:</label>
9
+ <input type="text" class="input_search" v-model="model.f_user_name"
10
+ v-on:keyup.enter="$parent.$parent.search()" condition=" (f_entry_name like '%{}%' or f_user_name like '%{}%' or f_contact like '%{}%') " placeholder='三选一输入'>
11
+ </div>
12
+ <div class="form-group col-sm-3">
13
+ <label class="font_normal_body">报建编号:</label>
14
+ <input type="text" class="input_search" placeholder='报建编号' v-model="model.f_apply_num"
15
+ v-on:keyup.enter="$parent.$parent.search()"
16
+ condition="f_apply_num = '{}'">
17
+ </div>
18
+ <div class="form-group col-sm-5 button-range">
19
+ <button class="button_new button_spacing" style="width: max-content"
20
+ v-if="this.$login.f.rolesnames.indexOf('市场部报装') !== -1 || this.$login.f.rolesnames.indexOf('工程部报装') !== -1"
21
+ @click="$parent.$parent.showModal = !$parent.$parent.showModal">工程发起</button>
22
+ <button class="button_search button_spacing" @click="$parent.$parent.search()" v-el:cx>查询</button>
23
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
24
+ <div
25
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
26
+ @click="$parent.$parent.criteriaShow = !$parent.$parent.criteriaShow"
27
+ class="button_spacing"
28
+ style="float: right">
29
+ </div>
30
+ </div>
31
+ </div>
32
+ <div class="row" v-show="$parent.$parent.criteriaShow">
33
+ <div class="form-group col-sm-3">
34
+ <label class="font_normal_body">合同编号:</label>
35
+ <input type="text" class="input_search" placeholder='合同编号' v-model="model.f_contract_number"
36
+ v-on:keyup.enter="$parent.$parent.search()"
37
+ condition="f_contract_number = '{}'">
38
+ </div>
39
+ <div class="form-group col-sm-3">
40
+ <label class="font_normal_body">报建类型:</label>
41
+ <v-select
42
+ v-model="model.f_apply_type"
43
+ placeholder='报建类型'
44
+ condition="f_apply_type like '%{}%'"
45
+ :value.sync="model.f_apply_type"
46
+ :options='$parent.$parent.applytype'
47
+ class="select select_list"
48
+ :value-single="true"
49
+ @change="$parent.$parent.applyTypeChange()"
50
+ close-on-select ></v-select>
51
+ </div>
52
+ <div class="form-group col-sm-3">
53
+ <label class="font_normal_body">办理环节:</label>
54
+ <v-select
55
+ v-model="model.defname"
56
+ placeholder='办理环节'
57
+ condition="defname = '{}'"
58
+ :value.sync="model.defname"
59
+ :options='$parent.$parent.defnames'
60
+ class="select select_list"
61
+ :value-single="true"
62
+ close-on-select ></v-select>
63
+ </div>
64
+ <div class="form-group col-sm-3">
65
+ <label class="font_normal_body">联系电话:</label>
66
+ <input type="text" class="input_search" placeholder='联系电话' v-model="model.f_phone"
67
+ v-on:keyup.enter="$parent.$parent.search()"
68
+ condition="f_phone like '%{}%'">
69
+ </div>
70
+ <div class="form-group col-sm-3">
71
+ <label class="font_normal_body">用户地址:</label>
72
+ <input type="text" class="input_search" placeholder='用户地址' v-model="model.f_address"
73
+ v-on:keyup.enter="$parent.$parent.search()"
74
+ condition="f_address like '%{}%'">
75
+ </div>
76
+ <div class="form-group col-sm-3">
77
+ <label for="startDate" class="font_normal_body">开始时间:</label>
78
+ <datepicker id="startDate" placeholder="开始日期"
79
+ style="width: 60%!important;"
80
+ v-model="model.startDate"
81
+ :value.sync="model.startDate"
82
+ :format="'yyyy-MM-dd 00:00:00'"
83
+ :show-reset-button="true"
84
+ condition="f_apply_date >= '{}'">
85
+ </datepicker>
86
+ </div>
87
+ <div class="form-group col-sm-3">
88
+ <label for="endDate" class="font_normal_body">结束时间:</label>
89
+ <datepicker id="endDate" placeholder="结束日期"
90
+ style="width: 60%!important;"
91
+ v-model="model.endDate"
92
+ :value.sync="model.endDate"
93
+ :format="'yyyy-MM-dd 23:59:59'"
94
+ :show-reset-button="true"
95
+ condition="f_apply_date <= '{}'">
96
+ </datepicker>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </criteria>
101
+ <data-grid v-if="$parent.showData" :model="model" partial='list' v-ref:grid class="list_area table_sy" style="height: 100%">
102
+ <template partial='head'>
103
+ <tr>
104
+ <th style="white-space: nowrap;">序号</th>
105
+ <th style="white-space: nowrap;">报建编号</th>
106
+ <th style="white-space: nowrap;">项目名称/客户名称/联系人</th>
107
+ <th style="white-space: nowrap;">合同编号</th>
108
+ <th style="white-space: nowrap;">电话</th>
109
+ <th style="white-space: nowrap;">地址</th>
110
+ <th style="white-space: nowrap;">报建类型</th>
111
+ <th style="white-space: nowrap;">办理环节</th>
112
+ <th style="white-space: nowrap;">流程状态</th>
113
+ <th style="white-space: nowrap;">报建日期</th>
114
+ <th style="white-space: nowrap;">操作</th>
115
+ </tr>
116
+ </template>
117
+ <template partial='body'>
118
+ <tr >
119
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
120
+ <nobr><font>{{$index+1}}</font></nobr>
121
+ </td>
122
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
123
+ <nobr><font>{{row.f_apply_num}}</font></nobr>
124
+ </td>
125
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
126
+ <nobr><font>{{row.f_entry_name}}/{{row.f_user_name}}/{{row.f_contact}}</font></nobr>
127
+ </td>
128
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
129
+ <nobr><font>{{row.f_contract_number}}</font></nobr>
130
+ </td>
131
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
132
+ <nobr><font>{{row.f_phone}}</font></nobr>
133
+ </td>
134
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
135
+ <nobr><font>{{row.f_address}}</font></nobr>
136
+ </td>
137
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
138
+ <nobr><font>{{row.f_apply_type}}</font></nobr>
139
+ </td>
140
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
141
+ <nobr><font>{{row.defname}}</font></nobr>
142
+ </td>
143
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
144
+ <nobr><font>{{row.f_sub_state}}</font></nobr>
145
+ </td>
146
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
147
+ <nobr><font>{{row.f_apply_date}}</font></nobr>
148
+ </td>
149
+ <td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' ]" style="text-align: center;">
150
+ <dropdown>
151
+ <button type="button" data-toggle="dropdown" style="border: 0px;background: none;">
152
+ <span class="glyphicon glyphicon-th-list" style="position: inherit;"></span>
153
+ </button>
154
+ <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-right">
155
+ <li>
156
+ <a href="#" @click="$parent.$parent.$parent.click(row)">{{row.defname}}</a>
157
+ </li>
158
+ </ul>
159
+ </dropdown>
160
+ </td>
161
+ </tr>
162
+ </template>
163
+ </data-grid>
164
+ </criteria-paged>
165
+
166
+ <modal
167
+ v-if="showModal"
168
+ :show.sync="showModal"
169
+ backdrop="false"
170
+ title="工程类型"
171
+ cancel-text="取消"
172
+ ok-text="确认"
173
+ :callback="apply"
174
+ >
175
+ <div class="form-horizontal" slot="modal-body">
176
+ <div class="form-group" style="margin: 10px auto">
177
+ <label class="col-sm-3 control-label">报建类型:</label>
178
+ <div class="col-sm-9">
179
+ <v-select
180
+ v-model="f_apply_type"
181
+ placeholder='请选择需要发起的工程类型'
182
+ :value.sync="f_apply_type"
183
+ :options='$appdata.getParam("报建类型")'
184
+ :value-single="true"
185
+ class="select select_list"
186
+ :search="false"
187
+ close-on-select ></v-select>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ </modal>
192
+ </div>
193
+ </template>
194
+ <script>
195
+ import {PagedList} from 'vue-client'
196
+ import {HttpResetClass} from 'vue-client'
197
+ import {isEmpty} from '../../Util'
198
+ export default {
199
+ title: '工程列表',
200
+ props: ['showData'],
201
+ data () {
202
+ return {
203
+ applytype: [{label: '全部', value: ''}, ...this.$appdata.getParam('报建类型')], // 所有报建类型
204
+ defnames: [{label: '全部', value: ''}], // 流程节点
205
+ model: new PagedList('rs/sql/checkuser', 20, {
206
+ data: {
207
+ id: this.$login.f.id,
208
+ orgid: this.$login.f.orgid
209
+ }
210
+ }),
211
+ f_apply_type: '', // 报建类型
212
+ // startname: null, // 启动节点
213
+ criteriaShow: false, // 控制查询条件显示
214
+ showModal: false // 控制发起类型选择
215
+ }
216
+ },
217
+ ready () {
218
+ // 调用查询
219
+ this.search()
220
+ },
221
+ methods: {
222
+ clear () {
223
+ Object.keys(this.$refs.cp.$refs.cri.model).forEach((key) => {
224
+ this.$refs.cp.$refs.cri.model[key] = []
225
+ })
226
+ },
227
+ // 查询
228
+ search () {
229
+ this.$dispatch('search')
230
+ },
231
+ // 根据保健类型获取对应的流程节点
232
+ applyTypeChange () {
233
+ if (!isEmpty(this.$refs.cp.$refs.cri.model.f_apply_type)) {
234
+ let http = new HttpResetClass()
235
+ http.load('POST', 'rs/logic/getDefnameByType', {
236
+ f_apply_type: this.$refs.cp.$refs.cri.model.f_apply_type
237
+ }, {resolveMsg: null, rejectMsg: null}).then((res) => {
238
+ this.defnames = [{label: '全部', value: ''}, ...res.data]
239
+ })
240
+ } else {
241
+ this.defnames = [{label: '全部', value: ''}]
242
+ }
243
+ },
244
+ // 获取流程id
245
+ async getProcessId(processname) {
246
+ let http = new HttpResetClass()
247
+ let data = {
248
+ workname: processname
249
+ }
250
+ let res = await http.load('POST', 'rs/logic/getProcessId', {data: data}, {resolveMsg: null, rejectMsg: null})
251
+
252
+ return res.data
253
+ },
254
+ // 报装申请
255
+ async apply () {
256
+ if (this.f_apply_type === '' || this.f_apply_type === null) {
257
+ this.$showAlert('请选择需要发起的类型', 'warning', 3000)
258
+ return
259
+ }
260
+ let val = {
261
+ f_apply_type: this.f_apply_type
262
+ }
263
+ if (this.f_apply_type === '散户报建') {
264
+ val.defname = '用户受理'
265
+ val.processname = '散户报建流程'
266
+ } else if (this.f_apply_type === '工业户报建') {
267
+ val.defname = '用户受理'
268
+ val.processname = '工商户报建流程'
269
+ } else if (this.f_apply_type === '商业户报建') {
270
+ val.defname = '用户受理'
271
+ val.processname = '工商户报建流程'
272
+ } else if (this.f_apply_type === '散户集体报建') {
273
+ val.defname = '用户受理'
274
+ val.processname = '散户集体报建流程'
275
+ } else if (this.f_apply_type === '开发商集体报建') {
276
+ val.defname = '用户受理'
277
+ val.processname = '开发商集体报建流程'
278
+ } else if (this.f_apply_type === '煤改气报建') {
279
+ val.defname = '用户受理'
280
+ val.processname = '散户集体报建流程'
281
+ } else {
282
+ this.$showMessage('暂无此类报装')
283
+ return
284
+ }
285
+
286
+ val.f_sub_state = "新增"
287
+ val.f_process_id = await this.getProcessId(val.processname)
288
+
289
+ // 调用ExplorationUser事件
290
+ this.$dispatch('apply', val)
291
+
292
+ this.f_apply_type = null
293
+ this.showModal = false
294
+ },
295
+ // 点击操作
296
+ click (val) {
297
+ this.$dispatch('apply', val)
298
+ }
299
+ },
300
+ computed: {
301
+ },
302
+ watch: {
303
+ 'model.rows': {
304
+ handler: function () {
305
+ let isover = [] // 过期(超时)数据
306
+ let isbeforeover = [] // 未过期 提前提醒
307
+ for (let i = 0; i < this.model.rows.length; i++) {
308
+ let item = this.model.rows[i]
309
+ if (item.isover === '过期') {
310
+ isover.push(i + 1)
311
+ }
312
+ if (item.isbeforeover === '预期提醒') {
313
+ isbeforeover.push(i + 1)
314
+ }
315
+ }
316
+ let msg = null
317
+ if (isover.length > 0) {
318
+ msg = `第${isover.toString()}条数据已过期`
319
+ this.$showAlert(msg, 'warning', 3000)
320
+ }
321
+
322
+ if (isbeforeover.length > 0) {
323
+ msg = `第${isbeforeover.toString()}条数据即将过期`
324
+ if (isover.length > 0) {
325
+ setTimeout(() => {
326
+ this.$showAlert(msg, 'warning', 3000)
327
+ }, 4000)
328
+ } else {
329
+ this.$showAlert(msg, 'warning', 3000)
330
+ }
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+ </script>
337
+ <style scoped>
338
+
339
+ .p1 {
340
+ color: #dc0b12;
341
+ font-weight:bold
342
+ }
343
+ .p {
344
+ color: #ffaf4f;
345
+ }
346
+ </style>