seimin месяцев назад: 8
Родитель
Сommit
2c68013706

+ 1 - 1
proxy.conf.json

@@ -1,6 +1,6 @@
1 1
 {
2 2
   "/service": {
3
-		"target": "http://192.168.4.105",
3
+		"target": "http://192.168.3.108",
4 4
     "logLevel": "debug",
5 5
     "changeOrigin": true,
6 6
     "pathRewrite": {

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

@@ -7,6 +7,24 @@ const routes: Routes = [
7 7
   {
8 8
     path: '',
9 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
+    ]
10 28
   }
11 29
 ];
12 30
 

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

@@ -1,381 +1 @@
1
-<div class="configurationCenter">
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: activeTagId === tag.id }" (click)="clickTag(tag)">{{ tag.name }}</span>
7
-      </div>
8
-      <button nz-button class="btn default" (click)="goBack()">返回</button>
9
-    </div>
10
-  </div>
11
-  <!-- 故障现象 -->
12
-  <ng-container *ngIf="activeTagId === 1">
13
-    <div class="hospitalConfig">
14
-      <nz-radio-group [(ngModel)]="hospitalConfig" (ngModelChange)="changeHospitalConfig($event)">
15
-        <label nz-radio [nzValue]="item.id" *ngFor="let item of hospitalConfigList">{{ item.name }}</label>
16
-      </nz-radio-group>
17
-    </div>
18
-
19
-    <div class="content">
20
-      <div class="contentInner">
21
-        <div class="address">
22
-          <div class="contentHead">一级故障现象<button nz-button nzType="primary" nzSize="small" (click)="addCategoryModal(1)">新增</button></div>
23
-          <overlay-scrollbars #osComponentRef1 class="contentBody">
24
-            <nz-spin nzSimple [nzSpinning]="categoryLoading1" class="mt8 text_align_center"></nz-spin>
25
-            <div [hidden]="categoryLoading1" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory1.id }" (click)="clickCategory(item, 1)" *ngFor="let item of categoryList1">{{ item.category }}</div>
26
-          </overlay-scrollbars>
27
-        </div>
28
-        <div class="address">
29
-          <div class="contentHead">二级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory1.id" (click)="addCategoryModal(2)">新增</button></div>
30
-          <overlay-scrollbars #osComponentRef2 class="contentBody">
31
-            <nz-spin nzSimple [nzSpinning]="categoryLoading2" class="mt8 text_align_center"></nz-spin>
32
-            <div [hidden]="categoryLoading2" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory2.id }" (click)="clickCategory(item, 2)" *ngFor="let item of categoryList2">{{ item.category }}</div>
33
-          </overlay-scrollbars>
34
-        </div>
35
-        <div class="address">
36
-          <div class="contentHead">三级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory2.id" (click)="addCategoryModal(3)">新增</button></div>
37
-          <overlay-scrollbars #osComponentRef3 class="contentBody">
38
-            <nz-spin nzSimple [nzSpinning]="categoryLoading3" class="mt8 text_align_center"></nz-spin>
39
-            <div [hidden]="categoryLoading3" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory3.id }" (click)="clickCategory(item, 3)" *ngFor="let item of categoryList3">{{ item.category }}</div>
40
-          </overlay-scrollbars>
41
-        </div>
42
-        <div class="addressAssign">
43
-          <div class="contentHead">
44
-            <div class="title" title="{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}</div>
45
-            <div class="btns" *ngIf="activeCategory1.id || activeCategory2.id || activeCategory3.id">
46
-              <button nz-button nzType="primary" nzSize="small" (click)="showDelModal(data, hospitalConfig === 1 ? '您确认向下复制您的配置信息吗?' : '您确认向下复制您的配置吗?将会移除各科室的配置,使用当前配置进行覆盖。','向下复制','copy')" *ngIf="currentChildrenCategoryList">向下复制</button>
47
-              <button nz-button nzType="primary" nzSize="small" class="ml8" *ngIf="hospitalConfig === 2" (click)="addConfigModal()">新增</button>
48
-            </div>
49
-          </div>
50
-          <div class="contentBody" id="categoryTable">
51
-            <div class="list-template">
52
-              <div class="list-template__content">
53
-                <div class="list-template__bottom">
54
-                  <nz-table class="list-template__nzTable" [nzData]="categoryConfigList" nzSize="middle" [nzShowPagination]="false"
55
-                    [nzLoading]="loading1" [nzScroll]="{ y: tableCategoryHeight + 'px' }">
56
-                    <thead>
57
-                      <tr class="thead">
58
-                        <th nzWidth="16%">院区</th>
59
-                        <th nzWidth="16%">责任部门</th>
60
-                        <th nzWidth="16%">优先级</th>
61
-                        <th nzWidth="16%">积分</th>
62
-                        <th nzWidth="16%">维修人|组</th>
63
-                        <th nzWidth="20%">操作</th>
64
-                      </tr>
65
-                    </thead>
66
-                    <tbody>
67
-                      <tr *ngFor="let data of categoryConfigList;let i = index">
68
-                        <td>{{data.hospitalDTO?.hosName}}</td>
69
-                        <td>{{data.dutyDTO?.hosName}}</td>
70
-                        <td>{{data.priorityDTO?.name}}</td>
71
-                        <td>{{data.score?.value}}</td>
72
-                        <td>{{data.userGroup === 1 ? data.userDTO?.name : (data.userGroup === 2 ? data.groupDTO?.groupName : '')}}</td>
73
-                        <td>
74
-                          <div class="coop">
75
-                            <span (click)="showDelModal(data,'您确认要删除吗?','删除','delConfig')">删除</span>
76
-                            <span (click)="editConfig(data)">编辑</span>
77
-                          </div>
78
-                        </td>
79
-                      </tr>
80
-                    </tbody>
81
-                  </nz-table>
82
-                </div>
83
-              </div>
84
-            </div>
85
-          </div>
86
-        </div>
87
-      </div>
88
-    </div>
89
-  </ng-container>
90
-  <!-- 优先级 -->
91
-  <ng-container *ngIf="activeTagId === 2">
92
-    <div class="content priority">
93
-      <div class="contentInner">
94
-        <div class="list-template" id="priorityTable">
95
-          <div class="list-template__content">
96
-            <div class="list-template__bottom">
97
-              <div class="list-template__top" nz-row>
98
-                <div nz-col nzLg="24" class="list-template__btns">
99
-                  <button nz-button class="btn default" (click)="addPriorityModal()">新增</button>
100
-                </div>
101
-              </div>
102
-              <nz-table class="list-template__nzTable" [nzData]="priorityList" nzSize="middle" [nzShowPagination]="false"
103
-                [nzLoading]="loading1" [nzScroll]="{ y: tablePriorityHeight + 'px' }">
104
-                <thead>
105
-                  <tr class="thead">
106
-                    <th nzWidth="20%">优先级名称</th>
107
-                    <th nzWidth="20%">排序</th>
108
-                    <th nzWidth="20%">响应时间(分钟)</th>
109
-                    <th nzWidth="20%">解决时间(分钟)</th>
110
-                    <th nzWidth="20%">操作</th>
111
-                  </tr>
112
-                </thead>
113
-                <tbody>
114
-                  <tr *ngFor="let data of priorityList;let i = index">
115
-                    <td>{{data.name}}</td>
116
-                    <td>{{data.orders}}</td>
117
-                    <td>{{data.responseTime}}</td>
118
-                    <td>{{data.handleTime}}</td>
119
-                    <td>
120
-                      <div class="coop">
121
-                        <span (click)="showDelModal(data,'您确认要删除吗?','删除','delPriority')">删除</span>
122
-                        <span (click)="editPriority(data)">编辑</span>
123
-                      </div>
124
-                    </td>
125
-                  </tr>
126
-                </tbody>
127
-              </nz-table>
128
-            </div>
129
-          </div>
130
-        </div>
131
-      </div>
132
-    </div>
133
-  </ng-container>
134
-  <!-- 数据字典 -->
135
-  <ng-container *ngIf="activeTagId === 3">
136
-    <div class="content" id="dictionary">
137
-      <div class="contentInner">
138
-        <div class="address">
139
-          <overlay-scrollbars #osComponentRef5 class="contentBody">
140
-            <div class="contentItem" [title]="item.name" [ngClass]="{ active: item.id === activeDictionaryKey.id }" (click)="clickDictionaryKey(item)" *ngFor="let item of dictionaryKeyList">{{ item.name }}</div>
141
-          </overlay-scrollbars>
142
-        </div>
143
-        <div class="addressAssign">
144
-          <div class="contentBody">
145
-            <div class="dictionaryRow">
146
-              <div class="orders">排序号</div>
147
-              <div class="name">键</div>
148
-              <div class="value">值</div>
149
-            </div>
150
-            <form nz-form [formGroup]="validateDictionaryForm" class="w100">
151
-              <div class="dictionaryRow" *ngFor="let data of dictionaryList;let i = index;">
152
-                <div class="orders">
153
-                  <nz-form-item>
154
-                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入排序号!">
155
-                      <nz-input-group>
156
-                        <nz-input-number [formControlName]="'orders_' + data.id" class="ordersInput"></nz-input-number>
157
-                      </nz-input-group>
158
-                    </nz-form-control>
159
-                  </nz-form-item>
160
-                </div>
161
-                <div class="name">
162
-                  <nz-form-item>
163
-                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入键!">
164
-                      <nz-input-group>
165
-                        <input [formControlName]="'name_' + data.id" nz-input class="nameInput">
166
-                      </nz-input-group>
167
-                    </nz-form-control>
168
-                  </nz-form-item>
169
-                </div>
170
-                <div class="value">
171
-                  <nz-form-item>
172
-                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入值!">
173
-                      <nz-input-group>
174
-                        <input [formControlName]="'value_' + data.id" nz-input class="valueInput">
175
-                      </nz-input-group>
176
-                    </nz-form-control>
177
-                  </nz-form-item>
178
-                  <i class="icon_transport transport-tag27fuben ml8" (click)="addField(i)"></i>
179
-                  <i class="icon_transport transport-shanchu1 ml8" *ngIf="dictionaryList.length > 1 && !data.system" (click)="removeField(data, i)"></i>
180
-                </div>
181
-              </div>
182
-            </form>
183
-          </div>
184
-          <div class="contentBtns">
185
-            <button nz-button nzType="primary" class="ml8" (click)="saveDictionary()">保存</button>
186
-          </div>
187
-        </div>
188
-      </div>
189
-    </div>
190
-  </ng-container>
191
-</div>
192
-
193
-<!-- 操作成功/失败提示框 -->
194
-<app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
195
-  [info]="promptInfo">
196
-</app-prompt-modal>
197
-
198
-<!-- 删除模态框 -->
199
-<app-dialog-delete [delModal]="delModal" (hideDelModalEvent)="hideDelModal()" [btnLoading]="btnLoading"
200
-(confirmDelEvent)="confirmDel()" [content]="tipsMsg1"></app-dialog-delete>
201
-
202
-<!-- 新增/编辑优先级模态框 -->
203
-<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalPriority">
204
-  <div class="modalBody">
205
-    <div class="title">{{modelName}}优先级<i class="icon_transport transport-guanbi" (click)="hidePriorityModal()"></i></div>
206
-    <div class="content">
207
-      <form nz-form [formGroup]="validatePriorityForm" class="addForm">
208
-        <nz-form-item>
209
-          <nz-form-label [nzSpan]="6" nzRequired nzFor="name">优先级名称</nz-form-label>
210
-          <nz-form-control [nzSpan]="18" nzErrorTip="请输入优先级名称!">
211
-            <nz-input-group>
212
-              <input formControlName="name" nz-input placeholder="请输入优先级名称">
213
-            </nz-input-group>
214
-          </nz-form-control>
215
-        </nz-form-item>
216
-        <nz-form-item>
217
-          <nz-form-label [nzSpan]="6" nzRequired nzFor="orders">排&nbsp;&nbsp;&nbsp;序&nbsp;&nbsp;&nbsp;号</nz-form-label>
218
-          <nz-form-control [nzSpan]="18" nzErrorTip="请输入排序号!">
219
-            <nz-input-group>
220
-              <nz-input-number class="w100" formControlName="orders" nzPlaceHolder="请输入排序号" [nzMin]="0" [nzStep]="1" [nzPrecision]="0"></nz-input-number>
221
-            </nz-input-group>
222
-          </nz-form-control>
223
-        </nz-form-item>
224
-        <nz-form-item>
225
-          <nz-form-label [nzSpan]="6" nzRequired nzFor="responseTime">响&nbsp;应&nbsp;时&nbsp;间</nz-form-label>
226
-          <nz-form-control [nzSpan]="18" nzErrorTip="请输入响应时间(分钟)!">
227
-            <nz-input-group>
228
-              <nz-input-number class="w100" formControlName="responseTime" nzPlaceHolder="请输入响应时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
229
-            </nz-input-group>
230
-          </nz-form-control>
231
-        </nz-form-item>
232
-        <nz-form-item>
233
-          <nz-form-label [nzSpan]="6" nzRequired nzFor="handleTime">解&nbsp;决&nbsp;时&nbsp;间</nz-form-label>
234
-          <nz-form-control [nzSpan]="18" nzErrorTip="请输入解决时间(分钟)!">
235
-            <nz-input-group>
236
-              <nz-input-number class="w100" formControlName="handleTime" nzPlaceHolder="请输入解决时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
237
-            </nz-input-group>
238
-          </nz-form-control>
239
-        </nz-form-item>
240
-      </form>
241
-    </div>
242
-    <div class=" display_flex justify-content_flex-center">
243
-      <button nzType="primary" nz-button (click)="submitPriorityForm()" [nzLoading]="btnLoading">确认</button>
244
-      <button class="btn cancel" nz-button nzType="default" (click)="hidePriorityModal()">取消</button>
245
-    </div>
246
-  </div>
247
-</div>
248
-
249
-<!-- 新增/编辑故障现象模态框 -->
250
-<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalCategory">
251
-  <div class="modalBody">
252
-    <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideCategoryModal()"></i></div>
253
-    <div class="content">
254
-      <div class="tips" *ngIf="coopType === 1">您将添加一级故障现象,请输入故障现象</div>
255
-      <div class="tips" *ngIf="coopType === 2">您将在“<span class="red">{{activeCategory1.category}}</span>”下新增故障现象,请输入故障现象</div>
256
-      <div class="tips" *ngIf="coopType === 3">您将在“<span class="red">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}</span>”下新增故障现象,请输入故障现象</div>
257
-      <form nz-form [formGroup]="validateCategoryForm" class="addForm">
258
-        <nz-form-item>
259
-          <nz-form-control [nzSpan]="24" nzErrorTip="请输入故障现象名称!">
260
-            <nz-input-group>
261
-              <textarea formControlName="name" nz-input placeholder="请输入故障现象名称" [nzAutosize]="{minRows: 3}"></textarea>
262
-            </nz-input-group>
263
-          </nz-form-control>
264
-        </nz-form-item>
265
-      </form>
266
-    </div>
267
-    <div class=" display_flex justify-content_flex-center">
268
-      <button nzType="primary" nz-button (click)="submitCategoryForm()" [nzLoading]="btnLoading">确认</button>
269
-      <button class="btn cancel" nz-button nzType="default" (click)="hideCategoryModal()">取消</button>
270
-    </div>
271
-  </div>
272
-</div>
273
-
274
-<!-- 新增/编辑关联模态框 -->
275
-<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalConfig">
276
-  <div class="modalBody">
277
-    <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideConfigModal()"></i></div>
278
-    <div class="content">
279
-      <form nz-form [formGroup]="validateConfigForm" class="addForm">
280
-        <nz-form-item>
281
-          <nz-form-label [nzSpan]="5" nzRequired nzFor="hosId">院区</nz-form-label>
282
-          <nz-form-control [nzSpan]="19" nzErrorTip="请选择院区!">
283
-            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="hosId" nzShowSearch
284
-              nzPlaceHolder="请选择院区" nzServerSearch (ngModelChange)="changeHospital($event)" [nzDisabled]="!add">
285
-              <ng-container *ngFor="let data of hospitalList">
286
-                <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
287
-              </ng-container>
288
-              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
289
-                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
290
-              </nz-option>
291
-            </nz-select>
292
-          </nz-form-control>
293
-        </nz-form-item>
294
-        <nz-form-item>
295
-          <nz-form-label [nzSpan]="5" nzRequired nzFor="dutyId">责任部门</nz-form-label>
296
-          <nz-form-control [nzSpan]="19" nzErrorTip="请选择责任部门!">
297
-            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="dutyId" nzShowSearch
298
-              nzPlaceHolder="请选择责任部门" nzServerSearch (ngModelChange)="changeDuty($event)" [nzDisabled]="!add">
299
-              <ng-container *ngFor="let data of dutyList">
300
-                <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
301
-              </ng-container>
302
-              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
303
-                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
304
-              </nz-option>
305
-            </nz-select>
306
-          </nz-form-control>
307
-        </nz-form-item>
308
-        <nz-form-item>
309
-          <nz-form-label [nzSpan]="5" nzRequired nzFor="priority">优先级</nz-form-label>
310
-          <nz-form-control [nzSpan]="19" nzErrorTip="请选择优先级!">
311
-            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="priority" nzShowSearch
312
-            nzPlaceHolder="请选择优先级" nzServerSearch>
313
-              <ng-container *ngFor="let option of priority_c_List">
314
-                <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
315
-              </ng-container>
316
-              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
317
-                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
318
-              </nz-option>
319
-            </nz-select>
320
-          </nz-form-control>
321
-        </nz-form-item>
322
-        <nz-form-item>
323
-          <nz-form-label [nzSpan]="5" nzRequired nzFor="score">积分</nz-form-label>
324
-          <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
325
-            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="score" nzShowSearch
326
-              nzPlaceHolder="请选择积分" nzServerSearch>
327
-              <ng-container *ngFor="let data of scoreList">
328
-                <nz-option *ngIf="!isLoading" [nzLabel]="data.name" [nzValue]="data.id"></nz-option>
329
-              </ng-container>
330
-              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
331
-                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
332
-              </nz-option>
333
-            </nz-select>
334
-          </nz-form-control>
335
-        </nz-form-item>
336
-        <nz-form-item>
337
-          <nz-form-label [nzSpan]="5" nzRequired nzFor="userGroup">分配方式</nz-form-label>
338
-          <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
339
-            <nz-radio-group formControlName="userGroup" (ngModelChange)="changeUserGroup($event)">
340
-              <label nz-radio [nzValue]="1">人</label>
341
-              <label nz-radio [nzValue]="2">组</label>
342
-            </nz-radio-group>
343
-          </nz-form-control>
344
-        </nz-form-item>
345
-        <nz-form-item>
346
-          <nz-form-label [nzSpan]="5" nzRequired nzFor="groupId">维修组</nz-form-label>
347
-          <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修组!">
348
-            <nz-select (nzOnSearch)="changeInp('group', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="groupId" nzPlaceHolder="请选择维修组" (ngModelChange)="changeGroup($event)">
349
-              <ng-container *ngFor="let option of groupList">
350
-                <nz-option *ngIf="!isLoading" [nzLabel]="option.groupName" [nzValue]="option.id"></nz-option>
351
-              </ng-container>
352
-              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
353
-                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
354
-              </nz-option>
355
-            </nz-select>
356
-          </nz-form-control>
357
-        </nz-form-item>
358
-        <nz-form-item *ngIf="validateConfigForm.value.userGroup === 1">
359
-          <nz-form-label [nzSpan]="5" nzRequired nzFor="userId">维修人</nz-form-label>
360
-          <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修人!">
361
-            <nz-select (nzOnSearch)="changeInp('user', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="userId" nzPlaceHolder="请选择维修人">
362
-              <ng-container *ngFor="let option of userList">
363
-                <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
364
-              </ng-container>
365
-              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
366
-                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
367
-              </nz-option>
368
-            </nz-select>
369
-          </nz-form-control>
370
-        </nz-form-item>
371
-      </form>
372
-    </div>
373
-    <div class=" display_flex justify-content_flex-center">
374
-      <button nzType="primary" nz-button (click)="submitConfigForm()" [nzLoading]="btnLoading">确认</button>
375
-      <button class="btn cancel" nz-button nzType="default" (click)="hideConfigModal()">取消</button>
376
-    </div>
377
-  </div>
378
-</div>
379
-
380
-<!-- 遮罩 -->
381
-<app-mask *ngIf="maskFlag"></app-mask>
1
+<router-outlet></router-outlet>

