seimin 1 miesiąc temu
rodzic
commit
8a08443d98
15 zmienionych plików z 994 dodań i 31 usunięć
  1. 56 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.component.html
  2. 683 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.component.less
  3. 144 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.component.ts
  4. 20 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.module.ts
  5. 6 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.html
  6. 5 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.ts
  7. 2 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect.module.ts
  8. 8 0
      src/app/components/configurationCenter/configuration-message/configuration-message.component.ts
  9. 21 21
      src/app/views/drug-search/drug-search.component.ts
  10. 5 0
      src/app/views/inspect-and-patient-transport-config/inspect-and-patient-transport-config.component.html
  11. 6 0
      src/app/views/inspect-and-patient-transport-config/inspect-and-patient-transport-config.component.ts
  12. 8 0
      src/app/views/inspect-info-config/inspect-info-config-routing.module.ts
  13. 17 7
      src/app/views/inspect-info-config/inspect-info-config.component.html
  14. 4 3
      src/app/views/inspect-info-config/inspect-info-config.component.less
  15. 9 0
      src/app/views/inspect-info-config/inspect-info-config.component.ts

+ 56 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.component.html

@@ -0,0 +1,56 @@
1
+<div class="TaskTypeManagement">
2
+  <div class="taskTypeInfo">
3
+    <div class="top">
4
+      <div class="item" (click)="tabModal('characteristics')" [ngClass]="{'items':tabModalName=='characteristics'}">
5
+        特性配置
6
+      </div>
7
+      <div class="item" (click)="tabModal('automaticOrderCreation')" [ngClass]="{'items':tabModalName=='automaticOrderCreation'}">
8
+        自动建单配置
9
+      </div>
10
+    </div>
11
+    <ng-container *ngFor="let item of dictionaryKeyList">
12
+      <div class="list" *ngIf="!loading && activeDictionaryKey.id === item.id">
13
+        <!-- 特性配置 -->
14
+        <div *ngIf="tabModalName=='characteristics'">
15
+          <!-- 是否开启批量患者回科 -->
16
+          <div class="display_flex align-items_center mb8">
17
+            <nz-form-label class="label">是否开启批量患者回科</nz-form-label>
18
+            <nz-checkbox-group [(ngModel)]="item.postData.batchPatientBackDept" (ngModelChange)="changeBatchPatientBackDept($event)"></nz-checkbox-group>
19
+          </div>
20
+          <ng-container *ngIf="item.postData.batchPatientBackDept[0].checked">
21
+            <!-- 批量患者回科确认方式 -->
22
+            <div class="display_flex align-items_center mb8">
23
+              <nz-form-label class="label" nzRequired>批量患者回科确认方式</nz-form-label>
24
+              <nz-radio-group [(ngModel)]="item.postData.batchPatientCheckType" (ngModelChange)="changeBatchPatientCheckType($event)">
25
+                <label nz-radio [nzValue]="0">无</label>
26
+                <label nz-radio [nzValue]="1">科室码</label>
27
+                <label nz-radio [nzValue]="2">动态码</label>
28
+                <label nz-radio [nzValue]="3">输入工号</label>
29
+              </nz-radio-group>
30
+            </div>
31
+            <!-- 是否支持动态密钥 -->
32
+            <div class="display_flex align-items_center mb8" *ngIf="item.postData.batchPatientCheckType == 1 || item.postData.batchPatientCheckType == 2">
33
+              <nz-form-label class="label">是否支持动态密钥</nz-form-label>
34
+              <nz-checkbox-group [(ngModel)]="item.postData.batchPatientDynamicKey"></nz-checkbox-group>
35
+            </div>
36
+          </ng-container>
37
+        </div>
38
+        <!-- 自动建单配置 -->
39
+        <div *ngIf="tabModalName=='automaticOrderCreation'">
40
+          <!-- 自动建单 -->
41
+        </div>
42
+        <div class="bottom">
43
+          <button class="login-form-button" nzType="primary" [nzLoading]="btnLoading" nz-button (click)="submitForm()">保存</button>
44
+        </div>
45
+      </div>
46
+    </ng-container>
47
+    <div class="list" *ngIf="loading">
48
+      <div class="loadingFull display_flex justify-content_flex-center align-items_center">
49
+        <div class="loadingFullInner">
50
+          <img src="../../../assets/images/loading.gif" alt="">
51
+          <div>加载中...</div>
52
+        </div>
53
+      </div>
54
+    </div>
55
+  </div>
56
+</div>

+ 683 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.component.less

