瀏覽代碼

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

maotao 4 月之前
父節點
當前提交
6af989ff8c
共有 33 個文件被更改,包括 2159 次插入1086 次删除
  1. 68 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.html
  2. 178 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.less
  3. 257 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.ts
  4. 20 0
      src/app/components/configurationCenter/configuration-inspect/configuration-inspect.module.ts
  5. 85 0
      src/app/components/display-form/display-form.component.html
  6. 184 0
      src/app/components/display-form/display-form.component.less
  7. 125 0
      src/app/components/display-form/display-form.component.ts
  8. 20 0
      src/app/components/display-form/display-form.module.ts
  9. 34 13
      src/app/components/incidentManagement/incident-create/incident-create.component.html
  10. 33 7
      src/app/components/incidentManagement/incident-create/incident-create.component.less
  11. 89 5
      src/app/components/incidentManagement/incident-create/incident-create.component.ts
  12. 4 0
      src/app/components/incidentManagement/incident-detail/incident-detail.component.html
  13. 19 0
      src/app/components/incidentManagement/incident-detail/incident-detail.component.ts
  14. 1 1
      src/app/components/incidentManagement/incident-ser-visit/incident-ser-visit.component.html
  15. 9 4
      src/app/services/main.service.ts
  16. 1 1
      src/app/share/detail-patients/detail-patients.component.html
  17. 1 1
      src/app/share/order-detail/order-detail.component.html
  18. 115 501
      src/app/views/fuwutai/fuwutai.component.html
  19. 58 8
      src/app/views/fuwutai/fuwutai.component.less
  20. 255 88
      src/app/views/fuwutai/fuwutai.component.ts
  21. 2 0
      src/app/views/fuwutai/fuwutai.module.ts
  22. 167 418
      src/app/views/hushijiandan/hushijiandan.component.html
  23. 163 6
      src/app/views/hushijiandan/hushijiandan.component.less
  24. 84 8
      src/app/views/hushijiandan/hushijiandan.component.ts
  25. 6 1
      src/app/views/incident-management/incident-management.component.html
  26. 5 0
      src/app/views/page-config/page-config.component.html
  27. 2 0
      src/app/views/page-config/page-config.module.ts
  28. 58 10
      src/app/views/qrcode-configuration/qrcode-configuration.component.html
  29. 18 0
      src/app/views/qrcode-configuration/qrcode-configuration.component.less
  30. 66 1
      src/app/views/qrcode-configuration/qrcode-configuration.component.ts
  31. 22 9
      src/app/views/qrcode-configuration/qrcode-configuration.service.ts
  32. 4 4
      src/app/views/task-type-management/task-type-management.component.html
  33. 6 0
      src/common.less

+ 68 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.html

@@ -0,0 +1,68 @@
1
+<div class="content" id="dictionary">
2
+  <div class="contentInner">
3
+    <div class="address">
4
+      <overlay-scrollbars #osComponentRef1 class="contentBody">
5
+        <div class="contentItem" [title]="item.name" [ngClass]="{ active: item.id === activeDictionaryKey.id }" (click)="clickDictionaryKey(item)" *ngFor="let item of dictionaryKeyList">{{ item.name }}</div>
6
+      </overlay-scrollbars>
7
+    </div>
8
+    <div class="addressAssign">
9
+      <div class="contentBody">
10
+        <div class="dictionaryRow">
11
+          <div class="orders">排序号</div>
12
+          <div class="name">注意事项</div>
13
+          <div class="value">备注</div>
14
+        </div>
15
+        <overlay-scrollbars #osComponentRef2 class="contentBody2">
16
+          <form nz-form [formGroup]="validateDictionaryForm" class="w100">
17
+            <div class="dictionaryRow" *ngFor="let data of dictionaryList;let i = index;">
18
+              <div class="orders">
19
+                <nz-form-item>
20
+                  <nz-form-control [nzSpan]="24" nzErrorTip="请输入排序号!">
21
+                    <nz-input-group>
22
+                      <nz-input-number [formControlName]="'orders_' + data.id" class="ordersInput"></nz-input-number>
23
+                    </nz-input-group>
24
+                  </nz-form-control>
25
+                </nz-form-item>
26
+              </div>
27
+              <div class="name">
28
+                <nz-form-item class="w100">
29
+                  <nz-form-control [nzSpan]="24" nzErrorTip="请输入注意事项!">
30
+                    <nz-input-group>
31
+                      <input [formControlName]="'name_' + data.id" nz-input class="nameInput">
32
+                    </nz-input-group>
33
+                  </nz-form-control>
34
+                </nz-form-item>
35
+              </div>
36
+              <div class="value">
37
+                <nz-form-item>
38
+                  <nz-form-control [nzSpan]="24" nzErrorTip="请输入备注!">
39
+                    <nz-input-group>
40
+                      <input [formControlName]="'value_' + data.id" nz-input class="valueInput">
41
+                    </nz-input-group>
42
+                  </nz-form-control>
43
+                </nz-form-item>
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>
47
+            </div>
48
+          </form>
49
+        </overlay-scrollbars>
50
+      </div>
51
+      <div class="contentBtns">
52
+        <button nz-button nzType="primary" class="ml8" (click)="saveDictionary()">保存</button>
53
+      </div>
54
+    </div>
55
+  </div>
56
+</div>
57
+
58
+<!-- 操作成功/失败提示框 -->
59
+<app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
60
+  [info]="promptInfo">
61
+</app-prompt-modal>
62
+
63
+<!-- 删除模态框 -->
64
+<app-dialog-delete [delModal]="delModal" (hideDelModalEvent)="hideDelModal()" [btnLoading]="btnLoading"
65
+(confirmDelEvent)="confirmDel()" [content]="tipsMsg1"></app-dialog-delete>
66
+
67
+<!-- 遮罩 -->
68
+<app-mask *ngIf="maskFlag"></app-mask>

+ 178 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.less

@@ -0,0 +1,178 @@
1
+@import "../../../../../src/theme.less";
2
+:host {
3
+  height: 100%;
4
+  display: flex;
5
+  flex-direction: column;
6
+  justify-content: space-between;
7
+  background-color: #F0F2F5;
8
+  .list-template__nzTable,
9
+  .list-template__bottom{
10
+    padding: 0!important;
11
+    border: none!important;
12
+    background: #fff!important;
13
+  }
14
+  .list-template{
15
+    width: 100%!important;
16
+    height: 100%!important;
17
+  }
18
+  #dictionary{
19
+    margin: 24px 16px;
20
+    .addressAssign{
21
+      flex: 7;
22
+    }
23
+    .contentItem{
24
+      margin: 0 16px;
25
+      padding: 8px;
26
+      text-align: center;
27
+      &.active{
28
+        background-color: @primary-color;
29
+        color: #fff;
30
+        border-radius: 4px;
31
+      }
32
+    }
33
+    .contentBody{
34
+      padding: 16px;
35
+      min-height: 0;
36
+      display: flex;
37
+      flex-direction: column;
38
+    }
39
+    .contentBody2{
40
+      flex: 1;
41
+    }
42
+    ::ng-deep .ant-form-item{
43
+      margin-bottom: 0;
44
+    }
45
+    .dictionaryRow{
46
+      display: flex;
47
+      align-items: center;
48
+      justify-content: center;
49
+      gap: 16px;
50
+      .orders{
51
+        flex: 1;
52
+        display: flex;
53
+        justify-content: flex-end;
54
+        align-items: center;
55
+      }
56
+      .name{
57
+        width: 600px;
58
+        display: flex;
59
+        justify-content: flex-end;
60
+        align-items: center;
61
+      }
62
+      .value{
63
+        flex: 3;
64
+        display: flex;
65
+        align-items: center;
66
+        .valueInput{
67
+          width: 100px;
68
+        }
69
+        .icon_transport{
70
+          font-size: 20px;
71
+          color: #8a8a8a;
72
+          cursor: pointer;
73
+        }
74
+      }
75
+
76
+    }
77
+  }
78
+  .content{
79
+    flex: 1;
80
+    min-height: 0;
81
+    display: flex;
82
+    flex-direction: column;
83
+    justify-content: space-between;
84
+    border: 1px solid #EEF3F9;
85
+    &.priority{
86
+      margin: 24px 118px 0;
87
+      background-color: #fff;
88
+      .contentInner{
89
+        padding: 48px 206px;
90
+        border: 1px solid #E8EBEF;
91
+      }
92
+    }
93
+    .contentItem{
94
+      padding: 4px 16px;
95
+      cursor: pointer;
96
+      overflow: hidden;
97
+      text-overflow: ellipsis;
98
+      white-space: nowrap;
99
+      &.active{
100
+        color: @primary-color;
101
+        background-color: #F0F6ED;
102
+        border-radius: 4px;
103
+      }
104
+    }
105
+    .contentInner{
106
+      flex: 1;
107
+      display: flex;
108
+      justify-content: space-between;
109
+      align-items: center;
110
+      padding: 0 16px;
111
+      gap: 16px;
112
+      .contentHead{
113
+        height: 45px;
114
+        display: flex;
115
+        justify-content: space-between;
116
+        align-items: center;
117
+        gap: 16px;
118
+        padding: 0 16px;
119
+        font-size: 16px;
120
+        font-weight: bold;
121
+        border-bottom: 1px solid #D9D9D9;
122
+        .title{
123
+          overflow: hidden;
124
+          text-overflow: ellipsis;
125
+          white-space: nowrap;
126
+        }
127
+        .btns{
128
+          flex-shrink: 0;
129
+        }
130
+      }
131
+      .contentBody{
132
+        padding: 0 8px;
133
+        margin: 4px 0;
134
+        flex: 1;
135
+      }
136
+      .address{
137
+        flex: 1;
138
+        height: 100%;
139
+        background: #FFFFFF;
140
+        border: 1px solid #E8EBEF;
141
+        display: flex;
142
+        flex-direction: column;
143
+        width: 0;
144
+      }
145
+      .addressAssign{
146
+        flex: 3;
147
+        height: 100%;
148
+        background: #FFFFFF;
149
+        border: 1px solid #E8EBEF;
150
+        display: flex;
151
+        flex-direction: column;
152
+        width: 0;
153
+      }
154
+      .list-template__searchItem {
155
+        margin-bottom: 16px;
156
+        .label {
157
+          color: #333;
158
+          display: inline-block;
159
+          width: 70px;
160
+          text-align-last: justify;
161
+          text-align: justify;
162
+          &.label--big {
163
+            width: 100px;
164
+          }
165
+        }
166
+        .formItem {
167
+          width: 135px;
168
+        }
169
+      }
170
+    }
171
+    .contentBtns{
172
+      margin-bottom: 16px;
173
+      display: flex;
174
+      justify-content: center;
175
+      align-items: center;
176
+    }
177
+  }
178
+}

+ 257 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect.component.ts

@@ -0,0 +1,257 @@
1
+import { Component, OnInit, ViewChild, Input } from "@angular/core";
2
+import { ActivatedRoute } from "@angular/router";
3
+import { MainService } from "../../../services/main.service";
4
+import { Validators, FormGroup, FormBuilder, FormControl } from '@angular/forms';
5
+import { ToolService } from 'src/app/services/tool.service';
6
+import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
7
+import { NzMessageService } from 'ng-zorro-antd';
8
+import { v4 as uuidv4, validate as uuidValidate } from 'uuid';
9
+
10
+@Component({
11
+  selector: "app-configuration-inspect",
12
+  templateUrl: "./configuration-inspect.component.html",
13
+  styleUrls: ["./configuration-inspect.component.less"],
14
+})
15
+export class ConfigurationInspectComponent implements OnInit {
16
+  constructor(
17
+    private route: ActivatedRoute,
18
+    private mainService: MainService,
19
+    private fb: FormBuilder,
20
+    private tool: ToolService,
21
+    private message: NzMessageService,
22
+  ) {}
23
+
24
+  @ViewChild("osComponentRef1", {
25
+    read: OverlayScrollbarsComponent,
26
+    static: false,
27
+  })
28
+  osComponentRef1: OverlayScrollbarsComponent;
29
+  @ViewChild("osComponentRef2", {
30
+    read: OverlayScrollbarsComponent,
31
+    static: false,
32
+  })
33
+  osComponentRef2: OverlayScrollbarsComponent;
34
+
35
+  ngOnInit() {
36
+    this.activeDictionaryKey = this.dictionaryKeyList[0];
37
+    this.getDictionaryList();
38
+    this.initDictionaryForm();
39
+  }
40
+
41
+  // 数据字典key列表
42
+  dictionaryKeyList:any[] = [
43
+    { id: 1, name: '注意事项', key: "inspect_notes"},
44
+  ]
45
+
46
+  // 点击数据字典key
47
+  activeDictionaryKey:any;
48
+  clickDictionaryKey(item){
49
+    this.activeDictionaryKey = item;
50
+    this.getDictionaryList();
51
+  }
52
+
53
+  btnLoading: boolean = false; //提交按钮loading状态
54
+  // ------------------------------
55
+
56
+  // 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
57
+  promptContent: string; //操作提示框提示信息
58
+  ifSuccess: boolean; //操作成功/失败
59
+  promptInfo: string; //操作结果提示信息
60
+  promptModalShow: boolean; //操作提示框是否展示
61
+  showPromptModal(con, success, promptInfo?) {
62
+    this.promptModalShow = false;
63
+    this.promptContent = con;
64
+    this.ifSuccess = success;
65
+    this.promptInfo = promptInfo;
66
+    setTimeout(() => {
67
+      this.promptModalShow = true;
68
+    }, 100);
69
+    this.getDictionaryList();
70
+  }
71
+
72
+  coopData: any = {}; //当前操作列
73
+
74
+  delModal: boolean = false; //删除模态框
75
+  tipsMsg1: string; //提示框信息
76
+  tipsMsg2: string; //操作后信息
77
+  confirmDelType: string; //确认的类型(启用/停用,删除)
78
+  showDelModal(
79
+    data,
80
+    tipsMsg1: string,
81
+    tipsMsg2: string,
82
+    type: string,
83
+  ) {
84
+    this.confirmDelType = type;
85
+    this.delModal = true;
86
+    this.coopData = data;
87
+    this.tipsMsg1 = tipsMsg1;
88
+    this.tipsMsg2 = tipsMsg2;
89
+  }
90
+  // 隐藏删除框
91
+  hideDelModal() {
92
+    this.delModal = false;
93
+  }
94
+  // 确认删除
95
+  confirmDel() {
96
+    this.btnLoading = true;
97
+    if (this.confirmDelType === "delDictionary") {
98
+      //删除-数据字典
99
+      this.mainService
100
+        .simplePost("rmvData", "dictionary", [this.coopData.id])
101
+        .subscribe((data) => {
102
+          this.btnLoading = false;
103
+          this.delModal = false;
104
+          if (data.status == 200) {
105
+            this.mainService.clearDictionary();
106
+            this.showPromptModal(this.tipsMsg2, true, "");
107
+          } else {
108
+            this.showPromptModal(this.tipsMsg2, false, data.msg);
109
+          }
110
+        });
111
+    }
112
+  }
113
+
114
+  // 初始化数据字典新增form表单
115
+  validateDictionaryForm: FormGroup; //新增/编辑表单
116
+  dictionaryList: any = [];
117
+  initDictionaryForm() {
118
+    this.validateDictionaryForm = this.fb.group({
119
+      // name: [null, [Validators.required]],//键
120
+      // value: [null, [Validators.required]],//值
121
+      // orders: [null, [Validators.required]],//排序号
122
+    });
123
+    console.log(this.validateDictionaryForm.controls)
124
+  }
125
+
126
+  // 获取数据字典数据
127
+  maskFlag: any = false;
128
+  getDictionaryList() {
129
+    let postData = {
130
+      idx: 0,
131
+      sum: 9999,
132
+      dictionary: {
133
+        key: this.activeDictionaryKey.key,
134
+      }
135
+    }
136
+    this.maskFlag = this.message.loading("正在加载中..", {
137
+      nzDuration: 0,
138
+    }).messageId;
139
+    this.mainService.getFetchDataList('simple/data','dictionary',postData).subscribe(data => {
140
+      this.message.remove(this.maskFlag);
141
+      this.maskFlag = false;
142
+      let list = data.list || [];
143
+      if(list.length){
144
+        this.dictionaryList = list.map(v => {
145
+          return {
146
+            id: v.id,
147
+            name: v.name || null,
148
+            value: v.value || null,
149
+            orders: v.orders || null,
150
+            system: v.system || false,
151
+          }
152
+        });
153
+      }else{
154
+        this.dictionaryList = [
155
+          {
156
+            id: uuidv4(),
157
+            name: null,
158
+            value: null,
159
+            orders: null,
160
+            system: false,
161
+          }
162
+        ];
163
+      }
164
+
165
+      console.log(this.dictionaryList);
166
+      // 动态添加表单
167
+      this.dictionaryList.forEach((obj, i) => {
168
+        for (const key in obj) {
169
+          if(key !== 'id' && key !== 'system'){
170
+            if(this.activeDictionaryKey.key === 'incident_status' || this.activeDictionaryKey.key === 'incident_degree'){
171
+              this.validateDictionaryForm.addControl(key + '_' + obj.id, new FormControl({value: obj[key], disabled: true}, [Validators.required]))
172
+            }else{
173
+              this.validateDictionaryForm.addControl(key + '_' + obj.id, new FormControl({value: obj[key], disabled: key === 'value' ? obj.system : false}, [Validators.required]))
174
+            }
175
+          }
176
+        }
177
+      })
178
+      console.log(this.validateDictionaryForm.controls)
179
+    })
180
+  }
181
+
182
+  // 添加数据字典
183
+  addField(i:number): void{
184
+    let obj = {
185
+      id: uuidv4(),
186
+      name: null,
187
+      value: null,
188
+      orders: null,
189
+      system: false,
190
+    };
191
+
192
+    // 动态添加表单
193
+    for (const key in obj) {
194
+      console.log(key + '_' + obj.id)
195
+      if(key !== 'id' && key !== 'system'){
196
+        this.validateDictionaryForm.addControl(key + '_' + obj.id, new FormControl(null, [Validators.required]))
197
+      }
198
+    }
199
+
200
+    this.dictionaryList.splice(i + 1, 0, obj);
201
+  }
202
+
203
+  // 删除
204
+  removeField(obj, i:number): void {
205
+    if(uuidValidate(obj.id)){
206
+      this.dictionaryList.splice(i, 1);
207
+      this.dictionaryList = [...this.dictionaryList];
208
+      // 动态删除表单
209
+      for (const key in obj) {
210
+        this.validateDictionaryForm.removeControl(key + '_' + obj.id);
211
+      }
212
+    }else{
213
+      this.showDelModal(obj,'您确认要删除吗?','删除','delDictionary')
214
+    }
215
+  }
216
+
217
+  // 保存数据字典
218
+  saveDictionary(): void {
219
+    console.log(this.coopData)
220
+    for (const i in this.validateDictionaryForm.controls) {
221
+      this.validateDictionaryForm.controls[i].markAsDirty();
222
+      this.validateDictionaryForm.controls[i].updateValueAndValidity();
223
+    }
224
+    if (this.validateDictionaryForm.invalid) {
225
+      return;
226
+    }
227
+    console.log(this.validateDictionaryForm.value);
228
+    let postData:any = {};
229
+
230
+    //增加
231
+    postData = [];
232
+    let rawValueObj = this.validateDictionaryForm.getRawValue();
233
+    for (let i = 0; i < this.dictionaryList.length; i++) {
234
+      postData.push({
235
+        id: uuidValidate(this.dictionaryList[i].id) ? undefined : this.dictionaryList[i].id,
236
+        name: rawValueObj['name_' + this.dictionaryList[i].id],
237
+        value: rawValueObj['value_' + this.dictionaryList[i].id],
238
+        orders: rawValueObj['orders_' + this.dictionaryList[i].id],
239
+        system: uuidValidate(this.dictionaryList[i].id) ? false : this.dictionaryList[i].system,
240
+        key: this.activeDictionaryKey.key,
241
+      })
242
+    }
243
+    console.log(postData);
244
+    this.btnLoading = true;
245
+    this.mainService
246
+      .simplePost("addListData", "dictionary", postData)
247
+      .subscribe((result) => {
248
+        this.btnLoading = false;
249
+        if (result.status == 200) {
250
+          this.mainService.clearDictionary();
251
+          this.showPromptModal('保存', true, '');
252
+        } else {
253
+          this.showPromptModal('保存', false, result.msg || '');
254
+        }
255
+      });
256
+  }
257
+}

+ 20 - 0
src/app/components/configurationCenter/configuration-inspect/configuration-inspect.module.ts

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

+ 85 - 0
src/app/components/display-form/display-form.component.html

@@ -0,0 +1,85 @@
1
+<!-- 展示形式 -->
2
+<div class="init recallOrder display_flex justify-content_flex-center align-items_center">
3
+  <div class="con modalBody">
4
+    <div class="title">
5
+      展示形式<i class="icon_transport transport-guanbi" (click)="cancelInit()"></i>
6
+    </div>
7
+    <div class="content">
8
+      <div class="conditions" *ngIf="!isLoading">
9
+        <div nz-row>
10
+          <div nz-col nzSpan="4">护工信息隐藏:</div>
11
+          <div nz-col nzSpan="20">
12
+            <nz-radio-group class="w100" [(ngModel)]="hurseInfoHiding">
13
+              <label nz-radio [nzValue]="1">是</label>
14
+              <label nz-radio [nzValue]="0">否</label>
15
+            </nz-radio-group>
16
+          </div>
17
+        </div>
18
+        <div nz-row>
19
+          <div nz-col nzSpan="4">护工信息:</div>
20
+          <div nz-col nzSpan="20">
21
+            <nz-radio-group class="w100" [(ngModel)]="patientCareCol">
22
+              <!-- <label nz-radio [nzValue]="6">单排</label> -->
23
+              <label nz-radio [nzValue]="7">14人</label>
24
+              <!-- <label nz-radio [nzValue]="4">8人</label> -->
25
+            </nz-radio-group>
26
+          </div>
27
+        </div>
28
+        <div nz-row>
29
+          <div nz-col nzSpan="4">工单信息:</div>
30
+          <div nz-col nzSpan="20">
31
+            <nz-radio-group class="w100" [(ngModel)]="txtLabelCol">
32
+              <label nz-radio [nzValue]="1">一排一列</label>
33
+              <!-- <label nz-radio [nzValue]="2">一排两列</label> -->
34
+            </nz-radio-group>
35
+          </div>
36
+        </div>
37
+        <div nz-row>
38
+          <div nz-col nzSpan="4">配送人员刷新:</div>
39
+          <div nz-col nzSpan="4">
40
+            <nz-input-group nzAddOnAfter="秒">
41
+              <nz-input-number class="w100" [(ngModel)]="workerInfoTime" [nzMin]="60" [nzStep]="1" placeholder="请输入配送人员刷新时间"></nz-input-number>
42
+            </nz-input-group>
43
+          </div>
44
+        </div>
45
+        <div nz-row>
46
+          <div nz-col nzSpan="4">工单刷新:</div>
47
+          <div nz-col nzSpan="4">
48
+            <nz-input-group nzAddOnAfter="秒">
49
+              <nz-input-number class="w100" [(ngModel)]="orderInfoTime" [nzMin]="60" [nzStep]="1" placeholder="请输入工单刷新时间"></nz-input-number>
50
+            </nz-input-group>
51
+          </div>
52
+        </div>
53
+        <div nz-row>
54
+          <div nz-col nzSpan="8">是否开启定时播报未派出工单提示音:</div>
55
+          <div nz-col nzSpan="16">
56
+            <nz-radio-group class="w100" [(ngModel)]="audioNotDispatched">
57
+              <label nz-radio [nzValue]="true">是</label>
58
+              <label nz-radio [nzValue]="false">否</label>
59
+            </nz-radio-group>
60
+          </div>
61
+        </div>
62
+        <div nz-row>
63
+          <div nz-col nzSpan="4">排序方式:</div>
64
+          <div nz-col nzSpan="20">
65
+            <nz-radio-group class="w100" [(ngModel)]="orderType">
66
+              <label nz-radio nzValue="priority">优先级</label>
67
+              <label nz-radio nzValue="time">建单时间</label>
68
+            </nz-radio-group>
69
+          </div>
70
+        </div>
71
+      </div>
72
+      <div class="conditions display_flex align-items_center justify-content_flex-center" *ngIf="isLoading">
73
+        <nz-spin nzSimple></nz-spin>
74
+      </div>
75
+    </div>
76
+    <div class="btns display_flex justify-content_flex-center">
77
+      <button class="btn" nz-button nzType="primary" [nzLoading]="saveLoading" (click)="saveOrderScope()" *ngIf="!isLoading">
78
+        保存
79
+      </button>
80
+      <button class="btn cancel" nz-button nzType="default" (click)="cancelInit()">
81
+        知道了
82
+      </button>
83
+    </div>
84
+  </div>
85
+</div>

