소스 검색

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

maotao 6 달 전
부모
커밋
fb7bb7b716
36개의 변경된 파일1424개의 추가작업 그리고 151개의 파일을 삭제
  1. 6 0
      package-lock.json
  2. 22 6
      src/app/app-routing.module.ts
  3. 10 9
      src/app/components/configurationCenter/configuration-category/configuration-category.component.ts
  4. 70 0
      src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.html
  5. 823 0
      src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.less
  6. 192 0
      src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.ts
  7. 1 1
      src/app/components/incidentManagement/incident-detail/incident-detail.component.html
  8. 1 1
      src/app/components/incidentManagement/incident-handle-repair/incident-handle-repair.component.html
  9. 1 1
      src/app/components/incidentManagement/incident-ser-visit/incident-ser-visit.component.html
  10. 12 3
      src/app/components/select-menu/select-menu.component.ts
  11. 2 2
      src/app/guard/ConfigurationCenter.guard.ts
  12. 22 0
      src/app/guard/otherConfig.guard.ts
  13. 22 0
      src/app/guard/pageConfig.guard.ts
  14. 1 0
      src/app/views/clinical-users-management/clinical-users-management.component.ts
  15. 0 36
      src/app/views/configuration-center/configuration-center-routing.module.ts
  16. 0 1
      src/app/views/configuration-center/configuration-center.component.html
  17. 0 5
      src/app/views/configuration-center/configuration-center.component.less
  18. 0 10
      src/app/views/configuration-center/configuration-center.component.ts
  19. 0 19
      src/app/views/configuration-center/configuration-center.module.ts
  20. 3 3
      src/app/views/fuwutai/fuwutai.component.html
  21. 22 11
      src/app/views/fuwutai/fuwutai.component.ts
  22. 8 8
      src/app/views/incident-config/incident-config.component.html
  23. 13 10
      src/app/views/incident-config/incident-config.component.ts
  24. 1 1
      src/app/views/incident-management/incident-management.component.html
  25. 8 9
      src/app/views/incident-management/incident-management.component.ts
  26. 1 1
      src/app/views/main/main.component.html
  27. 14 4
      src/app/views/main/main.component.ts
  28. 4 4
      src/app/views/other-config/other-config.component.html
  29. 10 6
      src/app/views/other-config/other-config.component.ts
  30. 18 0
      src/app/views/page-config/page-config-routing.module.ts
  31. 17 0
      src/app/views/page-config/page-config.component.html
  32. 57 0
      src/app/views/page-config/page-config.component.less
  33. 38 0
      src/app/views/page-config/page-config.component.ts
  34. 21 0
      src/app/views/page-config/page-config.module.ts
  35. 1 0
      src/app/views/users-management/users-management.component.ts
  36. 3 0
      src/common.less

+ 6 - 0
package-lock.json

@@ -10191,6 +10191,7 @@
10191 10191
     },
10192 10192
     "node_modules/npm/node_modules/lodash._baseindexof": {
10193 10193
       "version": "3.1.0",
10194
+      "extraneous": true,
10194 10195
       "inBundle": true,
10195 10196
       "license": "MIT"
10196 10197
     },
@@ -10205,16 +10206,19 @@
10205 10206
     },
10206 10207
     "node_modules/npm/node_modules/lodash._bindcallback": {
10207 10208
       "version": "3.0.1",
10209
+      "extraneous": true,
10208 10210
       "inBundle": true,
10209 10211
       "license": "MIT"
10210 10212
     },
10211 10213
     "node_modules/npm/node_modules/lodash._cacheindexof": {
10212 10214
       "version": "3.0.2",
10215
+      "extraneous": true,
10213 10216
       "inBundle": true,
10214 10217
       "license": "MIT"
10215 10218
     },
10216 10219
     "node_modules/npm/node_modules/lodash._createcache": {
10217 10220
       "version": "3.1.2",
10221
+      "extraneous": true,
10218 10222
       "inBundle": true,
10219 10223
       "license": "MIT",
10220 10224
       "dependencies": {
@@ -10228,6 +10232,7 @@
10228 10232
     },
10229 10233
     "node_modules/npm/node_modules/lodash._getnative": {
10230 10234
       "version": "3.9.1",
10235
+      "extraneous": true,
10231 10236
       "inBundle": true,
10232 10237
       "license": "MIT"
10233 10238
     },
@@ -10243,6 +10248,7 @@
10243 10248
     },
10244 10249
     "node_modules/npm/node_modules/lodash.restparam": {
10245 10250
       "version": "3.6.1",
10251
+      "extraneous": true,
10246 10252
       "inBundle": true,
10247 10253
       "license": "MIT"
10248 10254
     },

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

@@ -17,8 +17,12 @@ import { SpecimenRoomViewGuard } from './guard/SpecimenRoomViewGuard.guard';
17 17
 import { PathologyGuard } from './guard/Pathology.guard';
18 18
 // 全局业务查看权限
19 19
 import { DisinfectionSupplyGuard } from './guard/DisinfectionSupplyGuard.guard';
20
-// 配置中心查看权限
21
-import { ConfigurationCenterGuard } from './guard/ConfigurationCenter.guard';
20
+// 事件配置查看权限
21
+import { IncidentConfigGuard } from './guard/IncidentConfig.guard';
22
+// 三方配置查看权限
23
+import { OtherConfigGuard } from './guard/OtherConfig.guard';
24
+//业务页面控制查看权限
25
+import { PageConfigGuard } from './guard/PageConfig.guard';
22 26
 