@@ -0,0 +1,683 @@
1
+@import "../../../../../../src/theme.less";
2
+:host {
3
+  .TaskTypeManagement {
4
+    height: calc(100vh - 136px);
5
+    background: #f9fafb;
6
+    overflow: hidden;
7
+    padding: 16px 20px;
8
+
9
+    .pagination {
10
+      margin-top: 14px;
11
+      margin-bottom: 14px;
12
+      bottom: 12px;
13
+      right: 5px;
14
+    }
15
+
16
+    .taskType {
17
+      float: left;
18
+      width: 24%;
19
+      height: 100%;
20
+      border: 1px solid #e5e9ed;
21
+      background: #fff;
22
+      color: #333;
23
+      font-size: 14px;
24
+      position: relative;
25
+      overflow: hidden;
26
+
27
+      .title {
28
+        width: 100%;
29
+        height: 40px;
30
+        line-height: 40px;
31
+        padding-left: 16px;
32
+        border-bottom: 1px solid #e5e9ed;
33
+        position: relative;
34
+        background: #fff;
35
+        z-index: 2;
36
+      }
37
+
38
+      .operate {
39
+        width: 100%;
40
+        border-bottom: 1px solid #e5e9ed;
41
+        position: relative;
42
+        background: #fff;
43
+        z-index: 2;
44
+        display: flex;
45
+
46
+        .item {
47
+          flex: 1;
48
+          height: 34px;
49
+          line-height: 34px;
50
+          border-right: 1px solid #e5e9ed;
51
+          text-align: center;
52
+          color: #666; // cursor: default;
53
+          cursor: pointer;
54
+
55
+          &:hover {
56
+            color: @primary-color;
57
+            background: #f0f6ed;
58
+          }
59
+
60
+          &:nth-last-child(1) {
61
+            border: none;
62
+          }
63
+        }
64
+      }
65
+
66
+      .taskTypes {
67
+        // width: 110%;
68
+        width: 100%;
69
+        height: 92%;
70
+        // padding-right: 10%;
71
+        overflow-y: auto;
72
+        z-index: 1;
73
+        padding-bottom: 30px;
74
+
75
+        .itemChoice {
76
+          color: @primary-color;
77
+          background: #f0f6ed;
78
+        }
79
+
80
+        .item {
81
+          width: 100%;
82
+          height: 34px;
83
+          line-height: 34px;
84
+          text-align: center;
85
+          cursor: pointer;
86
+          overflow: hidden;
87
+          text-overflow: ellipsis;
88
+          white-space: nowrap;
89
+
90
+          &:hover {
91
+            color: @primary-color;
92
+            background: #f0f6ed;
93
+          }
94
+
95
+          &.checked {
96
+            color: @primary-color;
97
+            background: #f0f6ed;
98
+          }
99
+        }
100
+      }
101
+    }
102
+
103
+    //任务类型管理-主体
104
+    .taskTypeInfo {
105
+      height: 100%;
106
+      border: 1px solid #e5e9ed;
107
+      background: #fff;
108
+      color: #333;
109
+      position: relative;
110
+
111
+      .top {
112
+        height: 61px;
113
+        line-height: 60px;
114
+        display: flex;
115
+        align-items: center;
116
+        border-bottom: 1px solid #e5e9ed;
117
+        position: relative;
118
+        z-index: 2;
119
+
120
+        .items {
121
+          background: #f0f6ed;
122
+        }
123
+
124
+        & > div {
125
+          border-right: 1px solid #e5e9ed;
126
+          width: 30%;
127
+          text-align: center; // display: flex;
128
+          // align-items: center;
129
+          cursor: pointer;
130
+
131
+          &:hover {
132
+            background: #f0f6ed;
133
+          }
134
+        }
135
+
136
+        &:nth-last-child(4) {
137
+          border: none;
138
+        }
139
+      }
140
+
141
+      .list {
142
+        width: 100%; // height: 100%;
143
+        padding: 16px; // position: absolute;
144
+        // top: 0;
145
+        // padding-top: 90px;
146
+        background: #fff;
147
+        height: 89%;
148
+        overflow: auto;
149
+
150
+        nz-form-label {
151
+          margin-left: 0px !important;
152
+        }
153
+
154
+        & > div {
155
+          background: #f9fafb;
156
+          border: 1px solid #e5e9ed;
157
+          border-radius: 10px 10px 0px 0px;
158
+          padding: 24px 120px;
159
+
160
+          .label {
161
+            margin-left: 16px;
162
+            font-size: 14px;
163
+            color: #333;
164
+          }
165
+        }
166
+
167
+        // 规则信息
168
+        .ruleList {
169
+          padding: 15px 15px 0px 15px;
170
+          background: #fff;
171
+
172
+          .table {
173
+            width: 100%;
174
+            height: 100%;
175
+
176
+            .box {
177
+              // background: #f9fafb;
178
+              // border: 1px solid #e5e9ed;
179
+              border-radius: 5px;
180
+              position: relative;
181
+
182
+              .table_title {
183
+                font-size: 18px;
184
+                margin: 14px 0px;
185
+                text-align: center;
186
+              }
187
+
188
+              .thead {
189
+                background-image: linear-gradient(to right, @bg-start, @bg-end);
190
+
191
+                th {
192
+                  background: transparent;
193
+                  color: #fff;
194
+                  text-align: center;
195
+                  font-size: 14px;
196
+                }
197
+              }
198
+
199
+              .ant-table-body {
200
+                border-bottom: 1px solid #e5e9ed;
201
+                background: #f9fafb;
202
+              }
203
+
204
+              .ant-table-tbody {
205
+                background: #f9fafb;
206
+                border: 1px solid #e5e9ed;
207
+
208
+                .zzBontton {
209
+                  & > td {
210
+                    border-bottom: 1px solid #e5e9ed;
211
+                  }
212
+                }
213
+
214
+                tr {
215
+                  text-align: center;
216
+                  font-size: 14px;
217
+                  border: none;
218
+                  color: #333;
219
+                  overflow: hidden;
220
+
221
+                  .lin {
222
+                    width: 68.2%;
223
+                    height: 2rem;
224
+                    border-bottom: 0.1rem solid #e5e9ed;
225
+                    position: absolute;
226
+                    text-align: center;
227
+                    margin-left: 0%;
228
+                    margin-top: -0.8%;
229
+                    transform: rotate(6.5deg);
230
+                  }
231
+
232
+                  td {
233
+                    border: none;
234
+
235
+                    nz-input-number {
236
+                      width: 50px;
237
+                    }
238
+
239
+                    .coop {
240
+                      .line {
241
+                        margin: 10px;
242
+                      }
243
+
244
+                      span:nth-child(2n-1) {
245
+                        cursor: pointer;
246
+
247
+                        &:hover {
248
+                          color: @primary-color;
249
+                        }
250
+
251
+                        &:active {
252
+                          color: @primary-color;
253
+                        }
254
+                      }
255
+                    }
256
+                  }
257
+                }
258
+
259
+                tr:nth-child(even) {
260
+                  background: #fff;
261
+                }
262
+              }
263
+            }
264
+          }
265
+        }
266
+
267
+        //运送过程
268
+        .ysgcItem {
269
+          padding: 0px 0px 0px 0px; // background: #fff;
270
+
271
+          .ysgc_top {
272
+            height: 88px;
273
+            background: #fff;
274
+            border-radius: 10px 10px 0px 0px;
275
+            padding: 15px 22px 0px 22px;
276
+
277
+            .title {
278
+              span {
279
+                font-size: 18px;
280
+              }
281
+            }
282
+
283
+            .carrItems {
284
+              color: @primary-color;
285
+              border-color: @primary-color !important;
286
+            }
287
+
288
+            .process {
289
+              width: 80%;
290
+              display: flex;
291
+              justify-content: center;
292
+              align-items: center;
293
+              margin: 5px auto;
294
+              font-size: 14px;
295
+
296
+              .carrItem {
297
+                height: 40px;
298
+                line-height: 28px;
299
+                cursor: pointer;
300
+                display: flex;
301
+                justify-content: center;
302
+                align-items: center;
303
+
304
+                .carrItem_icon {
305
+                  width: 35px;
306
+                  height: 35px;
307
+                  border: 1px solid #e5e9ed;
308
+                  border-radius: 50%;
309
+                  text-align: center;
310
+                  line-height: 35px;
311
+                  margin-right: 10px;
312
+
313
+                  i {
314
+                    font-size: 18px;
315
+                  }
316
+                }
317
+              }
318
+
319
+              .carrItem1 {
320
+                float: left;
321
+                width: 45%;
322
+                height: 40px;
323
+                line-height: 28px;
324
+                padding-left: 10%;
325
+                cursor: pointer;
326
+
327
+                .carrItem_icon {
328
+                  width: 35px;
329
+                  height: 35px;
330
+                  border: 1px solid #e5e9ed;
331
+                  border-radius: 50%;
332
+                  text-align: center;
333
+                  line-height: 35px;
334
+                  float: left;
335
+                  margin-right: 10px;
336
+
337
+                  i {
338
+                    font-size: 18px;
339
+                  }
340
+                }
341
+              }
342
+            }
343
+          }
344
+
345
+          .ysgc_cont {
346
+            padding: 0px 240px 24px 240px;
347
+
348
+            textarea {
349
+              padding-right: 10%;
350
+            }
351
+
352
+            .icon_btn {
353
+              cursor: pointer;
354
+              font-size: 18px;
355
+            }
356
+
357
+            .icon_text {
358
+              display: block;
359
+              cursor: pointer;
360
+              position: relative;
361
+              right: 5px;
362
+            }
363
+
364
+            .item_type_cont {
365
+              height: 70px;
366
+              padding-top: 4px;
367
+
368
+              & > div {
369
+                height: 65px;
370
+                border: 1px solid #e5e9ed;
371
+                border-radius: 5px;
372
+                background: #fff;
373
+
374
+                .item_type_cont_L {
375
+                  height: 100%;
376
+                  width: 90%;
377
+                  float: left;
378
+                  padding: 2px 12px;
379
+                  overflow: auto;
380
+
381
+                  .item_yq {
382
+                    width: 24%;
383
+                    height: 28px;
384
+                    display: inline-block;
385
+                    border: 1px solid #e5e9ed;
386
+                    border-radius: 20px;
387
+                    text-align: center;
388
+                    line-height: 26px;
389
+                    background: #f9fafb;
390
+                    margin-right: 1%;
391
+                    margin-bottom: 2px;
392
+                    font-size: 12px;
393
+                    padding-left: 8px;
394
+
395
+                    span {
396
+                      width: 75%;
397
+                      float: left;
398
+                      overflow: hidden;
399
+                      text-overflow: ellipsis;
400
+                      white-space: nowrap;
401
+                    }
402
+
403
+                    i {
404
+                      font-size: 14px;
405
+                      color: #999;
406
+                      cursor: pointer;
407
+                    }
408
+                  }
409
+                }
410
+
411
+                .item_type_cont_R {
412
+                  height: 100%;
413
+                  width: 10%;
414
+                  float: right;
415
+                  text-align: center;
416
+                  padding-top: 15px;
417
+                  border-left: 1px solid #e5e9ed;
418
+                  cursor: pointer;
419
+
420
+                  i {
421
+                    display: block;
422
+                    font-size: 16px;
423
+                  }
424
+
425
+                  i:hover {
426
+                    color: @primary-color;
427
+                  }
428
+
429
+                  .icon_text {
430
+                    right: 1px;
431
+                  }
432
+                }
433
+              }
434
+            }
435
+          }
436
+        }
437
+
438
+        //关联信息
439
+        .glxxItem {
440
+          padding: 10px 15px 0px 15px;
441
+          background: #fff;
442
+
443
+          .tab_btn {
444
+            cursor: pointer;
445
+          }
446
+
447
+          .tab_btn:hover {
448
+            color: @primary-color;
449
+          }
450
+
451
+          .table_title {
452
+            font-size: 18px;
453
+            margin: 14px 0px;
454
+            text-align: center;
455
+          }
456
+
457
+          .thead {
458
+            background-image: linear-gradient(to right, @bg-start, @bg-end);
459
+
460
+            th {
461
+              background: transparent;
462
+              color: #fff;
463
+              text-align: center;
464
+              font-size: 14px;
465
+            }
466
+          }
467
+
468
+          .ant-table-body {
469
+            // border-bottom: 1px solid #e5e9ed;
470
+            background: #f9fafb;
471
+          }
472
+
473
+          .ant-table-tbody {
474
+            background: #f9fafb;
475
+            border: 1px solid #e5e9ed;
476
+
477
+            tr {
478
+              text-align: center;
479
+              font-size: 14px;
480
+              border: none;
481
+              color: #333;
482
+
483
+              td {
484
+                border: none; // font-size: 14px;
485
+
486
+                nz-input-number {
487
+                  width: 40px;
488
+                }
489
+
490
+                .coop {
491
+                  .line {
492
+                    margin: 10px;
493
+                  }
494
+
495
+                  span:nth-child(2n-1) {
496
+                    cursor: pointer;
497
+
498
+                    &:hover {
499
+                      color: @primary-color;
500
+                    }
501
+
502
+                    &:active {
503
+                      color: @primary-color;
504
+                    }
505
+                  }
506
+                }
507
+              }
508
+            }
509
+
510
+            tr:nth-child(even) {
511
+              background: #fff;
512
+            }
513
+          }
514
+        }
515
+
516
+        // 开通科室
517
+        .ktksItem {
518
+          padding: 0px 0px 0px 0px;
519
+          background: #fff;
520
+
521
+          .top {
522
+            width: 100%; // padding-bottom: 7px;
523
+            // border-bottom: 1px solid #e5e9ed;
524
+            position: relative;
525
+            overflow: hidden;
526
+            z-index: 2;
527
+            display: flex;
528
+            align-items: center;
529
+            justify-content: space-between;
530
+
531
+            .top_L {
532
+              width: 70%;
533
+              text-align: left;
534
+              display: flex;
535
+              flex-wrap: wrap;
536
+              align-items: center;
537
+              padding: 0 4px;
538
+              .top_L_item {
539
+                margin-left: 4px;
540
+              }
541
+
542
+              .label {
543
+                font-size: 14px;
544
+                color: #333;
545
+                margin-left: 0;
546
+              }
547
+
548
+              nz-select {
549
+                font-size: 12px;
550
+                width: 100px;
551
+              }
552
+
553
+              input {
554
+                font-size: 12px;
555
+                width: 100px;
556
+              }
557
+            }
558
+
559
+            .top_R {
560
+              border: 0px;
561
+
562
+              .btn {
563
+                margin-left: 10px;
564
+              }
565
+            }
566
+          }
567
+
568
+          .ktksItemList {
569
+            padding: 10px 15px 0px 15px;
570
+            .table {
571
+              min-height: 528px;
572
+            }
573
+
574
+            .operate {
575
+              float: right;
576
+              margin-bottom: 5px;
577
+
578
+              span {
579
+                font-size: 14px;
580
+              }
581
+
582
+              .num {
583
+                font-size: 18px;
584
+                color: @primary-color;
585
+              }
586
+            }
587
+
588
+            .thead {
589
+              background-image: linear-gradient(to right, @bg-start, @bg-end);
590
+
591
+              th {
592
+                background: transparent;
593
+                color: #fff;
594
+                text-align: center;
595
+                font-size: 14px;
596
+              }
597
+            }
598
+
599
+            .ant-table-body {
600
+              border-bottom: 1px solid #e5e9ed;
601
+              background: #f9fafb;
602
+            }
603
+
604
+            .ant-table-tbody {
605
+              background: #f9fafb;
606
+              border: 1px solid #e5e9ed;
607
+
608
+              .zzBontton {
609
+                & > td {
610
+                  border-bottom: 1px solid #e5e9ed;
611
+                }
612
+              }
613
+
614
+              tr {
615
+                text-align: center;
616
+                font-size: 14px;
617
+                border: none;
618
+                color: #333;
619
+
620
+                td {
621
+                  border: none; // font-size: 14px;
622
+
623
+                  nz-input-number {
624
+                    width: 40px;
625
+                  }
626
+
627
+                  .coop {
628
+                    .line {
629
+                      margin: 10px;
630
+                    }
631
+
632
+                    span:nth-child(2n-1) {
633
+                      cursor: pointer;
634
+
635
+                      &:hover {
636
+                        color: @primary-color;
637
+                      }
638
+
639
+                      &:active {
640
+                        color: @primary-color;
641
+                      }
642
+                    }
643
+                  }
644
+                }
645
+              }
646
+
647
+              tr:nth-child(even) {
648
+                background: #fff;
649
+              }
650
+            }
651
+          }
652
+
653
+          .pagination {
654
+            margin-top: 25px;
655
+            margin-bottom: 14px;
656
+            bottom: 12px;
657
+            right: 5px;
658
+            position: relative;
659
+            height: 30px;
660
+            .page {
661
+              position: absolute;
662
+              right: 5px;
663
+            }
664
+          }
665
+        }
666
+
667
+        .bottom {
668
+          height: 60px;
669
+          border-radius: 0px 0px 10px 10px;
670
+          padding: 10px 240px 0px 240px;
671
+          border-top: 0px;
672
+
673
+          button {
674
+            width: 80px;
675
+            height: 34px;
676
+            display: block;
677
+            margin: 0 auto;
678
+          }
679
+        }
680
+      }
681
+    }
682
+  }
683
+}

