Parcourir la source

服务台建单

seimin il y a 7 mois
Parent
commit
34f20a2e9d

+ 36 - 0
src/app/components/incidentManagement/incident-direct-order/incident-direct-order.component.html

@@ -0,0 +1,36 @@
1
+<div class="save display_flex justify-content_flex-center align-items_center add">
2
+  <div class="modalBody">
3
+    <div class="title">直接解决<i class="icon_transport transport-guanbi" (click)="hideModal()"></i></div>
4
+    <div class="content">
5
+      <form nz-form [formGroup]="validateForm" class="addForm">
6
+        <nz-form-item [hidden]="itsmSimpleHandle.value == 1">
7
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="handleDescription">解决方案</nz-form-label>
8
+          <nz-form-control [nzSpan]="18" nzErrorTip="请填写解决方案!">
9
+            <textarea nz-input rows="4" placeholder="请填写解决方案" formControlName="handleDescription"></textarea>
10
+          </nz-form-control>
11
+        </nz-form-item>
12
+        <nz-form-item>
13
+          <nz-form-label [nzSpan]="6" nzRequired nzFor="closecode">处理结果</nz-form-label>
14
+          <nz-form-control [nzSpan]="18" nzErrorTip="请选择处理结果!">
15
+            <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="closecode" nzShowSearch
16
+              nzPlaceHolder="请选择处理结果" nzServerSearch>
17
+              <ng-container *ngFor="let data of closecodeList">
18
+                <nz-option *ngIf="!isLoading" [nzLabel]="data.name" [nzValue]="data.id"></nz-option>
19
+              </ng-container>
20
+              <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
21
+                <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
22
+              </nz-option>
23
+            </nz-select>
24
+          </nz-form-control>
25
+        </nz-form-item>
26
+      </form>
27
+    </div>
28
+    <div class="display_flex justify-content_flex-center">
29
+      <button nz-button nzType="primary" (click)="submitForm()"[nzLoading]="isLoading">确认</button>
30
+      <button nz-button nzType="default" class="btn cancel" (click)="hideModal()">取消</button>
31
+    </div>
32
+  </div>
33
+</div>
34
+
35
+<!-- 遮罩 -->
36
+<app-mask *ngIf="maskFlag"></app-mask>

+ 125 - 0
src/app/components/incidentManagement/incident-direct-order/incident-direct-order.component.less

@@ -0,0 +1,125 @@
1
+@import "../../../../../src/theme.less";
2
+.save {
3
+  position: fixed;
4
+  left: 0;
5
+  top: 0;
6
+  width: 100%;
7
+  height: 100%;
8
+  background: rgba(0, 0, 0, 0.4);
9
+  z-index: 999;
10
+
11
+  .modalBody {
12
+    width: 350px;
13
+    background: #fff;
14
+    border-radius: 5px;
15
+    padding: 10px 20px;
16
+    color: #333;
17
+
18
+    .title {
19
+      width: 100%;
20
+      text-align: center;
21
+      font-size: 18px;
22
+      position: relative;
23
+
24
+      i {
25
+        position: absolute;
26
+        right: 0;
27
+        top: 0;
28
+        font-size: 20px;
29
+        color: #666;
30
+        cursor: pointer;
31
+        padding: 0 5px;
32
+      }
33
+    }
34
+
35
+    .content {
36
+      width: 100%;
37
+      height: 117px;
38
+      background: #f9fafb;
39
+      border: 1px solid #e5e9ed;
40
+      border-radius: 5px;
41
+      overflow: hidden;
42
+      margin-top: 12px;
43
+
44
+      div {
45
+        text-align: center;
46
+        margin: 0;
47
+
48
+        &.icon {
49
+          margin-top: 17px;
50
+
51
+          i {
52
+            color: #34b349;
53
+            font-size: 30px !important;
54
+
55
+            &.transport-wenhao {
56
+              color: #f5a523;
57
+            }
58
+
59
+            &.transport-shibai {
60
+              color: #ff3a52;
61
+            }
62
+          }
63
+        }
64
+
65
+        &.defeat {
66
+          color: #333;
67
+          font-size: 16px;
68
+        }
69
+
70
+        &:nth-child(3) {
71
+          font-size: 14px;
72
+          color: #666;
73
+        }
74
+      }
75
+    }
76
+
77
+    button {
78
+      margin-top: 10px;
79
+
80
+      &.btn {
81
+        margin-left: 8px;
82
+      }
83
+    }
84
+  }
85
+
86
+  // 新增
87
+  &.add {
88
+    .modalBody {
89
+      width: 480px;
90
+      height: auto;
91
+
92
+      .content {
93
+        width: 100%;
94
+        height: auto;
95
+        padding: 19px 14px 0 14px;
96
+        max-height: 500px;
97
+        overflow-y: auto;
98
+
99
+        .addForm {
100
+          .ant-form-item {
101
+            margin-bottom: 14px;
102
+
103
+            .ant-form-item-label {
104
+              text-align: left;
105
+            }
106
+          }
107
+        }
108
+
109
+        .editForm {
110
+          .ant-form-item {
111
+            margin-bottom: 14px;
112
+
113
+            .ant-form-item-label {
114
+              line-height: 0;
115
+            }
116
+          }
117
+        }
118
+      }
119
+
120
+      button:nth-child(1) {
121
+        margin-right: 20px;
122
+      }
123
+    }
124
+  }
125
+}

