apply-clients 3.4.39 → 3.4.51

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 (58) hide show
  1. package/build/dev-server.js +2 -2
  2. package/package.json +1 -1
  3. package/src/android.js +21 -21
  4. package/src/apply.js +113 -113
  5. package/src/applyAndroid.js +53 -53
  6. package/src/components/android/AppServiceView.vue +745 -745
  7. package/src/components/android/AppSign.vue +154 -154
  8. package/src/components/android/Process/AppExplorationUser.vue +507 -507
  9. package/src/components/android/Process/AppServiceControl.vue +1708 -1708
  10. package/src/components/android/Process/Processes/AppAddMaterialScience.vue +477 -477
  11. package/src/components/android/Process/Processes/AppDevicesManagement.vue +519 -519
  12. package/src/components/android/Process/Processes/AppInstallationDetails.vue +482 -482
  13. package/src/components/android/Supervisory/AppSupervisoryCart.vue +156 -156
  14. package/src/components/product/Business/BusinessApply.vue +269 -269
  15. package/src/components/product/Business/CivilApply.vue +269 -269
  16. package/src/components/product/GroupByApply/ApplyGroupByList.vue +253 -253
  17. package/src/components/product/GroupByApply/ApplyGroupByMain.vue +53 -53
  18. package/src/components/product/GroupByApply/ApplyGroupByPaper.vue +376 -376
  19. package/src/components/product/Material/MaterialDetailed.vue +262 -262
  20. package/src/components/product/OldApply/Monitor/MonitorApply.vue +360 -360
  21. package/src/components/product/Print/BuildOrder/printBuildOrder.vue +157 -157
  22. package/src/components/product/Print/IgnitionBill/IgnitionBill.vue +259 -259
  23. package/src/components/product/Print/IgnitionBill/printIgnitionBill.vue +168 -168
  24. package/src/components/product/Process/ExplorationSelect.vue +495 -495
  25. package/src/components/product/Process/ExplorationUser.vue +189 -189
  26. package/src/components/product/Process/Processes/InstallationDetails.vue +610 -610
  27. package/src/components/product/Process/Processes/Print/printCharge.vue +166 -166
  28. package/src/components/product/Process/Processes/addMaterialScience.vue +454 -454
  29. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +211 -211
  30. package/src/components/product/Process/Processes/chargeManagement.vue +656 -656
  31. package/src/components/product/Process/Processes/devicesManagement.vue +484 -484
  32. package/src/components/product/Process/Service/ServiceControl.vue +1918 -1920
  33. package/src/components/product/ServiceView.vue +981 -981
  34. package/src/components/product/Supervisory/SupervisoryControl.vue +137 -137
  35. package/src/components/product/Supervisory/SupervisoryList.vue +404 -404
  36. package/src/components/product/VueUtils/ApplyUpload.vue +275 -280
  37. package/src/filiale/gehua/pc/ExplorationSelect.vue +483 -483
  38. package/src/filiale/gehua/pc/ServiceControl.vue +1929 -1929
  39. package/src/filiale/gehua/pc/SupervisoryControl.vue +137 -137
  40. package/src/filiale/gehua/pc/SupervisoryServiceControl.vue +890 -890
  41. package/src/filiale/gehua/pc/buildOrderList.vue +339 -0
  42. package/src/filiale/gehua/pc/printBuildOrder.vue +243 -0
  43. package/src/filiale/gehua/pc.js +3 -2
  44. package/src/filiale/guangxi/android/Process/AppExplorationUser.vue +503 -503
  45. package/src/filiale/guangxi/android/Process/Processes/AppAddMaterialScience.vue +470 -470
  46. package/src/filiale/guangxi/android/Process/Processes/AppDevicesManagement.vue +519 -519
  47. package/src/filiale/guangxi/android/Process/Processes/AppInstallationDetails.vue +482 -482
  48. package/src/filiale/guangxi/android/Process/Processes/AppServiceControl.vue +1708 -1708
  49. package/src/filiale/guangxi/android/Process/Processes/AppServiceView.vue +766 -766
  50. package/src/filiale/guangxi/android.js +9 -9
  51. package/src/filiale/guangxi/pc/ApplyCharge/ApplyChargeList.vue +470 -470
  52. package/src/filiale/guangxi/pc/ApplyCharge/chargeManagement.vue +702 -702
  53. package/src/filiale/guangxi/pc/Process/ExplorationSelect.vue +538 -538
  54. package/src/filiale/guangxi/pc/Process/Service/ServiceControl.vue +1922 -1922
  55. package/src/filiale/guangxi/pc/Process/Service/SupervisoryServiceControl.vue +891 -891
  56. package/src/filiale/guangxi/pc/Process/Service/addMaterialScience.vue +482 -482
  57. package/src/filiale/guangxi/pc.js +15 -15
  58. package/src/main.js +1 -4