+ 144 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.component.ts

@@ -0,0 +1,144 @@
1
+import { Component, OnInit, ViewChild, Input } from "@angular/core";
2
+import { ToolService } from 'src/app/services/tool.service';
3
+import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
4
+import { NzMessageService } from 'ng-zorro-antd';
5
+import { v4 as uuidv4, validate as uuidValidate } from 'uuid';
6
+import { addDays, startOfMinute, endOfMinute, set, getYear, getMonth, getDate, format } from 'date-fns';
7
+import { MainService } from 'src/app/services/main.service';
8
+
9
+@Component({
10
+  selector: "app-configuration-inspect-closed-loop",
11
+  templateUrl: "./configuration-inspect-closed-loop.component.html",
12
+  styleUrls: ["./configuration-inspect-closed-loop.component.less"],
13
+})
14
+export class ConfigurationInspectClosedLoopComponent implements OnInit {
15
+  @Input() activeDictionaryKey: any;
16
+  @Input() dictionaryKeyList: any;
17
+  constructor(
18
+    private mainService: MainService,
19
+    private tool: ToolService,
20
+    private message: NzMessageService,
21
+  ) {}
22
+
23
+  ngOnInit() {
24
+    this.tabModal('characteristics');
25
+    this.init();
26
+  }
27
+
28
+ tabModalName:string = 'characteristics'; //当前选中的tab
29
+ loading:boolean = false; //页面加载的loading
30
+ hosId = this.tool.getCurrentHospital().id; //当前院区
31
+ tasktype:any = {};// 任务类型
32
+ configs:any = {};// 配置
33
+ // 切换tab
34
+ tabModal(tabModalName:string){
35
+   this.tabModalName = tabModalName;
36
+ }
37
+
38
+ // 选择是否开启批量患者回科
39
+ changeBatchPatientBackDept(e){
40
+  if(!e[0].checked){
41
+    this.activeDictionaryKey.postData.batchPatientCheckType = 0;
42
+    this.activeDictionaryKey.postData.batchPatientDynamicKey[0].checked = false;
43
+  }
44
+ }
45
+
46
+ // 选择批量患者回科确认方式
47
+ changeBatchPatientCheckType(e){
48
+  this.activeDictionaryKey.postData.batchPatientDynamicKey[0].checked = false;
49
+ }
50
+
51
+ // 保存
52
+ btnLoading: boolean = false; //提交按钮loading状态
53
+ submitForm() {
54
+   if(!this.tasktype.id){
55
+     this.message.create("warning", "请先配置任务类型!");
56
+     return;
57
+   }
58
+
59
+   let postData:any = {
60
+     ...this.configs,
61
+     taskType: this.tasktype.id,
62
+     hosId: this.hosId,
63
+     batchPatientBackDept: this.activeDictionaryKey.postData.batchPatientBackDept[0].checked ? 1 : 0,
64
+     batchPatientCheckType: this.activeDictionaryKey.postData.batchPatientCheckType || 0,
65
+     batchPatientDynamicKey: this.activeDictionaryKey.postData.batchPatientDynamicKey[0].checked ? 1 : 0,
66
+   };
67
+   console.log(postData);
68
+   this.btnLoading = true;
69
+   this.mainService
70
+     .simplePost("addData", "taskTypeConfig", postData)
71
+     .subscribe((result) => {
72
+       this.btnLoading = false;
73
+       if (result.status == 200) {
74
+         this.message.success("保存成功!");
75
+         this.getConfig();
76
+       }else{
77
+         this.message.success("保存失败!");
78
+       }
79
+     });
80
+ }
81
+
82
+ //初始化
83
+ init() {
84
+   this.loading = true;
85
+   this.getTaskType();
86
+ }
87
+
88
+ //获取任务类型
89
+ getTaskType() {
90
+   this.loading = true;
91
+   let postData = {
92
+     idx: 0,
93
+     sum: 1,
94
+     taskType: {
95
+       simpleQuery: true,
96
+       hosId: {
97
+         id: this.hosId
98
+       },
99
+       associationType: {
100
+         key: 'association_types',
101
+         value: 'inspect',
102
+       }
103
+     }
104
+   };
105
+   this.mainService
106
+     .getFetchDataList("simple/data", "taskType", postData)
107
+     .subscribe((result) => {
108
+       this.loading = false;
109
+       if (result.status == 200) {
110
+         this.tasktype = result.list[0] || {};
111
+         this.getConfig();
112
+       }
113
+     });
114
+ }
115
+
116
+ // 获取配置
117
+ getConfig() {
118
+   this.loading = true;
119
+   let postData = {
120
+     idx: 0,
121
+     sum: 1,
122
+     taskTypeConfig: {
123
+       taskTypeDTO: {
124
+         hosId: {
125
+           id: this.hosId
126
+         },
127
+         associationType: this.tasktype.associationType,
128
+       }
129
+     }
130
+   };
131
+   this.mainService
132
+     .getFetchDataList("simple/data", "taskTypeConfig", postData)
133
+     .subscribe((result) => {
134
+       this.loading = false;
135
+       if (result.status == 200) {
136
+        this.configs = result.list[0] || {};
137
+
138
+        this.activeDictionaryKey.postData.batchPatientBackDept[0].checked = this.configs.batchPatientBackDept == 1;
139
+        this.activeDictionaryKey.postData.batchPatientCheckType = this.configs.batchPatientCheckType || 0;
140
+        this.activeDictionaryKey.postData.batchPatientDynamicKey[0].checked = this.configs.batchPatientDynamicKey == 1;
141
+       }
142
+     });
143
+ }
144
+}