+ 120 - 0
src/app/components/incidentManagement/incident-direct-order/incident-direct-order.component.ts

@@ -0,0 +1,120 @@
1
+import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';
2
+import { MainService } from '../../../services/main.service';
3
+import { Router, ActivatedRoute } from '@angular/router';
4
+import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
5
+import { NzMessageService } from 'ng-zorro-antd';
6
+import { ToolService } from 'src/app/services/tool.service';
7
+import { FormGroup, Validators, FormBuilder, FormControl } from '@angular/forms';
8
+
9
+@Component({
10
+  selector: 'app-incident-direct-order',
11
+  templateUrl: './incident-direct-order.component.html',
12
+  styleUrls: ['./incident-direct-order.component.less']
13
+})
14
+export class IncidentDicrectOrderComponent implements OnInit {
15
+  @ViewChild("osComponentRef1", {
16
+    read: OverlayScrollbarsComponent,
17
+    static: false,
18
+  })
19
+  osComponentRef1: OverlayScrollbarsComponent;
20
+  @Output() closeModelHs = new EventEmitter<any>();//1.组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件
21
+  @Output() confirmModelHs = new EventEmitter<any>();//1.组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件
22
+
23
+  @Input() id: any;
24
+
25
+  constructor(
26
+    private mainService: MainService,
27
+    private router: Router,
28
+    private route: ActivatedRoute,
29
+    private message: NzMessageService,
30
+    private tool: ToolService,
31
+    private fb: FormBuilder,
32
+  ) { }
33
+
34
+  isLoading = false;
35
+  hosId:any;
36
+
37
+  ngOnInit() {
38
+    this.hosId = this.tool.getCurrentHospital().id;
39
+    this.initForm();
40
+    this.getClosecodes();
41
+    this.getHospitalConfig();
42
+  }
43
+
44
+  // 初始化新增form表单
45
+  validateForm: FormGroup; //新增/编辑表单
46
+  initForm() {
47
+    this.validateForm = this.fb.group({
48
+      handleDescription: [null],//解决方案
49
+      closecode: [null, [Validators.required]],//处理结果
50
+    });
51
+    console.log(this.validateForm.controls)
52
+  }
53
+
54
+  requiredChange(name:string, required: boolean): void {
55
+    if (!required) {
56
+      this.validateForm.get(name)!.clearValidators();
57
+      this.validateForm.get(name)!.markAsPristine();
58
+    } else {
59
+      this.validateForm.get(name)!.setValidators(Validators.required);
60
+      this.validateForm.get(name)!.markAsDirty();
61
+    }
62
+    this.validateForm.get(name)!.updateValueAndValidity();
63
+  }
64
+
65
+  // 获取处理结果列表
66
+  closecodeList:any[] = [];
67
+  getClosecodes(){
68
+    this.mainService.getDictionary("list", "incident_closecode").subscribe((data) => {
69
+      this.closecodeList = data || [];
70
+    });
71
+  }
72
+
73
+  // 获取院区配置信息
74
+  itsmSimpleHandle:any = {};//是否简单处理
75
+  getHospitalConfig() {
76
+    let postData = {
77
+      idx: 0,
78
+      sum: 9999,
79
+      hospitalConfig: {
80
+        model: "itsm",
81
+        hosId: this.hosId,
82
+      },
83
+    }
84
+    this.mainService
85
+      .getFetchDataList("simple/data", "hospitalConfig", postData)
86
+      .subscribe((result) => {
87
+        let list = result.list || [];
88
+        this.itsmSimpleHandle = list.find(v => v.key == 'itsmSimpleHandle') || {};
89
+        if(this.itsmSimpleHandle.value != 1){
90
+          this.requiredChange('handleDescription', true);
91
+        }
92
+      });
93
+  }
94
+
95
+  // 关闭弹窗
96
+  hideModal() {
97
+    this.closeModelHs.emit(JSON.stringify({ show: false }));//emits(向上弹射)事件
98
+  }
99
+
100
+  // 表单提交
101
+  maskFlag:any = false;
102
+  submitForm(): void {
103
+    for (const i in this.validateForm.controls) {
104
+      this.validateForm.controls[i].markAsDirty();
105
+      this.validateForm.controls[i].updateValueAndValidity();
106
+    }
107
+    if (this.validateForm.invalid) {
108
+      return;
109
+    }
110
+
111
+    this.confirmModelHs.emit({
112
+      handleDescription: this.validateForm.value.handleDescription,
113
+      closecode: this.validateForm.value.closecode,
114
+    });//emits(向上弹射)事件
115
+  }
116
+}
117
+
118
+
119
+
120
+

