Browse Source

Merge branch 'master' of http://git.dashitech.com/seimin/zy-pc

seimin 5 months ago
parent
commit
755ed20805
20 changed files with 1286 additions and 30 deletions
  1. 6 0
      src/app/app-routing.module.ts
  2. 1 1
      src/app/components/configurationCenter/configuration-deptUser/configuration-deptUser.component.ts
  3. 68 0
      src/app/components/configurationCenter/configuration-key/configuration-key.component.html
  4. 831 0
      src/app/components/configurationCenter/configuration-key/configuration-key.component.less
  5. 110 0
      src/app/components/configurationCenter/configuration-key/configuration-key.component.ts
  6. 7 1
      src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.html
  7. 10 2
      src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.ts
  8. 1 1
      src/app/components/select-menu/select-menu.component.less
  9. 3 0
      src/app/components/select-menu/select-menu.component.ts
  10. 7 0
      src/app/services/main.service.ts
  11. 2 1
      src/app/views/hushijiandan/hushijiandan.component.html
  12. 20 4
      src/app/views/hushijiandan/hushijiandan.component.less
  13. 62 14
      src/app/views/hushijiandan/hushijiandan.component.ts
  14. 6 6
      src/app/views/specimen-room-view/specimen-room-view.component.html
  15. 1 0
      src/app/views/specimen-room-view/specimen-room-view.component.less
  16. 18 0
      src/app/views/system-config/system-config-routing.module.ts
  17. 17 0
      src/app/views/system-config/system-config.component.html
  18. 57 0
      src/app/views/system-config/system-config.component.less
  19. 38 0
      src/app/views/system-config/system-config.component.ts
  20. 21 0
      src/app/views/system-config/system-config.module.ts

+ 6 - 0
src/app/app-routing.module.ts

@@ -112,6 +112,12 @@ const routes: Routes = [
112 112
     loadChildren: () => import('./views/other-config/other-config.module').then(m => m.OtherConfigModule),
113 113
     canActivate: [OtherConfigGuard]
114 114
   },
115
+	// 系统配置
116
+	{
117
+	  path: 'systemConfig',
118
+	  loadChildren: () => import('./views/system-config/system-config.module').then(m => m.SystemConfigModule),
119
+	  canActivate: [PageConfigGuard]
120
+	},
115 121
   // 业务页面控制查看
116 122
   {
117 123
     path: 'pageConfig',

+ 1 - 1
src/app/components/configurationCenter/configuration-deptUser/configuration-deptUser.component.ts

@@ -93,7 +93,7 @@ export class ConfigurationDeptUserComponent implements OnInit {
93 93
 				cascadeHosId: this.currentHospital.id,
94 94
 	    },
95 95
 	    idx: 0,
96
-	    sum: 20,
96
+	    sum: 9999,
97 97
 	  };
98 98
 		that.mainService
99 99
 		  .getFetchDataList("data", "department", data)

+ 68 - 0
src/app/components/configurationCenter/configuration-key/configuration-key.component.html