+ 20 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect-closed-loop/configuration-inspect-closed-loop.module.ts

@@ -0,0 +1,20 @@
1
+import { NgModule } from '@angular/core';
2
+import { CommonModule } from '@angular/common';
3
+
4
+import { ConfigurationInspectClosedLoopComponent } from './configuration-inspect-closed-loop.component';
5
+import { ShareModule } from 'src/app/share/share.module';
6
+
7
+
8
+@NgModule({
9
+  declarations: [
10
+    ConfigurationInspectClosedLoopComponent,
11
+  ],
12
+  imports: [
13
+    CommonModule,
14
+    ShareModule,
15
+  ],
16
+  exports: [
17
+    ConfigurationInspectClosedLoopComponent,
18
+  ]
19
+})
20
+export class ConfigurationInspectClosedLoopModule { }

+ 6 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.html

@@ -64,6 +64,12 @@
64 64
           <app-configuration-inspect-inspects></app-configuration-inspect-inspects>
65 65
         </div>
66 66
       </ng-container>
67
+      <!-- 陪检闭环 -->
68
+      <ng-container *ngIf="activeDictionaryKey.id == 4">
69
+        <div class="contentBody2">
70
+          <app-configuration-inspect-closed-loop [activeDictionaryKey]="activeDictionaryKey" [dictionaryKeyList]="dictionaryKeyList"></app-configuration-inspect-closed-loop>
71
+        </div>
72
+      </ng-container>
67 73
     </div>