+ 184 - 0
src/app/components/display-form/display-form.component.less

@@ -0,0 +1,184 @@
1
+@import "../../../../src/theme.less";
2
+:host {
3
+  ::ng-deep .ant-checkbox-wrapper + .ant-checkbox-wrapper{
4
+    margin-left: 0!important;
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
+  }
20
+  // 撤回工单
21
+  .recallOrder {
22
+    position: fixed;
23
+    left: 0;
24
+    top: 0;
25
+    width: 100%;
26
+    height: 100%;
27
+    background: rgba(0, 0, 0, 0.4);
28
+    z-index: 9999999;
29
+
30
+    .modalBody {
31
+      width: 350px;
32
+      height: 220px;
33
+      background: #fff;
34
+      border-radius: 5px;
35
+      padding: 10px 20px;
36
+      color: #333;
37
+
38
+      .title {
39
+        width: 100%;
40
+        text-align: center;
41
+        font-size: 18px;
42
+        position: relative;
43
+
44
+        i {
45
+          position: absolute;
46
+          right: 0;
47
+          top: 0;
48
+          font-size: 20px;
49
+          color: #666;
50
+          cursor: pointer;
51
+          padding: 0 5px;
52
+        }
53
+      }
54
+
55
+      .content {
56
+        width: 310px;
57
+        height: 117px;
58
+        background: #f9fafb;
59
+        border: 1px solid #e5e9ed;
60
+        border-radius: 5px;
61
+        overflow: hidden;
62
+        margin-top: 12px;
63
+
64
+        div {
65
+          text-align: center;
66
+          margin: 0;
67
+
68
+          &.icon {
69
+            margin-top: 17px;
70
+
71
+            i {
72
+              color: #ff3b53;
73
+              font-size: 30px !important;
74
+
75
+              &.transport-wenhao {
76
+                color: #f5a523;
77
+              }
78
+            }
79
+          }
80
+
81
+          &.defeat {
82
+            color: #333;
83
+            font-size: 18px;
84
+          }
85
+
86
+          &:nth-child(3) {
87
+            font-size: 14px;
88
+            color: #666;
89
+          }
90
+        }
91
+
92
+        .conditions {
93
+          height: 400px;
94
+          overflow: auto;
95
+          padding: 16px 20px;
96
+
97
+          div {
98
+            text-align: left;
99
+            margin-bottom: 8px;
100
+          }
101
+        }
102
+      }
103
+
104
+      .btns {
105
+        button {
106
+          margin-top: 10px;
107
+          margin-left: 5px;
108
+        }
109
+
110
+        .recDelBtn {
111
+          width: 115px;
112
+        }
113
+      }
114
+    }
115
+  }
116
+
117
+  // 初始化设置
118
+  .init {
119
+    position: fixed;
120
+    left: 0;
121
+    top: 0;
122
+    width: 100%;
123
+    height: 100%;
124
+    background: rgba(0, 0, 0, 0.4);
125
+    z-index: 99;
126
+
127
+    .con {
128
+      width: 832px;
129
+      height: auto;
130
+      background: #fff;
131
+      border-radius: 5px;
132
+      padding: 10px 20px;
133
+      color: #333;
134
+
135
+      .content {
136
+        width: 100%;
137
+        height: auto;
138
+
139
+        .scopeTab{
140
+          display: flex;
141
+          height: 60px;
142
+          border-bottom: 1px solid #D9D9D9;
143
+          .scopeTabItem{
144
+            flex: 1;
145
+            display: flex;
146
+            justify-content: center;
147
+            align-items: center;
148
+            border-right: 1px solid #D9D9D9;
149
+            background-color: #fff;
150
+            cursor: pointer;
151
+            &:last-of-type{
152
+              border-right: none;
153
+            }
154
+            &.active{
155
+              background-color: #F0F6ED;
156
+            }
157
+          }
158
+        }
159
+
160
+        .remin {
161
+          font-size: 14px;
162
+          color: #666;
163
+          line-height: 48px;
164
+          border-bottom: 1px solid #e5e9ed;
165
+        }
166
+
167
+        .boxes {
168
+          color: #333;
169
+          padding: 8px 12px;
170
+
171
+          & > div:nth-child(1) {
172
+            color: #333;
173
+            text-align: left;
174
+          }
175
+
176
+          & > div:nth-child(2) {
177
+            color: #666;
178
+            text-align: left;
179
+          }
180
+        }
181
+      }
182
+    }
183
+  }
184
+}

+ 125 - 0
src/app/components/display-form/display-form.component.ts

@@ -0,0 +1,125 @@
1
+import { Component, OnInit, Output, Input } from '@angular/core';
2
+import { EventEmitter } from '@angular/core';
3
+import { MainService } from 'src/app/services/main.service';
4
+import { ToolService } from 'src/app/services/tool.service';
5
+import { NzMessageService } from 'ng-zorro-antd';
6
+
7
+@Component({
8
+  selector: 'app-display-form',
9
+  templateUrl: './display-form.component.html',
10
+  styleUrls: ['./display-form.component.less']
11
+})
12
+export class DisplayFormComponent implements OnInit {
13
+  @Output() confirmModal = new EventEmitter();
14
+  @Output() cancelModal = new EventEmitter();
15
+  constructor(
16
+    private mainService: MainService,
17
+    private tool: ToolService,
18
+    private message: NzMessageService,
19
+  ) { }
20
+
21
+  controlView = {}; //展示形式
22
+  patientCareCol: number = 7; //顶部工单列数(4列-8人,7列-14人,6列-单排 )
23
+  hurseInfoHiding = 1; //护工信息隐藏
24
+  txtLabelCol: number = 1; //工单信息列数
25
+  orderRefreshTime: number = 30; //工单刷新倒计时
26
+  orderInfoTime: number = 60; //工单刷新时间
27
+  workerRefreshTime: number = 30; //配送人员刷新倒计时
28
+  workerInfoTime: number = 60; //配送人员刷新时间
29
+  audioNotDispatched: boolean = true; //是否开启定时播报未派出工单提示音
30
+  orderType: string = 'priority'; //排序方式
31
+
32
+  ngOnInit() {
33
+    this.initControlView();
34
+  }
35
+
36
+  isLoading:boolean = false;
37
+  initControlView() {
38
+    this.isLoading = true;
39
+    let postData = {
40
+      controlView: {},
41
+      idx: 0,
42
+      sum: 1,
43
+    };
44
+    this.mainService
45
+      .coopTypeConfig("fetchDataList", "controlView", postData)
46
+      .subscribe((data) => {
47
+        this.isLoading = false;
48
+        this.controlView = data.list[0] ? data.list[0] : [];
49
+        if (!data.list.length) return;
50
+        // switch (data.list[0].workerNum) {
51
+        //   case 1:
52
+        //     this.patientCareCol = 6;
53
+        //     break;
54
+        //   case 2:
55
+        //     this.patientCareCol = 7;
56
+        //     break;
57
+        //   case 3:
58
+        //     this.patientCareCol = 4;
59
+        //     break;
60
+        // }
61
+        this.patientCareCol = 7;
62
+        this.hurseInfoHiding = data.list[0].hurseInfoHiding ? 1 : 0;
63
+        // this.txtLabelCol = data.list[0].labelNum;
64
+        this.txtLabelCol = 1;
65
+        this.orderRefreshTime = this.orderInfoTime = data.list[0].orderInfoTime;
66
+        this.workerRefreshTime = this.workerInfoTime = data.list[0].workerInfoTime;
67
+        this.audioNotDispatched = data.list[0].unsendOrderVoice !== false;
68
+        this.orderType = data.list[0].orderType || 'priority';
69
+      });
70
+  }
71
+
72
+  // 保存展示形式
73
+  saveLoading: boolean = false; //保存按钮loading状态
74
+  saveOrderScope() {
75
+    if(!this.workerInfoTime){
76
+      this.message.warning('配送人员刷新时间必填!')
77
+      return;
78
+    }
79
+    if(!this.orderInfoTime){
80
+      this.message.warning('工单刷新时间必填!')
81
+      return;
82
+    }
83
+    this.saveLoading = true;
84
+    let wn;
85
+    switch (this.patientCareCol) {
86
+      case 6:
87
+        wn = 1;
88
+        break;
89
+      case 7:
90
+        wn = 2;
91
+        break;
92
+      case 4:
93
+        wn = 3;
94
+        break;
95
+    }
96
+
97
+    let postData = {
98
+      controlView: {
99
+        workerNum: wn,
100
+        labelNum: this.txtLabelCol,
101
+        workerInfoTime: this.workerInfoTime,
102
+        orderInfoTime: this.orderInfoTime,
103
+        unsendOrderVoice: this.audioNotDispatched,
104
+        hurseInfoHiding: this.hurseInfoHiding == 1,
105
+        orderType: this.orderType,
106
+      },
107
+    };
108
+    if (this.controlView["id"]) {
109
+      postData.controlView["id"] = this.controlView["id"];
110
+    }
111
+
112
+    console.log(postData);
113
+    this.mainService
114
+      .coopTypeConfig("addData", "controlView", postData)
115
+      .subscribe((data) => {
116
+        this.saveLoading = false;
117
+        this.confirmModal.emit(data);
118
+      });
119
+  }
120
+
121
+  // 关闭弹窗
122
+  cancelInit() {
123
+    this.cancelModal.emit();
124
+  }
125
+}

+ 20 - 0
src/app/components/display-form/display-form.module.ts

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

+ 34 - 13
src/app/components/incidentManagement/incident-create/incident-create.component.html

@@ -2,11 +2,11 @@
2 2
  * @Author: seimin
3 3
  * @Date: 2024-10-24 13:47:40
4 4
  * @LastEditors: seimin
5
- * @LastEditTime: 2024-10-25 15:47:50
5
+ * @LastEditTime: 2024-12-09 15:32:35
6 6
  * @Description: 创建
7 7
 -->
8 8
 <!-- 新建工单 -->
9
-<div class="newOrder display_flex justify-content_flex-center align-items_center">
9
+<div class="newOrder display_flex justify-content_flex-center align-items_center" (click)="clickExtra($event)">
10 10
   <div class="modalBody">
11 11
     <div class="title" *ngIf="currentTabIndex === '故障报修'">
12 12
       <div class="newTop">
@@ -22,7 +22,7 @@
22 22
             </nz-option>
23 23
           </nz-select>
24 24
         </div>
25
-        <div class="newTopItem">
25
+        <div class="newTopItem" [hidden]="incidentModel.repairIncidentType === 'public'">
26 26
           <span class="grayFont required">申请科室:</span>
27 27
           <nz-select style="width: 160px" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch (nzOnSearch)="changeInp('itsm', $event)" nzPlaceHolder="请选择申请科室" [(ngModel)]="incidentModel.department" (ngModelChange)="changeApplyDept($event)" nzAllowClear (nzOpenChange)="openChangeApplyDept($event)">
28 28
             <ng-container *ngFor="let option of applicationDeptList">
@@ -34,7 +34,7 @@
34 34
           </nz-select>
35 35
         </div>
36 36
         <div class="newTopItem">
37
-          <span class="grayFont">申请人:</span>
37
+          <span class="grayFont" [ngClass]="{'required': incidentModel.repairIncidentType === 'public'}">申请人:</span>
38 38
           <ng-container *ngIf="buildType === '报修转事件'">{{incidentMsg.requesterName}}</ng-container>
39 39
           <ng-container *ngIf="buildType !== '报修转事件'">
40 40
             <nz-select style="width: 160px" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch (nzOnSearch)="changeCommonInp('requester', $event)" nzPlaceHolder="请选择申请人" [(ngModel)]="incidentModel.requester" (ngModelChange)="changeApplyRequester($event)" nzAllowClear (nzOpenChange)="openChangeApplyRequester($event)">
@@ -45,9 +45,19 @@
45 45
                 <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
46 46
               </nz-option>
47 47
             </nz-select>
48
-            <label nz-checkbox [(ngModel)]="isRelatedDepartment" (ngModelChange)="changeApplyRelatedDepartment($event)" class="ml8">关联查</label>
48
+            <label [hidden]="incidentModel.repairIncidentType === 'public'" nz-checkbox [(ngModel)]="isRelatedDepartment" (ngModelChange)="changeApplyRelatedDepartment($event)" class="ml8">关联查</label>
49 49
           </ng-container>
50 50
         </div>
51
+        <div class="newTopItem" *ngIf="incidentModel.incomingPhone">
52
+          <span class="grayFont">来电电话:{{incidentModel.incomingPhone}}</span>
53
+        </div>
54
+        <div class="newTopItem">
55
+          <span class="grayFont">
56
+            <nz-radio-group [nzDisabled]="buildType === '编辑事件'" [(ngModel)]="incidentModel.repairIncidentType" (ngModelChange)="changeRepairIncidentType($event)">
57
+              <label nz-radio [nzValue]="item.value" *ngFor="let item of repairIncidentTypeList">{{item.name}}</label>
58
+            </nz-radio-group>
59
+          </span>
60
+        </div>
51 61
       </div>
52 62
     </div>
53 63
     <div nz-row class="content">
@@ -92,11 +102,22 @@
92 102
                     </nz-select>
93 103
                   </div>
94 104
                   <div class="col flex7">
95
-                    <input nz-input placeholder="请填写详细地址" [(ngModel)]="incidentModel.houseNumber" />
105
+                    <input class="addressFocus" nz-input placeholder="请填写详细地址" [(ngModel)]="incidentModel.houseNumber" (focus)="focusAddress()" />
106
+                    <div class="addressList" *ngIf="isShowAddressList">
107
+                      <ng-container *ngIf="!addressLoading && addressList.length">
108
+                        <div class="addressItem ellipsis-oneline" *ngFor="let item of addressList" [title]="item.name" (click)="selectAddress(item.name)">{{item.name}}</div>
109
+                      </ng-container>
110
+                      <div *ngIf="!addressLoading && !addressList.length" class="w100 h100 padding8 display_flex justify-content_flex-center align-items_center">
111
+                        <nz-empty></nz-empty>
112
+                      </div>
113
+                      <div *ngIf="addressLoading" class="w100 h100 padding8 display_flex justify-content_flex-center align-items_center">
114
+                        <nz-spin nzSimple></nz-spin>
115
+                      </div>
116
+                    </div>
96 117
                   </div>
97 118
                 </div>
98 119
 
99
-                <div class="row gap8">
120
+                <div class="row">
100 121
                   <div class="col">
101 122
                     <span class="name">科室电话:</span>
102 123
                     <ng-container *ngIf="incidentMsg.deptManyPhone">{{incidentMsg.deptManyPhone|stringToFirstValue}}<em (click)="importPhone(incidentMsg.deptManyPhone, true)">引入</em></ng-container>
@@ -110,7 +131,7 @@
110 131
                   </div>
111 132
                 </div>
112 133
 
113
-                <div class="row gap8">
134
+                <div class="row">
114 135
                   <div class="col">
115 136
                     <span class="name">联系人:</span>
116 137
                     <input class="w100" nz-input placeholder="请填写联系人" [(ngModel)]="incidentModel.contacts" />
@@ -125,7 +146,7 @@
125 146
                   </div>
126 147
                 </div>
127 148
 
128
-                <div class="row gap8">
149
+                <div class="row">
129 150
                   <div class="col">
130 151
                     <span class="name required">故障现象:</span>
131 152
                     <nz-select class="w100" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch (nzOnSearch)="changeCommonInp('category', $event)" nzPlaceHolder="请选择故障现象" [(ngModel)]="incidentModel.category" (ngModelChange)="changeApplyCategory($event)" (nzOpenChange)="openChangeApplyCategory($event)">
@@ -139,7 +160,7 @@
139 160
                   </div>
140 161
                 </div>
141 162
 
142
-                <div class="row gap8">
163
+                <div class="row">
143 164
                   <div class="col alignItemsStart">
144 165
                     <span class="name required">故障描述:</span>
145 166
                     <nz-input-group [nzSuffix]="suffixTemplate">
@@ -149,7 +170,7 @@
149 170
                   </div>
150 171
                 </div>
151 172
 
152
-                <div class="row gap8">
173
+                <div class="row">
153 174
                   <div class="col">
154 175
                     <span class="name required">优先级:</span>
155 176
                     <nz-select class="w100" [(ngModel)]="incidentModel.priorityId" nzAllowClear nzPlaceHolder="请选择优先级" [nzDisabled]="buildType === '编辑事件'">
@@ -168,7 +189,7 @@
168 189
                   </div>
169 190
                 </div>
170 191
 
171
-                <div class="row gap8">
192
+                <div class="row">
172 193
                   <div class="col">
173 194
                     <span class="name">报修图片:</span>
174 195
                     <div class="value w100 upload">
@@ -191,7 +212,7 @@
191 212
                   </div>
192 213
                 </div>
193 214
 
194
-                <div class="row gap8" *ngIf="buildType !== '编辑事件'">
215
+                <div class="row" *ngIf="buildType !== '编辑事件'">
195 216
                   <div class="col">
196 217
                     <span class="name required">处理组:</span>
197 218
                     <nz-select class="w100" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch (nzOnSearch)="changeCommonInp('group', $event)" nzPlaceHolder="请选择处理组" [(ngModel)]="incidentModel.group" (ngModelChange)="changeApplyGroup($event)" (nzOpenChange)="openChangeApplyGroup($event)">

+ 33 - 7
src/app/components/incidentManagement/incident-create/incident-create.component.less

@@ -10,13 +10,16 @@
10 10
   display: flex;
11 11
   align-items: center;
12 12
   flex-wrap: wrap;
13
-  gap: 8px;
14 13
   .thumb{
15 14
     width: 64px;
16 15
     height: 64px;
17 16
     padding: 4px;
18 17
     border-radius: 4px;
19 18
     border: 1px solid rgba(0,0,0,0.15);
19
+    margin-right: 8px;
20
+    &:last-of-type{
21
+      margin-right: 0;
22
+    }
20 23
     img{
21 24
       width: 100%;
22 25
       height: 100%;
@@ -2105,10 +2108,13 @@
2105 2108
         font-size: 14px;
2106 2109
         .name{
2107 2110
           font-weight: bold;
2108
-          margin-right: 48px;
2111
+          margin-right: 24px;
2109 2112
         }
2110 2113
         .newTopItem{
2111
-          margin-right: 24px;
2114
+          margin-right: 16px;
2115
+          &:last-of-type{
2116
+            margin-right: 0;
2117
+          }
2112 2118
         }
2113 2119
       }
2114 2120
     }