@@ -0,0 +1,68 @@
1
+<div class="content specimen">
2
+  <div class="contentInner">
3
+    <div class="addressAssign">
4
+      <div class="contentBody2">
5
+        <div class="TaskTypeManagement">
6
+          <div class="taskTypeInfo">
7
+<!--            <div class="top">
8
+              <div class="item" (click)="tabModal('characteristics')" [ngClass]="{'items':tabModalName=='characteristics'}">
9
+                特性配置
10
+              </div>
11
+              <div class="item" (click)="tabModal('automaticOrderCreation')" [ngClass]="{'items':tabModalName=='automaticOrderCreation'}">
12
+                自动建单配置
13
+              </div>
14
+            </div> -->
15
+            <div class="list" *ngIf="!loading">
16
+              <!-- 动态数字密钥 -->
17
+              <div>
18
+                <!-- 数字密钥 -->
19
+                <div class="display_flex align-items_center mb8">
20
+                  <nz-form-label class="label">数字密钥</nz-form-label>
21
+                  <nz-checkbox-group [(ngModel)]="returnSpecimenWhetherHandover"></nz-checkbox-group>
22
+                </div>
23
+								
24
+								<!-- 数字密钥位数 -->
25
+								<div class="display_flex align-items_center mb8" *ngIf="returnSpecimenWhetherHandover[0].checked">
26
+								  <nz-form-label class="label">数字密钥位数</nz-form-label>
27
+									<nz-radio-group [(ngModel)]="keyNum">
28
+									  <label nz-radio [nzValue]="4">4位</label>
29
+									  <label nz-radio [nzValue]="6">6位</label>
30
+									</nz-radio-group>
31
+								</div>
32
+								
33
+								<!-- 数字密钥时效 -->
34
+								<div class="display_flex align-items_center mb8" *ngIf="returnSpecimenWhetherHandover[0].checked">
35
+								  <nz-form-label class="label">数字密钥时效</nz-form-label>
36
+									<nz-input-group nzSuffix="分钟">
37
+										<input type="number" nz-input [(ngModel)]="keyMinute" />
38
+									</nz-input-group>
39
+								</div>
40
+								
41
+								<!-- 使用有效性 -->
42
+								<div class="display_flex align-items_center mb8" *ngIf="returnSpecimenWhetherHandover[0].checked">
43
+								  <nz-form-label class="label">使用有效性</nz-form-label>
44
+									<nz-radio-group [(ngModel)]="keyValid">
45
+									  <label nz-radio [nzValue]="'1'">单次使用</label>
46
+									  <label nz-radio [nzValue]="'-1'">多次使用</label>
47
+									</nz-radio-group>
48
+								</div>
49
+              </div>
50
+
51
+              <div class="bottom">
52
+                <button class="login-form-button" nzType="primary" [nzLoading]="btnLoading" nz-button (click)="submitForm()">保存</button>
53
+              </div>
54
+            </div>
55
+            <div class="list" *ngIf="loading">
56
+              <div class="loadingFull display_flex justify-content_flex-center align-items_center">
57
+                <div class="loadingFullInner">
58
+                  <img src="../../../assets/images/loading.gif" alt="">
59
+                  <div>加载中...</div>
60
+                </div>
61
+              </div>
62
+            </div>
63
+          </div>
64
+        </div>
65
+      </div>
66
+    </div>
67
+  </div>
68
+</div>

+ 831 - 0
src/app/components/configurationCenter/configuration-key/configuration-key.component.less

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

+ 110 - 0
src/app/components/configurationCenter/configuration-key/configuration-key.component.ts

