|
@@ -13,6 +13,7 @@ import { ToolService } from "../../services/tool.service";
|
13
|
13
|
import { Subject } from "rxjs";
|
14
|
14
|
import { debounceTime } from "rxjs/operators";
|
15
|
15
|
import { NzMessageService } from "ng-zorro-antd";
|
|
16
|
+import { format } from "date-fns";
|
16
|
17
|
@Component({
|
17
|
18
|
selector: "app-round-robin",
|
18
|
19
|
templateUrl: "./round-robin.component.html",
|
|
@@ -42,7 +43,13 @@ export class RoundRobinComponent implements OnInit {
|
42
|
43
|
endDepartment: null,
|
43
|
44
|
};
|
44
|
45
|
roundRobinTypes = []; //轮巡类型
|
45
|
|
- roundRobinStrategys = [{ id: "381", hosName: "每天轮巡" }]; //轮巡类型
|
|
46
|
+ timeSteps = [
|
|
47
|
+ // { id: "381", name: "每天轮巡" },
|
|
48
|
+ { key: "day", name: "每天" },
|
|
49
|
+ { key: "week", name: "每周" },
|
|
50
|
+ { key: "month", name: "每月" },
|
|
51
|
+ { key: "year", name: "每年" },
|
|
52
|
+ ]; //轮巡类型
|
46
|
53
|
createUser = "";
|
47
|
54
|
dayType = ["全部", "节假日", "工作日"]; //执行策略里的复选框数据字典
|
48
|
55
|
department = []; // 院区下的科室列表
|
|
@@ -154,7 +161,7 @@ export class RoundRobinComponent implements OnInit {
|
154
|
161
|
selectedTasktypeHandler(e) {
|
155
|
162
|
this.selectedTasktype = this.roundRobinTypes.find((item) => item.id == e);
|
156
|
163
|
this.requiredChange(
|
157
|
|
- this.selectedTasktype.associationType.id == 380,
|
|
164
|
+ this.selectedTasktype.associationType.value == "specimenPlan",
|
158
|
165
|
"endDepartment"
|
159
|
166
|
);
|
160
|
167
|
console.log(this.selectedTasktype);
|
|
@@ -255,6 +262,20 @@ export class RoundRobinComponent implements OnInit {
|
255
|
262
|
if (data.status == 200) {
|
256
|
263
|
this.listOfData = data.list;
|
257
|
264
|
this.listLength = data.totalNum;
|
|
265
|
+ this.listOfData.forEach((item) => {
|
|
266
|
+ if (item.timeStep == "week") {
|
|
267
|
+ let weeks = [
|
|
268
|
+ "周一",
|
|
269
|
+ "周二",
|
|
270
|
+ "周三",
|
|
271
|
+ "周四",
|
|
272
|
+ "周五",
|
|
273
|
+ "周六",
|
|
274
|
+ "周日",
|
|
275
|
+ ];
|
|
276
|
+ item.weekName = weeks[item.extra1 - 1];
|
|
277
|
+ }
|
|
278
|
+ });
|
258
|
279
|
}
|
259
|
280
|
});
|
260
|
281
|
}
|
|
@@ -317,18 +338,52 @@ export class RoundRobinComponent implements OnInit {
|
317
|
338
|
this.validateForm = this.fb.group({
|
318
|
339
|
roundRobinName: [null, [Validators.required]],
|
319
|
340
|
roundRobinType: [null, [Validators.required]],
|
320
|
|
- roundRobinStrategy: [null, [Validators.required]],
|
|
341
|
+ timeStep: [null, [Validators.required]],
|
321
|
342
|
datesType: [null, [this.dateValidator]],
|
322
|
|
- executionTime: [null, [Validators.required]],
|
323
|
|
- time: [null],
|
|
343
|
+ executeTime: [null, [Validators.required]],
|
|
344
|
+ // executionTime: [null, [Validators.required]],
|
|
345
|
+ // time: [null],
|
324
|
346
|
endDepartment: [null, [Validators.required]],
|
325
|
347
|
openDepartments: [false],
|
326
|
348
|
});
|
327
|
|
- this.validateForm.controls.roundRobinStrategy.setValue(
|
328
|
|
- this.roundRobinStrategys[0].id
|
329
|
|
- );
|
|
349
|
+ this.validateForm.controls.timeStep.setValue(this.timeSteps[0].key);
|
330
|
350
|
this.timeSelectedValue = [];
|
331
|
351
|
}
|
|
352
|
+ // 修改轮巡策略
|
|
353
|
+ months = [...Array(32).keys()].slice(1);
|
|
354
|
+ timeStepChange(e) {
|
|
355
|
+ switch (e) {
|
|
356
|
+ case "day":
|
|
357
|
+ this.validateForm.removeControl("doWeek");
|
|
358
|
+ this.validateForm.removeControl("doMonth");
|
|
359
|
+ this.validateForm.removeControl("doYear");
|
|
360
|
+ break;
|
|
361
|
+ case "week":
|
|
362
|
+ this.validateForm.addControl(
|
|
363
|
+ "doWeek",
|
|
364
|
+ new FormControl(null, Validators.required)
|
|
365
|
+ );
|
|
366
|
+ this.validateForm.removeControl("doMonth");
|
|
367
|
+ this.validateForm.removeControl("doYear");
|
|
368
|
+ break;
|
|
369
|
+ case "month":
|
|
370
|
+ this.validateForm.addControl(
|
|
371
|
+ "doMonth",
|
|
372
|
+ new FormControl(null, Validators.required)
|
|
373
|
+ );
|
|
374
|
+ this.validateForm.removeControl("doWeek");
|
|
375
|
+ this.validateForm.removeControl("doYear");
|
|
376
|
+ break;
|
|
377
|
+ case "year":
|
|
378
|
+ this.validateForm.addControl(
|
|
379
|
+ "doYear",
|
|
380
|
+ new FormControl(null, Validators.required)
|
|
381
|
+ );
|
|
382
|
+ this.validateForm.removeControl("doWeek");
|
|
383
|
+ this.validateForm.removeControl("doMonth");
|
|
384
|
+ break;
|
|
385
|
+ }
|
|
386
|
+ }
|
332
|
387
|
|
333
|
388
|
//创建自定义校验规则dateValidator,用于复选框组校验时调用。
|
334
|
389
|
selectedDate: any = [];
|
|
@@ -372,63 +427,66 @@ export class RoundRobinComponent implements OnInit {
|
372
|
427
|
this.btnLoading = false;
|
373
|
428
|
return;
|
374
|
429
|
}
|
375
|
|
- let data: any = {};
|
|
430
|
+ let postData: any = {};
|
376
|
431
|
|
377
|
432
|
if (this.add) {
|
378
|
433
|
//增加
|
379
|
|
- data = {
|
|
434
|
+ postData = {
|
380
|
435
|
orderPlan: {
|
381
|
436
|
title: this.validateForm.value.roundRobinName,
|
382
|
437
|
hospital: this.hosId,
|
383
|
438
|
taskType: { id: this.validateForm.value.roundRobinType },
|
384
|
|
- timePlan: {
|
385
|
|
- id: this.validateForm.value.roundRobinStrategy,
|
386
|
|
- },
|
|
439
|
+ timeStep: this.validateForm.value.timeStep,
|
387
|
440
|
dayType: this.validateForm.value.datesType,
|
388
|
|
- orderPlanTimeShow: this.validateForm.value.executionTime,
|
|
441
|
+ executeTime: new Date(this.validateForm.value.executeTime).getTime(),
|
389
|
442
|
},
|
390
|
443
|
};
|
391
|
|
- if (this.selectedTasktype.associationType.id == 380) {
|
|
444
|
+ if (this.selectedTasktype.associationType.value == "specimenPlan") {
|
392
|
445
|
//标本轮巡
|
393
|
|
- data.orderPlan.targetDept =
|
|
446
|
+ postData.orderPlan.targetDept =
|
394
|
447
|
this.validateForm.value.endDepartment.join();
|
395
|
|
- } else if (this.selectedTasktype.associationType.id == 259) {
|
|
448
|
+ } else if (this.selectedTasktype.associationType.value == "other") {
|
396
|
449
|
//其他配送
|
397
|
|
- data.orderPlan.taskTypeDeptOrder =
|
|
450
|
+ postData.orderPlan.taskTypeDeptOrder =
|
398
|
451
|
this.validateForm.value.openDepartments;
|
399
|
452
|
}
|
400
|
453
|
} else {
|
401
|
454
|
//编辑
|
402
|
|
- let timeSelectedValue = JSON.parse(
|
403
|
|
- JSON.stringify(this.timeSelectedValue)
|
404
|
|
- );
|
405
|
|
- let diff =
|
406
|
|
- timeSelectedValue.sort().join("-") ===
|
407
|
|
- this.executionTimeTemporaryStorage.sort().join("-")
|
408
|
|
- ? []
|
409
|
|
- : this.timeSelectedValue;
|
410
|
|
- data = {
|
|
455
|
+ postData = {
|
411
|
456
|
id: this.coopId,
|
412
|
457
|
title: this.validateForm.value.roundRobinName,
|
413
|
458
|
hospital: this.hosId,
|
414
|
459
|
taskType: { id: this.validateForm.value.roundRobinType },
|
415
|
|
- timePlan: {
|
416
|
|
- id: this.validateForm.value.roundRobinStrategy,
|
417
|
|
- },
|
|
460
|
+ timeStep: this.validateForm.value.timeStep,
|
418
|
461
|
dayType: this.validateForm.value.datesType,
|
419
|
|
- orderPlanTimeShow: diff,
|
|
462
|
+ executeTime: new Date(this.validateForm.value.executeTime).getTime(),
|
420
|
463
|
};
|
421
|
|
- if (this.selectedTasktype.associationType.id == 380) {
|
|
464
|
+ if (this.selectedTasktype.associationType.value == "specimenPlan") {
|
422
|
465
|
//标本轮巡
|
423
|
|
- data.targetDept = this.validateForm.value.endDepartment.join();
|
424
|
|
- } else if (this.selectedTasktype.associationType.id == 259) {
|
|
466
|
+ postData.targetDept = this.validateForm.value.endDepartment.join();
|
|
467
|
+ } else if (this.selectedTasktype.associationType.value == "other") {
|
425
|
468
|
//其他配送
|
426
|
|
- data.taskTypeDeptOrder = this.validateForm.value.openDepartments;
|
|
469
|
+ postData.taskTypeDeptOrder = this.validateForm.value.openDepartments;
|
427
|
470
|
}
|
428
|
471
|
}
|
429
|
|
- console.log(data);
|
|
472
|
+ if (this.validateForm.value.timeStep == "day") {
|
|
473
|
+ delete postData.extra1;
|
|
474
|
+ } else if (this.validateForm.value.timeStep == "week") {
|
|
475
|
+ postData.extra1 = this.validateForm.value.doWeek;
|
|
476
|
+ } else if (this.validateForm.value.timeStep == "month") {
|
|
477
|
+ postData.extra1 = this.validateForm.value.doMonth;
|
|
478
|
+ } else if (this.validateForm.value.timeStep == "year") {
|
|
479
|
+ delete postData.extra1;
|
|
480
|
+ postData.executeTime = new Date(
|
|
481
|
+ format(new Date(this.validateForm.value.doYear), "yyyy-MM-dd") +
|
|
482
|
+ " " +
|
|
483
|
+ format(new Date(this.validateForm.value.executeTime), "HH:mm:ss")
|
|
484
|
+ ).getTime();
|
|
485
|
+ }
|
|
486
|
+ console.log(postData);
|
|
487
|
+ return; //baba
|
430
|
488
|
this.mainService
|
431
|
|
- .addRoundRobin(this.add ? "addPlan" : "updatePlan", data)
|
|
489
|
+ .addRoundRobin(this.add ? "addPlan" : "updatePlan", postData)
|
432
|
490
|
.subscribe((data) => {
|
433
|
491
|
this.btnLoading = false;
|
434
|
492
|
this.hideAddModal();
|
|
@@ -449,7 +507,7 @@ export class RoundRobinComponent implements OnInit {
|
449
|
507
|
maskFlagLoading2 = false;
|
450
|
508
|
edit(data) {
|
451
|
509
|
this.requiredChange(
|
452
|
|
- data.taskType.associationType.id == 380,
|
|
510
|
+ data.taskType.associationType.value == "specimenPlan",
|
453
|
511
|
"endDepartment"
|
454
|
512
|
);
|
455
|
513
|
this.maskFlag = this.message.loading("正在加载中..", {
|
|
@@ -461,7 +519,7 @@ export class RoundRobinComponent implements OnInit {
|
461
|
519
|
this.coopId = data.id;
|
462
|
520
|
this.createUser = data.createUser ? data.createUser.name : ""; //创建人
|
463
|
521
|
this.validateForm.controls.roundRobinName.setValue(data.title); //名称
|
464
|
|
- // 轮巡类型
|
|
522
|
+ // 轮巡类型 start
|
465
|
523
|
{
|
466
|
524
|
this.selectedTasktype = data.taskType;
|
467
|
525
|
let postData = {
|
|
@@ -496,19 +554,22 @@ export class RoundRobinComponent implements OnInit {
|
496
|
554
|
}
|
497
|
555
|
});
|
498
|
556
|
}
|
499
|
|
- // 轮巡类型
|
500
|
|
- this.validateForm.controls.roundRobinStrategy.setValue(
|
501
|
|
- this.roundRobinStrategys[0].id
|
502
|
|
- ); //轮巡策略
|
503
|
|
- this.defaultSelectTimesOption = JSON.parse(
|
504
|
|
- JSON.stringify(data.orderPlanTimeShow)
|
505
|
|
- ); //轮巡策略(时间)
|
506
|
|
- this.timeSelectedValue = JSON.parse(JSON.stringify(data.orderPlanTimeShow)); //轮巡策略(时间)
|
507
|
|
- this.executionTimeTemporaryStorage = JSON.parse(
|
508
|
|
- JSON.stringify(data.orderPlanTimeShow)
|
509
|
|
- ); //轮巡策略(时间暂存)
|
|
557
|
+ // 轮巡类型end
|
|
558
|
+ this.validateForm.controls.timeStep.setValue(data.timeStep); //轮巡策略
|
|
559
|
+ this.defaultSelectTimesOption = data.executeTime;
|
|
560
|
+ //轮巡策略(时间) start
|
|
561
|
+ if (data.timeStep == "year") {
|
|
562
|
+ this.validateForm.controls.doYear.setValue(
|
|
563
|
+ format(data.executeTime, "yyyy-MM-dd HH:mm:ss")
|
|
564
|
+ );
|
|
565
|
+ } else if (data.timeStep == "month") {
|
|
566
|
+ this.validateForm.controls.doMonth.setValue(data.extra1);
|
|
567
|
+ } else if (data.timeStep == "week") {
|
|
568
|
+ this.validateForm.controls.doWeek.setValue(data.extra1);
|
|
569
|
+ }
|
|
570
|
+ //轮巡策略(时间)end
|
510
|
571
|
// --------终点科室---
|
511
|
|
- if (data.taskType.associationType.id == 380) {
|
|
572
|
+ if (data.taskType.associationType.value == "specimenPlan") {
|
512
|
573
|
//标本轮巡,则回显
|
513
|
574
|
let targetDeptArr = [];
|
514
|
575
|
let targetDept = data.targetDept.split(",");
|
|
@@ -550,7 +611,7 @@ export class RoundRobinComponent implements OnInit {
|
550
|
611
|
}
|
551
|
612
|
// --------/终点科室---
|
552
|
613
|
if (
|
553
|
|
- data.taskType.associationType.id == 259 &&
|
|
614
|
+ data.taskType.associationType.value == "other" &&
|
554
|
615
|
(data.taskType.carryingCourses[0].departmentStrategy.value == 1 ||
|
555
|
616
|
data.taskType.carryingCourses[1].departmentStrategy.value == 1)
|
556
|
617
|
) {
|