+ 2 - 389
src/app/views/configuration-center/configuration-center.component.less

@@ -1,392 +1,5 @@
1 1
 @import "../../../../src/theme.less";
2
-:host {
2
+:host{
3 3
   width: 100%;
4
-  .list-template__nzTable,
5
-  .list-template__bottom{
6
-    padding: 0!important;
7
-    border: none!important;
8
-    background: #fff!important;
9
-  }
10
-  .list-template{
11
-    width: 100%!important;
12
-    height: 100%!important;
13
-  }
14
-  #dictionary{
15
-    margin: 24px 16px;
16
-    .addressAssign{
17
-      flex: 7;
18
-    }
19
-    .contentItem{
20
-      margin: 0 16px;
21
-      padding: 8px;
22
-      text-align: center;
23
-      &.active{
24
-        background-color: @primary-color;
25
-        color: #fff;
26
-        border-radius: 4px;
27
-      }
28
-    }
29
-    .contentBody{
30
-      padding: 16px;
31
-    }
32
-    ::ng-deep .ant-form-item{
33
-      margin-bottom: 0;
34
-    }
35
-    .dictionaryRow{
36
-      display: flex;
37
-      align-items: center;
38
-      justify-content: center;
39
-      gap: 16px;
40
-      .orders{
41
-        flex: 1;
42
-        display: flex;
43
-        justify-content: flex-end;
44
-        align-items: center;
45
-      }
46
-      .name{
47
-        width: 100px;
48
-        display: flex;
49
-        justify-content: flex-end;
50
-        align-items: center;
51
-      }
52
-      .value{
53
-        flex: 3;
54
-        display: flex;
55
-        align-items: center;
56
-        .valueInput{
57
-          width: 600px;
58
-        }
59
-        .icon_transport{
60
-          font-size: 20px;
61
-          color: #8a8a8a;
62
-          cursor: pointer;
63
-        }
64
-      }
65
-
66
-    }
67
-  }
68
-  .configurationCenter{
69
-    padding-bottom: 24px;
70
-    height: 100%;
71
-    display: flex;
72
-    flex-direction: column;
73
-    justify-content: space-between;
74
-    background-color: #F0F2F5;
75
-    .tagsAndTemplete{
76
-      height: 64px;
77
-      display: flex;
78
-      justify-content: space-between;
79
-      align-items: center;
80
-      .tags{
81
-        height: 100%;
82
-        background: #fff;
83
-        flex: 1;
84
-        padding: 16px 24px;
85
-        display: flex;
86
-        align-items: center;
87
-        justify-content: space-between;
88
-        position: relative;
89
-        .transport-peizhizhongxin{
90
-          color: @primary-color;
91
-          font-size: 20px;
92
-          margin-right: 8px;;
93
-        }
94
-        .tagList{
95
-          width: 100%;
96
-          position: absolute;
97
-          left: 0;
98
-          top: 50%;
99
-          transform: translateY(-50%);
100
-          display: flex;
101
-          justify-content: center;
102
-          align-items: center;
103
-          gap: 48px;
104
-          span{
105
-            cursor: pointer;
106
-            &.active{
107
-              color: @primary-color;
108
-            }
109
-          }
110
-        }
111
-      }
112
-    }
113
-    .hospitalConfig{
114
-      height: 60px;
115
-      display: flex;
116
-      justify-content: center;
117
-      align-items: center;
118
-      gap: 72px;
119
-    }
120
-    .content{
121
-      flex: 1;
122
-      min-height: 0;
123
-      display: flex;
124
-      flex-direction: column;
125
-      justify-content: space-between;
126
-      border: 1px solid #EEF3F9;
127
-      &.priority{
128
-        margin: 24px 118px 0;
129
-        background-color: #fff;
130
-        .contentInner{
131
-          padding: 48px 206px;
132
-          border: 1px solid #E8EBEF;
133
-        }
134
-      }
135
-      .contentItem{
136
-        padding: 4px 16px;
137
-        cursor: pointer;
138
-        overflow: hidden;
139
-        text-overflow: ellipsis;
140
-        white-space: nowrap;
141
-        &.active{
142
-          color: @primary-color;
143
-          background-color: #F0F6ED;
144
-          border-radius: 4px;
145
-        }
146
-      }
147
-      .contentInner{
148
-        flex: 1;
149
-        display: flex;
150
-        justify-content: space-between;
151
-        align-items: center;
152
-        padding: 0 16px;
153
-        gap: 16px;
154
-        .contentHead{
155
-          height: 45px;
156
-          display: flex;
157
-          justify-content: space-between;
158
-          align-items: center;
159
-          gap: 16px;
160
-          padding: 0 16px;
161
-          font-size: 16px;
162
-          font-weight: bold;
163
-          border-bottom: 1px solid #D9D9D9;
164
-          .title{
165
-            overflow: hidden;
166
-            text-overflow: ellipsis;
167
-            white-space: nowrap;
168
-          }
169
-          .btns{
170
-            flex-shrink: 0;
171
-          }
172
-        }
173
-        .contentBody{
174
-          padding: 0 8px;
175
-          margin: 4px 0;
176
-          flex: 1;
177
-        }
178
-        .address{
179
-          flex: 1;
180
-          height: 100%;
181
-          background: #FFFFFF;
182
-          border: 1px solid #E8EBEF;
183
-          display: flex;
184
-          flex-direction: column;
185
-          width: 0;
186
-        }
187
-        .addressAssign{
188
-          flex: 3;
189
-          height: 100%;
190
-          background: #FFFFFF;
191
-          border: 1px solid #E8EBEF;
192
-          display: flex;
193
-          flex-direction: column;
194
-          width: 0;
195
-        }
196
-        .list-template__searchItem {
197
-          margin-bottom: 16px;
198
-          .label {
199
-            color: #333;
200
-            display: inline-block;
201
-            width: 70px;
202
-            text-align-last: justify;
203
-            text-align: justify;
204
-            &.label--big {
205
-              width: 100px;
206
-            }
207
-          }
208
-          .formItem {
209
-            width: 135px;
210
-          }
211
-        }
212
-      }
213
-      .contentBtns{
214
-        margin-bottom: 16px;
215
-        display: flex;
216
-        justify-content: center;
217
-        align-items: center;
218
-      }
219
-    }
220
-  }
221
-
222
-  .save {
223
-    position: fixed;
224
-    left: 0;
225
-    top: 0;
226
-    width: 100%;
227
-    height: 100%;
228
-    background: rgba(0, 0, 0, 0.4);
229
-    z-index: 99;
230
-
231
-    .tips{
232
-      margin-bottom: 16px!important;
233
-    }
234
-
235
-    .modalBody {
236
-      width: 350px;
237
-      background: #fff;
238
-      border-radius: 5px;
239
-      padding: 10px 20px;
240
-      color: #333;
241
-
242
-      .title {
243
-        width: 100%;
244
-        text-align: center;
245
-        font-size: 18px;
246
-        position: relative;
247
-
248
-        i {
249
-          position: absolute;
250
-          right: 0;
251
-          top: 0;
252
-          font-size: 20px;
253
-          color: #666;
254
-          cursor: pointer;
255
-          padding: 0 5px;
256
-        }
257
-      }
258
-
259
-      .content {
260
-        width: 310px;
261
-        background: #f9fafb;
262
-        border: 1px solid #e5e9ed;
263
-        border-radius: 5px;
264
-        overflow: hidden;
265
-        margin-top: 12px;
266
-        padding: 16px 0;
267
-
268
-        .busyList{
269
-          display: flex;
270
-          margin-bottom: 8px;
271
-          .busyContent{
272
-            margin-right: 8px;
273
-            flex: 1;
274
-          }
275
-        }
276
-
277
-        & > div {
278
-          text-align: center;
279
-          margin: 0;
280
-
281
-          &.icon {
282
-            // margin-top: 17px;
283
-
284
-            i {
285
-              color: #34b349;
286
-              font-size: 30px !important;
287
-
288
-              &.transport-wenhao {
289
-                color: #f5a523;
290
-              }
291
-
292
-              &.transport-shibai {
293
-                color: #ff3a52;
294
-              }
295
-            }
296
-          }
297
-
298
-          &.defeat {
299
-            color: #333;
300
-            font-size: 14px;
301
-          }
302
-
303
-          &:nth-child(3) {
304
-            font-size: 14px;
305
-            color: #666;
306
-          }
307
-        }
308
-        .workAssignmentTips {
309
-          font-size: 12px;
310
-        }
311
-      }
312
-
313
-      button {
314
-        margin-top: 10px;
315
-
316
-        &.btn {
317
-          margin-left: 8px;
318
-        }
319
-      }
320
-    }
321
-
322
-    // 新增
323
-    &.add {
324
-      .modalBody {
325
-        width: 480px;
326
-        height: auto;
327
-
328
-        .content {
329
-          width: 100%;
330
-          height: auto;
331
-          padding: 16px;
332
-          max-height: 497px;
333
-          overflow-y: auto;
334
-
335
-          .addForm {
336
-            .ant-form-item {
337
-              margin-bottom: 0;
338
-
339
-              .ant-form-item-label {
340
-                text-align: left;
341
-              }
342
-
343
-              .desc {
344
-                margin-top: 5px;
345
-              }
346
-            }
347
-
348
-            .datesControl {
349
-              margin-top: -16px;
350
-
351
-              .ant-form-item-label {
352
-                line-height: 40px;
353
-              }
354
-            }
355
-
356
-            .timer {
357
-              .ant-form-item-label {
358
-                width: 100%;
359
-                text-align: left;
360
-              }
361
-
362
-              .numInp {
363
-                margin-right: 5px;
364
-              }
365
-
366
-              .line {
367
-                margin-right: 5px;
368
-              }
369
-            }
370
-
371
-            .timer2 {
372
-              .ant-form-item-label {
373
-                line-height: 20px;
374
-              }
375
-            }
376
-          }
377
-
378
-          .editForm {
379
-            .ant-form-item {
380
-              margin-bottom: 15px;
381
-
382
-              .ant-form-item-label {
383
-                line-height: 14px;
384
-                text-align: left;
385
-              }
386
-            }
387
-          }
388
-        }
389
-      }
390
-    }
391
-  }
392 4
 }