@@ -0,0 +1,110 @@
1
+import { Component, OnInit } from "@angular/core";
2
+import { MainService } from "../../../services/main.service";
3
+import { ToolService } from 'src/app/services/tool.service';
4
+import { NzMessageService } from 'ng-zorro-antd';
5
+import { Subject } from 'rxjs';
6
+import { debounceTime } from 'rxjs/operators';
7
+
8
+@Component({
9
+  selector: "app-configuration-key",
10
+  templateUrl: "./configuration-key.component.html",
11
+  styleUrls: ["./configuration-key.component.less"],
12
+})
13
+export class ConfigurationKeyComponent implements OnInit {
14
+  loading:boolean = false; //页面加载的loading
15
+  btnLoading:boolean = false; //提交按钮的loading
16
+  tabModalName:string = 'characteristics'; //当前选中的tab
17
+  hosId = this.tool.getCurrentHospital().id; //当前院区
18
+
19
+  // 数字密钥
20
+  returnSpecimenWhetherHandover:any[] = [
21
+    {label:'是否开启',value: 0}
22
+  ];
23
+
24
+  // 数字密钥位数
25
+  keyNum:any = 4;
26
+	
27
+	// 数字密钥时效
28
+	keyMinute:any = 3;
29
+	
30
+	// 使用有效期
31
+	keyValid:any = 1;
32
+	
33
+	hospitalList:any[] = [];
34
+	
35
+  // 配置
36
+  configs:any = {};
37
+  // 任务类型
38
+  tasktype:any = {};
39
+  searchTimerSubject = new Subject();
40
+  constructor(private mainService: MainService,private tool: ToolService,private msg: NzMessageService) {}
41
+
42
+  ngOnInit():void {
43
+		this.getConfig();
44
+  }
45
+
46
+  // 用户输入搜索
47
+  isLoading: boolean = false;
48
+  deptNotAlertIds:any[] = [];
49
+  deptList:any[] = [];
50
+	
51
+  // 保存
52
+  submitForm() {
53
+		for(let i of this.hospitalList){
54
+			if(i.key=='digitalSecretKey'){
55
+				if(this.returnSpecimenWhetherHandover[0].checked){
56
+					i.value = 1
57
+				}else{
58
+					i.value = 0
59
+				}
60
+			}else if(i.key=='numberDigitalSecretKey'){
61
+				i.value = this.keyNum
62
+			}else if(i.key=='digitalSecretKeyValidTime'){
63
+				i.value = this.keyMinute
64
+			}else if(i.key=='validityDigitalSecretKey'){
65
+				i.value = this.keyValid
66
+			}
67
+		}
68
+    this.btnLoading = true;
69
+    this.mainService.simplePost("addListData", "hospitalConfig", this.hospitalList).subscribe((result:any) => {
70
+        this.btnLoading = false;
71
+        if (result.status == 200) {
72
+          this.getConfig();
73
+        }
74
+      });
75
+  }
76
+
77
+  // 获取配置
78
+  getConfig() {
79
+    this.loading = true;
80
+    let postData = {
81
+      idx: 0,
82
+      sum: 9999,
83
+			hospitalConfig:{
84
+				hosId:this.hosId,
85
+				model:"all"
86
+			}
87
+    };
88
+    this.mainService.getFetchDataList("simple/data", "hospitalConfig", postData).subscribe((result:any) => {
89
+        this.loading = false;
90
+        if (result.status == 200) {
91
+					this.hospitalList = result.list || [];
92
+					for(let i of this.hospitalList){
93
+						if(i.key=='digitalSecretKey'){
94
+							if(i.value==1){
95
+								this.returnSpecimenWhetherHandover[0].checked = true
96
+							}else{
97
+								this.returnSpecimenWhetherHandover[0].checked = false
98
+							}
99
+						}else if(i.key=='numberDigitalSecretKey'){
100
+							this.keyNum = Number(i.value) 
101
+						}else if(i.key=='digitalSecretKeyValidTime'){
102
+							this.keyMinute = Number(i.value)
103
+						}else if(i.key=='validityDigitalSecretKey'){
104
+							this.keyValid = i.value
105
+						}
106
+					}
107
+        }
108
+      });
109
+  }
110
+}

+ 7 - 1
src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.html

@@ -44,7 +44,13 @@
44 44
                   <nz-form-label class="label">必须扫描动态二维码</nz-form-label>
45 45
                   <nz-checkbox-group [(ngModel)]="arriveScanDynamicCode"></nz-checkbox-group>
46 46
                 </div>
47
-
47
+								
48
+								<!-- 输入动态数字密钥 -->
49
+								<div class="display_flex align-items_center mb8" *ngIf="arriveScanCode[0].checked">
50
+								  <nz-form-label class="label">输入动态数字密钥</nz-form-label>
51
+								  <nz-checkbox-group [(ngModel)]="enterDynamicDigitalKey"></nz-checkbox-group>
52
+								</div>
53
+								
48 54
                 <!-- 退回标本是否填写交接人 -->
49 55
                 <div class="display_flex align-items_center mb8">