23 27
 const routes: Routes = [
24 28
   // 默认
@@ -96,11 +100,23 @@ const routes: Routes = [
96 100
     loadChildren: () => import('./views/disinfection-supply/disinfection-supply.module').then(m => m.DisinfectionSupplyModule),
97 101
     canActivate: [DisinfectionSupplyGuard]
98 102
   },
99
-  // 配置中心查看
103
+  // 事件配置查看
100 104
   {
101
-    path: 'configurationCenter',
102
-    loadChildren: () => import('./views/configuration-center/configuration-center.module').then(m => m.ConfigurationCenterModule),
103
-    canActivate: [ConfigurationCenterGuard]
105
+    path: 'incidentConfig',
106
+    loadChildren: () => import('./views/incident-config/incident-config.module').then(m => m.IncidentConfigModule),
107
+    canActivate: [IncidentConfigGuard]
108
+  },
109
+  // 三方配置查看
110
+  {
111
+    path: 'otherConfig',
112
+    loadChildren: () => import('./views/other-config/other-config.module').then(m => m.OtherConfigModule),
113
+    canActivate: [OtherConfigGuard]
114
+  },
115
+  // 业务页面控制查看
116
+  {
117
+    path: 'pageConfig',
118
+    loadChildren: () => import('./views/page-config/page-config.module').then(m => m.PageConfigModule),
119
+    canActivate: [PageConfigGuard]
104 120
   },
105 121
   // 问卷预览
106 122
   {

+ 10 - 9
src/app/components/configurationCenter/configuration-category/configuration-category.component.ts

@@ -78,6 +78,7 @@ export class ConfigurationCategoryComponent implements OnInit {
78 78
     }
79 79
     this.getCategoryList(1);
80 80
     this.getHospitals(1);
81
+    this.getHospitals(2);
81 82
     this.getPrioritys();
82 83
     this.getScores();
83 84
   }
@@ -293,10 +294,10 @@ export class ConfigurationCategoryComponent implements OnInit {
293 294
     this.validateConfigForm.controls.userId.setValue(null);
294 295
     this.validateConfigForm.controls.groupId.setValue(null);
295 296
 
296
-    this.dutyList = [];
297
+    // this.dutyList = [];
297 298
     this.userList = [];
298 299
     this.groupList = [];
299
-    this.getHospitals(2, id);
300
+    // this.getHospitals(2, id);
300 301
   }
301 302
 
302 303
   // 获取院区
@@ -308,14 +309,14 @@ export class ConfigurationCategoryComponent implements OnInit {
308 309
       this.hospitalList = this.tool.getHospitalList().filter(v => !v.parent);
309 310
       return;
310 311
     }
311
-    if(type === 2 && !parentId){
312
-      this.isLoading = false;
313
-      this.dutyList = [];
314
-      return;
315
-    }
312
+    // if(type === 2 && !parentId){
313
+    //   this.isLoading = false;
314
+    //   this.dutyList = [];
315
+    //   return;
316
+    // }
316 317
     let postData = {
317 318
       hospital: {
318
-        parent: { id: parentId },
319
+        // parent: { id: parentId },
319 320
         type: { key: 'hospital_type', value: '6' },
320 321
       },
321 322
       idx: 0,
@@ -616,7 +617,7 @@ export class ConfigurationCategoryComponent implements OnInit {
616 617
     }else if(data.userGroup === 2){
617 618
       this.requiredConfigChange('userId', false);
618 619
     }
619
-    data.hosId && this.getHospitals(2, data.hosId);
620
+    // data.hosId && this.getHospitals(2, data.hosId);
620 621
     data.dutyId && this.getUsers('', true);
621 622
     data.dutyId && this.getGroups('', true);
622 623
   }

+ 70 - 0
src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.html

@@ -0,0 +1,70 @@
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 *ngIf="tabModalName=='characteristics'">
18
+                <!-- 扫描时指定科室不提醒勾选项 -->
19
+                <div class="display_flex align-items_center mb8">
20
+                  <nz-form-label class="label">扫描时指定科室不提醒勾选项</nz-form-label>
21
+                  <nz-checkbox-group [(ngModel)]="deptNotAlert" (ngModelChange)="changeDeptNotAlert($event)"></nz-checkbox-group>
22
+                </div>
23
+                <!-- 科室 -->
24
+                <div class="display_flex align-items_center mb8" *ngIf="deptNotAlert[0].checked">
25
+                  <nz-form-label class="label" nzRequired>科室</nz-form-label>
26
+                  <nz-select nzMode="multiple" class="w320px" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear
27
+                    (nzOnSearch)="changeDept($event)" nzPlaceHolder="请选择科室" [(ngModel)]="deptNotAlertIds" (nzOpenChange)="openDeptList($event)">
28
+                    <ng-container *ngFor="let option of deptList">
29
+                      <nz-option *ngIf="!isLoading" [nzLabel]="option.dept" [nzValue]="option.id"></nz-option>
30
+                    </ng-container>
31
+                    <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
32
+                      <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
33
+                    </nz-option>
34
+                  </nz-select>
35
+                </div>
36
+
37
+                <!-- 收取时需扫描二维码 -->
38
+                <div class="display_flex align-items_center mb8">
39
+                  <nz-form-label class="label">收取时需扫描二维码</nz-form-label>
40
+                  <nz-checkbox-group [(ngModel)]="arriveScanCode" (ngModelChange)="changeArriveScanCode($event)"></nz-checkbox-group>
41
+                </div>
42
+
43
+                <!-- 必须扫描动态二维码 -->
44
+                <div class="display_flex align-items_center mb8" *ngIf="arriveScanCode[0].checked">
45
+                  <nz-form-label class="label">必须扫描动态二维码</nz-form-label>
46
+                  <nz-checkbox-group [(ngModel)]="arriveScanDynamicCode"></nz-checkbox-group>
47
+                </div>
48
+              </div>
49
+              <!-- 自动建单配置 -->
50
+              <div *ngIf="tabModalName=='automaticOrderCreation'">
51
+                <!-- 自动建单 -->
52
+              </div>
53
+              <div class="bottom">
54
+                <button class="login-form-button" nzType="primary" [nzLoading]="btnLoading" nz-button (click)="submitForm()">保存</button>
55
+              </div>
56
+            </div>
57
+            <div class="list" *ngIf="loading">
58
+              <div class="loadingFull display_flex justify-content_flex-center align-items_center">
59
+                <div class="loadingFullInner">
60
+                  <img src="../../../assets/images/loading.gif" alt="">
61
+                  <div>加载中...</div>
62
+                </div>
63
+              </div>
64
+            </div>
65
+          </div>
66
+        </div>
67
+      </div>
68
+    </div>
69
+  </div>
70
+</div>

+ 823 - 0
src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.less

@@ -0,0 +1,823 @@
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
+        & > div {
295
+          background: #f9fafb;
296
+          border: 1px solid #e5e9ed;
297
+          border-radius: 10px 10px 0px 0px;
298
+          padding: 24px 120px;
299
+
300
+          .label {
301
+            margin-left: 16px;
302
+            font-size: 14px;
303
+            color: #333;
304
+          }
305
+        }
306
+
307
+        // 规则信息
308
+        .ruleList {
309
+          padding: 15px 15px 0px 15px;
310
+          background: #fff;
311
+
312
+          .table {
313
+            width: 100%;
314
+            height: 100%;
315
+
316
+            .box {
317
+              // background: #f9fafb;
318
+              // border: 1px solid #e5e9ed;
319
+              border-radius: 5px;
320
+              position: relative;
321
+
322
+              .table_title {
323
+                font-size: 18px;
324
+                margin: 14px 0px;
325
+                text-align: center;
326
+              }
327
+
328
+              .thead {
329
+                background-image: linear-gradient(to right, @bg-start, @bg-end);
330
+
331
+                th {
332
+                  background: transparent;
333
+                  color: #fff;
334
+                  text-align: center;
335
+                  font-size: 14px;
336
+                }
337
+              }
338
+
339
+              .ant-table-body {
340
+                border-bottom: 1px solid #e5e9ed;
341
+                background: #f9fafb;
342
+              }
343
+
344
+              .ant-table-tbody {
345
+                background: #f9fafb;
346
+                border: 1px solid #e5e9ed;
347
+
348
+                .zzBontton {
349
+                  & > td {
350
+                    border-bottom: 1px solid #e5e9ed;
351
+                  }
352
+                }
353
+
354
+                tr {
355
+                  text-align: center;
356
+                  font-size: 14px;
357
+                  border: none;
358
+                  color: #333;
359
+                  overflow: hidden;
360
+
361
+                  .lin {
362
+                    width: 68.2%;
363
+                    height: 2rem;
364
+                    border-bottom: 0.1rem solid #e5e9ed;
365
+                    position: absolute;
366
+                    text-align: center;
367
+                    margin-left: 0%;
368
+                    margin-top: -0.8%;
369
+                    transform: rotate(6.5deg);
370
+                  }
371
+
372
+                  td {
373
+                    border: none;
374
+
375
+                    nz-input-number {
376
+                      width: 50px;
377
+                    }
378
+
379
+                    .coop {
380
+                      .line {
381
+                        margin: 10px;
382
+                      }
383
+
384
+                      span:nth-child(2n-1) {
385
+                        cursor: pointer;
386
+
387
+                        &:hover {
388
+                          color: @primary-color;
389
+                        }
390
+
391
+                        &:active {
392
+                          color: @primary-color;
393
+                        }
394
+                      }
395
+                    }
396
+                  }
397
+                }
398
+
399
+                tr:nth-child(even) {
400
+                  background: #fff;
401
+                }
402
+              }
403
+            }
404
+          }
405
+        }
406
+
407
+        //运送过程
408
+        .ysgcItem {
409
+          padding: 0px 0px 0px 0px; // background: #fff;
410
+
411
+          .ysgc_top {
412
+            height: 88px;
413
+            background: #fff;
414
+            border-radius: 10px 10px 0px 0px;
415
+            padding: 15px 22px 0px 22px;
416
+
417
+            .title {
418
+              span {
419
+                font-size: 18px;
420
+              }
421
+            }
422
+
423
+            .carrItems {
424
+              color: @primary-color;
425
+              border-color: @primary-color !important;
426
+            }
427
+
428
+            .process {
429
+              width: 80%;
430
+              display: flex;
431
+              justify-content: center;
432
+              align-items: center;
433
+              margin: 5px auto;
434
+              font-size: 14px;
435
+
436
+              .carrItem {
437
+                height: 40px;
438
+                line-height: 28px;
439
+                cursor: pointer;
440
+                display: flex;
441
+                justify-content: center;
442
+                align-items: center;
443
+
444
+                .carrItem_icon {
445
+                  width: 35px;
446
+                  height: 35px;
447
+                  border: 1px solid #e5e9ed;
448
+                  border-radius: 50%;
449
+                  text-align: center;
450
+                  line-height: 35px;
451
+                  margin-right: 10px;
452
+
453
+                  i {
454
+                    font-size: 18px;
455
+                  }
456
+                }
457
+              }
458
+
459
+              .carrItem1 {
460
+                float: left;
461
+                width: 45%;
462
+                height: 40px;
463
+                line-height: 28px;
464
+                padding-left: 10%;
465
+                cursor: pointer;
466
+
467
+                .carrItem_icon {
468
+                  width: 35px;
469
+                  height: 35px;
470
+                  border: 1px solid #e5e9ed;
471
+                  border-radius: 50%;
472
+                  text-align: center;
473
+                  line-height: 35px;
474
+                  float: left;
475
+                  margin-right: 10px;
476
+
477
+                  i {
478
+                    font-size: 18px;
479
+                  }
480
+                }
481
+              }
482
+            }
483
+          }
484
+
485
+          .ysgc_cont {
486
+            padding: 0px 240px 24px 240px;
487
+
488
+            textarea {
489
+              padding-right: 10%;
490
+            }
491
+
492
+            .icon_btn {
493
+              cursor: pointer;
494
+              font-size: 18px;
495
+            }
496
+
497
+            .icon_text {
498
+              display: block;
499
+              cursor: pointer;
500
+              position: relative;
501
+              right: 5px;
502
+            }
503
+
504
+            .item_type_cont {
505
+              height: 70px;
506
+              padding-top: 4px;
507
+
508
+              & > div {
509
+                height: 65px;
510
+                border: 1px solid #e5e9ed;
511
+                border-radius: 5px;
512
+                background: #fff;
513
+
514
+                .item_type_cont_L {
515
+                  height: 100%;
516
+                  width: 90%;
517
+                  float: left;
518
+                  padding: 2px 12px;
519
+                  overflow: auto;
520
+
521
+                  .item_yq {
522
+                    width: 24%;
523
+                    height: 28px;
524
+                    display: inline-block;
525
+                    border: 1px solid #e5e9ed;
526
+                    border-radius: 20px;
527
+                    text-align: center;
528
+                    line-height: 26px;
529
+                    background: #f9fafb;
530
+                    margin-right: 1%;
531
+                    margin-bottom: 2px;
532
+                    font-size: 12px;
533
+                    padding-left: 8px;
534
+
535
+                    span {
536
+                      width: 75%;
537
+                      float: left;
538
+                      overflow: hidden;
539
+                      text-overflow: ellipsis;
540
+                      white-space: nowrap;
541
+                    }
542
+
543
+                    i {
544
+                      font-size: 14px;
545
+                      color: #999;
546
+                      cursor: pointer;
547
+                    }
548
+                  }
549
+                }
550
+
551
+                .item_type_cont_R {
552
+                  height: 100%;
553
+                  width: 10%;
554
+                  float: right;
555
+                  text-align: center;
556
+                  padding-top: 15px;
557
+                  border-left: 1px solid #e5e9ed;
558
+                  cursor: pointer;
559
+
560
+                  i {
561
+                    display: block;
562
+                    font-size: 16px;
563
+                  }
564
+
565
+                  i:hover {
566
+                    color: @primary-color;
567
+                  }
568
+
569
+                  .icon_text {
570
+                    right: 1px;
571
+                  }
572
+                }
573
+              }
574
+            }
575
+          }
576
+        }
577
+
578
+        //关联信息
579
+        .glxxItem {
580
+          padding: 10px 15px 0px 15px;
581
+          background: #fff;
582
+
583
+          .tab_btn {
584
+            cursor: pointer;
585
+          }
586
+
587
+          .tab_btn:hover {
588
+            color: @primary-color;
589
+          }
590
+
591
+          .table_title {
592
+            font-size: 18px;
593
+            margin: 14px 0px;
594
+            text-align: center;
595
+          }
596
+
597
+          .thead {
598
+            background-image: linear-gradient(to right, @bg-start, @bg-end);
599
+
600
+            th {
601
+              background: transparent;
602
+              color: #fff;
603
+              text-align: center;
604
+              font-size: 14px;
605
+            }
606
+          }
607
+
608
+          .ant-table-body {
609
+            // border-bottom: 1px solid #e5e9ed;
610
+            background: #f9fafb;
611
+          }
612
+
613
+          .ant-table-tbody {
614
+            background: #f9fafb;
615
+            border: 1px solid #e5e9ed;
616
+
617
+            tr {
618
+              text-align: center;
619
+              font-size: 14px;
620
+              border: none;
621
+              color: #333;
622
+
623
+              td {
624
+                border: none; // font-size: 14px;
625
+
626
+                nz-input-number {
627
+                  width: 40px;
628
+                }
629
+
630
+                .coop {
631
+                  .line {
632
+                    margin: 10px;
633
+                  }
634
+
635
+                  span:nth-child(2n-1) {
636
+                    cursor: pointer;
637
+
638
+                    &:hover {
639
+                      color: @primary-color;
640
+                    }
641
+
642
+                    &:active {
643
+                      color: @primary-color;
644
+                    }
645
+                  }
646
+                }
647
+              }
648
+            }
649
+
650
+            tr:nth-child(even) {
651
+              background: #fff;
652
+            }
653
+          }
654
+        }
655
+
656
+        // 开通科室
657
+        .ktksItem {
658
+          padding: 0px 0px 0px 0px;
659
+          background: #fff;
660
+
661
+          .top {
662
+            width: 100%; // padding-bottom: 7px;
663
+            // border-bottom: 1px solid #e5e9ed;
664
+            position: relative;
665
+            overflow: hidden;
666
+            z-index: 2;
667
+            display: flex;
668
+            align-items: center;
669
+            justify-content: space-between;
670
+
671
+            .top_L {
672
+              width: 70%;
673
+              text-align: left;
674
+              display: flex;
675
+              flex-wrap: wrap;
676
+              align-items: center;
677
+              padding: 0 4px;
678
+              .top_L_item {
679
+                margin-left: 4px;
680
+              }
681
+
682
+              .label {
683
+                font-size: 14px;
684
+                color: #333;
685
+                margin-left: 0;
686
+              }
687
+
688
+              nz-select {
689
+                font-size: 12px;
690
+                width: 100px;
691
+              }
692
+
693
+              input {
694
+                font-size: 12px;
695
+                width: 100px;
696
+              }
697
+            }
698
+
699
+            .top_R {
700
+              border: 0px;
701
+
702
+              .btn {
703
+                margin-left: 10px;
704
+              }
705
+            }
706
+          }
707
+
708
+          .ktksItemList {
709
+            padding: 10px 15px 0px 15px;
710
+            .table {
711
+              min-height: 528px;
712
+            }
713
+
714
+            .operate {
715
+              float: right;
716
+              margin-bottom: 5px;
717
+
718
+              span {
719
+                font-size: 14px;
720
+              }
721
+
722
+              .num {
723
+                font-size: 18px;
724
+                color: @primary-color;
725
+              }
726
+            }
727
+
728
+            .thead {
729
+              background-image: linear-gradient(to right, @bg-start, @bg-end);
730
+
731
+              th {
732
+                background: transparent;
733
+                color: #fff;
734
+                text-align: center;
735
+                font-size: 14px;
736
+              }
737
+            }
738
+
739
+            .ant-table-body {
740
+              border-bottom: 1px solid #e5e9ed;
741
+              background: #f9fafb;
742
+            }
743
+
744
+            .ant-table-tbody {
745
+              background: #f9fafb;
746
+              border: 1px solid #e5e9ed;
747
+
748
+              .zzBontton {
749
+                & > td {
750
+                  border-bottom: 1px solid #e5e9ed;
751
+                }
752
+              }
753
+
754
+              tr {
755
+                text-align: center;
756
+                font-size: 14px;
757
+                border: none;
758
+                color: #333;
759
+
760
+                td {
761
+                  border: none; // font-size: 14px;
762
+
763
+                  nz-input-number {
764
+                    width: 40px;
765
+                  }
766
+
767
+                  .coop {
768
+                    .line {
769
+                      margin: 10px;
770
+                    }
771
+
772
+                    span:nth-child(2n-1) {
773
+                      cursor: pointer;
774
+
775
+                      &:hover {
776
+                        color: @primary-color;
777
+                      }
778
+
779
+                      &:active {
780
+                        color: @primary-color;
781
+                      }
782
+                    }
783
+                  }
784
+                }
785
+              }
786
+
787
+              tr:nth-child(even) {
788
+                background: #fff;
789
+              }
790
+            }
791
+          }
792
+
793
+          .pagination {
794
+            margin-top: 25px;
795
+            margin-bottom: 14px;
796
+            bottom: 12px;
797
+            right: 5px;
798
+            position: relative;
799
+            height: 30px;
800
+            .page {
801
+              position: absolute;
802
+              right: 5px;
803
+            }
804
+          }
805
+        }
806
+
807
+        .bottom {
808
+          height: 60px;
809
+          border-radius: 0px 0px 10px 10px;
810
+          padding: 10px 240px 0px 240px;
811
+          border-top: 0px;
812
+
813
+          button {
814
+            width: 80px;
815
+            height: 34px;
816
+            display: block;
817
+            margin: 0 auto;
818
+          }
819
+        }
820
+      }
821
+    }
822
+  }
823
+}