5
+

Разница между файлами не показана из-за своего большого размера
+ 4 - 1067
src/app/views/configuration-center/configuration-center.component.ts


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

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

+ 381 - 0
src/app/views/incident-config/incident-config.component.html

@@ -0,0 +1,381 @@
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: activeTagId === tag.id }" (click)="clickTag(tag)">{{ tag.name }}</span>
7
+      </div>
8
+      <button nz-button class="btn default" (click)="goBack()">返回</button>
9
+    </div>
10
+  </div>
11
+  <!-- 故障现象 -->
12
+  <ng-container *ngIf="activeTagId === 1">
13
+    <div class="hospitalConfig">
14
+      <nz-radio-group [(ngModel)]="hospitalConfig" (ngModelChange)="changeHospitalConfig($event)">
15
+        <label nz-radio [nzValue]="item.id" *ngFor="let item of hospitalConfigList">{{ item.name }}</label>
16
+      </nz-radio-group>
17
+    </div>
18
+
19
+    <div class="content">
20
+      <div class="contentInner">
21
+        <div class="address">
22
+          <div class="contentHead">一级故障现象<button nz-button nzType="primary" nzSize="small" (click)="addCategoryModal(1)">新增</button></div>
23
+          <overlay-scrollbars #osComponentRef1 class="contentBody">
24
+            <nz-spin nzSimple [nzSpinning]="categoryLoading1" class="mt8 text_align_center"></nz-spin>
25
+            <div [hidden]="categoryLoading1" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory1.id }" (click)="clickCategory(item, 1)" *ngFor="let item of categoryList1">{{ item.category }}</div>
26
+          </overlay-scrollbars>
27
+        </div>
28
+        <div class="address">
29
+          <div class="contentHead">二级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory1.id" (click)="addCategoryModal(2)">新增</button></div>
30
+          <overlay-scrollbars #osComponentRef2 class="contentBody">
31
+            <nz-spin nzSimple [nzSpinning]="categoryLoading2" class="mt8 text_align_center"></nz-spin>
32
+            <div [hidden]="categoryLoading2" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory2.id }" (click)="clickCategory(item, 2)" *ngFor="let item of categoryList2">{{ item.category }}</div>
33
+          </overlay-scrollbars>
34
+        </div>
35
+        <div class="address">
36
+          <div class="contentHead">三级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory2.id" (click)="addCategoryModal(3)">新增</button></div>
37
+          <overlay-scrollbars #osComponentRef3 class="contentBody">
38
+            <nz-spin nzSimple [nzSpinning]="categoryLoading3" class="mt8 text_align_center"></nz-spin>
39
+            <div [hidden]="categoryLoading3" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory3.id }" (click)="clickCategory(item, 3)" *ngFor="let item of categoryList3">{{ item.category }}</div>
40
+          </overlay-scrollbars>
41
+        </div>
42
+        <div class="addressAssign">
43
+          <div class="contentHead">
44
+            <div class="title" title="{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}</div>
45
+            <div class="btns" *ngIf="activeCategory1.id || activeCategory2.id || activeCategory3.id">
46
+              <button nz-button nzType="primary" nzSize="small" (click)="showDelModal(data, hospitalConfig === 1 ? '您确认向下复制您的配置信息吗?' : '您确认向下复制您的配置吗?将会移除各科室的配置,使用当前配置进行覆盖。','向下复制','copy')" *ngIf="currentChildrenCategoryList">向下复制</button>
47
+              <button nz-button nzType="primary" nzSize="small" class="ml8" *ngIf="hospitalConfig === 2" (click)="addConfigModal()">新增</button>
48
+            </div>
49
+          </div>
50
+          <div class="contentBody" id="categoryTable">
51
+            <div class="list-template">
52
+              <div class="list-template__content">
53
+                <div class="list-template__bottom">
54
+                  <nz-table class="list-template__nzTable" [nzData]="categoryConfigList" nzSize="middle" [nzShowPagination]="false"
55
+                    [nzLoading]="loading1" [nzScroll]="{ y: tableCategoryHeight + 'px' }">
56
+                    <thead>
57
+                      <tr class="thead">
58
+                        <th nzWidth="16%">院区</th>
59
+                        <th nzWidth="16%">责任部门</th>
60
+                        <th nzWidth="16%">优先级</th>
61
+                        <th nzWidth="16%">积分</th>
62
+                        <th nzWidth="16%">维修人|组</th>
63
+                        <th nzWidth="20%">操作</th>
64
+                      </tr>
65
+                    </thead>
66
+                    <tbody>
67
+                      <tr *ngFor="let data of categoryConfigList;let i = index">
68
+                        <td>{{data.hospitalDTO?.hosName}}</td>
69
+                        <td>{{data.dutyDTO?.hosName}}</td>
70
+                        <td>{{data.priorityDTO?.name}}</td>
71
+                        <td>{{data.score?.value}}</td>
72
+                        <td>{{data.userGroup === 1 ? data.userDTO?.name : (data.userGroup === 2 ? data.groupDTO?.groupName : '')}}</td>
73
+                        <td>
74
+                          <div class="coop">
75
+                            <span (click)="showDelModal(data,'您确认要删除吗?','删除','delConfig')">删除</span>
76
+                            <span (click)="editConfig(data)">编辑</span>
77
+                          </div>
78
+                        </td>
79
+                      </tr>
80
+                    </tbody>
81
+                  </nz-table>
82
+                </div>
83
+              </div>
84
+            </div>
85
+          </div>
86
+        </div>
87
+      </div>
88
+    </div>
89
+  </ng-container>
90
+  <!-- 优先级 -->
91
+  <ng-container *ngIf="activeTagId === 2">
92
+    <div class="content priority">
93
+      <div class="contentInner">
94
+        <div class="list-template" id="priorityTable">
95
+          <div class="list-template__content">
96
+            <div class="list-template__bottom">
97
+              <div class="list-template__top" nz-row>
98
+                <div nz-col nzLg="24" class="list-template__btns">
99
+                  <button nz-button class="btn default" (click)="addPriorityModal()">新增</button>
100
+                </div>
101
+              </div>
102
+              <nz-table class="list-template__nzTable" [nzData]="priorityList" nzSize="middle" [nzShowPagination]="false"
103
+                [nzLoading]="loading1" [nzScroll]="{ y: tablePriorityHeight + 'px' }">
104
+                <thead>
105
+                  <tr class="thead">
106
+                    <th nzWidth="20%">优先级名称</th>
107
+                    <th nzWidth="20%">排序</th>
108
+                    <th nzWidth="20%">响应时间(分钟)</th>
109
+                    <th nzWidth="20%">解决时间(分钟)</th>
110
+                    <th nzWidth="20%">操作</th>
111
+                  </tr>
112
+                </thead>
113
+                <tbody>
114
+                  <tr *ngFor="let data of priorityList;let i = index">
115
+                    <td>{{data.name}}</td>
116
+                    <td>{{data.orders}}</td>
117
+                    <td>{{data.responseTime}}</td>
118
+                    <td>{{data.handleTime}}</td>
119
+                    <td>
120
+                      <div class="coop">
121
+                        <span (click)="showDelModal(data,'您确认要删除吗?','删除','delPriority')">删除</span>
122
+                        <span (click)="editPriority(data)">编辑</span>
123
+                      </div>
124
+                    </td>
125
+                  </tr>
126
+                </tbody>
127
+              </nz-table>
128
+            </div>
129
+          </div>
130
+        </div>
131
+      </div>
132
+    </div>
133
+  </ng-container>
134
+  <!-- 数据字典 -->
135
+  <ng-container *ngIf="activeTagId === 3">
136
+    <div class="content" id="dictionary">
137
+      <div class="contentInner">
138
+        <div class="address">
139
+          <overlay-scrollbars #osComponentRef5 class="contentBody">
140
+            <div class="contentItem" [title]="item.name" [ngClass]="{ active: item.id === activeDictionaryKey.id }" (click)="clickDictionaryKey(item)" *ngFor="let item of dictionaryKeyList">{{ item.name }}</div>
141
+          </overlay-scrollbars>
142
+        </div>
143
+        <div class="addressAssign">
144
+          <div class="contentBody">
145
+            <div class="dictionaryRow">
146
+              <div class="orders">排序号</div>
147
+              <div class="name">键</div>
148
+              <div class="value">值</div>
149
+            </div>
150
+            <form nz-form [formGroup]="validateDictionaryForm" class="w100">
151
+              <div class="dictionaryRow" *ngFor="let data of dictionaryList;let i = index;">
152
+                <div class="orders">
153
+                  <nz-form-item>
154
+                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入排序号!">
155
+                      <nz-input-group>
156
+                        <nz-input-number [formControlName]="'orders_' + data.id" class="ordersInput"></nz-input-number>
157
+                      </nz-input-group>
158
+                    </nz-form-control>
159
+                  </nz-form-item>
160
+                </div>
161
+                <div class="name">
162
+                  <nz-form-item>
163
+                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入键!">
164
+                      <nz-input-group>
165
+                        <input [formControlName]="'name_' + data.id" nz-input class="nameInput">
166
+                      </nz-input-group>
167
+                    </nz-form-control>
168
+                  </nz-form-item>
169
+                </div>
170
+                <div class="value">
171
+                  <nz-form-item>
172
+                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入值!">
173
+                      <nz-input-group>
174
+                        <input [formControlName]="'value_' + data.id" nz-input class="valueInput">
175
+                      </nz-input-group>
176
+                    </nz-form-control>
177
+                  </nz-form-item>
178
+                  <i class="icon_transport transport-tag27fuben ml8" (click)="addField(i)"></i>
179
+                  <i class="icon_transport transport-shanchu1 ml8" *ngIf="dictionaryList.length > 1 && !data.system" (click)="removeField(data, i)"></i>
180
+                </div>
181
+              </div>
182
+            </form>
183
+          </div>
184
+          <div class="contentBtns">
185
+            <button nz-button nzType="primary" class="ml8" (click)="saveDictionary()">保存</button>
186
+          </div>
187
+        </div>
188
+      </div>
189
+    </div>
190
+  </ng-container>
191
+</div>
192
+
193
+<!-- 操作成功/失败提示框 -->
194
+<app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
195
+  [info]="promptInfo">
196
+</app-prompt-modal>
197
+
198
+<!-- 删除模态框 -->
199
+<app-dialog-delete [delModal]="delModal" (hideDelModalEvent)="hideDelModal()" [btnLoading]="btnLoading"
200
+(confirmDelEvent)="confirmDel()" [content]="tipsMsg1"></app-dialog-delete>
201
+
202
+<!-- 新增/编辑优先级模态框 -->
203
+<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalPriority">
204
+  <div class="modalBody">
205
+    <div class="title">{{modelName}}优先级<i class="icon_transport transport-guanbi" (click)="hidePriorityModal()"></i></div>
206
+    <div class="content">
207
+      <form nz-form [formGroup]="validatePriorityForm" class="addForm">
208
+        <nz-form-item>
209
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="name">优先级名称</nz-form-label>
210
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入优先级名称!">
211
+            <nz-input-group>
212
+              <input formControlName="name" nz-input placeholder="请输入优先级名称">
213
+            </nz-input-group>
214
+          </nz-form-control>
215
+        </nz-form-item>
216
+        <nz-form-item>
217
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="orders">排&nbsp;&nbsp;&nbsp;序&nbsp;&nbsp;&nbsp;号</nz-form-label>
218
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入排序号!">
219
+            <nz-input-group>
220
+              <nz-input-number class="w100" formControlName="orders" nzPlaceHolder="请输入排序号" [nzMin]="0" [nzStep]="1" [nzPrecision]="0"></nz-input-number>
221
+            </nz-input-group>
222
+          </nz-form-control>
223
+        </nz-form-item>
224
+        <nz-form-item>
225
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="responseTime">响&nbsp;应&nbsp;时&nbsp;间</nz-form-label>
226
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入响应时间(分钟)!">
227
+            <nz-input-group>
228
+              <nz-input-number class="w100" formControlName="responseTime" nzPlaceHolder="请输入响应时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
229
+            </nz-input-group>
230
+          </nz-form-control>
231
+        </nz-form-item>
232
+        <nz-form-item>
233
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="handleTime">解&nbsp;决&nbsp;时&nbsp;间</nz-form-label>
234
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入解决时间(分钟)!">
235
+            <nz-input-group>
236
+              <nz-input-number class="w100" formControlName="handleTime" nzPlaceHolder="请输入解决时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
237
+            </nz-input-group>
238
+          </nz-form-control>
239
+        </nz-form-item>
240
+      </form>
241
+    </div>
242
+    <div class=" display_flex justify-content_flex-center">
243
+      <button nzType="primary" nz-button (click)="submitPriorityForm()" [nzLoading]="btnLoading">确认</button>
244
+      <button class="btn cancel" nz-button nzType="default" (click)="hidePriorityModal()">取消</button>
245
+    </div>
246
+  </div>
247
+</div>
248
+
249
+<!-- 新增/编辑故障现象模态框 -->
250
+<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalCategory">
251
+  <div class="modalBody">
252
+    <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideCategoryModal()"></i></div>
253
+    <div class="content">
254
+      <div class="tips" *ngIf="coopType === 1">您将添加一级故障现象,请输入故障现象</div>
255
+      <div class="tips" *ngIf="coopType === 2">您将在“<span class="red">{{activeCategory1.category}}</span>”下新增故障现象,请输入故障现象</div>
256
+      <div class="tips" *ngIf="coopType === 3">您将在“<span class="red">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}</span>”下新增故障现象,请输入故障现象</div>
257
+      <form nz-form [formGroup]="validateCategoryForm" class="addForm">
258
+        <nz-form-item>
259
+          <nz-form-control [nzSpan]="24" nzErrorTip="请输入故障现象名称!">
260
+            <nz-input-group>
261
+              <textarea formControlName="name" nz-input placeholder="请输入故障现象名称" [nzAutosize]="{minRows: 3}"></textarea>
262
+            </nz-input-group>
263
+          </nz-form-control>
264
+        </nz-form-item>
265
+      </form>
266
+    </div>
267
+    <div class=" display_flex justify-content_flex-center">
268
+      <button nzType="primary" nz-button (click)="submitCategoryForm()" [nzLoading]="btnLoading">确认</button>
269
+      <button class="btn cancel" nz-button nzType="default" (click)="hideCategoryModal()">取消</button>
270
+    </div>
271
+  </div>
272
+</div>
273
+
274
+<!-- 新增/编辑关联模态框 -->
275
+<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalConfig">
276
+  <div class="modalBody">
277
+    <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideConfigModal()"></i></div>
278
+    <div class="content">
279
+      <form nz-form [formGroup]="validateConfigForm" class="addForm">
280
+        <nz-form-item>
281
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="hosId">院区</nz-form-label>
282
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择院区!">
283
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="hosId" nzShowSearch
284
+              nzPlaceHolder="请选择院区" nzServerSearch (ngModelChange)="changeHospital($event)" [nzDisabled]="!add">
285
+              <ng-container *ngFor="let data of hospitalList">
286
+                <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
287
+              </ng-container>
288
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
289
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
290
+              </nz-option>
291
+            </nz-select>
292
+          </nz-form-control>
293
+        </nz-form-item>
294
+        <nz-form-item>
295
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="dutyId">责任部门</nz-form-label>
296
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择责任部门!">
297
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="dutyId" nzShowSearch
298
+              nzPlaceHolder="请选择责任部门" nzServerSearch (ngModelChange)="changeDuty($event)" [nzDisabled]="!add">
299
+              <ng-container *ngFor="let data of dutyList">
300
+                <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
301
+              </ng-container>
302
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
303
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
304
+              </nz-option>
305
+            </nz-select>
306
+          </nz-form-control>
307
+        </nz-form-item>
308
+        <nz-form-item>
309
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="priority">优先级</nz-form-label>
310
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择优先级!">
311
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="priority" nzShowSearch
312
+            nzPlaceHolder="请选择优先级" nzServerSearch>
313
+              <ng-container *ngFor="let option of priority_c_List">
314
+                <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
315
+              </ng-container>
316
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
317
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
318
+              </nz-option>
319
+            </nz-select>
320
+          </nz-form-control>
321
+        </nz-form-item>
322
+        <nz-form-item>
323
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="score">积分</nz-form-label>
324
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
325
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="score" nzShowSearch
326
+              nzPlaceHolder="请选择积分" nzServerSearch>
327
+              <ng-container *ngFor="let data of scoreList">
328
+                <nz-option *ngIf="!isLoading" [nzLabel]="data.name" [nzValue]="data.id"></nz-option>
329
+              </ng-container>
330
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
331
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
332
+              </nz-option>
333
+            </nz-select>
334
+          </nz-form-control>
335
+        </nz-form-item>
336
+        <nz-form-item>
337
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="userGroup">分配方式</nz-form-label>
338
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
339
+            <nz-radio-group formControlName="userGroup" (ngModelChange)="changeUserGroup($event)">
340
+              <label nz-radio [nzValue]="1">人</label>
341
+              <label nz-radio [nzValue]="2">组</label>
342
+            </nz-radio-group>
343
+          </nz-form-control>
344
+        </nz-form-item>
345
+        <nz-form-item>
346
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="groupId">维修组</nz-form-label>
347
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修组!">
348
+            <nz-select (nzOnSearch)="changeInp('group', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="groupId" nzPlaceHolder="请选择维修组" (ngModelChange)="changeGroup($event)">
349
+              <ng-container *ngFor="let option of groupList">
350
+                <nz-option *ngIf="!isLoading" [nzLabel]="option.groupName" [nzValue]="option.id"></nz-option>
351
+              </ng-container>
352
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
353
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
354
+              </nz-option>
355
+            </nz-select>
356
+          </nz-form-control>
357
+        </nz-form-item>
358
+        <nz-form-item *ngIf="validateConfigForm.value.userGroup === 1">
359
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="userId">维修人</nz-form-label>
360
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修人!">
361
+            <nz-select (nzOnSearch)="changeInp('user', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="userId" nzPlaceHolder="请选择维修人">
362
+              <ng-container *ngFor="let option of userList">
363
+                <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
364
+              </ng-container>
365
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
366
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
367
+              </nz-option>
368
+            </nz-select>
369
+          </nz-form-control>
370
+        </nz-form-item>
371
+      </form>
372
+    </div>
373
+    <div class=" display_flex justify-content_flex-center">
374
+      <button nzType="primary" nz-button (click)="submitConfigForm()" [nzLoading]="btnLoading">确认</button>
375
+      <button class="btn cancel" nz-button nzType="default" (click)="hideConfigModal()">取消</button>
376
+    </div>
377
+  </div>
378
+</div>
379
+
380
+<!-- 遮罩 -->
381
+<app-mask *ngIf="maskFlag"></app-mask>