50 56
                   <nz-form-label class="label">退回标本是否填写交接人</nz-form-label>

+ 10 - 2
src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.ts

@@ -30,7 +30,12 @@ export class ConfigurationSpecimenComponent implements OnInit {
30 30
   arriveScanDynamicCode:any[] = [
31 31
     {label:'是否开启',value: 0}
32 32
   ];
33
-
33
+	
34
+	// 必须扫描动态二维码
35
+	enterDynamicDigitalKey:any[] = [
36
+	  {label:'是否开启',value: 0}
37
+	];
38
+	
34 39
   // 退回标本是否填写交接人
35 40
   returnSpecimenWhetherHandover:any[] = [
36 41
     {label:'是否开启',value: 0}
@@ -85,6 +90,7 @@ export class ConfigurationSpecimenComponent implements OnInit {
85 90
     console.log(e);
86 91
     if(!e[0].checked){
87 92
       this.arriveScanDynamicCode[0].checked = false;
93
+			this.enterDynamicDigitalKey[0].checked = false;
88 94
     }
89 95
   }
90 96
   // 用户输入搜索
@@ -146,6 +152,7 @@ export class ConfigurationSpecimenComponent implements OnInit {
146 152
       deptNotAlert: this.deptNotAlert[0].checked ? 1 : 0,
147 153
       arriveScanCode: this.arriveScanCode[0].checked ? 1 : 0,
148 154
       arriveScanDynamicCode: this.arriveScanDynamicCode[0].checked ? 1 : 0,
155
+			enterDynamicDigitalKey: this.enterDynamicDigitalKey[0].checked ? 1 : 0,
149 156
       returnSpecimenWhetherHandover: this.returnSpecimenWhetherHandover[0].checked ? 1 : 0,
150 157
       bigScanShowSignBtn: this.bigScanShowSignBtn[0].checked ? 1 : 0,
151 158
       bigScanArriveNotOwner: this.bigScanArriveNotOwner[0].checked ? 1 : 0,
@@ -214,7 +221,8 @@ export class ConfigurationSpecimenComponent implements OnInit {
214 221
           this.deptNotAlert[0].checked = this.configs.deptNotAlert == 1;
215 222
           this.arriveScanCode[0].checked = this.configs.arriveScanCode == 1;
216 223
           this.arriveScanDynamicCode[0].checked = this.configs.arriveScanDynamicCode == 1;
217
-          this.returnSpecimenWhetherHandover[0].checked = this.configs.returnSpecimenWhetherHandover == 1;
224
+					this.enterDynamicDigitalKey[0].checked = this.configs.enterDynamicDigitalKey == 1;
225
+					this.returnSpecimenWhetherHandover[0].checked = this.configs.returnSpecimenWhetherHandover == 1;
218 226
           this.bigScanShowSignBtn[0].checked = this.configs.bigScanShowSignBtn == 1;
219 227
           this.bigScanArriveNotOwner[0].checked = this.configs.bigScanArriveNotOwner == 1;
220 228
           this.bigScanShowCreateBtn[0].checked = this.configs.bigScanShowCreateBtn == 1;

+ 1 - 1
src/app/components/select-menu/select-menu.component.less

@@ -9,7 +9,7 @@
9 9
   z-index: 99;
10 10
 
11 11
   .modalBody {
12
-    width: 467px;
12
+    width: 688px;
13 13
     background: #fff;
14 14
     border-radius: 5px;
15 15
     padding: 10px 20px;

+ 3 - 0
src/app/components/select-menu/select-menu.component.ts

@@ -26,6 +26,9 @@ export class SelectMenuComponent implements OnInit {
26 26
     // 三方配置
27 27
     let otherConfig = menus.find(item => item.link == 'otherConfig');
28 28
     otherConfig && configurationCenterMenus.push(otherConfig);
29
+		// 系统配置
30
+		let systemConfig = menus.find(item => item.link == 'systemConfig');
31
+		systemConfig && configurationCenterMenus.push(systemConfig);
29 32
     // 业务页面控制
30 33
     let pageConfig = menus.find(item => item.link == 'pageConfig');
31 34
     pageConfig && configurationCenterMenus.push(pageConfig);

+ 7 - 0
src/app/services/main.service.ts

@@ -1012,4 +1012,11 @@ export class MainService {
1012 1012
 	    headers: this.headers,
1013 1013
 	  });
1014 1014
 	}
1015
+	// 获取动态密钥
1016
+	getSecretKey(deptId) {
1017
+	  return this.http.post(host.host + `/dept/secretKey/${deptId}`,{}, {
1018
+	    headers: this.headers,
1019
+	  });
1020
+	}
1021
+	
1015 1022
 }

+ 2 - 1
src/app/views/hushijiandan/hushijiandan.component.html

@@ -3680,7 +3680,7 @@
3680 3680
 
3681 3681
 <!-- 科室二维码模态框 -->
3682 3682
 <!-- 在模态框所在的 div 添加属性 [appDrag] -->
3683
-<div appDrag class="modal" *ngIf="isShowNurseCode">
3683
+<div appDrag class="modal" [ngClass]="{'isKeyClass': iskeySwitch}" *ngIf="isShowNurseCode">
3684 3684
   <div class="header drag-title">
3685 3685
     <h2>签到二维码</h2>
3686 3686
     <i
@@ -3688,6 +3688,7 @@
3688 3688
       (click)="closeNurseCode()"
3689 3689
     ></i>
3690 3690
   </div>
3691
+	<div class="key" *ngIf="iskeySwitch">{{numberKey}}</div>
3691 3692
   <div class="dialog-center">
3692 3693
     <div class="dialog-code">
3693 3694
       <img [src]="nurseCodeImg" alt="" />

+ 20 - 4
src/app/views/hushijiandan/hushijiandan.component.less

@@ -108,7 +108,11 @@
108 108
     right: 0;
109 109
     height: 100%;
110 110
   }
111
-
111
+	
112
+	.isKeyClass{
113
+		height: 350px !important;
114
+	}
115
+	
112 116
   .modal {
113 117
     // 相对于 background 定位, 位置暂时设置为 0,0,0,0 在指令中将其位置水平垂直居中在页面中间
114 118
     position: absolute;
@@ -117,7 +121,7 @@
117 121
     bottom: 0;
118 122
     right: 0;
119 123
     width: 280px;
120
-    height: 310px;
124
+    height: 300px;
121 125
     z-index: 3100;
122 126
     background: #f9fafb;
123 127
     box-shadow: 1px 1px 20px rgba(0, 0, 0, 0.3);
@@ -138,7 +142,8 @@
138 142
         text-align: center;
139 143
         margin: 0;
140 144
       }
141
-
145
+			
146
+			
142 147
       .icon-close {
143 148
         position: absolute;
144 149
         top: 0;
@@ -148,7 +153,18 @@
148 153
         color: @hs_border_color;
149 154
       }
150 155
     }
151
-
156
+		
157
+		.key{
158
+			letter-spacing: 10px;
159
+			font-weight: bold;
160
+			font-size: 30px;
161
+			text-align: center;
162
+			color: #000;
163
+			position: relative;
164
+			top: -15px;
165
+			height: 33px;
166
+		}
167
+		
152 168
     .dialog-center {
153 169
       width: 235px;
154 170
       height: 208px;

+ 62 - 14
src/app/views/hushijiandan/hushijiandan.component.ts

@@ -4497,22 +4497,70 @@ export class HushijiandanComponent implements OnInit {
4497 4497
   timer = null;
4498 4498
   showNurseCode() {
4499 4499
     this.isShowNurseCode = true;
4500
-    this.mainService.getDeptCode([this.loginUserDeptId]).subscribe((data) => {
4501
-      if (data["status"] == 200) {
4502
-        this.nurseCodeImg = data["data"][0].base64;
4503
-        this.refreshQRCodeTime = data["data"][0].refreshQRCodeTime;
4504
-        clearInterval(this.timer);
4505
-        this.timer = setInterval(() => {
4506
-          this.refreshQRCodeTime = Math.max(--this.refreshQRCodeTime, 0);
4507
-          if (this.refreshQRCodeTime === 0) {
4508
-            clearInterval(this.timer);
4509
-            this.showNurseCode();
4510
-          }
4511
-        }, 1000);
4500
+		this.getConfig()
4501
+  }
4502
+	
4503
+	// 获取配置
4504
+	iskeySwitch:any = false;
4505
+	getConfig() {
4506
+	  let postData = {
4507
+	    idx: 0,
4508
+	    sum: 9999,
4509
+			hospitalConfig:{
4510
+				hosId:this.currentHospital.id,
4511
+				model:"all"
4512
+			}
4513
+	  };
4514
+	  this.mainService.getFetchDataList("simple/data", "hospitalConfig", postData).subscribe((result:any) => {
4515
+	      if (result.status == 200) {
4516
+					for(let i of result.list){
4517
+						if(i.key=='digitalSecretKey'){
4518
+							if(i.value==1){
4519
+								this.iskeySwitch = true
4520
+								this.getSecretKey()
4521
+							}else{
4522
+								this.iskeySwitch = false
4523
+								this.mainService.getDeptCode([this.loginUserDeptId]).subscribe((data) => {
4524
+								  if (data["status"] == 200) {
4525
+								    this.nurseCodeImg = data["data"][0].base64;
4526
+								    this.refreshQRCodeTime = data["data"][0].refreshQRCodeTime;
4527
+								    clearInterval(this.timer);
4528
+								    this.timer = setInterval(() => {
4529
+								      this.refreshQRCodeTime = Math.max(--this.refreshQRCodeTime, 0);
4530
+								      if (this.refreshQRCodeTime === 0) {
4531
+								        clearInterval(this.timer);
4532
+								        this.showNurseCode();
4533
+								      }
4534
+								    }, 1000);
4535
+								  }
4536
+								});
4537
+							}
4538
+						}
4539
+					}
4540
+	      }
4541
+	    });
4542
+	}
4543
+	
4544
+	// 获取动态密钥
4545
+	numberKey:any;
4546
+	getSecretKey(){
4547
+		this.mainService.getSecretKey(this.currentDept.id).subscribe((res:any) => {
4548
+      if (res["status"] == 200) {
4549
+        this.numberKey = res.data.digitalSecretKey;
4550
+				this.nurseCodeImg = res.data.base64;
4551
+				this.refreshQRCodeTime = res.data.refreshQRCodeTime;
4552
+				clearInterval(this.timer);
4553
+				this.timer = setInterval(() => {
4554
+				  this.refreshQRCodeTime = Math.max(--this.refreshQRCodeTime, 0);
4555
+				  if (this.refreshQRCodeTime === 0) {
4556
+				    clearInterval(this.timer);
4557
+				    this.showNurseCode();
4558
+				  }
4559
+				}, 1000);
4512 4560
       }
4513 4561
     });
4514
-  }
4515
-
4562
+	}
4563
+	
4516 4564
   // 右侧菜单
4517 4565
   showLastItems: boolean = false;
4518 4566
   // 下拉

+ 6 - 6
src/app/views/specimen-room-view/specimen-room-view.component.html

@@ -69,7 +69,7 @@
69 69
       </div>
70 70
       <!-- 搜索框 end -->
71 71
       <!-- 列表 start -->
72
-      <overlay-scrollbars #osComponentRef1 class="pharmacy-main__selectionWrap">
72
+      <div #osComponentRef1 class="pharmacy-main__selectionWrap">
73 73
         <div *ngIf="!loading1" style="height: 100%">
74 74
           <div
75 75
             class="pharmacy-main__selection noPointer"
@@ -130,7 +130,7 @@
130 130
             </div>
131 131
           </div>
132 132
         </div>
133
-      </overlay-scrollbars>
133
+      </div>
134 134
       <!-- 列表 end -->
135 135
     </div>
136 136
 
@@ -159,7 +159,7 @@
159 159
       </div>
160 160
       <!-- 搜索框 end -->
161 161
       <!-- 列表 start -->
162
-      <overlay-scrollbars #osComponentRef2 class="pharmacy-main__selectionWrap">
162
+      <div #osComponentRef2 class="pharmacy-main__selectionWrap">
163 163
         <div *ngIf="!loading2" style="height: 100%">
164 164
           <div
165 165
             class="pharmacy-main__selection"
@@ -220,7 +220,7 @@
220 220
             </div>
221 221
           </div>
222 222
         </div>
223
-      </overlay-scrollbars>
223
+      </div>
224 224
       <!-- 列表 end -->
225 225
     </div>
226 226
 
@@ -249,7 +249,7 @@
249 249
       </div>
250 250
       <!-- 搜索框 end -->
251 251
       <!-- 列表 start -->
252
-      <overlay-scrollbars #osComponentRef3 class="pharmacy-main__selectionWrap">
252
+      <div #osComponentRef3 class="pharmacy-main__selectionWrap">
253 253
         <div *ngIf="!loading3" style="height: 100%">
254 254
           <div
255 255
             class="pharmacy-main__selection"
@@ -314,7 +314,7 @@
314 314
             </div>
315 315
           </div>
316 316
         </div>
317
-      </overlay-scrollbars>
317
+      </div>
318 318
       <!-- 列表 end -->
319 319
     </div>
320 320
   </div>

+ 1 - 0
src/app/views/specimen-room-view/specimen-room-view.component.less

@@ -329,6 +329,7 @@
329 329
             display: flex;
330 330
             flex-direction: column;
331 331
             justify-content: space-between;
332
+						width: 100%;
332 333
             .pharmacy-main__selectionItem {
333 334
               display: flex;
334 335
               justify-content: space-between;

+ 18 - 0
src/app/views/system-config/system-config-routing.module.ts

@@ -0,0 +1,18 @@
1
+import { NgModule } from '@angular/core';
2
+import { Routes, RouterModule } from '@angular/router';
3
+import { SystemConfigComponent } from './system-config.component';
4
+
5
+
6
+const routes: Routes = [
7
+  {
8
+    path: '',
9
+    component: SystemConfigComponent,
10
+  }
11
+];
12
+
13
+@NgModule({
14
+  imports: [RouterModule.forChild(routes)],
15
+  exports: [RouterModule]
16
+})
17
+export class SystemConfigRoutingModule { }
18
+

+ 17 - 0
src/app/views/system-config/system-config.component.html

@@ -0,0 +1,17 @@
1
+<div class="incidentConfig">
2
+  <div class="tagsAndTemplete">
3
+    <div class="tags">
4
+      <div><i class="icon_transport transport-peizhizhongxin"></i>配置中心&emsp;&gt;&emsp;系统配置</div>
5
+      <div class="tagList">
6
+        <span *ngFor="let tag of tagList" [ngClass]="{ active: activeTagLink === tag.link }" (click)="clickTag(tag)">{{ tag.title }}</span>
7
+      </div>
8
+      <button nz-button class="btn default" (click)="goBack()">返回</button>
9
+    </div>
10
+  </div>
11
+  <!-- 动态数字密钥 -->
12
+  <ng-container *ngIf="activeTagLink === 'systemConfigKey'">
13
+    <app-configuration-key></app-configuration-key>
14
+  </ng-container>
15
+</div>
16
+
17
+

+ 57 - 0
src/app/views/system-config/system-config.component.less

@@ -0,0 +1,57 @@
1
+@import "../../../../src/theme.less";
2
+:host {
3
+  width: 100%;
4
+  .incidentConfig{
5
+    padding-bottom: 24px;
6
+    height: 100%;
7
+    display: flex;
8
+    flex-direction: column;
9
+    justify-content: space-between;
10
+    background-color: #F0F2F5;
11
+    .tagsAndTemplete{
12
+      height: 64px;
13
+      display: flex;
14
+      justify-content: space-between;
15
+      align-items: center;
16
+      .tags{
17
+        height: 100%;
18
+        background: #fff;
19
+        flex: 1;
20
+        padding: 16px 24px;
21
+        display: flex;
22
+        align-items: center;
23
+        justify-content: space-between;
24
+        position: relative;
25
+        .transport-peizhizhongxin{
26
+          color: @primary-color;
27
+          font-size: 20px;
28
+          margin-right: 8px;;
29
+        }
30
+        .tagList{
31
+          width: 100%;
32
+          height: 100%;
33
+          position: absolute;
34
+          left: 0;
35
+          top: 50%;
36
+          transform: translateY(-50%);
37
+          display: flex;
38
+          justify-content: center;
39
+          align-items: center;
40
+          span{
41
+            height: 100%;
42
+            display: inline-block;
43
+            padding: 0 24px;
44
+            cursor: pointer;
45
+            display: flex;
46
+            justify-content: center;
47
+            align-items: center;
48
+            &.active{
49
+              color: @primary-color;
50
+              background: #F0F6ED;
51
+            }
52
+          }
53
+        }
54
+      }
55
+    }
56
+  }
57
+}

+ 38 - 0
src/app/views/system-config/system-config.component.ts

@@ -0,0 +1,38 @@
1
+import { Component, OnInit, AfterViewInit } from "@angular/core";
2
+import { Location } from '@angular/common';
3
+
4
+@Component({
5
+  selector: "app-system-config",
6
+  templateUrl: "./system-config.component.html",
7
+  styleUrls: ["./system-config.component.less"],
8
+})
9
+export class SystemConfigComponent implements OnInit, AfterViewInit {
10
+  constructor(
11
+    private _location: Location,
12
+  ){}
13
+
14
+  // tab
15
+  tagList:any = [];
16
+
17
+  ngOnInit(): void {}
18
+
19
+  ngAfterViewInit(){
20
+    setTimeout(() => {
21
+      let menus = JSON.parse(localStorage.getItem("menu"));
22
+      let systemConfig = menus.find(item => item.link == 'systemConfig');
23
+      this.tagList = systemConfig ? (systemConfig.childrens || []) : [];
24
+      this.tagList.length && this.clickTag(this.tagList[0]);
25
+    }, 0)
26
+  }
27
+
28
+  // 点击tab
29
+  activeTagLink:any = 1;
30
+  clickTag(tag){
31
+    this.activeTagLink = tag.link;
32
+  }
33
+
34
+  // 返回
35
+  goBack(){
36
+    this._location.back();
37
+  }
38
+}

+ 21 - 0
src/app/views/system-config/system-config.module.ts

@@ -0,0 +1,21 @@
1
+import { NgModule } from '@angular/core';
2
+import { CommonModule } from '@angular/common';
3
+
4
+import { SystemConfigRoutingModule } from './system-config-routing.module';
5
+import { SystemConfigComponent } from './system-config.component';
6
+import { ShareModule } from 'src/app/share/share.module';
7
+import { ConfigurationKeyComponent } from 'src/app/components/configurationCenter/configuration-key/configuration-key.component';
8
+
9
+
10
+@NgModule({
11
+  declarations: [
12
+    SystemConfigComponent,
13
+    ConfigurationKeyComponent,
14
+  ],
15
+  imports: [
16
+    CommonModule,
17
+    SystemConfigRoutingModule,
18
+    ShareModule,
19
+  ]
20
+})
21
+export class SystemConfigModule { }