Browse Source

Merge branch 'master' into develop

maotao 5 months ago
parent
commit
37ffe5caae
51 changed files with 1387 additions and 292 deletions
  1. 1 0
      package.json
  2. 8 0
      proxy.conf.json
  3. 2 2
      src/app/components/configurationCenter/configuration-category/configuration-category.component.ts
  4. 2 2
      src/app/components/configurationCenter/configuration-dictionary/configuration-dictionary.component.html
  5. 5 1
      src/app/components/configurationCenter/configuration-dictionary/configuration-dictionary.component.ts
  6. 5 4
      src/app/components/incidentManagement/incident-detail/incident-detail.component.html
  7. 15 5
      src/app/components/incidentManagement/incident-detail/incident-detail.component.ts
  8. 2 2
      src/app/components/incidentManagement/incident-handle-info-simple/incident-handle-info-simple.component.html
  9. 42 8
      src/app/components/incidentManagement/incident-handle-info-simple/incident-handle-info-simple.component.ts
  10. 2 2
      src/app/components/incidentManagement/incident-handle-info/incident-handle-info.component.html
  11. 28 8
      src/app/components/incidentManagement/incident-handle-info/incident-handle-info.component.ts
  12. 30 3
      src/app/components/incidentManagement/incident-handle-order/incident-handle-order.component.ts
  13. 2 2
      src/app/components/incidentManagement/incident-handle-repair/incident-handle-repair.component.html
  14. 15 5
      src/app/components/incidentManagement/incident-handle-repair/incident-handle-repair.component.ts
  15. 1 1
      src/app/components/incidentManagement/incident-handle/incident-handle.component.html
  16. 2 4
      src/app/components/incidentManagement/incident-handle/incident-handle.component.less
  17. 1 0
      src/app/components/incidentManagement/incident-handle/incident-handle.component.ts
  18. 1 1
      src/app/components/incidentManagement/incident-ser-call/incident-ser-call.component.html
  19. 23 1
      src/app/components/incidentManagement/incident-ser-call/incident-ser-call.component.ts
  20. 1 1
      src/app/components/incidentManagement/incident-ser-message/incident-ser-message.component.html
  21. 3 4
      src/app/components/incidentManagement/incident-ser-visit/incident-ser-visit.component.html
  22. 22 2
      src/app/components/incidentManagement/incident-ser-visit/incident-ser-visit.component.ts
  23. 16 1
      src/app/components/incidentManagement/incident-substitutio-assign/incident-substitution-assign.component.ts
  24. 1 1
      src/app/components/incidentManagement/incident-substitutio-redeploy/incident-substitution-redeploy.component.ts
  25. 1 1
      src/app/components/knowledge-look/knowledge-look.component.less
  26. 1 1
      src/app/components/knowledge-look/knowledge-look.component.ts
  27. 4 2
      src/app/components/order-scope/order-scope.component.ts
  28. 73 67
      src/app/views/fuwutai/fuwutai.component.html
  29. 234 2
      src/app/views/fuwutai/fuwutai.component.less
  30. 192 28
      src/app/views/fuwutai/fuwutai.component.ts
  31. 1 1
      src/app/views/hospital-config/hospital-config.component.ts
  32. 11 10
      src/app/views/incident-management/incident-management.component.html
  33. 33 22
      src/app/views/incident-management/incident-management.component.ts
  34. 33 41
      src/app/views/main/main.component.html
  35. 76 22
      src/app/views/main/main.component.less
  36. 14 3
      src/app/views/main/main.component.ts
  37. 24 0
      src/app/views/pathology/pathology.component.html
  38. 109 8
      src/app/views/pathology/pathology.component.less
  39. 32 0
      src/app/views/pathology/pathology.component.ts
  40. 2 1
      src/app/views/pathology/pathology.module.ts
  41. 1 1
      src/app/views/specimen-room-view/specimen-room-view.component.html
  42. 8 10
      src/app/views/specimen-room-view/specimen-room-view.component.less
  43. 13 5
      src/app/views/specimen-room-view/specimen-room-view.component.ts
  44. 164 3
      src/assets/iconfont/demo_index.html
  45. 31 3
      src/assets/iconfont/iconfont.css
  46. 1 1
      src/assets/iconfont/iconfont.js
  47. 49 0
      src/assets/iconfont/iconfont.json
  48. BIN
      src/assets/iconfont/iconfont.ttf
  49. BIN
      src/assets/iconfont/iconfont.woff
  50. BIN
      src/assets/iconfont/iconfont.woff2
  51. 50 0
      upload/development120.js

+ 1 - 0
package.json

@@ -7,6 +7,7 @@
7
     "start:17": "set NODE_OPTIONS=--openssl-legacy-provider && ng serve --proxy-config proxy.conf.json --port 4210 --disable-host-check --public-host=dashitech.com --host 0.0.0.0",
7
     "start:17": "set NODE_OPTIONS=--openssl-legacy-provider && ng serve --proxy-config proxy.conf.json --port 4210 --disable-host-check --public-host=dashitech.com --host 0.0.0.0",
8
     "build:17": "set NODE_OPTIONS=--openssl-legacy-provider --max_old_space_size=4096 && npm run build",
8
     "build:17": "set NODE_OPTIONS=--openssl-legacy-provider --max_old_space_size=4096 && npm run build",
9
     "development": "node ./upload/development.js",
9
     "development": "node ./upload/development.js",
10
+    "development120": "node ./upload/development120.js",
10
     "production": "node ./upload/production.js",
11
     "production": "node ./upload/production.js",
11
     "test": "ng test",
12
     "test": "ng test",
12
     "lint": "ng lint",
13
     "lint": "ng lint",

+ 8 - 0
proxy.conf.json

@@ -14,5 +14,13 @@
14
     "pathRewrite": {
14
     "pathRewrite": {
15
       "^/file": "/file"
15
       "^/file": "/file"
16
     }
16
     }
17
+  },
18
+  "/record": {
19
+    "target": "http://192.168.3.108",
20
+    "logLevel": "debug",
21
+    "changeOrigin": true,
22
+    "pathRewrite": {
23
+      "^/record": "/record"
24
+    }
17
   }
25
   }
18
 }
26
 }

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

@@ -169,7 +169,7 @@ export class ConfigurationCategoryComponent implements OnInit {
169
       group2: {
169
       group2: {
170
         groupName: keyword,
170
         groupName: keyword,
171
         hospitals: this.validateConfigForm.value.dutyId,
171
         hospitals: this.validateConfigForm.value.dutyId,
172
-        type: 1,
172
+        type: 3,
173
       },
173
       },
174
       idx: 0,
174
       idx: 0,
175
       sum: 10,
175
       sum: 10,
@@ -653,7 +653,7 @@ export class ConfigurationCategoryComponent implements OnInit {
653
           userGroup: this.validateConfigForm.value.userGroup,
653
           userGroup: this.validateConfigForm.value.userGroup,
654
           groupId: this.validateConfigForm.value.groupId || undefined,
654
           groupId: this.validateConfigForm.value.groupId || undefined,
655
           userId: this.validateConfigForm.value.userGroup === 1 ? this.validateConfigForm.value.userId : undefined,
655
           userId: this.validateConfigForm.value.userGroup === 1 ? this.validateConfigForm.value.userId : undefined,
656
-          hosId: this.currentHospital.id,
656
+          hosId: this.hospitalConfig === 1 ? this.currentHospital.id  : this.validateConfigForm.value.hosId,
657
         }
657
         }
658
       };
658
       };