+ 392 - 0
src/app/views/incident-config/incident-config.component.less

@@ -0,0 +1,392 @@
1
+@import "../../../../src/theme.less";
2
+:host {
3
+  width: 100%;
4
+  .list-template__nzTable,
5
+  .list-template__bottom{
6
+    padding: 0!important;
7
+    border: none!important;
8
+    background: #fff!important;
9
+  }
10
+  .list-template{
11
+    width: 100%!important;
12
+    height: 100%!important;
13
+  }
14
+  #dictionary{
15
+    margin: 24px 16px;
16
+    .addressAssign{
17
+      flex: 7;
18
+    }
19
+    .contentItem{
20
+      margin: 0 16px;
21
+      padding: 8px;
22
+      text-align: center;
23
+      &.active{
24
+        background-color: @primary-color;
25
+        color: #fff;
26
+        border-radius: 4px;
27
+      }
28
+    }
29
+    .contentBody{
30
+      padding: 16px;
31
+    }
32
+    ::ng-deep .ant-form-item{
33
+      margin-bottom: 0;
34
+    }
35
+    .dictionaryRow{
36
+      display: flex;
37
+      align-items: center;
38
+      justify-content: center;
39
+      gap: 16px;
40
+      .orders{
41
+        flex: 1;
42
+        display: flex;
43
+        justify-content: flex-end;
44
+        align-items: center;
45
+      }
46
+      .name{
47
+        width: 100px;
48
+        display: flex;
49
+        justify-content: flex-end;
50
+        align-items: center;
51
+      }
52
+      .value{
53
+        flex: 3;
54
+        display: flex;
55
+        align-items: center;
56
+        .valueInput{
57
+          width: 600px;
58
+        }
59
+        .icon_transport{
60
+          font-size: 20px;
61
+          color: #8a8a8a;
62
+          cursor: pointer;
63
+        }
64
+      }
65
+
66
+    }
67
+  }
68
+  .incidentConfig{
69
+    padding-bottom: 24px;
70
+    height: 100%;
71
+    display: flex;
72
+    flex-direction: column;
73
+    justify-content: space-between;
74
+    background-color: #F0F2F5;
75
+    .tagsAndTemplete{
76
+      height: 64px;
77
+      display: flex;
78
+      justify-content: space-between;
79
+      align-items: center;
80
+      .tags{
81
+        height: 100%;
82
+        background: #fff;
83
+        flex: 1;
84
+        padding: 16px 24px;
85
+        display: flex;
86
+        align-items: center;
87
+        justify-content: space-between;
88
+        position: relative;
89
+        .transport-peizhizhongxin{
90
+          color: @primary-color;
91
+          font-size: 20px;
92
+          margin-right: 8px;;
93
+        }
94
+        .tagList{
95
+          width: 100%;
96
+          position: absolute;
97
+          left: 0;
98
+          top: 50%;
99
+          transform: translateY(-50%);
100
+          display: flex;
101
+          justify-content: center;
102
+          align-items: center;
103
+          gap: 48px;
104
+          span{
105
+            cursor: pointer;
106
+            &.active{
107
+              color: @primary-color;
108
+            }
109
+          }
110
+        }
111
+      }
112
+    }
113
+    .hospitalConfig{
114
+      height: 60px;
115
+      display: flex;
116
+      justify-content: center;
117
+      align-items: center;
118
+      gap: 72px;
119
+    }
120
+    .content{
121
+      flex: 1;
122
+      min-height: 0;
123
+      display: flex;
124
+      flex-direction: column;
125
+      justify-content: space-between;
126
+      border: 1px solid #EEF3F9;
127
+      &.priority{
128
+        margin: 24px 118px 0;
129
+        background-color: #fff;
130
+        .contentInner{
131
+          padding: 48px 206px;
132
+          border: 1px solid #E8EBEF;
133
+        }
134
+      }
135
+      .contentItem{
136
+        padding: 4px 16px;
137
+        cursor: pointer;
138
+        overflow: hidden;
139
+        text-overflow: ellipsis;
140
+        white-space: nowrap;
141
+        &.active{
142
+          color: @primary-color;
143
+          background-color: #F0F6ED;
144
+          border-radius: 4px;
145
+        }
146
+      }
147
+      .contentInner{
148
+        flex: 1;
149
+        display: flex;
150
+        justify-content: space-between;
151
+        align-items: center;
152
+        padding: 0 16px;
153
+        gap: 16px;
154
+        .contentHead{
155
+          height: 45px;
156
+          display: flex;
157
+          justify-content: space-between;
158
+          align-items: center;
159
+          gap: 16px;
160
+          padding: 0 16px;
161
+          font-size: 16px;
162
+          font-weight: bold;
163
+          border-bottom: 1px solid #D9D9D9;
164
+          .title{
165
+            overflow: hidden;
166
+            text-overflow: ellipsis;
167
+            white-space: nowrap;
168
+          }
169
+          .btns{
170
+            flex-shrink: 0;
171
+          }
172
+        }
173
+        .contentBody{
174
+          padding: 0 8px;
175
+          margin: 4px 0;
176
+          flex: 1;
177
+        }
178
+        .address{
179
+          flex: 1;
180
+          height: 100%;
181
+          background: #FFFFFF;
182
+          border: 1px solid #E8EBEF;
183
+          display: flex;
184
+          flex-direction: column;
185
+          width: 0;
186
+        }
187
+        .addressAssign{
188
+          flex: 3;
189
+          height: 100%;
190
+          background: #FFFFFF;
191
+          border: 1px solid #E8EBEF;
192
+          display: flex;
193
+          flex-direction: column;
194
+          width: 0;
195
+        }
196
+        .list-template__searchItem {
197
+          margin-bottom: 16px;
198
+          .label {
199
+            color: #333;
200
+            display: inline-block;
201
+            width: 70px;
202
+            text-align-last: justify;
203
+            text-align: justify;
204
+            &.label--big {
205
+              width: 100px;
206
+            }
207
+          }
208
+          .formItem {
209
+            width: 135px;
210
+          }
211
+        }
212
+      }
213
+      .contentBtns{
214
+        margin-bottom: 16px;
215
+        display: flex;
216
+        justify-content: center;
217
+        align-items: center;
218
+      }
219
+    }
220
+  }
221
+
222
+  .save {
223
+    position: fixed;
224
+    left: 0;
225
+    top: 0;
226
+    width: 100%;
227
+    height: 100%;
228
+    background: rgba(0, 0, 0, 0.4);
229
+    z-index: 99;
230
+
231
+    .tips{
232
+      margin-bottom: 16px!important;
233
+    }
234
+
235
+    .modalBody {
236
+      width: 350px;
237
+      background: #fff;
238
+      border-radius: 5px;
239
+      padding: 10px 20px;
240
+      color: #333;
241
+
242
+      .title {
243
+        width: 100%;
244
+        text-align: center;
245
+        font-size: 18px;
246
+        position: relative;
247
+
248
+        i {
249
+          position: absolute;
250
+          right: 0;
251
+          top: 0;
252
+          font-size: 20px;
253
+          color: #666;
254
+          cursor: pointer;
255
+          padding: 0 5px;
256
+        }
257
+      }
258
+
259
+      .content {
260
+        width: 310px;
261
+        background: #f9fafb;
262
+        border: 1px solid #e5e9ed;
263
+        border-radius: 5px;
264
+        overflow: hidden;
265
+        margin-top: 12px;
266
+        padding: 16px 0;
267
+
268
+        .busyList{
269
+          display: flex;
270
+          margin-bottom: 8px;
271
+          .busyContent{
272
+            margin-right: 8px;
273
+            flex: 1;
274
+          }
275
+        }
276
+
277
+        & > div {
278
+          text-align: center;
279
+          margin: 0;
280
+
281
+          &.icon {
282
+            // margin-top: 17px;
283
+
284
+            i {
285
+              color: #34b349;
286
+              font-size: 30px !important;
287
+
288
+              &.transport-wenhao {
289
+                color: #f5a523;
290
+              }
291
+
292
+              &.transport-shibai {
293
+                color: #ff3a52;
294
+              }
295
+            }
296
+          }
297
+
298
+          &.defeat {
299
+            color: #333;
300
+            font-size: 14px;
301
+          }
302
+
303
+          &:nth-child(3) {
304
+            font-size: 14px;
305
+            color: #666;
306
+          }
307
+        }
308
+        .workAssignmentTips {
309
+          font-size: 12px;
310
+        }
311
+      }
312
+
313
+      button {
314
+        margin-top: 10px;
315
+
316
+        &.btn {
317
+          margin-left: 8px;
318
+        }
319
+      }
320
+    }
321
+
322
+    // 新增
323
+    &.add {
324
+      .modalBody {
325
+        width: 480px;
326
+        height: auto;
327
+
328
+        .content {
329
+          width: 100%;
330
+          height: auto;
331
+          padding: 16px;
332
+          max-height: 497px;
333
+          overflow-y: auto;
334
+
335
+          .addForm {
336
+            .ant-form-item {
337
+              margin-bottom: 0;
338
+
339
+              .ant-form-item-label {
340
+                text-align: left;
341
+              }
342
+
343
+              .desc {
344
+                margin-top: 5px;
345
+              }
346
+            }
347
+
348
+            .datesControl {
349
+              margin-top: -16px;
350
+
351
+              .ant-form-item-label {
352
+                line-height: 40px;
353
+              }
354
+            }
355
+
356
+            .timer {
357
+              .ant-form-item-label {
358
+                width: 100%;
359
+                text-align: left;
360
+              }
361
+
362
+              .numInp {
363
+                margin-right: 5px;
364
+              }
365
+
366
+              .line {
367
+                margin-right: 5px;
368
+              }
369
+            }
370
+
371
+            .timer2 {
372
+              .ant-form-item-label {
373
+                line-height: 20px;
374
+              }
375
+            }
376
+          }
377
+
378
+          .editForm {
379
+            .ant-form-item {
380
+              margin-bottom: 15px;
381
+
382
+              .ant-form-item-label {
383
+                line-height: 14px;
384
+                text-align: left;
385
+              }
386
+            }
387
+          }
388
+        }
389
+      }
390
+    }
391
+  }
392
+}