+ 20 - 0
src/app/components/incidentManagement/incident-direct-order/incident-direct-order.module.ts

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

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

@@ -53,7 +53,7 @@ export class KnowledgeLookComponent implements OnInit {
53 53
 				this.getFile()
54 54
 				let data = res.list
55 55
 				this.detailData = data
56
-				let content = data[0].content
56
+				let content = data.length ? data[0].content : ''
57 57
 				if(content){
58 58
 					this.richText = this.sanitizer.bypassSecurityTrustHtml(content);
59 59
 				}else{
@@ -67,7 +67,7 @@ export class KnowledgeLookComponent implements OnInit {
67 67
 					}
68 68
 				}
69 69
 				this.lookData = data[0]
70
-				this.solutionLogs = data[0].solutionLogs
70
+				this.solutionLogs = data.length ? data[0].solutionLogs : []
71 71
 				this.stepLength = this.solutionLogs.length
72 72
 				this.isSpinning = false
73 73
 			});

+ 4 - 4
src/app/components/order-scope/order-scope.component.html

@@ -15,14 +15,14 @@
15 15
         <div nz-row>
16 16
           <div nz-col nzSpan="4">是否不限制部门:</div>
17 17
           <div nz-col nzSpan="20">
18
-            <nz-radio-group class="w100" [(ngModel)]="allDuty" [nzDisabled]="!activeScopeTab.checked">
18
+            <nz-radio-group class="w100" [(ngModel)]="allDuty" (ngModelChange)="changeAllDuty($event)" [nzDisabled]="!activeScopeTab.checked">
19 19
               <label nz-radio [nzValue]="1">是</label>
20 20
               <label nz-radio [nzValue]="0">否</label>
21 21
             </nz-radio-group>
22 22
           </div>
23 23
         </div>
24 24
         <div nz-row>
25
-          <div nz-col nzSpan="3">运维部门:</div>
25
+          <div nz-col nzSpan="3" [ngClass]="{ required: allDuty === 0 }">运维部门:</div>
26 26
           <div nz-col nzSpan="21">
27 27
             <nz-checkbox-group *ngIf="allDuty === 0" class="w100" style="display: flex; flex-wrap: wrap; gap:8px;" [nzDisabled]="!activeScopeTab.checked" [(ngModel)]="itsmCheckedHos" (ngModelChange)="changeItsmHospital($event)"></nz-checkbox-group>
28 28
           </div>
@@ -50,9 +50,9 @@
50 50
       <!-- 配送 -->
51 51
       <div class="conditions" *ngIf="activeScopeTab.value == 2">
52 52
         <div nz-row>
53
-          <div nz-col nzSpan="3">院区:</div>
53
+          <div nz-col nzSpan="3" class="required">院区:</div>
54 54
           <div nz-col nzSpan="21">
55
-            <nz-radio-group class="w100" style="display: flex; flex-wrap: wrap; gap:8px;" [(ngModel)]="checkedHos" [nzDisabled]="!activeScopeTab.checked">
55
+            <nz-radio-group class="w100" style="display: flex; flex-wrap: wrap; gap:8px;" [(ngModel)]="checkedHos" [nzDisabled]="!activeScopeTab.checked" (ngModelChange)="changeCheckedHos($event)">
56 56
               <label *ngFor="let data of hosList" nz-radio [nzValue]="data.id">{{ data.hosName }}</label>
57 57
             </nz-radio-group>
58 58
           </div>

