浏览代码

bug修复

seimin 6 月之前
父节点
当前提交
0bbb8ca6a3

+ 15 - 4
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,30 @@ 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
             this.audioSrc = location.origin + result.list[0].recordingFileName;
189
+            if(result.list[0].path){
190
+              this.mainService.getCallLogPath({ path: result.list[0].path, hosId: result.list[0].hosId }).subscribe((result) => {
191
+                if (result["state"] == 200) {
192
+                  this.audioSrc = location.origin + result["relativePath"];
193
+                }else{
194
+                  this.audioSrc = '';
195
+                }
196
+              });
197
+            }else{
198
+              this.audioSrc = '';
199
+            }
189
           }else{
200
           }else{
190
             this.audioSrc = '';
201
             this.audioSrc = '';
191
           }
202
           }

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

@@ -21,25 +21,36 @@ 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
             this.audioSrc = location.origin + result.list[0].recordingFileName;
43
+            if(result.list[0].path){
44
+              this.mainService.getCallLogPath({ path: result.list[0].path, hosId: result.list[0].hosId }).subscribe((result) => {
45
+                if (result["state"] == 200) {
46
+                  this.audioSrc = location.origin + result["relativePath"];
47
+                }else{
48
+                  this.audioSrc = '';
49
+                }
50
+              });
51
+            }else{
52
+              this.audioSrc = '';
53
+            }
43
           }else{
54
           }else{
44
             this.audioSrc = '';
55
             this.audioSrc = '';
45
           }
56
           }

+ 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;

+ 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]="transferHandlerLog(item.currentLog)"></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>