68 74
   </div>
69 75
 </div>

+ 5 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.ts

@@ -61,6 +61,11 @@ export class ConfigurationInspectComponent implements OnInit {
61 61
       ib2DefaultDayEnd: [{ label:'+1天', value: 0 }],
62 62
     }},
63 63
     { id: 3, name: '检查项目', key: ""},
64
+    { id: 4, name: '陪检闭环', key: "", postData: {
65
+      batchPatientBackDept: [{ label:'是否开启批量患者回科', value: 0 }],
66
+      batchPatientCheckType: 0,
67
+      batchPatientDynamicKey: [{ label:'是否支持动态密钥', value: 0 }],
68
+    }},
64 69
   ]
65 70
 
66 71
   // 点击数据字典key

+ 2 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect.module.ts

@@ -5,6 +5,7 @@ import { ConfigurationInspectComponent } from './configuration-inspect.component
5 5
 import { ShareModule } from '../../../share/share.module';
6 6
 import { ConfigurationInspectBatchModule } from './configuration-inspect-batch/configuration-inspect-batch.module';
7 7
 import { ConfigurationInspectInspectsModule } from './configuration-inspect-inspects/configuration-inspect-inspects.module';
8
+import { ConfigurationInspectClosedLoopModule } from './configuration-inspect-closed-loop/configuration-inspect-closed-loop.module';
8 9
 