Разница между файлами не показана из-за своего большого размера
+ 1073 - 0
src/app/views/incident-config/incident-config.component.ts


+ 19 - 0
src/app/views/incident-config/incident-config.module.ts

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

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

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

+ 381 - 0
src/app/views/other-config/other-config.component.html

@@ -0,0 +1,381 @@
1
+<div class="otherConfig">
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: activeTagId === tag.id }" (click)="clickTag(tag)">{{ tag.name }}</span>
7
+      </div>
8
+      <button nz-button class="btn default" (click)="goBack()">返回</button>
9
+    </div>
10
+  </div>
11
+  <!-- 故障现象 -->
12
+  <ng-container *ngIf="activeTagId === 1">
13
+    <div class="hospitalConfig">
14
+      <nz-radio-group [(ngModel)]="hospitalConfig" (ngModelChange)="changeHospitalConfig($event)">
15
+        <label nz-radio [nzValue]="item.id" *ngFor="let item of hospitalConfigList">{{ item.name }}</label>
16
+      </nz-radio-group>
17
+    </div>
18
+
19
+    <div class="content">
20
+      <div class="contentInner">
21
+        <div class="address">
22
+          <div class="contentHead">一级故障现象<button nz-button nzType="primary" nzSize="small" (click)="addCategoryModal(1)">新增</button></div>
23
+          <overlay-scrollbars #osComponentRef1 class="contentBody">
24
+            <nz-spin nzSimple [nzSpinning]="categoryLoading1" class="mt8 text_align_center"></nz-spin>
25
+            <div [hidden]="categoryLoading1" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory1.id }" (click)="clickCategory(item, 1)" *ngFor="let item of categoryList1">{{ item.category }}</div>
26
+          </overlay-scrollbars>
27
+        </div>
28
+        <div class="address">
29
+          <div class="contentHead">二级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory1.id" (click)="addCategoryModal(2)">新增</button></div>
30
+          <overlay-scrollbars #osComponentRef2 class="contentBody">
31
+            <nz-spin nzSimple [nzSpinning]="categoryLoading2" class="mt8 text_align_center"></nz-spin>
32
+            <div [hidden]="categoryLoading2" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory2.id }" (click)="clickCategory(item, 2)" *ngFor="let item of categoryList2">{{ item.category }}</div>
33
+          </overlay-scrollbars>
34
+        </div>
35
+        <div class="address">
36
+          <div class="contentHead">三级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory2.id" (click)="addCategoryModal(3)">新增</button></div>
37
+          <overlay-scrollbars #osComponentRef3 class="contentBody">
38
+            <nz-spin nzSimple [nzSpinning]="categoryLoading3" class="mt8 text_align_center"></nz-spin>
39
+            <div [hidden]="categoryLoading3" class="contentItem" [title]="item.category" [ngClass]="{ active: item.id === activeCategory3.id }" (click)="clickCategory(item, 3)" *ngFor="let item of categoryList3">{{ item.category }}</div>
40
+          </overlay-scrollbars>
41
+        </div>
42
+        <div class="addressAssign">
43
+          <div class="contentHead">
44
+            <div class="title" title="{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}</div>
45
+            <div class="btns" *ngIf="activeCategory1.id || activeCategory2.id || activeCategory3.id">
46
+              <button nz-button nzType="primary" nzSize="small" (click)="showDelModal(data, hospitalConfig === 1 ? '您确认向下复制您的配置信息吗?' : '您确认向下复制您的配置吗?将会移除各科室的配置,使用当前配置进行覆盖。','向下复制','copy')" *ngIf="currentChildrenCategoryList">向下复制</button>
47
+              <button nz-button nzType="primary" nzSize="small" class="ml8" *ngIf="hospitalConfig === 2" (click)="addConfigModal()">新增</button>
48
+            </div>
49
+          </div>
50
+          <div class="contentBody" id="categoryTable">
51
+            <div class="list-template">
52
+              <div class="list-template__content">
53
+                <div class="list-template__bottom">
54
+                  <nz-table class="list-template__nzTable" [nzData]="categoryConfigList" nzSize="middle" [nzShowPagination]="false"
55
+                    [nzLoading]="loading1" [nzScroll]="{ y: tableCategoryHeight + 'px' }">
56
+                    <thead>
57
+                      <tr class="thead">
58
+                        <th nzWidth="16%">院区</th>
59
+                        <th nzWidth="16%">责任部门</th>
60
+                        <th nzWidth="16%">优先级</th>
61
+                        <th nzWidth="16%">积分</th>
62
+                        <th nzWidth="16%">维修人|组</th>
63
+                        <th nzWidth="20%">操作</th>
64
+                      </tr>
65
+                    </thead>
66
+                    <tbody>
67
+                      <tr *ngFor="let data of categoryConfigList;let i = index">
68
+                        <td>{{data.hospitalDTO?.hosName}}</td>
69
+                        <td>{{data.dutyDTO?.hosName}}</td>
70
+                        <td>{{data.priorityDTO?.name}}</td>
71
+                        <td>{{data.score?.value}}</td>
72
+                        <td>{{data.userGroup === 1 ? data.userDTO?.name : (data.userGroup === 2 ? data.groupDTO?.groupName : '')}}</td>
73
+                        <td>
74
+                          <div class="coop">
75
+                            <span (click)="showDelModal(data,'您确认要删除吗?','删除','delConfig')">删除</span>
76
+                            <span (click)="editConfig(data)">编辑</span>
77
+                          </div>
78
+                        </td>
79
+                      </tr>
80
+                    </tbody>
81
+                  </nz-table>
82
+                </div>
83
+              </div>
84
+            </div>
85
+          </div>
86
+        </div>
87
+      </div>
88
+    </div>
89
+  </ng-container>
90
+  <!-- 优先级 -->
91
+  <ng-container *ngIf="activeTagId === 2">
92
+    <div class="content priority">
93
+      <div class="contentInner">
94
+        <div class="list-template" id="priorityTable">
95
+          <div class="list-template__content">
96
+            <div class="list-template__bottom">
97
+              <div class="list-template__top" nz-row>
98
+                <div nz-col nzLg="24" class="list-template__btns">
99
+                  <button nz-button class="btn default" (click)="addPriorityModal()">新增</button>
100
+                </div>
101
+              </div>
102
+              <nz-table class="list-template__nzTable" [nzData]="priorityList" nzSize="middle" [nzShowPagination]="false"
103
+                [nzLoading]="loading1" [nzScroll]="{ y: tablePriorityHeight + 'px' }">
104
+                <thead>
105
+                  <tr class="thead">
106
+                    <th nzWidth="20%">优先级名称</th>
107
+                    <th nzWidth="20%">排序</th>
108
+                    <th nzWidth="20%">响应时间(分钟)</th>
109
+                    <th nzWidth="20%">解决时间(分钟)</th>
110
+                    <th nzWidth="20%">操作</th>
111
+                  </tr>
112
+                </thead>
113
+                <tbody>
114
+                  <tr *ngFor="let data of priorityList;let i = index">
115
+                    <td>{{data.name}}</td>
116
+                    <td>{{data.orders}}</td>
117
+                    <td>{{data.responseTime}}</td>
118
+                    <td>{{data.handleTime}}</td>
119
+                    <td>
120
+                      <div class="coop">
121
+                        <span (click)="showDelModal(data,'您确认要删除吗?','删除','delPriority')">删除</span>
122
+                        <span (click)="editPriority(data)">编辑</span>
123
+                      </div>
124
+                    </td>
125
+                  </tr>
126
+                </tbody>
127
+              </nz-table>
128
+            </div>
129
+          </div>
130
+        </div>
131
+      </div>
132
+    </div>
133
+  </ng-container>
134
+  <!-- 数据字典 -->
135
+  <ng-container *ngIf="activeTagId === 3">
136
+    <div class="content" id="dictionary">
137
+      <div class="contentInner">
138
+        <div class="address">
139
+          <overlay-scrollbars #osComponentRef5 class="contentBody">
140
+            <div class="contentItem" [title]="item.name" [ngClass]="{ active: item.id === activeDictionaryKey.id }" (click)="clickDictionaryKey(item)" *ngFor="let item of dictionaryKeyList">{{ item.name }}</div>
141
+          </overlay-scrollbars>
142
+        </div>
143
+        <div class="addressAssign">
144
+          <div class="contentBody">
145
+            <div class="dictionaryRow">
146
+              <div class="orders">排序号</div>
147
+              <div class="name">键</div>
148
+              <div class="value">值</div>
149
+            </div>
150
+            <form nz-form [formGroup]="validateDictionaryForm" class="w100">
151
+              <div class="dictionaryRow" *ngFor="let data of dictionaryList;let i = index;">
152
+                <div class="orders">
153
+                  <nz-form-item>
154
+                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入排序号!">
155
+                      <nz-input-group>
156
+                        <nz-input-number [formControlName]="'orders_' + data.id" class="ordersInput"></nz-input-number>
157
+                      </nz-input-group>
158
+                    </nz-form-control>
159
+                  </nz-form-item>
160
+                </div>
161
+                <div class="name">
162
+                  <nz-form-item>
163
+                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入键!">
164
+                      <nz-input-group>
165
+                        <input [formControlName]="'name_' + data.id" nz-input class="nameInput">
166
+                      </nz-input-group>
167
+                    </nz-form-control>
168
+                  </nz-form-item>
169
+                </div>
170
+                <div class="value">
171
+                  <nz-form-item>
172
+                    <nz-form-control [nzSpan]="24" nzErrorTip="请输入值!">
173
+                      <nz-input-group>
174
+                        <input [formControlName]="'value_' + data.id" nz-input class="valueInput">
175
+                      </nz-input-group>
176
+                    </nz-form-control>
177
+                  </nz-form-item>
178
+                  <i class="icon_transport transport-tag27fuben ml8" (click)="addField(i)"></i>
179
+                  <i class="icon_transport transport-shanchu1 ml8" *ngIf="dictionaryList.length > 1 && !data.system" (click)="removeField(data, i)"></i>
180
+                </div>
181
+              </div>
182
+            </form>
183
+          </div>
184
+          <div class="contentBtns">
185
+            <button nz-button nzType="primary" class="ml8" (click)="saveDictionary()">保存</button>
186
+          </div>
187
+        </div>
188
+      </div>
189
+    </div>
190
+  </ng-container>
191
+</div>
192
+
193
+<!-- 操作成功/失败提示框 -->
194
+<app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
195
+  [info]="promptInfo">
196
+</app-prompt-modal>
197
+
198
+<!-- 删除模态框 -->
199
+<app-dialog-delete [delModal]="delModal" (hideDelModalEvent)="hideDelModal()" [btnLoading]="btnLoading"
200
+(confirmDelEvent)="confirmDel()" [content]="tipsMsg1"></app-dialog-delete>
201
+
202
+<!-- 新增/编辑优先级模态框 -->
203
+<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalPriority">
204
+  <div class="modalBody">
205
+    <div class="title">{{modelName}}优先级<i class="icon_transport transport-guanbi" (click)="hidePriorityModal()"></i></div>
206
+    <div class="content">
207
+      <form nz-form [formGroup]="validatePriorityForm" class="addForm">
208
+        <nz-form-item>
209
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="name">优先级名称</nz-form-label>
210
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入优先级名称!">
211
+            <nz-input-group>
212
+              <input formControlName="name" nz-input placeholder="请输入优先级名称">
213
+            </nz-input-group>
214
+          </nz-form-control>
215
+        </nz-form-item>
216
+        <nz-form-item>
217
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="orders">排&nbsp;&nbsp;&nbsp;序&nbsp;&nbsp;&nbsp;号</nz-form-label>
218
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入排序号!">
219
+            <nz-input-group>
220
+              <nz-input-number class="w100" formControlName="orders" nzPlaceHolder="请输入排序号" [nzMin]="0" [nzStep]="1" [nzPrecision]="0"></nz-input-number>
221
+            </nz-input-group>
222
+          </nz-form-control>
223
+        </nz-form-item>
224
+        <nz-form-item>
225
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="responseTime">响&nbsp;应&nbsp;时&nbsp;间</nz-form-label>
226
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入响应时间(分钟)!">
227
+            <nz-input-group>
228
+              <nz-input-number class="w100" formControlName="responseTime" nzPlaceHolder="请输入响应时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
229
+            </nz-input-group>
230
+          </nz-form-control>
231
+        </nz-form-item>
232
+        <nz-form-item>
233
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="handleTime">解&nbsp;决&nbsp;时&nbsp;间</nz-form-label>
234
+          <nz-form-control [nzSpan]="18" nzErrorTip="请输入解决时间(分钟)!">
235
+            <nz-input-group>
236
+              <nz-input-number class="w100" formControlName="handleTime" nzPlaceHolder="请输入解决时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
237
+            </nz-input-group>
238
+          </nz-form-control>
239
+        </nz-form-item>
240
+      </form>
241
+    </div>
242
+    <div class=" display_flex justify-content_flex-center">
243
+      <button nzType="primary" nz-button (click)="submitPriorityForm()" [nzLoading]="btnLoading">确认</button>
244
+      <button class="btn cancel" nz-button nzType="default" (click)="hidePriorityModal()">取消</button>
245
+    </div>
246
+  </div>
247
+</div>
248
+
249
+<!-- 新增/编辑故障现象模态框 -->
250
+<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalCategory">
251
+  <div class="modalBody">
252
+    <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideCategoryModal()"></i></div>
253
+    <div class="content">
254
+      <div class="tips" *ngIf="coopType === 1">您将添加一级故障现象,请输入故障现象</div>
255
+      <div class="tips" *ngIf="coopType === 2">您将在“<span class="red">{{activeCategory1.category}}</span>”下新增故障现象,请输入故障现象</div>
256
+      <div class="tips" *ngIf="coopType === 3">您将在“<span class="red">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}</span>”下新增故障现象,请输入故障现象</div>
257
+      <form nz-form [formGroup]="validateCategoryForm" class="addForm">
258
+        <nz-form-item>
259
+          <nz-form-control [nzSpan]="24" nzErrorTip="请输入故障现象名称!">
260
+            <nz-input-group>
261
+              <textarea formControlName="name" nz-input placeholder="请输入故障现象名称" [nzAutosize]="{minRows: 3}"></textarea>
262
+            </nz-input-group>
263
+          </nz-form-control>
264
+        </nz-form-item>
265
+      </form>
266
+    </div>
267
+    <div class=" display_flex justify-content_flex-center">
268
+      <button nzType="primary" nz-button (click)="submitCategoryForm()" [nzLoading]="btnLoading">确认</button>
269
+      <button class="btn cancel" nz-button nzType="default" (click)="hideCategoryModal()">取消</button>
270
+    </div>
271
+  </div>
272
+</div>
273
+
274
+<!-- 新增/编辑关联模态框 -->
275
+<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalConfig">
276
+  <div class="modalBody">
277
+    <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideConfigModal()"></i></div>
278
+    <div class="content">
279
+      <form nz-form [formGroup]="validateConfigForm" class="addForm">
280
+        <nz-form-item>
281
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="hosId">院区</nz-form-label>
282
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择院区!">
283
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="hosId" nzShowSearch
284
+              nzPlaceHolder="请选择院区" nzServerSearch (ngModelChange)="changeHospital($event)" [nzDisabled]="!add">
285
+              <ng-container *ngFor="let data of hospitalList">
286
+                <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
287
+              </ng-container>
288
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
289
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
290
+              </nz-option>
291
+            </nz-select>
292
+          </nz-form-control>
293
+        </nz-form-item>
294
+        <nz-form-item>
295
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="dutyId">责任部门</nz-form-label>
296
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择责任部门!">
297
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="dutyId" nzShowSearch
298
+              nzPlaceHolder="请选择责任部门" nzServerSearch (ngModelChange)="changeDuty($event)" [nzDisabled]="!add">
299
+              <ng-container *ngFor="let data of dutyList">
300
+                <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
301
+              </ng-container>
302
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
303
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
304
+              </nz-option>
305
+            </nz-select>
306
+          </nz-form-control>
307
+        </nz-form-item>
308
+        <nz-form-item>
309
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="priority">优先级</nz-form-label>
310
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择优先级!">
311
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="priority" nzShowSearch
312
+            nzPlaceHolder="请选择优先级" nzServerSearch>
313
+              <ng-container *ngFor="let option of priority_c_List">
314
+                <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
315
+              </ng-container>
316
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
317
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
318
+              </nz-option>
319
+            </nz-select>
320
+          </nz-form-control>
321
+        </nz-form-item>
322
+        <nz-form-item>
323
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="score">积分</nz-form-label>
324
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
325
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="score" nzShowSearch
326
+              nzPlaceHolder="请选择积分" nzServerSearch>
327
+              <ng-container *ngFor="let data of scoreList">
328
+                <nz-option *ngIf="!isLoading" [nzLabel]="data.name" [nzValue]="data.id"></nz-option>
329
+              </ng-container>
330
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
331
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
332
+              </nz-option>
333
+            </nz-select>
334
+          </nz-form-control>
335
+        </nz-form-item>
336
+        <nz-form-item>
337
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="userGroup">分配方式</nz-form-label>
338
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
339
+            <nz-radio-group formControlName="userGroup" (ngModelChange)="changeUserGroup($event)">
340
+              <label nz-radio [nzValue]="1">人</label>
341
+              <label nz-radio [nzValue]="2">组</label>
342
+            </nz-radio-group>
343
+          </nz-form-control>
344
+        </nz-form-item>
345
+        <nz-form-item>
346
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="groupId">维修组</nz-form-label>
347
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修组!">
348
+            <nz-select (nzOnSearch)="changeInp('group', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="groupId" nzPlaceHolder="请选择维修组" (ngModelChange)="changeGroup($event)">
349
+              <ng-container *ngFor="let option of groupList">
350
+                <nz-option *ngIf="!isLoading" [nzLabel]="option.groupName" [nzValue]="option.id"></nz-option>
351
+              </ng-container>
352
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
353
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
354
+              </nz-option>
355
+            </nz-select>
356
+          </nz-form-control>
357
+        </nz-form-item>
358
+        <nz-form-item *ngIf="validateConfigForm.value.userGroup === 1">
359
+          <nz-form-label [nzSpan]="5" nzRequired nzFor="userId">维修人</nz-form-label>
360
+          <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修人!">
361
+            <nz-select (nzOnSearch)="changeInp('user', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="userId" nzPlaceHolder="请选择维修人">
362
+              <ng-container *ngFor="let option of userList">
363
+                <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
364
+              </ng-container>
365
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
366
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
367
+              </nz-option>
368
+            </nz-select>
369
+          </nz-form-control>
370
+        </nz-form-item>
371
+      </form>
372
+    </div>
373
+    <div class=" display_flex justify-content_flex-center">
374
+      <button nzType="primary" nz-button (click)="submitConfigForm()" [nzLoading]="btnLoading">确认</button>
375
+      <button class="btn cancel" nz-button nzType="default" (click)="hideConfigModal()">取消</button>
376
+    </div>
377
+  </div>
378
+</div>
379
+
380
+<!-- 遮罩 -->
381
+<app-mask *ngIf="maskFlag"></app-mask>