+ 14 - 0
src/app/components/order-scope/order-scope.component.less

@@ -3,6 +3,20 @@
3 3
   ::ng-deep .ant-checkbox-wrapper + .ant-checkbox-wrapper{
4 4
     margin-left: 0!important;
5 5
   }
6
+  .required{
7
+    position: relative;
8
+    &::before{
9
+      font-family: icon_transport;
10
+      font-size: 10px;
11
+      content:'\e606';
12
+      color: red;
13
+      position: absolute;
14
+      right: 100%;
15
+      top: 50%;
16
+      transform: translateY(-50%);
17
+      margin-right: 2px;
18
+    }
19
+  }
6 20
   // 撤回工单
7 21
   .recallOrder {
8 22
     position: fixed;

+ 40 - 8
src/app/components/order-scope/order-scope.component.ts

@@ -2,6 +2,7 @@ import { Component, OnInit, Output, Input } from '@angular/core';
2 2
 import { EventEmitter } from '@angular/core';
3 3
 import { MainService } from 'src/app/services/main.service';
4 4
 import { ToolService } from 'src/app/services/tool.service';
5
+import { NzMessageService } from 'ng-zorro-antd';
5 6
 
6 7
 @Component({
7 8
   selector: 'app-order-scope',
@@ -24,6 +25,7 @@ export class OrderScopeComponent implements OnInit {
24 25
   constructor(
25 26
     private mainService: MainService,
26 27
     private tool: ToolService,
28
+    private message: NzMessageService,
27 29
   ) { }
28 30
 
29 31
   user = JSON.parse(localStorage.getItem("user")); //用户信息
@@ -42,7 +44,8 @@ export class OrderScopeComponent implements OnInit {
42 44
 
43 45
   initHsms(){
44 46
     console.log('hsmsData:', this.hsmsData);
45
-    this.scopeTabs[0].checked = this.hsmsData.hsmsSwitch;
47
+    let index = this.scopeTabs.findIndex(v => v.value === 2);
48
+    this.scopeTabs[index].checked = this.hsmsData.hsmsSwitch;
46 49
     this.checkedHos = this.hsmsData.checkedHos;
47 50
     this.orderScopeRadio = this.hsmsData.orderScopeRadio;
48 51
     this.initOrderScope();
@@ -51,7 +54,8 @@ export class OrderScopeComponent implements OnInit {
51 54
 
52 55
   initItsm(){
53 56
     console.log('itsmData', this.itsmData);
54
-    this.scopeTabs[1].checked = this.itsmData.mdv2Switch;
57
+    let index = this.scopeTabs.findIndex(v => v.value === 1);
58
+    this.scopeTabs[index].checked = this.itsmData.mdv2Switch;
55 59
     this.itsmOrderScopeRadio = this.itsmData.orderScopeRadio;
56 60
     this.itsmInitOrderScope();
57 61
     this.itsmGetOrderScope();
@@ -177,6 +181,11 @@ export class OrderScopeComponent implements OnInit {
177 181
 
178 182
     }
179 183
 
184
+    // 修改院区
185
+    changeCheckedHos(e){
186
+      this.getTypeAndGroup();
187
+    }
188
+
180 189
     // 工单类型
181 190
     checkedTypes = []; //已选中taskTypes的ID数组
182 191
     changeType: boolean = false; //是否改变工单类型
@@ -261,12 +270,33 @@ export class OrderScopeComponent implements OnInit {
261 270
       for (let k1 in this.initGroups) {
262 271
         this.initGroups[k1] = false;
263 272
       }
264
-      this.orderScopeRadio = "0";
273
+      // this.orderScopeRadio = "0";
274
+    }
275
+
276
+    // 切换是否不限制部门
277
+    changeAllDuty(e){
278
+      console.log(e);
279
+      this.itsmCheckedHos.forEach(v => (v.checked = false));
280
+      this.itsmCheckedGroup = [];
265 281
     }
266 282
 
267 283
     // 保存工单范围设置
268 284
     saveLoading: boolean = false; //保存按钮loading状态
269 285
     saveOrderScope() {
286
+      // 配送的院区必填
287
+      let value2 = this.scopeTabs.find(v => v.value == 2 );
288
+      if(value2.checked && !this.checkedHos){
289
+        this.message.warning('【配送】的院区必填!')
290
+        return;
291
+      }
292
+
293
+      // 运维限制部门的时候,部门必填
294
+      let value1 = this.scopeTabs.find(v => v.value == 1 );
295
+      if(value1.checked && !this.itsmCheckedHos.filter(v => v.checked).length && this.allDuty != 1){
296
+        this.message.warning('【运维】的部门必填!')
297
+        return;
298
+      }
299
+
270 300
       this.saveLoading = true;
271 301
       let types = [];
272 302
       if (!this.changeType) {
@@ -317,19 +347,21 @@ export class OrderScopeComponent implements OnInit {
317 347
           userId: this.user.user.id,
318 348
           mdv2Switch: Number(itsm.checked),
319 349
           hsmsSwitch: Number(hsms.checked),
350
+          range: 0,
351
+          dutyRange: 0,
320 352
         },
321 353
       };
322 354
 
323 355
       if(itsm.checked){
324 356
         postData.workerOrderScope.allDuty = this.allDuty;
325
-        postData.workerOrderScope.dutyIds = this.itsmCheckedHos.filter(v => v.checked).map(v => v.value).toString();
326
-        postData.workerOrderScope.dutyGroupIds = this.itsmCheckedGroup.filter(v => v.checked).map(v => v.value).toString();
357
+        postData.workerOrderScope.dutyIds = this.itsmCheckedHos.filter(v => v.checked).map(v => v.value).toString() || undefined;
358
+        postData.workerOrderScope.dutyGroupIds = this.itsmCheckedGroup.filter(v => v.checked).map(v => v.value).toString() || undefined;
327 359
         postData.workerOrderScope.dutyRange = this.itsmOrderScopeRadio - 0;
328 360
       }
329 361
       if(hsms.checked){
330
-        postData.workerOrderScope.hospitalId = { id: this.checkedHos - 0 };
331
-        postData.workerOrderScope.typeIds = typesId;
332
-        postData.workerOrderScope.groupIds = groupsId;
362
+        postData.workerOrderScope.hospitalId = this.checkedHos ? { id: this.checkedHos - 0 } : undefined;
363
+        postData.workerOrderScope.typeIds = typesId || undefined;
364
+        postData.workerOrderScope.groupIds = groupsId || undefined;
333 365
         postData.workerOrderScope.range = this.orderScopeRadio - 0;
334 366
       }
335 367
       if (this.user.user.scope && this.user.user.scope.id) {

+ 17 - 0
src/app/pipes/string-to-first-name.pipe.ts

@@ -0,0 +1,17 @@
1
+import { Pipe, PipeTransform } from '@angular/core';
2
+
3
+@Pipe({
4
+  name: 'stringToFirstValue'
5
+})
6
+export class StringToFirstValuePipe implements PipeTransform {
7
+
8
+  transform(value: string, ...args: any[]): any {
9
+    if(value){
10
+      return value.split(',')[0];
11
+    }else{
12
+      return '';
13
+    }
14
+
15
+  }
16
+
17
+}

+ 2 - 2
src/app/services/tool.service.ts

@@ -241,8 +241,8 @@ export class ToolService {
241 241
         case "assign":
242 242
           coopBtns.assign = true; //指派
243 243
           break;
244
-        case "postpone":
245
-          coopBtns.postpone = true; //延期处理
244
+        case "handle":
245
+          coopBtns.handle = true; //处理
246 246
           break;
247 247
         case "settings":
248 248
           coopBtns.settings = true; //设置

+ 3 - 0
src/app/share/share.module.ts

@@ -57,6 +57,7 @@ import { wangEditorComponent } from './wang-editor/wang-editor.component';
57 57
 import { StripHtmlPipe } from '../pipes/strip-html.pipe.';
58 58
 import { PathologyAddComponent } from './pathology-add/pathology-add.component';
59 59
 import { PathologyDetailComponent } from './pathology-detail/pathology-detail.component';
60
+import { StringToFirstValuePipe } from '../pipes/string-to-first-name.pipe';
60 61
 
61 62
 @NgModule({
62 63
   declarations: [
@@ -91,6 +92,7 @@ import { PathologyDetailComponent } from './pathology-detail/pathology-detail.co
91 92
 		PathologyDetailComponent,
92 93
     DateTransformPipe,
93 94
     DataToNamePipe,
95
+    StringToFirstValuePipe,
94 96
     DialogDeleteComponent,
95 97
     DialogBxComponent,
96 98
     DialogSurgeryComponent,
@@ -162,6 +164,7 @@ import { PathologyDetailComponent } from './pathology-detail/pathology-detail.co
162 164
     OverlayscrollbarsModule,
163 165
     DateTransformPipe,
164 166
     DataToNamePipe,
167
+    StringToFirstValuePipe,
165 168
     DialogDeleteComponent,
166 169
     DialogBxComponent,
167 170
     DialogSurgeryComponent,

Fichier diff supprimé car celui-ci est trop grand
+ 913 - 914
src/app/views/fuwutai/fuwutai.component.html


+ 173 - 31
src/app/views/fuwutai/fuwutai.component.less

@@ -6,8 +6,42 @@
6 6
   padding: 16px;
7 7
   display: flex;
8 8
   flex-direction: column;
9
-  ::ng-deep .ant-form-item-label {
10
-    line-height: 24px !important;
9
+  ::ng-deep .yyTime .ant-form-item-label {
10
+    line-height: 24px;
11
+  }
12
+}
13
+
14
+.anticon-plus{
15
+  font-size: 32px;
16
+  margin-bottom: 8px;
17
+}
18
+
19
+.thead {
20
+  background-image: linear-gradient(to right, @bg-start, @bg-end);
21
+
22
+  th {
23
+    background: transparent;
24
+    color: #fff;
25
+    text-align: center;
26
+  }
27
+  td{
28
+    text-align: center;
29
+  }
30
+}
31
+
32
+.required{
33
+  position: relative;
34
+  padding-left: 12px;
35
+  box-sizing: content-box;
36
+  &::before{
37
+    font-family: icon_transport;
38
+    font-size: 10px;
39
+    content:'\e606';
40
+    color: red;
41
+    position: absolute;
42
+    left: 0;
43
+    top: 50%;
44
+    transform: translateY(-50%);
11 45
   }
12 46
 }
13 47
 
@@ -673,6 +707,12 @@
673 707
     white-space: nowrap;
674 708
     overflow: hidden;//文本超出隐藏
675 709
     text-overflow: ellipsis;//文本超出省略号替代
710
+    &.noEllipsis{
711
+      white-space: normal;
712
+      overflow: visible;
713
+      text-overflow: inherit;
714
+      word-break: break-all;
715
+    }
676 716
   }
677 717
 
678 718
   .weifenpai .didian .right {
@@ -1681,23 +1721,23 @@
1681 1721
     width: 100%;
1682 1722
     height: 100%;
1683 1723
     background: rgba(0, 0, 0, 0.5);
1684
-    z-index: 999;
1724
+    z-index: 99;
1685 1725
 
1686 1726
     .modalBody {
1687
-      width: 1300px;
1727
+      width: 1318px;
1688 1728
       // height: 580px;
1689 1729
       background: #fff;
1690 1730
       border-radius: 5px;
1691
-      padding: 12px 20px;
1731
+      // padding: 12px 20px;
1732
+      padding: 12px 0;
1692 1733
       color: #333;
1693 1734
       font-size: 14px;
1694 1735
 
1695 1736
       .title {
1696 1737
         font-size: 18px;
1697
-        text-align: center;
1738
+        // text-align: center;
1698 1739
         line-height: 24px;
1699
-        margin: 0;
1700
-        margin-bottom: 12px;
1740
+        margin: 6px 24px 18px;
1701 1741
         position: relative;
1702 1742
 
1703 1743
         i {
@@ -1709,14 +1749,30 @@
1709 1749
           cursor: pointer;
1710 1750
           padding: 0 5px;
1711 1751
         }
1752
+
1753
+        .newTop{
1754
+          display: flex;
1755
+          align-items: center;
1756
+          font-size: 14px;
1757
+          .name{
1758
+            font-weight: bold;
1759
+            margin-right: 48px;
1760
+          }
1761
+          .newTopItem{
1762
+            margin-right: 24px;
1763
+          }
1764
+        }
1712 1765
       }
1713 1766
 
1714 1767
       .content {
1715 1768
         // width: 960px;
1716
-        height: 474px;
1717
-        border: 1px solid #e5e9ed;
1718
-        background: #f9fafb;
1719
-        border-radius: 5px;
1769
+        // height: 474px;
1770
+        height: 603px;
1771
+        // border: 1px solid #e5e9ed;
1772
+        border-top: 1px solid #e5e9ed;
1773
+        border-bottom: 1px solid #e5e9ed;
1774
+        // background: #f9fafb;
1775
+        // border-radius: 5px;
1720 1776
         overflow: hidden;
1721 1777
 
1722 1778
         .grayFont {
@@ -1744,8 +1800,7 @@
1744 1800
             // tab 任务类型
1745 1801
             .tabs {
1746 1802
               display: flex;
1747
-              height: 41px;
1748
-              border-top: 1px solid #e5e9ed;
1803
+              height: 37px;
1749 1804
               border-bottom: 1px solid #e5e9ed;
1750 1805
               background-color: #fff;
1751 1806
               .tabs__inner {
@@ -1757,16 +1812,26 @@
1757 1812
                   display: flex;
1758 1813
                   transition: all 1s;
1759 1814
                   .tab {
1760
-                    width: 93px;
1761
-                    height: 41px;
1815
+                    width: 120px;
1816
+                    height: 36px;
1762 1817
                     text-align: center;
1763
-                    line-height: 41px;
1818
+                    line-height: 36px;
1764 1819
                     background: #fff;
1765
-                    border-right: 1px solid #e5e9ed;
1766 1820
                     cursor: pointer;
1821
+                    font-size: 14px;
1822
+                    position: relative;
1767 1823
 
1768 1824
                     &.checked {
1769
-                      background: #e5e9ed;
1825
+                      color: @primary-color;
1826
+                      &::after{
1827
+                        content: '';
1828
+                        position: absolute;
1829
+                        bottom: 0;
1830
+                        left: 0;
1831
+                        width: 100%;
1832
+                        height: 1px;
1833
+                        background-color: @primary-color;
1834
+                      }
1770 1835
                     }
1771 1836
                   }
1772 1837
                 }
@@ -1805,9 +1870,72 @@
1805 1870
             .bottomWrap {
1806 1871
               flex: 1;
1807 1872
               height: 300px;
1873
+              .bottom_req{
1874
+                height: 100%;
1875
+                padding: 16px;
1876
+                ::ng-deep .ant-calendar-picker{
1877
+                  width: 100%!important;
1878
+                }
1879
+                .row{
1880
+                  display: flex;
1881
+                  align-items: center;
1882
+                  gap: 8px;
1883
+                  margin-bottom: 16px;
1884
+                  &.gap8{
1885
+                    gap: 8px;;
1886
+                  }
1887
+                  &:last-of-type{
1888
+                    margin-bottom: 0;
1889
+                  }
1890
+                  .col{
1891
+                    flex: 1;
1892
+                    flex-shrink: 0;
1893
+                    display: flex;
1894
+                    align-items: center;
1895
+                    word-break: break-all;
1896
+                    &.alignItemsStart{
1897
+                      align-items: flex-start;
1898
+                    }
1899
+                    &.flex2{
1900
+                      flex: 2;
1901
+                    }
1902
+                    &.flex3{
1903
+                      flex: 3;
1904
+                    }
1905
+                    &.flex4{
1906
+                      flex: 4;
1907
+                    }
1908
+                    &.flex5{
1909
+                      flex: 5;
1910
+                    }
1911
+                    &.flex6{
1912
+                      flex: 6;
1913
+                    }
1914
+                    &.flex7{
1915
+                      flex: 7;
1916
+                    }
1917
+                    .name{
1918
+                      flex-shrink: 0;
1919
+                      width: 6em;
1920
+                      text-align-last: justify;
1921
+                      padding-left: 12px;
1922
+                      box-sizing: content-box;
1923
+                    }
1924
+                    em{
1925
+                      font-style: normal;
1926
+                      cursor: pointer;
1927
+                      margin-left: 8px;
1928
+                      font-size: 12px;
1929
+                      border-bottom: 1px solid @primary-color;
1930
+                      color: @primary-color;
1931
+                    }
1932
+                  }
1933
+                }
1934
+              }
1808 1935
               .bottom {
1809 1936
                 padding: 0 36px;
1810
-                height: 310px;
1937
+                // height: 310px;
1938
+                height: 567px;
1811 1939
                 overflow-y: auto;
1812 1940
                 .ant-form {
1813 1941
                   height: 100%;
@@ -1863,7 +1991,8 @@
1863 1991
                 }
1864 1992
 
1865 1993
                 .radios {
1866
-                  height: 96px;
1994
+                  // height: 96px;
1995
+                  height: 267px;
1867 1996
                   width: 100%;
1868 1997
                   overflow-y: auto;
1869 1998
                   padding: 10px 18px;
@@ -1913,8 +2042,8 @@
1913 2042
             .rightTitle {
1914 2043
               position: absolute;
1915 2044
               width: 100%;
1916
-              height: 46px;
1917
-              line-height: 46px;
2045
+              height: 37px;
2046
+              line-height: 37px;
1918 2047
               font-size: 16px;
1919 2048
               margin: 0;
1920 2049
               border-bottom: 1px solid #e5e9ed;
@@ -1923,13 +2052,26 @@
1923 2052
               display: flex;
1924 2053
               align-items: center;
1925 2054
               .rightTitle_tab {
1926
-                height: 100%;
1927
-                padding: 0 16px;
1928
-                border-right: 1px solid #e5e9ed;
2055
+                width: 120px;
2056
+                height: 36px;
2057
+                text-align: center;
2058
+                line-height: 36px;
2059
+                background: #fff;
1929 2060
                 cursor: pointer;
1930
-                background-color: #fff;
2061
+                font-size: 14px;
2062
+                position: relative;
2063
+                overflow: hidden;
1931 2064
                 &.active {
1932
-                  background-color: #f9fafb;
2065
+                  color: @primary-color;
2066
+                  &::after{
2067
+                    content: '';
2068
+                    position: absolute;
2069
+                    bottom: 0;
2070
+                    left: 0;
2071
+                    width: 100%;
2072
+                    height: 1px;
2073
+                    background-color: @primary-color;
2074
+                  }
1933 2075
                 }
1934 2076
               }
1935 2077
             }
@@ -1947,9 +2089,9 @@
1947 2089
     }
1948 2090
 
1949 2091
     .btns {
2092
+      padding-top: 12px;
1950 2093
       .btn {
1951
-        margin: 9px;
1952
-        margin-bottom: 0;
2094
+        margin: 0 4px;
1953 2095
       }
1954 2096
     }
1955 2097
   }
@@ -1974,7 +2116,7 @@
1974 2116
 
1975 2117
       .title {
1976 2118
         width: 100%;
1977
-        text-align: center;
2119
+        // text-align: center;
1978 2120
         font-size: 18px;
1979 2121
         position: relative;
1980 2122
 

Fichier diff supprimé car celui-ci est trop grand
+ 1126 - 81
src/app/views/fuwutai/fuwutai.component.ts


+ 4 - 0
src/app/views/fuwutai/fuwutai.module.ts

@@ -7,6 +7,8 @@ import { ShareModule } from 'src/app/share/share.module';
7 7
 
8 8
 import { NgxPrintModule } from 'ngx-print';
9 9
 import { OrderScopeModule } from 'src/app/components/order-scope/order-scope.module';
10
+import { IncidentDicrectOrderModule } from 'src/app/components/incidentManagement/incident-direct-order/incident-direct-order.module';
11
+import { KnowledgeLookModule } from 'src/app/components/knowledge-look/knowledge-look.module';
10 12
 
11 13
 
12 14
 @NgModule({
@@ -19,6 +21,8 @@ import { OrderScopeModule } from 'src/app/components/order-scope/order-scope.mod
19 21
     FuwutaiRoutingModule,
20 22
     NgxPrintModule,
21 23
     OrderScopeModule,
24
+    IncidentDicrectOrderModule,
25
+    KnowledgeLookModule,
22 26
   ]
23 27
 })
24 28
 export class FuwutaiModule { }

+ 2 - 2
src/app/views/incident-management/incident-management.component.ts

@@ -245,7 +245,7 @@ export class IncidentManagementComponent implements OnInit {
245 245
 
246 246
   // 是否显示处理按钮
247 247
   computedHandle(data){
248
-    return data.state.value === 'handler' && data.handlingPersonnelUser && data.handlingPersonnelUser.id == this.tool.getCurrentUserId() && data.deleteFlag !== 1;
248
+    return this.coopBtns.handle && data.state.value === 'handler' && data.handlingPersonnelUser && data.handlingPersonnelUser.id == this.tool.getCurrentUserId() && data.deleteFlag !== 1;
249 249
   }
250 250
 
251 251
   // 是否显示换人处理按钮
@@ -255,7 +255,7 @@ export class IncidentManagementComponent implements OnInit {
255 255
 
256 256
   // 是否显示延期处理按钮
257 257
   computedPostpone(data){
258
-    return this.coopBtns.postpone && data.state.value == 'handler' && data.handlingPersonnelUser && data.handlingPersonnelUser.id == this.tool.getCurrentUserId() && data.deleteFlag !== 1;
258
+    return data.state.value == 'handler' && data.handlingPersonnelUser && data.handlingPersonnelUser.id == this.tool.getCurrentUserId() && data.deleteFlag !== 1;
259 259
   }
260 260
 
261 261
   // 是否显示设置责任部门按钮