@@ -1,891 +1,891 @@
1
- <template>
2
- <div class="auto clearfix">
3
- <show-back-reason :selectdata="show_data"></show-back-reason>
4
- </div>
5
- <service-view v-ref:service_show :data="show_data" v-if="showview"></service-view>
6
- </template>
7
- <script>
8
- import Vue from 'vue'
9
- import {HttpResetClass} from 'vue-client'
10
- import {isEmpty} from "../../../../../components/Util";
11
- // Date格式化
12
- Date.prototype.Format = function (fmt) {
13
- var o = {
14
- 'M+': this.getMonth() + 1, // 月份
15
- 'd+': this.getDate(), // 日
16
- 'H+': this.getHours(), // 小时
17
- 'm+': this.getMinutes(), // 分
18
- 's+': this.getSeconds(), // 秒
19
- 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
20
- 'S': this.getMilliseconds() // 毫秒
21
- }
22
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
23
- for (var k in o) {
24
- if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
25
- }
26
- return fmt
27
- }
28
- export default {
29
- title: '报建监控控制层',
30
- props: {
31
- selectdata: {
32
- type: Object
33
- },
34
- nodeSnapshot: {
35
- type: Boolean,
36
- default: false
37
- }
38
- },
39
- data() {
40
- return {
41
- data: null, // 展示的数据
42
- json_datas: null, // json配置数据结构
43
- showview: false, // 控制显示层显示
44
- show_data: null,
45
- config: {}
46
- }
47
- },
48
- created () {
49
- this.refurbish()
50
- },
51
- methods: {
52
- // 初始化模块
53
- async refurbish() {
54
- this.json_datas = this.$workflow_vue
55
- let sum = 0
56
- let jsonData = {}
57
- if (!this.json_datas || !this.json_datas.activitys || this.json_datas.activitys.length === 0) {
58
- this.$showMessage("网络故障,请刷新页面")
59
- return
60
- }
61
- this.json_datas.activitys.forEach(item => {
62
- if (this.selectdata.defname === item.title) {
63
- jsonData = item // 拿到当前节点的json配置信息
64
- sum++ // 节点名一样的个数
65
- }
66
- return this.selectdata.defname === item.title // 拿到当前节点的json配置信息
67
- })
68
-
69
- if (sum === 0) {
70
- this.$showMessage(`没有在JSON配置文件中找到活动名为:(${this.selectdata.defname})的节点配置`)
71
- return
72
- }
73
- if (sum > 1) {
74
- this.$showMessage(`在JSON配置文件中找到活动名为:(${this.selectdata.defname})的节点配置:${sum}个`)
75
- return
76
- }
77
-
78
- this.selectdata = Object.assign({}, this.selectdata, jsonData)
79
-
80
- // fields 字段填充值
81
- for (const item of this.selectdata.fields) {
82
- if (!item.value) {
83
- item.value = null
84
- }
85
-
86
- if (!item.value && (item.default || item.default === 0) && item.type !== 'datepicker') {
87
- if (item.eval) {
88
- item.value = eval(item.default)
89
- } else {
90
- item.value = item.default
91
- }
92
- }
93
-
94
- if (this.selectdata[item.field]) {
95
- // 将json字符串格式化赋值给value
96
- if (String(this.selectdata[item.field]).startsWith("{")) {
97
- item.value = JSON.parse(this.selectdata[item.field])
98
- } else {
99
- item.value = this.selectdata[item.field]
100
- }
101
- }
102
- if (this.selectdata[item.field] === 0) {
103
- item.value = 0
104
- }
105
-
106
- // datepicker
107
- if (item.type === 'datepicker' && !item.value && item.default) {
108
- item.value = new Date().Format(`${item.format ? item.format : 'yyyy-MM-dd HH:mm:ss'}`)
109
- }
110
-
111
- // 如果配置类型为select,优先从参数列表获取options
112
- if (item.type === 'select' || item.type === 'checkbox') {
113
- if (item.param) {
114
- let temp = this.$appdata.getParam(item.label)
115
-
116
- if (temp && temp.length > 0) {
117
- item.options = temp
118
- }
119
-
120
- if (item.paramLabel) {
121
- temp = this.$appdata.getParam(item.paramLabel)
122
- if (temp && temp.length > 0) {
123
- item.options = temp
124
- }
125
- }
126
- }
127
-
128
- if (item.ready) {
129
- item.options = await this[item.ready]()
130
- }
131
- }
132
-
133
-
134
- if (item.type === 'checkbox') {
135
- if (this.selectdata[item.field]) {
136
- item.value = JSON.parse(this.selectdata[item.field])
137
- } else {
138
- item.value = []
139
- }
140
- }
141
-
142
- this.selectdata[item.field] = item.value
143
-
144
- item.readonly = true
145
- item.disabled = true
146
- }
147
-
148
- // 控制组件
149
- if (this.selectdata.components) {
150
- this.selectdata.components.forEach(item => {
151
- item.mark = 1
152
- if (item.supervisory && this[item.supervisory]()) {
153
- item.mark = 0
154
- }
155
- })
156
- }
157
-
158
- // 初始化onetomany
159
- if (this.selectdata.onetomany) {
160
- for (const item of this.selectdata.onetomany) {
161
- let res = null
162
- if (item.queryEvent) {
163
- res = this[item.queryEvent]()
164
- } else {
165
- let data = {
166
- tablename: item.tables[0],
167
- condition: `f_process_id='${this.selectdata.f_process_id}'`
168
- }
169
- res = await this.$resetpost(
170
- 'rs/sql/singleTable',
171
- {data: data},
172
- {resolveMsg: null, rejectMsg: 'onetomany查询失败'}
173
- )
174
- }
175
-
176
- item.rows = res.data
177
-
178
- // 初始化onetomany中的fields
179
- for (const field of item.fields) {
180
- if (!field.value) {
181
- if (field.value !== 0) {
182
- field.value = null
183
- }
184
- }
185
-
186
- if (field.default || field.default === 0) {
187
- field.value = field.default
188
- }
189
-
190
- // datepicker
191
- if (field.type === 'datepicker' && !field.value && field.default) {
192
- field.value = new Date().Format(`${field.format ? field.format : 'yyyy-MM-dd HH:mm:ss'}`)
193
- }
194
-
195
- if (field.type === 'select') {
196
-
197
- let temp = this.$appdata.getParam(field.label)
198
-
199
- if (temp && temp.length > 0) {
200
- field.options = temp
201
- }
202
-
203
- if (field.paramLabel) {
204
- temp = this.$appdata.getParam(field.paramLabel)
205
- if (temp && temp.length > 0) {
206
- item.options = temp
207
- }
208
- }
209
-
210
- }
211
- }
212
-
213
- // 隐藏所有操作
214
- item.hiddenOperate = true
215
- if (item.supervisory && this[item.supervisory]()) {
216
- item.hiddenOperate = false
217
- }
218
- }
219
- }
220
-
221
- // 去除button
222
- this.selectdata.buttons = null
223
-
224
- // 完成时间和完成人,部门,分公司
225
- if (this.selectdata.state === '结束') {
226
- let http = new HttpResetClass()
227
- let res = await http.load('POST', 'rs/search', {
228
- source: 'this.getInfo()',
229
- userid: this.selectdata.userid
230
- }, {resolveMsg: null, rejectMsg: '处理人员获取失败!!!'})
231
- let user = res.data
232
- this.selectdata.operate_date = new Date(this.selectdata.finishtime).Format('yyyy-MM-dd')
233
- this.selectdata.operator = this.selectdata.person
234
- this.selectdata.orgs = user.orgs
235
- this.selectdata.parentname = user.deps
236
- }
237
-
238
- // 未结束且是下发查看指定人员
239
- if (this.selectdata.state !== '结束' && this.selectdata.actorexpression !== null && this.selectdata.actorexpression.indexOf('PI') === 0) {
240
- let http = new HttpResetClass()
241
- let res = await http.load('POST', 'rs/search', {
242
- source: 'this',
243
- userid: this.selectdata.actorexpression.substring(3, this.selectdata.actorexpression.length-1)
244
- }, {resolveMsg: null, rejectMsg: '处理人员获取失败!!!'})
245
- let user = res.data
246
- this.selectdata.operate_date = new Date().Format('yyyy-MM-dd')
247
- this.selectdata.operator = user.name
248
- this.selectdata.orgs = user.orgs
249
- this.selectdata.parentname = user.f_department_name
250
- }
251
-
252
- // 消除双向绑定,避免子组件(显示层)数据更改,父组件(控制层)也更改
253
- let temp = JSON.parse(JSON.stringify(this.selectdata))
254
-
255
- this.show_data = temp
256
- this.$nextTick(() => {
257
- this.showview = true
258
- })
259
- this.show_data.stairPrice=this.show_data.f_price_name
260
- for (const item of this.show_data.fields) {
261
- if(item.label==='气价名称'){
262
- item.value=this.show_data.f_price_name
263
- }
264
- }
265
- },
266
- // 金额转大写
267
- smalltoBIG(n) {
268
- let fraction = ['角', '分'];
269
- let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
270
- let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
271
- let head = n < 0 ? '欠' : '';
272
- n = Math.abs(n);
273
-
274
- let s = '';
275
-
276
- for (var i = 0; i < fraction.length; i++) {
277
- s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
278
- }
279
- s = s || '整';
280
- n = Math.floor(n);
281
-
282
- for (var i = 0; i < unit[0].length && n > 0; i++) {
283
- let p = '';
284
- for (var j = 0; j < unit[1].length && n > 0; j++) {
285
- p = digit[n % 10] + unit[1][j] + p;
286
- n = Math.floor(n / 10);
287
- }
288
- s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
289
- }
290
- return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
291
- },
292
- getLableValue(label) {
293
- for (const item of this.show_data.fields) {
294
- if (item.label === label && item.type !== 'number') {
295
- return item.value || ''
296
- }
297
- if (item.label === label && item.type === 'number') {
298
- return item.value || 0
299
- }
300
- }
301
- },
302
- getLableOptions(label) {
303
- for (const item of this.show_data.fields) {
304
- if (item.label === label) {
305
- return item.options
306
- }
307
- }
308
- },
309
- setLabelValue(label, value) {
310
- for (const item of this.show_data.fields) {
311
- if (item.label === label) {
312
- item.value = value
313
- this.show_data[item.field] = value
314
- }
315
- }
316
- },
317
- setLabelOptions(label, options) {
318
- for (const item of this.show_data.fields) {
319
- if (item.label === label) {
320
- item.options = options
321
- }
322
- }
323
- },
324
- showLabels(...labels) {
325
- for (const item of this.show_data.fields) {
326
- if (labels.includes(item.label)) {
327
- item.hidden = false
328
- }
329
- }
330
- },
331
- hideLabels(...labels) {
332
- for (const item of this.show_data.fields) {
333
- if (labels.includes(item.label)) {
334
- item.hidden = true
335
- }
336
- }
337
- },
338
- requiredLabels(...labels) {
339
- for (const item of this.show_data.fields) {
340
- if (labels.includes(item.label)) {
341
- item.required = true
342
- }
343
- }
344
- },
345
- electiveLabels(...labels) {
346
- for (const item of this.show_data.fields) {
347
- if (labels.includes(item.label)) {
348
- item.required = false
349
- }
350
- }
351
- },
352
- readonlyLabels(...labels) {
353
- for (const item of this.show_data.fields) {
354
- if (labels.includes(item.label)) {
355
- item.readonly = true
356
- item.disabled = true
357
- }
358
- }
359
- },
360
- readwriteLabels(...labels) {
361
- for (const item of this.show_data.fields) {
362
- if (labels.includes(item.label)) {
363
- item.readonly = false
364
- item.disabled = false
365
- }
366
- }
367
- },
368
- disabledButtons(...buttons) {
369
- for (const item of this.show_data.buttons) {
370
- if (buttons.includes(item.button_name)) {
371
- item.disabled = true
372
- }
373
- }
374
- },
375
- enableButtons(...buttons) {
376
- for (const item of this.show_data.buttons) {
377
- if (buttons.includes(item.button_name)) {
378
- item.disabled = false
379
- }
380
- }
381
- },
382
- showButtons(...buttons) {
383
- for (const item of this.show_data.buttons) {
384
- if (buttons.includes(item.button_name)) {
385
- item.hidden = false
386
- }
387
- }
388
- },
389
- hideButtons(...buttons) {
390
- for (const item of this.show_data.buttons) {
391
- if (buttons.includes(item.button_name)) {
392
- item.hidden = true
393
- }
394
- }
395
- },
396
- async checkDuplicate(index) {
397
- let http = new HttpResetClass()
398
- let data = {
399
- tablename: 't_apply',
400
- condition: `${this.show_data.fields[index].field} = '${this.show_data.fields[index].value}'`
401
- }
402
- let res = await http.load('POST', 'rs/sql/singleTable', {data: data}, {
403
- resolveMsg: null,
404
- rejectMsg: `${this.show_data.fields[index].label}查询失败`
405
- })
406
- if (res.data.length > 0) {
407
- this.show_data.fields[index].value = null
408
- this.$showAlert(`${this.show_data.fields[index].label}已存在!!!`, 'warning', 3000)
409
- }
410
- },
411
- // 获取片区
412
- async getSliceArea () {
413
- let data = {
414
- source: 'this.getParentByType($organization$).getAllChildrens().where(row.getType() == $zone$)',
415
- userid: this.$login.f.id
416
- }
417
-
418
- let res = await this.$resetpost(
419
- `rs/search`,
420
- {data: data},
421
- {resolveMsg: null, rejectMsg: '片区查询失败!!!'}
422
- )
423
-
424
- return res.data.map(item => {
425
- return {
426
- label: item.name,
427
- value: item.name
428
- }
429
- })
430
- },
431
- // 获取区县
432
- async getPcd () {
433
- let data = {
434
- tablename: 't_pcd',
435
- condition: `f_filialeid = '${this.$login.f.orgid}'`
436
- }
437
- let res = await this.$resetpost(
438
- `rs/sql/singleTable`,
439
- {data: data},
440
- {resolveMsg: null, rejectMsg: '区县查询失败!!!'}
441
- )
442
-
443
- return res.data.map(item => {
444
- return {
445
- label: item.f_pcd,
446
- value: item.f_pcd
447
- }
448
- })
449
- },
450
- // 缴费前置
451
- chargeBefore () {
452
- if (Number(this.show_data.f_due_money) > Number(this.show_data.f_cumulative_payment_money) || Number(this.show_data.f_surplus_money) > 0) {
453
- this.$showAlert('费用未结清!!!', 'warning', 3000)
454
- throw null
455
- }
456
- },
457
- // 施工前置
458
- async constructionBefore () {
459
- let http = new HttpResetClass()
460
- let data = {
461
- condition: `ui.f_process_id = '${this.show_data.f_process_id}' and uf.f_table_state = '待开通'`
462
- }
463
- let res = await http.load(
464
- 'POST',
465
- 'rs/sql/countApplyUserinfo',
466
- {data: data},
467
- {
468
- resolveMsg: null,
469
- rejectMsg: '安装明细查询失败!!!'
470
- })
471
- if (res.data[0].num > 0) {
472
- this.$showAlert(`还有${res.data[0].num}户未安装,无法提交`, 'warning', 3000)
473
- throw `还有${res.data[0].num}户未安装,无法提交`
474
- }
475
- },
476
- changePipeBuild () {
477
- if (this.selectdata.f_process_dep === '工程部') {
478
- return 'this.getParentByType($organization$).getChildByName($工程部报装$).getChildren()'
479
- }
480
- if (this.selectdata.f_process_dep === '运营部') {
481
- return 'this.getParentByType($organization$).getChildByName($运营部报装$).getChildren()'
482
- }
483
- },
484
- async getDevInfo () {
485
- let data = {
486
- tablename: 't_dev_info',
487
- condition: `f_orgid = '${this.$login.f.orgid}'`
488
- }
489
- let res = await this.$resetpost(
490
- `rs/sql/singleTable`,
491
- {data: data},
492
- {resolveMsg: null, rejectMsg: '公司查询失败!!!'}
493
- )
494
-
495
- return res.data.map(item => {
496
- return {
497
- label: item.f_dev_name,
498
- value: item.f_dev_name
499
- }
500
- })
501
- },
502
- async getPrice (f_price_id) {
503
- debugger
504
- console.log('=======================')
505
- console.log(f_price_id)
506
-
507
- let data = {
508
- condition: `sp.f_orgid = '${this.$login.f.orgid}'`
509
- }
510
-
511
- if (!isEmpty(f_price_id)) {
512
- data.condition = `sp.f_orgid = '${this.$login.f.orgid}' and sp.f_price_id = ${f_price_id}`
513
- }
514
- let http = new HttpResetClass()
515
- let res = await http.load(
516
- 'POST',
517
- `rs/sql/applyGetPrice`,
518
- {data: data},
519
- {resolveMsg: null, rejectMsg: '气价查询失败!!!'}
520
- )
521
-
522
- return res.data.map(item => {
523
- return {
524
- label: item.f_price_name,
525
- value: item
526
- }
527
- })
528
- },
529
- materialSupervisory () {
530
- if (this.selectdata.userid === this.$login.f.id) {
531
- return true
532
- }
533
- return false
534
- },
535
- // async getDesignerPeople () {
536
- // let data = {
537
- // source: 'this.getParentByType($organization$).getChildByName($设计部报装$).getChildren()',
538
- // userid: this.$login.f.id
539
- // }
540
- //
541
- // let http = new HttpResetClass()
542
- // let res = await http.load(
543
- // 'POST',
544
- // `rs/search`,
545
- // {data: data},
546
- // {resolveMsg: null, rejectMsg: '设计人员查询失败!!!'}
547
- // )
548
- //
549
- // return res.data.map(item => {
550
- // return {
551
- // label: item.name,
552
- // value: item.id
553
- // }
554
- // })
555
- // },
556
- // 获取区县
557
- async getArea () {
558
- let data = {
559
- tablename: 't_area',
560
- condition: `f_filialeid = '${this.$login.f.orgid}'`
561
- }
562
- let http = new HttpResetClass()
563
- let res = await http.load(
564
- 'POST',
565
- `rs/sql/singleTable`,
566
- {data: data},
567
- {resolveMsg: null, rejectMsg: '集收单位查询失败!!!'}
568
- )
569
-
570
- return res.data.map(item => {
571
- return {
572
- label: item.f_residential_area,
573
- value: item.f_residential_area
574
- }
575
- })
576
- }
577
- },
578
- events:{
579
- 'complyInstallation' (index) {
580
- if (this.show_data.f_is_have === '否') {
581
- this.hideButtons('提交', '出图', '缴费')
582
- this.showButtons('终止')
583
- }
584
- if (this.show_data.f_is_have === '是') {
585
- this.hideButtons('终止')
586
- this.showButtons('提交', '出图', '缴费')
587
- }
588
- },
589
- // 选择材料
590
- async materialNameChenge (index, fieldIndex) {
591
- let material = this.show_data.onetomany[index].fields[fieldIndex].value
592
-
593
- this.show_data.onetomany[index].fields.forEach(item => {
594
- if (material[item.field]) {
595
- item.value = material[item.field]
596
- }
597
- })
598
- },
599
- // 打开模态框获取材料
600
- async 'getMaterialName' (index) {
601
- let data = {
602
- condition: `1=1`
603
- }
604
- let http = new HttpResetClass()
605
- let res = await http.load(
606
- 'POST',
607
- `rs/sql/getStockMaterial`,
608
- {data: data},
609
- {resolveMsg: null, rejectMsg: '材料查询失败!!!'}
610
- )
611
-
612
- this.show_data.onetomany[index].fields.forEach(field => {
613
- if (field.label === '选择材料') {
614
- field.options = res.data.map(item => {
615
- return {
616
- 'label': `${item.f_material_name}--${item.f_material_style}--${item.f_material_unit}`,
617
- 'value': item
618
- }
619
- })
620
- }
621
- })
622
- },
623
- // 终止报建初始化·
624
- async 'stopApplyReadyEvent' () {
625
-
626
- let f_is_stop = this.getLableValue('是否终止')
627
-
628
- for (const item of this.show_data.fields) {
629
- if (f_is_stop === '是') {
630
- if (item.label === '终止原因') {
631
- item.hidden = false
632
- item.required = true
633
- }
634
- } else {
635
- if (item.label === '终止原因') {
636
- item.hidden = true
637
- item.required = false
638
- }
639
- }
640
- }
641
-
642
- if (isEmpty(this.show_data.f_parent_process_id)) {
643
- return
644
- }
645
- let data = {
646
- condition: `f_process_id = '${this.show_data.f_parent_process_id}'`,
647
- data: {
648
- id: this.$login.f.id,
649
- orgid: this.$login.f.orgid
650
- }
651
- }
652
- let res = await this.$resetpost(
653
- `rs/sql/supervisory`,
654
- {data: data},
655
- {resolveMsg: null, rejectMsg: '项目查询失败!!!'}
656
- )
657
- this.show_data.parentApply = res.data[0]
658
- },
659
- // 通气点火初始化
660
- async 'gasReadyEvent' () {
661
- if (!isEmpty(this.show_data.f_price_id)) {
662
- let priceList = await this.getPrice(this.show_data.f_price_id)
663
- this.setLabelValue('气价名称', priceList[0].value)
664
- }
665
-
666
-
667
- // 保险初始化显示内容
668
- let f_is_insure = this.getLableValue('是否购买保险')
669
- for (const item of this.show_data.fields) {
670
- if (f_is_insure === '是') {
671
- if (item.label === '保费开始日期' || item.label === '保费结束日期' || item.label === '险种' || item.label === '保费金额') {
672
- item.hidden = false
673
- item.required = true
674
- }
675
- if (item.label === '保险备注') {
676
- item.hidden = false
677
- }
678
- } else {
679
- if (item.label === '保费开始日期' || item.label === '保费结束日期' || item.label === '险种' || item.label === '保费金额') {
680
- item.hidden = true
681
- item.required = false
682
- }
683
- if (item.label === '保险备注') {
684
- item.hidden = true
685
- }
686
- }
687
- }
688
- },
689
- // 申请节点初始化
690
- 'applyReadyEvent' () {
691
- this.$getConfig(this, 'UserAddress')
692
-
693
- let f_address_type = this.show_data.f_address_type
694
-
695
- for (const item of this.show_data.fields) {
696
- if (f_address_type === '民用市区') {
697
- if (item.label === '区/县' || item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号') {
698
- item.hidden = false
699
- item.required = true
700
- }
701
- if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层') {
702
- item.hidden = false
703
- item.required = false
704
- }
705
- if (item.label === '地址') {
706
- item.readonly = true
707
- }
708
- }
709
- if (f_address_type === '民用乡镇') {
710
- if (item.label === '区/县' || item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号') {
711
- item.hidden = false
712
- item.required = true
713
- }
714
- if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层') {
715
- item.hidden = false
716
- item.required = false
717
- }
718
- if (item.label === '楼层') {
719
- item.hidden = true
720
- item.required = false
721
- }
722
- if (item.label === '地址') {
723
- item.readonly = true
724
- }
725
- }
726
- if (f_address_type === '特殊地址') {
727
- if (item.label === '区/县' || item.label === '街道/乡镇') {
728
- item.hidden = false
729
- item.required = true
730
- }
731
- if (item.label === '集收单位') {
732
- item.hidden = false
733
- item.required = false
734
- }
735
- if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层' || item.label === '门牌号') {
736
- item.hidden = true
737
- item.required = false
738
- }
739
- if (item.label === '地址') {
740
- item.readonly = false
741
- }
742
- }
743
-
744
- if (this.show_data.f_apply_source === '线下发起' && item.label === '预约地址') {
745
- item.hidden = true
746
- }
747
- }
748
- },
749
- // 失去焦点出触发事件
750
- 'onchange' (index) {
751
- if (this.show_data.defname === '报装申请' || this.show_data.defname === '信息确认') {
752
- if (
753
- this.show_data.fields[index].label === '区/县' ||
754
- this.show_data.fields[index].label === '街道/乡镇' ||
755
- this.show_data.fields[index].label === '集收单位' ||
756
- this.show_data.fields[index].label === '楼号/组' ||
757
- this.show_data.fields[index].label === '单元/排' ||
758
- this.show_data.fields[index].label === '楼层' ||
759
- this.show_data.fields[index].label === '门牌号'
760
- ) {
761
-
762
- let f_pcd = this.getLableValue('区/县') || ''
763
- let f_street = this.getLableValue('街道/乡镇') || ''
764
- let f_residential_area = this.getLableValue('集收单位') || ''
765
- let f_building = this.getLableValue('楼号/组') || ''
766
- let f_building_suffix = f_building ? this.config.f_building_suffix : ''
767
- let f_unit = this.getLableValue('单元/排') || ''
768
- let f_unit_suffix = f_unit ? this.config.f_unit_suffix : ''
769
- let f_floor = this.getLableValue('楼层') || ''
770
- let f_floor_suffix = f_floor ? this.config.f_floor_suffix : ''
771
- let f_room = this.getLableValue('门牌号') || ''
772
- let f_room_suffix = f_room ? this.config.f_room_suffix : ''
773
-
774
- let f_address = f_pcd + f_street + f_residential_area + f_building + f_building_suffix + f_unit + f_unit_suffix + f_floor + f_floor_suffix + f_room + f_room_suffix
775
- this.setLabelValue("地址", f_address)
776
- }
777
- }
778
- },
779
- // =============================
780
- selectSearch (val, index) {},
781
- 'onblur' (index) {},
782
- 'oninput' (index) {},
783
- 'initializtionView' () {},
784
- async 'onchangeModal' (index, fieldIndex) {
785
- },
786
- async 'onblurModal' (index, fieldIndex) {
787
-
788
- },
789
- async 'oninputModal' (index, fieldIndex) {
790
-
791
- },
792
- async 'onetomanydelete' (index, rowIndex) {
793
-
794
- let http = new HttpResetClass()
795
-
796
- let res = await http.load(
797
- 'DELETE',
798
- `rs/entity/${this.show_data.onetomany[index].tables[0]}/${this.show_data.onetomany[index].rows[rowIndex].id}`,
799
- null,
800
- {resolveMsg: null, rejectMsg: '删除失败!!!'}
801
- )
802
-
803
- res = await this.$resetpost(
804
- 'rs/entity/t_apply',
805
- this.show_data
806
- )
807
-
808
- this.$dispatch('breakControl', this.show_data)
809
- },
810
- async 'onetomanyupdate' (index, rowIndex) {
811
- let data = this.show_data.onetomany[index].rows[rowIndex]
812
-
813
- this.show_data.onetomany[index].fields.forEach(item => {
814
- data[item.field] = item.value
815
- })
816
- let res = await this.$resetpost(
817
- `rs/entity/${this.show_data.onetomany[index].tables[0]}`,
818
- data
819
- )
820
-
821
- res = await this.$resetpost(
822
- 'rs/entity/t_apply',
823
- this.show_data
824
- )
825
-
826
- this.$dispatch('breakControl', this.show_data)
827
- },
828
- async 'onetomanyadd' (index) {
829
- let data = {
830
- f_process_id : this.show_data.f_process_id,
831
- f_operator_id: this.$login.f.id,
832
- f_operator: this.$login.f.name,
833
- f_operation_date: new Date().Format('yyyy-MM-dd HH:mm:ss'),
834
- f_orgid: this.$login.f.orgid,
835
- f_orgname: this.$login.f.orgs
836
- }
837
- this.show_data.onetomany[index].fields.forEach(item => {
838
- data[item.field] = item.value
839
- })
840
- let res = await this.$resetpost(
841
- `rs/entity/${this.show_data.onetomany[index].tables[0]}`,
842
- data
843
- )
844
-
845
- res = await this.$resetpost(
846
- 'rs/entity/t_apply',
847
- this.show_data
848
- )
849
-
850
- this.$dispatch('breakControl', this.show_data)
851
- },
852
- async 'importEvent' (index, table, configName, filepath) {
853
- let data = {
854
- selectdata: this.show_data,
855
- table: table,
856
- filepath: filepath,
857
- configName: configName,
858
- user: this.$login.f
859
- }
860
-
861
- let res = await this.$resetpost(
862
- `rs/logic/importEvent`,
863
- data
864
- )
865
-
866
- this.$dispatch('breakControl', this.show_data)
867
- },
868
- 'onbutchange' (index) {
869
-
870
- },
871
- 'onbutblur' (index) {
872
-
873
- },
874
- 'onbutinput' (index) {
875
-
876
- }
877
- },
878
- watch: {
879
- deep: true
880
- }
881
- }
882
- </script>
883
- <style scoped>
884
- /*清除model中的浮动*/
885
- .clearfix:after,.clearfix:before{
886
- display: table;
887
- }
888
- .clearfix:after{
889
- clear: both;
890
- }
891
- </style>
1
+ <template>
2
+ <div class="auto clearfix">
3
+ <show-back-reason :selectdata="show_data"></show-back-reason>
4
+ </div>
5
+ <service-view v-ref:service_show :data="show_data" v-if="showview"></service-view>
6
+ </template>
7
+ <script>
8
+ import Vue from 'vue'
9
+ import {HttpResetClass} from 'vue-client'
10
+ import {isEmpty} from "../../../../../components/Util";
11
+ // Date格式化
12
+ Date.prototype.Format = function (fmt) {
13
+ var o = {
14
+ 'M+': this.getMonth() + 1, // 月份
15
+ 'd+': this.getDate(), // 日
16
+ 'H+': this.getHours(), // 小时
17
+ 'm+': this.getMinutes(), // 分
18
+ 's+': this.getSeconds(), // 秒
19
+ 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
20
+ 'S': this.getMilliseconds() // 毫秒
21
+ }
22
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
23
+ for (var k in o) {
24
+ if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
25
+ }
26
+ return fmt
27
+ }
28
+ export default {
29
+ title: '报建监控控制层',
30
+ props: {
31
+ selectdata: {
32
+ type: Object
33
+ },
34
+ nodeSnapshot: {
35
+ type: Boolean,
36
+ default: false
37
+ }
38
+ },
39
+ data() {
40
+ return {
41
+ data: null, // 展示的数据
42
+ json_datas: null, // json配置数据结构
43
+ showview: false, // 控制显示层显示
44
+ show_data: null,
45
+ config: {}
46
+ }
47
+ },
48
+ created () {
49
+ this.refurbish()
50
+ },
51
+ methods: {
52
+ // 初始化模块
53
+ async refurbish() {
54
+ this.json_datas = this.$workflow_vue
55
+ let sum = 0
56
+ let jsonData = {}
57
+ if (!this.json_datas || !this.json_datas.activitys || this.json_datas.activitys.length === 0) {
58
+ this.$showMessage("网络故障,请刷新页面")
59
+ return
60
+ }
61
+ this.json_datas.activitys.forEach(item => {
62
+ if (this.selectdata.defname === item.title) {
63
+ jsonData = item // 拿到当前节点的json配置信息
64
+ sum++ // 节点名一样的个数
65
+ }
66
+ return this.selectdata.defname === item.title // 拿到当前节点的json配置信息
67
+ })
68
+
69
+ if (sum === 0) {
70
+ this.$showMessage(`没有在JSON配置文件中找到活动名为:(${this.selectdata.defname})的节点配置`)
71
+ return
72
+ }
73
+ if (sum > 1) {
74
+ this.$showMessage(`在JSON配置文件中找到活动名为:(${this.selectdata.defname})的节点配置:${sum}个`)
75
+ return
76
+ }
77
+
78
+ this.selectdata = Object.assign({}, this.selectdata, jsonData)
79
+
80
+ // fields 字段填充值
81
+ for (const item of this.selectdata.fields) {
82
+ if (!item.value) {
83
+ item.value = null
84
+ }
85
+
86
+ if (!item.value && (item.default || item.default === 0) && item.type !== 'datepicker') {
87
+ if (item.eval) {
88
+ item.value = eval(item.default)
89
+ } else {
90
+ item.value = item.default
91
+ }
92
+ }
93
+
94
+ if (this.selectdata[item.field]) {
95
+ // 将json字符串格式化赋值给value
96
+ if (String(this.selectdata[item.field]).startsWith("{")) {
97
+ item.value = JSON.parse(this.selectdata[item.field])
98
+ } else {
99
+ item.value = this.selectdata[item.field]
100
+ }
101
+ }
102
+ if (this.selectdata[item.field] === 0) {
103
+ item.value = 0
104
+ }
105
+
106
+ // datepicker
107
+ if (item.type === 'datepicker' && !item.value && item.default) {
108
+ item.value = new Date().Format(`${item.format ? item.format : 'yyyy-MM-dd HH:mm:ss'}`)
109
+ }
110
+
111
+ // 如果配置类型为select,优先从参数列表获取options
112
+ if (item.type === 'select' || item.type === 'checkbox') {
113
+ if (item.param) {
114
+ let temp = this.$appdata.getParam(item.label)
115
+
116
+ if (temp && temp.length > 0) {
117
+ item.options = temp
118
+ }
119
+
120
+ if (item.paramLabel) {
121
+ temp = this.$appdata.getParam(item.paramLabel)
122
+ if (temp && temp.length > 0) {
123
+ item.options = temp
124
+ }
125
+ }
126
+ }
127
+
128
+ if (item.ready) {
129
+ item.options = await this[item.ready]()
130
+ }
131
+ }
132
+
133
+
134
+ if (item.type === 'checkbox') {
135
+ if (this.selectdata[item.field]) {
136
+ item.value = JSON.parse(this.selectdata[item.field])
137
+ } else {
138
+ item.value = []
139
+ }
140
+ }
141
+
142
+ this.selectdata[item.field] = item.value
143
+
144
+ item.readonly = true
145
+ item.disabled = true
146
+ }
147
+
148
+ // 控制组件
149
+ if (this.selectdata.components) {
150
+ this.selectdata.components.forEach(item => {
151
+ item.mark = 1
152
+ if (item.supervisory && this[item.supervisory]()) {
153
+ item.mark = 0
154
+ }
155
+ })
156
+ }
157
+
158
+ // 初始化onetomany
159
+ if (this.selectdata.onetomany) {
160
+ for (const item of this.selectdata.onetomany) {
161
+ let res = null
162
+ if (item.queryEvent) {
163
+ res = this[item.queryEvent]()
164
+ } else {
165
+ let data = {
166
+ tablename: item.tables[0],
167
+ condition: `f_process_id='${this.selectdata.f_process_id}'`
168
+ }
169
+ res = await this.$resetpost(
170
+ 'rs/sql/singleTable',
171
+ {data: data},
172
+ {resolveMsg: null, rejectMsg: 'onetomany查询失败'}
173
+ )
174
+ }
175
+
176
+ item.rows = res.data
177
+
178
+ // 初始化onetomany中的fields
179
+ for (const field of item.fields) {
180
+ if (!field.value) {
181
+ if (field.value !== 0) {
182
+ field.value = null
183
+ }
184
+ }
185
+
186
+ if (field.default || field.default === 0) {
187
+ field.value = field.default
188
+ }
189
+
190
+ // datepicker
191
+ if (field.type === 'datepicker' && !field.value && field.default) {
192
+ field.value = new Date().Format(`${field.format ? field.format : 'yyyy-MM-dd HH:mm:ss'}`)
193
+ }
194
+
195
+ if (field.type === 'select') {
196
+
197
+ let temp = this.$appdata.getParam(field.label)
198
+
199
+ if (temp && temp.length > 0) {
200
+ field.options = temp
201
+ }
202
+
203
+ if (field.paramLabel) {
204
+ temp = this.$appdata.getParam(field.paramLabel)
205
+ if (temp && temp.length > 0) {
206
+ item.options = temp
207
+ }
208
+ }
209
+
210
+ }
211
+ }
212
+
213
+ // 隐藏所有操作
214
+ item.hiddenOperate = true
215
+ if (item.supervisory && this[item.supervisory]()) {
216
+ item.hiddenOperate = false
217
+ }
218
+ }
219
+ }
220
+
221
+ // 去除button
222
+ this.selectdata.buttons = null
223
+
224
+ // 完成时间和完成人,部门,分公司
225
+ if (this.selectdata.state === '结束') {
226
+ let http = new HttpResetClass()
227
+ let res = await http.load('POST', 'rs/search', {
228
+ source: 'this.getInfo()',
229
+ userid: this.selectdata.userid
230
+ }, {resolveMsg: null, rejectMsg: '处理人员获取失败!!!'})
231
+ let user = res.data
232
+ this.selectdata.operate_date = new Date(this.selectdata.finishtime).Format('yyyy-MM-dd')
233
+ this.selectdata.operator = this.selectdata.person
234
+ this.selectdata.orgs = user.orgs
235
+ this.selectdata.parentname = user.deps
236
+ }
237
+
238
+ // 未结束且是下发查看指定人员
239
+ if (this.selectdata.state !== '结束' && this.selectdata.actorexpression !== null && this.selectdata.actorexpression.indexOf('PI') === 0) {
240
+ let http = new HttpResetClass()
241
+ let res = await http.load('POST', 'rs/search', {
242
+ source: 'this',
243
+ userid: this.selectdata.actorexpression.substring(3, this.selectdata.actorexpression.length-1)
244
+ }, {resolveMsg: null, rejectMsg: '处理人员获取失败!!!'})
245
+ let user = res.data
246
+ this.selectdata.operate_date = new Date().Format('yyyy-MM-dd')
247
+ this.selectdata.operator = user.name
248
+ this.selectdata.orgs = user.orgs
249
+ this.selectdata.parentname = user.f_department_name
250
+ }
251
+
252
+ // 消除双向绑定,避免子组件(显示层)数据更改,父组件(控制层)也更改
253
+ let temp = JSON.parse(JSON.stringify(this.selectdata))
254
+
255
+ this.show_data = temp
256
+ this.$nextTick(() => {
257
+ this.showview = true
258
+ })
259
+ this.show_data.stairPrice=this.show_data.f_price_name
260
+ for (const item of this.show_data.fields) {
261
+ if(item.label==='气价名称'){
262
+ item.value=this.show_data.f_price_name
263
+ }
264
+ }
265
+ },
266
+ // 金额转大写
267
+ smalltoBIG(n) {
268
+ let fraction = ['角', '分'];
269
+ let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
270
+ let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
271
+ let head = n < 0 ? '欠' : '';
272
+ n = Math.abs(n);
273
+
274
+ let s = '';
275
+
276
+ for (var i = 0; i < fraction.length; i++) {
277
+ s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
278
+ }
279
+ s = s || '整';
280
+ n = Math.floor(n);
281
+
282
+ for (var i = 0; i < unit[0].length && n > 0; i++) {
283
+ let p = '';
284
+ for (var j = 0; j < unit[1].length && n > 0; j++) {
285
+ p = digit[n % 10] + unit[1][j] + p;
286
+ n = Math.floor(n / 10);
287
+ }
288
+ s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
289
+ }
290
+ return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
291
+ },
292
+ getLableValue(label) {
293
+ for (const item of this.show_data.fields) {
294
+ if (item.label === label && item.type !== 'number') {
295
+ return item.value || ''
296
+ }
297
+ if (item.label === label && item.type === 'number') {
298
+ return item.value || 0
299
+ }
300
+ }
301
+ },
302
+ getLableOptions(label) {
303
+ for (const item of this.show_data.fields) {
304
+ if (item.label === label) {
305
+ return item.options
306
+ }
307
+ }
308
+ },
309
+ setLabelValue(label, value) {
310
+ for (const item of this.show_data.fields) {
311
+ if (item.label === label) {
312
+ item.value = value
313
+ this.show_data[item.field] = value
314
+ }
315
+ }
316
+ },
317
+ setLabelOptions(label, options) {
318
+ for (const item of this.show_data.fields) {
319
+ if (item.label === label) {
320
+ item.options = options
321
+ }
322
+ }
323
+ },
324
+ showLabels(...labels) {
325
+ for (const item of this.show_data.fields) {
326
+ if (labels.includes(item.label)) {
327
+ item.hidden = false
328
+ }
329
+ }
330
+ },
331
+ hideLabels(...labels) {
332
+ for (const item of this.show_data.fields) {
333
+ if (labels.includes(item.label)) {
334
+ item.hidden = true
335
+ }
336
+ }
337
+ },
338
+ requiredLabels(...labels) {
339
+ for (const item of this.show_data.fields) {
340
+ if (labels.includes(item.label)) {
341
+ item.required = true
342
+ }
343
+ }
344
+ },
345
+ electiveLabels(...labels) {
346
+ for (const item of this.show_data.fields) {
347
+ if (labels.includes(item.label)) {
348
+ item.required = false
349
+ }
350
+ }
351
+ },
352
+ readonlyLabels(...labels) {
353
+ for (const item of this.show_data.fields) {
354
+ if (labels.includes(item.label)) {
355
+ item.readonly = true
356
+ item.disabled = true
357
+ }
358
+ }
359
+ },
360
+ readwriteLabels(...labels) {
361
+ for (const item of this.show_data.fields) {
362
+ if (labels.includes(item.label)) {
363
+ item.readonly = false
364
+ item.disabled = false
365
+ }
366
+ }
367
+ },
368
+ disabledButtons(...buttons) {
369
+ for (const item of this.show_data.buttons) {
370
+ if (buttons.includes(item.button_name)) {
371
+ item.disabled = true
372
+ }
373
+ }
374
+ },
375
+ enableButtons(...buttons) {
376
+ for (const item of this.show_data.buttons) {
377
+ if (buttons.includes(item.button_name)) {
378
+ item.disabled = false
379
+ }
380
+ }
381
+ },
382
+ showButtons(...buttons) {
383
+ for (const item of this.show_data.buttons) {
384
+ if (buttons.includes(item.button_name)) {
385
+ item.hidden = false
386
+ }
387
+ }
388
+ },
389
+ hideButtons(...buttons) {
390
+ for (const item of this.show_data.buttons) {
391
+ if (buttons.includes(item.button_name)) {
392
+ item.hidden = true
393
+ }
394
+ }
395
+ },
396
+ async checkDuplicate(index) {
397
+ let http = new HttpResetClass()
398
+ let data = {
399
+ tablename: 't_apply',
400
+ condition: `${this.show_data.fields[index].field} = '${this.show_data.fields[index].value}'`
401
+ }
402
+ let res = await http.load('POST', 'rs/sql/singleTable', {data: data}, {
403
+ resolveMsg: null,
404
+ rejectMsg: `${this.show_data.fields[index].label}查询失败`
405
+ })
406
+ if (res.data.length > 0) {
407
+ this.show_data.fields[index].value = null
408
+ this.$showAlert(`${this.show_data.fields[index].label}已存在!!!`, 'warning', 3000)
409
+ }
410
+ },
411
+ // 获取片区
412
+ async getSliceArea () {
413
+ let data = {
414
+ source: 'this.getParentByType($organization$).getAllChildrens().where(row.getType() == $zone$)',
415
+ userid: this.$login.f.id
416
+ }
417
+
418
+ let res = await this.$resetpost(
419
+ `rs/search`,
420
+ {data: data},
421
+ {resolveMsg: null, rejectMsg: '片区查询失败!!!'}
422
+ )
423
+
424
+ return res.data.map(item => {
425
+ return {
426
+ label: item.name,
427
+ value: item.name
428
+ }
429
+ })
430
+ },
431
+ // 获取区县
432
+ async getPcd () {
433
+ let data = {
434
+ tablename: 't_pcd',
435
+ condition: `f_filialeid = '${this.$login.f.orgid}'`
436
+ }
437
+ let res = await this.$resetpost(
438
+ `rs/sql/singleTable`,
439
+ {data: data},
440
+ {resolveMsg: null, rejectMsg: '区县查询失败!!!'}
441
+ )
442
+
443
+ return res.data.map(item => {
444
+ return {
445
+ label: item.f_pcd,
446
+ value: item.f_pcd
447
+ }
448
+ })
449
+ },
450
+ // 缴费前置
451
+ chargeBefore () {
452
+ if (Number(this.show_data.f_due_money) > Number(this.show_data.f_cumulative_payment_money) || Number(this.show_data.f_surplus_money) > 0) {
453
+ this.$showAlert('费用未结清!!!', 'warning', 3000)
454
+ throw null
455
+ }
456
+ },
457
+ // 施工前置
458
+ async constructionBefore () {
459
+ let http = new HttpResetClass()
460
+ let data = {
461
+ condition: `ui.f_process_id = '${this.show_data.f_process_id}' and uf.f_table_state = '待开通'`
462
+ }
463
+ let res = await http.load(
464
+ 'POST',
465
+ 'rs/sql/countApplyUserinfo',
466
+ {data: data},
467
+ {
468
+ resolveMsg: null,
469
+ rejectMsg: '安装明细查询失败!!!'
470
+ })
471
+ if (res.data[0].num > 0) {
472
+ this.$showAlert(`还有${res.data[0].num}户未安装,无法提交`, 'warning', 3000)
473
+ throw `还有${res.data[0].num}户未安装,无法提交`
474
+ }
475
+ },
476
+ changePipeBuild () {
477
+ if (this.selectdata.f_process_dep === '工程部') {
478
+ return 'this.getParentByType($organization$).getChildByName($工程部报装$).getChildren()'
479
+ }
480
+ if (this.selectdata.f_process_dep === '运营部') {
481
+ return 'this.getParentByType($organization$).getChildByName($运营部报装$).getChildren()'
482
+ }
483
+ },
484
+ async getDevInfo () {
485
+ let data = {
486
+ tablename: 't_dev_info',
487
+ condition: `f_orgid = '${this.$login.f.orgid}'`
488
+ }
489
+ let res = await this.$resetpost(
490
+ `rs/sql/singleTable`,
491
+ {data: data},
492
+ {resolveMsg: null, rejectMsg: '公司查询失败!!!'}
493
+ )
494
+
495
+ return res.data.map(item => {
496
+ return {
497
+ label: item.f_dev_name,
498
+ value: item.f_dev_name
499
+ }
500
+ })
501
+ },
502
+ async getPrice (f_price_id) {
503
+ debugger
504
+ console.log('=======================')
505
+ console.log(f_price_id)
506
+
507
+ let data = {
508
+ condition: `sp.f_orgid = '${this.$login.f.orgid}'`
509
+ }
510
+
511
+ if (!isEmpty(f_price_id)) {
512
+ data.condition = `sp.f_orgid = '${this.$login.f.orgid}' and sp.f_price_id = ${f_price_id}`
513
+ }
514
+ let http = new HttpResetClass()
515
+ let res = await http.load(
516
+ 'POST',
517
+ `rs/sql/applyGetPrice`,
518
+ {data: data},
519
+ {resolveMsg: null, rejectMsg: '气价查询失败!!!'}
520
+ )
521
+
522
+ return res.data.map(item => {
523
+ return {
524
+ label: item.f_price_name,
525
+ value: item
526
+ }
527
+ })
528
+ },
529
+ materialSupervisory () {
530
+ if (this.selectdata.userid === this.$login.f.id) {
531
+ return true
532
+ }
533
+ return false
534
+ },
535
+ // async getDesignerPeople () {
536
+ // let data = {
537
+ // source: 'this.getParentByType($organization$).getChildByName($设计部报装$).getChildren()',
538
+ // userid: this.$login.f.id
539
+ // }
540
+ //
541
+ // let http = new HttpResetClass()
542
+ // let res = await http.load(
543
+ // 'POST',
544
+ // `rs/search`,
545
+ // {data: data},
546
+ // {resolveMsg: null, rejectMsg: '设计人员查询失败!!!'}
547
+ // )
548
+ //
549
+ // return res.data.map(item => {
550
+ // return {
551
+ // label: item.name,
552
+ // value: item.id
553
+ // }
554
+ // })
555
+ // },
556
+ // 获取区县
557
+ async getArea () {
558
+ let data = {
559
+ tablename: 't_area',
560
+ condition: `f_filialeid = '${this.$login.f.orgid}'`
561
+ }
562
+ let http = new HttpResetClass()
563
+ let res = await http.load(
564
+ 'POST',
565
+ `rs/sql/singleTable`,
566
+ {data: data},
567
+ {resolveMsg: null, rejectMsg: '集收单位查询失败!!!'}
568
+ )
569
+
570
+ return res.data.map(item => {
571
+ return {
572
+ label: item.f_residential_area,
573
+ value: item.f_residential_area
574
+ }
575
+ })
576
+ }
577
+ },
578
+ events:{
579
+ 'complyInstallation' (index) {
580
+ if (this.show_data.f_is_have === '否') {
581
+ this.hideButtons('提交', '出图', '缴费')
582
+ this.showButtons('终止')
583
+ }
584
+ if (this.show_data.f_is_have === '是') {
585
+ this.hideButtons('终止')
586
+ this.showButtons('提交', '出图', '缴费')
587
+ }
588
+ },
589
+ // 选择材料
590
+ async materialNameChenge (index, fieldIndex) {
591
+ let material = this.show_data.onetomany[index].fields[fieldIndex].value
592
+
593
+ this.show_data.onetomany[index].fields.forEach(item => {
594
+ if (material[item.field]) {
595
+ item.value = material[item.field]
596
+ }
597
+ })
598
+ },
599
+ // 打开模态框获取材料
600
+ async 'getMaterialName' (index) {
601
+ let data = {
602
+ condition: `1=1`
603
+ }
604
+ let http = new HttpResetClass()
605
+ let res = await http.load(
606
+ 'POST',
607
+ `rs/sql/getStockMaterial`,
608
+ {data: data},
609
+ {resolveMsg: null, rejectMsg: '材料查询失败!!!'}
610
+ )
611
+
612
+ this.show_data.onetomany[index].fields.forEach(field => {
613
+ if (field.label === '选择材料') {
614
+ field.options = res.data.map(item => {
615
+ return {
616
+ 'label': `${item.f_material_name}--${item.f_material_style}--${item.f_material_unit}`,
617
+ 'value': item
618
+ }
619
+ })
620
+ }
621
+ })
622
+ },
623
+ // 终止报建初始化·
624
+ async 'stopApplyReadyEvent' () {
625
+
626
+ let f_is_stop = this.getLableValue('是否终止')
627
+
628
+ for (const item of this.show_data.fields) {
629
+ if (f_is_stop === '是') {
630
+ if (item.label === '终止原因') {
631
+ item.hidden = false
632
+ item.required = true
633
+ }
634
+ } else {
635
+ if (item.label === '终止原因') {
636
+ item.hidden = true
637
+ item.required = false
638
+ }
639
+ }
640
+ }
641
+
642
+ if (isEmpty(this.show_data.f_parent_process_id)) {
643
+ return
644
+ }
645
+ let data = {
646
+ condition: `f_process_id = '${this.show_data.f_parent_process_id}'`,
647
+ data: {
648
+ id: this.$login.f.id,
649
+ orgid: this.$login.f.orgid
650
+ }
651
+ }
652
+ let res = await this.$resetpost(
653
+ `rs/sql/supervisory`,
654
+ {data: data},
655
+ {resolveMsg: null, rejectMsg: '项目查询失败!!!'}
656
+ )
657
+ this.show_data.parentApply = res.data[0]
658
+ },
659
+ // 通气点火初始化
660
+ async 'gasReadyEvent' () {
661
+ if (!isEmpty(this.show_data.f_price_id)) {
662
+ let priceList = await this.getPrice(this.show_data.f_price_id)
663
+ this.setLabelValue('气价名称', priceList[0].value)
664
+ }
665
+
666
+
667
+ // 保险初始化显示内容
668
+ let f_is_insure = this.getLableValue('是否购买保险')
669
+ for (const item of this.show_data.fields) {
670
+ if (f_is_insure === '是') {
671
+ if (item.label === '保费开始日期' || item.label === '保费结束日期' || item.label === '险种' || item.label === '保费金额') {
672
+ item.hidden = false
673
+ item.required = true
674
+ }
675
+ if (item.label === '保险备注') {
676
+ item.hidden = false
677
+ }
678
+ } else {
679
+ if (item.label === '保费开始日期' || item.label === '保费结束日期' || item.label === '险种' || item.label === '保费金额') {
680
+ item.hidden = true
681
+ item.required = false
682
+ }
683
+ if (item.label === '保险备注') {
684
+ item.hidden = true
685
+ }
686
+ }
687
+ }
688
+ },
689
+ // 申请节点初始化
690
+ 'applyReadyEvent' () {
691
+ this.$getConfig(this, 'UserAddress')
692
+
693
+ let f_address_type = this.show_data.f_address_type
694
+
695
+ for (const item of this.show_data.fields) {
696
+ if (f_address_type === '民用市区') {
697
+ if (item.label === '区/县' || item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号') {
698
+ item.hidden = false
699
+ item.required = true
700
+ }
701
+ if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层') {
702
+ item.hidden = false
703
+ item.required = false
704
+ }
705
+ if (item.label === '地址') {
706
+ item.readonly = true
707
+ }
708
+ }
709
+ if (f_address_type === '民用乡镇') {
710
+ if (item.label === '区/县' || item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号') {
711
+ item.hidden = false
712
+ item.required = true
713
+ }
714
+ if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层') {
715
+ item.hidden = false
716
+ item.required = false
717
+ }
718
+ if (item.label === '楼层') {
719
+ item.hidden = true
720
+ item.required = false
721
+ }
722
+ if (item.label === '地址') {
723
+ item.readonly = true
724
+ }
725
+ }
726
+ if (f_address_type === '特殊地址') {
727
+ if (item.label === '区/县' || item.label === '街道/乡镇') {
728
+ item.hidden = false
729
+ item.required = true
730
+ }
731
+ if (item.label === '集收单位') {
732
+ item.hidden = false
733
+ item.required = false
734
+ }
735
+ if (item.label === '楼号/组' || item.label === '单元/排' || item.label === '楼层' || item.label === '门牌号') {
736
+ item.hidden = true
737
+ item.required = false
738
+ }
739
+ if (item.label === '地址') {
740
+ item.readonly = false
741
+ }
742
+ }
743
+
744
+ if (this.show_data.f_apply_source === '线下发起' && item.label === '预约地址') {
745
+ item.hidden = true
746
+ }
747
+ }
748
+ },
749
+ // 失去焦点出触发事件
750
+ 'onchange' (index) {
751
+ if (this.show_data.defname === '报装申请' || this.show_data.defname === '信息确认') {
752
+ if (
753
+ this.show_data.fields[index].label === '区/县' ||
754
+ this.show_data.fields[index].label === '街道/乡镇' ||
755
+ this.show_data.fields[index].label === '集收单位' ||
756
+ this.show_data.fields[index].label === '楼号/组' ||
757
+ this.show_data.fields[index].label === '单元/排' ||
758
+ this.show_data.fields[index].label === '楼层' ||
759
+ this.show_data.fields[index].label === '门牌号'
760
+ ) {
761
+
762
+ let f_pcd = this.getLableValue('区/县') || ''
763
+ let f_street = this.getLableValue('街道/乡镇') || ''
764
+ let f_residential_area = this.getLableValue('集收单位') || ''
765
+ let f_building = this.getLableValue('楼号/组') || ''
766
+ let f_building_suffix = f_building ? this.config.f_building_suffix : ''
767
+ let f_unit = this.getLableValue('单元/排') || ''
768
+ let f_unit_suffix = f_unit ? this.config.f_unit_suffix : ''
769
+ let f_floor = this.getLableValue('楼层') || ''
770
+ let f_floor_suffix = f_floor ? this.config.f_floor_suffix : ''
771
+ let f_room = this.getLableValue('门牌号') || ''
772
+ let f_room_suffix = f_room ? this.config.f_room_suffix : ''
773
+
774
+ let f_address = f_pcd + f_street + f_residential_area + f_building + f_building_suffix + f_unit + f_unit_suffix + f_floor + f_floor_suffix + f_room + f_room_suffix
775
+ this.setLabelValue("地址", f_address)
776
+ }
777
+ }
778
+ },
779
+ // =============================
780
+ selectSearch (val, index) {},
781
+ 'onblur' (index) {},
782
+ 'oninput' (index) {},
783
+ 'initializtionView' () {},
784
+ async 'onchangeModal' (index, fieldIndex) {
785
+ },
786
+ async 'onblurModal' (index, fieldIndex) {
787
+
788
+ },
789
+ async 'oninputModal' (index, fieldIndex) {
790
+
791
+ },
792
+ async 'onetomanydelete' (index, rowIndex) {
793
+
794
+ let http = new HttpResetClass()
795
+
796
+ let res = await http.load(
797
+ 'DELETE',
798
+ `rs/entity/${this.show_data.onetomany[index].tables[0]}/${this.show_data.onetomany[index].rows[rowIndex].id}`,
799
+ null,
800
+ {resolveMsg: null, rejectMsg: '删除失败!!!'}
801
+ )
802
+
803
+ res = await this.$resetpost(
804
+ 'rs/entity/t_apply',
805
+ this.show_data
806
+ )
807
+
808
+ this.$dispatch('breakControl', this.show_data)
809
+ },
810
+ async 'onetomanyupdate' (index, rowIndex) {
811
+ let data = this.show_data.onetomany[index].rows[rowIndex]
812
+
813
+ this.show_data.onetomany[index].fields.forEach(item => {
814
+ data[item.field] = item.value
815
+ })
816
+ let res = await this.$resetpost(
817
+ `rs/entity/${this.show_data.onetomany[index].tables[0]}`,
818
+ data
819
+ )
820
+
821
+ res = await this.$resetpost(
822
+ 'rs/entity/t_apply',
823
+ this.show_data
824
+ )
825
+
826
+ this.$dispatch('breakControl', this.show_data)
827
+ },
828
+ async 'onetomanyadd' (index) {
829
+ let data = {
830
+ f_process_id : this.show_data.f_process_id,
831
+ f_operator_id: this.$login.f.id,
832
+ f_operator: this.$login.f.name,
833
+ f_operation_date: new Date().Format('yyyy-MM-dd HH:mm:ss'),
834
+ f_orgid: this.$login.f.orgid,
835
+ f_orgname: this.$login.f.orgs
836
+ }
837
+ this.show_data.onetomany[index].fields.forEach(item => {
838
+ data[item.field] = item.value
839
+ })
840
+ let res = await this.$resetpost(
841
+ `rs/entity/${this.show_data.onetomany[index].tables[0]}`,
842
+ data
843
+ )
844
+
845
+ res = await this.$resetpost(
846
+ 'rs/entity/t_apply',
847
+ this.show_data
848
+ )
849
+
850
+ this.$dispatch('breakControl', this.show_data)
851
+ },
852
+ async 'importEvent' (index, table, configName, filepath) {
853
+ let data = {
854
+ selectdata: this.show_data,
855
+ table: table,
856
+ filepath: filepath,
857
+ configName: configName,
858
+ user: this.$login.f
859
+ }
860
+
861
+ let res = await this.$resetpost(
862
+ `rs/logic/importEvent`,
863
+ data
864
+ )
865
+
866
+ this.$dispatch('breakControl', this.show_data)
867
+ },
868
+ 'onbutchange' (index) {
869
+
870
+ },
871
+ 'onbutblur' (index) {
872
+
873
+ },
874
+ 'onbutinput' (index) {
875
+
876
+ }
877
+ },
878
+ watch: {
879
+ deep: true
880
+ }
881
+ }
882
+ </script>
883
+ <style scoped>
884
+ /*清除model中的浮动*/
885
+ .clearfix:after,.clearfix:before{
886
+ display: table;
887
+ }
888
+ .clearfix:after{
889
+ clear: both;
890
+ }
891
+ </style>