659
     } else {
659
     } else {

+ 2 - 2
src/app/components/configurationCenter/configuration-dictionary/configuration-dictionary.component.html

@@ -41,8 +41,8 @@
41
                     </nz-input-group>
41
                     </nz-input-group>
42
                   </nz-form-control>
42
                   </nz-form-control>
43
                 </nz-form-item>
43
                 </nz-form-item>
44
-                <i class="icon_transport transport-tag27fuben ml8" (click)="addField(i)"></i>
45
-                <i class="icon_transport transport-shanchu1 ml8" *ngIf="dictionaryList.length > 1 && !data.system" (click)="removeField(data, i)"></i>
44
+                <i class="icon_transport transport-tag27fuben ml8" (click)="addField(i)" *ngIf="!(activeDictionaryKey.key === 'incident_status' || activeDictionaryKey.key === 'incident_degree')"></i>
45
+                <i class="icon_transport transport-shanchu1 ml8" *ngIf="dictionaryList.length > 1 && !data.system && !(activeDictionaryKey.key === 'incident_status' || activeDictionaryKey.key === 'incident_degree')" (click)="removeField(data, i)"></i>
46
               </div>
46
               </div>
47
             </div>
47
             </div>
48
           </form>
48
           </form>

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

@@ -165,7 +165,11 @@ export class ConfigurationDictionaryComponent implements OnInit {
165
       this.dictionaryList.forEach((obj, i) => {
165
       this.dictionaryList.forEach((obj, i) => {
166
         for (const key in obj) {
166
         for (const key in obj) {
167
           if(key !== 'id' && key !== 'system'){
167
           if(key !== 'id' && key !== 'system'){
168
-            this.validateDictionaryForm.addControl(key + '_' + obj.id, new FormControl({value: obj[key], disabled: key === 'value' ? obj.system : false}, [Validators.required]))
168
+            if(this.activeDictionaryKey.key === 'incident_status' || this.activeDictionaryKey.key === 'incident_degree'){
169
+              this.validateDictionaryForm.addControl(key + '_' + obj.id, new FormControl({value: obj[key], disabled: true}, [Validators.required]))
170
+            }else{
171
+              this.validateDictionaryForm.addControl(key + '_' + obj.id, new FormControl({value: obj[key], disabled: key === 'value' ? obj.system : false}, [Validators.required]))
172
+            }
169
           }
173
           }
170
         }
174
         }
171
       })
175
       })

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

@@ -35,8 +35,8 @@
35
             </div>
35
             </div>
36
             <div class="row">
36
             <div class="row">
37
               <div class="col">来电电话:{{incidentData.incomingPhone}}</div>
37
               <div class="col">来电电话:{{incidentData.incomingPhone}}</div>
38
-              <div class="col"><audio class="audio" controls style="outline: none;" *ngIf="incidentData.callID"><source [src]="audioSrc"></audio></div>
39
-              <div class="col">关联资产:{{incidentData.assetDTO?.name}}</div>
38
+              <div class="col"><audio class="audio" controls style="outline: none;" *ngIf="incidentData.callID && audioSrc"><source [src]="audioSrc" type="audio/wav"></audio></div>
39
+              <div class="col"><ng-container *ngIf="incidentData.assetDTO">关联资产:{{incidentData.assetDTO?.name}}</ng-container></div>
40
             </div>
40
             </div>
41
             <div class="row">
41
             <div class="row">
42
               <div class="col">报修科室:{{incidentData.department?.dept}}</div>
42
               <div class="col">报修科室:{{incidentData.department?.dept}}</div>
@@ -59,8 +59,9 @@
59
               <div class="col">解决方案:{{incidentData.handleDescription}}</div>
59
               <div class="col">解决方案:{{incidentData.handleDescription}}</div>
60
             </div>
60
             </div>
61
             <div class="row">
61
             <div class="row">
62
-              <div class="col">是否生成知识库:{{incidentData.transSolution == 1 ? '是' : '否'}}</div>
63
-              <div class="col flex2">是否引用知识库:{{incidentData.solutionNo ? '是' : '否'}}</div>
62
+              <div class="col">是否生成知识库:{{incidentData.solutionCode ? '是' : '否'}}</div>
63
+              <div class="col">生成知识库编号:{{incidentData.solutionCode}}</div>
64
+              <div class="col">是否引用知识库:{{incidentData.solutionNo ? '是' : '否'}}</div>
64
             </div>
65
             </div>
65
             <div class="row">
66
             <div class="row">
66
               <div class="col thumbs">
67
               <div class="col thumbs">

+ 15 - 5
src/app/components/incidentManagement/incident-detail/incident-detail.component.ts

@@ -59,7 +59,7 @@ export class IncidentDetailComponent implements OnInit {
59
     this.activeTabValue = item.value;
59
     this.activeTabValue = item.value;
60
 
60
 
61
     if(this.activeTabValue == 1){
61
     if(this.activeTabValue == 1){
62
-      this.incidentData.callID && this.getCallrecord();
62
+      this.incidentData.callID && this.getCallLog();
63
       this.incidentData.reqAttachment && this.getRepairImgs();
63
       this.incidentData.reqAttachment && this.getRepairImgs();
64
     }else if(this.activeTabValue == 2){
64
     }else if(this.activeTabValue == 2){
65
       this.getHandleImgs();
65
       this.getHandleImgs();
@@ -173,19 +173,29 @@ export class IncidentDetailComponent implements OnInit {
173
 
173
 
174
   // 获取通话音频
174
   // 获取通话音频
175
   audioSrc =  '';//音频
175
   audioSrc =  '';//音频
176
-  getCallrecord() {
176
+  getCallLog() {
177
     let postData = {
177
     let postData = {
178
       idx: 0,
178
       idx: 0,
179
       sum: 1,
179
       sum: 1,
180
-      callrecord: {callAccept: this.incidentData.callID},
180
+      callLog: {callAccept: this.incidentData.callID},
181
     };
181
     };
182
     this.mainService
182
     this.mainService
183
-      .getFetchDataList('simple/data', 'callrecord', postData)
183
+      .getFetchDataList('simple/data', 'callLog', postData)
184
       .subscribe((result) => {
184
       .subscribe((result) => {
185
         if(result.status == 200){
185
         if(result.status == 200){
186
           result.list = result.list || [];
186
           result.list = result.list || [];
187
           if(result.list.length){
187
           if(result.list.length){
188
-            this.audioSrc = location.origin + result.list[0].recordingFileName;
188
+            if(result.list[0].path){
189
+              this.mainService.getCallLogPath({ path: result.list[0].path, hosId: result.list[0].hosId }).subscribe((result) => {
190
+                if (result["state"] == 200) {
191
+                  this.audioSrc = location.origin + result["relativePath"];
192
+                }else{
193
+                  this.audioSrc = '';
194
+                }
195
+              });
196
+            }else{
197
+              this.audioSrc = '';
198
+            }
189
           }else{
199
           }else{
190
             this.audioSrc = '';
200
             this.audioSrc = '';
191
           }
201
           }

+ 2 - 2
src/app/components/incidentManagement/incident-handle-info-simple/incident-handle-info-simple.component.html

@@ -27,12 +27,12 @@
27
     </div>
27
     </div>
28
   </div>
28
   </div>
29
 
29
 
30
-  <div class="formItem">
30
+  <div class="formItem" *ngIf="itsmIncidentAsset.value == 1">
31
     <div class="name"><i class="icon_transport transport-required red" style="visibility: hidden;"></i>关联资产:</div>
31
     <div class="name"><i class="icon_transport transport-required red" style="visibility: hidden;"></i>关联资产:</div>
32
     <div class="value w100">
32
     <div class="value w100">
33
       <nz-select class="w100" [(ngModel)]="incidentDataCopy.assetId" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch
33
       <nz-select class="w100" [(ngModel)]="incidentDataCopy.assetId" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch
34
         (nzOnSearch)="changeInp('assetId', $event)" nzAllowClear  nzPlaceHolder="请选择关联资产">
34
         (nzOnSearch)="changeInp('assetId', $event)" nzAllowClear  nzPlaceHolder="请选择关联资产">
35
-          <ng-container *ngFor="let option of assetProducList">
35
+          <ng-container *ngFor="let option of assetList">
36
             <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
36
             <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
37
           </ng-container>
37
           </ng-container>
38
           <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
38
           <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>

+ 42 - 8
src/app/components/incidentManagement/incident-handle-info-simple/incident-handle-info-simple.component.ts

@@ -36,7 +36,7 @@ export class IncidentHandleInfoSimpleComponent implements OnInit {
36
       if(v[0] === 'synergetic'){
36
       if(v[0] === 'synergetic'){
37
         this.getSynergeticList(v[1]);
37
         this.getSynergeticList(v[1]);
38
       }else if(v[0] === 'assetId'){
38
       }else if(v[0] === 'assetId'){
39
-        this.getAssetProductList(v[1]);
39
+        this.getAssetList(v[1]);
40
       }
40
       }
41
     });
41
     });
42
     this.init();
42
     this.init();
@@ -47,9 +47,11 @@ export class IncidentHandleInfoSimpleComponent implements OnInit {
47
     this.hosId = this.tool.getCurrentHospital().id;
47
     this.hosId = this.tool.getCurrentHospital().id;
48
     this.incidentDataCopy = cloneDeep(this.incidentData);
48
     this.incidentDataCopy = cloneDeep(this.incidentData);
49
     this.incidentDataCopy.synergetic = [];
49
     this.incidentDataCopy.synergetic = [];
50
+    this.getHospitalConfig();
50
     this.getHandleCategorys();
51
     this.getHandleCategorys();
52
+    this.getClosecodes();
51
     this.getSynergeticList();
53
     this.getSynergeticList();
52
-    this.getAssetProductList();
54
+    this.getAssetList();
53
   }
55
   }
54
 
56
 
55
   // 边输边搜节流阀
57
   // 边输边搜节流阀
@@ -76,6 +78,19 @@ export class IncidentHandleInfoSimpleComponent implements OnInit {
76
     });
78
     });
77
   }
79
   }
78
 
80
 
81
+  // 获取处理结果列表
82
+  closecodeList:any[] = [];
83
+  getClosecodes(){
84
+    this.mainService.getDictionary("list", "incident_closecode").subscribe((data) => {
85
+      this.closecodeList = data || [];
86
+      console.log(this.incidentDataCopy)
87
+      if(!this.incidentDataCopy.closecode){
88
+        let closecode = this.closecodeList.find(v => v.value == '1');
89
+        this.incidentDataCopy.closecode = closecode ? closecode.id : undefined;
90
+      }
91
+    });
92
+  }
93
+
79
   // 获取协同人员
94
   // 获取协同人员
80
   hosId:any;
95
   hosId:any;
81
   isLoading = false;
96
   isLoading = false;
@@ -83,7 +98,7 @@ export class IncidentHandleInfoSimpleComponent implements OnInit {
83
   getSynergeticList(keyword = '') {
98
   getSynergeticList(keyword = '') {
84
     let postData = {
99
     let postData = {
85
       user: {
100
       user: {
86
-        hospital: { id: this.hosId },
101
+        hospital: { id: this.incidentDataCopy.duty.id },
87
         name: keyword,
102
         name: keyword,
88
         simpleQuery: true,
103
         simpleQuery: true,
89
         roleCodes: 'first-line support',
104
         roleCodes: 'first-line support',
@@ -100,11 +115,30 @@ export class IncidentHandleInfoSimpleComponent implements OnInit {
100
       });
115
       });
101
   }
116
   }
102
 
117
 
118
+  // 获取院区配置信息
119
+  itsmIncidentAsset:any = {};//是否事件关联资产
120
+  getHospitalConfig() {
121
+    let postData = {
122
+      idx: 0,
123
+      sum: 9999,
124
+      hospitalConfig: {
125
+        model: "itsm",
126
+        hosId: this.hosId,
127
+      },
128
+    }
129
+    this.mainService
130
+      .getFetchDataList("simple/data", "hospitalConfig", postData)
131
+      .subscribe((result) => {
132
+        let list = result.list || [];
133
+        this.itsmIncidentAsset = list.find(v => v.key == 'itsmIncidentAsset') || {};
134
+      });
135
+  }
136
+
103
   // 获取资产列表
137
   // 获取资产列表
104
-  assetProducList: any = [];
105
-  getAssetProductList(keyword = '') {
138
+  assetList: any = [];
139
+  getAssetList(keyword = '') {
106
     let postData = {
140
     let postData = {
107
-      assetProduct: {
141
+      asset: {
108
         hosId: this.hosId,
142
         hosId: this.hosId,
109
         name: keyword,
143
         name: keyword,
110
       },
144
       },
@@ -112,9 +146,9 @@ export class IncidentHandleInfoSimpleComponent implements OnInit {
112
       sum: 20,
146
       sum: 20,
113
     };
147
     };
114
     this.mainService
148
     this.mainService
115
-      .getFetchDataList("simple/data", "assetProduct", postData)
149
+      .getFetchDataList("simple/data", "asset", postData)
116
       .subscribe((data) => {
150
       .subscribe((data) => {
117
-        this.assetProducList = data.list;
151
+        this.assetList = data.list;
118
       });
152
       });
119
   }
153
   }
120
 
154
 

+ 2 - 2
src/app/components/incidentManagement/incident-handle-info/incident-handle-info.component.html

@@ -68,12 +68,12 @@
68
     </div>
68
     </div>
69
   </div>
69
   </div>
70
 
70
 
71
-  <div class="formItem">
71
+  <div class="formItem" *ngIf="itsmIncidentAsset.value == 1">
72
     <div class="name"><i class="icon_transport transport-required red" style="visibility: hidden;"></i>关联资产:</div>
72
     <div class="name"><i class="icon_transport transport-required red" style="visibility: hidden;"></i>关联资产:</div>
73
     <div class="value w100">
73
     <div class="value w100">
74
       <nz-select class="w100" [(ngModel)]="incidentDataCopy.assetId" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch
74
       <nz-select class="w100" [(ngModel)]="incidentDataCopy.assetId" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch
75
         (nzOnSearch)="changeInp('assetId', $event)" nzAllowClear  nzPlaceHolder="请选择关联资产">
75
         (nzOnSearch)="changeInp('assetId', $event)" nzAllowClear  nzPlaceHolder="请选择关联资产">
76
-          <ng-container *ngFor="let option of assetProducList">
76
+          <ng-container *ngFor="let option of assetList">
77
             <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
77
             <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
78
           </ng-container>
78
           </ng-container>
79
           <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
79
           <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>

+ 28 - 8
src/app/components/incidentManagement/incident-handle-info/incident-handle-info.component.ts

@@ -45,7 +45,7 @@ export class IncidentHandleInfoComponent implements OnInit, OnChanges {
45
       if(v[0] === 'synergetic'){
45
       if(v[0] === 'synergetic'){
46
         this.getSynergeticList(v[1]);
46
         this.getSynergeticList(v[1]);
47
       }else if(v[0] === 'assetId'){
47
       }else if(v[0] === 'assetId'){
48
-        this.getAssetProductList(v[1]);
48
+        this.getAssetList(v[1]);
49
       }else if(v[0] === 'category'){
49
       }else if(v[0] === 'category'){
50
         this.getIncidentCategoryList(v[1]);
50
         this.getIncidentCategoryList(v[1]);
51
       }
51
       }
@@ -66,10 +66,11 @@ export class IncidentHandleInfoComponent implements OnInit, OnChanges {
66
       this.incidentDataCopy.transSolution = 0;
66
       this.incidentDataCopy.transSolution = 0;
67
     }
67
     }
68
     console.log('this.incidentDataCopy:', this.incidentDataCopy)
68
     console.log('this.incidentDataCopy:', this.incidentDataCopy)
69
+    this.getHospitalConfig();
69
     this.getHandleCategorys();
70
     this.getHandleCategorys();
70
     this.getClosecodes();
71
     this.getClosecodes();
71
     this.getSynergeticList();
72
     this.getSynergeticList();
72
-    this.getAssetProductList();
73
+    this.getAssetList();
73
     this.getIncidentCategoryList();
74
     this.getIncidentCategoryList();
74
   }
75
   }
75
 
76
 
@@ -122,7 +123,7 @@ export class IncidentHandleInfoComponent implements OnInit, OnChanges {
122
   getSynergeticList(keyword = '') {
123
   getSynergeticList(keyword = '') {
123
     let postData = {
124
     let postData = {
124
       user: {
125
       user: {
125
-        hospital: { id: this.hosId },
126
+        hospital: { id: this.incidentDataCopy.duty.id },
126
         name: keyword,
127
         name: keyword,
127
         simpleQuery: true,
128
         simpleQuery: true,
128
         roleCodes: 'first-line support',
129
         roleCodes: 'first-line support',
@@ -169,11 +170,30 @@ export class IncidentHandleInfoComponent implements OnInit, OnChanges {
169
     })
170
     })
170
   }
171
   }
171
 
172
 
173
+  // 获取院区配置信息
174
+  itsmIncidentAsset:any = {};//是否事件关联资产
175
+  getHospitalConfig() {
176
+    let postData = {
177
+      idx: 0,
178
+      sum: 9999,
179
+      hospitalConfig: {
180
+        model: "itsm",
181
+        hosId: this.hosId,
182
+      },
183
+    }
184
+    this.mainService
185
+      .getFetchDataList("simple/data", "hospitalConfig", postData)
186
+      .subscribe((result) => {
187
+        let list = result.list || [];
188
+        this.itsmIncidentAsset = list.find(v => v.key == 'itsmIncidentAsset') || {};
189
+      });
190
+  }
191
+
172
   // 获取资产列表
192
   // 获取资产列表
173
-  assetProducList: any = [];
174
-  getAssetProductList(keyword = '') {
193
+  assetList: any = [];
194
+  getAssetList(keyword = '') {
175
     let postData = {
195
     let postData = {
176
-      assetProduct: {
196
+      asset: {
177
         hosId: this.hosId,
197
         hosId: this.hosId,
178
         name: keyword,
198
         name: keyword,
179
       },
199
       },
@@ -181,9 +201,9 @@ export class IncidentHandleInfoComponent implements OnInit, OnChanges {
181
       sum: 20,
201
       sum: 20,
182
     };
202
     };
183
     this.mainService
203
     this.mainService
184
-      .getFetchDataList("simple/data", "assetProduct", postData)
204
+      .getFetchDataList("simple/data", "asset", postData)
185
       .subscribe((data) => {
205
       .subscribe((data) => {
186
-        this.assetProducList = data.list;
206
+        this.assetList = data.list;
187
       });
207
       });
188
   }
208
   }
189
 
209
 

+ 30 - 3
src/app/components/incidentManagement/incident-handle-order/incident-handle-order.component.ts

@@ -35,7 +35,7 @@ export class IncidentHandleOrderComponent implements OnInit {
35
     });
35
     });
36
     this.hosId = this.tool.getCurrentHospital().id;
36
     this.hosId = this.tool.getCurrentHospital().id;
37
     this.getSummaryList();
37
     this.getSummaryList();
38
-    this.getConsumableList();
38
+    this.getHospitalConfig();
39
     this.getWorkHourManagementList();
39
     this.getWorkHourManagementList();
40
   }
40
   }
41
 
41
 
@@ -143,18 +143,44 @@ export class IncidentHandleOrderComponent implements OnInit {
143
     this.changeInpSubject.next([model, e]);
143
     this.changeInpSubject.next([model, e]);
144
   }
144
   }
145
 
145
 
146
+  // 获取院区配置信息
147
+  itsmZeroStock:any = {};//是否支持零库存
148
+  itsmParentConsumable:any = {};//是否支持父级科室耗材
149
+  getHospitalConfig() {
150
+    let postData = {
151
+      idx: 0,
152
+      sum: 9999,
153
+      hospitalConfig: {
154
+        model: "itsm",
155
+        hosId: this.hosId,
156
+      },
157
+    }
158
+    this.mainService
159
+      .getFetchDataList("simple/data", "hospitalConfig", postData)
160
+      .subscribe((result) => {
161
+        let list = result.list || [];
162
+        this.itsmZeroStock = list.find(v => v.key == 'itsmZeroStock') || {};
163
+        this.itsmParentConsumable = list.find(v => v.key == 'itsmParentConsumable') || {};
164
+        this.getConsumableList();
165
+      });
166
+  }
167
+
146
   // 获取耗材
168
   // 获取耗材
147
   consumableList: any = [];
169
   consumableList: any = [];
148
   getConsumableList(keyword = '', isShowValue = false) {
170
   getConsumableList(keyword = '', isShowValue = false) {
149
-    let postData = {
171
+    let postData:any = {
150
       consumable: {
172
       consumable: {
151
         name: keyword,
173
         name: keyword,
152
-        hosId: this.hosId,
153
         showZero: true,
174
         showZero: true,
154
       },
175
       },
155
       idx: 0,
176
       idx: 0,
156
       sum: 20,
177
       sum: 20,
157
     };
178
     };
179
+    if(this.itsmParentConsumable.value == 1){
180
+      postData.consumable.upHosId = this.hosId;
181
+		}else{
182
+      postData.consumable.hosId = this.hosId;
183
+		}
158
     this.mainService
184
     this.mainService
159
       .getFetchDataList("simple/data", "consumable", postData)
185
       .getFetchDataList("simple/data", "consumable", postData)
160
       .subscribe((data) => {
186
       .subscribe((data) => {
@@ -276,6 +302,7 @@ export class IncidentHandleOrderComponent implements OnInit {
276
     let postData = {
302
     let postData = {
277
       workHourManagement: {
303
       workHourManagement: {
278
         hosId: this.hosId,
304
         hosId: this.hosId,
305
+        showSecond: 1,
279
       },
306
       },
280
       idx: 0,
307
       idx: 0,
281
       sum: 9999,
308
       sum: 9999,

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

@@ -39,8 +39,8 @@
39
 <div class="detailItem">
39
 <div class="detailItem">
40
   <div class="name">电话录音:</div>
40
   <div class="name">电话录音:</div>
41
   <div class="value">
41
   <div class="value">
42
-    <audio class="audio" controls style="outline: none;" *ngIf="incidentData.callID">
43
-      <source [src]="audioSrc">
42
+    <audio class="audio" controls style="outline: none;" *ngIf="incidentData.callID && audioSrc">
43
+      <source [src]="audioSrc" type="audio/wav">
44
     </audio>
44
     </audio>
45
   </div>
45
   </div>
46
 </div>
46
 </div>

+ 15 - 5
src/app/components/incidentManagement/incident-handle-repair/incident-handle-repair.component.ts

@@ -21,25 +21,35 @@ export class IncidentHandleRepairComponent implements OnInit {
21
 
21
 
22
   ngOnInit() {
22
   ngOnInit() {
23
     this.hosId = this.tool.getCurrentHospital().id;
23
     this.hosId = this.tool.getCurrentHospital().id;
24
-    this.incidentData.callID && this.getCallrecord();
24
+    this.incidentData.callID && this.getCallLog();
25
     this.incidentData.reqAttachment && this.getRepairImgs();
25
     this.incidentData.reqAttachment && this.getRepairImgs();
26
   }
26
   }
27
 
27
 
28
   // 获取通话音频
28
   // 获取通话音频
29
   audioSrc =  '';//音频
29
   audioSrc =  '';//音频
30
-  getCallrecord() {
30
+  getCallLog() {
31
     let postData = {
31
     let postData = {
32
       idx: 0,
32
       idx: 0,
33
       sum: 1,
33
       sum: 1,
34
-      callrecord: {callAccept: this.incidentData.callID},
34
+      callLog: {callAccept: this.incidentData.callID},
35
     };
35
     };
36
     this.mainService
36
     this.mainService
37
-      .getFetchDataList('simple/data', 'callrecord', postData)
37
+      .getFetchDataList('simple/data', 'callLog', postData)
38
       .subscribe((result) => {
38
       .subscribe((result) => {
39
         if(result.status == 200){
39
         if(result.status == 200){
40
           result.list = result.list || [];
40
           result.list = result.list || [];
41
           if(result.list.length){
41
           if(result.list.length){
42
-            this.audioSrc = location.origin + result.list[0].recordingFileName;
42
+            if(result.list[0].path){
43
+              this.mainService.getCallLogPath({ path: result.list[0].path, hosId: result.list[0].hosId }).subscribe((result) => {
44
+                if (result["state"] == 200) {
45
+                  this.audioSrc = location.origin + result["relativePath"];
46
+                }else{
47
+                  this.audioSrc = '';
48
+                }
49
+              });
50
+            }else{
51
+              this.audioSrc = '';
52
+            }
43
           }else{
53
           }else{
44
             this.audioSrc = '';
54
             this.audioSrc = '';
45
           }
55
           }

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

@@ -1,6 +1,6 @@
1
 <div class="modal display_flex justify-content_flex-center align-items_center" *ngIf="incidentData">
1
 <div class="modal display_flex justify-content_flex-center align-items_center" *ngIf="incidentData">
2
   <div class="modalBody">
2
   <div class="modalBody">
3
-    <div class="title">详细处理<i class="icon_transport transport-guanbi" (click)="hideModal()"></i></div>
3
+    <div class="title">{{itsmSimpleHandle.value == 1 ? '简单处理' : '详细处理'}}<i class="icon_transport transport-guanbi" (click)="hideModal()"></i></div>
4
     <div class="content">
4
     <div class="content">
5
       <overlay-scrollbars #osComponentRef1 class="detail">
5
       <overlay-scrollbars #osComponentRef1 class="detail">
6
         <app-incident-handle-repair [incidentData]="incidentData"></app-incident-handle-repair>
6
         <app-incident-handle-repair [incidentData]="incidentData"></app-incident-handle-repair>

+ 2 - 4
src/app/components/incidentManagement/incident-handle/incident-handle.component.less

@@ -114,10 +114,8 @@
114
         height: 100%;
114
         height: 100%;
115
         border-left: 1px solid #E9E9E9;
115
         border-left: 1px solid #E9E9E9;
116
         .knowageItem{
116
         .knowageItem{
117
-          padding: 16px 16px 0;
118
-          &:last-of-type{
119
-            padding-bottom: 16px;
120
-          }
117
+          padding: 16px;
118
+          border-bottom: 1px solid #E9E9E9;
121
         }
119
         }
122
         .knowageTitle{
120
         .knowageTitle{
123
           font-size: 16px;
121
           font-size: 16px;

+ 1 - 0
src/app/components/incidentManagement/incident-handle/incident-handle.component.ts

@@ -321,6 +321,7 @@ export class IncidentHandleComponent implements OnInit {
321
         incident: {
321
         incident: {
322
           ...incidentDataCopy,
322
           ...incidentDataCopy,
323
           handleCategory: incidentDataCopy.handleCategory ? { id: incidentDataCopy.handleCategory }: undefined,
323
           handleCategory: incidentDataCopy.handleCategory ? { id: incidentDataCopy.handleCategory }: undefined,
324
+          closecode: incidentDataCopy.closecode ? { id: incidentDataCopy.closecode }: undefined,
324
           synergetic: incidentDataCopy.synergetic.length ? incidentDataCopy.synergetic.map(v => ({id: v})): undefined,
325
           synergetic: incidentDataCopy.synergetic.length ? incidentDataCopy.synergetic.map(v => ({id: v})): undefined,
325
         },
326
         },
326
       }
327
       }

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

@@ -52,7 +52,7 @@
52
               <td>{{data.callType == 1?'呼入':(data.callType == 0?'呼出':'')}}</td>
52
               <td>{{data.callType == 1?'呼入':(data.callType == 0?'呼出':'')}}</td>
53
               <td>
53
               <td>
54
                 <div class="coop">
54
                 <div class="coop">
55
-                  <span *ngIf="data.path" (click)="recordcall(data)">回访录音</span>
55
+                  <span *ngIf="data.path" (click)="recordcall(data)">回录音</span>
56
                 </div>
56
                 </div>
57
               </td>
57
               </td>
58
             </tr>
58
             </tr>

+ 23 - 1
src/app/components/incidentManagement/incident-ser-call/incident-ser-call.component.ts

@@ -19,6 +19,7 @@ export class IncidentSerCallComponent implements OnInit {
19
   searchDTO: any = {};
19
   searchDTO: any = {};
20
 
20
 
21
   @Input() itsmData:any;
21
   @Input() itsmData:any;
22
+  @Input() hsmsData:any;
22
   @Output() closeModelHs = new EventEmitter<any>();//1.组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件
23
   @Output() closeModelHs = new EventEmitter<any>();//1.组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件
23
 
24
 
24
   constructor(
25
   constructor(
@@ -77,11 +78,32 @@ export class IncidentSerCallComponent implements OnInit {
77
     if (idx) {
78
     if (idx) {
78
       this.pageIndex = 1;
79
       this.pageIndex = 1;
79
     }
80
     }
81
+    console.log(this.itsmData)
82
+    console.log(this.hsmsData)
83
+    let hosIds;
84
+    if(this.itsmData.mdv2Switch){
85
+      if(this.itsmData.allDuty == 1){
86
+        hosIds = undefined;
87
+      }else{
88
+        hosIds = this.itsmData.checkedHos.map(v => v.id).toString();
89
+      }
90
+    }
91
+    if(this.hsmsData.hsmsSwitch){
92
+      if(this.itsmData.mdv2Switch){
93
+        if(this.itsmData.allDuty == 1){
94
+          hosIds = undefined;
95
+        }else{
96
+          hosIds += ',' + this.hsmsData.checkedHos;
97
+        }
98
+      }else{
99
+        hosIds = this.hsmsData.checkedHos.toString();
100
+      }
101
+    }
80
     let postData = {
102
     let postData = {
81
       idx: this.pageIndex - 1,
103
       idx: this.pageIndex - 1,
82
       sum: this.pageSize,
104
       sum: this.pageSize,
83
       callLog: {
105
       callLog: {
84
-        "hosIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
106
+        hosIds,
85
         dTMFA: this.searchDTO.dTMFA || undefined,
107
         dTMFA: this.searchDTO.dTMFA || undefined,
86
         dTMFB: this.searchDTO.dTMFB || undefined,
108
         dTMFB: this.searchDTO.dTMFB || undefined,
87
         responseTime: this.searchDTO.responseTime ? format(this.searchDTO.responseTime, 'yyyy-MM-dd HH:mm:ss') : undefined,
109
         responseTime: this.searchDTO.responseTime ? format(this.searchDTO.responseTime, 'yyyy-MM-dd HH:mm:ss') : undefined,

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

@@ -41,7 +41,7 @@
41
               <td>
41
               <td>
42
                 <div class="coop">
42
                 <div class="coop">
43
                   <span *ngIf="data.isExcute === 0" (click)="createOrder(data)">生成工单</span>
43
                   <span *ngIf="data.isExcute === 0" (click)="createOrder(data)">生成工单</span>
44
-                  <span *ngIf="data.isExcute === 0 || data.isExcute === 1" (click)="recordcall(data)">回访录音</span>
44
+                  <span *ngIf="data.isExcute === 0 || data.isExcute === 1" (click)="recordcall(data)">回录音</span>
45
                   <span *ngIf="data.isExcute === 0" (click)="showDelModal(data, '确认不受理后,将无法转换为事件工单!', '不受理', 'notAccepted')">不受理</span>
45
                   <span *ngIf="data.isExcute === 0" (click)="showDelModal(data, '确认不受理后,将无法转换为事件工单!', '不受理', 'notAccepted')">不受理</span>
46
                   <span *ngIf="data.isExcute === 1" (click)="openItsmDetails(data.incidentDTO)">查看故障单</span>
46
                   <span *ngIf="data.isExcute === 1" (click)="openItsmDetails(data.incidentDTO)">查看故障单</span>
47
                 </div>
47
                 </div>

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

@@ -6,15 +6,14 @@
6
       <ng-container *ngIf="!loading">
6
       <ng-container *ngIf="!loading">
7
         <div class="items" *ngFor="let item of visitList">
7
         <div class="items" *ngFor="let item of visitList">
8
           <div class="row">
8
           <div class="row">
9
-            <div class="col">单号:{{item.incidentsign}}</div>
10
-            <div class="col">优先级:<span [ngClass]="priorityColor(item.priorityId)">{{item.priorityDTO?.name}}</span></div>
11
-            <div class="col">院区-科室名称:{{item.hosName}}-{{item.department?.dept}}</div>
9
+            <div class="col"><span [ngClass]="priorityColor(item.priorityId)">{{item.priorityDTO?.name}}</span> {{item.incidentsign}}</div>
10
+            <div class="col">{{item.hosName}} {{item.department?.dept}}</div>
12
           </div>
11
           </div>
13
           <div class="row">
12
           <div class="row">
14
             <div class="col">故障描述:{{item.description}}</div>
13
             <div class="col">故障描述:{{item.description}}</div>
15
           </div>
14
           </div>
16
           <div class="row">
15
           <div class="row">
17
-            <div class="col">详细地址:{{ item.place ? item.place.building.buildingName : '' }}{{ item.place ? item.place.floorName : '' }}{{ item.houseNumber }}</div>
16
+            <div class="col">详细地址:{{ item.place ? item.place.building.buildingName : '' }}{{ item.place ? item.place.floorName : '' }}{{ item.houseNumber }} <span [innerHTML]="item.overtimeRemark"></span></div>
18
           </div>
17
           </div>
19
           <div class="row">
18
           <div class="row">
20
             <div class="col">申请时间:{{ item.startDate | date: 'yyyy-MM-dd HH:mm'}}</div>
19
             <div class="col">申请时间:{{ item.startDate | date: 'yyyy-MM-dd HH:mm'}}</div>

+ 22 - 2
src/app/components/incidentManagement/incident-ser-visit/incident-ser-visit.component.ts

@@ -2,6 +2,8 @@ import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angu
2
 import { ToolService } from 'src/app/services/tool.service';
2
 import { ToolService } from 'src/app/services/tool.service';
3
 import { MainService } from 'src/app/services/main.service';
3
 import { MainService } from 'src/app/services/main.service';
4
 import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
4
 import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
5
+import cloneDeep from 'lodash-es/cloneDeep'
6
+import { format, addHours, addDays } from 'date-fns';
5
 @Component({
7
 @Component({
6
   selector: 'app-incident-ser-visit',
8
   selector: 'app-incident-ser-visit',
7
   templateUrl: './incident-ser-visit.component.html',
9
   templateUrl: './incident-ser-visit.component.html',
@@ -94,6 +96,24 @@ export class IncidentSerVisitComponent implements OnInit {
94
     this.getVisitList();
96
     this.getVisitList();
95
   }
97
   }
96
 
98
 
99
+  // 延期记录
100
+  transferHandlerLog = function (currentLog) {
101
+    if(!currentLog){
102
+        return '';
103
+    }
104
+    currentLog = cloneDeep(currentLog);
105
+    if(currentLog.extra1DTO && currentLog.extra2 && currentLog.startTime){
106
+        if(currentLog.extra2==0.5){
107
+          currentLog.extra2 = 4;
108
+          return currentLog.extra1DTO.name+" "+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日") + format(addHours(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成");
109
+        }else{
110
+          return currentLog.extra1DTO.name+" "+ format(addDays(currentLog.startTime, +currentLog.extra2), "MM月dd日前完成");
111
+        }
112
+    }else{
113
+        return '';
114
+    }
115
+  }
116
+
97
   // 获取回访列表
117
   // 获取回访列表
98
   getVisitList(){
118
   getVisitList(){
99
     this.loading = true;
119
     this.loading = true;
@@ -101,8 +121,8 @@ export class IncidentSerVisitComponent implements OnInit {
101
       idx: 0,
121
       idx: 0,
102
       sum: 9999,
122
       sum: 9999,
103
       incident: {
123
       incident: {
104
-        "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
105
-        "hosIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
124
+        // "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
125
+        "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
106
         "urgentType": +this.itsmData.orderScopeRadio + 1,
126
         "urgentType": +this.itsmData.orderScopeRadio + 1,
107
         "queryTask": "callback",
127
         "queryTask": "callback",
108
         "assignee": this.tool.getCurrentUserId(),
128
         "assignee": this.tool.getCurrentUserId(),

+ 16 - 1
src/app/components/incidentManagement/incident-substitutio-assign/incident-substitution-assign.component.ts

@@ -28,6 +28,7 @@ export class IncidentSubstitutionAssignComponent implements OnInit {
28
         this.getGroups(v[1]);
28
         this.getGroups(v[1]);
29
       }
29
       }
30
     });
30
     });
31
+
31
     this.initForm();
32
     this.initForm();
32
     this.getHospitals(1);
33
     this.getHospitals(1);
33
   }
34
   }
@@ -43,6 +44,20 @@ export class IncidentSubstitutionAssignComponent implements OnInit {
43
       groupId: [null, [Validators.required]],//组
44
       groupId: [null, [Validators.required]],//组
44
     });
45
     });
45
     console.log(this.validateForm.controls)
46
     console.log(this.validateForm.controls)
47
+
48
+    // 默认回显当前人的院区和责任部门
49
+    let { hospital, type } = this.tool.getHospitalOrDuty();
50
+    if(type === 'duty'){
51
+      // 是责任部门
52
+      this.changeHospital(hospital.parent.id);
53
+      this.validateForm.controls.hosId.setValue(hospital.parent.id);
54
+      this.validateForm.controls.dutyId.setValue(hospital.id);
55
+      this.changeDuty(hospital.id);
56
+    }else{
57
+      // 不是责任部门
58
+      this.changeHospital(hospital.id);
59
+      this.validateForm.controls.hosId.setValue(hospital.id);
60
+    }
46
   }
61
   }
47
 
62
 
48
   // 修改院区
63
   // 修改院区
@@ -171,7 +186,7 @@ export class IncidentSubstitutionAssignComponent implements OnInit {
171
       group2: {
186
       group2: {
172
         groupName: keyword,
187
         groupName: keyword,
173
         hospitals: this.validateForm.value.dutyId,
188
         hospitals: this.validateForm.value.dutyId,
174
-        type: 1,
189
+        type: 3,
175
       },
190
       },
176
       idx: 0,
191
       idx: 0,
177
       sum: 10,
192
       sum: 10,

+ 1 - 1
src/app/components/incidentManagement/incident-substitutio-redeploy/incident-substitution-redeploy.component.ts

@@ -117,7 +117,7 @@ export class IncidentSubstitutionRedeployComponent implements OnInit {
117
       group2: {
117
       group2: {
118
         groupName: keyword,
118
         groupName: keyword,
119
         hospitals: this.duty.id,
119
         hospitals: this.duty.id,
120
-        type: 1,
120
+        type: 3,
121
       },
121
       },
122
       idx: 0,
122
       idx: 0,
123
       sum: 10,
123
       sum: 10,

+ 1 - 1
src/app/components/knowledge-look/knowledge-look.component.less

@@ -128,7 +128,7 @@
128
 					z-index:9999;
128
 					z-index:9999;
129
 				}
129
 				}
130
 			.view-box{
130
 			.view-box{
131
-				height: 400px;
131
+				height: 628px;
132
 				display: flex;
132
 				display: flex;
133
 				border: 1px solid #eee;
133
 				border: 1px solid #eee;
134
 				.left-box{
134
 				.left-box{

+ 1 - 1
src/app/components/knowledge-look/knowledge-look.component.ts

@@ -41,7 +41,7 @@ export class KnowledgeLookComponent implements OnInit {
41
 			idx: 0,
41
 			idx: 0,
42
 			sum: 9999,
42
 			sum: 9999,
43
 			solution: {
43
 			solution: {
44
-				hosId: this.hosId,
44
+				// hosId: data.hosId,
45
 				operationType:'lookOver',
45
 				operationType:'lookOver',
46
 				solutionNumber:data.solutionNumber
46
 				solutionNumber:data.solutionNumber
47
 			}
47
 			}

+ 4 - 2
src/app/components/order-scope/order-scope.component.ts

@@ -127,8 +127,10 @@ export class OrderScopeComponent implements OnInit {
127
     hosTaskTypes = {}; //当前权限下所有院区对应的任务类型
127
     hosTaskTypes = {}; //当前权限下所有院区对应的任务类型
128
     hosGroups = {}; //当前权限下所有院区对应的人员分组
128
     hosGroups = {}; //当前权限下所有院区对应的人员分组
129
     getOrderScope() {
129
     getOrderScope() {
130
-      this.hosList = this.user.infoPermission.hospitals.filter(v => !this.tool.isDuty(v));
131
-      this.taskTypes = this.user.infoPermission.taskTypes;
130
+      let hospitals = this.user.infoPermission.hospitals || []
131
+      this.hosList = hospitals.filter(v => !this.tool.isDuty(v));
132
+      this.taskTypes = this.user.infoPermission.taskTypes || [];
133
+      let userGroups = this.user.infoPermission.groups || [];
132
       this.userGroups = this.user.infoPermission.groups.filter(v => v.type !== 3);
134
       this.userGroups = this.user.infoPermission.groups.filter(v => v.type !== 3);
133
       this.hosList.forEach((e) => {
135
       this.hosList.forEach((e) => {
134
         let arrT = [],
136
         let arrT = [],

+ 73 - 67
src/app/views/fuwutai/fuwutai.component.html

@@ -118,7 +118,7 @@
118
                   <div class="gongdan" (click)="batchDispatchSelect(!data.checked, data.data.id, $event)">
118
                   <div class="gongdan" (click)="batchDispatchSelect(!data.checked, data.data.id, $event)">
119
                     <span class="left mr8" *ngIf="!flagList.itsmFlag1 && flagList.hsmsFlag1"><label nz-checkbox [ngModel]="data.checked" (ngModelChange)="batchDispatchSelect($event, data.data.id)"></label></span>
119
                     <span class="left mr8" *ngIf="!flagList.itsmFlag1 && flagList.hsmsFlag1"><label nz-checkbox [ngModel]="data.checked" (ngModelChange)="batchDispatchSelect($event, data.data.id)"></label></span>
120
                     <span class="left gongdan_name" nz-tooltip [nzTooltipTitle]="data.data.taskType.taskName + (data.data.goodsRemark?'-'+data.data.goodsRemark:'')+'(' + data.data.gdcode + ')'">
120
                     <span class="left gongdan_name" nz-tooltip [nzTooltipTitle]="data.data.taskType.taskName + (data.data.goodsRemark?'-'+data.data.goodsRemark:'')+'(' + data.data.gdcode + ')'">
121
-                      {{ data.data.isHalfInspect === 1 ? "半程陪检" : data.data.taskType.taskName }}<ng-container *ngIf="data.data.goodsRemark">-{{data.data.goodsRemark}}</ng-container>({{ data.data.gdcode }})
121
+                      <strong>{{ data.data.isHalfInspect === 1 ? "半程陪检" : data.data.taskType.taskName }}</strong><ng-container *ngIf="data.data.goodsRemark">-{{data.data.goodsRemark}}</ng-container>({{ data.data.gdcode }})
122
                     </span>
122
                     </span>
123
                     <div class="right_all">
123
                     <div class="right_all">
124
                       <span nz-tooltip [nzTooltipTitle]="data.data.worker ? data.data.worker.phone : ''" class="right_all_name">{{ data.data.worker ? data.data.worker.name : "" }}</span>
124
                       <span nz-tooltip [nzTooltipTitle]="data.data.worker ? data.data.worker.phone : ''" class="right_all_name">{{ data.data.worker ? data.data.worker.name : "" }}</span>
@@ -225,9 +225,9 @@
225
                     </span>
225
                     </span>
226
                   </div>
226
                   </div>
227
 
227
 
228
-                  <div class="didian" *ngIf="transferHandlerLog(data.data.currentLog)">
228
+                  <div class="didian" *ngIf="data.data.overtimeRemark">
229
                     <span class="left">
229
                     <span class="left">
230
-                      <span [innerHTML]="transferHandlerLog(data.data.currentLog)" nz-tooltip [nzTooltipTitle]="transferHandlerLog(data.data.currentLog)"></span>
230
+                      <span [innerHTML]="data.data.overtimeRemark" nz-tooltip [nzTooltipTitle]="data.data.overtimeRemark"></span>
231
                     </span>
231
                     </span>
232
                   </div>
232
                   </div>
233
                   <!-- 时间 -->
233
                   <!-- 时间 -->
@@ -333,7 +333,7 @@
333
                       <label nz-checkbox [ngModel]="data.checked" (ngModelChange)="batchWithdrawalSelect($event, data.data.id)"></label>
333
                       <label nz-checkbox [ngModel]="data.checked" (ngModelChange)="batchWithdrawalSelect($event, data.data.id)"></label>
334
                     </span>
334
                     </span>
335
                     <span class="left gongdan_name" nz-tooltip [nzTooltipTitle]="data.data.taskType.taskName + (data.data.goodsRemark?'-'+data.data.goodsRemark:'')+'(' + data.data.gdcode + ')'">
335
                     <span class="left gongdan_name" nz-tooltip [nzTooltipTitle]="data.data.taskType.taskName + (data.data.goodsRemark?'-'+data.data.goodsRemark:'')+'(' + data.data.gdcode + ')'">
336
-                      {{ data.data.isHalfInspect === 1 ? "半程陪检" : data.data.taskType.taskName }}<ng-container *ngIf="data.data.goodsRemark">-{{data.data.goodsRemark}}</ng-container>({{ data.data.gdcode }})
336
+                      <strong>{{ data.data.isHalfInspect === 1 ? "半程陪检" : data.data.taskType.taskName }}</strong><ng-container *ngIf="data.data.goodsRemark">-{{data.data.goodsRemark}}</ng-container>({{ data.data.gdcode }})
337
                     </span>
337
                     </span>
338
                     <div class="right_all">
338
                     <div class="right_all">
339
                       <span nz-tooltip [nzTooltipTitle]="data.data.worker ? data.data.worker.phone : ''" class="right_all_name">{{ data.data.worker ? data.data.worker.name : "" }}</span>
339
                       <span nz-tooltip [nzTooltipTitle]="data.data.worker ? data.data.worker.phone : ''" class="right_all_name">{{ data.data.worker ? data.data.worker.name : "" }}</span>
@@ -436,16 +436,16 @@
436
                     </span>
436
                     </span>
437
                   </div>
437
                   </div>
438
 
438
 
439
-                  <div class="didian" *ngIf="transferHandlerLog(data.data.currentLog)">
439
+                  <div class="didian" *ngIf="data.data.overtimeRemark">
440
                     <span class="left">
440
                     <span class="left">
441
-                      <span [innerHTML]="transferHandlerLog(data.data.currentLog)" nz-tooltip [nzTooltipTitle]="transferHandlerLog(data.data.currentLog)"></span>
441
+                      <span [innerHTML]="data.data.overtimeRemark" nz-tooltip [nzTooltipTitle]="data.data.overtimeRemark"></span>
442
                     </span>
442
                     </span>
443
                   </div>
443
                   </div>
444
                   <!-- 时间 -->
444
                   <!-- 时间 -->
445
                   <div class="shijian">
445
                   <div class="shijian">
446
                     <span class="left">
446
                     <span class="left">
447
                       <span>
447
                       <span>
448
-                        申请人:{{ data.data.requester?.name }}
448
+                        处理人/组:{{ transferSynergetic(data.data) }}
449
                       </span>
449
                       </span>
450
                     </span>
450
                     </span>
451
                     <span class="right">
451
                     <span class="right">
@@ -537,7 +537,7 @@
537
                       <label nz-checkbox [ngModel]="data.checked" (ngModelChange)="batchWithdrawalSelect($event, data.data.id)"></label>
537
                       <label nz-checkbox [ngModel]="data.checked" (ngModelChange)="batchWithdrawalSelect($event, data.data.id)"></label>
538
                     </span>
538
                     </span>
539
                     <span class="left gongdan_name" nz-tooltip [nzTooltipTitle]="data.data.taskType.taskName + (data.data.goodsRemark?'-'+data.data.goodsRemark:'')+'(' + data.data.gdcode + ')'">
539
                     <span class="left gongdan_name" nz-tooltip [nzTooltipTitle]="data.data.taskType.taskName + (data.data.goodsRemark?'-'+data.data.goodsRemark:'')+'(' + data.data.gdcode + ')'">
540
-                      {{ data.data.isHalfInspect === 1 ? "半程陪检" : data.data.taskType.taskName }}<ng-container *ngIf="data.data.goodsRemark">-{{data.data.goodsRemark}}</ng-container>({{ data.data.gdcode }})
540
+                      <strong>{{ data.data.isHalfInspect === 1 ? "半程陪检" : data.data.taskType.taskName }}</strong><ng-container *ngIf="data.data.goodsRemark">-{{data.data.goodsRemark}}</ng-container>({{ data.data.gdcode }})
541
                     </span>
541
                     </span>
542
                     <div class="right_all">
542
                     <div class="right_all">
543
                       <span nz-tooltip [nzTooltipTitle]="data.data.worker ? data.data.worker.phone : ''" class="right_all_name">{{ data.data.worker ? data.data.worker.name : "" }}</span>
543
                       <span nz-tooltip [nzTooltipTitle]="data.data.worker ? data.data.worker.phone : ''" class="right_all_name">{{ data.data.worker ? data.data.worker.name : "" }}</span>
@@ -640,16 +640,16 @@
640
                     </span>
640
                     </span>
641
                   </div>
641
                   </div>
642
 
642
 
643
-                  <div class="didian" *ngIf="transferHandlerLog(data.data.currentLog)">
643
+                  <div class="didian" *ngIf="data.data.overtimeRemark">
644
                     <span class="left">
644
                     <span class="left">
645
-                      <span [innerHTML]="transferHandlerLog(data.data.currentLog)" nz-tooltip [nzTooltipTitle]="transferHandlerLog(data.data.currentLog)"></span>
645
+                      <span [innerHTML]="data.data.overtimeRemark" nz-tooltip [nzTooltipTitle]="data.data.overtimeRemark"></span>
646
                     </span>
646
                     </span>
647
                   </div>
647
                   </div>
648
                   <!-- 时间 -->
648
                   <!-- 时间 -->
649
                   <div class="shijian">
649
                   <div class="shijian">
650
                     <span class="left">
650
                     <span class="left">
651
                       <span>
651
                       <span>
652
-                        申请人:{{ data.data.requester?.name }}
652
+                        处理人/组:{{ transferSynergetic(data.data) }}
653
                       </span>
653
                       </span>
654
                     </span>
654
                     </span>
655
                     <span class="right">
655
                     <span class="right">
@@ -917,57 +917,6 @@
917
       </div>
917
       </div>
918
     </div>
918
     </div>
919
     <div class="right">
919
     <div class="right">
920
-      <div class="fixedMenuWrap" *ngIf="!websocketLoading">
921
-        <div class="fixedMenu" *ngIf="incomingService.getPhoneNumber()">
922
-          <div class="menuItems">
923
-            <div class="item itemLink ellipsis-oneline cursorDefault w100" nz-tooltip [nzTooltipTitle]="incomingService.getPhoneNumber()">
924
-              {{incomingService.getPhoneNumber()}}
925
-            </div>
926
-          </div>
927
-        </div>
928
-        <!-- 录音盒状态 -->
929
-        <div class="fixedMenu" *ngIf="incomingService.getPhoneNumber() && incomingService.getSign() === 'box'">
930
-          <div class="menuItems">
931
-            <i class="icon_transport transport-shixian call-icon"></i>
932
-          </div>
933
-        </div>
934
-        <!-- 呼叫中心状态 -->
935
-         <!-- 来电 -->
936
-        <div class="fixedMenu" *ngIf="jry_state=='laidian' && incomingService.getSign() === 'callCenter'">
937
-          <div class="menuItems">
938
-            <i class="icon_transport transport-laidian call-icon"></i>
939
-          </div>
940
-        </div>
941
-        <!-- 示忙  -->
942
-        <div class="fixedMenu" *ngIf="jry_state=='shimang' && incomingService.getSign() === 'callCenter'">
943
-          <div class="menuItems">
944
-            <i class="icon_transport transport-shimang1 call-icon"></i>
945
-          </div>
946
-        </div>
947
-        <!-- 示闲  -->
948
-        <div class="fixedMenu" *ngIf="jry_state=='shixian' && incomingService.getSign() === 'callCenter'">
949
-          <div class="menuItems">
950
-            <i class="icon_transport transport-shixian call-icon"></i>
951
-          </div>
952
-        </div>
953
-        <!-- 通话中  -->
954
-        <div class="fixedMenu" *ngIf="jry_state=='tonghuazhong' && incomingService.getSign() === 'callCenter'">
955
-          <div class="menuItems">
956
-            <i class="icon_transport transport-tonghuazhong call-icon"></i>
957
-          </div>
958
-        </div>
959
-
960
-        <div class="fixedMenu" *ngIf="incomingService.getSign() === 'callCenter' && ((jry_state == 'shimang' && isShixian) || jry_state == 'shixian')">
961
-          <div class="menuItems">
962
-            <button nz-button nzType="link" class="item itemLink call-status" (click)="jry_shixian($event)" *ngIf="jry_state=='shimang' && isShixian">
963
-              示闲
964
-            </button>
965
-            <button nz-button nzType="link" class="item itemLink call-status" (click)="jry_shimang($event)" *ngIf="jry_state == 'shixian'">
966
-              示忙
967
-            </button>
968
-          </div>
969
-        </div>
970
-      </div>
971
       <div class="fixedMenu" *ngIf="hsmsData.hsmsSwitch || itsmData.mdv2Switch">
920
       <div class="fixedMenu" *ngIf="hsmsData.hsmsSwitch || itsmData.mdv2Switch">
972
         <div class="menuItems">
921
         <div class="menuItems">
973
           <button nz-button nzType="link" class="item itemLink" (click)="showNewOrder()" [nzLoading]="getConfigTasktypeLoading || patientLogTasktypeLoading">
922
           <button nz-button nzType="link" class="item itemLink" (click)="showNewOrder()" [nzLoading]="getConfigTasktypeLoading || patientLogTasktypeLoading">
@@ -1023,14 +972,71 @@
1023
     <div *ngIf="showLastItems && fixedTab != '' && fixedTab != 'logout' && fixedTab != 'toSystem' && fixedTab != 'newOrder'" (click)="fixedMenuShangla()" class="fixedMark"></div>
972
     <div *ngIf="showLastItems && fixedTab != '' && fixedTab != 'logout' && fixedTab != 'toSystem' && fixedTab != 'newOrder'" (click)="fixedMenuShangla()" class="fixedMark"></div>
1024
   </div>
973
   </div>
1025
 
974
 
975
+  <!-- 右侧悬浮框-录音盒或呼叫中心状态 -->
976
+  <div id="fixedMenuAll" class="fixedAll">
977
+    <div class="right">
978
+      <div class="fixedMenuWrap" *ngIf="!websocketLoading">
979
+        <div class="fixedMenu" *ngIf="incomingService.getPhoneNumber()">
980
+          <div class="menuItems">
981
+            <div class="item itemLink ellipsis-oneline cursorDefault w100" nz-tooltip [nzTooltipTitle]="incomingService.getPhoneNumber()">
982
+              {{incomingService.getPhoneNumber()}}
983
+            </div>
984
+          </div>
985
+        </div>
986
+        <!-- 录音盒状态 -->
987
+        <div class="fixedMenu" *ngIf="incomingService.getPhoneNumber() && incomingService.getSign() === 'box'">
988
+          <div class="menuItems">
989
+            <i class="icon_transport transport-shixian call-icon"></i>
990
+          </div>
991
+        </div>
992
+        <!-- 呼叫中心状态 -->
993
+         <!-- 来电 -->
994
+        <div class="fixedMenu" *ngIf="jry_state=='laidian' && incomingService.getSign() === 'callCenter'">
995
+          <div class="menuItems">
996
+            <i class="icon_transport transport-laidian call-icon"></i>
997
+          </div>
998
+        </div>
999
+        <!-- 示忙  -->
1000
+        <div class="fixedMenu" *ngIf="jry_state=='shimang' && incomingService.getSign() === 'callCenter'">
1001
+          <div class="menuItems">
1002
+            <i class="icon_transport transport-shimang1 call-icon"></i>
1003
+          </div>
1004
+        </div>
1005
+        <!-- 示闲  -->
1006
+        <div class="fixedMenu" *ngIf="jry_state=='shixian' && incomingService.getSign() === 'callCenter'">
1007
+          <div class="menuItems">
1008
+            <i class="icon_transport transport-shixian call-icon"></i>
1009
+          </div>
1010
+        </div>
1011
+        <!-- 通话中  -->
1012
+        <div class="fixedMenu" *ngIf="jry_state=='tonghuazhong' && incomingService.getSign() === 'callCenter'">
1013
+          <div class="menuItems">
1014
+            <i class="icon_transport transport-tonghuazhong call-icon"></i>
1015
+          </div>
1016
+        </div>
1017
+
1018
+        <div class="fixedMenu" *ngIf="incomingService.getSign() === 'callCenter' && ((jry_state == 'shimang' && isShixian) || jry_state == 'shixian')">
1019
+          <div class="menuItems">
1020
+            <button nz-button nzType="link" class="item itemLink call-status" (click)="jry_shixian($event)" *ngIf="jry_state=='shimang' && isShixian">
1021
+              示闲
1022
+            </button>
1023
+            <button nz-button nzType="link" class="item itemLink call-status" (click)="jry_shimang($event)" *ngIf="jry_state == 'shixian'">
1024
+              示忙
1025
+            </button>
1026
+          </div>
1027
+        </div>
1028
+      </div>
1029
+    </div>
1030
+  </div>
1031
+
1026
   <!-- 左侧悬浮框 -->
1032
   <!-- 左侧悬浮框 -->
1027
-  <div id="fixedMenuLeft" class="fixedLeft">
1033
+  <div id="fixedMenuLeft" class="fixedLeft" [hidden]="!itsmData.mdv2Switch && !hsmsData.hsmsSwitch">
1028
     <div class="right">
1034
     <div class="right">
1029
       <div class="fixedMenu">
1035
       <div class="fixedMenu">
1030
         <div class="menuItems">
1036
         <div class="menuItems">
1031
           <div class="others">
1037
           <div class="others">
1032
-            <div class="item" (click)="visitOrder()">回访<span *ngIf="visitNum !== undefined">-{{visitNum}}</span></div>
1033
-            <div class="item" (click)="messageOrder()">留言<span *ngIf="messageNum !== undefined">-{{messageNum}}</span></div>
1038
+            <div class="item" (click)="visitOrder()" *ngIf="itsmData.mdv2Switch">回访<span *ngIf="visitNum !== undefined" [ngClass]="{ red: visitNum > 0}">-{{visitNum}}</span></div>
1039
+            <div class="item" (click)="messageOrder()" *ngIf="itsmData.mdv2Switch">留言<span *ngIf="messageNum !== undefined" [ngClass]="{ red: visitNum > 0}">-{{messageNum}}</span></div>
1034
             <div class="item itemLink" (click)="callOrder()">通话</div>
1040
             <div class="item itemLink" (click)="callOrder()">通话</div>
1035
           </div>
1041
           </div>
1036
         </div>
1042
         </div>
@@ -2239,7 +2245,7 @@
2239
       </div>
2245
       </div>
2240
       <div class="btns display_flex justify-content_flex-center align-items_center">
2246
       <div class="btns display_flex justify-content_flex-center align-items_center">
2241
         <ng-container *ngIf="applyDept && currentTabIndex !== '99999'">
2247
         <ng-container *ngIf="applyDept && currentTabIndex !== '99999'">
2242
-          <button nz-button class="btn" nzType="primary" (click)="newOrderOk('go')" [nzLoading]="isGoLoading">
2248
+          <button nz-button class="btn" nzType="primary" (click)="newOrderOk('&go&')" [nzLoading]="isGoLoading">
2243
             继续建单
2249
             继续建单
2244
           </button>
2250
           </button>
2245
           <button nz-button class="btn" nzType="primary" (click)="newOrderOk()" [nzLoading]="isOkLoading">
2251
           <button nz-button class="btn" nzType="primary" (click)="newOrderOk()" [nzLoading]="isOkLoading">
@@ -2410,4 +2416,4 @@
2410
 <app-incident-ser-message [itsmData]="itsmData" *ngIf="messageShow" (closeModelHs)="closeMessage($event)"></app-incident-ser-message>
2416
 <app-incident-ser-message [itsmData]="itsmData" *ngIf="messageShow" (closeModelHs)="closeMessage($event)"></app-incident-ser-message>
2411
 
2417
 
2412
 <!-- 通话列表 -->
2418
 <!-- 通话列表 -->
2413
-<app-incident-ser-call [itsmData]="itsmData" *ngIf="callShow" (closeModelHs)="closeCall($event)"></app-incident-ser-call>
2419
+<app-incident-ser-call [itsmData]="itsmData" [hsmsData]="hsmsData" *ngIf="callShow" (closeModelHs)="closeCall($event)"></app-incident-ser-call>

+ 234 - 2
src/app/views/fuwutai/fuwutai.component.less

@@ -6,7 +6,7 @@
6
   padding: 16px;
6
   padding: 16px;
7
   display: flex;
7
   display: flex;
8
   flex-direction: column;
8
   flex-direction: column;
9
-  ::ng-deep .yyTime .ant-form-item-label {
9
+  ::ng-deep .bottomWrap .bottom .ant-form-item-label {
10
     line-height: 24px;
10
     line-height: 24px;
11
   }
11
   }
12
 }
12
 }
@@ -1548,7 +1548,7 @@
1548
   // 右侧悬浮菜单
1548
   // 右侧悬浮菜单
1549
   .fixed {
1549
   .fixed {
1550
     position: fixed;
1550
     position: fixed;
1551
-    top: 40%;
1551
+    top: calc(40% + 115px + 16px);
1552
     right: 0;
1552
     right: 0;
1553
     z-index: 9;
1553
     z-index: 9;
1554
     border-radius: 5px 0 0 5px;
1554
     border-radius: 5px 0 0 5px;
@@ -1776,6 +1776,238 @@
1776
     }
1776
     }
1777
   }
1777
   }
1778
 
1778
 
1779
+  // 右侧悬浮菜单-录音盒或呼叫中心状态
1780
+  .fixedAll {
1781
+    position: fixed;
1782
+    top: 40%;
1783
+    right: 0;
1784
+    z-index: 10;
1785
+    border-radius: 5px 0 0 5px;
1786
+
1787
+    &.maskFull{
1788
+      &::after{
1789
+        content: '';
1790
+        position: absolute;
1791
+        top: 0;
1792
+        left: 0;
1793
+        width: 100%;
1794
+        height: 100%;
1795
+        z-index: 8;
1796
+        cursor: move;
1797
+      }
1798
+    }
1799
+
1800
+    .fixedMark {
1801
+      position: fixed;
1802
+      left: 0;
1803
+      top: 0;
1804
+      width: 100%;
1805
+      height: 100%;
1806
+      background: rgba(0, 0, 0, 0.2);
1807
+      z-index: 88;
1808
+    }
1809
+
1810
+    // overflow: hidden;
1811
+    & > .left {
1812
+      width: 480px;
1813
+      // height: 280px;
1814
+      float: left;
1815
+      background: #fff;
1816
+      padding: 16px;
1817
+      border-radius: 5px;
1818
+      border: 1px solid #e5e9ed;
1819
+      // box-shadow: -8px 5px 15px #eae9e9;
1820
+      position: relative;
1821
+      z-index: 98;
1822
+
1823
+      .con {
1824
+        background: #f9fafb;
1825
+        width: 100%;
1826
+        // height: 300px;
1827
+        // overflow: auto;
1828
+        border-radius: 5px;
1829
+        border: 1px solid #e5e9ed;
1830
+        padding: 16px;
1831
+        &.bindingExtension {
1832
+          min-height: 246px;
1833
+          .bindingExtension_content {
1834
+            display: flex;
1835
+            flex-wrap: wrap;
1836
+          }
1837
+          .noContentFlex {
1838
+            display: flex;
1839
+            justify-content: center;
1840
+            align-items: center;
1841
+            height: 136px;
1842
+            flex-direction: column;
1843
+            .noContent {
1844
+              width: 128px;
1845
+            }
1846
+            p {
1847
+              margin-top: 8px;
1848
+            }
1849
+          }
1850
+          .ant-checkbox-wrapper {
1851
+            font-size: 12px;
1852
+            width: 100%;
1853
+            display: flex;
1854
+            margin-top: 8px;
1855
+            justify-content: space-between;
1856
+            align-items: center;
1857
+            ::ng-deep .ant-checkbox {
1858
+              font-size: 12px;
1859
+              top: 0;
1860
+            }
1861
+            ::ng-deep .ant-checkbox + span {
1862
+              flex: 1;
1863
+            }
1864
+          }
1865
+        }
1866
+
1867
+        &.tableCon {
1868
+          padding: 0;
1869
+
1870
+          .table {
1871
+            font-size: 14px;
1872
+
1873
+            tr {
1874
+              td {
1875
+                padding: 15px 6px;
1876
+                text-align: center;
1877
+
1878
+                & > .tdiv {
1879
+                  overflow: hidden;
1880
+
1881
+                  .name {
1882
+                    float: left;
1883
+                  }
1884
+
1885
+                  .num {
1886
+                    float: right;
1887
+                    font-size: 12px;
1888
+
1889
+                    span {
1890
+                      color: @primary-color;
1891
+                      font-size: 14px;
1892
+                    }
1893
+                  }
1894
+                }
1895
+
1896
+                .notOpen {
1897
+                  color: #666;
1898
+                  font-size: 12px;
1899
+
1900
+                  img {
1901
+                    margin-bottom: 8px;
1902
+                  }
1903
+                }
1904
+              }
1905
+            }
1906
+          }
1907
+        }
1908
+
1909
+        .title {
1910
+          color: #333;
1911
+          text-align: center;
1912
+        }
1913
+
1914
+        .conditions {
1915
+          & > .ant-row {
1916
+            margin: 8px 0;
1917
+            display: flex;
1918
+            align-items: center;
1919
+
1920
+            .ant-row {
1921
+              .ant-col-6 {
1922
+                margin: 2px 0;
1923
+              }
1924
+            }
1925
+
1926
+            .checkAll {
1927
+              width: 100%;
1928
+              border-bottom: 1px solid rgb(233, 233, 233);
1929
+              color: @primary-color;
1930
+            }
1931
+          }
1932
+        }
1933
+
1934
+        .btns {
1935
+          padding: 5px 20px 0 20px;
1936
+        }
1937
+      }
1938
+    }
1939
+
1940
+    .right {
1941
+      // opacity: .5;
1942
+      width: 80px;
1943
+      float: left;
1944
+      // background: rgba(255, 255, 255, 0.5);
1945
+      border-radius: 5px 0 0 5px;
1946
+      position: relative;
1947
+      z-index: 8;
1948
+
1949
+      .fixedMenuWrap{
1950
+        border-radius: 5px;
1951
+        margin-bottom: 16px;
1952
+        .fixedMenu{
1953
+          border-radius: 0!important;
1954
+        }
1955
+      }
1956
+
1957
+      .fixedMenu {
1958
+        border: 1px solid #e5e9ed;
1959
+        color: @primary-color;
1960
+        background: rgb(255, 255, 255);
1961
+        text-align: center;
1962
+        border-radius: 5px 0 0 5px;
1963
+
1964
+        .menuItems {
1965
+          .call-icon{
1966
+            font-size: 26px;
1967
+            color: @primary-color;
1968
+            padding: 16px 0;
1969
+            &.transport-shimang1{
1970
+              color: red;
1971
+            }
1972
+          }
1973
+          .call-status{
1974
+            background-color: @primary-color;
1975
+            color: #fff;
1976
+            width: 100%;
1977
+          }
1978
+          .item {
1979
+            height: 35px;
1980
+            line-height: 35px;
1981
+            padding: 0 6px;
1982
+            cursor: pointer;
1983
+            border-bottom: 1px solid #e5e9ed;
1984
+            user-select: none;
1985
+            &.itemLink {
1986
+              border-bottom: none;
1987
+              border-radius: 0;
1988
+            }
1989
+
1990
+            &.checked {
1991
+              background: #fff;
1992
+              color: #52ab77;
1993
+              opacity: 1;
1994
+              box-shadow: -3px 4px 7px #eae9e9;
1995
+            }
1996
+          }
1997
+
1998
+          .others {
1999
+            transition: height 0.4s linear;
2000
+            overflow: hidden;
2001
+          }
2002
+        }
2003
+
2004
+        .arrow {
2005
+          cursor: pointer;
2006
+        }
2007
+      }
2008
+    }
2009
+  }
2010
+
1779
   // 左侧悬浮菜单
2011
   // 左侧悬浮菜单
1780
   .fixedLeft {
2012
   .fixedLeft {
1781
     position: fixed;
2013
     position: fixed;

+ 192 - 28
src/app/views/fuwutai/fuwutai.component.ts

@@ -438,6 +438,9 @@ export class FuwutaiComponent implements OnInit {
438
             this.incidentModel.incomingPhone = this.callNumber = data["phone"];
438
             this.incidentModel.incomingPhone = this.callNumber = data["phone"];
439
             this.showPromptModal("建单", true, "", "closeGo");
439
             this.showPromptModal("建单", true, "", "closeGo");
440
           } else {
440
           } else {
441
+            if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
442
+              this.jry_shixian();
443
+            }
441
             this.showPromptModal("建单", true, "", "close");
444
             this.showPromptModal("建单", true, "", "close");
442
           }
445
           }
443
         } else {
446
         } else {
@@ -473,6 +476,9 @@ export class FuwutaiComponent implements OnInit {
473
           this.incidentModel.incomingPhone = this.callNumber = data["phone"];
476
           this.incidentModel.incomingPhone = this.callNumber = data["phone"];
474
           this.showPromptModal("建单", true, "", "closeGo");
477
           this.showPromptModal("建单", true, "", "closeGo");
475
         } else {
478
         } else {
479
+          if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
480
+            this.jry_shixian();
481
+          }
476
           this.showPromptModal("建单", true, "", "close");
482
           this.showPromptModal("建单", true, "", "close");
477
         }
483
         }
478
       } else {
484
       } else {
@@ -532,6 +538,9 @@ export class FuwutaiComponent implements OnInit {
532
           this.incidentModel.incomingPhone = this.callNumber = data["phone"];
538
           this.incidentModel.incomingPhone = this.callNumber = data["phone"];
533
           this.showPromptModal("建单", true, "", "closeGo");
539
           this.showPromptModal("建单", true, "", "closeGo");
534
         } else {
540
         } else {
541
+          if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
542
+            this.jry_shixian();
543
+          }
535
           this.showPromptModal("建单", true, "", "close");
544
           this.showPromptModal("建单", true, "", "close");
536
         }
545
         }
537
       } else {
546
       } else {
@@ -704,10 +713,10 @@ export class FuwutaiComponent implements OnInit {
704
     this.initControlView();
713
     this.initControlView();
705
     this.moveMenu("fixedMenu");
714
     this.moveMenu("fixedMenu");
706
     this.moveMenu("fixedMenuLeft");
715
     this.moveMenu("fixedMenuLeft");
716
+    this.moveMenuAll("fixedMenuAll");
707
     if(this.incomingService.getSign() === 'box'){
717
     if(this.incomingService.getSign() === 'box'){
708
       this.getPhoneNum();
718
       this.getPhoneNum();
709
     }else if(this.incomingService.getSign() === 'callCenter'){
719
     }else if(this.incomingService.getSign() === 'callCenter'){
710
-      let _this = this;
711
       setTimeout(this.getPhoneNum.bind(this), 2000)
720
       setTimeout(this.getPhoneNum.bind(this), 2000)
712
     }else{
721
     }else{
713
       this.websocketLoading = false;
722
       this.websocketLoading = false;
@@ -967,6 +976,7 @@ export class FuwutaiComponent implements OnInit {
967
     //呼入回调函数
976
     //呼入回调函数
968
     TLWSA.onCallin = function (jso) {
977
     TLWSA.onCallin = function (jso) {
969
       console.log(jso);
978
       console.log(jso);
979
+      _this.incidentModel = {};
970
       _this.callNumber = _this.incidentModel.incomingPhone = jso.caller;//来电的电话
980
       _this.callNumber = _this.incidentModel.incomingPhone = jso.caller;//来电的电话
971
       _this.incidentModel.callID = jso.crs;//来电的话机id
981
       _this.incidentModel.callID = jso.crs;//来电的话机id
972
       if (jso) {
982
       if (jso) {
@@ -1250,12 +1260,12 @@ export class FuwutaiComponent implements OnInit {
1250
   // 保存工单信息
1260
   // 保存工单信息
1251
   confirmOrderScope(data){
1261
   confirmOrderScope(data){
1252
     if (data.status == 200) {
1262
     if (data.status == 200) {
1253
-      this.websocketLoading = true;
1263
+      // this.websocketLoading = true;
1254
       this.cancelOrderScope();
1264
       this.cancelOrderScope();
1255
       this.showPromptModal("保存", true, "");
1265
       this.showPromptModal("保存", true, "");
1256
       // 关闭phone的websocket
1266
       // 关闭phone的websocket
1257
-      this.incomingService.closeWs(true);
1258
-      this.getPhoneNum(false);
1267
+      // this.incomingService.closeWs(true);
1268
+      // this.getPhoneNum(false);
1259
       this.user.user.scope = data.data;
1269
       this.user.user.scope = data.data;
1260
       localStorage.setItem("user", JSON.stringify(this.user));
1270
       localStorage.setItem("user", JSON.stringify(this.user));
1261
       this.initOrderScope();
1271
       this.initOrderScope();
@@ -1326,7 +1336,10 @@ export class FuwutaiComponent implements OnInit {
1326
       this.incomingService.connectWs().subscribe((data) => {
1336
       this.incomingService.connectWs().subscribe((data) => {
1327
         // data = { status: 201, phone: '013581394341' };//ceshi
1337
         // data = { status: 201, phone: '013581394341' };//ceshi
1328
         console.log(data);
1338
         console.log(data);
1339
+        console.log(this.incidentModel);
1329
         this.websocketLoading = false;
1340
         this.websocketLoading = false;
1341
+        this.incidentModel = {};
1342
+        this.incidentMsg = {};
1330
         this.incidentModel.callID = data.callId || undefined;
1343
         this.incidentModel.callID = data.callId || undefined;
1331
         if (data.status == 200 && data.phone) {
1344
         if (data.status == 200 && data.phone) {
1332
           this.msg.info('签入成功');
1345
           this.msg.info('签入成功');
@@ -1338,7 +1351,7 @@ export class FuwutaiComponent implements OnInit {
1338
           //没绑定科室
1351
           //没绑定科室
1339
           if (!this.newOrderShow && !this.newOrderShowOpen) {
1352
           if (!this.newOrderShow && !this.newOrderShowOpen) {
1340
             this.applyDept = null;
1353
             this.applyDept = null;
1341
-            this.showNewOrder("no", data.phone, true);
1354
+            this.showNewOrder("no", data.phone, true, '来电弹屏');
1342
           }
1355
           }
1343
         }
1356
         }
1344
       });
1357
       });
@@ -1370,15 +1383,33 @@ export class FuwutaiComponent implements OnInit {
1370
           if (result.list.length > 0) {
1383
           if (result.list.length > 0) {
1371
             //绑定了科室
1384
             //绑定了科室
1372
             if (!this.newOrderShow && !this.newOrderShowOpen) {
1385
             if (!this.newOrderShow && !this.newOrderShowOpen) {
1386
+              let incidentModel:any = Object.assign({}, this.incidentModel);
1387
+              let incidentMsg:any = Object.assign({}, this.incidentMsg);
1388
+              incidentModel.department = result.list[0];
1389
+              incidentModel.department && incidentModel.department.hospital && (incidentModel.hosId = incidentModel.department.hospital.parent ? incidentModel.department.hospital.parent.id : incidentModel.department.hospital.id);
1390
+              incidentModel.department && incidentModel.department.building && (incidentModel.area = incidentModel.department.building.id);
1391
+              incidentModel.department && incidentModel.department.floor && (incidentModel.place = incidentModel.department.floor.id);
1392
+              incidentModel.department && incidentModel.department.address && (incidentModel.houseNumber = incidentModel.department.address);
1393
+              incidentModel.department && (incidentMsg.deptManyPhone = incidentModel.department.manyPhone);
1394
+              incidentModel.department && (incidentMsg.deptName = incidentModel.department.dept);
1395
+
1396
+              incidentModel.department && (incidentModel.department = incidentModel.department.id);
1397
+
1398
+              this.incidentModel = incidentModel;
1399
+              this.incidentMsg = incidentMsg;
1400
+              this.searchApplicationRequester();
1373
               this.applyDeptMiddle = result.list[0];
1401
               this.applyDeptMiddle = result.list[0];
1374
-              this.showNewOrder("yes", this.incidentModel.incomingPhone, true);
1402
+              this.showNewOrder("yes", this.incidentModel.incomingPhone, true, '来电弹屏');
1375
             }
1403
             }
1376
           } else {
1404
           } else {
1377
             //没绑定科室
1405
             //没绑定科室
1378
             console.log(this.newOrderShow);
1406
             console.log(this.newOrderShow);
1407
+            console.log(this.incidentModel);
1408
+            console.log(this.incidentMsg);
1409
+            this.incidentMsg = {};
1379
             if (!this.newOrderShow && !this.newOrderShowOpen) {
1410
             if (!this.newOrderShow && !this.newOrderShowOpen) {
1380
               this.applyDept = null;
1411
               this.applyDept = null;
1381
-              this.showNewOrder("no", this.incidentModel.incomingPhone, true);
1412
+              this.showNewOrder("no", this.incidentModel.incomingPhone, true, '来电弹屏');
1382
             }
1413
             }
1383
           }
1414
           }
1384
         }
1415
         }
@@ -1587,7 +1618,11 @@ export class FuwutaiComponent implements OnInit {
1587
 
1618
 
1588
     let postData = {
1619
     let postData = {
1589
       incident: {
1620
       incident: {
1590
-        department: { id },
1621
+        "deleteFlag": 0,
1622
+        queryTask: 'all',
1623
+        department: {
1624
+          id,
1625
+        },
1591
       },
1626
       },
1592
       idx: 0,
1627
       idx: 0,
1593
       sum: 6,
1628
       sum: 6,
@@ -1803,11 +1838,14 @@ export class FuwutaiComponent implements OnInit {
1803
   // 获取回访列表
1838
   // 获取回访列表
1804
   visitNum:any;
1839
   visitNum:any;
1805
   getVisitList(){
1840
   getVisitList(){
1841
+    if(!this.itsmData.mdv2Switch){
1842
+      return;
1843
+    }
1806
     let postData: any = {
1844
     let postData: any = {
1807
       idx: 0,
1845
       idx: 0,
1808
       sum: 1,
1846
       sum: 1,
1809
       incident: {
1847
       incident: {
1810
-        "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1848
+        // "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1811
         "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1849
         "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1812
         "urgentType": +this.itsmData.orderScopeRadio + 1,
1850
         "urgentType": +this.itsmData.orderScopeRadio + 1,
1813
         "queryTask": "callback",
1851
         "queryTask": "callback",
@@ -1826,6 +1864,9 @@ export class FuwutaiComponent implements OnInit {
1826
   // 获取留言列表
1864
   // 获取留言列表
1827
   messageNum:any;
1865
   messageNum:any;
1828
   getMessageList(){
1866
   getMessageList(){
1867
+    if(!this.itsmData.mdv2Switch){
1868
+      return;
1869
+    }
1829
     let postData: any = {
1870
     let postData: any = {
1830
       idx: 0,
1871
       idx: 0,
1831
       sum: 1,
1872
       sum: 1,
@@ -1902,7 +1943,7 @@ export class FuwutaiComponent implements OnInit {
1902
       }
1943
       }
1903
       if(stateId == 1){
1944
       if(stateId == 1){
1904
         postData.incidentQuery.incident = {
1945
         postData.incidentQuery.incident = {
1905
-          "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1946
+          // "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1906
           "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1947
           "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1907
           "urgentType": +this.itsmData.orderScopeRadio + 1,
1948
           "urgentType": +this.itsmData.orderScopeRadio + 1,
1908
           "queryTask": "storageAccept",
1949
           "queryTask": "storageAccept",
@@ -1911,7 +1952,7 @@ export class FuwutaiComponent implements OnInit {
1911
         }
1952
         }
1912
       }else if(stateId == 2){
1953
       }else if(stateId == 2){
1913
         postData.incidentQuery.incident = {
1954
         postData.incidentQuery.incident = {
1914
-          "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1955
+          // "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1915
           "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1956
           "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1916
           "urgentType": +this.itsmData.orderScopeRadio + 1,
1957
           "urgentType": +this.itsmData.orderScopeRadio + 1,
1917
           "queryTask": "todoReassign",
1958
           "queryTask": "todoReassign",
@@ -1919,12 +1960,13 @@ export class FuwutaiComponent implements OnInit {
1919
         }
1960
         }
1920
       }else if(stateId == 3){
1961
       }else if(stateId == 3){
1921
         postData.incidentQuery.incident = {
1962
         postData.incidentQuery.incident = {
1922
-          "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1963
+          // "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
1923
           "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1964
           "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
1924
           "urgentType": +this.itsmData.orderScopeRadio + 1,
1965
           "urgentType": +this.itsmData.orderScopeRadio + 1,
1925
           "queryTask": "doing",
1966
           "queryTask": "doing",
1926
           "assignee": this.tool.getCurrentUserId(),
1967
           "assignee": this.tool.getCurrentUserId(),
1927
           "deleteFlag": 0,
1968
           "deleteFlag": 0,
1969
+          "platform": 3,
1928
         }
1970
         }
1929
       }
1971
       }
1930
     }
1972
     }
@@ -2230,11 +2272,20 @@ export class FuwutaiComponent implements OnInit {
2230
   resetOrderData(){
2272
   resetOrderData(){
2231
     this.applicationRequesterList = [];
2273
     this.applicationRequesterList = [];
2232
     this.fileList = [];
2274
     this.fileList = [];
2275
+    this.repairImgs = [];
2276
+    this.isRelatedDepartment = true;
2277
+    this.solutionId = undefined;
2233
   }
2278
   }
2234
   // 打开新建工单
2279
   // 打开新建工单
2235
   deathTasktypeId; //获取这个写死的任务类型的id,送病人回病房
2280
   deathTasktypeId; //获取这个写死的任务类型的id,送病人回病房
2236
   deathTasktypeIdPatient; //获取这个写死的任务类型的id,转出院记录
2281
   deathTasktypeIdPatient; //获取这个写死的任务类型的id,转出院记录
2237
   async showNewOrder(des = '', phone = '', isInit = false, buildType = '') {
2282
   async showNewOrder(des = '', phone = '', isInit = false, buildType = '') {
2283
+    if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
2284
+      //进入弹窗,强制示忙
2285
+      setTimeout(()=>{
2286
+        tlwsa.tlaAcw();
2287
+      },0)
2288
+    }
2238
     this.buildType = buildType;
2289
     this.buildType = buildType;
2239
     if(this.itsmData.mdv2Switch){
2290
     if(this.itsmData.mdv2Switch){
2240
       this.resetOrderData();
2291
       this.resetOrderData();
@@ -2243,7 +2294,7 @@ export class FuwutaiComponent implements OnInit {
2243
       this.searchApplicationPriority();
2294
       this.searchApplicationPriority();
2244
       this.searchApplicationSource();
2295
       this.searchApplicationSource();
2245
       isInit ? this.searchApplicationDepartment('itsm', undefined, undefined, undefined, true) : this.searchApplicationDepartment('itsm');
2296
       isInit ? this.searchApplicationDepartment('itsm', undefined, undefined, undefined, true) : this.searchApplicationDepartment('itsm');
2246
-      isInit && ((this.isRelatedDepartment && this.incidentModel.department) || (!this.isRelatedDepartment && this.incidentModel.hosId) ) && this.incidentModel.hosId && this.searchApplicationBuilding();
2297
+      isInit && ((this.isRelatedDepartment && this.incidentModel.department) || (!this.isRelatedDepartment && this.incidentModel.hosId) || this.buildType === '报修转事件' ) && this.incidentModel.hosId && this.searchApplicationBuilding();
2247
       isInit && this.incidentModel.area && this.searchApplicationFloor();
2298
       isInit && this.incidentModel.area && this.searchApplicationFloor();
2248
       if(!this.hsmsData.hsmsSwitch){
2299
       if(!this.hsmsData.hsmsSwitch){
2249
         this.taskBuild = null;
2300
         this.taskBuild = null;
@@ -2323,6 +2374,11 @@ export class FuwutaiComponent implements OnInit {
2323
         this.searchTaskList.forEach((item) => {
2374
         this.searchTaskList.forEach((item) => {
2324
           item.sid = item.associationTypeId + "_" + item.id;
2375
           item.sid = item.associationTypeId + "_" + item.id;
2325
         });
2376
         });
2377
+        // if(phone){
2378
+        //   this.getAutoWorkTypes(true, isInit);
2379
+        // }else{
2380
+        //   this.getAutoWorkTypes(false, isInit);
2381
+        // }
2326
         this.getAutoWorkTypes(false, isInit);
2382
         this.getAutoWorkTypes(false, isInit);
2327
       }
2383
       }
2328
     });
2384
     });
@@ -2385,16 +2441,10 @@ export class FuwutaiComponent implements OnInit {
2385
 
2441
 
2386
       let deptObj = this.applicationDeptList.find(v => v.id == this.incidentModel.department);
2442
       let deptObj = this.applicationDeptList.find(v => v.id == this.incidentModel.department);
2387
 
2443
 
2388
-      if(this.applyDept !== this.incidentModel.department){
2444
+      if(this.applyDept != this.incidentModel.department){
2389
         this.applyDept = this.incidentModel.department;
2445
         this.applyDept = this.incidentModel.department;
2390
         this.searchApplicationDepartment('hsms', deptObj ? deptObj.dept : '', undefined, this.incidentModel.department);
2446
         this.searchApplicationDepartment('hsms', deptObj ? deptObj.dept : '', undefined, this.incidentModel.department);
2391
       }
2447
       }
2392
-
2393
-      // 回显事件来源
2394
-      let source = this.applicationSourceList.find(v => v.value === 'phone');
2395
-      if(!this.incidentModel.source && source){
2396
-        this.incidentModel.source = source.id;
2397
-      }
2398
     }else if(this.currentTabIndex === '99999'){
2448
     }else if(this.currentTabIndex === '99999'){
2399
       if(this.incidentModel.department){
2449
       if(this.incidentModel.department){
2400
         this.rightTitle_tab = [
2450
         this.rightTitle_tab = [
@@ -2406,7 +2456,7 @@ export class FuwutaiComponent implements OnInit {
2406
 
2456
 
2407
       let deptObj = this.applicationDepartmentList.find(v => v.id == this.applyDept);
2457
       let deptObj = this.applicationDepartmentList.find(v => v.id == this.applyDept);
2408
 
2458
 
2409
-      if(this.incidentModel.department !== this.applyDept && !isInit){
2459
+      if(this.incidentModel.department != this.applyDept && (!isInit || !this.buildType)){
2410
         this.incidentModel.department = this.applyDept;
2460
         this.incidentModel.department = this.applyDept;
2411
         this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, this.applyDept);
2461
         this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, this.applyDept);
2412
       }
2462
       }
@@ -2497,7 +2547,6 @@ export class FuwutaiComponent implements OnInit {
2497
 
2547
 
2498
     // 根据院区和故障现象带出责任部门,优先级,维修人/组
2548
     // 根据院区和故障现象带出责任部门,优先级,维修人/组
2499
     if(this.incidentModel.category && e){
2549
     if(this.incidentModel.category && e){
2500
-
2501
       let postData = {
2550
       let postData = {
2502
         idx: 0,
2551
         idx: 0,
2503
         sum: 9999,
2552
         sum: 9999,
@@ -2530,6 +2579,11 @@ export class FuwutaiComponent implements OnInit {
2530
             this.showGroupOrUser();
2579
             this.showGroupOrUser();
2531
           }
2580
           }
2532
         });
2581
         });
2582
+    }else{
2583
+      this.incidentModel.group = undefined;
2584
+      this.applicationGroupList = [];
2585
+      this.incidentModel.user = undefined;
2586
+      this.applicationUserList = [];
2533
     }
2587
     }
2534
   }
2588
   }
2535
   // 申请人列表(搜索)
2589
   // 申请人列表(搜索)
@@ -2646,6 +2700,11 @@ export class FuwutaiComponent implements OnInit {
2646
             this.showGroupOrUser();
2700
             this.showGroupOrUser();
2647
           }
2701
           }
2648
         });
2702
         });
2703
+    }else{
2704
+      this.incidentModel.group = undefined;
2705
+      this.applicationGroupList = [];
2706
+      this.incidentModel.user = undefined;
2707
+      this.applicationUserList = [];
2649
     }
2708
     }
2650
   }
2709
   }
2651
 
2710
 
@@ -2858,6 +2917,13 @@ export class FuwutaiComponent implements OnInit {
2858
   // 处理组列表
2917
   // 处理组列表
2859
   applicationGroupList:any[] = [];
2918
   applicationGroupList:any[] = [];
2860
   searchApplicationGroup(keyWord?) {
2919
   searchApplicationGroup(keyWord?) {
2920
+    if(!this.incidentModel.duty){
2921
+      this.incidentModel.group = undefined;
2922
+      this.applicationGroupList = [];
2923
+      this.incidentModel.user = undefined;
2924
+      this.applicationUserList = [];
2925
+      return;
2926
+    }
2861
     let postData = {
2927
     let postData = {
2862
       idx: 0,
2928
       idx: 0,
2863
       sum: 20,
2929
       sum: 20,
@@ -2923,6 +2989,11 @@ export class FuwutaiComponent implements OnInit {
2923
         this.isLoading = false;
2989
         this.isLoading = false;
2924
         if (data.status == 200) {
2990
         if (data.status == 200) {
2925
           this.applicationPriorityList = data.list;
2991
           this.applicationPriorityList = data.list;
2992
+          // 回显事件来源
2993
+          let source = this.applicationSourceList.find(v => v.value === 'phone');
2994
+          if(!this.incidentModel.source && source){
2995
+            this.incidentModel.source = source.id;
2996
+          }
2926
         }
2997
         }
2927
       });
2998
       });
2928
   }
2999
   }
@@ -3069,6 +3140,8 @@ export class FuwutaiComponent implements OnInit {
3069
             let ids = this.applicationDeptList.map(v => v.id);
3140
             let ids = this.applicationDeptList.map(v => v.id);
3070
             isInit && !ids.includes(this.incidentModel.department) && (this.applicationDeptList.unshift({id: this.incidentModel.department, dept: this.incidentMsg.deptName}))
3141
             isInit && !ids.includes(this.incidentModel.department) && (this.applicationDeptList.unshift({id: this.incidentModel.department, dept: this.incidentMsg.deptName}))
3071
             console.log(this.applicationDeptList);
3142
             console.log(this.applicationDeptList);
3143
+            console.log(this.incidentModel);
3144
+            console.log(this.incidentMsg);
3072
             deptId && this.changeApplyDept(deptId);
3145
             deptId && this.changeApplyDept(deptId);
3073
           }
3146
           }
3074
         }
3147
         }
@@ -3101,7 +3174,7 @@ export class FuwutaiComponent implements OnInit {
3101
 
3174
 
3102
     let deptObj = this.applicationDepartmentList.find(v => v.id == e);
3175
     let deptObj = this.applicationDepartmentList.find(v => v.id == e);
3103
 
3176
 
3104
-    if(this.incidentModel.department !== e){
3177
+    if(this.incidentModel.department != e){
3105
       this.incidentModel.department = e;
3178
       this.incidentModel.department = e;
3106
       this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, e);
3179
       this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, e);
3107
     }
3180
     }
@@ -3120,7 +3193,7 @@ export class FuwutaiComponent implements OnInit {
3120
 
3193
 
3121
     let deptObj = this.applicationDeptList.find(v => v.id == e);
3194
     let deptObj = this.applicationDeptList.find(v => v.id == e);
3122
 
3195
 
3123
-    if(this.applyDept !== e){
3196
+    if(this.applyDept != e){
3124
       this.applyDept = e;
3197
       this.applyDept = e;
3125
       this.searchApplicationDepartment('hsms', deptObj ? deptObj.dept : '', undefined, e);
3198
       this.searchApplicationDepartment('hsms', deptObj ? deptObj.dept : '', undefined, e);
3126
     }
3199
     }
@@ -3155,8 +3228,44 @@ export class FuwutaiComponent implements OnInit {
3155
     }
3228
     }
3156
     this.searchApplicationRequester();
3229
     this.searchApplicationRequester();
3157
 
3230
 
3158
-    // 回显维修人/组
3159
-    this.showGroupOrUser();
3231
+    // 根据院区和故障现象带出责任部门,优先级,维修人/组
3232
+    if(this.incidentModel.category && this.incidentModel.hosId){
3233
+      let postData = {
3234
+        idx: 0,
3235
+        sum: 9999,
3236
+        incidentCategoryConfig: {
3237
+          categoryId: this.incidentModel.category,
3238
+          hosId: this.incidentModel.hosId,
3239
+        },
3240
+      };
3241
+      console.log(postData);
3242
+      // return;
3243
+      this.isLoading = true;
3244
+      this.mainService
3245
+        .getFetchDataList("simple/data", "incidentCategoryConfig", postData)
3246
+        .subscribe((data) => {
3247
+          this.isLoading = false;
3248
+          if (data.status == 200) {
3249
+            let list = data.list || [];
3250
+            if(list.length > 0){
3251
+              console.log(list[0]);
3252
+              this.incidentCategoryConfig = list[0];
3253
+            }else{
3254
+              this.incidentCategoryConfig = {};
3255
+            }
3256
+
3257
+            // 根据院区和故障现象带出责任部门,优先级,维修人/组
3258
+            this.incidentModel.duty = this.incidentCategoryConfig.dutyDTO;
3259
+            this.incidentModel.priorityId = this.incidentCategoryConfig.priority;
3260
+
3261
+            // 回显维修人/组
3262
+            this.showGroupOrUser();
3263
+          }
3264
+        });
3265
+    }else{
3266
+      // 回显维修人/组
3267
+      this.showGroupOrUser();
3268
+    }
3160
   }
3269
   }
3161
   // 申请科室列表(搜索)失去焦点的时候
3270
   // 申请科室列表(搜索)失去焦点的时候
3162
   changeApplicationDepartment(phone?) {
3271
   changeApplicationDepartment(phone?) {
@@ -3479,6 +3588,9 @@ export class FuwutaiComponent implements OnInit {
3479
       this.incidentModel.group = undefined;
3588
       this.incidentModel.group = undefined;
3480
       this.showPromptModal("操作", true, "", "");
3589
       this.showPromptModal("操作", true, "", "");
3481
     }else{
3590
     }else{
3591
+      if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
3592
+        this.jry_shixian();
3593
+      }
3482
       this.newOrderShow = false; //关闭弹窗
3594
       this.newOrderShow = false; //关闭弹窗
3483
       this.newOrderShowOpen = false; //此时可出现新的弹窗
3595
       this.newOrderShowOpen = false; //此时可出现新的弹窗
3484
       this.showPromptModal("操作", true, "", "");
3596
       this.showPromptModal("操作", true, "", "");
@@ -3988,7 +4100,11 @@ export class FuwutaiComponent implements OnInit {
3988
     this.fixedTab = '';
4100
     this.fixedTab = '';
3989
   }
4101
   }
3990
 
4102
 
4103
+  // 取消
3991
   newOrderCancel(): void {
4104
   newOrderCancel(): void {
4105
+    if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
4106
+      this.jry_shixian();
4107
+    }
3992
     this.newOrderShow = false;
4108
     this.newOrderShow = false;
3993
     this.newOrderShowOpen = false;
4109
     this.newOrderShowOpen = false;
3994
     this.currentTabIndex = "";
4110
     this.currentTabIndex = "";
@@ -4316,11 +4432,12 @@ export class FuwutaiComponent implements OnInit {
4316
     return timeStr;
4432
     return timeStr;
4317
   }
4433
   }
4318
 
4434
 
4319
-  // 菜单拖拽
4435
+  // 菜单拖拽-上下
4320
   moveMenu(nodeId) {
4436
   moveMenu(nodeId) {
4321
     let fixedMenu = document.getElementById(nodeId);
4437
     let fixedMenu = document.getElementById(nodeId);
4322
     if (!fixedMenu) return;
4438
     if (!fixedMenu) return;
4323
     fixedMenu.onmousedown = function (e) {
4439
     fixedMenu.onmousedown = function (e) {
4440
+      fixedMenu.classList.remove('maskFull');
4324
       let y = e.clientY - fixedMenu.offsetTop;
4441
       let y = e.clientY - fixedMenu.offsetTop;
4325
       document.onmousemove = function (ev) {
4442
       document.onmousemove = function (ev) {
4326
         fixedMenu.classList.add('maskFull');
4443
         fixedMenu.classList.add('maskFull');
@@ -4339,6 +4456,47 @@ export class FuwutaiComponent implements OnInit {
4339
     };
4456
     };
4340
   }
4457
   }
4341
 
4458
 
4459
+  // 处理人+协同人
4460
+  transferSynergetic(incidentData){
4461
+    let str = incidentData.groupORHandlerUser || "";
4462
+    if(incidentData.synergetic && incidentData.synergetic.length){
4463
+        str += ',' + incidentData.synergetic.map(v => v.name).join(',');
4464
+    }
4465
+    return str;
4466
+  }
4467
+
4468
+  // 菜单拖拽-自由
4469
+  moveMenuAll(nodeId) {
4470
+    let fixedMenu = document.getElementById(nodeId);
4471
+    if (!fixedMenu) return;
4472
+    fixedMenu.onmousedown = function (e) {
4473
+      fixedMenu.classList.remove('maskFull');
4474
+      let x = e.clientX - fixedMenu.offsetLeft;
4475
+      let y = e.clientY - fixedMenu.offsetTop;
4476
+      document.onmousemove = function (ev) {
4477
+        fixedMenu.classList.add('maskFull');
4478
+        var _y = ev.clientY - y > 0 ? ev.clientY - y : 0;
4479
+        var h = window.innerHeight;
4480
+        if (_y > h - fixedMenu.clientHeight) {
4481
+          _y = h - fixedMenu.clientHeight;
4482
+        }
4483
+        fixedMenu.style.top = _y + "px";
4484
+
4485
+        var _x = ev.clientX - x > 0 ? ev.clientX - x : 0;
4486
+        var w = window.innerWidth;
4487
+        if (_x > w - fixedMenu.clientWidth) {
4488
+          _x = w - fixedMenu.clientWidth;
4489
+        }
4490
+        fixedMenu.style.right = w - _x - fixedMenu.clientWidth + "px";
4491
+      };
4492
+      document.onmouseup = function () {
4493
+        fixedMenu.classList.remove('maskFull');
4494
+        document.onmousemove = null;
4495
+        document.onmouseup = null;
4496
+      };
4497
+    };
4498
+  }
4499
+
4342
   @ViewChild("msgTemplate", { static: false }) msgTemplate: TemplateRef<any>; //消息通知模板
4500
   @ViewChild("msgTemplate", { static: false }) msgTemplate: TemplateRef<any>; //消息通知模板
4343
   // 消息提醒
4501
   // 消息提醒
4344
   createBasicNotification(msgs): void {
4502
   createBasicNotification(msgs): void {
@@ -4391,6 +4549,12 @@ export class FuwutaiComponent implements OnInit {
4391
 
4549
 
4392
   // 运维、配送工单切换
4550
   // 运维、配送工单切换
4393
   filterOrderList(type, state){
4551
   filterOrderList(type, state){
4552
+    if(!this.itsmData.mdv2Switch && this.hsmsData.hsmsSwitch){
4553
+      return;
4554
+    }
4555
+    if(this.itsmData.mdv2Switch && !this.hsmsData.hsmsSwitch){
4556
+      return;
4557
+    }
4394
     this.flagList[`${type}Flag${state}`] = !this.flagList[`${type}Flag${state}`];
4558
     this.flagList[`${type}Flag${state}`] = !this.flagList[`${type}Flag${state}`];
4395
     this.getOrderList(state, state === 1);
4559
     this.getOrderList(state, state === 1);
4396
   }
4560
   }
@@ -4416,7 +4580,7 @@ export class FuwutaiComponent implements OnInit {
4416
     if(currentLog.extra1DTO && currentLog.extra2 && currentLog.startTime){
4580
     if(currentLog.extra1DTO && currentLog.extra2 && currentLog.startTime){
4417
         if(currentLog.extra2==0.5){
4581
         if(currentLog.extra2==0.5){
4418
           currentLog.extra2 = 4;
4582
           currentLog.extra2 = 4;
4419
-          return currentLog.extra1DTO.name+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日")+"<br>"+ format(addDays(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成");
4583
+          return currentLog.extra1DTO.name+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日")+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成");
4420
         }else{
4584
         }else{
4421
           return currentLog.extra1DTO.name+"<br>"+ format(addDays(currentLog.startTime, +currentLog.extra2), "MM月dd日前完成");
4585
           return currentLog.extra1DTO.name+"<br>"+ format(addDays(currentLog.startTime, +currentLog.extra2), "MM月dd日前完成");
4422
         }
4586
         }

+ 1 - 1
src/app/views/hospital-config/hospital-config.component.ts

@@ -441,7 +441,7 @@ export class HospitalConfigComponent implements OnInit {
441
    * @returns
441
    * @returns
442
    */
442
    */
443
   getGroupList(hosId) {
443
   getGroupList(hosId) {
444
-    let postData = { idx: 0, sum: 100, group2: { hospitals: hosId, type: 1 } };
444
+    let postData = { idx: 0, sum: 100, group2: { hospitals: hosId, typeIds: '1,3' } };
445
     return this.mainService
445
     return this.mainService
446
       .getFetchDataList("data", "group2", postData)
446
       .getFetchDataList("data", "group2", postData)
447
       .toPromise();
447
       .toPromise();

+ 11 - 10
src/app/views/incident-management/incident-management.component.html

@@ -1,7 +1,7 @@
1
 <div class="list-template pt0">
1
 <div class="list-template pt0">
2
   <div class="list-template__content">
2
   <div class="list-template__content">
3
     <div class="list-template__tab">
3
     <div class="list-template__tab">
4
-      <div class="list-template__tabItem" [ngClass]="{'active': queryTask == item.key}" (click)="changeTab(item.key)" *ngFor="let item of tabs">{{item.value}}({{item.num}})</div>
4
+      <div class="list-template__tabItem" [ngClass]="{'active': queryTask == item.key}" (click)="changeTab(item.key)" *ngFor="let item of tabs">{{item.value}}<span [ngClass]="{ red: item.isRed && item.num > 0}">({{item.num}})</span></div>
5
     </div>
5
     </div>
6
     <div class="list-template__top" nz-row>
6
     <div class="list-template__top" nz-row>
7
       <div nz-col nzXl='18' class="list-template__searchBox">
7
       <div nz-col nzXl='18' class="list-template__searchBox">
@@ -72,7 +72,7 @@
72
             <td>{{index+(pageIndex-1) * pageSize + 1}}</td>
72
             <td>{{index+(pageIndex-1) * pageSize + 1}}</td>
73
             <td class="text_align_left">
73
             <td class="text_align_left">
74
               <span [ngClass]="priorityColor(data.priorityId)">{{ data.priorityDTO?.name }}</span>
74
               <span [ngClass]="priorityColor(data.priorityId)">{{ data.priorityDTO?.name }}</span>
75
-              {{ data.incidentsign }} {{ data.description }}
75
+              {{ data.incidentsign }} {{ data.acceptDate | date: 'yyyy-MM-dd HH:mm' }}<br>{{ data.description }}
76
               <i class="icon_transport transport-a-11111 ml8" *ngIf="data.reqAttachment"></i>
76
               <i class="icon_transport transport-a-11111 ml8" *ngIf="data.reqAttachment"></i>
77
               <i class="icon_transport transport-luyin ml8" *ngIf="data.reqRecord"></i>
77
               <i class="icon_transport transport-luyin ml8" *ngIf="data.reqRecord"></i>
78
             </td>
78
             </td>
@@ -90,19 +90,20 @@
90
             <td>
90
             <td>
91
               {{ data.acceptUser?.name || '无' }}<br>
91
               {{ data.acceptUser?.name || '无' }}<br>
92
               {{ transferSynergetic(data) }}<br>
92
               {{ transferSynergetic(data) }}<br>
93
-              <span [ngStyle]="{ color: data.handleColourInfo ? data.handleColourInfo.value : '' }">{{ data.overdueTime | date: 'MM-dd HH:mm' }}</span>前接单
93
+              <ng-container *ngIf="(data.state.value === 'pending' || data.state.value === 'reassign') && data.overdueResponseDate"><span [ngStyle]="{ color: data.acceptColourInfo ? data.acceptColourInfo.value : '' }">{{ data.overdueResponseDate | date: 'MM-dd HH:mm' }}</span>前接单</ng-container>
94
+              <ng-container *ngIf="data.state.value === 'handler' && data.overdueTime"><span [ngStyle]="{ color: data.handleColourInfo ? data.handleColourInfo.value : '' }">{{ data.overdueTime | date: 'MM-dd HH:mm' }}</span>前处理</ng-container>
94
             </td>
95
             </td>
95
-            <td [innerHTML]="transferHandlerLog(data.currentLog)"></td>
96
+            <td [innerHTML]="data.overtimeRemark"></td>
96
             <td>{{ data.state?.name }}</td>
97
             <td>{{ data.state?.name }}</td>
97
             <td>
98
             <td>
98
               <div class="coop">
99
               <div class="coop">
99
                 <span *ngIf="coopBtns.look" (click)="detail($event,data)">查看</span>
100
                 <span *ngIf="coopBtns.look" (click)="detail($event,data)">查看</span>
100
-                <span *ngIf="computedVisit(data)" (click)="visit($event,data)">回访</span>
101
-                <span *ngIf="computedReceive(data)" (click)="showDelModal($event, data,'您确认要接单吗?','接单','receive')">接单</span>
102
-                <span *ngIf="computedHandle(data)" (click)="handle($event,data)">处理</span>
103
-                <span *ngIf="computedSubstitution(data)" (click)="substitution($event,data)">换人处理</span>
104
-                <span *ngIf="computedPostpone(data)" (click)="postpone($event,data)">延期处理</span>
105
-                <span *ngIf="computedSetDuty(data)" (click)="setDuty($event,data)">设置责任部门</span>
101
+                <span *ngIf="data.computedVisitFlag" (click)="visit($event,data)">回访</span>
102
+                <span *ngIf="data.computedReceiveFlag" (click)="showDelModal($event, data,'您确认要接单吗?','接单','receive')">接单</span>
103
+                <span *ngIf="data.computedHandleFlag" (click)="handle($event,data)">处理</span>
104
+                <span *ngIf="data.computedSubstitutionFlag" (click)="substitution($event,data)">换人处理</span>
105
+                <span *ngIf="data.computedPostponeFlag" (click)="postpone($event,data)">延期处理</span>
106
+                <span *ngIf="data.computedSetDutyFlag" (click)="setDuty($event,data)">设置责任部门</span>
106
                 <span *ngIf="coopBtns.del && data.deleteFlag !== 1" (click)="showDelModal($event, data,'您确认要删除吗?','删除','del')">删除</span>
107
                 <span *ngIf="coopBtns.del && data.deleteFlag !== 1" (click)="showDelModal($event, data,'您确认要删除吗?','删除','del')">删除</span>
107
               </div>
108
               </div>
108
             </td>
109
             </td>

+ 33 - 22
src/app/views/incident-management/incident-management.component.ts

@@ -48,15 +48,15 @@ export class IncidentManagementComponent implements OnInit {
48
   btnLoading: boolean = false; //提交按钮loading状态
48
   btnLoading: boolean = false; //提交按钮loading状态
49
 
49
 
50
   tabs:any[] = [
50
   tabs:any[] = [
51
-    // {key: 'all', value: '全部故障', num: 0},
52
-    {key: 'todo', value: '待我接单', num: 0},
53
-    {key: 'doing', value: '待我处理', num: 0},
54
-    // {key: 'reassign', value: '重新指派', num: 0},
55
-    // {key: 'callback', value: '待我回访', num: 0},
56
-    {key: 'resolve', value: '由我解决', num: 0},
57
-    {key: 'owns', value: '与我关联', num: 0},
58
-    {key: 'storage', value: '暂存', num: 0},
59
-    // {key: 'badEvaluate', value: '异常评价', num: 0},
51
+    // {key: 'all', value: '全部故障', num: 0, isRed: false},
52
+    {key: 'todo', value: '待我接单', num: 0, isRed: true},
53
+    {key: 'doing', value: '待我处理', num: 0, isRed: true},
54
+    // {key: 'reassign', value: '重新指派', num: 0, isRed: false},
55
+    // {key: 'callback', value: '待我回访', num: 0, isRed: false},
56
+    {key: 'resolve', value: '由我解决', num: 0, isRed: false},
57
+    {key: 'owns', value: '与我关联', num: 0, isRed: false},
58
+    {key: 'storage', value: '暂存', num: 0, isRed: false},
59
+    // {key: 'badEvaluate', value: '异常评价', num: 0, isRed: false},
60
   ]
60
   ]
61
 
61
 
62
   searchDTO: any = {};
62
   searchDTO: any = {};
@@ -87,8 +87,8 @@ export class IncidentManagementComponent implements OnInit {
87
     this.coopBtns = this.tool.initCoopBtns(this.route);
87
     this.coopBtns = this.tool.initCoopBtns(this.route);
88
     this.initTabs();
88
     this.initTabs();
89
     this.getDeparts();
89
     this.getDeparts();
90
-    this.getUsers('', null, 'handle');
91
-    this.getUsers('', null, 'acceptUser');
90
+    this.getUsers('', 'handle');
91
+    this.getUsers('', 'acceptUser');
92
     this.getGdStates();
92
     this.getGdStates();
93
     this.getOverdueStates();
93
     this.getOverdueStates();
94
     this.getIncidentCategoryList();
94
     this.getIncidentCategoryList();
@@ -99,18 +99,18 @@ export class IncidentManagementComponent implements OnInit {
99
   // 初始化tab
99
   // 初始化tab
100
   initTabs(){
100
   initTabs(){
101
     if (this.coopBtns.all) {
101
     if (this.coopBtns.all) {
102
-        this.tabs.splice(0, 0 , {key: 'all', value: '全部故障', num: 0});
102
+        this.tabs.splice(0, 0 , {key: 'all', value: '全部故障', num: 0, isRed: false});
103
     }
103
     }
104
     if (this.coopBtns.callback) {
104
     if (this.coopBtns.callback) {
105
         let index = this.tabs.findIndex(v => v.key == 'resolve');
105
         let index = this.tabs.findIndex(v => v.key == 'resolve');
106
-        this.tabs.splice(index, 0 , {key: 'callback', value: '待我回访', num: 0});
106
+        this.tabs.splice(index, 0 , {key: 'callback', value: '待我回访', num: 0, isRed: false});
107
     }
107
     }
108
     if (this.coopBtns.reassign) {
108
     if (this.coopBtns.reassign) {
109
         let index = this.tabs.findIndex(v => v.key == 'doing');
109
         let index = this.tabs.findIndex(v => v.key == 'doing');
110
-        this.tabs.splice(index + 1, 0 , {key: 'reassign', value: '重新指派', num: 0});
110
+        this.tabs.splice(index + 1, 0 , {key: 'reassign', value: '重新指派', num: 0, isRed: false});
111
     }
111
     }
112
     // if (this.coopBtns.badEvaluate) {
112
     // if (this.coopBtns.badEvaluate) {
113
-    //     this.tabs.push({key: 'badEvaluate', value: '异常评价', num: 0});
113
+    //     this.tabs.push({key: 'badEvaluate', value: '异常评价', num: 0, isRed: false});
114
     // }
114
     // }
115
   }
115
   }
116
 
116
 
@@ -150,12 +150,13 @@ export class IncidentManagementComponent implements OnInit {
150
   }
150
   }
151
 
151
 
152
   // 获取处理人
152
   // 获取处理人
153
-  getUsers(e?, those?, type?) {
154
-    let that = those || this;
153
+  getUsers(e?, type?) {
154
+    let that = this;
155
     let postData = {
155
     let postData = {
156
       user: {
156
       user: {
157
         name: e || "",
157
         name: e || "",
158
-        hospital: { id: that.hospital },
158
+        hospital: { id: that.tool.getCurrentHospital().id },
159
+        engineer: 1,
159
         simpleQuery: true,
160
         simpleQuery: true,
160
       },
161
       },
161
       idx: 0,
162
       idx: 0,
@@ -214,7 +215,7 @@ export class IncidentManagementComponent implements OnInit {
214
     if(currentLog.extra1DTO && currentLog.extra2 && currentLog.startTime){
215
     if(currentLog.extra1DTO && currentLog.extra2 && currentLog.startTime){
215
         if(currentLog.extra2==0.5){
216
         if(currentLog.extra2==0.5){
216
           currentLog.extra2 = 4;
217
           currentLog.extra2 = 4;
217
-          return currentLog.extra1DTO.name+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日")+"<br>"+ format(addDays(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成");
218
+          return currentLog.extra1DTO.name+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日")+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成");
218
         }else{
219
         }else{
219
           return currentLog.extra1DTO.name+"<br>"+ format(addDays(currentLog.startTime, +currentLog.extra2), "MM月dd日前完成");
220
           return currentLog.extra1DTO.name+"<br>"+ format(addDays(currentLog.startTime, +currentLog.extra2), "MM月dd日前完成");
220
         }
221
         }
@@ -316,7 +317,17 @@ export class IncidentManagementComponent implements OnInit {
316
       .getFetchDataList("simple/data", "incident", postData)
317
       .getFetchDataList("simple/data", "incident", postData)
317
       .subscribe((result) => {
318
       .subscribe((result) => {
318
         this.loading1 = false;
319
         this.loading1 = false;
319
-        this.listOfData = result.list.map(v => ({...v, endDeptsName: v.endDepts ? v.endDepts.map(v => v.dept).toString() : ''}));
320
+        let list = result.list || [];
321
+        list.forEach((item) => {
322
+          item.endDeptsName = item.endDepts ? item.endDepts.map(v => v.dept).toString() : '';
323
+          item.computedVisitFlag = this.computedVisit(item);
324
+          item.computedReceiveFlag = this.computedReceive(item);
325
+          item.computedHandleFlag = this.computedHandle(item);
326
+          item.computedSubstitutionFlag = this.computedSubstitution(item);
327
+          item.computedPostponeFlag = this.computedPostpone(item);
328
+          item.computedSetDutyFlag = this.computedSetDuty(item);
329
+        });
330
+        this.listOfData = list;
320
         this.listLength = result.totalNum;
331
         this.listLength = result.totalNum;
321
       });
332
       });
322
 
333
 
@@ -337,7 +348,7 @@ export class IncidentManagementComponent implements OnInit {
337
         if(!incident){
348
         if(!incident){
338
             incident = {};
349
             incident = {};
339
         }
350
         }
340
-        if(this.queryTask === 'all' || this.queryTask === 'callback' || this.queryTask === 'badEvaluate'){
351
+        if(incident.queryTask === 'all' || incident.queryTask === 'callback' || incident.queryTask === 'badEvaluate'){
341
           let { hospital, type } = this.tool.getHospitalOrDuty();
352
           let { hospital, type } = this.tool.getHospitalOrDuty();
342
           if(type === 'duty'){
353
           if(type === 'duty'){
343
             // 当前的所属责任部门
354
             // 当前的所属责任部门
@@ -353,7 +364,7 @@ export class IncidentManagementComponent implements OnInit {
353
 
364
 
354
         incident.assignee = this.tool.getCurrentUserId();
365
         incident.assignee = this.tool.getCurrentUserId();
355
 
366
 
356
-        if(this.queryTask === 'todo' || this.queryTask === 'owns'){
367
+        if(incident.queryTask === 'todo' || incident.queryTask === 'owns'){
357
           incident.candidateGroups = this.tool.getCurrentGroupList().map(v => v.id).toString();
368
           incident.candidateGroups = this.tool.getCurrentGroupList().map(v => v.id).toString();
358
         }else{
369
         }else{
359
           delete incident.candidateGroups;
370
           delete incident.candidateGroups;

+ 33 - 41
src/app/views/main/main.component.html

@@ -1,28 +1,25 @@
1
 <nz-layout class="app-layout display_flex flex_auto ant-layout-has-sider">
1
 <nz-layout class="app-layout display_flex flex_auto ant-layout-has-sider">
2
   <overlay-scrollbars #osComponentRef1 class="menu-sidebar">
2
   <overlay-scrollbars #osComponentRef1 class="menu-sidebar">
3
     <div class="sidebar-logo display_flex align-items_center justify-content_flex-center">
3
     <div class="sidebar-logo display_flex align-items_center justify-content_flex-center">
4
-      <div style="line-height: normal;height:100%;" class="display_flex align-items_center justify-content_flex-center flex-direction_column">
5
-        <img [src]="tool.logoUrl">
6
-        <span>{{tool.logoTitle}}</span>
4
+      <div class="display_flex align-items_center justify-content_flex-center logoTitle">
5
+        <div class="title ellipsis-multiline" nz-tooltip nzTooltipTitle="{{tool.logoTitle}}">{{tool.logoTitle}}</div>
7
       </div>
6
       </div>
8
     </div>
7
     </div>
9
     <!-- 导航重写,兼容chrome39 -->
8
     <!-- 导航重写,兼容chrome39 -->
10
     <ul id="ds-menu">
9
     <ul id="ds-menu">
11
       <li class="mainMenuOne" (click)="totoMenu('首页')" [ngClass]="{mainMenuSelected:indexFlag}">
10
       <li class="mainMenuOne" (click)="totoMenu('首页')" [ngClass]="{mainMenuSelected:indexFlag}">
12
         <i nz-icon nzType="home"></i>
11
         <i nz-icon nzType="home"></i>
13
-        <span>首页</span>
12
+        <span nz-tooltip nzTooltipTitle="首页">首页</span>
14
       </li>
13
       </li>
15
       <li *ngFor="let data of menus" class="mainMenuWrap">
14
       <li *ngFor="let data of menus" class="mainMenuWrap">
16
         <div class="mainMenuOne" (click)="clickMenuOne(data)" [ngClass]="{mainMenuSelected:data.flagBg}">
15
         <div class="mainMenuOne" (click)="clickMenuOne(data)" [ngClass]="{mainMenuSelected:data.flagBg}">
17
           <i class="icon_transport" [ngClass]="data.icon" *ngIf="isTransportIcon(data.icon)"></i>
16
           <i class="icon_transport" [ngClass]="data.icon" *ngIf="isTransportIcon(data.icon)"></i>
18
           <i nz-icon [nzType]="data.icon" *ngIf="!isTransportIcon(data.icon)"></i>
17
           <i nz-icon [nzType]="data.icon" *ngIf="!isTransportIcon(data.icon)"></i>
19
-          <span>{{data.title}}</span>
20
-          <span class="icon_transport transport-xialajiantou"
21
-            [ngStyle]="{transform:data.flag?'rotate(180deg)':'rotate(0deg)',color:data.flag?'#fff':'#999'}"></span>
18
+          <span nz-tooltip nzTooltipTitle="{{data.title}}">{{data.title}}</span>
19
+          <span class="icon_transport transport-xialajiantou" [ngStyle]="{transform:data.flag?'rotate(180deg)':'rotate(0deg)',color:data.flag?'#fff':'#999'}"></span>
22
         </div>
20
         </div>
23
         <ul>
21
         <ul>
24
-          <li *ngFor="let item of data.childrens" class="mainMenu" (click)="totoMenu(item.title,item,data)"
25
-            [ngStyle]="{height:data.flag?'44px':0}" [ngClass]="{menuTwoSelected:item.flag}">
22
+          <li *ngFor="let item of data.childrens" class="mainMenu" (click)="totoMenu(item.title,item,data)" [ngStyle]="{height:data.flag?'44px':0}" [ngClass]="{menuTwoSelected:item.flag}" nz-tooltip nzTooltipTitle="{{item.title}}">
26
             {{item.title}}
23
             {{item.title}}
27
           </li>
24
           </li>
28
         </ul>
25
         </ul>
@@ -33,42 +30,37 @@
33
     <nz-header>
30
     <nz-header>
34
       <div class="app-header display_flex justify-content_space-between align-items_center">
31
       <div class="app-header display_flex justify-content_space-between align-items_center">
35
         <div class="left">
32
         <div class="left">
36
-          <button nz-button nzType="primary" *ngIf='deskRole' (click)="toFuwutai()">调度台</button>
37
-          <button nz-button nzType="primary" *ngIf="nurseRole" (click)="toHuShi()">护士端</button>
38
-          <button nz-button nzType="primary" *ngIf="pharmacyRole" (click)="toPharmacy()">药房端</button>
39
-          <button nz-button nzType="primary" *ngIf="pharmacyRole" (click)="toPharmacy2()">药房端2</button>
40
-          <button nz-button nzType="primary" *ngIf="largeScreenRole" (click)="toBigScreen('largeScreen')">大屏端</button>
41
-          <button nz-button nzType="primary" *ngIf="largeScreenRole2" (click)="toBigScreen('largeScreen2')">大屏端2</button>
42
-          <button nz-button nzType="primary" *ngIf="specimenViewRole" (click)="toBigScreen('specimenView')" [nzLoading]="deptTypeLoading">业务视图</button>
43
-          <button nz-button nzType="primary" *ngIf="specimenViewRole2" (click)="toSpecimenView2()">标本视图</button>
44
-					<button nz-button nzType="primary" *ngIf="specimenRoomView" (click)="toSpecimenRoomView()">标本间端</button>
45
-					<button nz-button nzType="primary" *ngIf="pathology" (click)="toPathology()">病理科端</button>
46
-					<button nz-button nzType="primary" *ngIf="disinfectionSupplyRole" (click)="toDisinfectionSupply()">全局业务查看</button>
47
-          <button nz-button nzType="primary" *ngIf="configurationCenterRole" (click)="toConfigurationCenter()">配置中心</button>
33
+          <i class="icon_transport transport-tiaodu-fill green" *ngIf='deskRole' (click)="toFuwutai()" nz-tooltip nzTooltipTitle="调度台"></i>
34
+          <i class="icon_transport transport-hushizhihanghuligongzuo green" *ngIf="nurseRole" (click)="toHuShi()" nz-tooltip nzTooltipTitle="护士端"></i>
35
+          <i class="icon_transport transport-peizhi1 green" *ngIf="configurationCenterRole" (click)="toConfigurationCenter()" nz-tooltip nzTooltipTitle="配置中心"></i>
36
+          <i class="icon_transport transport-shangban green" *ngIf='PCCommutesToWork && userInfo.user && !userInfo.user.online' (click)="GoWork()" nz-tooltip nzTooltipTitle="我要上班"></i>
37
+          <i class="icon_transport transport-shangban green" *ngIf='PCCommutesToWork && userInfo.user && userInfo.user.online' (click)="GoWork()" nz-tooltip nzTooltipTitle="我要下班"></i>
38
+          <div class="dropdown" *ngIf="pharmacyRole || largeScreenRole || largeScreenRole2 || specimenViewRole || specimenViewRole2 || specimenRoomView || pathology || disinfectionSupplyRole">
39
+            <i class="icon_transport transport-gengduoda-copy" (mouseenter)="showDropdown1 = true" (mouseleave)="showDropdown1 = false"></i>
40
+            <div class="dropdown-content ct" [hidden]="!showDropdown1" (mouseenter)="showDropdown1 = true" (mouseleave)="showDropdown1 = false">
41
+              <div class="dropdownItem" *ngIf="pharmacyRole" (click)="toPharmacy()">药房端</div>
42
+              <div class="dropdownItem" *ngIf="pharmacyRole" (click)="toPharmacy2()">药房端2</div>
43
+              <div class="dropdownItem" *ngIf="largeScreenRole" (click)="toBigScreen('largeScreen')">大屏端</div>
44
+              <div class="dropdownItem" *ngIf="largeScreenRole2" (click)="toBigScreen('largeScreen2')">大屏端2</div>
45
+              <div class="dropdownItem" *ngIf="specimenViewRole" (click)="toBigScreen('specimenView')">业务视图</div>
46
+              <div class="dropdownItem" *ngIf="specimenViewRole2" (click)="toSpecimenView2()">标本视图</div>
47
+              <div class="dropdownItem" *ngIf="specimenRoomView" (click)="toSpecimenRoomView()">标本间端</div>
48
+              <div class="dropdownItem" *ngIf="pathology" (click)="toPathology()">病理科端</div>
49
+              <div class="dropdownItem" *ngIf="disinfectionSupplyRole" (click)="toDisinfectionSupply()">全局业务查看</div>
50
+            </div>
51
+          </div>
48
         </div>
52
         </div>
49
         <div class="right">
53
         <div class="right">
50
-          <button class="mr8" nz-button nzType="primary" *ngIf='PCCommutesToWork && userInfo.user && !userInfo.user.online' (click)="GoWork()">我要上班</button>
51
-          <button class="mr8" nz-button nzType="primary" *ngIf='PCCommutesToWork && userInfo.user && userInfo.user.online' (click)="GoWork()">我要下班</button>
52
-          <!-- <div class="msg">
53
-            <div class="msgBtn display_flex align-items_center justify-content_flex-center" nz-popover [nzPopoverContent]="contentTemplate" nzPopoverPlacement="bottomRight">
54
-              <i nz-icon nzType="bell" nzTheme="outline"></i>
55
-            </div>
56
-            <ng-template #contentTemplate>
57
-              <div>
58
-                <p>消息通知</p>
59
-              </div>
60
-            </ng-template>
61
-          </div> -->
62
-          <div class="userInfo">
63
-            <div class="wel" [title]="'欢迎您,' + currentHospital.hosName + ':'">欢迎您,{{currentHospital.hosName}}:</div>
64
-            <div class="user">
54
+          <div class="userInfo dropdown">
55
+            <div class="user" (mouseenter)="showDropdown = true" (mouseleave)="showDropdown = false">
65
               <img src="../../assets/images/icon_keshi.png" alt="">
56
               <img src="../../assets/images/icon_keshi.png" alt="">
66
-              <span [title]="(userInfo&&userInfo.user)?userInfo.user.name:''">{{(userInfo&&userInfo.user)?userInfo.user.name:''}}</span>
57
+              <span><ng-container *ngIf="currentHospital.hosName">{{currentHospital.hosName}}-</ng-container>{{(userInfo&&userInfo.user)?userInfo.user.name:''}}</span>
58
+              <i class="icon_transport transport-xiala1 ml8"></i>
67
             </div>
59
             </div>
68
-            <div class="logOut">
69
-              <span (click)="hosFlag1 = true">选择院区</span>
70
-              <span (click)="showUpPwd()">修改密码</span>
71
-              <span (click)="logOut()">退出</span>
60
+            <div class="dropdown-content r8" [hidden]="!showDropdown" (mouseenter)="showDropdown = true" (mouseleave)="showDropdown = false">
61
+              <div class="dropdownItem" (click)="selectHospital()">选择院区</div>
62
+              <div class="dropdownItem" (click)="showUpPwd()">修改密码</div>
63
+              <div class="dropdownItem" (click)="logOut()">退出</div>
72
             </div>
64
             </div>
73
           </div>
65
           </div>
74
         </div>
66
         </div>

+ 76 - 22
src/app/views/main/main.component.less

@@ -17,9 +17,46 @@ nz-sider {
17
   overflow-y: auto;
17
   overflow-y: auto;
18
 }
18
 }
19
 
19
 
20
+// 下拉列表
21
+.dropdown{
22
+  position: relative;
23
+  height: 48px;
24
+  line-height: 48px;
25
+  .dropdown-content {
26
+    position: absolute;
27
+    top: 48px;
28
+    background-color: #fff;
29
+    width: 156px;
30
+    box-shadow: 0px 2px 4px 1px #D9D9D9;
31
+    z-index: 999999;
32
+    border-radius: 4px;
33
+    border: 1px solid rgba(0,0,0,0.15);
34
+    color: rgba(0,0,0,0.65);
35
+    &.ct{
36
+      left: 50%;
37
+      transform: translateX(-50%);
38
+    }
39
+    &.r8{
40
+      right: 8px;
41
+    }
42
+  }
43
+
44
+  .dropdown-content .dropdownItem {
45
+    height: 40px;
46
+    cursor: pointer;
47
+    display: flex;
48
+    align-items: center;
49
+    padding: 0 24px;
50
+  }
51
+
52
+  .dropdown-content .dropdownItem:hover {
53
+    background-color: #e9f7e9;
54
+  }
55
+}
56
+
20
 .menu-sidebar {
57
 .menu-sidebar {
21
-  width: 224px;
22
-  flex: 0 0 224px;
58
+  width: 175px;
59
+  flex: 0 0 175px;
23
   position: relative;
60
   position: relative;
24
   z-index: 8;
61
   z-index: 8;
25
   min-height: 100vh;
62
   min-height: 100vh;
@@ -79,7 +116,7 @@ nz-sider {
79
     box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);
116
     box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);
80
 
117
 
81
     & > i {
118
     & > i {
82
-      margin-left: 24px;
119
+      margin-left: 16px;
83
       margin-right: 10px;
120
       margin-right: 10px;
84
       font-size: 14px;
121
       font-size: 14px;
85
     }
122
     }
@@ -113,7 +150,11 @@ nz-sider {
113
     margin: 0;
150
     margin: 0;
114
     padding: 0;
151
     padding: 0;
115
     li {
152
     li {
116
-      padding-left: 48px;
153
+      white-space: nowrap;
154
+      overflow: hidden;//文本超出隐藏
155
+      text-overflow: ellipsis;//文本超出省略号替代
156
+      padding-left: 40px;
157
+      padding-right: 40px;
117
       transition: height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
158
       transition: height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
118
       box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.45) inset;
159
       box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.45) inset;
119
     }
160
     }
@@ -123,14 +164,19 @@ nz-sider {
123
 
164
 
124
 .sidebar-logo {
165
 .sidebar-logo {
125
   position: relative;
166
   position: relative;
126
-  height: 88px;
167
+  height: 48px;
127
   overflow: hidden;
168
   overflow: hidden;
128
-  line-height: 64px;
169
+  line-height: 48px;
129
   background: #fff;
170
   background: #fff;
130
   transition: all 0.3s;
171
   transition: all 0.3s;
131
 
172
 
132
-  span {
133
-    margin-top: 8px;
173
+  .logoTitle{
174
+    padding: 0 8px;
175
+    line-height: normal;
176
+    height:100%;
177
+  }
178
+
179
+  .title {
134
     color: @primary-color;
180
     color: @primary-color;
135
     font-weight: 600;
181
     font-weight: 600;
136
     font-size: 13px;
182
     font-size: 13px;
@@ -147,13 +193,13 @@ nz-sider {
147
 nz-header.ant-layout-header {
193
 nz-header.ant-layout-header {
148
   padding: 0;
194
   padding: 0;
149
   width: 100%;
195
   width: 100%;
150
-  z-index: 2;
196
+  z-index: 99;
151
   background: #fff;
197
   background: #fff;
152
-  height: 88px;
198
+  height: 48px;
153
 
199
 
154
   .app-header {
200
   .app-header {
155
     position: relative;
201
     position: relative;
156
-    height: 88px;
202
+    height: 48px;
157
     padding: 0;
203
     padding: 0;
158
     background: #fff;
204
     background: #fff;
159
     box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
205
     box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
@@ -161,10 +207,19 @@ nz-header.ant-layout-header {
161
     border-bottom: 1px solid rgba(0, 21, 41, 0.08);
207
     border-bottom: 1px solid rgba(0, 21, 41, 0.08);
162
 
208
 
163
     .left {
209
     .left {
210
+      height: 100%;
164
       flex: 1;
211
       flex: 1;
165
       display: flex;
212
       display: flex;
166
-      flex-wrap: wrap;
167
       align-items: center;
213
       align-items: center;
214
+      justify-content: flex-end;
215
+      .icon_transport{
216
+        margin-right: 24px;
217
+        cursor: pointer;
218
+        font-size: 20px;
219
+        height: 48px;
220
+        line-height: 48px;
221
+        display: inline-block;
222
+      }
168
       .menuLabel {
223
       .menuLabel {
169
         color: #333;
224
         color: #333;
170
         font-size: 22px;
225
         font-size: 22px;
@@ -206,10 +261,9 @@ nz-header.ant-layout-header {
206
       }
261
       }
207
 
262
 
208
       .userInfo {
263
       .userInfo {
209
-        width: 260px;
210
         height: 100%;
264
         height: 100%;
211
         float: right;
265
         float: right;
212
-        padding: 8px 36px 8px 8px;
266
+        padding: 0 24px;
213
         box-sizing: border-box;
267
         box-sizing: border-box;
214
         font-size: 14px;
268
         font-size: 14px;
215
         border-left: 1px solid #e5e9ed;
269
         border-left: 1px solid #e5e9ed;
@@ -223,22 +277,22 @@ nz-header.ant-layout-header {
223
 
277
 
224
         .user {
278
         .user {
225
           overflow: hidden;
279
           overflow: hidden;
226
-          font-size: 20px;
227
-          height: 40px;
280
+          height: 48px;
228
           display: flex;
281
           display: flex;
229
           justify-content: center;
282
           justify-content: center;
230
           align-items: center;
283
           align-items: center;
284
+          font-size: 16px;
285
+          cursor: pointer;
231
 
286
 
232
           img {
287
           img {
233
-            width: 36px;
234
-            height: 36px;
288
+            width: 32px;
289
+            height: 32px;
235
             margin-right: 8px;
290
             margin-right: 8px;
236
           }
291
           }
237
 
292
 
238
-          span {
239
-            white-space: nowrap;
240
-            overflow: hidden;//文本超出隐藏
241
-            text-overflow: ellipsis;//文本超出省略号替代
293
+          span, .transport-xiala1 {
294
+            height: 48px;
295
+            line-height: 48px;
242
           }
296
           }
243
         }
297
         }
244
 
298
 

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

@@ -452,18 +452,20 @@ export class MainComponent implements OnInit {
452
     }
452
     }
453
   }
453
   }
454
   //获取系统设置中的科室类型
454
   //获取系统设置中的科室类型
455
-  deptTypeLoading = false;
456
   getTypeByDept(id) {
455
   getTypeByDept(id) {
457
     let postData = {
456
     let postData = {
458
       idx: 0,
457
       idx: 0,
459
       sum: 1,
458
       sum: 1,
460
       systemConfiguration: { keyconfig: "busiViewDeptId" },
459
       systemConfiguration: { keyconfig: "busiViewDeptId" },
461
     };
460
     };
462
-    this.deptTypeLoading = true;
461
+    this.maskFlag = this.msg.loading("正在加载中..", {
462
+      nzDuration: 0,
463
+    }).messageId;
463
     this.mainService
464
     this.mainService
464
       .getFetchDataList("simple/data", "systemConfiguration", postData)
465
       .getFetchDataList("simple/data", "systemConfiguration", postData)
465
       .subscribe((result) => {
466
       .subscribe((result) => {
466
-        this.deptTypeLoading = false;
467
+        this.msg.remove(this.maskFlag);
468
+        this.maskFlag = false;
467
         if (result.status == 200) {
469
         if (result.status == 200) {
468
           let remember = JSON.parse(localStorage.getItem("remember"));
470
           let remember = JSON.parse(localStorage.getItem("remember"));
469
           window.open(
471
           window.open(
@@ -493,6 +495,15 @@ export class MainComponent implements OnInit {
493
     this.iShowMenuModal = false;
495
     this.iShowMenuModal = false;
494
   }
496
   }
495
 
497
 
498
+  // 下拉
499
+  showDropdown:boolean = false;
500
+  showDropdown1:boolean = false;
501
+
502
+  // 选择院区
503
+  selectHospital(){
504
+    this.hosFlag1 = true
505
+  }
506
+
496
   // 退出
507
   // 退出
497
   logOut(): void {
508
   logOut(): void {
498
     // 假退出
509
     // 假退出

+ 24 - 0
src/app/views/pathology/pathology.component.html

@@ -21,6 +21,10 @@
21
       </div>
21
       </div>
22
 			<div class="error-class">{{errorcODEMsg}}</div>
22
 			<div class="error-class">{{errorcODEMsg}}</div>
23
     </div>
23
     </div>
24
+		<div class="nurseCode" (click)="showNurseCode()">
25
+		  <i class="nurseCodeIcon icon_transport transport-erweima"></i
26
+		  >二维码
27
+		</div>
24
     <div class="userInfo">
28
     <div class="userInfo">
25
       <div class="wel">欢迎您:</div>
29
       <div class="wel">欢迎您:</div>
26
       <div class="user">
30
       <div class="user">
@@ -235,6 +239,26 @@
235
   <!-- <router-outlet></router-outlet> -->
239
   <!-- <router-outlet></router-outlet> -->
236
 </div>
240
 </div>
237
 
241
 
242
+<!-- 科室二维码模态框 -->
243
+<!-- 在模态框所在的 div 添加属性 [appDrag] -->
244
+<div appDrag class="modal" *ngIf="isShowNurseCode">
245
+  <div class="header drag-title">
246
+    <h2>签到二维码</h2>
247
+    <i
248
+      class="icon-close icon_transport transport-guanbi1"
249
+      (click)="closeNurseCode()"
250
+    ></i>
251
+  </div>
252
+  <div class="dialog-center">
253
+    <div class="dialog-code">
254
+      <img [src]="nurseCodeImg" alt="" />
255
+    </div>
256
+  </div>
257
+  <div class="dialog-operate">
258
+    <strong class="dialog-refresh" (click)="showNurseCode()">刷新</strong>
259
+    <span>{{ refreshQRCodeTime }}s</span>
260
+  </div>
261
+</div>
238
 <!-- 科室切换提示框 -->
262
 <!-- 科室切换提示框 -->
239
 <app-hs-prompt-modal
263
 <app-hs-prompt-modal
240
   [changeShow]="changeShow"
264
   [changeShow]="changeShow"

+ 109 - 8
src/app/views/pathology/pathology.component.less

@@ -82,7 +82,7 @@
82
     }
82
     }
83
 
83
 
84
     .pharmacy-name {
84
     .pharmacy-name {
85
-      // flex: 1;
85
+      flex: 1;
86
       // border-right: 1px solid #e5e9ed;
86
       // border-right: 1px solid #e5e9ed;
87
       display: flex;
87
       display: flex;
88
       // justify-content: space-between;
88
       // justify-content: space-between;
@@ -199,15 +199,30 @@
199
 		}
199
 		}
200
 	}
200
 	}
201
 	
201
 	
202
+	.nurseCode {
203
+	  width: 80px;
204
+	  font-size: 14px;
205
+	  color: #333;
206
+	  display: flex;
207
+	  justify-content: space-between;
208
+	  align-items: center;
209
+	  margin-right: 20px;
210
+	  cursor: pointer;
211
+	
212
+	  .nurseCodeIcon {
213
+	    margin-right: 8px;
214
+	    font-size: 24px;
215
+	    color: #929292;
216
+	  }
217
+	}
218
+	
202
   .userInfo {
219
   .userInfo {
203
-    // display: none;
204
-    width: 336px;
205
-    // height: 100%;
206
-    // float: right;
207
-    padding: 8px;
220
+    width: 260px;
221
+    height: 100%;
222
+    padding: 8px 36px 8px 8px;
208
     box-sizing: border-box;
223
     box-sizing: border-box;
209
     font-size: 14px;
224
     font-size: 14px;
210
-    // border-left: 1px solid #e5e9ed;
225
+    border-left: 1px solid #e5e9ed;
211
 
226
 
212
     .wel {
227
     .wel {
213
       line-height: 15px;
228
       line-height: 15px;
@@ -1094,4 +1109,90 @@
1094
 }
1109
 }
1095
 .spin-style{
1110
 .spin-style{
1096
 	z-index:9999;
1111
 	z-index:9999;
1097
-}
1112
+}
1113
+
1114
+  .modal {
1115
+    // 相对于 background 定位, 位置暂时设置为 0,0,0,0 在指令中将其位置水平垂直居中在页面中间
1116
+    position: absolute;
1117
+    top: 0;
1118
+    left: 0;
1119
+    bottom: 0;
1120
+    right: 0;
1121
+    width: 280px;
1122
+    height: 310px;
1123
+    z-index: 3100;
1124
+    background: #f9fafb;
1125
+    box-shadow: 1px 1px 20px rgba(0, 0, 0, 0.3);
1126
+    border-radius: 30px;
1127
+    border: 1px solid @hs_border_color;
1128
+    overflow: hidden;
1129
+    cursor: move;
1130
+
1131
+    .drag-title {
1132
+      height: 50px;
1133
+      line-height: 50px;
1134
+      position: relative;
1135
+
1136
+      h2 {
1137
+        height: 100%;
1138
+        font-size: 18px;
1139
+        color: #333;
1140
+        text-align: center;
1141
+        margin: 0;
1142
+      }
1143
+
1144
+      .icon-close {
1145
+        position: absolute;
1146
+        top: 0;
1147
+        right: 16px;
1148
+        font-size: 16px;
1149
+        cursor: pointer;
1150
+        color: @hs_border_color;
1151
+      }
1152
+    }
1153
+
1154
+    .dialog-center {
1155
+      width: 235px;
1156
+      height: 208px;
1157
+      background-color: #fff;
1158
+      border: 1px solid @hs_border_color;
1159
+      margin: 0 auto;
1160
+      border-radius: 30px;
1161
+      position: relative;
1162
+
1163
+      .dialog-code {
1164
+        width: 180px;
1165
+        height: 200px;
1166
+        overflow: hidden;
1167
+        position: absolute;
1168
+        margin: auto;
1169
+        top: 0;
1170
+        right: 0;
1171
+        bottom: 0;
1172
+        left: 0;
1173
+
1174
+        img {
1175
+          width: 100%;
1176
+        }
1177
+      }
1178
+    }
1179
+
1180
+    .dialog-operate {
1181
+      display: flex;
1182
+      height: 40px;
1183
+      justify-content: space-between;
1184
+      align-items: center;
1185
+      font-size: 14px;
1186
+
1187
+      .dialog-refresh {
1188
+        color: @primary-color;
1189
+        margin-left: 40px;
1190
+        cursor: pointer;
1191
+      }
1192
+
1193
+      span {
1194
+        color: #999;
1195
+        margin-right: 40px;
1196
+      }
1197
+    }
1198
+  }

+ 32 - 0
src/app/views/pathology/pathology.component.ts

@@ -166,6 +166,8 @@ export class PathologyComponent implements OnInit, OnDestroy {
166
 	toDayData:any = null;
166
 	toDayData:any = null;
167
 	toDayTime:any = null;
167
 	toDayTime:any = null;
168
 	backType='list';
168
 	backType='list';
169
+	loginUserDeptId: number = JSON.parse(localStorage.getItem("user")).user.dept
170
+	  .id; //登录人所属科室
169
   ngOnDestroy() {
171
   ngOnDestroy() {
170
     clearTimeout(this.timer);
172
     clearTimeout(this.timer);
171
     clearTimeout(this.logTimer);
173
     clearTimeout(this.logTimer);
@@ -215,6 +217,36 @@ export class PathologyComponent implements OnInit, OnDestroy {
215
 			this.getToday()
217
 			this.getToday()
216
 		},60000)
218
 		},60000)
217
   }
219
   }
220
+	
221
+	isShowNurseCode = false; //是否展开科室二维码
222
+	nurseCodeImg = ""; //图片
223
+	refreshQRCodeTime = 0; //刷新时间间隔
224
+	// 关闭科室二维码
225
+	closeNurseCode() {
226
+	  this.isShowNurseCode = false;
227
+	  clearInterval(this.timers);
228
+	  this.timer = null;
229
+	}
230
+	// 展开科室二维码
231
+	timers = null;
232
+	showNurseCode() {
233
+	  this.isShowNurseCode = true;
234
+	  this.mainService.getDeptCode([this.loginUserDeptId]).subscribe((data) => {
235
+	    if (data["status"] == 200) {
236
+	      this.nurseCodeImg = data["data"][0].base64;
237
+	      this.refreshQRCodeTime = data["data"][0].refreshQRCodeTime;
238
+	      clearInterval(this.timers);
239
+	      this.timers = setInterval(() => {
240
+	        this.refreshQRCodeTime = Math.max(--this.refreshQRCodeTime, 0);
241
+	        if (this.refreshQRCodeTime === 0) {
242
+	          clearInterval(this.timers);
243
+	          this.showNurseCode();
244
+	        }
245
+	      }, 1000);
246
+	    }
247
+	  });
248
+	}
249
+	
218
   // 当前时间日期
250
   // 当前时间日期
219
   runTime() {
251
   runTime() {
220
     clearTimeout(this.timer);
252
     clearTimeout(this.timer);

+ 2 - 1
src/app/views/pathology/pathology.module.ts

@@ -4,11 +4,12 @@ import { CommonModule } from '@angular/common';
4
 import { PathologyRoutingModule } from './pathology-routing.module';
4
 import { PathologyRoutingModule } from './pathology-routing.module';
5
 import { ShareModule } from 'src/app/share/share.module';
5
 import { ShareModule } from 'src/app/share/share.module';
6
 import { PathologyComponent } from './pathology.component';
6
 import { PathologyComponent } from './pathology.component';
7
-
7
+import { DragModule } from 'src/app/directives/drag/drag.module';
8
 
8
 
9
 @NgModule({
9
 @NgModule({
10
   declarations: [PathologyComponent],
10
   declarations: [PathologyComponent],
11
   imports: [
11
   imports: [
12
+		DragModule,
12
     CommonModule,
13
     CommonModule,
13
     PathologyRoutingModule,
14
     PathologyRoutingModule,
14
     ShareModule
15
     ShareModule

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

@@ -36,7 +36,7 @@
36
         }}</span>
36
         }}</span>
37
       </div>
37
       </div>
38
       <div class="userInfo-wrap">
38
       <div class="userInfo-wrap">
39
-        <div class="logOut" (click)="changeKsNow()">切换科室</div>
39
+        <div class="logOut" (click)="setSpecimen()">切换科室</div>
40
         <div class="logOut" (click)="logOut()">退出</div>
40
         <div class="logOut" (click)="logOut()">退出</div>
41
       </div>
41
       </div>
42
     </div>
42
     </div>

+ 8 - 10
src/app/views/specimen-room-view/specimen-room-view.component.less

@@ -62,7 +62,7 @@
62
     display: flex;
62
     display: flex;
63
 		color: #000;
63
 		color: #000;
64
     .pharmacy-logo {
64
     .pharmacy-logo {
65
-      width: 221px;
65
+      width: 100px;
66
       background-color: #fff;
66
       background-color: #fff;
67
       display: flex;
67
       display: flex;
68
       flex-direction: column;
68
       flex-direction: column;
@@ -82,7 +82,7 @@
82
     }
82
     }
83
 
83
 
84
     .pharmacy-name {
84
     .pharmacy-name {
85
-      // flex: 1;
85
+      flex: 1;
86
       // border-right: 1px solid #e5e9ed;
86
       // border-right: 1px solid #e5e9ed;
87
       display: flex;
87
       display: flex;
88
       // justify-content: space-between;
88
       // justify-content: space-between;
@@ -159,14 +159,12 @@
159
     }
159
     }
160
   }
160
   }
161
   .userInfo {
161
   .userInfo {
162
-    // display: none;
163
-    width: 336px;
164
-    // height: 100%;
165
-    // float: right;
166
-    padding: 8px;
167
-    box-sizing: border-box;
168
-    font-size: 14px;
169
-    // border-left: 1px solid #e5e9ed;
162
+		width: 260px;
163
+		height: 100%;
164
+		padding: 8px 36px 8px 8px;
165
+		box-sizing: border-box;
166
+		font-size: 14px;
167
+		border-left: 1px solid #e5e9ed;
170
 
168
 
171
     .wel {
169
     .wel {
172
       line-height: 15px;
170
       line-height: 15px;

+ 13 - 5
src/app/views/specimen-room-view/specimen-room-view.component.ts

@@ -317,11 +317,19 @@ export class SpecimenRoomViewComponent implements OnInit, OnDestroy {
317
 
317
 
318
 	// 获取是否关联标本间
318
 	// 获取是否关联标本间
319
 	setSpecimen(){
319
 	setSpecimen(){
320
-		this.validateForm = this.fb.group({
321
-		  specimen: [null, [Validators.required]],
322
-			operation: [null, [Validators.required]],
323
-			generate:[1, [Validators.required]],
324
-		});
320
+		if(this.validateForm){
321
+			this.validateForm = this.fb.group({
322
+			  specimen: [this.validateForm.value.specimen, [Validators.required]],
323
+				operation: [this.validateForm.value.operation, [Validators.required]],
324
+				generate:[this.validateForm.value.generate, [Validators.required]],
325
+			});
326
+		}else{
327
+			this.validateForm = this.fb.group({
328
+			  specimen: [null, [Validators.required]],
329
+				operation: [null, [Validators.required]],
330
+				generate:[1, [Validators.required]],
331
+			});
332
+		}
325
 		this.relevanceModal = true
333
 		this.relevanceModal = true
326
 	}
334
 	}
327
 
335
 

+ 164 - 3
src/assets/iconfont/demo_index.html

@@ -55,6 +55,42 @@
55
           <ul class="icon_lists dib-box">
55
           <ul class="icon_lists dib-box">
56
           
56
           
57
             <li class="dib">
57
             <li class="dib">
58
+              <span class="icon icon_transport">&#xe7ba;</span>
59
+                <div class="name">护士执行护理工作</div>
60
+                <div class="code-name">&amp;#xe7ba;</div>
61
+              </li>
62
+          
63
+            <li class="dib">
64
+              <span class="icon icon_transport">&#xe6bb;</span>
65
+                <div class="name">配置</div>
66
+                <div class="code-name">&amp;#xe6bb;</div>
67
+              </li>
68
+          
69
+            <li class="dib">
70
+              <span class="icon icon_transport">&#xe659;</span>
71
+                <div class="name">筛选</div>
72
+                <div class="code-name">&amp;#xe659;</div>
73
+              </li>
74
+          
75
+            <li class="dib">
76
+              <span class="icon icon_transport">&#xe695;</span>
77
+                <div class="name">home_title_class</div>
78
+                <div class="code-name">&amp;#xe695;</div>
79
+              </li>
80
+          
81
+            <li class="dib">
82
+              <span class="icon icon_transport">&#xe6b5;</span>
83
+                <div class="name">调度-fill</div>
84
+                <div class="code-name">&amp;#xe6b5;</div>
85
+              </li>
86
+          
87
+            <li class="dib">
88
+              <span class="icon icon_transport">&#xe657;</span>
89
+                <div class="name">护士</div>
90
+                <div class="code-name">&amp;#xe657;</div>
91
+              </li>
92
+          
93
+            <li class="dib">
58
               <span class="icon icon_transport">&#xe62b;</span>
94
               <span class="icon icon_transport">&#xe62b;</span>
59
                 <div class="name">下载</div>
95
                 <div class="name">下载</div>
60
                 <div class="code-name">&amp;#xe62b;</div>
96
                 <div class="code-name">&amp;#xe62b;</div>
@@ -841,6 +877,12 @@
841
               </li>
877
               </li>
842
           
878
           
843
             <li class="dib">
879
             <li class="dib">
880
+              <span class="icon icon_transport">&#xeeed;</span>
881
+                <div class="name">更多</div>
882
+                <div class="code-name">&amp;#xeeed;</div>
883
+              </li>
884
+          
885
+            <li class="dib">
844
               <span class="icon icon_transport">&#xe633;</span>
886
               <span class="icon icon_transport">&#xe633;</span>
845
                 <div class="name">搜索</div>
887
                 <div class="name">搜索</div>
846
                 <div class="code-name">&amp;#xe633;</div>
888
                 <div class="code-name">&amp;#xe633;</div>
@@ -906,9 +948,9 @@
906
 <pre><code class="language-css"
948
 <pre><code class="language-css"
907
 >@font-face {
949
 >@font-face {
908
   font-family: 'icon_transport';
950
   font-family: 'icon_transport';
909
-  src: url('iconfont.woff2?t=1724726830485') format('woff2'),
910
-       url('iconfont.woff?t=1724726830485') format('woff'),
911
-       url('iconfont.ttf?t=1724726830485') format('truetype');
951
+  src: url('iconfont.woff2?t=1729066208752') format('woff2'),
952
+       url('iconfont.woff?t=1729066208752') format('woff'),
953
+       url('iconfont.ttf?t=1729066208752') format('truetype');
912
 }
954
 }
913
 </code></pre>
955
 </code></pre>
914
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
956
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -935,6 +977,60 @@
935
         <ul class="icon_lists dib-box">
977
         <ul class="icon_lists dib-box">
936
           
978
           
937
           <li class="dib">
979
           <li class="dib">
980
+            <span class="icon icon_transport transport-hushizhihanghuligongzuo"></span>
981
+            <div class="name">
982
+              护士执行护理工作
983
+            </div>
984
+            <div class="code-name">.transport-hushizhihanghuligongzuo
985
+            </div>
986
+          </li>
987
+          
988
+          <li class="dib">
989
+            <span class="icon icon_transport transport-peizhi1"></span>
990
+            <div class="name">
991
+              配置
992
+            </div>
993
+            <div class="code-name">.transport-peizhi1
994
+            </div>
995
+          </li>
996
+          
997
+          <li class="dib">
998
+            <span class="icon icon_transport transport-shaixuan"></span>
999
+            <div class="name">
1000
+              筛选
1001
+            </div>
1002
+            <div class="code-name">.transport-shaixuan
1003
+            </div>
1004
+          </li>
1005
+          
1006
+          <li class="dib">
1007
+            <span class="icon icon_transport transport-shangban"></span>
1008
+            <div class="name">
1009
+              home_title_class
1010
+            </div>
1011
+            <div class="code-name">.transport-shangban
1012
+            </div>
1013
+          </li>
1014
+          
1015
+          <li class="dib">
1016
+            <span class="icon icon_transport transport-tiaodu-fill"></span>
1017
+            <div class="name">
1018
+              调度-fill
1019
+            </div>
1020
+            <div class="code-name">.transport-tiaodu-fill
1021
+            </div>
1022
+          </li>
1023
+          
1024
+          <li class="dib">
1025
+            <span class="icon icon_transport transport-hushi"></span>
1026
+            <div class="name">
1027
+              护士
1028
+            </div>
1029
+            <div class="code-name">.transport-hushi
1030
+            </div>
1031
+          </li>
1032
+          
1033
+          <li class="dib">
938
             <span class="icon icon_transport transport-xiazai"></span>
1034
             <span class="icon icon_transport transport-xiazai"></span>
939
             <div class="name">
1035
             <div class="name">
940
               下载
1036
               下载
@@ -2114,6 +2210,15 @@
2114
           </li>
2210
           </li>
2115
           
2211
           
2116
           <li class="dib">
2212
           <li class="dib">
2213
+            <span class="icon icon_transport transport-gengduoda-copy"></span>
2214
+            <div class="name">
2215
+              更多
2216
+            </div>
2217
+            <div class="code-name">.transport-gengduoda-copy
2218
+            </div>
2219
+          </li>
2220
+          
2221
+          <li class="dib">
2117
             <span class="icon icon_transport transport-sousuo"></span>
2222
             <span class="icon icon_transport transport-sousuo"></span>
2118
             <div class="name">
2223
             <div class="name">
2119
               搜索
2224
               搜索
@@ -2214,6 +2319,54 @@
2214
           
2319
           
2215
             <li class="dib">
2320
             <li class="dib">
2216
                 <svg class="icon svg-icon" aria-hidden="true">
2321
                 <svg class="icon svg-icon" aria-hidden="true">
2322
+                  <use xlink:href="#transport-hushizhihanghuligongzuo"></use>
2323
+                </svg>
2324
+                <div class="name">护士执行护理工作</div>
2325
+                <div class="code-name">#transport-hushizhihanghuligongzuo</div>
2326
+            </li>
2327
+          
2328
+            <li class="dib">
2329
+                <svg class="icon svg-icon" aria-hidden="true">
2330
+                  <use xlink:href="#transport-peizhi1"></use>
2331
+                </svg>
2332
+                <div class="name">配置</div>
2333
+                <div class="code-name">#transport-peizhi1</div>
2334
+            </li>
2335
+          
2336
+            <li class="dib">
2337
+                <svg class="icon svg-icon" aria-hidden="true">
2338
+                  <use xlink:href="#transport-shaixuan"></use>
2339
+                </svg>
2340
+                <div class="name">筛选</div>
2341
+                <div class="code-name">#transport-shaixuan</div>
2342
+            </li>
2343
+          
2344
+            <li class="dib">
2345
+                <svg class="icon svg-icon" aria-hidden="true">
2346
+                  <use xlink:href="#transport-shangban"></use>
2347
+                </svg>
2348
+                <div class="name">home_title_class</div>
2349
+                <div class="code-name">#transport-shangban</div>
2350
+            </li>
2351
+          
2352
+            <li class="dib">
2353
+                <svg class="icon svg-icon" aria-hidden="true">
2354
+                  <use xlink:href="#transport-tiaodu-fill"></use>
2355
+                </svg>
2356
+                <div class="name">调度-fill</div>
2357
+                <div class="code-name">#transport-tiaodu-fill</div>
2358
+            </li>
2359
+          
2360
+            <li class="dib">
2361
+                <svg class="icon svg-icon" aria-hidden="true">
2362
+                  <use xlink:href="#transport-hushi"></use>
2363
+                </svg>
2364
+                <div class="name">护士</div>
2365
+                <div class="code-name">#transport-hushi</div>
2366
+            </li>
2367
+          
2368
+            <li class="dib">
2369
+                <svg class="icon svg-icon" aria-hidden="true">
2217
                   <use xlink:href="#transport-xiazai"></use>
2370
                   <use xlink:href="#transport-xiazai"></use>
2218
                 </svg>
2371
                 </svg>
2219
                 <div class="name">下载</div>
2372
                 <div class="name">下载</div>
@@ -3262,6 +3415,14 @@
3262
           
3415
           
3263
             <li class="dib">
3416
             <li class="dib">
3264
                 <svg class="icon svg-icon" aria-hidden="true">
3417
                 <svg class="icon svg-icon" aria-hidden="true">
3418
+                  <use xlink:href="#transport-gengduoda-copy"></use>
3419
+                </svg>
3420
+                <div class="name">更多</div>
3421
+                <div class="code-name">#transport-gengduoda-copy</div>
3422
+            </li>
3423
+          
3424
+            <li class="dib">
3425
+                <svg class="icon svg-icon" aria-hidden="true">
3265
                   <use xlink:href="#transport-sousuo"></use>
3426
                   <use xlink:href="#transport-sousuo"></use>
3266
                 </svg>
3427
                 </svg>
3267
                 <div class="name">搜索</div>
3428
                 <div class="name">搜索</div>

+ 31 - 3
src/assets/iconfont/iconfont.css

@@ -1,8 +1,8 @@
1
 @font-face {
1
 @font-face {
2
   font-family: "icon_transport"; /* Project id 4543613 */
2
   font-family: "icon_transport"; /* Project id 4543613 */
3
-  src: url('iconfont.woff2?t=1724726830485') format('woff2'),
4
-       url('iconfont.woff?t=1724726830485') format('woff'),
5
-       url('iconfont.ttf?t=1724726830485') format('truetype');
3
+  src: url('iconfont.woff2?t=1729066208752') format('woff2'),
4
+       url('iconfont.woff?t=1729066208752') format('woff'),
5
+       url('iconfont.ttf?t=1729066208752') format('truetype');
6
 }
6
 }
7
 
7
 
8
 .icon_transport {
8
 .icon_transport {
@@ -13,6 +13,30 @@
13
   -moz-osx-font-smoothing: grayscale;
13
   -moz-osx-font-smoothing: grayscale;
14
 }
14
 }
15
 
15
 
16
+.transport-hushizhihanghuligongzuo:before {
17
+  content: "\e7ba";
18
+}
19
+
20
+.transport-peizhi1:before {
21
+  content: "\e6bb";
22
+}
23
+
24
+.transport-shaixuan:before {
25
+  content: "\e659";
26
+}
27
+
28
+.transport-shangban:before {
29
+  content: "\e695";
30
+}
31
+
32
+.transport-tiaodu-fill:before {
33
+  content: "\e6b5";
34
+}
35
+
36
+.transport-hushi:before {
37
+  content: "\e657";
38
+}
39
+
16
 .transport-xiazai:before {
40
 .transport-xiazai:before {
17
   content: "\e62b";
41
   content: "\e62b";
18
 }
42
 }
@@ -537,6 +561,10 @@
537
   content: "\ea66";
561
   content: "\ea66";
538
 }
562
 }
539
 
563
 
564
+.transport-gengduoda-copy:before {
565
+  content: "\eeed";
566
+}
567
+
540
 .transport-sousuo:before {
568
 .transport-sousuo:before {
541
   content: "\e633";
569
   content: "\e633";
542
 }
570
 }

File diff suppressed because it is too large
+ 1 - 1
src/assets/iconfont/iconfont.js


+ 49 - 0
src/assets/iconfont/iconfont.json

@@ -6,6 +6,48 @@
6
   "description": "",
6
   "description": "",
7
   "glyphs": [
7
   "glyphs": [
8
     {
8
     {
9
+      "icon_id": "39318134",
10
+      "name": "护士执行护理工作",
11
+      "font_class": "hushizhihanghuligongzuo",
12
+      "unicode": "e7ba",
13
+      "unicode_decimal": 59322
14
+    },
15
+    {
16
+      "icon_id": "376638",
17
+      "name": "配置",
18
+      "font_class": "peizhi1",
19
+      "unicode": "e6bb",
20
+      "unicode_decimal": 59067
21
+    },
22
+    {
23
+      "icon_id": "12911869",
24
+      "name": "筛选",
25
+      "font_class": "shaixuan",
26
+      "unicode": "e659",
27
+      "unicode_decimal": 58969
28
+    },
29
+    {
30
+      "icon_id": "2213025",
31
+      "name": "home_title_class",
32
+      "font_class": "shangban",
33
+      "unicode": "e695",
34
+      "unicode_decimal": 59029
35
+    },
36
+    {
37
+      "icon_id": "5766821",
38
+      "name": "调度-fill",
39
+      "font_class": "tiaodu-fill",
40
+      "unicode": "e6b5",
41
+      "unicode_decimal": 59061
42
+    },
43
+    {
44
+      "icon_id": "28467714",
45
+      "name": "护士",
46
+      "font_class": "hushi",
47
+      "unicode": "e657",
48
+      "unicode_decimal": 58967
49
+    },
50
+    {
9
       "icon_id": "11833563",
51
       "icon_id": "11833563",
10
       "name": "下载",
52
       "name": "下载",
11
       "font_class": "xiazai",
53
       "font_class": "xiazai",
@@ -923,6 +965,13 @@
923
       "unicode_decimal": 60006
965
       "unicode_decimal": 60006
924
     },
966
     },
925
     {
967
     {
968
+      "icon_id": "42129639",
969
+      "name": "更多",
970
+      "font_class": "gengduoda-copy",
971
+      "unicode": "eeed",
972
+      "unicode_decimal": 61165
973
+    },
974
+    {
926
       "icon_id": "2675116",
975
       "icon_id": "2675116",
927
       "name": "搜索",
976
       "name": "搜索",
928
       "font_class": "sousuo",
977
       "font_class": "sousuo",

BIN
src/assets/iconfont/iconfont.ttf


BIN
src/assets/iconfont/iconfont.woff


BIN
src/assets/iconfont/iconfont.woff2


+ 50 - 0
upload/development120.js

@@ -0,0 +1,50 @@
1
+const shell = require('shelljs')
2
+const path = require('path');
3
+const config = {
4
+  ip: "192.168.3.120", // ssh地址
5
+  username: "root", // ssh 用户名
6
+  port: 22,      //端口
7
+  password: "100100", // ssh 密码
8
+  path: '/home/itsm/project/web/hsms/pc', // 上传地址,删除地址
9
+  buildPath: '../dist/pc' // 本地打包后文件地址
10
+}
11
+let Client = require('ssh2-sftp-client');
12
+
13
+function connectSSh() {
14
+  let sftp = new Client();
15
+  sftp.connect({
16
+    host: config.ip,
17
+    port: config.port,
18
+    username: config.username,
19
+    password: config.password
20
+  }).then(() => {
21
+    console.log("-----先执行删除服务器文件-----")
22
+    return sftp.rmdir(config.path, true);
23
+  }).then(() => {
24
+    // 上传文件
25
+    console.log("-----开始上传-----")
26
+    return sftp.uploadDir(path.resolve(__dirname, config.buildPath), config.path);
27
+  }).then((data) => {
28
+    console.log("-----上传完成-----");
29
+    sftp.end();
30
+  }).catch((err) => {
31
+    console.log(err, '-----失败-----');
32
+    sftp.end();
33
+  });
34
+}
35
+function runTask() {
36
+  //打包完成
37
+  console.log(`当前NodeJs版本是${process.version}`);
38
+  const isNodeVersionLt17 = parseInt(process.version.slice(1)) < 17;
39
+  const execStr = isNodeVersionLt17 ? 'npm run build' : 'npm run build:17';
40
+  if (shell.exec(execStr).code == 0) {
41
+    // if (shell.exec(`find dist -name '*.js' -print0 | xargs -0 gzip -k`).code == 0) {
42
+      // if (shell.exec(`find dist -name '*.css' -print0 | xargs -0 gzip -k`).code == 0) {
43
+        console.log("-----打包成功-----");
44
+        //提交上传
45
+        connectSSh();
46
+      // }
47
+    // }
48
+  }
49
+}
50
+runTask()