+ 21 - 1
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(addDays(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;
@@ -102,7 +122,7 @@ export class IncidentSerVisitComponent implements OnInit {
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),
124
         "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),
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(),

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

@@ -171,7 +171,7 @@ export class IncidentSubstitutionAssignComponent implements OnInit {
171
       group2: {
171
       group2: {
172
         groupName: keyword,
172
         groupName: keyword,
173
         hospitals: this.validateForm.value.dutyId,
173
         hospitals: this.validateForm.value.dutyId,
174
-        type: 1,
174
+        type: 3,
175
       },
175
       },
176
       idx: 0,
176
       idx: 0,
177
       sum: 10,
177
       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{

+ 64 - 58
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>
@@ -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>
@@ -445,7 +445,7 @@
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
+                        处理人:{{ computedHandlerUser(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>
@@ -649,7 +649,7 @@
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
+                        处理人:{{ computedHandlerUser(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">
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>

+ 233 - 1
src/app/views/fuwutai/fuwutai.component.less

@@ -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;

+ 102 - 9
src/app/views/fuwutai/fuwutai.component.ts

@@ -439,7 +439,7 @@ export class FuwutaiComponent implements OnInit {
439
             this.showPromptModal("建单", true, "", "closeGo");
439
             this.showPromptModal("建单", true, "", "closeGo");
440
           } else {
440
           } else {
441
             if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
441
             if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
442
-              // this.jry_shixian();
442
+              this.jry_shixian();
443
             }
443
             }
444
             this.showPromptModal("建单", true, "", "close");
444
             this.showPromptModal("建单", true, "", "close");
445
           }
445
           }
@@ -477,7 +477,7 @@ export class FuwutaiComponent implements OnInit {
477
           this.showPromptModal("建单", true, "", "closeGo");
477
           this.showPromptModal("建单", true, "", "closeGo");
478
         } else {
478
         } else {
479
           if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
479
           if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
480
-            // this.jry_shixian();
480
+            this.jry_shixian();
481
           }
481
           }
482
           this.showPromptModal("建单", true, "", "close");
482
           this.showPromptModal("建单", true, "", "close");
483
         }
483
         }
@@ -539,7 +539,7 @@ export class FuwutaiComponent implements OnInit {
539
           this.showPromptModal("建单", true, "", "closeGo");
539
           this.showPromptModal("建单", true, "", "closeGo");
540
         } else {
540
         } else {
541
           if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
541
           if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
542
-            // this.jry_shixian();
542
+            this.jry_shixian();
543
           }
543
           }
544
           this.showPromptModal("建单", true, "", "close");
544
           this.showPromptModal("建单", true, "", "close");
545
         }
545
         }
@@ -713,6 +713,7 @@ export class FuwutaiComponent implements OnInit {
713
     this.initControlView();
713
     this.initControlView();
714
     this.moveMenu("fixedMenu");
714
     this.moveMenu("fixedMenu");
715
     this.moveMenu("fixedMenuLeft");
715
     this.moveMenu("fixedMenuLeft");
716
+    this.moveMenuAll("fixedMenuAll");
716
     if(this.incomingService.getSign() === 'box'){
717
     if(this.incomingService.getSign() === 'box'){
717
       this.getPhoneNum();
718
       this.getPhoneNum();
718
     }else if(this.incomingService.getSign() === 'callCenter'){
719
     }else if(this.incomingService.getSign() === 'callCenter'){
@@ -975,6 +976,7 @@ export class FuwutaiComponent implements OnInit {
975
     //呼入回调函数
976
     //呼入回调函数
976
     TLWSA.onCallin = function (jso) {
977
     TLWSA.onCallin = function (jso) {
977
       console.log(jso);
978
       console.log(jso);
979
+      _this.incidentModel = {};
978
       _this.callNumber = _this.incidentModel.incomingPhone = jso.caller;//来电的电话
980
       _this.callNumber = _this.incidentModel.incomingPhone = jso.caller;//来电的电话
979
       _this.incidentModel.callID = jso.crs;//来电的话机id
981
       _this.incidentModel.callID = jso.crs;//来电的话机id
980
       if (jso) {
982
       if (jso) {
@@ -1397,6 +1399,8 @@ export class FuwutaiComponent implements OnInit {
1397
           } else {
1399
           } else {
1398
             //没绑定科室
1400
             //没绑定科室
1399
             console.log(this.newOrderShow);
1401
             console.log(this.newOrderShow);
1402
+            console.log(this.incidentModel);
1403
+            console.log(this.incidentMsg);
1400
             if (!this.newOrderShow && !this.newOrderShowOpen) {
1404
             if (!this.newOrderShow && !this.newOrderShowOpen) {
1401
               this.applyDept = null;
1405
               this.applyDept = null;
1402
               this.showNewOrder("no", this.incidentModel.incomingPhone, true, '来电弹屏');
1406
               this.showNewOrder("no", this.incidentModel.incomingPhone, true, '来电弹屏');
@@ -1824,6 +1828,9 @@ export class FuwutaiComponent implements OnInit {
1824
   // 获取回访列表
1828
   // 获取回访列表
1825
   visitNum:any;
1829
   visitNum:any;
1826
   getVisitList(){
1830
   getVisitList(){
1831
+    if(!this.itsmData.mdv2Switch){
1832
+      return;
1833
+    }
1827
     let postData: any = {
1834
     let postData: any = {
1828
       idx: 0,
1835
       idx: 0,
1829
       sum: 1,
1836
       sum: 1,
@@ -1847,6 +1854,9 @@ export class FuwutaiComponent implements OnInit {
1847
   // 获取留言列表
1854
   // 获取留言列表
1848
   messageNum:any;
1855
   messageNum:any;
1849
   getMessageList(){
1856
   getMessageList(){
1857
+    if(!this.itsmData.mdv2Switch){
1858
+      return;
1859
+    }
1850
     let postData: any = {
1860
     let postData: any = {
1851
       idx: 0,
1861
       idx: 0,
1852
       sum: 1,
1862
       sum: 1,
@@ -2433,7 +2443,7 @@ export class FuwutaiComponent implements OnInit {
2433
 
2443
 
2434
       let deptObj = this.applicationDepartmentList.find(v => v.id == this.applyDept);
2444
       let deptObj = this.applicationDepartmentList.find(v => v.id == this.applyDept);
2435
 
2445
 
2436
-      if(this.incidentModel.department != this.applyDept && (!isInit || this.buildType !== '来电弹屏')){
2446
+      if(this.incidentModel.department != this.applyDept && (!isInit || !this.buildType)){
2437
         this.incidentModel.department = this.applyDept;
2447
         this.incidentModel.department = this.applyDept;
2438
         this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, this.applyDept);
2448
         this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, this.applyDept);
2439
       }
2449
       }
@@ -3189,8 +3199,44 @@ export class FuwutaiComponent implements OnInit {
3189
     }
3199
     }
3190
     this.searchApplicationRequester();
3200
     this.searchApplicationRequester();
3191
 
3201
 
3192
-    // 回显维修人/组
3193
-    this.showGroupOrUser();
3202
+    // 根据院区和故障现象带出责任部门,优先级,维修人/组
3203
+    if(this.incidentModel.category && this.incidentModel.hosId){
3204
+      let postData = {
3205
+        idx: 0,
3206
+        sum: 9999,
3207
+        incidentCategoryConfig: {
3208
+          categoryId: this.incidentModel.category,
3209
+          hosId: this.incidentModel.hosId,
3210
+        },
3211
+      };
3212
+      console.log(postData);
3213
+      // return;
3214
+      this.isLoading = true;
3215
+      this.mainService
3216
+        .getFetchDataList("simple/data", "incidentCategoryConfig", postData)
3217
+        .subscribe((data) => {
3218
+          this.isLoading = false;
3219
+          if (data.status == 200) {
3220
+            let list = data.list || [];
3221
+            if(list.length > 0){
3222
+              console.log(list[0]);
3223
+              this.incidentCategoryConfig = list[0];
3224
+            }else{
3225
+              this.incidentCategoryConfig = {};
3226
+            }
3227
+
3228
+            // 根据院区和故障现象带出责任部门,优先级,维修人/组
3229
+            this.incidentModel.duty = this.incidentCategoryConfig.dutyDTO;
3230
+            this.incidentModel.priorityId = this.incidentCategoryConfig.priority;
3231
+
3232
+            // 回显维修人/组
3233
+            this.showGroupOrUser();
3234
+          }
3235
+        });
3236
+    }else{
3237
+      // 回显维修人/组
3238
+      this.showGroupOrUser();
3239
+    }
3194
   }
3240
   }
3195
   // 申请科室列表(搜索)失去焦点的时候
3241
   // 申请科室列表(搜索)失去焦点的时候
3196
   changeApplicationDepartment(phone?) {
3242
   changeApplicationDepartment(phone?) {
@@ -3514,7 +3560,7 @@ export class FuwutaiComponent implements OnInit {
3514
       this.showPromptModal("操作", true, "", "");
3560
       this.showPromptModal("操作", true, "", "");
3515
     }else{
3561
     }else{
3516
       if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
3562
       if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
3517
-        // this.jry_shixian();
3563
+        this.jry_shixian();
3518
       }
3564
       }
3519
       this.newOrderShow = false; //关闭弹窗
3565
       this.newOrderShow = false; //关闭弹窗
3520
       this.newOrderShowOpen = false; //此时可出现新的弹窗
3566
       this.newOrderShowOpen = false; //此时可出现新的弹窗
@@ -4028,7 +4074,7 @@ export class FuwutaiComponent implements OnInit {
4028
   // 取消
4074
   // 取消
4029
   newOrderCancel(): void {
4075
   newOrderCancel(): void {
4030
     if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
4076
     if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
4031
-      // this.jry_shixian();
4077
+      this.jry_shixian();
4032
     }
4078
     }
4033
     this.newOrderShow = false;
4079
     this.newOrderShow = false;
4034
     this.newOrderShowOpen = false;
4080
     this.newOrderShowOpen = false;
@@ -4357,7 +4403,7 @@ export class FuwutaiComponent implements OnInit {
4357
     return timeStr;
4403
     return timeStr;
4358
   }
4404
   }
4359
 
4405
 
4360
-  // 菜单拖拽
4406
+  // 菜单拖拽-上下
4361
   moveMenu(nodeId) {
4407
   moveMenu(nodeId) {
4362
     let fixedMenu = document.getElementById(nodeId);
4408
     let fixedMenu = document.getElementById(nodeId);
4363
     if (!fixedMenu) return;
4409
     if (!fixedMenu) return;
@@ -4380,6 +4426,47 @@ export class FuwutaiComponent implements OnInit {
4380
     };
4426
     };
4381
   }
4427
   }
4382
 
4428
 
4429
+  // 处理人
4430
+  computedHandlerUser(incidentData){
4431
+    if(incidentData.state.value == 'pending' && incidentData.currentLog){
4432
+      return incidentData.currentLog.workerName;
4433
+    }
4434
+    if(incidentData.state.value != 'pending' && incidentData.handlingPersonnelUser){
4435
+      return incidentData.handlingPersonnelUser.name;
4436
+    }
4437
+  }
4438
+
4439
+  // 菜单拖拽-自由
4440
+  moveMenuAll(nodeId) {
4441
+    let fixedMenu = document.getElementById(nodeId);
4442
+    if (!fixedMenu) return;
4443
+    fixedMenu.onmousedown = function (e) {
4444
+      let x = e.clientX - fixedMenu.offsetLeft;
4445
+      let y = e.clientY - fixedMenu.offsetTop;
4446
+      document.onmousemove = function (ev) {
4447
+        fixedMenu.classList.add('maskFull');
4448
+        var _y = ev.clientY - y > 0 ? ev.clientY - y : 0;
4449
+        var h = window.innerHeight;
4450
+        if (_y > h - fixedMenu.clientHeight) {
4451
+          _y = h - fixedMenu.clientHeight;
4452
+        }
4453
+        fixedMenu.style.top = _y + "px";
4454
+
4455
+        var _x = ev.clientX - x > 0 ? ev.clientX - x : 0;
4456
+        var w = window.innerWidth;
4457
+        if (_x > w - fixedMenu.clientWidth) {
4458
+          _x = w - fixedMenu.clientWidth;
4459
+        }
4460
+        fixedMenu.style.right = w - _x - fixedMenu.clientWidth + "px";
4461
+      };
4462
+      document.onmouseup = function () {
4463
+        fixedMenu.classList.remove('maskFull');
4464
+        document.onmousemove = null;
4465
+        document.onmouseup = null;
4466
+      };
4467
+    };
4468
+  }
4469
+
4383
   @ViewChild("msgTemplate", { static: false }) msgTemplate: TemplateRef<any>; //消息通知模板
4470
   @ViewChild("msgTemplate", { static: false }) msgTemplate: TemplateRef<any>; //消息通知模板
4384
   // 消息提醒
4471
   // 消息提醒
4385
   createBasicNotification(msgs): void {
4472
   createBasicNotification(msgs): void {
@@ -4432,6 +4519,12 @@ export class FuwutaiComponent implements OnInit {
4432
 
4519
 
4433
   // 运维、配送工单切换
4520
   // 运维、配送工单切换
4434
   filterOrderList(type, state){
4521
   filterOrderList(type, state){
4522
+    if(!this.itsmData.mdv2Switch && this.hsmsData.hsmsSwitch){
4523
+      return;
4524
+    }
4525
+    if(this.itsmData.mdv2Switch && !this.hsmsData.hsmsSwitch){
4526
+      return;
4527
+    }
4435
     this.flagList[`${type}Flag${state}`] = !this.flagList[`${type}Flag${state}`];
4528
     this.flagList[`${type}Flag${state}`] = !this.flagList[`${type}Flag${state}`];
4436
     this.getOrderList(state, state === 1);
4529
     this.getOrderList(state, state === 1);
4437
   }
4530
   }