9 10
 
10 11
 @NgModule({
@@ -16,6 +17,7 @@ import { ConfigurationInspectInspectsModule } from './configuration-inspect-insp
16 17
     ShareModule,
17 18
     ConfigurationInspectBatchModule,
18 19
     ConfigurationInspectInspectsModule,
20
+    ConfigurationInspectClosedLoopModule,
19 21
   ],
20 22
   exports: [
21 23
     ConfigurationInspectComponent,

+ 8 - 0
src/app/components/configurationCenter/configuration-message/configuration-message.component.ts

@@ -152,6 +152,14 @@ export class ConfigurationMessageComponent implements OnInit {
152 152
           "[$患者信息$]",
153 153
           "[$删除原因$]",
154 154
         ];
155
+      }else if(data.noticeCode === 'pil_sign_user2'){
156
+        // 陪检签到通知驻点人员
157
+        this.varArr = [
158
+          "[$患者清单$]",
159
+          "[$签到人$]",
160
+          "[$签到科室$]",
161
+          "[$签到时间$]",
162
+        ];
155 163
       }
156 164
 
157 165
       this.currentIndex = 1;

+ 21 - 21
src/app/views/drug-search/drug-search.component.ts

@@ -15,7 +15,7 @@ import { FormBuilder, Validators, FormGroup, FormControl } from "@angular/forms"
15 15
 export class DrugSearchComponent implements OnInit {
16 16
   constructor(
17 17
 	private fb: FormBuilder,
18
-	private mainService: MainService, 
18
+	private mainService: MainService,
19 19
 	private tool: ToolService,
20 20
 	private router: Router,
21 21
 	private route: ActivatedRoute
@@ -43,7 +43,7 @@ export class DrugSearchComponent implements OnInit {
43 43
 	changeUserInpSubject = new Subject();
44 44
 	coopBtns:any;
45 45
 	validateForm: FormGroup; //新增/编辑表单
46
-	
46
+
47 47
   ngOnInit() {
48 48
 		this.coopBtns = this.tool.initCoopBtns(this.route);
49 49
 		this.changeSearchSubject.pipe(debounceTime(500)).subscribe((v) => {
@@ -132,7 +132,7 @@ export class DrugSearchComponent implements OnInit {
132 132
       this.searchTypes();
133 133
     }
134 134
   }
135
-	
135
+
136 136
 	// 获取药品类型
137 137
 	drugsList:any = [];
138 138
 	getDrugsList(){
@@ -140,7 +140,7 @@ export class DrugSearchComponent implements OnInit {
140 140
 		  this.drugsList = res;
141 141
 		});
142 142
 	}
143
-	
143
+
144 144
 	//获取用户
145 145
 	userSearch:any = [];
146 146
 	searchUser(keyword) {
@@ -164,13 +164,13 @@ export class DrugSearchComponent implements OnInit {
164 164
 	      }
165 165
 	    });
166 166
 	}
167
-	
167
+
168 168
 	// 搜索用户
169 169
 	changeUserInp(e){
170 170
 		this.isLoading = true;
171 171
 		this.changeUserInpSubject.next(e);
172 172
 	}
173
-	
173
+
174 174
 	// 日期选择
175 175
 	startDate: string; //发起时间开始
176 176
 	endDate: string; //发起时间结束
@@ -183,7 +183,7 @@ export class DrugSearchComponent implements OnInit {
183 183
 		this.endDate = format(result[1], 'yyyy-MM-dd HH:mm:ss');
184 184
 	  this.searchCriteria.dateRange = [this.startDate,this.endDate]
185 185
 	}
186
-	
186
+
187 187
 	onCalendarChangeDate(dateArr){
188 188
 	  console.log(dateArr)
189 189
 	  if(dateArr.length == 2){
@@ -194,7 +194,7 @@ export class DrugSearchComponent implements OnInit {
194 194
 	    this.searchCriteria.dateRange = [dateStart,dateEnd];
195 195
 	  }
196 196
 	}
197
-	
197
+
198 198
   // 重置
199 199
   reset() {
200 200
     this.searchCriteria = {
@@ -271,7 +271,7 @@ export class DrugSearchComponent implements OnInit {
271 271
         }
272 272
       });
273 273
   }
274
-	
274
+
275 275
 	getDept(dept){
276 276
 		let postData = {
277 277
 		  department: {
@@ -292,7 +292,7 @@ export class DrugSearchComponent implements OnInit {
292 292
 		    }
293 293
 		  });
294 294
 	}
295
-	
295
+
296 296
 	// 查看
297 297
 	detail(e, data) {
298 298
 		if(!data.workOrderDTO){
@@ -301,7 +301,7 @@ export class DrugSearchComponent implements OnInit {
301 301
 	  e.stopPropagation();
302 302
 	  this.router.navigateByUrl("/main/drugSearch/orderDetail/" + data.workOrderDTO.id);
303 303
 	}
304
-	
304
+
305 305
 	// 新增弹框
306 306
 	modal:boolean = false;
307 307
 	add:boolean = false;
@@ -317,13 +317,13 @@ export class DrugSearchComponent implements OnInit {
317 317
 	  this.modal = false;
318 318
 	  this.initForm();
319 319
 	}
320
-	
320
+
321 321
 	// 搜索科室
322 322
 	changeDept(dept, type){
323 323
 		this.isLoading = true;
324 324
 		this.changeInpSubject.next([dept, type]);
325 325
 	}
326
-	
326
+
327 327
 	// 初始化新增form表单
328 328
 	initForm() {
329 329
 	  this.validateForm = this.fb.group({
@@ -336,14 +336,14 @@ export class DrugSearchComponent implements OnInit {
336 336
 			drugsBagType: [null, []],
337 337
 	  });
338 338
 	}
339
-	
339
+
340 340
 	// // 选择开始时间
341 341
 	onStartChange(result: Date): void {
342 342
 		console.log('Selected Time: ', result);
343 343
 		let startTime = format(result, 'yyyy-MM-dd HH:mm:ss');
344 344
 		this.validateForm.controls.creatTime.setValue(startTime);
345 345
 	}
346
-		
346
+
347 347
 	// 表单提交
348 348
 	submitForm(): void {
349 349
 	  var that = this;
@@ -396,7 +396,7 @@ export class DrugSearchComponent implements OnInit {
396 396
 	      }
397 397
 	    });
398 398
 	}
399
-	
399
+
400 400
 	// 编辑
401 401
 	itemData:any;
402 402
 	coopId:any;
@@ -428,23 +428,23 @@ export class DrugSearchComponent implements OnInit {
428 428
 		}
429 429
 		this.modal = true
430 430
 	}
431
-	
431
+
432 432
 	// 消息发送
433 433
 	sendModal:boolean = false;
434 434
 	sendMsg(data){
435 435
 		this.itemData = data;
436 436
 		this.sendModal = true
437 437
 	}
438
-	
438
+
439 439
 	// 取消删除弹框
440 440
 	cancelSend(){
441 441
 		this.hideSendModal();
442 442
 	}
443
-	
443
+
444 444
 	hideSendModal(){
445 445
 		this.sendModal = false
446 446
 	}
447
-	
447
+
448 448
 	// 确认发送
449 449
 	confirmSend() {
450 450
 	  let that = this;
@@ -467,7 +467,7 @@ export class DrugSearchComponent implements OnInit {
467 467
 	      }
468 468
 	    });
469 469
 	}
470
-	
470
+
471 471
   // 表格数据
472 472
   loading1 = false;
473 473
   getList(type) {

+ 5 - 0
src/app/views/inspect-and-patient-transport-config/inspect-and-patient-transport-config.component.html

@@ -185,6 +185,11 @@
185 185
           <nz-form-label class="label">是否修改危重等级</nz-form-label>
186 186
           <nz-checkbox-group [(ngModel)]="updatePatientIllness"></nz-checkbox-group>
187 187
         </div>
188
+        <!-- 是否开通非预约检查顺延 -->
189
+        <div class="display_flex align-items_center mb8">
190
+          <nz-form-label class="label">是否开通非预约检查顺延</nz-form-label>
191
+          <nz-checkbox-group [(ngModel)]="inspectDelayOneDay"></nz-checkbox-group>
192
+        </div>
188 193
         <!-- 检查预约不进行工单合并 -->
189 194
         <!-- <div class="display_flex align-items_center mb8">
190 195
           <nz-form-label class="label">检查预约不进行工单合并</nz-form-label>

+ 6 - 0
src/app/views/inspect-and-patient-transport-config/inspect-and-patient-transport-config.component.ts

@@ -109,6 +109,10 @@ export class InspectAndPatientTransportConfigComponent implements OnInit {
109 109
   updatePatientIllness:any[] = [
110 110
     {label:'是否开启',value: 0}
111 111
   ];
112
+  // 是否开通非预约检查顺延
113
+  inspectDelayOneDay:any[] = [
114
+    {label:'是否开启',value: 0}
115
+  ];
112 116
   // 检查预约不进行工单合并
113 117
   // yyInspectMergeOrder:any[] = [
114 118
   //   {label:'是否开启',value: 0}
@@ -336,6 +340,7 @@ export class InspectAndPatientTransportConfigComponent implements OnInit {
336 340
       nurseAppendInspect: this.nurseAppendInspect[0].checked ? 1 : 0,
337 341
       signReassign: this.signReassign[0].checked ? 1 : 0,
338 342
       updatePatientIllness: this.updatePatientIllness[0].checked ? 1 : 0,
343
+      inspectDelayOneDay: this.inspectDelayOneDay[0].checked ? 1 : 0,
339 344
       // yyInspectMergeOrder: this.yyInspectMergeOrder[0].checked ? 1 : 0,
340 345
       addService: this.addService[0].checked ? 1 : 0,
341 346
       addServiceTaskIds: this.addServiceTaskIds.length ? this.addServiceTaskIds.toString() : undefined,
@@ -475,6 +480,7 @@ export class InspectAndPatientTransportConfigComponent implements OnInit {
475 480
           this.nurseAppendInspect[0].checked = this.configs.nurseAppendInspect == 1;
476 481
           this.signReassign[0].checked = this.configs.signReassign == 1;
477 482
           this.updatePatientIllness[0].checked = this.configs.updatePatientIllness == 1;
483
+          this.inspectDelayOneDay[0].checked = this.configs.inspectDelayOneDay == 1;
478 484
           // this.yyInspectMergeOrder[0].checked = this.configs.yyInspectMergeOrder == 1;
479 485
           this.addService[0].checked = this.configs.addService == 1;
480 486
           this.addServiceTaskIds = this.configs.addServiceTaskIds ? this.configs.addServiceTaskIds.split(',').map(v => +v) : [];

+ 8 - 0
src/app/views/inspect-info-config/inspect-info-config-routing.module.ts

@@ -1,12 +1,20 @@
1 1
 import { NgModule } from '@angular/core';
2 2
 import { Routes, RouterModule } from '@angular/router';
3 3
 import { InspectInfoConfigComponent } from './inspect-info-config.component';
4
+import { OrderDetailComponent } from '../../share/order-detail/order-detail.component';
4 5
 
5 6
 
6 7
 const routes: Routes = [
7 8
   {
8 9
     path: "",
9 10
     component: InspectInfoConfigComponent,
11
+    children: [
12
+	    {
13
+	      // 查看详情
14
+	      path: 'orderDetail/:id',
15
+	      component: OrderDetailComponent,
16
+	    }
17
+	  ]
10 18
   },
11 19
 ];
12 20
 

+ 17 - 7
src/app/views/inspect-info-config/inspect-info-config.component.html

@@ -16,6 +16,11 @@
16 16
         </nz-option>
17 17
       </nz-select>
18 18
     </div>
19
+    <div class="searchItem">
20
+      <div class="patient">
21
+        <label nz-checkbox [(ngModel)]="searchData.noneGdid">未建单检查</label>
22
+      </div>
23
+    </div>
19 24
     <div class="searchItem">
20 25
         <div class="patient">
21 26
           <label nz-checkbox [(ngModel)]="searchData.noneTripType">未标记患者</label>
@@ -32,12 +37,14 @@
32 37
     </div>
33 38
   </div>
34 39
   <div class="display_flex align-items_center">
35
-    <button nz-button class="btn default" (click)='reset()'>重置</button>
36
-    <button nz-button class="btn default ml8" (click)='getList()'>搜索</button>
40
+    <div class="display_flex flex-direction_column">
41
+      <button nz-button class="btn default" (click)='reset()'>重置</button>
42
+      <button nz-button class="btn default mt8" (click)='getList()'>搜索</button>
43
+    </div>
37 44
     <button nz-button nzType="default" class="ml8" (click)='goBack()'>返回</button>
38 45
     <div class="info">
39
-      <span>患者:{{listOfData.length}}</span>
40
-      <span class="infoNum">检查项:{{inspectTotalCount}}</span>
46
+      <div>患者:{{listOfData.length}}</div>
47
+      <div class="infoNum">检查项:{{inspectTotalCount}}</div>
41 48
     </div>
42 49
   </div>
43 50
 </div>
@@ -99,10 +106,10 @@
99 106
                   <span class="circle red" title="无预约时间检查"></span>
100 107
                 </ng-container>
101 108
               </ng-template>
102
-              {{(inspect.yyTime || "") + " " + (inspect.execDept ? (deptDisplay == 2 ? inspect.execDept.deptalias : inspect.execDept.dept) : '') + " 进行 " + (inspect.inspectName || "检查")}}
109
+              {{(inspect.yyTime || "") + " " + (inspect.execDept ? (deptDisplay == 2 ? inspect.execDept.deptalias : inspect.execDept.dept) : '') + " 进行 " + (inspect.inspectName || "检查")}} <span class="inspectState" *ngIf="inspect.gdId" (click)="detail($event, inspect.gdId)">{{inspect.inspectState?.name}}</span>
103 110
             </span>
104
-            <span class="icon_transport transport-weibiaoti2010104" (click)="editInspect({data: data, inspect: inspect})"></span>
105
-            <span class="icon_transport transport-shanchu1" (click)="showDelModal({data: data, inspect: inspect}, '您确认要删除吗?','删除','delInspect')"></span>
111
+            <span *ngIf="!inspect.gdId" class="icon_transport transport-weibiaoti2010104" (click)="editInspect({data: data, inspect: inspect})"></span>
112
+            <span *ngIf="!inspect.gdId" class="icon_transport transport-shanchu1" (click)="showDelModal({data: data, inspect: inspect}, '您确认要删除吗?','删除','delInspect')"></span>
106 113
           </div>
107 114
         </td>
108 115
         <td>
@@ -136,3 +143,6 @@
136 143
 
137 144
 <!-- 追加检查项目 -->
138 145
 <app-add-inspect-three-modal *ngIf="isShowAddInspect" [patientDTO]="patientDTO" [deptDisplay]="deptDisplay" (closeModelHs)="closeAddInspectModel($event)" (confirmModelHs)="confirmAddInspectModel($event)"></app-add-inspect-three-modal>
146
+
147
+<!-- 查看详情 -->
148
+<router-outlet></router-outlet>

+ 4 - 3
src/app/views/inspect-info-config/inspect-info-config.component.less

@@ -21,6 +21,10 @@
21 21
       }
22 22
     }
23 23
   }
24
+  .inspectState{
25
+    text-decoration: underline;
26
+    cursor: pointer;
27
+  }
24 28
   .header{
25 29
     height: 100px;
26 30
     background-color: #fff;
@@ -62,9 +66,6 @@
62 66
     .info{
63 67
       margin-left: 24px;
64 68
       font-weight: bold;
65
-      .infoNum{
66
-        margin-left: 10px;
67
-      }
68 69
     }
69 70
   }
70 71
   .table{

+ 9 - 0
src/app/views/inspect-info-config/inspect-info-config.component.ts

@@ -7,6 +7,7 @@ import { Subject } from 'rxjs';
7 7
 import { debounceTime } from 'rxjs/operators';
8 8
 import { Location } from '@angular/common';
9 9
 import cloneDeep from 'lodash-es/cloneDeep'
10
+import { Router } from "@angular/router";
10 11
 @Component({
11 12
   selector: 'app-inspect-info-config',
12 13
   templateUrl: './inspect-info-config.component.html',
@@ -19,6 +20,7 @@ export class InspectInfoConfigComponent implements OnInit {
19 20
     private tool: ToolService,
20 21
     private message: NzMessageService,
21 22
     private _location: Location,
23
+    private router: Router,
22 24
   ) { }
23 25
 
24 26
   searchData:any = {
@@ -313,6 +315,7 @@ export class InspectInfoConfigComponent implements OnInit {
313 315
       noneTripType: this.searchData.noneTripType || undefined,
314 316
       noneEndDept: this.searchData.noneEndDept || undefined,
315 317
       noneYY: this.searchData.noneYY || undefined,
318
+      noneGdid: this.searchData.noneGdid || undefined,
316 319
     };
317 320
     this.loading1 = true;
318 321
     this.mainService
@@ -465,4 +468,10 @@ export class InspectInfoConfigComponent implements OnInit {
465 468
         }
466 469
       });
467 470
   }
471
+
472
+  // 查看工单详情
473
+	detail(e, gdId) {
474
+	  e.stopPropagation();
475
+	  this.router.navigateByUrl("/inspectInfoConfig/orderDetail/" + gdId);
476
+	}
468 477
 }