+ 192 - 0
src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.ts

@@ -0,0 +1,192 @@
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-specimen",
10
+  templateUrl: "./configuration-specimen.component.html",
11
+  styleUrls: ["./configuration-specimen.component.less"],
12
+})
13
+export class ConfigurationSpecimenComponent 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
+  deptNotAlert:any[] = [
21
+    {label:'是否开启',value: 0}
22
+  ];
23
+
24
+  // 收取时需扫描二维码
25
+  arriveScanCode:any[] = [
26
+    {label:'是否开启',value: 0}
27
+  ];
28
+
29
+  // 必须扫描动态二维码
30
+  arriveScanDynamicCode:any[] = [
31
+    {label:'是否开启',value: 0}
32
+  ];
33
+
34
+  // 配置
35
+  configs:any = {};
36
+  // 任务类型
37
+  tasktype:any = {};
38
+  searchTimerSubject = new Subject();
39
+  constructor(private mainService: MainService,private tool: ToolService,private msg: NzMessageService) {}
40
+
41
+  ngOnInit():void {
42
+    // todo
43
+    this.searchTimerSubject.pipe(debounceTime(500)).subscribe((v) => {
44
+      let fun = v[0];
45
+      fun.call(this, v[1]);
46
+    });
47
+    this.getDeptList();
48
+    this.getTaskType();
49
+  }
50
+
51
+  // 扫描时指定科室不提醒勾选项
52
+  changeDeptNotAlert(e){
53
+    console.log(e);
54
+    if(!e[0].checked){
55
+      this.deptNotAlertIds = [];
56
+    }
57
+  }
58
+  // 收取时需扫描二维码
59
+  changeArriveScanCode(e){
60
+    console.log(e);
61
+    if(!e[0].checked){
62
+      this.arriveScanDynamicCode[0].checked = false;
63
+    }
64
+  }
65
+  // 用户输入搜索
66
+  isLoading: boolean = false;
67
+  deptNotAlertIds:any[] = [];
68
+  deptList:any[] = [];
69
+  changeDept(e) {
70
+    this.searchTimer(this.getDeptList, e);
71
+  }
72
+  // 边输入边搜索节流阀
73
+  searchTimer(fun, e) {
74
+    this.isLoading = true;
75
+    this.searchTimerSubject.next([fun, e]);
76
+  }
77
+  openDeptList(flag){
78
+    if(flag){
79
+      this.getDeptList();
80
+    }
81
+  }
82
+  //获取科室列表
83
+  getDeptList(e:string = '') {
84
+    let postData:any = {
85
+      idx: 0,
86
+      sum: 20,
87
+      department: {
88
+        searchType: 1,// 简单查询
89
+        hospital: { id: this.hosId },
90
+        dept: e,
91
+      }
92
+    };
93
+    this.isLoading = true;
94
+    this.mainService.getFetchDataList("simple/data", "department", postData)
95
+      .subscribe((result) => {
96
+        this.isLoading = false;
97
+        if (result.status == 200) {
98
+          this.deptList = result.list || [];
99
+        }
100
+      });
101
+  }
102
+
103
+  // 切换tab
104
+  tabModal(tabModalName:string){
105
+    this.tabModalName = tabModalName;
106
+  }
107
+  // 保存
108
+  submitForm() {
109
+    if(!this.tasktype.id){
110
+      this.msg.create("warning", "请先配置患者陪检任务类型!");
111
+      return;
112
+    }
113
+    if(this.deptNotAlert[0].checked && !this.deptNotAlertIds.length){
114
+      this.msg.create("warning", "请选择科室!");
115
+      return;
116
+    }
117
+    let postData:any = {
118
+      id: this.configs.id,
119
+      taskType: this.tasktype.id,
120
+      hosId: this.hosId,
121
+      deptNotAlert: this.deptNotAlert[0].checked ? 1 : 0,
122
+      arriveScanCode: this.arriveScanCode[0].checked ? 1 : 0,
123
+      arriveScanDynamicCode: this.arriveScanDynamicCode[0].checked ? 1 : 0,
124
+      deptNotAlertIds: this.deptNotAlertIds.length ? this.deptNotAlertIds.toString() : undefined,
125
+    };
126
+    this.btnLoading = true;
127
+    this.mainService
128
+      .simplePost("addData", "taskTypeConfig", postData)
129
+      .subscribe((result) => {
130
+        this.btnLoading = false;
131
+        if (result.status == 200) {
132
+          this.getConfig();
133
+        }
134
+      });
135
+  }
136
+
137
+  //获取任务类型
138
+  getTaskType() {
139
+    let postData = {
140
+      idx: 0,
141
+      sum: 10,
142
+      taskType: {
143
+        simpleQuery: true,
144
+        hosId: {
145
+          id: this.hosId
146
+        },
147
+        associationType: {
148
+          key:"association_types",
149
+          value: 'specimen'
150
+        }
151
+      }
152
+    };
153
+    this.mainService
154
+      .getFetchDataList("simple/data", "taskType", postData)
155
+      .subscribe((result) => {
156
+        if (result.status == 200) {
157
+          this.tasktype = result.list[0] || {};
158
+          this.getConfig();
159
+        }
160
+      });
161
+  }
162
+
163
+  // 获取配置
164
+  getConfig() {
165
+    this.loading = true;
166
+    let postData = {
167
+      idx: 0,
168
+      sum: 10,
169
+      taskTypeConfig: {
170
+        taskTypeDTO: {
171
+          hosId: {
172
+            id: this.hosId
173
+          },
174
+          associationType: this.tasktype.associationType
175
+        }
176
+      }
177
+    };
178
+    this.mainService
179
+      .getFetchDataList("simple/data", "taskTypeConfig", postData)
180
+      .subscribe((result) => {
181
+        this.loading = false;
182
+        if (result.status == 200) {
183
+          this.configs = result.list[0] || {};
184
+          this.deptNotAlert[0].checked = this.configs.deptNotAlert == 1;
185
+          this.arriveScanCode[0].checked = this.configs.arriveScanCode == 1;
186
+          this.arriveScanDynamicCode[0].checked = this.configs.arriveScanDynamicCode == 1;
187
+          this.deptNotAlertIds = this.configs.deptNotAlertIds ? this.configs.deptNotAlertIds.split(',').map(v => +v) : [];
188
+          this.deptList = this.configs.deptNotAlertList || [];
189
+        }
190
+      });
191
+  }
192
+}

