|
@@ -6,7 +6,7 @@ import uniqBy from 'lodash-es/uniqBy'
|
6
|
6
|
import cloneDeep from 'lodash-es/cloneDeep'
|
7
|
7
|
import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
|
8
|
8
|
import { Router, ActivatedRoute } from '@angular/router';
|
9
|
|
-import { Subject } from 'rxjs';
|
|
9
|
+import { Subject, forkJoin } from 'rxjs';
|
10
|
10
|
import { debounceTime } from 'rxjs/operators';
|
11
|
11
|
|
12
|
12
|
@Component({
|
|
@@ -52,10 +52,45 @@ export class InspectionPlanConfigComponent implements OnInit, AfterViewInit {
|
52
|
52
|
}
|
53
|
53
|
});
|
54
|
54
|
this.currentHospital = this.tool.getCurrentHospital();
|
55
|
|
- this.getPlanDetail();
|
56
|
|
- this.getAddressList();
|
57
|
55
|
this.getUsers();
|
58
|
56
|
this.getGroups();
|
|
57
|
+ this.getInfo();
|
|
58
|
+ }
|
|
59
|
+
|
|
60
|
+ getInfo(){
|
|
61
|
+ let getPlanDetail$ = this.getPlanDetail();
|
|
62
|
+ let getAddressList$ = this.getAddressList();
|
|
63
|
+ let getTagList$ = this.getTagList();
|
|
64
|
+ this.maskFlag = this.message.loading("正在加载中..", {
|
|
65
|
+ nzDuration: 0,
|
|
66
|
+ }).messageId;
|
|
67
|
+ forkJoin(getPlanDetail$, getAddressList$, getTagList$).subscribe((res:any) => {
|
|
68
|
+ this.message.remove(this.maskFlag);
|
|
69
|
+ this.maskFlag = false;
|
|
70
|
+ // getPlanDetail
|
|
71
|
+ {
|
|
72
|
+ this.planDetail = res[0].data || {};
|
|
73
|
+ let nodeList = res[0].data ? (res[0].data.nodeList || []) : [];
|
|
74
|
+ this.generateTree(nodeList);
|
|
75
|
+ }
|
|
76
|
+ // getAddressList
|
|
77
|
+ {
|
|
78
|
+ if (res[1].status == 200) {
|
|
79
|
+ let addressList = res[1].list || [];
|
|
80
|
+ let buildingAndAddressList = this.generateList(addressList);
|
|
81
|
+ this.buildingAndAddressList = this.tool.tranListToTreeData(buildingAndAddressList, undefined, "parentId", "key");
|
|
82
|
+ console.log(this.buildingAndAddressList);
|
|
83
|
+ }else{
|
|
84
|
+ this.message.error(res[1].msg || "请求数据失败");
|
|
85
|
+ }
|
|
86
|
+ }
|
|
87
|
+ // getTagList
|
|
88
|
+ {
|
|
89
|
+ if (res[2].status == 200) {
|
|
90
|
+ this.tagList = res[2].list || [];
|
|
91
|
+ }
|
|
92
|
+ }
|
|
93
|
+ });
|
59
|
94
|
}
|
60
|
95
|
|
61
|
96
|
// 表格数据
|
|
@@ -70,43 +105,8 @@ export class InspectionPlanConfigComponent implements OnInit, AfterViewInit {
|
70
|
105
|
hosId: this.currentHospital.id,
|
71
|
106
|
},
|
72
|
107
|
};
|
73
|
|
- this.isLoading = true;
|
74
|
|
- this.mainService
|
75
|
|
- .getFetchDataList("simple/data", "inspectionNode", data)
|
76
|
|
- .subscribe((data) => {
|
77
|
|
- this.isLoading = false;
|
78
|
|
- if (data.status == 200) {
|
79
|
|
- let addressList = data.list || [];
|
80
|
|
- // 楼栋
|
81
|
|
- let buildingList = addressList.map((item) => {
|
82
|
|
- return {
|
83
|
|
- title: item.buildingDTO.buildingName,
|
84
|
|
- key: 'b-' + item.buildingDTO.id,
|
85
|
|
- children: [],
|
86
|
|
- selectable: false,
|
87
|
|
- hosId: this.currentHospital.id,
|
88
|
|
- }
|
89
|
|
- })
|
90
|
|
- buildingList = uniqBy(buildingList, "key");
|
91
|
|
- // 巡检点
|
92
|
|
- addressList = addressList.map((item) => {
|
93
|
|
- return {
|
94
|
|
- title: item.name,
|
95
|
|
- key: item.id.toString(),
|
96
|
|
- parentId: 'b-' + item.buildingDTO.id,
|
97
|
|
- isLeaf: true,
|
98
|
|
- selectable: false,
|
99
|
|
- hosId: this.currentHospital.id,
|
100
|
|
- }
|
101
|
|
- })
|
102
|
|
- let buildingAndAddressList = buildingList.concat(addressList);
|
103
|
|
- console.log(buildingAndAddressList);
|
104
|
|
- this.buildingAndAddressList = this.tool.tranListToTreeData(buildingAndAddressList, undefined, "parentId", "key");
|
105
|
|
- console.log(this.buildingAndAddressList);
|
106
|
|
- }else{
|
107
|
|
- this.message.error(data.msg || "请求数据失败");
|
108
|
|
- }
|
109
|
|
- });
|
|
108
|
+
|
|
109
|
+ return this.mainService.getFetchDataList("simple/data", "inspectionNode", data)
|
110
|
110
|
}
|
111
|
111
|
|
112
|
112
|
nzCheck(event: NzFormatEmitEvent): void {
|
|
@@ -188,7 +188,7 @@ export class InspectionPlanConfigComponent implements OnInit, AfterViewInit {
|
188
|
188
|
menuId: 414,
|
189
|
189
|
},
|
190
|
190
|
idx: 0,
|
191
|
|
- sum: 20,
|
|
191
|
+ sum: 10,
|
192
|
192
|
};
|
193
|
193
|
this.mainService
|
194
|
194
|
.getFetchDataList("data", "user", postData)
|
|
@@ -208,7 +208,7 @@ export class InspectionPlanConfigComponent implements OnInit, AfterViewInit {
|
208
|
208
|
type: 1,
|
209
|
209
|
},
|
210
|
210
|
idx: 0,
|
211
|
|
- sum: 20,
|
|
211
|
+ sum: 10,
|
212
|
212
|
};
|
213
|
213
|
this.mainService
|
214
|
214
|
.getFetchDataList("data", "group2", postData)
|
|
@@ -226,36 +226,129 @@ export class InspectionPlanConfigComponent implements OnInit, AfterViewInit {
|
226
|
226
|
this.activeAddress = event.node;
|
227
|
227
|
this.activeAddressId = event.selectedKeys[0];
|
228
|
228
|
this.activeAddress.origin.radioValue = event.node.origin.userId ? 1 : (event.node.origin.groupId ? 2 : undefined);
|
|
229
|
+ if(event.node.origin.userId){
|
|
230
|
+ let flag = this.userList.find(v => v.id === event.node.origin.userId);
|
|
231
|
+ if(!flag){
|
|
232
|
+ this.userList.unshift({ id: event.node.origin.userId, name: event.node.origin.userName })
|
|
233
|
+ }
|
|
234
|
+ }
|
|
235
|
+
|
|
236
|
+ if(event.node.origin.groupId){
|
|
237
|
+ let flag = this.groupList.find(v => v.id === event.node.origin.groupId);
|
|
238
|
+ if(!flag){
|
|
239
|
+ this.groupList.unshift({ id: event.node.origin.groupId, groupName: event.node.origin.groupName })
|
|
240
|
+ }
|
|
241
|
+ }
|
229
|
242
|
}
|
230
|
243
|
|
231
|
244
|
// 计划详情
|
232
|
245
|
planDetail:any = {};
|
233
|
|
- nodeList:any[] = [];
|
234
|
246
|
getPlanDetail(){
|
|
247
|
+ return this.mainService.getFetchData("simple/data", "inspection", +this.route.snapshot.paramMap.get('id'));
|
|
248
|
+ }
|
|
249
|
+
|
|
250
|
+ // 标签
|
|
251
|
+ tagList:any = [];
|
|
252
|
+ getTagList(){
|
|
253
|
+ let postData = {
|
|
254
|
+ idx: 0,
|
|
255
|
+ sum: 99,
|
|
256
|
+ tag: {
|
|
257
|
+ hosId: this.currentHospital.id,
|
|
258
|
+ onlyBind: 1,
|
|
259
|
+ modelType: { value: 'inspection' },
|
|
260
|
+ }
|
|
261
|
+ }
|
|
262
|
+ return this.mainService.getFetchDataList("simple/data", "tag", postData)
|
|
263
|
+ }
|
|
264
|
+
|
|
265
|
+ // 点击标签
|
|
266
|
+ clickTag(tag){
|
|
267
|
+ this.maskFlag = this.message.loading("正在加载中..", {
|
|
268
|
+ nzDuration: 0,
|
|
269
|
+ }).messageId;
|
|
270
|
+ let postData = {
|
|
271
|
+ inspectionNode: {
|
|
272
|
+ hosId: this.currentHospital.id,
|
|
273
|
+ tagIds: tag.id.toString(),
|
|
274
|
+ },
|
|
275
|
+ idx: 0,
|
|
276
|
+ sum: 9999,
|
|
277
|
+ };
|
235
|
278
|
this.mainService
|
236
|
|
- .getFetchData("simple/data", "inspection", +this.route.snapshot.paramMap.get('id'))
|
237
|
|
- .subscribe((data) => {
|
238
|
|
- this.planDetail = data.data || {};
|
239
|
|
- let nodeList = data.data ? (data.data.nodeList || []) : [];
|
240
|
|
- this.generateTree(nodeList);
|
|
279
|
+ .getFetchDataList("simple/data", "inspectionNode", postData)
|
|
280
|
+ .subscribe((result) => {
|
|
281
|
+ this.message.remove(this.maskFlag);
|
|
282
|
+ this.maskFlag = false;
|
|
283
|
+ let addressList = result.list || [];
|
|
284
|
+ let buildingAndAddressListCopy = this.generateList(addressList, true);
|
|
285
|
+ console.log(buildingAndAddressListCopy);
|
|
286
|
+ this.defaultCheckedKeys = buildingAndAddressListCopy.map(v => v.key).filter(v => !(/b-/.test(v)));
|
|
287
|
+ this.buildingAndAddressListCopy = this.tool.tranListToTreeData(buildingAndAddressListCopy, undefined, "parentId", "key");
|
|
288
|
+ console.log(this.buildingAndAddressListCopy);
|
241
|
289
|
});
|
242
|
290
|
}
|
243
|
291
|
|
244
|
292
|
// 回显树形结构
|
245
|
293
|
generateTree(nodeList){
|
246
|
|
- console.log('nodeList:' + nodeList);
|
|
294
|
+ console.log('nodeList:', nodeList);
|
247
|
295
|
let buildingAndAddressList = nodeList.map(v => ({
|
248
|
296
|
title: v.nodeId ? v.inspectionNodeDTO.name : v.buildingDTO.buildingName,
|
249
|
297
|
key: v.nodeId ? `${v.nodeId}` : `b-${v.buildId}`,
|
250
|
|
- parentId: v.buildId ? `b-${v.buildId}` : undefined,
|
|
298
|
+ parentId: v.nodeId ? `b-${v.buildId}` : undefined,
|
|
299
|
+ hosId: v.hosId,
|
|
300
|
+ children: [],
|
|
301
|
+ selectable: false,
|
|
302
|
+ isLeaf: Boolean(v.nodeId),
|
|
303
|
+ checked: false,
|
|
304
|
+ }));
|
|
305
|
+ this.defaultCheckedKeys = buildingAndAddressList.map(v => v.key).filter(v => !(/b-/.test(v)));
|
|
306
|
+ let buildingAndAddressListCopy = nodeList.map(v => ({
|
|
307
|
+ title: v.nodeId ? v.inspectionNodeDTO.name : v.buildingDTO.buildingName,
|
|
308
|
+ key: v.nodeId ? `${v.nodeId}` : `b-${v.buildId}`,
|
|
309
|
+ parentId: v.nodeId ? `b-${v.buildId}` : undefined,
|
251
|
310
|
userId: v.userId,
|
|
311
|
+ userName: v.userDTO ? v.userDTO.name : undefined,
|
252
|
312
|
groupId: v.groupId,
|
|
313
|
+ groupName: v.groupDTO ? v.groupDTO.name : undefined,
|
253
|
314
|
hosId: v.hosId,
|
254
|
315
|
children: [],
|
255
|
|
- selectable: false,
|
|
316
|
+ selectable: true,
|
256
|
317
|
isLeaf: Boolean(v.nodeId),
|
|
318
|
+ checked: false,
|
257
|
319
|
}));
|
258
|
|
- console.log('buildingAndAddressList:' + buildingAndAddressList);
|
|
320
|
+ console.log('buildingAndAddressList:', buildingAndAddressList);
|
|
321
|
+ this.buildingAndAddressListCopy = this.tool.tranListToTreeData(buildingAndAddressListCopy, undefined, "parentId", "key");
|
|
322
|
+ console.log('this.buildingAndAddressListCopy', this.buildingAndAddressListCopy);
|
|
323
|
+ }
|
|
324
|
+
|
|
325
|
+ // 处理巡检点数据
|
|
326
|
+ generateList(addressList, selectableFlag = false){
|
|
327
|
+ // 楼栋
|
|
328
|
+ let buildingList = addressList.map((item) => {
|
|
329
|
+ return {
|
|
330
|
+ title: item.buildingDTO.buildingName,
|
|
331
|
+ key: 'b-' + item.buildingDTO.id,
|
|
332
|
+ children: [],
|
|
333
|
+ selectable: selectableFlag,
|
|
334
|
+ hosId: this.currentHospital.id,
|
|
335
|
+ }
|
|
336
|
+ })
|
|
337
|
+ buildingList = uniqBy(buildingList, "key");
|
|
338
|
+ // 巡检点
|
|
339
|
+ addressList = addressList.map((item) => {
|
|
340
|
+ return {
|
|
341
|
+ title: item.name,
|
|
342
|
+ key: item.id.toString(),
|
|
343
|
+ parentId: 'b-' + item.buildingDTO.id,
|
|
344
|
+ isLeaf: true,
|
|
345
|
+ selectable: selectableFlag,
|
|
346
|
+ hosId: this.currentHospital.id,
|
|
347
|
+ }
|
|
348
|
+ })
|
|
349
|
+ let buildingAndAddressList = buildingList.concat(addressList);
|
|
350
|
+ console.log(buildingAndAddressList);
|
|
351
|
+ return buildingAndAddressList;
|
259
|
352
|
}
|
260
|
353
|
|
261
|
354
|
// 填写模板名称-确定
|
|
@@ -295,7 +388,7 @@ export class InspectionPlanConfigComponent implements OnInit, AfterViewInit {
|
295
|
388
|
this.message.success("保存成功");
|
296
|
389
|
this.router.navigateByUrl("/main/inspectionPlan");
|
297
|
390
|
} else {
|
298
|
|
- this.message.success(result.msg || '保存失败');
|
|
391
|
+ this.message.error(result.msg || '保存失败');
|
299
|
392
|
}
|
300
|
393
|
});
|
301
|
394
|
}
|
|
@@ -324,7 +417,65 @@ export class InspectionPlanConfigComponent implements OnInit, AfterViewInit {
|
324
|
417
|
|
325
|
418
|
// 保存
|
326
|
419
|
save(){
|
|
420
|
+ this.maskFlag = this.message.loading("正在加载中..", {
|
|
421
|
+ nzDuration: 0,
|
|
422
|
+ }).messageId;
|
|
423
|
+ let nodeList = this.tool.tranTreeToListData(this.buildingAndAddressListCopy).map(v => ({
|
|
424
|
+ nodeId: v.parentId ? Number(v.key) : undefined,
|
|
425
|
+ userId: v.userId,
|
|
426
|
+ groupId: v.groupId,
|
|
427
|
+ hosId: v.hosId,
|
|
428
|
+ buildId: v.parentId ? Number(v.parentId.replace(/b-/, '')): Number(v.key.replace(/b-/, '')),
|
|
429
|
+ }));
|
|
430
|
+ console.log(nodeList);
|
327
|
431
|
console.log('保存');
|
|
432
|
+ let postData = {
|
|
433
|
+ ...this.planDetail,
|
|
434
|
+ nodeList,
|
|
435
|
+ };
|
|
436
|
+ console.log(postData);
|
|
437
|
+ this.mainService
|
|
438
|
+ .simplePost("addData", "inspection", postData)
|
|
439
|
+ .subscribe((result) => {
|
|
440
|
+ this.message.remove(this.maskFlag);
|
|
441
|
+ this.maskFlag = false;
|
|
442
|
+ if (result.status == 200) {
|
|
443
|
+ this.message.success("保存成功");
|
|
444
|
+ this.router.navigateByUrl("/main/inspectionPlan");
|
|
445
|
+ } else {
|
|
446
|
+ this.message.error(result.msg || '保存失败');
|
|
447
|
+ }
|
|
448
|
+ });
|
|
449
|
+ }
|
|
450
|
+
|
|
451
|
+ // 引入模板
|
|
452
|
+ inspectionTemplatePromptModalShow = false;
|
|
453
|
+ showInspectionTemplate() {
|
|
454
|
+ this.inspectionTemplatePromptModalShow = true;
|
|
455
|
+ }
|
|
456
|
+ // 关闭弹窗
|
|
457
|
+ closeModelInspectionTemplate(e) {
|
|
458
|
+ this.inspectionTemplatePromptModalShow = JSON.parse(e).show;
|
|
459
|
+ }
|
|
460
|
+ // 确认弹窗
|
|
461
|
+ confirmModelInspectionTemplate(tempId) {
|
|
462
|
+ this.inspectionTemplatePromptModalShow = false;
|
|
463
|
+ this.maskFlag = this.message.loading("正在加载中..", {
|
|
464
|
+ nzDuration: 0,
|
|
465
|
+ }).messageId;
|
|
466
|
+ let postData = {
|
|
467
|
+ idx: 0,
|
|
468
|
+ sum: 9999,
|
|
469
|
+ inspectionTempNodes: {
|
|
470
|
+ tempId,
|
|
471
|
+ }
|
|
472
|
+ }
|
|
473
|
+ this.mainService.getFetchDataList("simple/data", "inspectionTempNodes", postData).subscribe((result:any) => {
|
|
474
|
+ this.message.remove(this.maskFlag);
|
|
475
|
+ this.maskFlag = false;
|
|
476
|
+ let nodeList = result.list || [];
|
|
477
|
+ this.generateTree(nodeList);
|
|
478
|
+ })
|
328
|
479
|
}
|
329
|
480
|
|
330
|
481
|
ngAfterViewInit(): void {
|