+ 392 - 0
src/app/views/other-config/other-config.component.less

@@ -0,0 +1,392 @@
1
+@import "../../../../src/theme.less";
2
+:host {
3
+  width: 100%;
4
+  .list-template__nzTable,
5
+  .list-template__bottom{
6
+    padding: 0!important;
7
+    border: none!important;
8
+    background: #fff!important;
9
+  }
10
+  .list-template{
11
+    width: 100%!important;
12
+    height: 100%!important;
13
+  }
14
+  #dictionary{
15
+    margin: 24px 16px;
16
+    .addressAssign{
17
+      flex: 7;
18
+    }
19
+    .contentItem{
20
+      margin: 0 16px;
21
+      padding: 8px;
22
+      text-align: center;
23
+      &.active{
24
+        background-color: @primary-color;
25
+        color: #fff;
26
+        border-radius: 4px;
27
+      }
28
+    }
29
+    .contentBody{
30
+      padding: 16px;
31
+    }
32
+    ::ng-deep .ant-form-item{
33
+      margin-bottom: 0;
34
+    }
35
+    .dictionaryRow{
36
+      display: flex;
37
+      align-items: center;
38
+      justify-content: center;
39
+      gap: 16px;
40
+      .orders{
41
+        flex: 1;
42
+        display: flex;
43
+        justify-content: flex-end;
44
+        align-items: center;
45
+      }
46
+      .name{
47
+        width: 100px;
48
+        display: flex;
49
+        justify-content: flex-end;
50
+        align-items: center;
51
+      }
52
+      .value{
53
+        flex: 3;
54
+        display: flex;
55
+        align-items: center;
56
+        .valueInput{
57
+          width: 600px;
58
+        }
59
+        .icon_transport{
60
+          font-size: 20px;
61
+          color: #8a8a8a;
62
+          cursor: pointer;
63
+        }
64
+      }
65
+
66
+    }
67
+  }
68
+  .otherConfig{
69
+    padding-bottom: 24px;
70
+    height: 100%;
71
+    display: flex;
72
+    flex-direction: column;
73
+    justify-content: space-between;
74
+    background-color: #F0F2F5;
75
+    .tagsAndTemplete{
76
+      height: 64px;
77
+      display: flex;
78
+      justify-content: space-between;
79
+      align-items: center;
80
+      .tags{
81
+        height: 100%;
82
+        background: #fff;
83
+        flex: 1;
84
+        padding: 16px 24px;
85
+        display: flex;
86
+        align-items: center;
87
+        justify-content: space-between;
88
+        position: relative;
89
+        .transport-peizhizhongxin{
90
+          color: @primary-color;
91
+          font-size: 20px;
92
+          margin-right: 8px;;
93
+        }
94
+        .tagList{
95
+          width: 100%;
96
+          position: absolute;
97
+          left: 0;
98
+          top: 50%;
99
+          transform: translateY(-50%);
100
+          display: flex;
101
+          justify-content: center;
102
+          align-items: center;
103
+          gap: 48px;
104
+          span{
105
+            cursor: pointer;
106
+            &.active{
107
+              color: @primary-color;
108
+            }
109
+          }
110
+        }
111
+      }
112
+    }
113
+    .hospitalConfig{
114
+      height: 60px;
115
+      display: flex;
116
+      justify-content: center;
117
+      align-items: center;
118
+      gap: 72px;
119
+    }
120
+    .content{
121
+      flex: 1;
122
+      min-height: 0;
123
+      display: flex;
124
+      flex-direction: column;
125
+      justify-content: space-between;
126
+      border: 1px solid #EEF3F9;
127
+      &.priority{
128
+        margin: 24px 118px 0;
129
+        background-color: #fff;
130
+        .contentInner{
131
+          padding: 48px 206px;
132
+          border: 1px solid #E8EBEF;
133
+        }
134
+      }
135
+      .contentItem{
136
+        padding: 4px 16px;
137
+        cursor: pointer;
138
+        overflow: hidden;
139
+        text-overflow: ellipsis;
140
+        white-space: nowrap;
141
+        &.active{
142
+          color: @primary-color;
143
+          background-color: #F0F6ED;
144
+          border-radius: 4px;
145
+        }
146
+      }
147
+      .contentInner{
148
+        flex: 1;
149
+        display: flex;
150
+        justify-content: space-between;
151
+        align-items: center;
152
+        padding: 0 16px;
153
+        gap: 16px;
154
+        .contentHead{
155
+          height: 45px;
156
+          display: flex;
157
+          justify-content: space-between;
158
+          align-items: center;
159
+          gap: 16px;
160
+          padding: 0 16px;
161
+          font-size: 16px;
162
+          font-weight: bold;
163
+          border-bottom: 1px solid #D9D9D9;
164
+          .title{
165
+            overflow: hidden;
166
+            text-overflow: ellipsis;
167
+            white-space: nowrap;
168
+          }
169
+          .btns{
170
+            flex-shrink: 0;
171
+          }
172
+        }
173
+        .contentBody{
174
+          padding: 0 8px;
175
+          margin: 4px 0;
176
+          flex: 1;
177
+        }
178
+        .address{
179
+          flex: 1;
180
+          height: 100%;
181
+          background: #FFFFFF;
182
+          border: 1px solid #E8EBEF;
183
+          display: flex;
184
+          flex-direction: column;
185
+          width: 0;
186
+        }
187
+        .addressAssign{
188
+          flex: 3;
189
+          height: 100%;
190
+          background: #FFFFFF;
191
+          border: 1px solid #E8EBEF;
192
+          display: flex;
193
+          flex-direction: column;
194
+          width: 0;
195
+        }
196
+        .list-template__searchItem {
197
+          margin-bottom: 16px;
198
+          .label {
199
+            color: #333;
200
+            display: inline-block;
201
+            width: 70px;
202
+            text-align-last: justify;
203
+            text-align: justify;
204
+            &.label--big {
205
+              width: 100px;
206
+            }
207
+          }
208
+          .formItem {
209
+            width: 135px;
210
+          }
211
+        }
212
+      }
213
+      .contentBtns{
214
+        margin-bottom: 16px;
215
+        display: flex;
216
+        justify-content: center;
217
+        align-items: center;
218
+      }
219
+    }
220
+  }
221
+
222
+  .save {
223
+    position: fixed;
224
+    left: 0;
225
+    top: 0;
226
+    width: 100%;
227
+    height: 100%;
228
+    background: rgba(0, 0, 0, 0.4);
229
+    z-index: 99;
230
+
231
+    .tips{
232
+      margin-bottom: 16px!important;
233
+    }
234
+
235
+    .modalBody {
236
+      width: 350px;
237
+      background: #fff;
238
+      border-radius: 5px;
239
+      padding: 10px 20px;
240
+      color: #333;
241
+
242
+      .title {
243
+        width: 100%;
244
+        text-align: center;
245
+        font-size: 18px;
246
+        position: relative;
247
+
248
+        i {
249
+          position: absolute;
250
+          right: 0;
251
+          top: 0;
252
+          font-size: 20px;
253
+          color: #666;
254
+          cursor: pointer;
255
+          padding: 0 5px;
256
+        }
257
+      }
258
+
259
+      .content {
260
+        width: 310px;
261
+        background: #f9fafb;
262
+        border: 1px solid #e5e9ed;
263
+        border-radius: 5px;
264
+        overflow: hidden;
265
+        margin-top: 12px;
266
+        padding: 16px 0;
267
+
268
+        .busyList{
269
+          display: flex;
270
+          margin-bottom: 8px;
271
+          .busyContent{
272
+            margin-right: 8px;
273
+            flex: 1;
274
+          }
275
+        }
276
+
277
+        & > div {
278
+          text-align: center;
279
+          margin: 0;
280
+
281
+          &.icon {
282
+            // margin-top: 17px;
283
+
284
+            i {
285
+              color: #34b349;
286
+              font-size: 30px !important;
287
+
288
+              &.transport-wenhao {
289
+                color: #f5a523;
290
+              }
291
+
292
+              &.transport-shibai {
293
+                color: #ff3a52;
294
+              }
295
+            }
296
+          }
297
+
298
+          &.defeat {
299
+            color: #333;
300
+            font-size: 14px;
301
+          }
302
+
303
+          &:nth-child(3) {
304
+            font-size: 14px;
305
+            color: #666;
306
+          }
307
+        }
308
+        .workAssignmentTips {
309
+          font-size: 12px;
310
+        }
311
+      }
312
+
313
+      button {
314
+        margin-top: 10px;
315
+
316
+        &.btn {
317
+          margin-left: 8px;
318
+        }
319
+      }
320
+    }
321
+
322
+    // 新增
323
+    &.add {
324
+      .modalBody {
325
+        width: 480px;
326
+        height: auto;
327
+
328
+        .content {
329
+          width: 100%;
330
+          height: auto;
331
+          padding: 16px;
332
+          max-height: 497px;
333
+          overflow-y: auto;
334
+
335
+          .addForm {
336
+            .ant-form-item {
337
+              margin-bottom: 0;
338
+
339
+              .ant-form-item-label {
340
+                text-align: left;
341
+              }
342
+
343
+              .desc {
344
+                margin-top: 5px;
345
+              }
346
+            }
347
+
348
+            .datesControl {
349
+              margin-top: -16px;
350
+
351
+              .ant-form-item-label {
352
+                line-height: 40px;
353
+              }
354
+            }
355
+
356
+            .timer {
357
+              .ant-form-item-label {
358
+                width: 100%;
359
+                text-align: left;
360
+              }
361
+
362
+              .numInp {
363
+                margin-right: 5px;
364
+              }
365
+
366
+              .line {
367
+                margin-right: 5px;
368
+              }
369
+            }
370
+
371
+            .timer2 {
372
+              .ant-form-item-label {
373
+                line-height: 20px;
374
+              }
375
+            }
376
+          }
377
+
378
+          .editForm {
379
+            .ant-form-item {
380
+              margin-bottom: 15px;
381
+
382
+              .ant-form-item-label {
383
+                line-height: 14px;
384
+                text-align: left;
385
+              }
386
+            }
387
+          }
388
+        }
389
+      }
390
+    }
391
+  }
392
+}

Разница между файлами не показана из-за своего большого размера
+ 1073 - 0
src/app/views/other-config/other-config.component.ts


+ 19 - 0
src/app/views/other-config/other-config.module.ts

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