+ 1 - 1
src/app/components/incidentManagement/incident-detail/incident-detail.component.html

@@ -21,7 +21,7 @@
21 21
               <div class="col">故障描述:{{incidentData.description}}</div>
22 22
             </div>
23 23
             <div class="row">
24
-              <div class="col">详细地址:{{ incidentData.place?.building?.buildingName }}{{ incidentData.place?.floorName }}{{ incidentData.houseNumber }}</div>
24
+              <div class="col">详细地址:{{ incidentData.place?.building?.buildingName }}{{ incidentData.place ? incidentData.place.floorName + '层' : '' }}{{ incidentData.houseNumber }}</div>
25 25
             </div>
26 26
             <div class="row">
27 27
               <div class="col thumbs">

+ 1 - 1
src/app/components/incidentManagement/incident-handle-repair/incident-handle-repair.component.html

@@ -16,7 +16,7 @@
16 16
 </div>
17 17
 <div class="detailItem">
18 18
   <div class="name">详细地址:</div>
19
-  <div class="value">{{ incidentData.place ? incidentData.place.building.buildingName : '' }}{{ incidentData.place ? incidentData.place.floorName : '' }}{{ incidentData.houseNumber }}</div>
19
+  <div class="value">{{ incidentData.place ? incidentData.place.building.buildingName : '' }}{{ incidentData.place ? incidentData.place.floorName + '层' : '' }}{{ incidentData.houseNumber }}</div>
20 20
 </div>
21 21
 <div class="detailItem">
22 22
   <div class="name">报修图片:</div>

+ 1 - 1
src/app/components/incidentManagement/incident-ser-visit/incident-ser-visit.component.html

@@ -13,7 +13,7 @@
13 13
             <div class="col">故障描述:{{item.description}}</div>