@@ -2228,11 +2234,7 @@
2228 2234
               .row{
2229 2235
                 display: flex;
2230 2236
                 align-items: center;
2231
-                gap: 8px;
2232 2237
                 margin-bottom: 16px;
2233
-                &.gap8{
2234
-                  gap: 8px;;
2235
-                }
2236 2238
                 &:last-of-type{
2237 2239
                   margin-bottom: 0;
2238 2240
                 }
@@ -2242,6 +2244,11 @@
2242 2244
                   display: flex;
2243 2245
                   align-items: center;
2244 2246
                   word-break: break-all;
2247
+                  position: relative;
2248
+                  margin-right: 8px;
2249
+                  &:last-of-type{
2250
+                    margin-right: 0;
2251
+                  }
2245 2252
                   &.alignItemsStart{
2246 2253
                     align-items: flex-start;
2247 2254
                   }
@@ -2263,6 +2270,25 @@
2263 2270
                   &.flex7{
2264 2271
                     flex: 7;
2265 2272
                   }
2273
+                  .addressList{
2274
+                    position: absolute;
2275
+                    top: 100%;
2276
+                    left: 0;
2277
+                    width: 100%;
2278
+                    max-height: 256px;
2279
+                    z-index: 2;
2280
+                    background: #fff;
2281
+                    border: 1px solid #d9d9d9;
2282
+                    border-radius: 4px;
2283
+                    overflow: hidden auto;
2284
+                    .addressItem{
2285
+                      padding: 5px 12px;
2286
+                      cursor: pointer;
2287
+                      &:hover{
2288
+                        background-color: #e9f7e9;
2289
+                      }
2290
+                    }
2291
+                  }
2266 2292
                   .ant-input-clear-icon{
2267 2293
                     align-self: center;
2268 2294
                     font-style: normal;

+ 89 - 5
src/app/components/incidentManagement/incident-create/incident-create.component.ts

@@ -97,6 +97,7 @@ export class IncidentCreateComponent implements OnInit {
97 97
     incidentModel.requester && (incidentMsg.requesterPhone = incidentModel.requester.phone);
98 98
     incidentModel.requester && (incidentMsg.requesterName = incidentModel.requester.name);
99 99
     incidentModel.requester && (incidentModel.requester = incidentModel.requester.id);
100
+    incidentModel.repairIncidentType && (incidentModel.repairIncidentType = incidentModel.repairIncidentType.value);
100 101
     incidentModel.source && (incidentModel.source = incidentModel.source.id);
101 102
     incidentModel.area && (incidentModel.area = incidentModel.area.id);
102 103
     incidentModel.place && (incidentModel.place = incidentModel.place.id);
@@ -604,6 +605,19 @@ export class IncidentCreateComponent implements OnInit {
604 605
       this.applicationSourceList = data || [];
605 606
     });
606 607
   }
608
+  // 报修类型列表
609
+  repairIncidentTypeList:any[] = [];
610
+  getRepairIncidentType() {
611
+    this.mainService.getDictionary("list", "repair_incident_type").subscribe((data) => {
612
+      this.repairIncidentTypeList = data || [];
613
+    });
614
+  }
615
+  // 选择报修类型
616
+  changeRepairIncidentType(value){
617
+    this.incidentModel.department = undefined;
618
+    this.isRelatedDepartment = false;
619
+    this.changeApplyRelatedDepartment(this.isRelatedDepartment);
620
+  }
607 621
   // 楼栋列表
608 622
   applicationBuildingList:any[] = [];
609 623
   searchApplicationBuilding(keyWord?, buildingId?) {
@@ -823,6 +837,11 @@ export class IncidentCreateComponent implements OnInit {
823 837
   maskFlag:any = false;
824 838
   // 运维-直接解决
825 839
   directOrder(){
840
+    if(this.incidentModel.repairIncidentType === 'public' && !this.incidentModel.requester){
841
+      this.msg.warning('请选择申请人!');
842
+      return;
843
+    }
844
+
826 845
     if(!this.incidentModel.category){
827 846
       this.msg.warning('请选择故障现象!');
828 847
       return;
@@ -834,7 +853,7 @@ export class IncidentCreateComponent implements OnInit {
834 853
       return;
835 854
     }
836 855
 
837
-    if(!this.incidentModel.department){
856
+    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
838 857
       this.msg.warning('请选择申请科室!');
839 858
       return;
840 859
     }
@@ -881,6 +900,7 @@ export class IncidentCreateComponent implements OnInit {
881 900
         "deleteFlag": 0,
882 901
         "duty": this.incidentModel.duty ? { id: this.incidentModel.duty.id } : undefined,
883 902
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
903
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
884 904
         "alarmType": false,
885 905
         "department": this.incidentModel.department ? { id: this.incidentModel.department } : undefined,
886 906
         "contactsInformation": this.incidentModel.contactsInformation,
@@ -951,6 +971,11 @@ export class IncidentCreateComponent implements OnInit {
951 971
   }
952 972
   // 运维-建单并派单
953 973
   assignOrder(){
974
+    if(this.incidentModel.repairIncidentType === 'public' && !this.incidentModel.requester){
975
+      this.msg.warning('请选择申请人!');
976
+      return;
977
+    }
978
+
954 979
     if(!this.incidentModel.category){
955 980
       this.msg.warning('请选择故障现象!');
956 981
       return;
@@ -962,7 +987,7 @@ export class IncidentCreateComponent implements OnInit {
962 987
       return;
963 988
     }
964 989
 
965
-    if(!this.incidentModel.department){
990
+    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
966 991
       this.msg.warning('请选择申请科室!');
967 992
       return;
968 993
     }
@@ -1011,6 +1036,7 @@ export class IncidentCreateComponent implements OnInit {
1011 1036
         "description": this.incidentModel.description,
1012 1037
         "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
1013 1038
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
1039
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
1014 1040
         "acceptUser": { id: this.tool.getCurrentUserId() },
1015 1041
         "callID": this.incidentModel.callID || undefined,
1016 1042
         "incomingPhone": this.incidentModel.incomingPhone || undefined,
@@ -1085,6 +1111,7 @@ export class IncidentCreateComponent implements OnInit {
1085 1111
         "description": this.incidentModel.description,
1086 1112
         "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
1087 1113
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
1114
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
1088 1115
         "acceptUser": { id: this.tool.getCurrentUserId() },
1089 1116
         "callID": this.incidentModel.callID || undefined,
1090 1117
         "incomingPhone": this.incidentModel.incomingPhone || undefined,
@@ -1132,6 +1159,11 @@ export class IncidentCreateComponent implements OnInit {
1132 1159
   buildType;
1133 1160
   editOrder;
1134 1161
   saveOrder(){
1162
+    if(this.incidentModel.repairIncidentType === 'public' && !this.incidentModel.requester){
1163
+      this.msg.warning('请选择申请人!');
1164
+      return;
1165
+    }
1166
+
1135 1167
     if(!this.incidentModel.category){
1136 1168
       this.msg.warning('请选择故障现象!');
1137 1169
       return;
@@ -1143,7 +1175,7 @@ export class IncidentCreateComponent implements OnInit {
1143 1175
       return;
1144 1176
     }
1145 1177
 
1146
-    if(!this.incidentModel.department){
1178
+    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
1147 1179
       this.msg.warning('请选择申请科室!');
1148 1180
       return;
1149 1181
     }
@@ -1187,6 +1219,7 @@ export class IncidentCreateComponent implements OnInit {
1187 1219
         "description": this.incidentModel.description,
1188 1220
         "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
1189 1221
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
1222
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
1190 1223
         "acceptUser": { id: this.tool.getCurrentUserId() },
1191 1224
         "callID": this.incidentModel.callID || undefined,
1192 1225
         "incomingPhone": this.incidentModel.incomingPhone || undefined,
@@ -1328,7 +1361,11 @@ export class IncidentCreateComponent implements OnInit {
1328 1361
   resetOrderData2(){
1329 1362
     this.fileList = [];
1330 1363
     this.repairImgs = [];
1331
-    this.isRelatedDepartment = true;
1364
+    if(this.incidentModel.repairIncidentType === 'public'){
1365
+      this.isRelatedDepartment = false;
1366
+    }else{
1367
+      this.isRelatedDepartment = true;
1368
+    }
1332 1369
   }
1333 1370
 
1334 1371
   // 打开新建工单
@@ -1343,13 +1380,14 @@ export class IncidentCreateComponent implements OnInit {
1343 1380
     this.searchApplicationCategory();
1344 1381
     this.searchApplicationPriority();
1345 1382
     this.searchApplicationSource();
1383
+    this.getRepairIncidentType();
1346 1384
     isInit ? this.searchApplicationDepartment('itsm', undefined, undefined, undefined, true) : this.searchApplicationDepartment('itsm');
1347 1385
     isInit && ((this.isRelatedDepartment && this.incidentModel.department) || (!this.isRelatedDepartment && this.incidentModel.hosId) || this.buildType === '报修转事件' ) && this.incidentModel.hosId && this.searchApplicationBuilding();
1348 1386
     isInit && this.incidentModel.area && this.searchApplicationFloor();
1349 1387
 
1350 1388
     this.currentRTab = 0;
1351 1389
     this.rightTitle_tab = [];
1352
-    this.incidentModel = isInit ? this.incidentModel : {};
1390
+    this.incidentModel = isInit ? this.incidentModel : { repairIncidentType: 'dept' };
1353 1391
     this.incidentMsg = isInit ? this.incidentMsg : {};
1354 1392
     this.isBuildOrderAgagin = false;
1355 1393
     this.incidentModel.department = isInit ? this.incidentModel.department : null;
@@ -1456,4 +1494,50 @@ export class IncidentCreateComponent implements OnInit {
1456 1494
   newOrderCancel() {
1457 1495
     this.closeModelHs.emit(JSON.stringify({ show: false }));//emits(向上弹射)事件
1458 1496
   }
1497
+
1498
+  // 详细地址获取焦点
1499
+  isShowAddressList:boolean = false;
1500
+  focusAddress(){
1501
+    this.isShowAddressList = true;
1502
+    this.getAddressList();
1503
+  }
1504
+
1505
+  // 点击其他位置
1506
+  clickExtra(e){
1507
+    if(document.documentElement.contains(document.querySelector('.addressList')) && e.target !== document.querySelector('.addressFocus')){
1508
+      this.isShowAddressList = false;
1509
+    }
1510
+  }
1511
+
1512
+  // 选择地址
1513
+  selectAddress(name){
1514
+    this.incidentModel.houseNumber = name;
1515
+    this.isShowAddressList = false;
1516
+  }
1517
+
1518
+  // 获取科室地点列表
1519
+  addressList:any[] = [];
1520
+  addressLoading:boolean = false;
1521
+  getAddressList() {
1522
+    if(!this.incidentModel.department){
1523
+      this.addressList = [];
1524
+      return;
1525
+    }
1526
+    let postData = {
1527
+      idx: 0,
1528
+      sum: 99999,
1529
+      qrCode: {
1530
+        deptId: this.incidentModel.department,
1531
+      }
1532
+    };
1533
+    this.addressLoading = true;
1534
+    this.mainService.getFetchDataList("simple/data", "qrCode", postData).subscribe(result=>{
1535
+      this.addressLoading = false;
1536
+      if(result.status == 200){
1537
+        this.addressList = result.list || [];
1538
+      }else{
1539
+        this.addressList = [];
1540
+      }
1541
+    });
1542
+  }
1459 1543
 }

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

@@ -15,6 +15,10 @@
15 15
               <div class="col">状态:{{incidentData.state?.name}}</div>
16 16
             </div>
17 17
             <div class="row">
18
+              <div class="col">报修类型:{{incidentData.repairIncidentType?.name}}</div>
19
+              <div class="col display_flex flex2">报修录音:<audio class="audio" controls style="outline: none;" *ngIf="incidentData.reqRecord && audioRequireSrc"><source [src]="audioRequireSrc" type="audio/mp3"></audio></div>
20
+            </div>
21
+            <div class="row">
18 22
               <div class="col">故障现象:{{incidentData.category?.mutiCategory}}</div>
19 23
             </div>
20 24
             <div class="row">

+ 19 - 0
src/app/components/incidentManagement/incident-detail/incident-detail.component.ts

@@ -60,6 +60,7 @@ export class IncidentDetailComponent implements OnInit {
60 60
 
61 61
     if(this.activeTabValue == 1){
62 62
       this.incidentData.callID && this.getCallLog();
63
+      this.incidentData.reqRecord && this.getAudioRequireSrc();
63 64
       this.incidentData.reqAttachment && this.getRepairImgs();
64 65
     }else if(this.activeTabValue == 2){
65 66
       this.getHandleImgs();
@@ -205,6 +206,24 @@ export class IncidentDetailComponent implements OnInit {
205 206
       });
206 207
   }
207 208
 
209
+  // 获取报修录音
210
+  audioRequireSrc =  '';//音频
211
+  getAudioRequireSrc() {
212
+    this.mainService
213
+      .getPreviewImage('wechatIncidentRecord', this.incidentData.id)
214
+      .subscribe((res:any) => {
215
+        res.data = res.data || [];
216
+        if(res.data.length){
217
+          res.data.forEach(v => {
218
+            v.previewUrl = location.origin + "/file" + v.relativeFilePath;
219
+          })
220
+          this.audioRequireSrc = res.data[0].previewUrl;
221
+        }else{
222
+          this.audioRequireSrc = '';
223
+        }
224
+      });
225
+  }
226
+
208 227
   maskFlag:any = false;
209 228
   // 获取处理流程
210 229
   incidentLogList:any[] = [];

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

@@ -7,7 +7,7 @@
7 7
         <div class="items" *ngFor="let item of visitList">
8 8
           <div class="row">
9 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>
10
+            <div class="col">{{item.hosName}} <ng-container *ngIf="item.repairIncidentType.value === 'public'">{{ item.repairIncidentType.name }}</ng-container><ng-container *ngIf="item.repairIncidentType.value === 'dept'">{{ item.department?.dept }}</ng-container></div>
11 11
           </div>
12 12
           <div class="row">
13 13
             <div class="col">故障描述:{{item.description}}</div>

+ 9 - 4
src/app/services/main.service.ts

@@ -929,21 +929,21 @@ export class MainService {
929 929
 	     headers: this.headers,
930 930
 	   });
931 931
 	 }
932
-	
932
+
933 933
 	//病理申请单追加打印/全量打印
934 934
 	 pathologyCheckPrint(type,businessId,data) {
935 935
 	   return this.http.post(host.host + `/pathology/check/${type}/${businessId}`, data, {
936 936
 	     headers: this.headers,
937 937
 	   });
938 938
 	 }
939
-	
939
+
940 940
 	// 病例申请单暂存
941 941
 	pathologyOperation(data,operation) {
942 942
 	  return this.http.post(host.host + `/pathology/${operation}`, data, {
943 943
 	    headers: this.headers,
944 944
 	  });
945 945
 	}
946
-	
946
+
947 947
 	// 病理查询标本条码
948 948
 	pathologyScanCode(data) {
949 949
 	  return this.http.post(host.host + `/pathology/scanCode`, data, {
@@ -1038,7 +1038,12 @@ export class MainService {
1038 1038
 	    headers: this.headers,
1039 1039
 	  });
1040 1040
 	}
1041
-	// 获取细胞学标本
1041
+  // 根据来电电话查科室
1042
+	findPhoneDept(data) {
1043
+	  return this.http.post(host.host + `/user/data/findPhoneDept`, data, {
1044
+	    headers: this.headers,
1045
+	  });
1046
+	}	// 获取细胞学标本
1042 1047
 	getCellDictionary(data) {
1043 1048
 	  return this.http.post(host.host + `/common/common/getDictionary`,data, {
1044 1049
 	    headers: this.headers,

+ 1 - 1
src/app/share/detail-patients/detail-patients.component.html

@@ -37,7 +37,7 @@
37 37
           <div nz-col nzSpan="8" *ngIf="orderInfo.inspectUsersNum">
38 38
             陪检人数:{{orderInfo.inspectUsersNum}}</div>
39 39
           <div nz-col nzSpan="24" *ngIf="orderInfo.workOrderRemark">
40
-            备注信息:{{orderInfo.workOrderRemark}}</div>
40
+            注意事项:{{orderInfo.workOrderRemark}}</div>
41 41
           <div nz-col nzSpan="24" *ngIf="orderInfo.specialCloseReason">
42 42
             特殊情况关闭原因:{{orderInfo.specialCloseReason}}
43 43
           </div>

+ 1 - 1
src/app/share/order-detail/order-detail.component.html

@@ -682,7 +682,7 @@
682 682
             *ngIf="orderInfo.workOrderRemark !== undefined"
683 683
           >
684 684
             <div nz-col nzSpan="24">
685
-              备注信息:{{ orderInfo.workOrderRemark || "-" }}
685
+              注意事项:{{ orderInfo.workOrderRemark || "-" }}
686 686
             </div>
687 687
           </div>
688 688
           <div class="info" nz-row *ngIf="orderInfo.urgentDetails">

文件差異過大導致無法顯示
+ 115 - 501
src/app/views/fuwutai/fuwutai.component.html


+ 58 - 8
src/app/views/fuwutai/fuwutai.component.less

@@ -15,13 +15,16 @@
15 15
   display: flex;
16 16
   align-items: center;
17 17
   flex-wrap: wrap;
18
-  gap: 8px;
19 18
   .thumb{
20 19
     width: 64px;
21 20
     height: 64px;
22 21
     padding: 4px;
23 22
     border-radius: 4px;
24 23
     border: 1px solid rgba(0,0,0,0.15);
24
+    margin-right: 8px;
25
+    &:last-of-type{
26
+      margin-right: 0;
27
+    }
25 28
     img{
26 29
       width: 100%;
27 30
       height: 100%;
@@ -32,7 +35,7 @@
32 35
   }
33 36
 }
34 37
 
35
-.transport-a-11111{
38
+.transport-a-11111, .transport-luyin{
36 39
   color: @primary-color;
37 40
 }
38 41
 
@@ -642,6 +645,7 @@
642 645
     border: 1px @primary-color solid;
643 646
     cursor: pointer;
644 647
     height: 27px;
648
+    margin-bottom: 8px;
645 649
   }
646 650
 
647 651
   .slider {
@@ -2140,10 +2144,13 @@
2140 2144
           font-size: 14px;
2141 2145
           .name{
2142 2146
             font-weight: bold;
2143
-            margin-right: 48px;
2147
+            margin-right: 24px;
2144 2148
           }
2145 2149
           .newTopItem{
2146
-            margin-right: 24px;
2150
+            margin-right: 16px;
2151
+            &:last-of-type{
2152
+              margin-right: 0;
2153
+            }
2147 2154
           }
2148 2155
         }
2149 2156
       }
@@ -2263,11 +2270,7 @@
2263 2270
                 .row{
2264 2271
                   display: flex;
2265 2272
                   align-items: center;
2266
-                  gap: 8px;
2267 2273
                   margin-bottom: 16px;
2268
-                  &.gap8{
2269
-                    gap: 8px;;
2270
-                  }
2271 2274
                   &:last-of-type{
2272 2275
                     margin-bottom: 0;
2273 2276
                   }
@@ -2277,6 +2280,11 @@
2277 2280
                     display: flex;
2278 2281
                     align-items: center;
2279 2282
                     word-break: break-all;
2283
+                    position: relative;
2284
+                    margin-right: 8px;
2285
+                    &:last-of-type{
2286
+                      margin-right: 0;
2287
+                    }
2280 2288
                     &.alignItemsStart{
2281 2289
                       align-items: flex-start;
2282 2290
                     }
@@ -2298,6 +2306,25 @@
2298 2306
                     &.flex7{
2299 2307
                       flex: 7;
2300 2308
                     }
2309
+                    .addressList{
2310
+                      position: absolute;
2311
+                      top: 100%;
2312
+                      left: 0;
2313
+                      width: 100%;
2314
+                      max-height: 256px;
2315
+                      z-index: 2;
2316
+                      background: #fff;
2317
+                      border: 1px solid #d9d9d9;
2318
+                      border-radius: 4px;
2319
+                      overflow: hidden auto;
2320
+                      .addressItem{
2321
+                        padding: 5px 12px;
2322
+                        cursor: pointer;
2323
+                        &:hover{
2324
+                          background-color: #e9f7e9;
2325
+                        }
2326
+                      }
2327
+                    }
2301 2328
                     .ant-input-clear-icon{
2302 2329
                       align-self: center;
2303 2330
                       font-style: normal;
@@ -2676,3 +2703,26 @@
2676 2703
     color: #333;
2677 2704
   }
2678 2705
 }
2706
+.noteSign{
2707
+  position: relative;
2708
+  .noteList{
2709
+    position: absolute;
2710
+    bottom: 100%;
2711
+    left: 0;
2712
+    width: 100%;
2713
+    max-height: 256px;
2714
+    z-index: 99;
2715
+    background: #fff;
2716
+    border: 1px solid #d9d9d9;
2717
+    border-radius: 4px;
2718
+    overflow: hidden auto;
2719
+    .noteItem{
2720
+      padding: 5px 12px;
2721
+      cursor: pointer;
2722
+      line-height: normal;
2723
+      &:hover{
2724
+        background-color: #e9f7e9;
2725
+      }
2726
+    }
2727
+  }
2728
+}

+ 255 - 88
src/app/views/fuwutai/fuwutai.component.ts

@@ -146,6 +146,7 @@ export class FuwutaiComponent implements OnInit {
146 146
   startDeptQt = ""; //其他->选中起点科室
147 147
   endDeptQt = ""; //其他->选中终点科室
148 148
   workOrderRemark = ""; //工单备注
149
+  workOrderRemarkZy = ""; //工单备注
149 150
   // 新建工单弹框
150 151
   newOrderShow = false; //展示/隐藏新建工单弹框
151 152
   newOrderShowOpen = false; //展示/隐藏新建工单弹框(辅助项)
@@ -426,6 +427,7 @@ export class FuwutaiComponent implements OnInit {
426 427
             patientCode: this.validateFormZy.controls.patient.value,
427 428
           },
428 429
           goods: goods,
430
+          workOrderRemark: this.validateFormZy.controls.workOrderRemarkZy.value,
429 431
         },
430 432
       };
431 433
       if (!this.noWorkerPhone) {
@@ -749,6 +751,7 @@ export class FuwutaiComponent implements OnInit {
749 751
       patient: [null, [Validators.required]], //患者信息
750 752
       // patient: [null],//患者信息ca
751 753
       goods: [null], //携带物品
754
+      workOrderRemarkZy: [null], //工单备注
752 755
     });
753 756
     //其他
754 757
     this.validateFormQt = this.fb.group({
@@ -764,9 +767,6 @@ export class FuwutaiComponent implements OnInit {
764 767
     this.retract();
765 768
     this.refresh();
766 769
     this.initOrderScope();
767
-    this.getOrderList(1);
768
-    this.getOrderList(2);
769
-    this.getOrderList(3);
770 770
     this.getVisitList();
771 771
     this.getMessageList();
772 772
     this.initControlView();
@@ -1043,7 +1043,7 @@ export class FuwutaiComponent implements OnInit {
1043 1043
     //呼入回调函数
1044 1044
     TLWSA.onCallin = function (jso) {
1045 1045
       console.log(jso);
1046
-      _this.incidentModel = {};
1046
+      _this.incidentModel = { repairIncidentType: 'dept' };
1047 1047
       _this.callNumber = _this.incidentModel.incomingPhone = jso.caller;//来电的电话
1048 1048
       _this.incidentModel.callID = jso.crs;//来电的话机id
1049 1049
       if (jso) {
@@ -1196,8 +1196,8 @@ export class FuwutaiComponent implements OnInit {
1196 1196
   executionSearchCon: string = ""; //执行中搜索框内容
1197 1197
   workerMessage: any = []; //顶部全部工单
1198 1198
   // 展示形式
1199
-  patientCareCol: number = 6; //顶部工单列数(4列-8人,7列-14人,6列-单排 )
1200
-  hurseInfoHiding = '1'; //护工信息隐藏
1199
+  patientCareCol: number = 7; //顶部工单列数(4列-8人,7列-14人,6列-单排 )
1200
+  hurseInfoHiding = 1; //护工信息隐藏
1201 1201
   txtLabelCol: number = 1; //工单信息列数
1202 1202
   workerInfoTime: number = 60; //配送人员刷新时间
1203 1203
   orderInfoTime: number = 60; //工单刷新时间
@@ -1336,7 +1336,6 @@ export class FuwutaiComponent implements OnInit {
1336 1336
       this.user.user.scope = data.data;
1337 1337
       localStorage.setItem("user", JSON.stringify(this.user));
1338 1338
       this.initOrderScope();
1339
-      this.initControlView();
1340 1339
     } else {
1341 1340
       this.showPromptModal("保存", false, data.msg);
1342 1341
     }
@@ -1352,6 +1351,26 @@ export class FuwutaiComponent implements OnInit {
1352 1351
     this.showInitModal = true;
1353 1352
   }
1354 1353
 
1354
+  // 展示形式
1355
+  showDisplayFormModal: boolean = false;
1356
+  cancelDisplayForm() {
1357
+    this.showDisplayFormModal = false;
1358
+  }
1359
+
1360
+  showDisplayForm() {
1361
+    this.showDisplayFormModal = true;
1362
+  }
1363
+
1364
+  confirmDisplayForm(data){
1365
+    if (data.status == 200) {
1366
+      this.cancelDisplayForm();
1367
+      this.msg.success('保存成功');
1368
+      this.initControlView();
1369
+    } else {
1370
+      this.msg.error(data.msg || '保存失败');
1371
+    }
1372
+  }
1373
+
1355 1374
   // 绑定分机
1356 1375
   showBindExtensionNumberModal: boolean = false;
1357 1376
   cancelBindExtensionNumber() {
@@ -1410,20 +1429,20 @@ export class FuwutaiComponent implements OnInit {
1410 1429
         // 200签入 201摘机 202来电
1411 1430
         if (data.status == 200 && data.phone) {
1412 1431
           this.incomingService.setPhoneNumber(phoneNumber);
1413
-          this.incidentModel = {};
1432
+          this.incidentModel = { repairIncidentType: 'dept' };
1414 1433
           this.incidentMsg = {};
1415 1434
           this.incidentModel.callID = data.callId || undefined;
1416 1435
           this.msg.info('签入成功');
1417 1436
           this.cancelBindExtensionNumber();
1418 1437
         } else if (data.status == 201 && data.phone) {
1419
-          this.incidentModel = {};
1438
+          this.incidentModel = { repairIncidentType: 'dept' };
1420 1439
           this.incidentMsg = {};
1421 1440
           this.incidentModel.callID = data.callId || undefined;
1422 1441
 
1423 1442
           this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data.phone;
1424 1443
           this.searchBxDept();
1425 1444
         } else if (data.status == 201 && data.phone === "") {
1426
-          this.incidentModel = {};
1445
+          this.incidentModel = { repairIncidentType: 'dept' };
1427 1446
           this.incidentMsg = {};
1428 1447
           this.incidentModel.callID = data.callId || undefined;
1429 1448
           //没绑定科室
@@ -1449,24 +1468,27 @@ export class FuwutaiComponent implements OnInit {
1449 1468
   // 呼叫中心---start
1450 1469
   searchBxDept(){
1451 1470
     let dataObj = {
1452
-      idx: 0,
1453
-      sum: 10,
1454
-      department: {
1455
-        searchType: 2,
1456
-        phone: this.incidentModel.incomingPhone,
1457
-      },
1471
+      hosId: this.tool.getCurrentHospital().id,
1472
+      phone: this.incidentModel.incomingPhone,
1458 1473
     };
1459 1474
     this.mainService
1460
-      .getFetchDataList("data", "department", dataObj)
1461
-      .subscribe((result) => {
1462
-        if (result.status == 200) {
1475
+      .findPhoneDept(dataObj)
1476
+      .subscribe((result:any) => {
1477
+        if (result.state == 200) {
1463 1478
           console.log(result);
1464
-          if (result.list.length > 0) {
1479
+          if (result.data.length > 0) {
1480
+            let deptDTO;
1481
+            if(result.type === 'qrCode'){
1482
+              deptDTO = result.data[0].deptDTO;
1483
+              deptDTO.address = result.data[0].name;
1484
+            }else if(result.type === 'dept'){
1485
+              deptDTO = result.data[0];
1486
+            }
1465 1487
             //绑定了科室
1466 1488
             // if (!this.newOrderShow && !this.newOrderShowOpen) {
1467 1489
               let incidentModel:any = Object.assign({}, this.incidentModel);
1468 1490
               let incidentMsg:any = Object.assign({}, this.incidentMsg);
1469
-              incidentModel.department = result.list[0];
1491
+              incidentModel.department = deptDTO;
1470 1492
               incidentModel.department && incidentModel.department.hospital && (incidentModel.hosId = incidentModel.department.hospital.parent ? incidentModel.department.hospital.parent.id : incidentModel.department.hospital.id);
1471 1493
               incidentModel.department && incidentModel.department.building && (incidentModel.area = incidentModel.department.building.id);
1472 1494
               incidentModel.department && incidentModel.department.floor && (incidentModel.place = incidentModel.department.floor.id);
@@ -1479,7 +1501,7 @@ export class FuwutaiComponent implements OnInit {
1479 1501
               this.incidentModel = incidentModel;
1480 1502
               this.incidentMsg = incidentMsg;
1481 1503
               this.searchApplicationRequester();
1482
-              this.applyDeptMiddle = result.list[0];
1504
+              this.applyDeptMiddle = deptDTO;
1483 1505
               this.showNewOrder("yes", this.incidentModel.incomingPhone, true, '来电弹屏');
1484 1506
             // }
1485 1507
           } else {
@@ -1883,7 +1905,7 @@ export class FuwutaiComponent implements OnInit {
1883 1905
         //   });
1884 1906
         //   postData.groups = groups;
1885 1907
         // }
1886
-        if (this.hurseInfoHiding == '1'){
1908
+        if (this.hurseInfoHiding == 1){
1887 1909
           that.workerMessage = [];
1888 1910
           that.initTopCount();
1889 1911
           return;
@@ -1901,7 +1923,7 @@ export class FuwutaiComponent implements OnInit {
1901 1923
         let postData = {
1902 1924
           groups: [typeId],
1903 1925
         };
1904
-        if (this.hurseInfoHiding == '1'){
1926
+        if (this.hurseInfoHiding == 1){
1905 1927
           that.workerMessage = [];
1906 1928
           that.initTopCount();
1907 1929
           return;
@@ -1978,7 +2000,7 @@ export class FuwutaiComponent implements OnInit {
1978 2000
     let types = "";
1979 2001
 
1980 2002
     let postData:any = {
1981
-      orderType: this['orderType' + stateId],
2003
+      orderType: this.orderType,
1982 2004
     };
1983 2005
     // 配送
1984 2006
     if(this.flagList['hsmsFlag' + stateId]){
@@ -2307,9 +2329,9 @@ export class FuwutaiComponent implements OnInit {
2307 2329
   }
2308 2330
 
2309 2331
   // 护工信息展示形式
2310
-  changPatientCareCol(e) {
2311
-    this.initTopCount();
2312
-  }
2332
+  // changPatientCareCol(e) {
2333
+  //   this.initTopCount();
2334
+  // }
2313 2335
 
2314 2336
   // 获取配置文件写死的任务类型ID(送病人回病房9),选择此任务类型的话,患者信息从终点科室获取
2315 2337
   getConfigTasktypeLoading: boolean = false;
@@ -2370,7 +2392,11 @@ export class FuwutaiComponent implements OnInit {
2370 2392
   resetOrderData2(){
2371 2393
     this.fileList = [];
2372 2394
     this.repairImgs = [];
2373
-    this.isRelatedDepartment = true;
2395
+    if(this.incidentModel.repairIncidentType === 'public'){
2396
+      this.isRelatedDepartment = false;
2397
+    }else{
2398
+      this.isRelatedDepartment = true;
2399
+    }
2374 2400
   }
2375 2401
   // 打开新建工单
2376 2402
   deathTasktypeId; //获取这个写死的任务类型的id,送病人回病房
@@ -2393,6 +2419,7 @@ export class FuwutaiComponent implements OnInit {
2393 2419
       this.searchApplicationCategory();
2394 2420
       this.searchApplicationPriority();
2395 2421
       this.searchApplicationSource();
2422
+      this.getRepairIncidentType();
2396 2423
       isInit ? this.searchApplicationDepartment('itsm', undefined, undefined, undefined, true) : this.searchApplicationDepartment('itsm');
2397 2424
       isInit && ((this.isRelatedDepartment && this.incidentModel.department) || (!this.isRelatedDepartment && this.incidentModel.hosId) || this.buildType === '报修转事件' ) && this.incidentModel.hosId && this.searchApplicationBuilding();
2398 2425
       isInit && this.incidentModel.area && this.searchApplicationFloor();
@@ -2403,7 +2430,7 @@ export class FuwutaiComponent implements OnInit {
2403 2430
         this.fixedTab = "newOrder";
2404 2431
         this.currentRTab = 0;
2405 2432
         this.rightTitle_tab = [];
2406
-        this.incidentModel = isInit ? this.incidentModel : {};
2433
+        this.incidentModel = isInit ? this.incidentModel : { repairIncidentType: 'dept' };
2407 2434
         this.incidentMsg = isInit ? this.incidentMsg : {};
2408 2435
         this.isBuildOrderAgagin = false;
2409 2436
         this.applyDept = null;
@@ -2445,7 +2472,7 @@ export class FuwutaiComponent implements OnInit {
2445 2472
     this.fixedTab = "newOrder";
2446 2473
     this.currentRTab = 0;
2447 2474
     this.rightTitle_tab = [];
2448
-    this.incidentModel = isInit ? this.incidentModel : {};
2475
+    this.incidentModel = isInit ? this.incidentModel : { repairIncidentType: 'dept' };
2449 2476
     this.incidentMsg = isInit ? this.incidentMsg : {};
2450 2477
     this.isBuildOrderAgagin = false;
2451 2478
     this.applyDept = null;
@@ -2524,6 +2551,7 @@ export class FuwutaiComponent implements OnInit {
2524 2551
     this.patientZy = null;
2525 2552
     this.goodsNow = [];
2526 2553
     this.workOrderRemark = "";
2554
+    this.workOrderRemarkZy = "";
2527 2555
     this.deptZyList["startDept"] = [];
2528 2556
     this.deptZyList["endDept"] = [];
2529 2557
     this.deptZyList["startStatus"] = 0;
@@ -2842,6 +2870,7 @@ export class FuwutaiComponent implements OnInit {
2842 2870
         "deleteFlag": 0,
2843 2871
         "duty": this.incidentModel.duty ? { id: this.incidentModel.duty.id } : undefined,
2844 2872
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
2873
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
2845 2874
         "alarmType": false,
2846 2875
         "department": this.incidentModel.department ? { id: this.incidentModel.department } : undefined,
2847 2876
         "contactsInformation": this.incidentModel.contactsInformation,
@@ -3117,6 +3146,21 @@ export class FuwutaiComponent implements OnInit {
3117 3146
       this.applicationSourceList = data || [];
3118 3147
     });
3119 3148
   }
3149
+  // 报修类型列表
3150
+  repairIncidentTypeList:any[] = [];
3151
+  getRepairIncidentType() {
3152
+    this.mainService.getDictionary("list", "repair_incident_type").subscribe((data) => {
3153
+      this.repairIncidentTypeList = data || [];
3154
+    });
3155
+  }
3156
+  // 选择报修类型
3157
+  changeRepairIncidentType(value){
3158
+    this.incidentModel.department = undefined;
3159
+    this.incidentMsg.deptManyPhone = '';
3160
+
3161
+    this.isRelatedDepartment = value !== 'public';
3162
+    this.changeApplyRelatedDepartment(this.isRelatedDepartment);
3163
+  }
3120 3164
   // 楼栋列表
3121 3165
   applicationBuildingList:any[] = [];
3122 3166
   searchApplicationBuilding(keyWord?, buildingId?) {
@@ -3406,6 +3450,7 @@ export class FuwutaiComponent implements OnInit {
3406 3450
     this.goodsNow = [];
3407 3451
     this.patientList = [];
3408 3452
     this.workOrderRemark = "";
3453
+    this.workOrderRemarkZy = "";
3409 3454
     this.deptZyList["startDept"] = [];
3410 3455
     this.deptZyList["endDept"] = [];
3411 3456
     this.deptZyList["startStatus"] = 0;
@@ -3492,6 +3537,11 @@ export class FuwutaiComponent implements OnInit {
3492 3537
   maskFlag:any = false;
3493 3538
   // 运维-直接解决
3494 3539
   directOrder(){
3540
+    if(this.incidentModel.repairIncidentType === 'public' && !this.incidentModel.requester){
3541
+      this.msg.warning('请选择申请人!');
3542
+      return;
3543
+    }
3544
+
3495 3545
     if(!this.incidentModel.category){
3496 3546
       this.msg.warning('请选择故障现象!');
3497 3547
       return;
@@ -3503,7 +3553,7 @@ export class FuwutaiComponent implements OnInit {
3503 3553
       return;
3504 3554
     }
3505 3555
 
3506
-    if(!this.incidentModel.department){
3556
+    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
3507 3557
       this.msg.warning('请选择申请科室!');
3508 3558
       return;
3509 3559
     }
@@ -3537,6 +3587,11 @@ export class FuwutaiComponent implements OnInit {
3537 3587
   }
3538 3588
   // 运维-建单并派单
3539 3589
   assignOrder(){
3590
+    if(this.incidentModel.repairIncidentType === 'public' && !this.incidentModel.requester){
3591
+      this.msg.warning('请选择申请人!');
3592
+      return;
3593
+    }
3594
+
3540 3595
     if(!this.incidentModel.category){
3541 3596
       this.msg.warning('请选择故障现象!');
3542 3597
       return;
@@ -3549,7 +3604,7 @@ export class FuwutaiComponent implements OnInit {
3549 3604
       return;
3550 3605
     }
3551 3606
 
3552
-    if(!this.incidentModel.department){
3607
+    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
3553 3608
       this.msg.warning('请选择申请科室!');
3554 3609
       return;
3555 3610
     }
@@ -3598,6 +3653,7 @@ export class FuwutaiComponent implements OnInit {
3598 3653
         "description": this.incidentModel.description,
3599 3654
         "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
3600 3655
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
3656
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
3601 3657
         "acceptUser": { id: this.tool.getCurrentUserId() },
3602 3658
         "callID": this.incidentModel.callID || undefined,
3603 3659
         "incomingPhone": this.incidentModel.incomingPhone || undefined,
@@ -3672,6 +3728,7 @@ export class FuwutaiComponent implements OnInit {
3672 3728
         "description": this.incidentModel.description,
3673 3729
         "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
3674 3730
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
3731
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
3675 3732
         "acceptUser": { id: this.tool.getCurrentUserId() },
3676 3733
         "callID": this.incidentModel.callID || undefined,
3677 3734
         "incomingPhone": this.incidentModel.incomingPhone || undefined,
@@ -3718,6 +3775,11 @@ export class FuwutaiComponent implements OnInit {
3718 3775
 
3719 3776
   // 运维-保存
3720 3777
   saveOrder(){
3778
+    if(this.incidentModel.repairIncidentType === 'public' && !this.incidentModel.requester){
3779
+      this.msg.warning('请选择申请人!');
3780
+      return;
3781
+    }
3782
+
3721 3783
     if(!this.incidentModel.category){
3722 3784
       this.msg.warning('请选择故障现象!');
3723 3785
       return;
@@ -3729,7 +3791,7 @@ export class FuwutaiComponent implements OnInit {
3729 3791
       return;
3730 3792
     }
3731 3793
 
3732
-    if(!this.incidentModel.department){
3794
+    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
3733 3795
       this.msg.warning('请选择申请科室!');
3734 3796
       return;
3735 3797
     }
@@ -3772,6 +3834,7 @@ export class FuwutaiComponent implements OnInit {
3772 3834
         "description": this.incidentModel.description,
3773 3835
         "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
3774 3836
         "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
3837
+        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
3775 3838
         "acceptUser": { id: this.tool.getCurrentUserId() },
3776 3839
         "callID": this.incidentModel.callID || undefined,
3777 3840
         "incomingPhone": this.incidentModel.incomingPhone || undefined,
@@ -4423,6 +4486,7 @@ export class FuwutaiComponent implements OnInit {
4423 4486
     this.goodsNow = [];
4424 4487
     this.patientList = [];
4425 4488
     this.workOrderRemark = "";
4489
+    this.workOrderRemarkZy = "";
4426 4490
     this.deptZyList["startDept"] = [];
4427 4491
     this.deptZyList["endDept"] = [];
4428 4492
     this.deptZyList["startStatus"] = 0;
@@ -4593,9 +4657,6 @@ export class FuwutaiComponent implements OnInit {
4593 4657
   // 初始化展示形式
4594 4658
   controlView = {}; //展示形式
4595 4659
   initControlView() {
4596
-    if(!this.hsmsData.hsmsSwitch){
4597
-      return;
4598
-    }
4599 4660
     let that = this;
4600 4661
     let postData = {
4601 4662
       controlView: {},
@@ -4607,24 +4668,31 @@ export class FuwutaiComponent implements OnInit {
4607 4668
       .subscribe((data) => {
4608 4669
         that.controlView = data.list[0] ? data.list[0] : [];
4609 4670
         if (!data.list.length) return;
4610
-        switch (data.list[0].workerNum) {
4611
-          case 1:
4612
-            that.patientCareCol = 6;
4613
-            break;
4614
-          case 2:
4615
-            that.patientCareCol = 7;
4616
-            break;
4617
-          case 3:
4618
-            that.patientCareCol = 4;
4619
-            break;
4620
-        }
4621
-        this.hurseInfoHiding = data.list[0].hurseInfoHiding ? "1" : "0";
4622
-        that.txtLabelCol = data.list[0].labelNum;
4671
+        // switch (data.list[0].workerNum) {
4672
+        //   case 1:
4673
+        //     that.patientCareCol = 6;
4674
+        //     break;
4675
+        //   case 2:
4676
+        //     that.patientCareCol = 7;
4677
+        //     break;
4678
+        //   case 3:
4679
+        //     that.patientCareCol = 4;
4680
+        //     break;
4681
+        // }
4682
+        that.patientCareCol = 7;
4683
+        this.hurseInfoHiding = data.list[0].hurseInfoHiding ? 1 : 0;
4684
+        // that.txtLabelCol = data.list[0].labelNum;
4685
+        that.txtLabelCol = 1;
4623 4686
         that.orderRefreshTime = that.orderInfoTime = data.list[0].orderInfoTime;
4624 4687
         that.workerRefreshTime = that.workerInfoTime =
4625 4688
           data.list[0].workerInfoTime;
4626 4689
         that.audioNotDispatched = data.list[0].unsendOrderVoice !== false;
4690
+        this.orderType = data.list[0].orderType || 'priority';
4627 4691
         that.checkTab(this.typeId);
4692
+
4693
+        this.getOrderList(1);
4694
+        this.getOrderList(2);
4695
+        this.getOrderList(3);
4628 4696
       });
4629 4697
   }
4630 4698
 
@@ -4652,7 +4720,8 @@ export class FuwutaiComponent implements OnInit {
4652 4720
         workerInfoTime: that.workerInfoTime,
4653 4721
         orderInfoTime: that.orderInfoTime,
4654 4722
         unsendOrderVoice: that.audioNotDispatched,
4655
-        hurseInfoHiding: that.hurseInfoHiding === "1",
4723
+        hurseInfoHiding: that.hurseInfoHiding === 1,
4724
+        orderType: this.orderType,
4656 4725
       },
4657 4726
     };
4658 4727
     if (that.controlView["id"]) {
@@ -4665,10 +4734,10 @@ export class FuwutaiComponent implements OnInit {
4665 4734
       .subscribe((data) => {
4666 4735
         that.saveLoading = false;
4667 4736
         if (data.status == 200) {
4668
-          that.showPromptModal("保存", true, "");
4669
-          that.initControlView();
4737
+          that.msg.success('排序成功');
4738
+          this.initControlView();
4670 4739
         } else {
4671
-          that.showPromptModal("保存", false, data.msg);
4740
+          that.msg.error(data.msg || '排序失败');
4672 4741
         }
4673 4742
       });
4674 4743
   }
@@ -4695,23 +4764,23 @@ export class FuwutaiComponent implements OnInit {
4695 4764
 
4696 4765
   showPromptModalRefresh(){
4697 4766
     this.getUnassignedBuilding2();
4698
-      this.resetList();
4699
-      this.getOrderList(1);
4700
-      this.getOrderList(2);
4701
-      this.getOrderList(3);
4702
-      this.getVisitList();
4703
-      this.getMessageList();
4704
-      if (this.currentRTab === 0) {
4705
-        this.getWorkOrders(this.applyDept);
4706
-      } else if (this.currentRTab === 1) {
4707
-        this.getPatientLog(this.applyDept);
4708
-      } else if (this.currentRTab === 2) {
4709
-        this.getItsmOrders(this.incidentModel.department);
4710
-      } else if (this.currentRTab === 3) {
4711
-        this.getDictionaryList();
4712
-      }
4713
-      this.fixedTab = "";
4714
-      this.fixedMenuShangla();
4767
+    this.resetList();
4768
+    this.getOrderList(1);
4769
+    this.getOrderList(2);
4770
+    this.getOrderList(3);
4771
+    this.getVisitList();
4772
+    this.getMessageList();
4773
+    if (this.currentRTab === 0) {
4774
+      this.getWorkOrders(this.applyDept);
4775
+    } else if (this.currentRTab === 1) {
4776
+      this.getPatientLog(this.applyDept);
4777
+    } else if (this.currentRTab === 2) {
4778
+      this.getItsmOrders(this.incidentModel.department);
4779
+    } else if (this.currentRTab === 3) {
4780
+      this.getDictionaryList();
4781
+    }
4782
+    this.fixedTab = "";
4783
+    this.fixedMenuShangla();
4715 4784
   }
4716 4785
 
4717 4786
   // 格式化时分秒
@@ -4867,12 +4936,10 @@ export class FuwutaiComponent implements OnInit {
4867 4936
   }
4868 4937
 
4869 4938
   // 排序
4870
-  orderType1:any = 'priority';//priority:优先级,time:时间
4871
-  orderType2:any = 'priority';//priority:优先级,time:时间
4872
-  orderType3:any = 'priority';//priority:优先级,time:时间
4873
-  orderList(state){
4874
-    this['orderType' + state] = this['orderType' + state] === 'priority' ? 'time' : 'priority';
4875
-    this.getOrderList(state, state === 1);
4939
+  orderType: string = 'priority'; //排序方式 priority:优先级,time:时间
4940
+  orderList(){
4941
+    this.orderType = this.orderType === 'priority' ? 'time' : 'priority';
4942
+    this.saveControlView();
4876 4943
   }
4877 4944
 
4878 4945
   // 优先级颜色
@@ -4921,6 +4988,10 @@ export class FuwutaiComponent implements OnInit {
4921 4988
     incidentModel.requester && (incidentMsg.requesterPhone = incidentModel.requester.phone);
4922 4989
     incidentModel.requester && (incidentMsg.requesterName = incidentModel.requester.name);
4923 4990
     incidentModel.requester && (incidentModel.requester = incidentModel.requester.id);
4991
+    if(incidentModel.repairIncidentType){
4992
+      incidentModel.repairIncidentType = incidentModel.repairIncidentType.value
4993
+      this.changeRepairIncidentType(incidentModel.repairIncidentType);
4994
+    }
4924 4995
     incidentModel.source && (incidentModel.source = incidentModel.source.id);
4925 4996
     incidentModel.area && (incidentModel.area = incidentModel.area.id);
4926 4997
     incidentModel.place && (incidentModel.place = incidentModel.place.id);
@@ -4951,6 +5022,10 @@ export class FuwutaiComponent implements OnInit {
4951 5022
     incidentModel.requester && (incidentMsg.requesterPhone = incidentModel.requester.phone);
4952 5023
     incidentModel.requester && (incidentMsg.requesterName = incidentModel.requester.name);
4953 5024
     incidentModel.requester && (incidentModel.requester = incidentModel.requester.id);
5025
+    if(incidentModel.repairIncidentType){
5026
+      incidentModel.repairIncidentType = incidentModel.repairIncidentType.value
5027
+      this.changeRepairIncidentType(incidentModel.repairIncidentType);
5028
+    }
4954 5029
     incidentModel.source && (incidentModel.source = incidentModel.source.id);
4955 5030
     incidentModel.area && (incidentModel.area = incidentModel.area.id);
4956 5031
     incidentModel.place && (incidentModel.place = incidentModel.place.id);
@@ -5049,6 +5124,10 @@ export class FuwutaiComponent implements OnInit {
5049 5124
     incidentModel.requester && (incidentMsg.requesterPhone = incidentModel.requester.phone);
5050 5125
     incidentModel.requester && (incidentMsg.requesterName = incidentModel.requester.name);
5051 5126
     incidentModel.requester && (incidentModel.requester = incidentModel.requester.id);
5127
+    if(incidentModel.repairIncidentType){
5128
+      incidentModel.repairIncidentType = incidentModel.repairIncidentType.value
5129
+      this.changeRepairIncidentType(incidentModel.repairIncidentType);
5130
+    }
5052 5131
     incidentModel.source && (incidentModel.source = incidentModel.source.id);
5053 5132
     incidentModel.area && (incidentModel.area = incidentModel.area.id);
5054 5133
     incidentModel.place && (incidentModel.place = incidentModel.place.id);
@@ -5218,23 +5297,19 @@ export class FuwutaiComponent implements OnInit {
5218 5297
     if(e.data){
5219 5298
       // 留言创建工单
5220 5299
       let postData = {
5221
-        idx: 0,
5222
-        sum: 10,
5223
-        department: {
5224
-          searchType: 2,
5225
-          phone: e.data.ano,
5226
-        },
5300
+        hosId: this.tool.getCurrentHospital().id,
5301
+        phone: e.data.ano,
5227 5302
       };
5228 5303
       this.maskFlag = this.msg.loading("正在加载中..", {
5229 5304
         nzDuration: 0,
5230 5305
       }).messageId;
5231 5306
 
5232 5307
       this.mainService
5233
-        .getFetchDataList("data", "department", postData)
5234
-        .subscribe((result) => {
5308
+        .findPhoneDept(postData)
5309
+        .subscribe((result:any) => {
5235 5310
           this.msg.remove(this.maskFlag);
5236 5311
           this.maskFlag = false;
5237
-          if (result.status == 200) {
5312
+          if (result.state == 200) {
5238 5313
             this.mainService.getDictionary("list", "incident_source").subscribe((res) => {
5239 5314
               let sourceList = res || [];
5240 5315
               let incidentModel:any = {
@@ -5244,9 +5319,16 @@ export class FuwutaiComponent implements OnInit {
5244 5319
               let incidentMsg:any = {};
5245 5320
               let source = sourceList.find(v => v.value === 'record');
5246 5321
               source && (incidentModel.source = source.id);
5247
-              if (result.list.length > 0) {
5322
+              if (result.data.length > 0) {
5248 5323
                 //绑定了科室
5249
-                incidentModel.department = result.list[0];
5324
+                let deptDTO;
5325
+                if(result.type === 'qrCode'){
5326
+                  deptDTO = result.data[0].deptDTO;
5327
+                  deptDTO.address = result.data[0].name;
5328
+                }else if(result.type === 'dept'){
5329
+                  deptDTO = result.data[0];
5330
+                }
5331
+                incidentModel.department = deptDTO;
5250 5332
                 incidentModel.department && incidentModel.department.hospital && (incidentModel.hosId = incidentModel.department.hospital.parent ? incidentModel.department.hospital.parent.id : incidentModel.department.hospital.id);
5251 5333
                 incidentModel.department && incidentModel.department.building && (incidentModel.area = incidentModel.department.building.id);
5252 5334
                 incidentModel.department && incidentModel.department.floor && (incidentModel.place = incidentModel.department.floor.id);
@@ -5255,6 +5337,8 @@ export class FuwutaiComponent implements OnInit {
5255 5337
                 incidentModel.department && (incidentMsg.deptName = incidentModel.department.dept);
5256 5338
 
5257 5339
                 incidentModel.department && (incidentModel.department = incidentModel.department.id);
5340
+                incidentModel.repairIncidentType = 'dept';
5341
+                this.changeRepairIncidentType(incidentModel.repairIncidentType);
5258 5342
                 this.incidentModel = incidentModel;
5259 5343
                 console.log('this.incidentModel:', this.incidentModel)
5260 5344
                 this.incidentMsg = incidentMsg;
@@ -5280,4 +5364,87 @@ export class FuwutaiComponent implements OnInit {
5280 5364
   closeCall(e) {
5281 5365
     this.callShow = e.show;
5282 5366
   }
5367
+
5368
+  // 详细地址获取焦点
5369
+  isShowAddressList:boolean = false;
5370
+  focusAddress(){
5371
+    this.isShowAddressList = true;
5372
+    this.getAddressList();
5373
+  }
5374
+
5375
+  // 点击其他位置
5376
+  clickExtra(e){
5377
+    if(document.documentElement.contains(document.querySelector('.addressList')) && e.target !== document.querySelector('.addressFocus')){
5378
+      this.isShowAddressList = false;
5379
+    }
5380
+    if(document.documentElement.contains(document.querySelector('.noteList')) && e.target !== document.querySelector('.noteFocus')){
5381
+      this.isShowNoteList = false;
5382
+    }
5383
+  }
5384
+
5385
+  // 选择地址
5386
+  selectAddress(name){
5387
+    this.incidentModel.houseNumber = name;
5388
+    this.isShowAddressList = false;
5389
+  }
5390
+
5391
+  // 获取科室地点列表
5392
+  addressList:any[] = [];
5393
+  addressLoading:boolean = false;
5394
+  getAddressList() {
5395
+    if(!this.incidentModel.department){
5396
+      this.addressList = [];
5397
+      return;
5398
+    }
5399
+    let postData = {
5400
+      idx: 0,
5401
+      sum: 99999,
5402
+      qrCode: {
5403
+        deptId: this.incidentModel.department,
5404
+      }
5405
+    };
5406
+    this.addressLoading = true;
5407
+    this.mainService.getFetchDataList("simple/data", "qrCode", postData).subscribe(result=>{
5408
+      this.addressLoading = false;
5409
+      if(result.status == 200){
5410
+        this.addressList = result.list || [];
5411
+      }else{
5412
+        this.addressList = [];
5413
+      }
5414
+    });
5415
+  }
5416
+
5417
+  // 选择患者
5418
+  selectPatientZy(e){
5419
+    let patient = this.patientList.find(v => v.patientCode === e);
5420
+    if(patient){
5421
+      this.workOrderRemarkZy = patient.remark || '';
5422
+    }else{
5423
+      this.workOrderRemarkZy = '';
5424
+    }
5425
+  }
5426
+
5427
+  // 注意事项获取焦点
5428
+  isShowNoteList:boolean = false;
5429
+  focusNote(){
5430
+    this.isShowNoteList = true;
5431
+    this.getNoteList();
5432
+  }
5433
+
5434
+  // 选择注意事项
5435
+  selectNote(name){
5436
+    this.workOrderRemarkZy = name;
5437
+    this.isShowNoteList = false;
5438
+  }
5439
+
5440
+  // 获取注意事项列表
5441
+  noteList:any[] = [];
5442
+  noteLoading:boolean = false;
5443
+  getNoteList() {
5444
+    this.noteLoading = true;
5445
+    this.mainService.getDictionary('list', 'inspect_notes',).subscribe(result=>{
5446
+      this.noteLoading = false;
5447
+      this.noteList = result || [];
5448
+    });
5449
+  }
5283 5450
 }

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

@@ -18,6 +18,7 @@ import { IncidentSerMessageModule } from 'src/app/components/incidentManagement/
18 18
 import { IncidentSerCallModule } from 'src/app/components/incidentManagement/incident-ser-call/incident-ser-call.module';
19 19
 import { VirtualScrollerModule } from 'ngx-virtual-scroller';
20 20
 import { BindExtensionNumberModule } from 'src/app/components/bind-extension-number/bind-extension-number.module';
21
+import { DisplayFormModule } from 'src/app/components/display-form/display-form.module';
21 22
 
22 23
 
23 24
 @NgModule({
@@ -41,6 +42,7 @@ import { BindExtensionNumberModule } from 'src/app/components/bind-extension-num
41 42
     IncidentSerCallModule,
42 43
     VirtualScrollerModule,
43 44
     BindExtensionNumberModule,
45
+    DisplayFormModule,
44 46
   ]
45 47
 })
46 48
 export class FuwutaiModule { }

+ 167 - 418
src/app/views/hushijiandan/hushijiandan.component.html

@@ -39,14 +39,14 @@
39 39
               <div class="item" *ngFor="let item of patientList">
40 40
                 <div class="itemTit txtC" style="font-weight: bold">
41 41
                   <ng-container *ngIf="item.illnessState">
42
-                    <i *ngIf="item.illnessState.value === '2'" class="colorRed icon_transport transport-wei" nz-tooltip nzTooltipTitle="病危"></i>
43
-                    <i *ngIf="item.illnessState.value === '3'" class="colorRed icon_transport transport-zhong1" nz-tooltip nzTooltipTitle="病重"></i>
42
+                    <i *ngIf="item.illnessState.value === '2'" class="colorRed icon_transport transport-wei" nz-tooltip [nzTooltipTitle]="item.illnessState.name"></i>
43
+                    <i *ngIf="item.illnessState.value === '3'" class="colorRed icon_transport transport-zhong1" nz-tooltip [nzTooltipTitle]="item.illnessState.name"></i>
44 44
                   </ng-container>
45 45
                   <ng-container *ngIf="item.careLevel">
46
-                    <i *ngIf="item.careLevel.value === '0'" class="icon_transport transport-te1" nz-tooltip nzTooltipTitle="特级护理"></i>
47
-                    <i *ngIf="item.careLevel.value === '1'" class="icon_transport transport-Bduanshuzi1" nz-tooltip nzTooltipTitle="一级护理"></i>
48
-                    <i *ngIf="item.careLevel.value === '2'" class="icon_transport transport-Bduanshuzi" nz-tooltip nzTooltipTitle="二级护理"></i>
49
-                    <i *ngIf="item.careLevel.value === '3'" class="icon_transport transport-Bduanshuzi11" nz-tooltip nzTooltipTitle="三级护理"></i>
46
+                    <i *ngIf="item.careLevel.value === '0'" class="icon_transport transport-te1" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
47
+                    <i *ngIf="item.careLevel.value === '1'" class="icon_transport transport-Bduanshuzi1" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
48
+                    <i *ngIf="item.careLevel.value === '2'" class="icon_transport transport-Bduanshuzi" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
49
+                    <i *ngIf="item.careLevel.value === '3'" class="icon_transport transport-Bduanshuzi11" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
50 50
                   </ng-container>
51 51
                   <span nz-tooltip [nzTooltipTitle]="recentInfo" nzTooltipPlacement="right" [nzMouseEnterDelay]="1" (mouseenter)="getRecentInfo(item.patientCode)">{{ item.patientName }}({{ item.bedNum }})</span>
52 52
                 </div>
@@ -86,14 +86,14 @@
86 86
               <div class="item" *ngFor="let item of patientList">
87 87
                 <div class="itemTit txtC" style="font-weight: bold">
88 88
                   <ng-container *ngIf="item.illnessState">
89
-                    <i *ngIf="item.illnessState.value === '2'" class="colorRed icon_transport transport-wei" nz-tooltip nzTooltipTitle="病危"></i>
90
-                    <i *ngIf="item.illnessState.value === '3'" class="colorRed icon_transport transport-zhong1" nz-tooltip nzTooltipTitle="病重"></i>
89
+                    <i *ngIf="item.illnessState.value === '2'" class="colorRed icon_transport transport-wei" nz-tooltip [nzTooltipTitle]="item.illnessState.name"></i>
90
+                    <i *ngIf="item.illnessState.value === '3'" class="colorRed icon_transport transport-zhong1" nz-tooltip [nzTooltipTitle]="item.illnessState.name"></i>
91 91
                   </ng-container>
92 92
                   <ng-container *ngIf="item.careLevel">
93
-                    <i *ngIf="item.careLevel.value === '0'" class="icon_transport transport-te1" nz-tooltip nzTooltipTitle="特级护理"></i>
94
-                    <i *ngIf="item.careLevel.value === '1'" class="icon_transport transport-Bduanshuzi1" nz-tooltip nzTooltipTitle="一级护理"></i>
95
-                    <i *ngIf="item.careLevel.value === '2'" class="icon_transport transport-Bduanshuzi" nz-tooltip nzTooltipTitle="二级护理"></i>
96
-                    <i *ngIf="item.careLevel.value === '3'" class="icon_transport transport-Bduanshuzi11"  nz-tooltip nzTooltipTitle="三级护理"></i>
93
+                    <i *ngIf="item.careLevel.value === '0'" class="icon_transport transport-te1" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
94
+                    <i *ngIf="item.careLevel.value === '1'" class="icon_transport transport-Bduanshuzi1" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
95
+                    <i *ngIf="item.careLevel.value === '2'" class="icon_transport transport-Bduanshuzi" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
96
+                    <i *ngIf="item.careLevel.value === '3'" class="icon_transport transport-Bduanshuzi11" nz-tooltip [nzTooltipTitle]="item.careLevel.name"></i>
97 97
                   </ng-container>
98 98
                   <span nz-tooltip [nzTooltipTitle]="recentInfo" nzTooltipPlacement="right" [nzMouseEnterDelay]="1" (mouseenter)="getRecentInfo(item.patientCode)">{{ item.patientName }}({{ currentDept.typeValue == 'outpatientService' ? item.cardNo : item.bedNum }})</span>
99 99
                 </div>
@@ -146,14 +146,14 @@
146 146
               <div class="item" *ngFor="let item of patientList">
147 147
                 <div class="itemTit txtC" style="font-weight: bold">
148 148
                   <ng-container *ngIf="item.patientDTO && item.patientDTO.illnessState">
149
-                    <i *ngIf="item.patientDTO && item.patientDTO.illnessState.value === '2'" class="colorRed icon_transport transport-wei" nz-tooltip nzTooltipTitle="病危"></i>
150
-                    <i *ngIf="item.patientDTO && item.patientDTO.illnessState.value === '3'" class="colorRed icon_transport transport-zhong1" nz-tooltip nzTooltipTitle="病重"></i>
149
+                    <i *ngIf="item.patientDTO && item.patientDTO.illnessState.value === '2'" class="colorRed icon_transport transport-wei" nz-tooltip [nzTooltipTitle]="item.patientDTO.illnessState.name"></i>
150
+                    <i *ngIf="item.patientDTO && item.patientDTO.illnessState.value === '3'" class="colorRed icon_transport transport-zhong1" nz-tooltip [nzTooltipTitle]="item.patientDTO.illnessState.name"></i>
151 151
                   </ng-container>
152 152
                   <ng-container *ngIf="item.patientDTO && item.patientDTO.careLevel">
153
-                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '0'" class="icon_transport transport-te1" nz-tooltip nzTooltipTitle="特级护理"></i>
154
-                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '1'" class="icon_transport transport-Bduanshuzi1" nz-tooltip nzTooltipTitle="一级护理"></i>
155
-                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '2'" class="icon_transport transport-Bduanshuzi" nz-tooltip nzTooltipTitle="二级护理"></i>
156
-                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '3'" class="icon_transport transport-Bduanshuzi11" nz-tooltip nzTooltipTitle="三级护理"></i>
153
+                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '0'" class="icon_transport transport-te1" nz-tooltip [nzTooltipTitle]="item.patientDTO.careLevel.name"></i>
154
+                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '1'" class="icon_transport transport-Bduanshuzi1" nz-tooltip [nzTooltipTitle]="item.patientDTO.careLevel.name"></i>
155
+                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '2'" class="icon_transport transport-Bduanshuzi" nz-tooltip [nzTooltipTitle]="item.patientDTO.careLevel.name"></i>
156
+                    <i *ngIf="item.patientDTO && item.patientDTO.careLevel.value === '3'" class="icon_transport transport-Bduanshuzi11" nz-tooltip [nzTooltipTitle]="item.patientDTO.careLevel.name"></i>
157 157
                   </ng-container>
158 158
                   <span>{{ item.patientDTO ? item.patientDTO.patientName : '' }}({{ item.patientDTO ? item.patientDTO.residenceNo : '' }})</span>
159 159
                 </div>
@@ -264,13 +264,13 @@
264 264
                                   *ngIf="surgeryWKOMsg.patientDTO && surgeryWKOMsg.patientDTO.illnessState.value === '2'"
265 265
                                   class="colorRed icon_transport transport-wei"
266 266
                                   nz-tooltip
267
-                                  nzTooltipTitle="病危"
267
+                                  [nzTooltipTitle]="surgeryWKOMsg.patientDTO.illnessState.name"
268 268
                                 ></i>
269 269
                                 <i
270 270
                                   *ngIf="surgeryWKOMsg.patientDTO && surgeryWKOMsg.patientDTO.illnessState.value === '3'"
271 271
                                   class="colorRed icon_transport transport-zhong1"
272 272
                                   nz-tooltip
273
-                                  nzTooltipTitle="病重"
273
+                                  [nzTooltipTitle]="surgeryWKOMsg.patientDTO.illnessState.name"
274 274
                                 ></i>
275 275
                               </ng-container>
276 276
                               <ng-container *ngIf="surgeryWKOMsg.patientDTO && surgeryWKOMsg.patientDTO.careLevel">
@@ -278,25 +278,25 @@
278 278
                                   *ngIf="surgeryWKOMsg.patientDTO && surgeryWKOMsg.patientDTO.careLevel.value === '0'"
279 279
                                   class="icon_transport transport-te1"
280 280
                                   nz-tooltip
281
-                                  nzTooltipTitle="特级护理"
281
+                                  [nzTooltipTitle]="surgeryWKOMsg.patientDTO.careLevel.name"
282 282
                                 ></i>
283 283
                                 <i
284 284
                                   *ngIf="surgeryWKOMsg.patientDTO && surgeryWKOMsg.patientDTO.careLevel.value === '1'"
285 285
                                   class="icon_transport transport-Bduanshuzi1"
286 286
                                   nz-tooltip
287
-                                  nzTooltipTitle="一级护理"
287
+                                  [nzTooltipTitle]="surgeryWKOMsg.patientDTO.careLevel.name"
288 288
                                 ></i>
289 289
                                 <i
290 290
                                   *ngIf="surgeryWKOMsg.patientDTO && surgeryWKOMsg.patientDTO.careLevel.value === '2'"
291 291
                                   class="icon_transport transport-Bduanshuzi"
292 292
                                   nz-tooltip
293
-                                  nzTooltipTitle="二级护理"
293
+                                  [nzTooltipTitle]="surgeryWKOMsg.patientDTO.careLevel.name"
294 294
                                 ></i>
295 295
                                 <i
296 296
                                   *ngIf="surgeryWKOMsg.patientDTO && surgeryWKOMsg.patientDTO.careLevel.value === '3'"
297 297
                                   class="icon_transport transport-Bduanshuzi11"
298 298
                                   nz-tooltip
299
-                                  nzTooltipTitle="三级护理"
299
+                                  [nzTooltipTitle]="surgeryWKOMsg.patientDTO.careLevel.name"
300 300
                                 ></i>
301 301
                               </ng-container>
302 302
                               <strong>{{ surgeryWKOMsg.patientDTO ? surgeryWKOMsg.patientDTO.patientName : '' }}({{ surgeryWKOMsg.patientDTO ? surgeryWKOMsg.patientDTO.residenceNo : '' }})</strong>
@@ -526,7 +526,7 @@
526 526
               </div>
527 527
               <!-- 其他任务建单 -->
528 528
               <ng-container *ngIf="othersList[checkedTableType]">
529
-                <div style="flex: 1; height: 100%; position: relative">
529
+                <div style="flex: 1; height: 100%;min-height:0;; position: relative">
530 530
                   <div class="otherBox">
531 531
                     <div class="otherBoxInner">
532 532
                       <div class="otherBox-nav">
@@ -756,7 +756,7 @@
756 756
               <!-- 意见箱 -->
757 757
               <div
758 758
                 *ngIf="checkedTableType == 'advice'"
759
-                style="flex: 1; height: 100%"
759
+                style="flex: 1; height: 100%;min-height:0;"
760 760
               >
761 761
                 <div
762 762
                   class="searchBox display_flex align-items_center justify-content_space-between"
@@ -852,7 +852,7 @@
852 852
                 </div>
853 853
               </div>
854 854
               <!-- 手术排程信息 -->
855
-              <div *ngIf="checkedTableType == 'surgery'" style="flex: 1; height: 100%">
855
+              <div *ngIf="checkedTableType == 'surgery'" style="flex: 1; height: 100%;min-height:0;">
856 856
                 <div class="searchBox display_flex align-items_center justify-content_space-between">
857 857
                   <div class="left alignC display_flex justify-content_flex-center align-items_center">
858 858
 										<span class="label">排程时间:</span>
@@ -924,7 +924,7 @@
924 924
                 </div>
925 925
               </div>
926 926
               <!-- 门诊帮扶预约 -->
927
-              <div *ngIf="checkedTableType == 'outpatientHelpAppointment'" style="flex: 1; height: 100%">
927
+              <div *ngIf="checkedTableType == 'outpatientHelpAppointment'" style="flex: 1; height: 100%;min-height:0;">
928 928
                 <div class="searchBox display_flex align-items_center justify-content_space-between">
929 929
                   <div class="left alignC display_flex justify-content_flex-center align-items_center">
930 930
                     <div>预约时间:</div>
@@ -992,7 +992,7 @@
992 992
               <!-- 历史标本查询 -->
993 993
               <div
994 994
                 *ngIf="checkedTableType == 'historySpecimen'"
995
-                style="flex: 1; height: 100%"
995
+                style="flex: 1; height: 100%;min-height:0;"
996 996
               >
997 997
                 <div
998 998
                   class="searchBox display_flex align-items_center justify-content_space-between"
@@ -1102,7 +1102,7 @@
1102 1102
               <!-- 历史药单查询 -->
1103 1103
               <div
1104 1104
                 *ngIf="checkedTableType == 'historyDrugsbag'"
1105
-                style="flex: 1; height: 100%"
1105
+                style="flex: 1; height: 100%;min-height:0;"
1106 1106
               >
1107 1107
                 <div
1108 1108
                   class="searchBox display_flex align-items_center justify-content_space-between"
@@ -1200,7 +1200,7 @@
1200 1200
               <!-- 报修列表 -->
1201 1201
               <div
1202 1202
                 *ngIf="checkedTableType == 'bxlb' && isShowBx && coopBtns.repairList"
1203
-                style="flex: 1; height: 100%"
1203
+                style="flex: 1; height: 100%;min-height:0;"
1204 1204
               >
1205 1205
                 <div
1206 1206
                   class="searchBox display_flex align-items_center justify-content_space-between"
@@ -1427,54 +1427,34 @@
1427 1427
 </div>
1428 1428
 
1429 1429
 <!-- 患者信息一键建单模态框 -->
1430
-<div
1431
-  class="save display_flex align-items_center justify-content_flex-center patient"
1432
-  *ngIf="patientModal"
1433
->
1434
-  <div class="modalBody" style="width: 500px">
1435
-    <div class="title">
1436
-      患者送检<i
1437
-        class="icon_transport transport-guanbi"
1438
-        (click)="hidePatientOrder()"
1439
-      ></i>
1440
-    </div>
1441
-    <overlay-scrollbars
1442
-      #osComponentRef7
1443
-      class="content"
1444
-      style="max-height: 80vh"
1445
-    >
1446
-      <div class="jiTit borderB" *ngIf="checkedShowMsg.msg">
1447
-        提示:您即将创建<b style="color: red">{{ patientMsg.patientName }}</b
1448
-        >患者检查,{{ checkedShowMsg.msg }}
1449
-      </div>
1450
-      <div class="jiTit borderB" *ngIf="!checkedShowMsg.msg">
1451
-        提示:您即将创建<b style="color: red">{{ patientMsg.patientName }}</b
1452
-        >患者检查
1453
-      </div>
1454
-      <div class="jiTit borderB jiTitB">
1455
-        如患者无预约检查无法进行“当天预约检查时”,可使用“特殊情况送检”进行建单。
1430
+<div class="save display_flex align-items_center justify-content_flex-center patient" *ngIf="patientModal" (click)="clickExtra($event)">
1431
+  <div class="modalBody">
1432
+    <div class="title">患者送检<i class="icon_transport transport-guanbi" (click)="hidePatientOrder()"></i></div>
1433
+    <overlay-scrollbars #osComponentRef7 class="content" style="max-height: 80vh">
1434
+      <div class="patientMsg">
1435
+        <div class="patientMsgTips">患者姓名:{{patientMsg.patientName}}</div>
1436
+        <div class="patientMsgTips">住院号:{{patientMsg.residenceNo}}</div>
1437
+        <div class="patientMsgTips">护理级别:{{patientMsg.illnessState?.name}}</div>
1438
+        <div class="patientMsgTips">危重等级:{{patientMsg.careLevel?.name}}</div>
1456 1439
       </div>
1457 1440
       <div>
1458 1441
         <form nz-form [formGroup]="patientForm" class="patientForm">
1459
-          <nz-form-item class="datesControl">
1460
-            <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="checkedType"
1461
-              >任务类型</nz-form-label
1462
-            >
1463
-            <nz-form-control nzErrorTip="请选择任务类型!" class="checkedType">
1464
-              <nz-radio-group
1465
-                class="radioGroup"
1466
-                formControlName="checkedType"
1467
-                (ngModelChange)="changeCheckedType()"
1468
-              >
1469
-                <label
1470
-                  *ngFor="let item of checkTypeLis"
1471
-                  nz-radio
1472
-                  [nzValue]="item.id"
1473
-                  >{{ item.taskName }}</label
1474
-                >
1475
-              </nz-radio-group>
1476
-            </nz-form-control>
1477
-          </nz-form-item>
1442
+          <div class="pos">
1443
+            <!-- 提示 -->
1444
+            <nz-form-item class="pos-item pos-tip" *ngIf="checkedShowMsg.msg">
1445
+              <nz-form-control>
1446
+                <b class="pos-red ellipsis-oneline" [title]="checkedShowMsg.msg">{{ checkedShowMsg.msg }}</b>
1447
+              </nz-form-control>
1448
+            </nz-form-item>
1449
+            <nz-form-item class="datesControl">
1450
+              <nz-form-label [nzSm]="24" [nzXs]="24" nzRequired nzFor="checkedType">任务类型</nz-form-label>
1451
+              <nz-form-control nzErrorTip="请选择任务类型!" class="checkedType">
1452
+                <nz-radio-group class="radioGroup w100" formControlName="checkedType" (ngModelChange)="changeCheckedType()">
1453
+                  <label class="col6 ellipsis-oneline" [title]="item.taskName" *ngFor="let item of checkTypeLis" nz-radio [nzValue]="item.id">{{ item.taskName }}</label>
1454
+                </nz-radio-group>
1455
+              </nz-form-control>
1456
+            </nz-form-item>
1457
+          </div>
1478 1458
           <ng-container *ngIf="cLoading">
1479 1459
             <div style="text-align: center">
1480 1460
               <img src="../../../assets/images/loading.gif" alt="" />
@@ -1484,225 +1464,73 @@
1484 1464
           <ng-container *ngIf="!cLoading">
1485 1465
             <!-- 检查 -->
1486 1466
             <nz-form-item *ngIf="checkedShowMsg.status == 200">
1487
-              <nz-form-label [nzSm]="24" [nzXs]="24" nzFor="linkCheck"
1488
-                >关联的检查</nz-form-label
1489
-              >
1467
+              <nz-form-label [nzSm]="24" [nzXs]="24" nzFor="linkCheck">关联的检查</nz-form-label>
1490 1468
               <nz-form-control class="datesGroup" *ngIf="linkCheckLis.length">
1491
-                <nz-checkbox-wrapper
1492
-                  class="linkCheckCheck"
1493
-                  ngDefaultControl
1494
-                  formControlName="linkCheck"
1495
-                  (nzOnChange)="linkCheckLisChange($event)"
1496
-                >
1497
-                  <div nz-row *ngFor="let item of linkCheckLis">
1469
+                <nz-checkbox-wrapper nz-row class="linkCheckCheck w100" ngDefaultControl formControlName="linkCheck" (nzOnChange)="linkCheckLisChange($event)">
1470
+                  <div nz-row nz-col nzSpan="12" *ngFor="let item of linkCheckLis">
1498 1471
                     <div nz-col nzSpan="24">
1499
-                      <label nz-checkbox [nzValue]="item">{{
1500
-                        item.label
1501
-                      }}</label>
1502
-                      <i
1503
-                        class="icon_transport transport-zu1468 priority"
1504
-                        *ngIf="item.priority === 1 || item.priority === '1'"
1505
-                      ></i>
1472
+                      <label nz-checkbox [nzValue]="item">{{ item.label}}</label>
1473
+                      <i class="icon_transport transport-zu1468 priority" *ngIf="item.priority === 1 || item.priority === '1'"></i>
1506 1474
                     </div>
1507 1475
                   </div>
1508 1476
                 </nz-checkbox-wrapper>
1509
-                <div
1510
-                  class="red"
1511
-                  style="line-height: normal; font-weight: bold"
1512
-                  *ngIf="currentTasktype.isMoreDept === 0 && isInspects"
1513
-                >
1477
+                <div class="red" style="line-height: normal; font-weight: bold" *ngIf="currentTasktype.isMoreDept === 0 && isInspects">
1514 1478
                   您选择的检查包含了多个科室,请您只包含一个科室。
1515 1479
                 </div>
1516 1480
               </nz-form-control>
1517
-              <div *ngIf="!linkCheckLis.length">暂无关联的检查</div>
1481
+              <div class="noInspect" *ngIf="!linkCheckLis.length">暂无关联的检查</div>
1518 1482
             </nz-form-item>
1519
-            <div
1520
-              class="pos"
1521
-              *ngIf="
1522
-                (currentTasktype.associationType.value === 'patientTransport' &&
1523
-                  appointmentZyBuildFlag == 1) ||
1524
-                (currentTasktype.associationType.value === 'inspect' &&
1525
-                  appointmentBuildFlag == 1)
1526
-              "
1527
-            >
1483
+            <div class="pos" *ngIf="(currentTasktype.associationType.value === 'patientTransport' && appointmentZyBuildFlag == 1) || (currentTasktype.associationType.value === 'inspect' && appointmentBuildFlag == 1)">
1528 1484
               <!-- 需要预约检查 -->
1529 1485
               <nz-form-item class="pos-item">
1530 1486
                 <nz-form-control>
1531
-                  <label
1532
-                    nz-checkbox
1533
-                    [nzDisabled]="
1534
-                      (!linkCheckLisTrue &&
1535
-                        currentTasktype.associationType.value === 'inspect') ||
1536
-                      (linkCheckLisTrue &&
1537
-                        allowUrgent == 1 &&
1538
-                        currentTasktype.associationType.value === 'inspect') ||
1539
-                      (allowUrgent == 1 &&
1540
-                        currentTasktype.associationType.value ===
1541
-                          'patientTransport')
1542
-                    "
1543
-                    [(ngModel)]="isYyInspect"
1544
-                    (ngModelChange)="yyInspectChange($event)"
1545
-                    [ngModelOptions]="{ standalone: true }"
1546
-                    style="font-weight: bold"
1547
-                    >需要预约检查</label
1548
-                  >
1487
+                  <label class="mt13" nz-checkbox [nzDisabled]="(!linkCheckLisTrue && currentTasktype.associationType.value === 'inspect') || (linkCheckLisTrue && allowUrgent == 1 && currentTasktype.associationType.value === 'inspect') || (allowUrgent == 1 && currentTasktype.associationType.value === 'patientTransport')" [(ngModel)]="isYyInspect" (ngModelChange)="yyInspectChange($event)" [ngModelOptions]="{ standalone: true }" style="font-weight: bold">需要预约检查</label>
1488
+                  <span class="red pos-red">请您填写实际预约检查时间,系统会根据时间安排人员进行陪检!</span>
1549 1489
                 </nz-form-control>
1550 1490
               </nz-form-item>
1551 1491
               <!-- 预约建单时间-患者其他服务 -->
1552
-              <nz-form-item
1553
-                class="yyTime"
1554
-                [ngClass]="{
1555
-                  yyTimeError: (!yyTimeZy || !yyDateZy) && clickYYZyFlag
1556
-                }"
1557
-                *ngIf="
1558
-                  currentTasktype.associationType.value === 'patientTransport'
1559
-                "
1560
-              >
1561
-                <nz-form-label [nzSm]="24" [nzXs]="24"
1562
-                  >预约建单时间</nz-form-label
1563
-                >
1492
+              <nz-form-item class="yyTime" [ngClass]="{yyTimeError: (!yyTimeZy || !yyDateZy) && clickYYZyFlag}" *ngIf="currentTasktype.associationType.value === 'patientTransport'">
1493
+                <nz-form-label [nzSm]="24" [nzXs]="24">预约建单时间</nz-form-label>
1564 1494
                 <nz-form-control [nzSm]="24" [nzXs]="24">
1565
-                  <nz-date-picker
1566
-                    [nzDisabled]="!isYyInspect"
1567
-                    [(ngModel)]="yyDateZy"
1568
-                    (ngModelChange)="yyDateChange($event)"
1569
-                    [ngModelOptions]="{ standalone: true }"
1570
-                    [nzAllowClear]="false"
1571
-                    [nzDisabledDate]="disabledyyDateZy"
1572
-                    [nzShowToday]="false"
1573
-                  ></nz-date-picker>
1574
-                  <nz-time-picker
1575
-                    [nzDisabled]="!isYyInspect || !yyDateZy"
1576
-                    class="ml8"
1577
-                    nzFormat="HH:mm"
1578
-                    [nzMinuteStep]="inspectAndPatientTransportConfig.timeMod"
1579
-                    [nzSecondStep]="60"
1580
-                    [(ngModel)]="yyTimeZy"
1581
-                    (ngModelChange)="yyTimeZyChange($event)"
1582
-                    [ngModelOptions]="{ standalone: true }"
1583
-                    [nzDisabledHours]="disabledHours"
1584
-                    [nzDisabledMinutes]="disabledMinutes"
1585
-                    [nzAllowEmpty]="false"
1586
-                  >
1495
+                  <nz-date-picker [nzDisabled]="!isYyInspect" [(ngModel)]="yyDateZy" (ngModelChange)="yyDateChange($event)" [ngModelOptions]="{ standalone: true }" [nzAllowClear]="false" [nzDisabledDate]="disabledyyDateZy" [nzShowToday]="false"></nz-date-picker>
1496
+                  <nz-time-picker [nzDisabled]="!isYyInspect || !yyDateZy" class="ml8" nzFormat="HH:mm" [nzMinuteStep]="inspectAndPatientTransportConfig.timeMod" [nzSecondStep]="60" [(ngModel)]="yyTimeZy" (ngModelChange)="yyTimeZyChange($event)" [ngModelOptions]="{ standalone: true }" [nzDisabledHours]="disabledHours" [nzDisabledMinutes]="disabledMinutes" [nzAllowEmpty]="false">
1587 1497
                   </nz-time-picker>
1588
-                  <button
1589
-                    [disabled]="!isYyInspect || (isYyInspect && !yyDateZy)"
1590
-                    nz-button
1591
-                    nzType="primary"
1592
-                    class="ml8"
1593
-                    (click)="nextDayZy()"
1594
-                  >
1498
+                  <button [disabled]="!isYyInspect || (isYyInspect && !yyDateZy)" nz-button nzType="primary" class="ml8" (click)="nextDayZy()">
1595 1499
                     下一日
1596 1500
                   </button>
1597 1501
                 </nz-form-control>
1598
-                <div
1599
-                  class="red w100"
1600
-                  *ngIf="(!yyTimeZy || !yyDateZy) && clickYYZyFlag"
1601
-                >
1502
+                <div class="red w100" *ngIf="(!yyTimeZy || !yyDateZy) && clickYYZyFlag">
1602 1503
                   请填写预约建单时间!
1603 1504
                 </div>
1604
-                <div class="red">
1605
-                  请您填写实际预约检查时间,系统会根据时间安排人员进行陪检!
1606
-                </div>
1607 1505
               </nz-form-item>
1608 1506
               <!-- 预约建单时间 -->
1609
-              <nz-form-item
1610
-                class="yyTime"
1611
-                [ngClass]="{ yyTimeError: (!yyTime || !yyDate) && clickYYFlag }"
1612
-                *ngIf="currentTasktype.associationType.value === 'inspect'"
1613
-              >
1614
-                <nz-form-label [nzSm]="24" [nzXs]="24"
1615
-                  >预约建单时间</nz-form-label
1616
-                >
1507
+              <nz-form-item class="yyTime" [ngClass]="{ yyTimeError: (!yyTime || !yyDate) && clickYYFlag }" *ngIf="currentTasktype.associationType.value === 'inspect'">
1508
+                <nz-form-label [nzSm]="24" [nzXs]="24">预约建单时间</nz-form-label>
1617 1509
                 <nz-form-control [nzSm]="24" [nzXs]="24">
1618
-                  <nz-date-picker
1619
-                    [nzDisabled]="!isYyInspect"
1620
-                    [(ngModel)]="yyDate"
1621
-                    (ngModelChange)="yyDateChange($event)"
1622
-                    [ngModelOptions]="{ standalone: true }"
1623
-                    [nzAllowClear]="false"
1624
-                    [nzDisabledDate]="disabledyyDate"
1625
-                    [nzShowToday]="false"
1626
-                  >
1510
+                  <nz-date-picker [nzDisabled]="!isYyInspect" [(ngModel)]="yyDate" (ngModelChange)="yyDateChange($event)" [ngModelOptions]="{ standalone: true }" [nzAllowClear]="false" [nzDisabledDate]="disabledyyDate" [nzShowToday]="false">
1627 1511
                   </nz-date-picker>
1628
-                  <nz-time-picker
1629
-                    [nzDisabled]="!isYyInspect || !yyDate"
1630
-                    class="ml8"
1631
-                    nzFormat="HH:mm"
1632
-                    [nzMinuteStep]="inspectAndPatientTransportConfig.timeMod"
1633
-                    [nzSecondStep]="60"
1634
-                    [(ngModel)]="yyTime"
1635
-                    (ngModelChange)="yyTimeChange($event)"
1636
-                    [ngModelOptions]="{ standalone: true }"
1637
-                    [nzDisabledHours]="disabledHours"
1638
-                    [nzDisabledMinutes]="disabledMinutes"
1639
-                    [nzAllowEmpty]="false"
1640
-                  >
1512
+                  <nz-time-picker [nzDisabled]="!isYyInspect || !yyDate" class="ml8" nzFormat="HH:mm" [nzMinuteStep]="inspectAndPatientTransportConfig.timeMod" [nzSecondStep]="60" [(ngModel)]="yyTime" (ngModelChange)="yyTimeChange($event)" [ngModelOptions]="{ standalone: true }" [nzDisabledHours]="disabledHours" [nzDisabledMinutes]="disabledMinutes" [nzAllowEmpty]="false">
1641 1513
                   </nz-time-picker>
1642
-                  <button
1643
-                    [disabled]="!isYyInspect || (isYyInspect && !yyDate)"
1644
-                    nz-button
1645
-                    nzType="primary"
1646
-                    class="ml8"
1647
-                    (click)="nextDay()"
1648
-                  >
1514
+                  <button [disabled]="!isYyInspect || (isYyInspect && !yyDate)" nz-button nzType="primary" class="ml8" (click)="nextDay()">
1649 1515
                     下一日
1650 1516
                   </button>
1651 1517
                 </nz-form-control>
1652
-                <div
1653
-                  class="red w100"
1654
-                  *ngIf="(!yyTime || !yyDate) && clickYYFlag"
1655
-                >
1518
+                <div class="red w100" *ngIf="(!yyTime || !yyDate) && clickYYFlag">
1656 1519
                   请填写预约建单时间!
1657 1520
                 </div>
1658
-                <div class="red">
1659
-                  请您填写实际预约检查时间,系统会根据时间安排人员进行陪检!
1660
-                </div>
1661 1521
               </nz-form-item>
1662 1522
             </div>
1663 1523
             <!-- 100009 科室任务类型状态码未配置 -->
1664
-            <nz-form-item
1665
-              *ngIf="
1666
-                checkedShowMsg.status != 200 && checkedShowMsg.status == 100009
1667
-              "
1668
-            >
1524
+            <nz-form-item *ngIf="checkedShowMsg.status == 100009">
1669 1525
               <div class="txtC">{{ checkedShowMsg.msg }}</div>
1670 1526
             </nz-form-item>
1671 1527
             <!-- 100015 (护士端一键建单展策略)起点科室和终点科室下拉展示 -->
1672
-            <nz-form-item
1673
-              *ngIf="
1674
-                checkedShowMsg.status != 200 &&
1675
-                (checkedShowMsg.status == 100015 ||
1676
-                  checkedShowMsg.status == 100013)
1677
-              "
1678
-            >
1679
-              <nz-form-label
1680
-                [nzSm]="6"
1681
-                [nzXs]="24"
1682
-                nzRequired
1683
-                nzFor="originOffice"
1684
-                >起点科室</nz-form-label
1685
-              >
1686
-              <nz-form-control nzErrorTip="请选择起点科室!">
1687
-                <nz-select
1688
-                  class="w100"
1689
-                  formControlName="originOffice"
1690
-                  [nzDropdownMatchSelectWidth]="false"
1691
-                  nzServerSearch
1692
-                  nzShowSearch
1693
-                  (nzOnSearch)="searchDept('start', checkedShowMsg, $event)"
1694
-                  nzPlaceHolder="请选择起点科室"
1695
-                >
1696
-                  <ng-container
1697
-                    *ngFor="let option of checkedShowMsg.start.start.list"
1698
-                  >
1699
-                    <nz-option
1700
-                      *ngIf="true"
1701
-                      [nzLabel]="
1702
-                        deptDisplay == 2 ? option.deptalias : option.dept
1703
-                      "
1704
-                      [nzValue]="option.id"
1705
-                    ></nz-option>
1528
+            <nz-form-item class="top16bottom0" nz-row *ngIf="checkedShowMsg.status == 100015 || checkedShowMsg.status == 100013">
1529
+              <nz-form-label [nzSpan]="3" nzRequired nzFor="originOffice">起点科室</nz-form-label>
1530
+              <nz-form-control [nzSpan]="21" nzErrorTip="请选择起点科室!">
1531
+                <nz-select formControlName="originOffice" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch (nzOnSearch)="searchDept('start', checkedShowMsg, $event)" nzPlaceHolder="请选择起点科室">
1532
+                  <ng-container *ngFor="let option of checkedShowMsg.start.start.list">
1533
+                    <nz-option *ngIf="true" [nzLabel]="deptDisplay == 2 ? option.deptalias : option.dept" [nzValue]="option.id"></nz-option>
1706 1534
                   </ng-container>
1707 1535
                   <nz-option *ngIf="false" nzDisabled nzCustomContent>
1708 1536
                     <i nz-icon nzType="loading" class="loading-icon"></i>
@@ -1711,41 +1539,26 @@
1711 1539
                 </nz-select>
1712 1540
               </nz-form-control>
1713 1541
             </nz-form-item>
1542
+            <!-- 其他情况 -->
1543
+            <nz-form-item class="top16bottom0" nz-row *ngIf="checkedShowMsg.start && (checkedShowMsg.status == 100014 || checkedShowMsg.status == 100012)">
1544
+              <nz-form-label [nzSpan]="3" nzRequired nzFor="originOffice">起点科室</nz-form-label>
1545
+              <nz-form-control [nzSpan]="21" nzErrorTip="请选择起点科室!">
1546
+                <span class="readonly">{{deptDisplay == 2 ? checkedShowMsg.start.start.list[0].deptalias : checkedShowMsg.start.start.list[0].dept}}</span>
1547
+              </nz-form-control>
1548
+            </nz-form-item>
1549
+            <nz-form-item class="top16bottom0" nz-row *ngIf="checkedShowMsg.end && (checkedShowMsg.status == 100012 || checkedShowMsg.status == 100013)">
1550
+              <nz-form-label [nzSpan]="3" nzRequired nzFor="targetOffice">目标科室</nz-form-label>
1551
+              <nz-form-control [nzSpan]="21" nzErrorTip="请选择目标科室!">
1552
+                <span class="readonly">{{deptDisplay == 2 ? checkedShowMsg.end.end.list[0].deptalias : checkedShowMsg.end.end.list[0].dept}}</span>
1553
+              </nz-form-control>
1554
+            </nz-form-item>
1714 1555
             <!-- 100014 (护士端一键建单展示策略)取终点科室和msg 值展示 -->
1715
-            <nz-form-item
1716
-              *ngIf="
1717
-                checkedShowMsg.status != 200 &&
1718
-                (checkedShowMsg.status == 100014 ||
1719
-                  checkedShowMsg.status == 100015)
1720
-              "
1721
-            >
1722
-              <nz-form-label
1723
-                [nzSm]="6"
1724
-                [nzXs]="24"
1725
-                nzRequired
1726
-                nzFor="targetOffice"
1727
-                >目标科室</nz-form-label
1728
-              >
1729
-              <nz-form-control nzErrorTip="请选择目标科室!">
1730
-                <nz-select
1731
-                  class="w100"
1732
-                  formControlName="targetOffice"
1733
-                  [nzDropdownMatchSelectWidth]="false"
1734
-                  nzServerSearch
1735
-                  nzShowSearch
1736
-                  (nzOnSearch)="searchDept('target', checkedShowMsg, $event)"
1737
-                  nzPlaceHolder="请选择目标科室"
1738
-                >
1739
-                  <ng-container
1740
-                    *ngFor="let option of checkedShowMsg.end.end.list"
1741
-                  >
1742
-                    <nz-option
1743
-                      *ngIf="true"
1744
-                      [nzLabel]="
1745
-                        deptDisplay == 2 ? option.deptalias : option.dept
1746
-                      "
1747
-                      [nzValue]="option.id"
1748
-                    ></nz-option>
1556
+            <nz-form-item class="top16bottom0" nz-row *ngIf="checkedShowMsg.status == 100014 || checkedShowMsg.status == 100015">
1557
+              <nz-form-label [nzSpan]="3" nzRequired nzFor="targetOffice">目标科室</nz-form-label>
1558
+              <nz-form-control [nzSpan]="21" nzErrorTip="请选择目标科室!">
1559
+                <nz-select formControlName="targetOffice" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch (nzOnSearch)="searchDept('target', checkedShowMsg, $event)" nzPlaceHolder="请选择目标科室">
1560
+                  <ng-container *ngFor="let option of checkedShowMsg.end.end.list">
1561
+                    <nz-option *ngIf="true" [nzLabel]="deptDisplay == 2 ? option.deptalias : option.dept" [nzValue]="option.id"></nz-option>
1749 1562
                   </ng-container>
1750 1563
                   <nz-option *ngIf="false" nzDisabled nzCustomContent>
1751 1564
                     <i nz-icon nzType="loading" class="loading-icon"></i>
@@ -1754,94 +1567,60 @@
1754 1567
                 </nz-select>
1755 1568
               </nz-form-control>
1756 1569
             </nz-form-item>
1757
-            <!-- 自动送回 -->
1758
-            <nz-form-item
1759
-              *ngIf="
1760
-                checkedShowMsg.status != 200 && checkedShowMsg.isRemand == 1
1761
-              "
1762
-            >
1570
+            <div class="display_flex top16bottom0">
1571
+              <!-- 自动送回 -->
1572
+              <nz-form-item class="isRemand" *ngIf="checkedShowMsg.status != 200 && checkedShowMsg.isRemand == 1">
1573
+                <nz-form-control>
1574
+                  <label nz-checkbox [(ngModel)]="isRemand" [ngModelOptions]="{ standalone: true }">自动送回</label>
1575
+                </nz-form-control>
1576
+              </nz-form-item>
1577
+              <!-- 是否加急 -->
1578
+              <nz-form-item nz-row *ngIf="current_allowUrgent" class="allowUrgent">
1579
+                <nz-form-label [nzSpan]="3" nzFor="allowUrgent" class="goods">是否加急</nz-form-label>
1580
+                <nz-form-control [nzSpan]="6">
1581
+                  <nz-radio-group [(ngModel)]="allowUrgent" (ngModelChange)="allowUrgentChange($event)" formControlName="allowUrgent">
1582
+                    <label nz-radio nzValue="1">是</label>
1583
+                    <label nz-radio nzValue="0">否</label>
1584
+                  </nz-radio-group>
1585
+                </nz-form-control>
1586
+              </nz-form-item>
1587
+            </div>
1588
+            <!-- 加急原因 -->
1589
+            <nz-form-item nz-row *ngIf="current_allowUrgent && allowUrgent == 1">
1590
+              <nz-form-label [nzSpan]="24" nzRequired nzFor="urgentReason" class="goods">加急原因</nz-form-label>
1763 1591
               <nz-form-control>
1764
-                <label
1765
-                  nz-checkbox
1766
-                  [(ngModel)]="isRemand"
1767
-                  [ngModelOptions]="{ standalone: true }"
1768
-                  >自动送回</label
1769
-                >
1592
+                <textarea rows="4" placeholder="请输入加急原因" nz-input [(ngModel)]="urgentReason" formControlName="urgentReason"></textarea>
1770 1593
               </nz-form-control>
1771 1594
             </nz-form-item>
1772
-            <!-- 工单备注 -->
1595
+            <!-- 注意事项 -->
1773 1596
             <ng-container *ngIf="isRemarks">
1774 1597
               <nz-form-item>
1775 1598
                 <div class="display_flex align-items_center">
1776
-                  <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="workOrderRemark2" class="mt8 mb8">工单备注</nz-form-label>
1777
-                  <div *ngIf="customRemarks2.length" style="word-break: break-all;">
1778
-                    <span class="addRemarks" *ngFor="let item of customRemarks2" (click)="addRemarks2(item)">【{{ item }}】</span>
1779
-                  </div>
1599
+                  <nz-form-label nzFor="workOrderRemark2" class="mt8 mb8">注意事项</nz-form-label>
1780 1600
                 </div>
1781 1601
                 <nz-form-control>
1782
-                  <textarea
1783
-                  nz-input
1784
-                  [placeholder]="workOrderRemarkTips2"
1785
-                  [nzAutosize]="{ minRows: 3, maxRows: 5 }"
1786
-                  maxlength="100"
1787
-                  formControlName="workOrderRemark2"
1788
-                  [(ngModel)]="workOrderRemark2"
1789
-                  #remarksEle2
1790
-                ></textarea>
1602
+                  <div class="noteSign">
1603
+                    <textarea class="noteFocus" (focus)="focusNote()" nz-input [placeholder]="workOrderRemarkTips2" [nzAutosize]="{ minRows: 3, maxRows: 5 }" maxlength="100" formControlName="workOrderRemark2" [(ngModel)]="workOrderRemark2" #remarksEle2></textarea>
1604
+                    <div class="noteList" *ngIf="isShowNoteList">
1605
+                      <ng-container *ngIf="!noteLoading && noteList.length">
1606
+                        <div class="noteItem ellipsis-oneline" *ngFor="let item of noteList" [title]="item.name" (click)="selectNote(item.name)">{{item.name}}</div>
1607
+                      </ng-container>
1608
+                      <div *ngIf="!noteLoading && !noteList.length" class="w100 h100 padding8 display_flex justify-content_flex-center align-items_center">
1609
+                        <nz-empty></nz-empty>
1610
+                      </div>
1611
+                      <div *ngIf="noteLoading" class="w100 h100 padding8 display_flex justify-content_flex-center align-items_center">
1612
+                        <nz-spin nzSimple></nz-spin>
1613
+                      </div>
1614
+                    </div>
1615
+                  </div>
1791 1616
                 </nz-form-control>
1792 1617
               </nz-form-item>
1793 1618
             </ng-container>
1794 1619
             <!-- 携带设备 -->
1795
-            <nz-form-item *ngIf="!isRemarks && goodsLis.length">
1796
-              <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="goods" class="goods"
1797
-                >携带设备</nz-form-label
1798
-              >
1799
-              <nz-form-control>
1800
-                <nz-checkbox-group
1801
-                  formControlName="goods"
1802
-                  [(ngModel)]="goodsLis"
1803
-                >
1804
-                </nz-checkbox-group>
1805
-              </nz-form-control>
1806
-            </nz-form-item>
1807
-            <!-- 是否加急 -->
1808
-            <nz-form-item *ngIf="current_allowUrgent">
1809
-              <nz-form-label
1810
-                [nzSm]="6"
1811
-                [nzXs]="24"
1812
-                nzFor="allowUrgent"
1813
-                class="goods"
1814
-                >是否加急</nz-form-label
1815
-              >
1816
-              <nz-form-control>
1817
-                <nz-radio-group
1818
-                  [(ngModel)]="allowUrgent"
1819
-                  (ngModelChange)="allowUrgentChange($event)"
1820
-                  formControlName="allowUrgent"
1821
-                >
1822
-                  <label nz-radio nzValue="1">是</label>
1823
-                  <label nz-radio nzValue="0">否</label>
1824
-                </nz-radio-group>
1825
-              </nz-form-control>
1826
-            </nz-form-item>
1827
-            <!-- 加急原因 -->
1828
-            <nz-form-item *ngIf="current_allowUrgent && allowUrgent == 1">
1829
-              <nz-form-label
1830
-                [nzSm]="6"
1831
-                [nzXs]="24"
1832
-                nzRequired
1833
-                nzFor="urgentReason"
1834
-                class="goods"
1835
-                >加急原因</nz-form-label
1836
-              >
1837
-              <nz-form-control>
1838
-                <textarea
1839
-                  rows="4"
1840
-                  placeholder="请输入加急原因"
1841
-                  nz-input
1842
-                  [(ngModel)]="urgentReason"
1843
-                  formControlName="urgentReason"
1844
-                ></textarea>
1620
+            <nz-form-item nz-row *ngIf="goodsLis.length">
1621
+              <nz-form-label [nzSpan]="3" nzFor="goods" class="goods">携带设备</nz-form-label>
1622
+              <nz-form-control [nzSpan]="21">
1623
+                <nz-checkbox-group formControlName="goods" [(ngModel)]="goodsLis"></nz-checkbox-group>
1845 1624
               </nz-form-control>
1846 1625
             </nz-form-item>
1847 1626
           </ng-container>
@@ -1849,54 +1628,16 @@
1849 1628
       </div>
1850 1629
     </overlay-scrollbars>
1851 1630
     <div class="btns display_flex justify-content_flex-center">
1852
-      <button
1853
-        nz-button
1854
-        nzType="primary"
1855
-        [nzLoading]="btnLoading1"
1856
-        (click)="confirmPatient1('patient-yuyue')"
1857
-        *ngIf="
1858
-          currentTasktype.associationType.value === 'inspect' &&
1859
-          isYyInspect &&
1860
-          !(currentTasktype.isMoreDept === 0 && isInspects) && checkedShowMsg.status != 100009
1861
-        "
1862
-      >
1631
+      <button nz-button nzType="primary" [nzLoading]="btnLoading1" (click)="confirmPatient1('patient-yuyue')" *ngIf="currentTasktype.associationType.value === 'inspect' && isYyInspect && !(currentTasktype.isMoreDept === 0 && isInspects) && checkedShowMsg.status != 100009">
1863 1632
         预约建单
1864 1633
       </button>
1865
-      <button
1866
-        nz-button
1867
-        nzType="primary"
1868
-        [nzLoading]="btnLoading1"
1869
-        (click)="confirmPatient1('patient-zy-yuyue')"
1870
-        *ngIf="
1871
-          currentTasktype.associationType.value === 'patientTransport' &&
1872
-          isYyInspect && checkedShowMsg.status != 100009
1873
-        "
1874
-      >
1634
+      <button nz-button nzType="primary" [nzLoading]="btnLoading1" (click)="confirmPatient1('patient-zy-yuyue')" *ngIf="currentTasktype.associationType.value === 'patientTransport' && isYyInspect && checkedShowMsg.status != 100009">
1875 1635
         预约建单
1876 1636
       </button>
1877
-      <button
1878
-        nz-button
1879
-        nzType="default"
1880
-        [nzLoading]="btnLoading"
1881
-        (click)="confirmPatient()"
1882
-        class="orderThis"
1883
-        *ngIf="
1884
-          ((!isYyInspect &&
1885
-            currentTasktype.associationType.value === 'inspect' &&
1886
-            linkCheckLisTrue) ||
1887
-            (!isYyInspect &&
1888
-              currentTasktype.associationType.value === 'patientTransport')) &&
1889
-          !(currentTasktype.isMoreDept === 0 && isInspects) && checkedShowMsg.status != 100009
1890
-        "
1891
-      >
1637
+      <button nz-button nzType="primary" [nzLoading]="btnLoading" (click)="confirmPatient()" *ngIf="((!isYyInspect && currentTasktype.associationType.value === 'inspect' && linkCheckLisTrue) || (!isYyInspect && currentTasktype.associationType.value === 'patientTransport')) && !(currentTasktype.isMoreDept === 0 && isInspects) && checkedShowMsg.status != 100009">
1892 1638
         直接建单
1893 1639
       </button>
1894
-      <button
1895
-        class="btn cancel"
1896
-        nz-button
1897
-        nzType="default"
1898
-        (click)="hidePatientOrder()"
1899
-      >
1640
+      <button class="btn cancel" nz-button nzType="default" (click)="hidePatientOrder()">
1900 1641
         取消
1901 1642
       </button>
1902 1643
     </div>
@@ -2573,10 +2314,7 @@
2573 2314
   content="您确认要删除此条意见吗?"
2574 2315
 ></app-dialog-delete>
2575 2316
 <!-- 关注模态框 -->
2576
-<div
2577
-  class="commonModal display_flex justify-content_flex-center align-items_center"
2578
-  *ngIf="commonModal"
2579
->
2317
+<div class="commonModal display_flex justify-content_flex-center align-items_center" *ngIf="commonModal">
2580 2318
   <div class="modalBody">
2581 2319
     <div class="title">
2582 2320
       提示<i
@@ -2609,11 +2347,11 @@
2609 2347
   </div>
2610 2348
 </div>
2611 2349
 <!-- 是否确认报修模态框 -->
2612
-<div class="commonModal display_flex justify-content_flex-center align-items_center" *ngIf="bxModal">
2350
+<div class="commonModal display_flex justify-content_flex-center align-items_center" *ngIf="bxModal" (click)="clickExtra($event)">
2613 2351
   <div class="modalBody">
2614 2352
     <div class="title">一键报修<i class="icon_transport transport-guanbi" (click)="hideBxModal()"></i>
2615 2353
     </div>
2616
-    <overlay-scrollbars #osComponentRef5 class="content">
2354
+    <div class="content">
2617 2355
       <form nz-form [formGroup]="validateBxForm" class="bxFormAdd" (ngSubmit)="confirmBx()">
2618 2356
         <nz-form-item>
2619 2357
           <nz-form-label [nzSm]="4" [nzXs]="4" nzRequired nzFor="description">故障描述</nz-form-label>
@@ -2656,14 +2394,25 @@
2656 2394
             </nz-select>
2657 2395
           </nz-form-control>
2658 2396
           <nz-form-label [nzSm]="4" [nzXs]="4" nzRequired nzFor="officeAddress" hidden></nz-form-label>
2659
-          <nz-form-control style="display: inline-block;">
2397
+          <nz-form-control style="display: inline-block;" class="address">
2660 2398
             <nz-input-group>
2661
-              <input style="width:185px;" nz-input formControlName="officeAddress" placeholder="请输入详细位置" />
2399
+              <input class="addressFocus" style="width:185px;" nz-input formControlName="officeAddress" placeholder="请输入详细位置" (focus)="focusAddress()" />
2400
+              <div class="addressList" *ngIf="isShowAddressList">
2401
+                <ng-container *ngIf="!addressLoading && addressList.length">
2402
+                  <div class="addressItem ellipsis-oneline" *ngFor="let item of addressList" [title]="item.name" (click)="selectAddress(item.name)">{{item.name}}</div>
2403
+                </ng-container>
2404
+                <div *ngIf="!addressLoading && !addressList.length" class="w100 h100 padding8 display_flex justify-content_flex-center align-items_center">
2405
+                  <nz-empty></nz-empty>
2406
+                </div>
2407
+                <div *ngIf="addressLoading" class="w100 h100 padding8 display_flex justify-content_flex-center align-items_center">
2408
+                  <nz-spin nzSimple></nz-spin>
2409
+                </div>
2410
+              </div>
2662 2411
             </nz-input-group>
2663 2412
           </nz-form-control>
2664 2413
         </nz-form-item>
2665 2414
       </form>
2666
-    </overlay-scrollbars>
2415
+    </div>
2667 2416
     <div class="display_flex justify-content_flex-center">
2668 2417
       <button nz-button nzType="primary" (click)="confirmBx()">
2669 2418
         确认

+ 163 - 6
src/app/views/hushijiandan/hushijiandan.component.less

@@ -106,7 +106,7 @@
106 106
     bottom: 0;
107 107
     left: 0;
108 108
     right: 0;
109
-    height: 100%;
109
+    height: calc(100% - 48px);
110 110
   }
111 111
 
112 112
 	.isKeyClass{
@@ -1357,13 +1357,16 @@
1357 1357
                   flex: 1;
1358 1358
                   display: flex;
1359 1359
                   align-items: center;
1360
-                  gap: 24px;
1361 1360
                   padding: 0 16px;
1362 1361
                   overflow: auto hidden;
1363 1362
                   .navItem{
1364 1363
                     display: flex;
1365 1364
                     align-items: center;
1366 1365
                     cursor: pointer;
1366
+                    margin-right: 24px;
1367
+                    &:last-of-type{
1368
+                      margin-right: 0;
1369
+                    }
1367 1370
                     .navContent{
1368 1371
                       display: flex;
1369 1372
                       flex-direction: column;
@@ -1406,7 +1409,12 @@
1406 1409
                     .navSpecimen{
1407 1410
                       font-size: 12px;
1408 1411
                       display: flex;
1409
-                      gap: 8px;
1412
+                      span{
1413
+                        margin-right: 8px;
1414
+                        &:last-of-type{
1415
+                          margin-right: 0;
1416
+                        }
1417
+                      }
1410 1418
                     }
1411 1419
                   }
1412 1420
                 }
@@ -1606,7 +1614,7 @@
1606 1614
 
1607 1615
           .table {
1608 1616
             width: 100%;
1609
-            height: 100%;
1617
+            height: calc(100% - 56px);
1610 1618
             padding: 0 8px 8px;
1611 1619
 
1612 1620
             &.turn {
@@ -1750,7 +1758,7 @@
1750 1758
 
1751 1759
           .orderList {
1752 1760
             width: 100%;
1753
-            height: calc(100% - 106px);
1761
+            height: calc(100% - 114px);
1754 1762
 
1755 1763
             .box {
1756 1764
               position: relative;
@@ -2185,6 +2193,7 @@
2185 2193
     .btns {
2186 2194
       button {
2187 2195
         margin-top: 10px;
2196
+        font-size: 18px;
2188 2197
 
2189 2198
         &.btn {
2190 2199
           margin-left: 8px;
@@ -2217,6 +2226,28 @@
2217 2226
 
2218 2227
   ::ng-deep .ant-form-item.last{
2219 2228
     margin-bottom: 0!important;
2229
+    .address{
2230
+      position: relative;
2231
+      .addressList{
2232
+        position: absolute;
2233
+        top: 100%;
2234
+        left: 0;
2235
+        width: 100%;
2236
+        max-height: 256px;
2237
+        z-index: 2;
2238
+        background: #fff;
2239
+        border: 1px solid #d9d9d9;
2240
+        border-radius: 4px;
2241
+        overflow: hidden auto;
2242
+        .addressItem{
2243
+          padding: 5px 12px;
2244
+          cursor: pointer;
2245
+          &:hover{
2246
+            background-color: #e9f7e9;
2247
+          }
2248
+        }
2249
+      }
2250
+    }
2220 2251
   }
2221 2252
 
2222 2253
   ::ng-deep .ant-form-item-label{
@@ -2252,7 +2283,7 @@
2252 2283
       background: #f9fafb;
2253 2284
       border: 1px solid @hs_border_color;
2254 2285
       border-radius: 5px;
2255
-      overflow: hidden;
2286
+      // overflow: hidden;
2256 2287
       margin-top: 12px;
2257 2288
 
2258 2289
       & > div {
@@ -2539,3 +2570,129 @@
2539 2570
 .tabPermissionItem{
2540 2571
   padding: 0 16px;
2541 2572
 }
2573
+
2574
+.patient ::ng-deep .ant-form label{
2575
+  font-size: 18px;
2576
+  margin-top: 8px;
2577
+  &.col6{
2578
+    width: 16.666%;
2579
+  }
2580
+  &.mt13{
2581
+    margin-top: 13px;
2582
+  }
2583
+}
2584
+.patient ::ng-deep .ant-radio-wrapper{
2585
+  margin-right: 0;
2586
+  padding-right: 8px;
2587
+}
2588
+
2589
+.patient ::ng-deep .ant-form-item-control{
2590
+  line-height: normal;
2591
+}
2592
+.patient ::ng-deep .ant-radio-inner{
2593
+  top: -3px;
2594
+}
2595
+.patient ::ng-deep .ant-form-item-label{
2596
+  line-height: 32px!important;
2597
+  flex-shrink: 0;
2598
+}
2599
+.patient .top16bottom0{
2600
+  margin-top: 16px!important;
2601
+  margin-bottom: 0!important;
2602
+}
2603
+.patient{
2604
+  .modalBody{
2605
+    width: 950px;
2606
+    border-radius: 16px;
2607
+    padding: 16px 24px;
2608
+    .title{
2609
+      font-size: 22px;
2610
+      font-weight: bold;
2611
+      i{
2612
+        font-size: 24px;
2613
+        padding: 0;
2614
+      }
2615
+    }
2616
+    .content{
2617
+      margin-top: 16px;
2618
+      border-radius: 8px;
2619
+      padding: 0;
2620
+      .patientMsg{
2621
+        display: flex;
2622
+        justify-content: space-between;
2623
+        align-items: center;
2624
+        padding: 16px;
2625
+        border-bottom: 2px solid #D1D1D1;
2626
+        .patientMsgTips{
2627
+          font-size: 18px;
2628
+          color: #000000;
2629
+        }
2630
+      }
2631
+      .patientForm{
2632
+        padding: 16px 24px;
2633
+        .noInspect{
2634
+          font-size: 18px;
2635
+        }
2636
+        .addRemarks{
2637
+          font-size: 18px;
2638
+        }
2639
+        .goods{
2640
+          margin-top: 5px;
2641
+        }
2642
+        .isRemand{
2643
+          margin-right: 98px;
2644
+        }
2645
+        .allowUrgent{
2646
+          flex: 1;
2647
+        }
2648
+        .readonly{
2649
+          line-height: 32px;
2650
+          font-size: 18px;
2651
+        }
2652
+        .radioGroup{
2653
+          line-height: normal;
2654
+        }
2655
+        .pos-item{
2656
+          left: 125px;
2657
+          &.pos-tip{
2658
+            left: 100px;
2659
+            width: calc(100% - 100px);
2660
+            .pos-red{
2661
+              margin-top: 13px;
2662
+              display: inline-block;
2663
+              width: 100%;
2664
+            }
2665
+          }
2666
+          .pos-red{
2667
+            font-size: 18px;
2668
+            margin-top: 8px;
2669
+            display: inline-block;
2670
+          }
2671
+        }
2672
+      }
2673
+    }
2674
+  }
2675
+}
2676
+.noteSign{
2677
+  position: relative;
2678
+  .noteList{
2679
+    position: absolute;
2680
+    bottom: 100%;
2681
+    left: 0;
2682
+    width: 100%;
2683
+    max-height: 256px;
2684
+    z-index: 99;
2685
+    background: #fff;
2686
+    border: 1px solid #d9d9d9;
2687
+    border-radius: 4px;
2688
+    overflow: hidden auto;
2689
+    .noteItem{
2690
+      padding: 5px 12px;
2691
+      cursor: pointer;
2692
+      line-height: normal;
2693
+      &:hover{
2694
+        background-color: #e9f7e9;
2695
+      }
2696
+    }
2697
+  }
2698
+}

+ 84 - 8
src/app/views/hushijiandan/hushijiandan.component.ts

@@ -75,11 +75,11 @@ export class HushijiandanComponent implements OnInit {
75 75
     static: false,
76 76
   })
77 77
   osComponentRef4: OverlayScrollbarsComponent;
78
-  @ViewChild("osComponentRef5", {
79
-    read: OverlayScrollbarsComponent,
80
-    static: false,
81
-  })
82
-  osComponentRef5: OverlayScrollbarsComponent;
78
+  // @ViewChild("osComponentRef5", {
79
+  //   read: OverlayScrollbarsComponent,
80
+  //   static: false,
81
+  // })
82
+  // osComponentRef5: OverlayScrollbarsComponent;
83 83
   @ViewChild("osComponentRef6", {
84 84
     read: OverlayScrollbarsComponent,
85 85
     static: false,
@@ -2392,7 +2392,7 @@ export class HushijiandanComponent implements OnInit {
2392 2392
           }
2393 2393
         }
2394 2394
         that.patientForm.controls.checkedType.setValue(id);
2395
-        this.changeCheckedType();
2395
+        this.changeCheckedType(true);
2396 2396
       });
2397 2397
   }
2398 2398
   yyTimeChange(e) {
@@ -2928,8 +2928,7 @@ export class HushijiandanComponent implements OnInit {
2928 2928
   currentTasktype; //当前选中的任务类型对象
2929 2929
   cLoading = false;
2930 2930
   historyCustomRemarks2 = [];
2931
-  changeCheckedType() {
2932
-    this.workOrderRemark2 = "";
2931
+  changeCheckedType(isInit = false) {
2933 2932
     this.customRemarks2 = [];
2934 2933
     this.historyCustomRemarks2 = [];
2935 2934
     this.isYyInspect = false;
@@ -2939,6 +2938,14 @@ export class HushijiandanComponent implements OnInit {
2939 2938
     this.currentTasktype = this.checkTypeLis.find(
2940 2939
       (item) => item.id == this.patientForm.controls.checkedType.value
2941 2940
     );
2941
+    // 是否回显注意事项
2942
+    if(isInit){
2943
+      if(this.currentTasktype.remarksSwitch === 1){
2944
+        this.workOrderRemark2 = this.patientMsg.remark || "";
2945
+      }else{
2946
+        this.workOrderRemark2 = '';
2947
+      }
2948
+    }
2942 2949
     // 获取患者其他服务,护士端是否预约建单
2943 2950
     let appointmentZyBuildFlag = this.checkTypeLis.filter(
2944 2951
       (item) =>
@@ -4980,4 +4987,73 @@ export class HushijiandanComponent implements OnInit {
4980 4987
       this.confirmShortcut1(shortcutForm);
4981 4988
     }
4982 4989
   }
4990
+
4991
+  // 详细地址获取焦点
4992
+  isShowAddressList:boolean = false;
4993
+  focusAddress(){
4994
+    this.isShowAddressList = true;
4995
+    this.getAddressList();
4996
+  }
4997
+
4998
+  // 点击其他位置
4999
+  clickExtra(e){
5000
+    if(document.documentElement.contains(document.querySelector('.addressList')) && e.target !== document.querySelector('.addressFocus')){
5001
+      this.isShowAddressList = false;
5002
+    }
5003
+    if(document.documentElement.contains(document.querySelector('.noteList')) && e.target !== document.querySelector('.noteFocus')){
5004
+      this.isShowNoteList = false;
5005
+    }
5006
+  }
5007
+
5008
+  // 选择地址
5009
+  selectAddress(name){
5010
+    this.validateBxForm.controls.officeAddress.setValue(name)
5011
+    this.isShowAddressList = false;
5012
+  }
5013
+
5014
+  // 获取科室地点列表
5015
+  addressList:any[] = [];
5016
+  addressLoading:boolean = false;
5017
+  getAddressList() {
5018
+    let postData = {
5019
+      idx: 0,
5020
+      sum: 99999,
5021
+      qrCode: {
5022
+        deptId: this.loginUserDeptId,
5023
+      }
5024
+    };
5025
+    this.addressLoading = true;
5026
+    this.mainService.getFetchDataList("simple/data", "qrCode", postData).subscribe(result=>{
5027
+      this.addressLoading = false;
5028
+      if(result.status == 200){
5029
+        this.addressList = result.list || [];
5030
+      }else{
5031
+        this.addressList = [];
5032
+      }
5033
+    });
5034
+  }
5035
+
5036
+  // 注意事项获取焦点
5037
+  isShowNoteList:boolean = false;
5038
+  focusNote(){
5039
+    this.isShowNoteList = true;
5040
+    this.getNoteList();
5041
+  }
5042
+
5043
+  // 选择注意事项
5044
+  selectNote(name){
5045
+    this.workOrderRemark2 = name;
5046
+    this.isShowNoteList = false;
5047
+  }
5048
+
5049
+  // 获取注意事项列表
5050
+  noteList:any[] = [];
5051
+  noteLoading:boolean = false;
5052
+  getNoteList() {
5053
+    this.noteLoading = true;
5054
+    this.mainService.getDictionary('list', 'inspect_notes',).subscribe(result=>{
5055
+      this.noteLoading = false;
5056
+      this.noteList = result || [];
5057
+    });
5058
+  }
4983 5059
 }

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

@@ -96,7 +96,12 @@
96 96
             </td>
97 97
             <td class="text_align_left">
98 98
               {{ data.hosName || '无' }}<br>
99
-              {{ data.department?.dept || '无' }}<br>
99
+              <ng-container *ngIf="data.repairIncidentType.value === 'public'">
100
+                {{ data.repairIncidentType.name }}<br>
101
+              </ng-container>
102
+              <ng-container *ngIf="data.repairIncidentType.value === 'dept'">
103
+                {{ data.department?.dept || '无' }}<br>
104
+              </ng-container>
100 105
               {{ data.place ? data.place.building.buildingName : '' }}{{ data.place ? data.place.floorName + '层' : '' }}{{ data.houseNumber }}
101 106
             </td>
102 107
             <td class="text_align_left">

+ 5 - 0
src/app/views/page-config/page-config.component.html

@@ -17,6 +17,11 @@
17 17
   <ng-container *ngIf="activeTagLink === 'pageConfigDrug'">
18 18
     <app-configuration-drug></app-configuration-drug>
19 19
   </ng-container>
20
+
21
+  <!-- 陪检 -->
22
+  <ng-container *ngIf="activeTagLink === 'pageConfigInspect'">
23
+    <app-configuration-inspect></app-configuration-inspect>
24
+  </ng-container>
20 25
 </div>
21 26
 
22 27
 

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

@@ -6,6 +6,7 @@ import { PageConfigComponent } from './page-config.component';
6 6
 import { ShareModule } from 'src/app/share/share.module';
7 7
 import { ConfigurationSpecimenComponent } from 'src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component';
8 8
 import { ConfigurationDrugComponent } from 'src/app/components/configurationCenter/configuration-drug/configuration-drug.component';
9
+import { ConfigurationInspectModule } from 'src/app/components/configurationCenter/configuration-inspect/configuration-inspect.module';
9 10
 
10 11
 
11 12
 @NgModule({
@@ -18,6 +19,7 @@ import { ConfigurationDrugComponent } from 'src/app/components/configurationCent
18 19
     CommonModule,
19 20
     PageConfigRoutingModule,
20 21
     ShareModule,
22
+    ConfigurationInspectModule,
21 23
   ]
22 24
 })
23 25
 export class PageConfigModule { }

+ 58 - 10
src/app/views/qrcode-configuration/qrcode-configuration.component.html

@@ -2,9 +2,27 @@
2 2
   <div class="list-template__content">
3 3
     <div class="list-template__top" nz-row>
4 4
       <div nz-col nzXl='18' class="list-template__searchBox">
5
+        <div class="list-template__searchItem">
6
+          <span class="label">关联科室</span>:
7
+          <nz-select class="formItem" (nzOnSearch)="changeInp($event)" (nzOpenChange)="openOtherTasktype($event)"
8
+            [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear nzPlaceHolder="请选择关联科室"
9
+            [(ngModel)]="searchDto.deptId">
10
+            <ng-container *ngFor="let option of deptList">
11
+              <nz-option *ngIf="!isLoading" [nzLabel]="option.dept" [nzValue]="option.id"></nz-option>
12
+            </ng-container>
13
+            <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
14
+              <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
15
+            </nz-option>
16
+          </nz-select>
17
+        </div>
18
+        <div class="list-template__searchItem">
19
+          <span class="label">地点名称:</span>
20
+          <input nz-input class="formItem" [(ngModel)]="searchDto.name" placeholder="请输入地点名称" nzSize="default" />
21
+        </div>
5 22
       </div>
6 23
       <div nz-col nzXl='6' class="list-template__btns">
7 24
         <button nz-button class="btn default" (click)='search()'>搜索</button>
25
+        <button class="btn default ml8" (click)='reset()'>重置</button>
8 26
         <button nz-button *ngIf="coopBtns.add" class="btn ml8 default" (click)="showModal()">新增</button>
9 27
       </div>
10 28
     </div>
@@ -13,17 +31,21 @@
13 31
         [nzLoading]="loading1">
14 32
         <thead>
15 33
           <tr class="thead">
16
-            <th nzWidth="10%">映射名称</th>
17
-            <th nzWidth="10%">关联科室</th>
18
-            <th nzWidth="5%">二维码CODE</th>
19
-            <th nzWidth="20%">操作</th>
34
+            <th nzWidth="5%">序号</th>
35
+            <th nzWidth="19%">地点名称</th>
36
+            <th nzWidth="19%">关联科室</th>
37
+            <th nzWidth="19%">地点编码</th>
38
+            <th nzWidth="19%">地点电话</th>
39
+            <th nzWidth="19%">操作</th>
20 40
           </tr>
21 41
         </thead>
22 42
         <tbody>
23 43
           <tr *ngFor="let data of listOfData;let index=index;">
24
-            <td>{{ data.name || '' }}</td>
25
-            <td>{{ data.deptDTO ? data.deptDTO.dept : '' }}</td>
26
-            <td>{{ data.code || '' }}</td>
44
+            <td>{{index+(pageIndex-1) * pageSize + 1}}</td>
45
+            <td>{{ data.name }}</td>
46
+            <td>{{ data.deptDTO?.dept }}</td>
47
+            <td>{{ data.placeCode}}</td>
48
+            <td>{{ data.phones}}</td>
27 49
             <td>
28 50
               <div class="coop">
29 51
                 <span *ngIf="coopBtns.edit" (click)="edit(data)">编辑</span>
@@ -49,10 +71,10 @@
49 71
     <overlay-scrollbars #osComponentRef1 class="content">
50 72
       <form nz-form [formGroup]="validateForm" class="addForm" (ngSubmit)="submitForm()">
51 73
         <nz-form-item>
52
-          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">映射名称</nz-form-label>
53
-          <nz-form-control nzErrorTip="请填写映射名称!">
74
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">地点名称</nz-form-label>
75
+          <nz-form-control nzErrorTip="请填写地点名称!">
54 76
             <nz-input-group>
55
-              <input type="text" nz-input formControlName="name" placeholder="请填写映射名称" />
77
+              <input type="text" nz-input formControlName="name" placeholder="请填写地点名称" />
56 78
             </nz-input-group>
57 79
           </nz-form-control>
58 80
         </nz-form-item>
@@ -70,6 +92,32 @@
70 92
             </nz-select>
71 93
           </nz-form-control>
72 94
         </nz-form-item>
95
+        <nz-form-item>
96
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="placeCode">地点编码</nz-form-label>
97
+          <nz-form-control nzErrorTip="请填写地点编码!">
98
+            <nz-input-group>
99
+              <input type="text" nz-input formControlName="placeCode" placeholder="请填写地点编码" />
100
+            </nz-input-group>
101
+          </nz-form-control>
102
+        </nz-form-item>
103
+        <nz-form-item>
104
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="phones">地点电话</nz-form-label>
105
+          <nz-form-control nzErrorTip="请填写地点电话!">
106
+            <nz-input-group>
107
+              <input (ngModelChange)="deptsPhoneChange()" nz-input formControlName="phones" placeholder="请填写地点电话" />
108
+            </nz-input-group>
109
+          </nz-form-control>
110
+        </nz-form-item>
111
+        <nz-input-group *ngFor="let phone of deptPhones;let index = index" class="dynamic">
112
+          <input nz-input [ngModel]="phone.phone" [ngModelOptions]="{standalone: true}" placeholder="请填写科室电话"
113
+            (ngModelChange)="deptsPhoneChange($event,phone)" />
114
+          <i nz-icon nzType="minus-circle-o" (click)="removeDeptPhone(index, $event)"></i>
115
+        </nz-input-group>
116
+        <button nz-button nzType="dashed" [disabled]="isAddDeptsPhone" class="add-button"
117
+          (click)="addDeptPhone($event)">
118
+          <i nz-icon nzType="plus"></i>
119
+          添加科室号码
120
+        </button>
73 121
       </form>
74 122
     </overlay-scrollbars>
75 123
     <div class="display_flex justify-content_flex-center">

+ 18 - 0
src/app/views/qrcode-configuration/qrcode-configuration.component.less

@@ -1,4 +1,22 @@
1 1
 @import "../../../../src/theme.less";
2
+:host{
3
+  .add-button {
4
+    margin: 0 auto 16px !important;
5
+  }
6
+  .dynamic {
7
+    margin-bottom: 16px;
8
+    display: flex;
9
+    align-items: center;
10
+    input {
11
+      width: 90%;
12
+    }
13
+    i {
14
+      margin-left: 8px;
15
+      cursor: pointer;
16
+      font-size: 18px;
17
+    }
18
+  }
19
+}
2 20
 .save {
3 21
   position: fixed;
4 22
   left: 0;

+ 66 - 1
src/app/views/qrcode-configuration/qrcode-configuration.component.ts

@@ -61,11 +61,47 @@ export class QRCodeConfigurationComponent implements OnInit {
61 61
     this.getList(true);
62 62
   }
63 63
 
64
+  // 新添加地点号码
65
+  deptPhones: any = []; //新添加的地点电话列表
66
+  deptsPhoneId = 1; //地点电话自增id
67
+  isAddDeptsPhone = true; //添加新的地点电话是否禁用
68
+  addDeptPhone(e: MouseEvent) {
69
+    e.preventDefault();
70
+    this.deptPhones.push({ id: ++this.deptsPhoneId, phone: "" });
71
+    this.deptsPhoneChange();
72
+  }
73
+  // 删除新添加地点号码
74
+  removeDeptPhone(index: number, e: MouseEvent) {
75
+    e.preventDefault();
76
+    this.deptPhones.splice(index, 1);
77
+    this.deptsPhoneChange();
78
+  }
79
+  //监听科室电话输入事件
80
+  deptsPhoneChange(e?, phone?) {
81
+    if (e !== undefined && phone !== undefined) {
82
+      phone.phone = e;
83
+    }
84
+    // -------------判断添加按钮是否禁用 start
85
+    this.isAddDeptsPhone = !this.validateForm.value.phones;
86
+    if (!this.isAddDeptsPhone) {
87
+      //如果没禁用
88
+      this.isAddDeptsPhone = this.deptPhones.some((item) => item.phone === "");
89
+    }
90
+    // -------------判断添加按钮是否禁用 end
91
+  }
92
+
64 93
   // 搜索
65 94
   search() {
66 95
     this.getList(true);
67 96
   }
97
+  // 重置
98
+  reset() {
99
+    this.searchDto = {};
100
+    this.getList(true);
101
+  }
68 102
   // 表格数据
103
+  alldepart1: any = []; //所有所属科室(搜索)
104
+  searchDto:any =  {};
69 105
   loading1 = false;
70 106
   getList(isResetPageIndex = false) {
71 107
     isResetPageIndex && (this.pageIndex = 1);
@@ -73,6 +109,7 @@ export class QRCodeConfigurationComponent implements OnInit {
73 109
       pageIndex: this.pageIndex,
74 110
       pageSize: this.pageSize,
75 111
       hosId: this.hosId,
112
+      searchDto: this.searchDto,
76 113
     };
77 114
     this.loading1 = true;
78 115
     this.qrCodeConfigurationService
@@ -85,7 +122,7 @@ export class QRCodeConfigurationComponent implements OnInit {
85 122
       });
86 123
   }
87 124
 
88
-  // 获取任务类型列表-其他临床服务
125
+  // 获取科室列表
89 126
   getOtherTasktype(keywords = '') {
90 127
     let hosId = this.tool.getCurrentHospital().id;
91 128
     this.isLoading = true;
@@ -103,6 +140,8 @@ export class QRCodeConfigurationComponent implements OnInit {
103 140
     this.add = true;
104 141
     this.modal = true;
105 142
     this.initForm();
143
+    this.isAddDeptsPhone = true;
144
+    this.deptPhones = [];
106 145
   }
107 146
   hideModal() {
108 147
     this.modal = false;
@@ -117,6 +156,8 @@ export class QRCodeConfigurationComponent implements OnInit {
117 156
     this.validateForm = this.fb.group({
118 157
       name: ['', [Validators.required]],
119 158
       deptId: [null, [Validators.required]],
159
+      placeCode: ['', [Validators.required]],
160
+      phones: [null],
120 161
     });
121 162
   }
122 163
   // 表单提交
@@ -127,11 +168,14 @@ export class QRCodeConfigurationComponent implements OnInit {
127 168
     }
128 169
     if (this.validateForm.invalid) return;
129 170
     this.btnLoading = true;
171
+    let deptsPhone = this.deptPhones.map((item) => item.phone).join();
130 172
     if(this.add){
131 173
       this.qrCodeConfigurationService
132 174
       .add({
133 175
         name: this.validateForm.value.name,
134 176
         deptId: this.validateForm.value.deptId,
177
+        placeCode: this.validateForm.value.placeCode,
178
+        phones: deptsPhone ? this.validateForm.value.phones + "," + deptsPhone : this.validateForm.value.phones,
135 179
         hosId: this.hosId,
136 180
       })
137 181
       .subscribe((data) => {
@@ -149,6 +193,8 @@ export class QRCodeConfigurationComponent implements OnInit {
149 193
       .update({
150 194
         name: this.validateForm.value.name,
151 195
         deptId: this.validateForm.value.deptId,
196
+        placeCode: this.validateForm.value.placeCode,
197
+        phones: deptsPhone ? this.validateForm.value.phones + "," + deptsPhone : this.validateForm.value.phones,
152 198
         coopData: this.coopData,
153 199
       })
154 200
       .subscribe((data) => {
@@ -168,8 +214,27 @@ export class QRCodeConfigurationComponent implements OnInit {
168 214
   maskFlag: any = false;
169 215
   coopData = {};
170 216
   edit(data) {
217
+    this.isAddDeptsPhone = false;
218
+    this.deptPhones = [];
219
+    let phones = data.phones ? data.phones.split(",") : [];
220
+    if (phones.length === 0) {
221
+      this.validateForm.controls.phones.setValue("");
222
+      this.deptPhones = [];
223
+    } else if (phones.length === 1) {
224
+      this.validateForm.controls.phones.setValue(phones[0]);
225
+      this.deptPhones = [];
226
+    } else {
227
+      this.validateForm.controls.phones.setValue(phones[0]);
228
+      this.deptPhones = phones.slice(1).map((item) => {
229
+        return {
230
+          id: ++this.deptsPhoneId,
231
+          phone: item,
232
+        };
233
+      });
234
+    }
171 235
     this.validateForm.controls.name.setValue(data.name);
172 236
     this.validateForm.controls.deptId.setValue(data.deptId);
237
+    this.validateForm.controls.placeCode.setValue(data.placeCode);
173 238
     this.modal = true;
174 239
     this.add = false;
175 240
     this.coopId = data.id;

+ 22 - 9
src/app/views/qrcode-configuration/qrcode-configuration.service.ts

@@ -11,12 +11,13 @@ export class QRCodeConfigurationService {
11 11
   ) { }
12 12
 
13 13
   // 列表-查
14
-  query({pageIndex, pageSize, hosId}) {
14
+  query({pageIndex, pageSize, searchDto, hosId}) {
15 15
     let data = {
16 16
       idx: pageIndex - 1,
17 17
       sum: pageSize,
18 18
       qrCode: {
19 19
         hosId,
20
+        ...searchDto,
20 21
       },
21 22
     };
22 23
     return this.mainService.getFetchDataList("simple/data", "qrCode", data);
@@ -28,23 +29,34 @@ export class QRCodeConfigurationService {
28 29
   }
29 30
 
30 31
   // 列表-增
31
-  add({name, deptId, hosId}) {
32
+  add({name, deptId, placeCode, phones, hosId}) {
32 33
     let data = {
33
-      name,
34
-      deptId,
35
-      hosId,
34
+      qrCode: {
35
+        name,
36
+        deptId,
37
+        placeCode,
38
+        phones,
39
+        hosId,
40
+      }
36 41
     };
37 42
 
38
-    return this.mainService.simplePost("addData", "qrCode", data);
43
+    return this.mainService.coopData("addData", "qrCode", data);
39 44
   }
40 45
 
41 46
   // 列表-改
42
-  update({name, deptId, coopData}) {
43
-    let data = {
47
+  update({name, deptId, placeCode, phones, coopData}) {
48
+    let data:any = {
44 49
       name,
45 50
       deptId,
51
+      placeCode,
52
+      phones,
53
+    };
54
+    data = {
55
+      qrCode: {
56
+        ...coopData,
57
+        ...data,
58
+      }
46 59
     };
47
-    data = {...coopData, ...data};
48 60
     return this.mainService.simplePost("addData", "qrCode", data);
49 61
   }
50 62
 
@@ -54,6 +66,7 @@ export class QRCodeConfigurationService {
54 66
       department: {
55 67
         cascadeHosId: hosId,
56 68
         dept: keywords,
69
+        searchType: 1,// 简单查询
57 70
       },
58 71
       idx: 0,
59 72
       sum: 9999,

+ 4 - 4
src/app/views/task-type-management/task-type-management.component.html

@@ -143,17 +143,17 @@
143 143
           </nz-radio-group>
144 144
         </div>
145 145
         <div class="mb8 w100">
146
-          <nz-form-label class="label" nzRequired>是否需要备注信息</nz-form-label>
146
+          <nz-form-label class="label" nzRequired>{{(association.value == 'inspect' || association.value == 'patientTransport') ? '是否需要注意事项' : '是否需要备注信息'}}</nz-form-label>
147 147
           <nz-radio-group class="handlerType" [(ngModel)]="isRemarks" (ngModelChange)="isRemarksChange()">
148 148
             <label nz-radio nzValue='1'>是</label>
149 149
             <label nz-radio nzValue='0'>否</label>
150 150
           </nz-radio-group>
151 151
         </div>
152 152
         <div class="mb8 display_flex align-items_center" *ngIf="isRemarks == 1">
153
-          <nz-form-label class="label">备注信息提示用语</nz-form-label>
153
+          <nz-form-label class="label">{{(association.value == 'inspect' || association.value == 'patientTransport') ? '注意事项提示用语' : '备注信息提示用语'}}</nz-form-label>
154 154
           <input nz-input class="flex_1" [(ngModel)]="remarks" placeholder="请填写备注信息提示用语" nzSize="default" />
155 155
         </div>
156
-        <div class="mb8 w100" *ngIf="isRemarks == 1">
156
+        <div class="mb8 w100" *ngIf="!(association.value == 'inspect' || association.value == 'patientTransport') && isRemarks == 1">
157 157
           <nz-form-label class="label">备注快捷输入</nz-form-label>
158 158
           <button nz-button nzType="dashed" (click)="addQuickRemarks()" *ngIf="!quickRemarks">
159 159
             <i nz-icon nzType="plus"></i>
@@ -279,7 +279,7 @@
279 279
         </div> -->
280 280
         <div nz-row *ngIf="association.value == 'inspect' || association.value == 'patientTransport'">
281 281
           <nz-form-label class="label">携带设备</nz-form-label>
282
-          <nz-checkbox-group class="handlerType" [nzDisabled]="isRemarks == 1" [(ngModel)]="carryEquipmentIds"></nz-checkbox-group>
282
+          <nz-checkbox-group class="handlerType" [(ngModel)]="carryEquipmentIds"></nz-checkbox-group>
283 283
         </div>
284 284
         <div nz-row class="mb8 display_flex align-items_center">
285 285
           <nz-form-label class="label">急单权重</nz-form-label>

+ 6 - 0
src/common.less

@@ -1,6 +1,9 @@
1 1
 .ant-table-tbody tr:nth-of-type(2n){
2 2
   background-color: #e9f7e9!important;
3 3
 }
4
+.padding8{
5
+  padding: 8px!important
6
+}
4 7
 .w320px {
5 8
   width: 320px;
6 9
 }
@@ -34,6 +37,9 @@
34 37
 .w100 {
35 38
   width: 100% !important;
36 39
 }
40
+.h100 {
41
+  height: 100% !important;
42
+}
37 43
 .w135 {
38 44
   width: 135px !important;
39 45
 }