14 14
           </div>
15 15
           <div class="row">
16
-            <div class="col">详细地址:{{ item.place ? item.place.building.buildingName : '' }}{{ item.place ? item.place.floorName : '' }}{{ item.houseNumber }} <span [innerHTML]="item.overtimeRemark"></span></div>
16
+            <div class="col">详细地址:{{ item.place ? item.place.building.buildingName : '' }}{{ item.place ? item.place.floorName + '层' : '' }}{{ item.houseNumber }} <span [innerHTML]="item.overtimeRemark"></span></div>
17 17
           </div>
18 18
           <div class="row">
19 19
             <div class="col">申请时间:{{ item.startDate | date: 'yyyy-MM-dd HH:mm'}}</div>

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

@@ -19,11 +19,20 @@ export class SelectMenuComponent implements OnInit {
19 19
 
20 20
   ngOnInit() {
21 21
     let menus = JSON.parse(localStorage.getItem("menu"));
22
-    let configurationCenter = menus.find(item => item.link == 'configurationCenter');
23
-    this.configurationCenterMenus = configurationCenter ? (configurationCenter.childrens || []) : [];
22
+    let configurationCenterMenus = [];
23
+    // 事件配置
24
+    let incidentConfig = menus.find(item => item.link == 'incidentConfig');
25
+    incidentConfig && configurationCenterMenus.push(incidentConfig);
26
+    // 三方配置
27
+    let otherConfig = menus.find(item => item.link == 'otherConfig');
28
+    otherConfig && configurationCenterMenus.push(otherConfig);
29
+    // 业务页面控制
30
+    let pageConfig = menus.find(item => item.link == 'pageConfig');
31
+    pageConfig && configurationCenterMenus.push(pageConfig);
32
+    this.configurationCenterMenus = configurationCenterMenus;
24 33
   }
25 34
   clickHandle(item){
26
-    this.router.navigateByUrl("configurationCenter/" + item.link);
35
+    this.router.navigateByUrl(item.link);
27 36
   }
28 37
   // 隐藏模态框
29 38
   hideModal() {

+ 2 - 2
src/app/guard/ConfigurationCenter.guard.ts

@@ -4,14 +4,14 @@ import { CanActivate, Router } from '@angular/router';
4 4
 @Injectable({
5 5
   providedIn: 'root'
6 6
 })
7
-export class ConfigurationCenterGuard implements CanActivate  {
7
+export class IncidentConfigGuard implements CanActivate  {
8 8
   constructor(public router: Router) { }
9 9
 
10 10
   canActivate(): boolean {
11 11
     const menus = JSON.parse(localStorage.getItem('menu'));
12 12
     let can = false;
13 13
     if (menus) {
14
-      can = menus.some(e => e.link == 'configurationCenter');
14
+      can = menus.some(e => e.link == 'incidentConfig');
15 15
     }
16 16
     if (!can) {
17 17
       this.router.navigate(['login']);

+ 22 - 0
src/app/guard/otherConfig.guard.ts

@@ -0,0 +1,22 @@
1
+import { Injectable } from '@angular/core';
2
+import { CanActivate, Router } from '@angular/router';
3
+
4
+@Injectable({
5
+  providedIn: 'root'
6
+})
7
+export class OtherConfigGuard implements CanActivate  {
8
+  constructor(public router: Router) { }
9
+
10
+  canActivate(): boolean {
11
+    const menus = JSON.parse(localStorage.getItem('menu'));
12
+    let can = false;
13
+    if (menus) {
14
+      can = menus.some(e => e.link == 'otherConfig');
15
+    }
16
+    if (!can) {
17
+      this.router.navigate(['login']);
18
+      return false
19
+    }
20
+    return true;
21
+  }
22
+}

+ 22 - 0
src/app/guard/pageConfig.guard.ts

@@ -0,0 +1,22 @@
1
+import { Injectable } from '@angular/core';
2
+import { CanActivate, Router } from '@angular/router';
3
+
4
+@Injectable({
5
+  providedIn: 'root'
6
+})
7
+export class PageConfigGuard implements CanActivate  {
8
+  constructor(public router: Router) { }
9
+
10
+  canActivate(): boolean {
11
+    const menus = JSON.parse(localStorage.getItem('menu'));
12
+    let can = false;
13
+    if (menus) {
14
+      can = menus.some(e => e.link == 'pageConfig');
15
+    }
16
+    if (!can) {
17
+      this.router.navigate(['login']);
18
+      return false
19
+    }
20
+    return true;
21
+  }
22
+}

+ 1 - 0
src/app/views/clinical-users-management/clinical-users-management.component.ts

@@ -335,6 +335,7 @@ export class ClinicalUsersManagementComponent implements OnInit {
335 335
         phone: that.validateForm.value.deptPhone,
336 336
         hospital: { id: that.add ? that.tool.getCurrentHospital().id : that.hosId },
337 337
         weixin: that.validateForm.value.weixin,
338
+        engineer: this.userTypes.find(v => v.id == that.validateForm.value.usertype).value == 4 ? 1 : 0,
338 339
       },
339 340
     };
340 341
     if (!that.validateForm.value.userGroup) {

+ 0 - 36
src/app/views/configuration-center/configuration-center-routing.module.ts

@@ -1,36 +0,0 @@
1
-import { NgModule } from '@angular/core';
2
-import { Routes, RouterModule } from '@angular/router';
3
-import { ConfigurationCenterComponent } from './configuration-center.component';
4
-
5
-
6
-const routes: Routes = [
7
-  {
8
-    path: '',
9
-    component: ConfigurationCenterComponent,
10
-    children: [
11
-      // 默认
12
-      {
13
-        path: '',
14
-        redirectTo: 'incidentConfig',
15
-        pathMatch: 'full'
16
-      },
17
-      {
18
-        // 事件配置
19
-        path: 'incidentConfig',
20
-        loadChildren: () => import('../incident-config/incident-config.module').then(m => m.IncidentConfigModule)
21
-      },
22
-      {
23
-        // 三方配置
24
-        path: 'otherConfig',
25
-        loadChildren: () => import('../other-config/other-config.module').then(m => m.OtherConfigModule)
26
-      }
27
-    ]
28
-  }
29
-];
30
-
31
-@NgModule({
32
-  imports: [RouterModule.forChild(routes)],
33
-  exports: [RouterModule]
34
-})
35
-export class ConfigurationCenterRoutingModule { }
36
-

+ 0 - 1
src/app/views/configuration-center/configuration-center.component.html

@@ -1 +0,0 @@
1
-<router-outlet></router-outlet>

+ 0 - 5
src/app/views/configuration-center/configuration-center.component.less

@@ -1,5 +0,0 @@
1
-@import "../../../../src/theme.less";
2
-:host{
3
-  width: 100%;
4
-}
5
-

+ 0 - 10
src/app/views/configuration-center/configuration-center.component.ts

@@ -1,10 +0,0 @@
1
-import { Component, OnInit } from "@angular/core";
2
-@Component({
3
-  selector: "app-configuration-center",
4
-  templateUrl: "./configuration-center.component.html",
5
-  styleUrls: ["./configuration-center.component.less"],
6
-})
7
-export class ConfigurationCenterComponent implements OnInit{
8
-  constructor(){}
9
-  ngOnInit(): void {}
10
-}

+ 0 - 19
src/app/views/configuration-center/configuration-center.module.ts

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

+ 3 - 3
src/app/views/fuwutai/fuwutai.component.html

@@ -220,7 +220,7 @@
220 220
 
221 221
                   <div class="didian">
222 222
                     <span class="left">
223
-                      <span nz-tooltip [nzTooltipTitle]="(data.data.place ? data.data.place.building.buildingName : '') + (data.data.place ? data.data.place.floorName : '') + data.data.houseNumber">{{ data.data.place ? data.data.place.building.buildingName : '' }}{{ data.data.place ? data.data.place.floorName : '' }}{{ data.data.houseNumber }}</span>
223
+                      <span nz-tooltip [nzTooltipTitle]="(data.data.place ? data.data.place.building.buildingName : '') + (data.data.place ? data.data.place.floorName + '层' : '') + data.data.houseNumber">{{ data.data.place ? data.data.place.building.buildingName : '' }}{{ data.data.place ? data.data.place.floorName + '层' : '' }}{{ data.data.houseNumber }}</span>
224 224
                       <i class="icon_transport transport-a-11111 ml8" *ngIf="data.data.reqAttachment"></i>
225 225
                     </span>
226 226
                   </div>
@@ -431,7 +431,7 @@
431 431
 
432 432
                   <div class="didian">
433 433
                     <span class="left">
434
-                      <span nz-tooltip [nzTooltipTitle]="(data.data.place ? data.data.place.building.buildingName : '') + (data.data.place ? data.data.place.floorName : '') + data.data.houseNumber">{{ data.data.place ? data.data.place.building.buildingName : '' }}{{ data.data.place ? data.data.place.floorName : '' }}{{ data.data.houseNumber }}</span>
434
+                      <span nz-tooltip [nzTooltipTitle]="(data.data.place ? data.data.place.building.buildingName : '') + (data.data.place ? data.data.place.floorName + '层' : '') + data.data.houseNumber">{{ data.data.place ? data.data.place.building.buildingName : '' }}{{ data.data.place ? data.data.place.floorName + '层' : '' }}{{ data.data.houseNumber }}</span>
435 435
                       <i class="icon_transport transport-a-11111 ml8" *ngIf="data.data.reqAttachment"></i>
436 436
                     </span>
437 437
                   </div>
@@ -635,7 +635,7 @@
635 635
 
636 636
                   <div class="didian">
637 637
                     <span class="left">
638
-                      <span nz-tooltip [nzTooltipTitle]="(data.data.place ? data.data.place.building.buildingName : '') + (data.data.place ? data.data.place.floorName : '') + data.data.houseNumber">{{ data.data.place ? data.data.place.building.buildingName : '' }}{{ data.data.place ? data.data.place.floorName : '' }}{{ data.data.houseNumber }}</span>
638
+                      <span nz-tooltip [nzTooltipTitle]="(data.data.place ? data.data.place.building.buildingName : '') + (data.data.place ? data.data.place.floorName + '层' : '') + data.data.houseNumber">{{ data.data.place ? data.data.place.building.buildingName : '' }}{{ data.data.place ? data.data.place.floorName + '层' : '' }}{{ data.data.houseNumber }}</span>
639 639
                       <i class="icon_transport transport-a-11111 ml8" *ngIf="data.data.reqAttachment"></i>
640 640
                     </span>
641 641
                   </div>

+ 22 - 11
src/app/views/fuwutai/fuwutai.component.ts

@@ -435,7 +435,7 @@ export class FuwutaiComponent implements OnInit {
435 435
           if (go === "&go&") {
436 436
             this.applyDept = data["startDept"].id;
437 437
             this.applyStartDept = data["startDept"];
438
-            this.incidentModel.incomingPhone = this.callNumber = data["phone"];
438
+            this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
439 439
             this.showPromptModal("建单", true, "", "closeGo");
440 440
           } else {
441 441
             if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
@@ -473,7 +473,7 @@ export class FuwutaiComponent implements OnInit {
473 473
         if (go === "&go&") {
474 474
           this.applyDept = data["startDept"].id;
475 475
           this.applyStartDept = data["startDept"];
476
-          this.incidentModel.incomingPhone = this.callNumber = data["phone"];
476
+          this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
477 477
           this.showPromptModal("建单", true, "", "closeGo");
478 478
         } else {
479 479
           if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
@@ -535,7 +535,7 @@ export class FuwutaiComponent implements OnInit {
535 535
         if (go === "&go&") {
536 536
           this.applyDept = data["startDept"].id;
537 537
           this.applyStartDept = data["startDept"];
538
-          this.incidentModel.incomingPhone = this.callNumber = data["phone"];
538
+          this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
539 539
           this.showPromptModal("建单", true, "", "closeGo");
540 540
         } else {
541 541
           if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
@@ -1338,21 +1338,32 @@ export class FuwutaiComponent implements OnInit {
1338 1338
         console.log(data);
1339 1339
         console.log(this.incidentModel);
1340 1340
         this.websocketLoading = false;
1341
-        this.incidentModel = {};
1342
-        this.incidentMsg = {};
1343
-        this.incidentModel.callID = data.callId || undefined;
1341
+
1342
+        // 200签入 201摘机 202来电
1344 1343
         if (data.status == 200 && data.phone) {
1344
+          this.incidentModel = {};
1345
+          this.incidentMsg = {};
1346
+          this.incidentModel.callID = data.callId || undefined;
1345 1347
           this.msg.info('签入成功');
1346 1348
           this.cancelBindExtensionNumber();
1347 1349
         } else if (data.status == 201 && data.phone) {
1348
-          this.incidentModel.incomingPhone = this.callNumber = data.phone;
1350
+          this.incidentModel = {};
1351
+          this.incidentMsg = {};
1352
+          this.incidentModel.callID = data.callId || undefined;
1353
+
1354
+          this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data.phone;
1349 1355
           this.searchBxDept();
1350 1356
         } else if (data.status == 201 && data.phone === "") {
1357
+          this.incidentModel = {};
1358
+          this.incidentMsg = {};
1359
+          this.incidentModel.callID = data.callId || undefined;
1351 1360
           //没绑定科室
1352 1361
           if (!this.newOrderShow && !this.newOrderShowOpen) {
1353 1362
             this.applyDept = null;
1354 1363
             this.showNewOrder("no", data.phone, true, '来电弹屏');
1355 1364
           }
1365
+        } else if (data.status == 202) {
1366
+          this.msg.warning(data.msg);
1356 1367
         }
1357 1368
       });
1358 1369
     }else if(sign === 'callCenter'){
@@ -1382,7 +1393,7 @@ export class FuwutaiComponent implements OnInit {
1382 1393
           console.log(result);
1383 1394
           if (result.list.length > 0) {
1384 1395
             //绑定了科室
1385
-            if (!this.newOrderShow && !this.newOrderShowOpen) {
1396
+            // if (!this.newOrderShow && !this.newOrderShowOpen) {
1386 1397
               let incidentModel:any = Object.assign({}, this.incidentModel);
1387 1398
               let incidentMsg:any = Object.assign({}, this.incidentMsg);
1388 1399
               incidentModel.department = result.list[0];
@@ -1400,7 +1411,7 @@ export class FuwutaiComponent implements OnInit {
1400 1411
               this.searchApplicationRequester();
1401 1412
               this.applyDeptMiddle = result.list[0];
1402 1413
               this.showNewOrder("yes", this.incidentModel.incomingPhone, true, '来电弹屏');
1403
-            }
1414
+            // }
1404 1415
           } else {
1405 1416
             //没绑定科室
1406 1417
             console.log(this.newOrderShow);
@@ -3294,7 +3305,7 @@ export class FuwutaiComponent implements OnInit {
3294 3305
       phone !== "&ks&" &&
3295 3306
       phone !== "&go&"
3296 3307
     ) {
3297
-      // this.incidentModel.incomingPhone = this.callNumber = phone;
3308
+      // this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = phone;
3298 3309
       this.applyDept = null;
3299 3310
       this.noArrives = []; //近期配送
3300 3311
     } else if (phone === "&ks&") {
@@ -3302,7 +3313,7 @@ export class FuwutaiComponent implements OnInit {
3302 3313
         (item) => item.id == this.applyDept
3303 3314
       );
3304 3315
       console.log('filter', filter)
3305
-      // this.incidentModel.incomingPhone = this.callNumber = filter[0].phone;
3316
+      // this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = filter[0].phone;
3306 3317
       console.log(this.callNumber); //ceshi
3307 3318
       if (this.currentTabIndex == "255") {
3308 3319
         //患者转运

+ 8 - 8
src/app/views/incident-config/incident-config.component.html

@@ -3,37 +3,37 @@
3 3
     <div class="tags">
4 4
       <div><i class="icon_transport transport-peizhizhongxin"></i>配置中心&emsp;&gt;&emsp;事件配置</div>
5 5
       <div class="tagList">
6
-        <span *ngFor="let tag of tagList" [ngClass]="{ active: activeTagId === tag.id }" (click)="clickTag(tag)">{{ tag.name }}</span>
6
+        <span *ngFor="let tag of tagList" [ngClass]="{ active: activeTagLink === tag.link }" (click)="clickTag(tag)">{{ tag.title }}</span>
7 7
       </div>
8 8
       <button nz-button class="btn default" (click)="goBack()">返回</button>
9 9
     </div>
10 10
   </div>
11 11
   <!-- 故障现象 -->
12
-  <ng-container *ngIf="activeTagId === 1">
12
+  <ng-container *ngIf="activeTagLink === 'incidentConfigCategory'">
13 13
     <app-configuration-category></app-configuration-category>
14 14
   </ng-container>
15 15
   <!-- 优先级 -->
16
-  <ng-container *ngIf="activeTagId === 2">
16
+  <ng-container *ngIf="activeTagLink === 'incidentConfigPriority'">
17 17
     <app-configuration-priority></app-configuration-priority>
18 18
   </ng-container>
19 19
   <!-- 数据字典 -->
20
-  <ng-container *ngIf="activeTagId === 3">
20
+  <ng-container *ngIf="activeTagLink === 'incidentConfigDictionary'">
21 21
     <app-configuration-dictionary [dictionaryKeyList]="dictionaryKeyList"></app-configuration-dictionary>
22 22
   </ng-container>
23 23
   <!-- 消息通知 -->
24
-  <ng-container *ngIf="activeTagId === 4">
24
+  <ng-container *ngIf="activeTagLink === 'incidentConfigMessage'">
25 25
     <app-configuration-message></app-configuration-message>
26 26
   </ng-container>
27 27
 	<!-- 工时管理 -->
28
-	<ng-container *ngIf="activeTagId === 5">
28
+	<ng-container *ngIf="activeTagLink === 'incidentConfigManHour'">
29 29
 	  <app-configuration-manHour></app-configuration-manHour>
30 30
 	</ng-container>
31 31
 	<!-- 科室绑定人员 -->
32
-	<ng-container *ngIf="activeTagId === 6">
32
+	<ng-container *ngIf="activeTagLink === 'incidentConfigDeptUser'">
33 33
 	  <app-configuration-deptUser></app-configuration-deptUser>
34 34
 	</ng-container>
35 35
   <!-- 院区配置 -->
36
-  <ng-container *ngIf="activeTagId === 7">
36
+  <ng-container *ngIf="activeTagLink === 'incidentConfigHospital'">
37 37
     <app-configuration-hospital></app-configuration-hospital>
38 38
   </ng-container>
39 39
 </div>

+ 13 - 10
src/app/views/incident-config/incident-config.component.ts

@@ -13,13 +13,13 @@ export class IncidentConfigComponent implements OnInit, AfterViewInit {
13 13
 
14 14
   // tab
15 15
   tagList:any = [
16
-    { id: 1, name: '故障现象',},
17
-    { id: 2, name: '优先级',},
18
-    { id: 3, name: '数据字典',},
19
-    { id: 4, name: '消息通知',},
20
-		{ id: 5, name: '工时管理',},
21
-		{ id: 6, name: '科室绑定人员',},
22
-    { id: 7, name: '院区配置',},
16
+    // { id: 1, title: '故障现象',},
17
+    // { id: 2, title: '优先级',},
18
+    // { id: 3, title: '数据字典',},
19
+    // { id: 4, title: '消息通知',},
20
+		// { id: 5, title: '工时管理',},
21
+		// { id: 6, title: '科室绑定人员',},
22
+    // { id: 7, title: '院区配置',},
23 23
   ];
24 24
 
25 25
   // 数据字典
@@ -36,13 +36,16 @@ export class IncidentConfigComponent implements OnInit, AfterViewInit {
36 36
   ngOnInit(): void {}
37 37
 
38 38
   ngAfterViewInit(){
39
-    this.clickTag(this.tagList[0]);
39
+    let menus = JSON.parse(localStorage.getItem("menu"));
40
+    let incidentConfig = menus.find(item => item.link == 'incidentConfig');
41
+    this.tagList = incidentConfig ? (incidentConfig.childrens || []) : [];
42
+    this.tagList.length && this.clickTag(this.tagList[0]);
40 43
   }
41 44
 
42 45
   // 点击tab
43
-  activeTagId:any = 1;
46
+  activeTagLink:any;
44 47
   clickTag(tag){
45
-    this.activeTagId = tag.id;
48
+    this.activeTagLink = tag.link;
46 49
   }
47 50
 
48 51
   // 返回

+ 1 - 1
src/app/views/incident-management/incident-management.component.html

@@ -79,7 +79,7 @@
79 79
             <td class="text_align_left">
80 80
               {{ data.hosName || '无' }}<br>
81 81
               {{ data.department?.dept || '无' }}<br>
82
-              {{ data.place ? data.place.building.buildingName : '' }}{{ data.place ? data.place.floorName : '' }}{{ data.houseNumber }}
82
+              {{ data.place ? data.place.building.buildingName : '' }}{{ data.place ? data.place.floorName + '层' : '' }}{{ data.houseNumber }}
83 83
             </td>
84 84
             <td class="text_align_left">
85 85
               {{ data.requester?.name || '无' }}<br>

+ 8 - 9
src/app/views/incident-management/incident-management.component.ts

@@ -277,8 +277,8 @@ export class IncidentManagementComponent implements OnInit {
277 277
       sum: this.pageSize,
278 278
       incident: {
279 279
         assignee: this.tool.getCurrentUserId(),
280
-        acceptDate: this.searchDTO.dateRange ? format(this.searchDTO.dateRange[0], 'yyyy-MM-dd HH:mm:ss') : undefined,
281
-        acceptDateEnd: this.searchDTO.dateRange ? format(this.searchDTO.dateRange[1], 'yyyy-MM-dd HH:mm:ss') : undefined,
280
+        acceptDate: (this.searchDTO.dateRange && this.searchDTO.dateRange[0]) ? format(this.searchDTO.dateRange[0], 'yyyy-MM-dd HH:mm:ss') : undefined,
281
+        acceptDateEnd: (this.searchDTO.dateRange && this.searchDTO.dateRange[1]) ? format(this.searchDTO.dateRange[1], 'yyyy-MM-dd HH:mm:ss') : undefined,
282 282
         incidentsign: this.searchDTO.incidentsign,
283 283
         department: this.searchDTO.department ? { id: this.searchDTO.department } : undefined,
284 284
         statusId: this.searchDTO.statusId || undefined,
@@ -301,7 +301,7 @@ export class IncidentManagementComponent implements OnInit {
301 301
       }
302 302
     }else{
303 303
         delete postData.incident.duty;
304
-        delete postData.incident.branch;
304
+        delete postData.incident.hosId;
305 305
     }
306 306
 
307 307
     postData.incident.queryTask = this.queryTask;
@@ -359,7 +359,7 @@ export class IncidentManagementComponent implements OnInit {
359 359
           }
360 360
         }else{
361 361
             delete incident.duty;
362
-            delete incident.branch;
362
+            delete incident.hosId;
363 363
         }
364 364
 
365 365
         incident.assignee = this.tool.getCurrentUserId();
@@ -558,12 +558,11 @@ export class IncidentManagementComponent implements OnInit {
558 558
   export() {
559 559
     let postData: any = {
560 560
       idx: 0,
561
-      sum: 9999,
561
+      sum: 99999,
562 562
       incident: {
563 563
         assignee: this.tool.getCurrentUserId(),
564
-        duty: this.tool.getCurrentHospital(),
565
-        acceptDate: this.searchDTO.dateRange ? format(this.searchDTO.dateRange[0], 'yyyy-MM-dd HH:mm:ss') : undefined,
566
-        acceptDateEnd: this.searchDTO.dateRange ? format(this.searchDTO.dateRange[1], 'yyyy-MM-dd HH:mm:ss') : undefined,
564
+        acceptDate: (this.searchDTO.dateRange && this.searchDTO.dateRange[0]) ? format(this.searchDTO.dateRange[0], 'yyyy-MM-dd HH:mm:ss') : undefined,
565
+        acceptDateEnd: (this.searchDTO.dateRange && this.searchDTO.dateRange[1]) ? format(this.searchDTO.dateRange[1], 'yyyy-MM-dd HH:mm:ss') : undefined,
567 566
         incidentsign: this.searchDTO.incidentsign,
568 567
         department: this.searchDTO.department ? { id: this.searchDTO.department } : undefined,
569 568
         statusId: this.searchDTO.statusId || undefined,
@@ -586,7 +585,7 @@ export class IncidentManagementComponent implements OnInit {
586 585
       }
587 586
     }else{
588 587
         delete postData.incident.duty;
589
-        delete postData.incident.branch;
588
+        delete postData.incident.hosId;
590 589
     }
591 590
 
592 591
     postData.incident.queryTask = this.queryTask;

+ 1 - 1
src/app/views/main/main.component.html

@@ -32,7 +32,7 @@
32 32
         <div class="left">
33 33
           <i class="icon_transport transport-tiaodu-fill green" *ngIf='deskRole' (click)="toFuwutai()" nz-tooltip nzTooltipTitle="调度台"></i>
34 34
           <i class="icon_transport transport-hushizhihanghuligongzuo green" *ngIf="nurseRole" (click)="toHuShi()" nz-tooltip nzTooltipTitle="护士端"></i>
35
-          <i class="icon_transport transport-peizhi1 green" *ngIf="configurationCenterRole" (click)="toConfigurationCenter()" nz-tooltip nzTooltipTitle="配置中心"></i>
35
+          <i class="icon_transport transport-peizhi1 green" *ngIf="incidentConfigRole || otherConfigRole" (click)="toConfigurationCenter()" nz-tooltip nzTooltipTitle="配置中心"></i>
36 36
           <i class="icon_transport transport-shangban green" *ngIf='PCCommutesToWork && userInfo.user && !userInfo.user.online' (click)="GoWork()" nz-tooltip nzTooltipTitle="我要上班"></i>
37 37
           <i class="icon_transport transport-shangban green" *ngIf='PCCommutesToWork && userInfo.user && userInfo.user.online' (click)="GoWork()" nz-tooltip nzTooltipTitle="我要下班"></i>
38 38
           <div class="dropdown" *ngIf="pharmacyRole || largeScreenRole || largeScreenRole2 || specimenViewRole || specimenViewRole2 || specimenRoomView || pathology || disinfectionSupplyRole">

+ 14 - 4
src/app/views/main/main.component.ts

@@ -32,7 +32,9 @@ export class MainComponent implements OnInit {
32 32
 	specimenRoomView: boolean = false; //标本间权限
33 33
 	pathology: boolean = false; //病理科权限
34 34
   disinfectionSupplyRole: boolean = false; //全局业务查看权限
35
-  configurationCenterRole: boolean = false; //配置中心权限
35
+  incidentConfigRole: boolean = false; //事件配置权限
36
+  otherConfigRole: boolean = false; //三方配置权限
37
+  pageConfigRole: boolean = false; //业务页面控制权限
36 38
   PCCommutesToWork: boolean = false; //PC上下班权限
37 39
   @ViewChild("osComponentRef1", {
38 40
     read: OverlayScrollbarsComponent,
@@ -303,9 +305,17 @@ export class MainComponent implements OnInit {
303 305
         this.disinfectionSupplyRole = true;
304 306
         console.log("全局业务查看权限");
305 307
       }
306
-      if (e.link == "configurationCenter") {
307
-        this.configurationCenterRole = true;
308
-        console.log("配置中心权限");
308
+      if (e.link == "incidentConfig") {
309
+        this.incidentConfigRole = true;
310
+        console.log("事件配置权限");
311
+      }
312
+      if (e.link == "otherConfig") {
313
+        this.otherConfigRole = true;
314
+        console.log("三方配置权限");
315
+      }
316
+      if (e.link == "pageConfig") {
317
+        this.pageConfigRole = true;
318
+        console.log("业务页面控制权限");
309 319
       }
310 320
       if (e.link == "PCCommutesToWork") {
311 321
         this.PCCommutesToWork = true;

+ 4 - 4
src/app/views/other-config/other-config.component.html

@@ -3,21 +3,21 @@
3 3
     <div class="tags">
4 4
       <div><i class="icon_transport transport-peizhizhongxin"></i>配置中心&emsp;&gt;&emsp;第三方配置</div>
5 5
       <div class="tagList">
6
-        <span *ngFor="let tag of tagList" [ngClass]="{ active: activeTagId === tag.id }" (click)="clickTag(tag)">{{ tag.name }}</span>
6
+        <span *ngFor="let tag of tagList" [ngClass]="{ active: activeTagLink === tag.link }" (click)="clickTag(tag)">{{ tag.title }}</span>
7 7
       </div>
8 8
       <button nz-button class="btn default" (click)="goBack()">返回</button>
9 9
     </div>
10 10
   </div>
11 11
   <!-- 呼叫中心 -->
12
-  <ng-container *ngIf="activeTagId === 1">
12
+  <ng-container *ngIf="activeTagLink === 'otherConfigCallcenter'">
13 13
     <app-configuration-callcenter></app-configuration-callcenter>
14 14
   </ng-container>
15 15
   <!-- 微信配置 -->
16
-  <ng-container *ngIf="activeTagId === 2">
16
+  <ng-container *ngIf="activeTagLink === 'otherConfigWechat'">
17 17
     <app-configuration-wechat></app-configuration-wechat>
18 18
   </ng-container>
19 19
   <!-- 数据字典 -->
20
-  <ng-container *ngIf="activeTagId === 3">
20
+  <ng-container *ngIf="activeTagLink === 'otherConfigDictionary'">
21 21
     <app-configuration-dictionary [dictionaryKeyList]="dictionaryKeyList"></app-configuration-dictionary>
22 22
   </ng-container>
23 23
 </div>

+ 10 - 6
src/app/views/other-config/other-config.component.ts

@@ -13,9 +13,9 @@ export class OtherConfigComponent implements OnInit, AfterViewInit {
13 13
 
14 14
   // tab
15 15
   tagList:any = [
16
-    { id: 1, name: '呼叫中心',},
17
-    { id: 2, name: '微信配置',},
18
-    { id: 3, name: '数据字典',},
16
+    // { id: 1, name: '呼叫中心',},
17
+    // { id: 2, name: '微信配置',},
18
+    // { id: 3, name: '数据字典',},
19 19
   ];
20 20
 
21 21
   // 数据字典
@@ -26,13 +26,17 @@ export class OtherConfigComponent implements OnInit, AfterViewInit {
26 26
   ngOnInit(): void {}
27 27
 
28 28
   ngAfterViewInit(){
29
-    this.clickTag(this.tagList[0]);
29
+    let menus = JSON.parse(localStorage.getItem("menu"));
30
+    let otherConfig = menus.find(item => item.link == 'otherConfig');
31
+    this.tagList = otherConfig ? (otherConfig.childrens || []) : [];
32
+    this.tagList.length && this.clickTag(this.tagList[0]);
33
+    this.tagList.length && this.clickTag(this.tagList[0]);
30 34
   }
31 35
 
32 36
   // 点击tab
33
-  activeTagId:any = 1;
37
+  activeTagLink:any = 1;
34 38
   clickTag(tag){
35
-    this.activeTagId = tag.id;
39
+    this.activeTagLink = tag.link;
36 40
   }
37 41
 
38 42
   // 返回

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

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

+ 17 - 0
src/app/views/page-config/page-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 === 'pageConfigSpecimen'">
13
+    <app-configuration-specimen></app-configuration-specimen>
14
+  </ng-container>
15
+</div>
16
+
17
+

+ 57 - 0
src/app/views/page-config/page-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/page-config/page-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-page-config",
6
+  templateUrl: "./page-config.component.html",
7
+  styleUrls: ["./page-config.component.less"],
8
+})
9
+export class PageConfigComponent implements OnInit, AfterViewInit {
10
+  constructor(
11
+    private _location: Location,
12
+  ){}
13
+
14
+  // tab
15
+  tagList:any = [
16
+    // { id: 1, name: '标本',},
17
+  ];
18
+
19
+  ngOnInit(): void {}
20
+
21
+  ngAfterViewInit(){
22
+    let menus = JSON.parse(localStorage.getItem("menu"));
23
+    let pageConfig = menus.find(item => item.link == 'pageConfig');
24
+    this.tagList = pageConfig ? (pageConfig.childrens || []) : [];
25
+    this.tagList.length && this.clickTag(this.tagList[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/page-config/page-config.module.ts

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

+ 1 - 0
src/app/views/users-management/users-management.component.ts

@@ -418,6 +418,7 @@ export class UsersManagementComponent implements OnInit {
418 418
         hospital: { id: that.hosId },
419 419
         weixin: that.validateForm.value.weixin,
420 420
         companyId: that.validateForm.value.companyId || undefined,
421
+        engineer: that.validateForm.value.usertype == 4 ? 1 : 0,
421 422
       },
422 423
     };
423 424
     if (!that.validateForm.value.userGroup) {

+ 3 - 0
src/common.less

@@ -1,6 +1,9 @@
1 1
 .ant-table-tbody tr:nth-of-type(2n){
2 2
   background-color: #e9f7e9!important;
3 3
 }
4
+.w320px {
5
+  width: 320px;
6
+}
4 7
 .pt0{
5 8
   padding-top: 0!important;
6 9
 }