浏览代码

合并代码

seimin 9 月之前
父节点
当前提交
27af17dd00
共有 25 个文件被更改,包括 1802 次插入31 次删除
  1. 1 1
      proxy.conf.json
  2. 6 0
      src/app/services/main.service.ts
  3. 2 1
      src/app/share/dialog-surgery/dialog-surgery.component.html
  4. 13 0
      src/app/views/acc-examine-set/acc-examine-set-routing.module.ts
  5. 64 0
      src/app/views/acc-examine-set/acc-examine-set.component.html
  6. 1251 0
      src/app/views/acc-examine-set/acc-examine-set.component.less
  7. 345 0
      src/app/views/acc-examine-set/acc-examine-set.component.ts
  8. 17 0
      src/app/views/acc-examine-set/acc-examine-set.module.ts
  9. 5 0
      src/app/views/blood-products-config/blood-products-config.component.html
  10. 12 0
      src/app/views/blood-products-config/blood-products-config.component.ts
  11. 1 1
      src/app/views/blood-search/blood-search.component.html
  12. 1 1
      src/app/views/drug-search/drug-search.component.html
  13. 7 7
      src/app/views/hushijiandan/hushijiandan.component.html
  14. 9 6
      src/app/views/hushijiandan/hushijiandan.component.ts
  15. 1 1
      src/app/views/inspect-search/inspect-search.component.html
  16. 1 1
      src/app/views/jp-search/jp-search.component.html
  17. 5 0
      src/app/views/main/main-routing.module.ts
  18. 1 1
      src/app/views/operation-notice/operation-notice.component.ts
  19. 1 1
      src/app/views/patient-search/patient-search.component.html
  20. 7 2
      src/app/views/preview/preview.component.html
  21. 28 1
      src/app/views/preview/preview.component.ts
  22. 7 1
      src/app/views/questionnaire-answer/questionnaire-answer.component.html
  23. 15 4
      src/app/views/questionnaire-answer/questionnaire-answer.component.ts
  24. 1 1
      src/app/views/quilt-washing-search/quilt-washing-search.component.html
  25. 1 1
      src/app/views/specimen-search/specimen-search.component.html

+ 1 - 1
proxy.conf.json

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

+ 6 - 0
src/app/services/main.service.ts

@@ -811,4 +811,10 @@ export class MainService {
811 811
       headers: this.headers,
812 812
     });
813 813
   }
814
+	// 验证工单问卷二维码是否过期
815
+	verifyPastApi(data): any {
816
+	  return this.http.post(host.host + "/questionnaire/check", data, {
817
+	    headers: this.headers,
818
+	  });
819
+	}
814 820
 }

+ 2 - 1
src/app/share/dialog-surgery/dialog-surgery.component.html

@@ -6,7 +6,8 @@
6 6
       <div class="defeat" [innerHTML]="content | htmlTransform"></div>
7 7
       <ul class="list">
8 8
         <li *ngIf="dataObj.doctorNameFlag"><span>主刀医生:</span><span>{{ dataObj.doctorName }}</span></li>
9
-        <li *ngIf="dataObj.anesthetistNameFlag"><span>麻醉医师:</span><span>{{ dataObj.anesthetistName }}</span></li>
9
+        <!-- <li *ngIf="dataObj.anesthetistNameFlag"><span>麻醉医师:</span><span>{{ dataObj.anesthetistName }}</span></li> -->
10
+        <li *ngIf="dataObj.anesthetistNameFlag"><span>临床:</span><span>通知临床</span></li>
10 11
         <li *ngIf="dataObj.docAssistantInfosFlag"><span>助理医生:</span><span>{{ dataObj.docAssistantInfos }}</span></li>
11 12
         <li *ngIf="dataObj.patientNameFlag"><span>手术患者:</span><span>{{ dataObj.patientDTO ? dataObj.patientDTO.patientName : '' }}</span></li>
12 13
       </ul>

+ 13 - 0
src/app/views/acc-examine-set/acc-examine-set-routing.module.ts

@@ -0,0 +1,13 @@
1
+import { NgModule } from '@angular/core';
2
+import { Routes, RouterModule } from '@angular/router';
3
+import { AccExamineSetComponent } from './acc-examine-set.component';
4
+
5
+const routes: Routes = [
6
+  { path: '', component: AccExamineSetComponent }
7
+];
8
+
9
+@NgModule({
10
+  imports: [RouterModule.forChild(routes)],
11
+  exports: [RouterModule]
12
+})
13
+export class AccExamineSetRoutingModule { }

+ 64 - 0
src/app/views/acc-examine-set/acc-examine-set.component.html

@@ -0,0 +1,64 @@
1
+<div class="TaskTypeManagement">
2
+  <div class="taskTypeInfo">
3
+    <div class="top">
4
+      <div class="item" (click)="tabModal('characteristics')" [ngClass]="{'items':tabModalName=='characteristics'}">
5
+        陪检问卷配置
6
+      </div>
7
+    </div>
8
+    <div class="list" *ngIf="!loading">
9
+      <!-- 特性配置 -->
10
+      <div *ngIf="tabModalName=='characteristics'">
11
+        <!-- 调查问卷 -->
12
+        <div class="display_flex align-items_center mb8">
13
+          <nz-form-label class="label" nzRequired>调查问卷</nz-form-label>
14
+          <nz-select class="w320px" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch
15
+            (nzOnSearch)="changequestionnaire($event, 1)" nzPlaceHolder="请选择调查问卷" [(ngModel)]="questionnaireIds">
16
+            <ng-container *ngFor="let option of questionnaireManagementData">
17
+              <nz-option *ngIf="!isLoading" [nzLabel]="option.title" [nzValue]="option.id"></nz-option>
18
+            </ng-container>
19
+            <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
20
+              <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
21
+            </nz-option>
22
+          </nz-select>
23
+        </div>
24
+        <!-- 任务类型 -->
25
+        <div class="display_flex align-items_center mb8">
26
+          <nz-form-label class="label" nzRequired>任务类型</nz-form-label>
27
+          <nz-select class="w320px" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch [nzMode]="'multiple'"
28
+            (nzOnSearch)="changeTasktype($event)" nzPlaceHolder="请选择任务类型" [(ngModel)]="taskTypeIds">
29
+            <ng-container *ngFor="let option of taskTypes1">
30
+              <nz-option *ngIf="!isLoading" [nzLabel]="option.taskName" [nzValue]="option.id"></nz-option>
31
+            </ng-container>
32
+            <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
33
+              <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
34
+            </nz-option>
35
+          </nz-select>
36
+        </div>
37
+        <!-- 间隔时间 -->
38
+        <div class="display_flex align-items_center mb8">
39
+					<nz-form-label class="label" nzRequired>间隔时间</nz-form-label>
40
+          <nz-select class="w320px" [nzDropdownMatchSelectWidth]="false"
41
+             nzPlaceHolder="请选择间隔时间" [(ngModel)]="intervalTime">
42
+            <ng-container *ngFor="let option of timeData">
43
+              <nz-option *ngIf="!isLoading" [nzLabel]="option.label" [nzValue]="option.value"></nz-option>
44
+            </ng-container>
45
+            <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
46
+              <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
47
+            </nz-option>
48
+          </nz-select>
49
+        </div>
50
+      </div>
51
+      <div class="bottom">
52
+        <button class="login-form-button" nzType="primary" [nzLoading]="btnLoading" nz-button (click)="submitForm()">保存</button>
53
+      </div>
54
+    </div>
55
+    <div class="list" *ngIf="loading">
56
+      <div class="loadingFull display_flex justify-content_flex-center align-items_center">
57
+        <div class="loadingFullInner">
58
+          <img src="../../../assets/images/loading.gif" alt="">
59
+          <div>加载中...</div>
60
+        </div>
61
+      </div>
62
+    </div>
63
+  </div>
64
+</div>

文件差异内容过多而无法显示
+ 1251 - 0
src/app/views/acc-examine-set/acc-examine-set.component.less


+ 345 - 0
src/app/views/acc-examine-set/acc-examine-set.component.ts

@@ -0,0 +1,345 @@
1
+import { Component, OnInit } from "@angular/core";
2
+import { MainService } from 'src/app/services/main.service';
3
+import { ToolService } from 'src/app/services/tool.service';
4
+import { NzMessageService } from 'ng-zorro-antd';
5
+import { Subject } from 'rxjs';
6
+import { debounceTime } from 'rxjs/operators';
7
+import { format, startOfMinute } from 'date-fns';
8
+
9
+@Component({
10
+  selector: "app-acc-examine-set",
11
+  templateUrl: "./acc-examine-set.component.html",
12
+  styleUrls: ["./acc-examine-set.component.less"],
13
+})
14
+export class AccExamineSetComponent implements OnInit {
15
+  loading:boolean = false; //页面加载的loading
16
+  btnLoading:boolean = false; //提交按钮的loading
17
+  tabModalName:string = 'characteristics'; //当前选中的tab
18
+  surgeryField = null; //手术关联业务
19
+  hosId = this.tool.getCurrentHospital().id; //当前院区
20
+  // 接手术关联任务类型
21
+  tasktypeId:any;
22
+  taskTypes1:any[] = [];
23
+  taskTypes2:any[] = [];
24
+  // 苏醒室科室
25
+  recoveryDeptId:any;
26
+  recoveryDepts:any[] = [];
27
+  // 自动建单
28
+  autoCreateOrders:any[] = [
29
+    {label:'是否开启',value: 0}
30
+  ];
31
+  // 是否开通送回病房
32
+  autoSendWard:any[] = [
33
+    {label:'是否开启',value: 0}
34
+  ];
35
+  // 是否开通送回苏醒室
36
+  autoSendAwakeningRoom:any[] = [
37
+    {label:'是否开启',value: 0}
38
+  ];
39
+  // 是否开通关联手术清洁建单
40
+  autoRemandClean:any[] = [
41
+    {label:'是否开启',value: 0}
42
+  ];
43
+  // 是否开启手术即将开始通知
44
+  surgeryBegin:any[] = [
45
+    {label:'是否开启',value: 0}
46
+  ];
47
+  // 建单时间
48
+  autoTime:Date | null = null;
49
+  tasktype1Id:any;
50
+  tasktype2Id:any;
51
+  cleanTypeId:any;
52
+	associationTypeIds:any;
53
+	questionnaireManagementData:any; //调查问卷数据
54
+	questionnaireIds:Number; //问卷参数
55
+	intervalTime:string = ''; //间隔时间参数
56
+	taskTypeIds:any = []; //任务类型参数
57
+	editId:'';
58
+	targetData:any = [];
59
+	stateData:any = [];
60
+	// 间隔时间数据
61
+	timeData:any[] = [
62
+	  {label:'10',value: 10},
63
+		{label:'15',value: 15},
64
+		{label:'30',value: 30},
65
+		{label:'60',value: 60}
66
+	];
67
+  // 配置
68
+  configs:any = {};
69
+  searchTimerSubject = new Subject();
70
+  constructor(private mainService: MainService,private tool: ToolService,private msg: NzMessageService) {}
71
+
72
+  ngOnInit():void {
73
+    // todo
74
+    this.searchTimerSubject.pipe(debounceTime(500)).subscribe((v) => {
75
+      let fun = v[0];
76
+      fun.call(this, v[1], v[2], v[3]);
77
+    });
78
+    // this.getTaskTypes('', true, 1);
79
+    // this.getTaskTypes('', false, 2);
80
+		this.getRelevanceType()
81
+  }
82
+
83
+  // 切换tab
84
+  tabModal(tabModalName:string){
85
+    this.tabModalName = tabModalName;
86
+  }
87
+  // 修改是否自动建单
88
+  changeAutoCreateOrders(e){
89
+    console.log(e);
90
+    if(!e[0].checked){
91
+      // todo
92
+      this.autoTime = null;
93
+    }
94
+  }
95
+
96
+  // 修改是否开通送回病房
97
+  changeAutoSendWard(e){
98
+    console.log(e);
99
+    if(!e[0].checked){
100
+      // todo
101
+      this.tasktype1Id = null;
102
+    }
103
+  }
104
+
105
+  // 修改是否开通送回苏醒室
106
+  changeAutoSendAwakeningRoom(e){
107
+    console.log(e);
108
+    if(!e[0].checked){
109
+      // todo
110
+      this.tasktype2Id = null;
111
+    }
112
+  }
113
+
114
+  // 修改是否开通关联手术清洁建单
115
+  changeAutoRemandClean(e){
116
+    console.log(e);
117
+    if(!e[0].checked){
118
+      // todo
119
+      this.cleanTypeId = null;
120
+    }
121
+  }
122
+
123
+  // 保存
124
+  submitForm() {
125
+    if(!this.questionnaireIds){
126
+      this.msg.create("warning", "请选择调查问卷!");
127
+      return;
128
+    }
129
+    if(this.taskTypeIds.length==0){
130
+      this.msg.create("warning", "请选择任务类型!");
131
+      return;
132
+    }
133
+    if(this.intervalTime==''){
134
+      this.msg.create("warning", "请选择间隔时间!");
135
+      return;
136
+    }
137
+		let taskArr = JSON.parse(JSON.stringify(this.taskTypeIds))
138
+    let editData = {
139
+			// questionnaireConfig:{
140
+				id:'',
141
+				hosId: this.hosId,
142
+				questionnaireIds:this.questionnaireIds,//问卷参数
143
+				intervalTime:this.intervalTime, //间隔时间参数
144
+				taskTypeIds:taskArr.join(',') //任务类型参数
145
+			// }
146
+    };
147
+		if(this.editId){
148
+			editData.id = this.editId
149
+		}else{
150
+			delete editData.id 
151
+		}
152
+    this.btnLoading = true;
153
+    this.mainService
154
+      .simplePost("addData", "questionnaireConfig", editData)
155
+      .subscribe((result) => {
156
+        this.btnLoading = false;
157
+        if (result.status == 200) {
158
+          this.getConfig();
159
+        }
160
+      });
161
+  }
162
+	
163
+	// 调查问卷搜索
164
+	changequestionnaire(e) {
165
+		this.searchTimer(this.getOneQuestionnaireManagement, e, false)
166
+	}
167
+	
168
+  // 用户输入搜索任务类型
169
+  isLoading: boolean = false;
170
+  changeTasktype(e) {
171
+    this.searchTimer(this.getTaskTypes, e, false);
172
+  }
173
+
174
+  changeRecoveryDepts(e) {
175
+    this.searchTimer(this.getRecoveryDepts, e, false);
176
+  }
177
+
178
+  // 边输入边搜索节流阀
179
+  searchTimer(fun, e, isFirst, type?) {
180
+    this.isLoading = true;
181
+    this.searchTimerSubject.next([fun, e, isFirst, type]);
182
+  }
183
+	
184
+	// 获取关联任务类型
185
+	getRelevanceType(){
186
+		this.associationTypeIds=[]
187
+		this.mainService.getDictionary("list", "association_types").subscribe((data) => {
188
+			for( let t of data){
189
+				if(t.value=='patientTransport' || 
190
+				t.value=='other' || t.value=='inspect'){
191
+					this.associationTypeIds.push(t)
192
+				}
193
+			}
194
+			this.getTaskTypes('', true, 1)
195
+			this.getState()
196
+		});
197
+	}
198
+	
199
+	// 获取问卷状态
200
+	getState(){
201
+		this.mainService.getDictionary("list", "survey_state").subscribe((data) => {
202
+			this.stateData = data
203
+			this.getQuestionnaireTarget()
204
+		});
205
+	}
206
+	
207
+	// 获取问卷调查目标
208
+	getQuestionnaireTarget(){
209
+		this.mainService.getDictionary("list", "survey_target").subscribe((data) => {
210
+			this.targetData = data
211
+			this.getOneQuestionnaireManagement()
212
+		});
213
+	}
214
+	
215
+	// 获取问卷数据
216
+	getOneQuestionnaireManagement(e:string = '', isFirst:boolean = false,){
217
+		let targetId = this.targetData.find(i=>i.value==4)
218
+		let stateId = this.stateData.find(i=>i.value==2)
219
+		let query = {
220
+			idx: 0,
221
+			questionnaireManagement: {
222
+				title:e,
223
+				hosId: this.hosId,
224
+				surveyTarget:{ //问卷调查目标
225
+					id:targetId.id
226
+				},
227
+				state:{ //问卷状态
228
+					id:stateId.id
229
+				}
230
+			},
231
+			hosId: this.hosId,
232
+			sum: 10
233
+		}
234
+		isFirst && (this.loading = true);
235
+		this.isLoading = true;
236
+	  this.mainService.getFetchDataList('api', "questionnaireManagement", query).subscribe(res=>{
237
+	    if(res.status == 200){
238
+				this.isLoading = false;
239
+	      this.questionnaireManagementData = res.list;
240
+	    }
241
+	  })
242
+	}
243
+	
244
+  //获取接手术关联任务类型
245
+  // 1 患者其他服务
246
+  // 2 其他临床服务
247
+  getTaskTypes(e:string = '', isFirst:boolean = false, type:number = 1) {
248
+		let ids = []
249
+		for(let i of this.associationTypeIds){
250
+			ids.push(i.id)
251
+		}
252
+    isFirst && (this.loading = true);
253
+    let postData:any = {
254
+      idx: 0,
255
+      sum: 9999,
256
+      taskType: {
257
+        taskName: e,
258
+        simpleQuery: true,
259
+				associationTypeIds:ids.join(','),
260
+        hosId: {
261
+          id: this.hosId
262
+        }
263
+      }
264
+    };
265
+    this.isLoading = true;
266
+    this.mainService
267
+      .getFetchDataList("simple/data", "taskType", postData)
268
+      .subscribe((result) => {
269
+        this.isLoading = false;
270
+        if (result.status == 200) {
271
+          this.taskTypes1 = result.list || [];
272
+          isFirst && this.getConfig();
273
+        }
274
+      });
275
+  }
276
+
277
+  //获取所有科室类型
278
+  allDeptTypes:any[] = [];
279
+  getDeptType(isFirst:boolean = false) {
280
+    isFirst && (this.loading = true);
281
+    this.mainService
282
+      .getDictionary("list", "dept_type")
283
+      .subscribe((result) => {
284
+        this.allDeptTypes = result;
285
+        isFirst && this.getRecoveryDepts('', true);
286
+      });
287
+  }
288
+
289
+  //获取所有科室
290
+  getRecoveryDepts(e:string = '', isFirst:boolean = false) {
291
+    isFirst && (this.loading = true);
292
+    let recovery = this.allDeptTypes.find(v => v.value === 'recovery');
293
+    let postData = {
294
+      idx: 0,
295
+      sum: 10,
296
+      department: {
297
+        dept: e,
298
+        hospital: {
299
+          id: this.hosId
300
+        },
301
+        type: recovery || undefined
302
+      }
303
+    };
304
+    this.isLoading = true;
305
+    this.mainService
306
+      .getFetchDataList("data", "department", postData)
307
+      .subscribe((result) => {
308
+        this.isLoading = false;
309
+        if (result.status == 200) {
310
+          this.recoveryDepts = result.list || [];
311
+          isFirst && this.getConfig();
312
+        }
313
+      });
314
+  }
315
+  // 获取配置
316
+  getConfig() {
317
+    this.loading = true;
318
+    let postData = {
319
+      idx: 0,
320
+      sum: 10,
321
+      questionnaireConfig: {
322
+        hosId: this.hosId,
323
+      }
324
+    };
325
+    this.mainService
326
+      .getFetchDataList("simple/data", "questionnaireConfig", postData)
327
+      .subscribe((result) => {
328
+        this.loading = false;
329
+        if (result.status == 200) {
330
+    			let data = result.list[0] || {};
331
+					this.editId = data.id
332
+					let questionData = data.questionnaireDTOS.map(i=>{
333
+						return i.id
334
+					})
335
+    			this.questionnaireIds = Number(questionData.join(',')) //调查问卷
336
+    			this.intervalTime = data.intervalTime //间隔时间
337
+    			this.taskTypeIds = data.taskTypeDTOS.map(i=>{ //任务类型
338
+						return i.id
339
+					}) 
340
+        }
341
+      });
342
+  }
343
+}
344
+
345
+

+ 17 - 0
src/app/views/acc-examine-set/acc-examine-set.module.ts

@@ -0,0 +1,17 @@
1
+import { NgModule } from '@angular/core';
2
+import { CommonModule } from '@angular/common';
3
+
4
+import { AccExamineSetRoutingModule } from './acc-examine-set-routing.module';
5
+import { AccExamineSetComponent } from './acc-examine-set.component';
6
+import { ShareModule } from 'src/app/share/share.module';
7
+
8
+
9
+@NgModule({
10
+  declarations: [AccExamineSetComponent],
11
+  imports: [
12
+    CommonModule,
13
+    AccExamineSetRoutingModule,
14
+    ShareModule
15
+  ]
16
+})
17
+export class AccExamineSetModule { }

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

@@ -60,6 +60,11 @@
60 60
           <nz-checkbox-group [(ngModel)]="cancelBloods" (ngModelChange)="changeCancelBloods($event)"></nz-checkbox-group>
61 61
           <nz-checkbox-group [(ngModel)]="cancelBloodHandovers" *ngIf="cancelBloods[0].checked"></nz-checkbox-group>
62 62
         </div>
63
+				<!-- 待送达合并工单 -->
64
+				<div class="display_flex align-items_center mb8">
65
+				  <nz-form-label class="label">待送达合并工单</nz-form-label>
66
+				  <nz-checkbox-group class="w320px" [(ngModel)]="sendingMergeOrder"></nz-checkbox-group>
67
+				</div>
63 68
       </div>
64 69
       <!-- 自动建单配置 -->
65 70
       <div *ngIf="tabModalName=='automaticOrderCreation'">

+ 12 - 0
src/app/views/blood-products-config/blood-products-config.component.ts

@@ -54,6 +54,10 @@ export class BloodProductsConfigComponent implements OnInit {
54 54
   delivery:any[] = [
55 55
     {label:'是否开启',value: 0}
56 56
   ];
57
+	// 待送达合并工单
58
+	sendingMergeOrder:any[] = [
59
+	  {label:'是否开启',value: 0}
60
+	];
57 61
   // 选择起点科室
58 62
   limitDeptIds:any = [];
59 63
   // 配置
@@ -184,6 +188,11 @@ export class BloodProductsConfigComponent implements OnInit {
184 188
       cancelBlood: this.cancelBloods[0].checked ? 1 : 0,
185 189
       cancelBloodHandover: this.cancelBloodHandovers[0].checked ? 1 : 0,
186 190
     };
191
+		if(this.sendingMergeOrder[0].checked){
192
+			postData.sendingMergeOrder = 1
193
+		}else{
194
+			delete postData.sendingMergeOrder
195
+		}
187 196
     console.log(postData);
188 197
     this.btnLoading = true;
189 198
     this.mainService
@@ -287,6 +296,9 @@ export class BloodProductsConfigComponent implements OnInit {
287 296
           this.radioCheckModesValue = this.configs.checkType.id;
288 297
           this.autoCreateOrders[0].checked = this.configs.autoCreate == 1;
289 298
           this.delivery[0].checked = this.configs.delivery == 1;
299
+					if(this.configs.sendingMergeOrder){
300
+						this.sendingMergeOrder[0].checked = this.configs.sendingMergeOrder == 1
301
+					}
290 302
           this.autoSendUsers[0].checked = this.configs.autoSendUser == 1;
291 303
           this.autoDepts[0].checked = this.configs.autoDept == 1;
292 304
           this.autoDeptLimits[0].checked = this.configs.autoDeptLimit == 1;

+ 1 - 1
src/app/views/blood-search/blood-search.component.html

@@ -65,7 +65,7 @@
65 65
         </thead>
66 66
         <tbody>
67 67
           <tr *ngFor="let data of listOfData;let i = index">
68
-            <td>{{i+1}}</td>
68
+            <td>{{i+(pageIndex-1) * pageSize + 1}}</td>
69 69
             <td>{{ data.applyCode || '无'}}</td>
70 70
             <td>{{ data.bloodCode || '无'}}</td>
71 71
             <td>{{ data.state?.name }}</td>

+ 1 - 1
src/app/views/drug-search/drug-search.component.html

@@ -84,7 +84,7 @@
84 84
         </thead>
85 85
         <tbody>
86 86
           <tr *ngFor="let data of listOfData;let i = index">
87
-            <td>{{i+1}}</td>
87
+            <td>{{i+(pageIndex-1) * pageSize + 1}}</td>
88 88
             <td>{{ data.launch?.dept}}</td>
89 89
             <td>{{ data.target?.dept }}</td>
90 90
             <td>{{ data.deliveryUser?.name }}</td>

+ 7 - 7
src/app/views/hushijiandan/hushijiandan.component.html

@@ -1571,7 +1571,7 @@
1571 1571
                       </thead>
1572 1572
                       <tbody>
1573 1573
                         <tr *ngFor="let data of adviceList; let i = index">
1574
-                          <td>{{ i + 1 }}</td>
1574
+                          <td>{{i+(advicePageIndex-1) * advicePageSize + 1}}</td>
1575 1575
                           <td>{{ data.createTime.slice(0, 16) }}</td>
1576 1576
                           <td>
1577 1577
                             <span
@@ -1651,7 +1651,7 @@
1651 1651
                       </thead>
1652 1652
                       <tbody>
1653 1653
                         <tr *ngFor="let item of surgeryList;let i = index">
1654
-                          <td>{{ i + 1 }}</td>
1654
+                          <td>{{i+(surgeryPageIndex-1) * surgeryPageSize + 1}}</td>
1655 1655
                           <td>{{ item.patientDTO ? item.patientDTO.patientName : '' }}({{ item.patientDTO ? item.patientDTO.bedNum : '' }})<br>{{ item.patientDTO ? item.patientDTO.residenceNo : '' }}</td>
1656 1656
                           <td>{{ item.applyDate | date:'MM-dd HH:mm' }}</td>
1657 1657
                           <td>{{ item.areaDeptDTO ? (deptDisplay == 2 ? item.areaDeptDTO.deptalias : item.areaDeptDTO.dept) : '' }}</td>
@@ -1754,7 +1754,7 @@
1754 1754
                             let i = index
1755 1755
                           "
1756 1756
                         >
1757
-                          <td>{{ i + 1 }}</td>
1757
+                          <td>{{i+(historySpecimenPageIndex-1) * historySpecimenPageSize + 1}}</td>
1758 1758
                           <td>{{ data.stype ? data.stype.name : "-" }}</td>
1759 1759
                           <td>
1760 1760
                             {{ data.speState ? data.speState.name : "-" }}
@@ -1856,7 +1856,7 @@
1856 1856
                             let i = index
1857 1857
                           "
1858 1858
                         >
1859
-                          <td>{{ i + 1 }}</td>
1859
+                          <td>{{i+(historyDrugsbagPageIndex-1) * historyDrugsbagPageSize + 1}}</td>
1860 1860
                           <td>{{ data.packid || "-" }}</td>
1861 1861
                           <td>
1862 1862
                             {{
@@ -2139,7 +2139,7 @@
2139 2139
                       </thead>
2140 2140
                       <tbody>
2141 2141
                         <tr *ngFor="let data of bxlbList; let i = index">
2142
-                          <td>{{ i + 1 }}</td>
2142
+                          <td>{{i+(bxlbPageIndex-1) * bxlbPageSize + 1}}</td>
2143 2143
                           <td>{{ data.description || "无" }}</td>
2144 2144
                           <td>
2145 2145
                             {{ data.startDate | date: "yyyy-MM-dd HH:mm" }}
@@ -2161,8 +2161,8 @@
2161 2161
                         [(nzPageIndex)]="bxlbPageIndex"
2162 2162
                         [(nzTotal)]="bxlbListLength"
2163 2163
                         [(nzPageSize)]="bxlbPageSize"
2164
-                        (nzPageIndexChange)="getBxlb(bxlbPageIndex)"
2165
-                        (nzPageSizeChange)="getBxlb(bxlbPageIndex)"
2164
+                        (nzPageIndexChange)="getBxlb(false)"
2165
+                        (nzPageSizeChange)="getBxlb(false)"
2166 2166
                       >
2167 2167
                       </nz-pagination>
2168 2168
                     </div>

+ 9 - 6
src/app/views/hushijiandan/hushijiandan.component.ts

@@ -3567,11 +3567,11 @@ export class HushijiandanComponent implements OnInit {
3567 3567
     this.selectOtherId = null;
3568 3568
     this.otherSearch = '';
3569 3569
     if (type === "surgery") {
3570
-      this.getSurgery();
3570
+      this.getSurgery(true);
3571 3571
     } else if (type === "historySpecimen") {
3572
-      this.getHistorySpecimen();
3572
+      this.getHistorySpecimen(true);
3573 3573
     } else if (type === "historyDrugsbag") {
3574
-      this.getHistoryDrugsbag();
3574
+      this.getHistoryDrugsbag(true);
3575 3575
     } else if (type === "bxlb" && this.isShowBx && this.coopBtns.repairList) {
3576 3576
       this.getBxlb(this.bxlbPageIndex);
3577 3577
       // this.getIncidentState();
@@ -3650,10 +3650,13 @@ export class HushijiandanComponent implements OnInit {
3650 3650
   adviceListLength: number = 10; //表格总数据量
3651 3651
   adviceSearchInp: string = ""; //意见箱搜索
3652 3652
   adviceLoading = false;
3653
-  getAdvice() {
3653
+  getAdvice(idx?) {
3654 3654
     if(!this.coopBtns.suggestionBox){
3655 3655
       return;
3656 3656
     }
3657
+    if(idx){
3658
+      this.advicePageIndex = 1;
3659
+    }
3657 3660
     let that = this;
3658 3661
     let postData = {
3659 3662
       advice: {
@@ -3665,7 +3668,7 @@ export class HushijiandanComponent implements OnInit {
3665 3668
           id: that.loginUser.id,
3666 3669
         },
3667 3670
       },
3668
-      idx: that.advicePageIndex - 1 < 0 ? 0 : that.advicePageIndex - 1,
3671
+      idx: that.advicePageIndex - 1,
3669 3672
       sum: that.advicePageSize,
3670 3673
     };
3671 3674
     this.adviceLoading = true;
@@ -3814,6 +3817,7 @@ export class HushijiandanComponent implements OnInit {
3814 3817
     // 获取事件状态
3815 3818
     let postData = { type: "list", key: "incident_status" };
3816 3819
     this.iLoading = true;
3820
+    this.bxlbLoading = true;
3817 3821
     this.mainService.getDictionaryByITSM(postData).subscribe((data: any) => {
3818 3822
       this.iLoading = false;
3819 3823
       if (data.status == 200) {
@@ -3830,7 +3834,6 @@ export class HushijiandanComponent implements OnInit {
3830 3834
           this.bxlbPageIndex = 1;
3831 3835
         }
3832 3836
         let current = JSON.parse(localStorage.getItem("user"));
3833
-        this.bxlbLoading = true;
3834 3837
         this.mainService
3835 3838
           .listWxIncident({
3836 3839
             idx: this.bxlbPageIndex - 1,

+ 1 - 1
src/app/views/inspect-search/inspect-search.component.html

@@ -74,7 +74,7 @@
74 74
         </thead>
75 75
         <tbody>
76 76
           <tr *ngFor="let data of listOfData;let i = index">
77
-            <td>{{i+1}}</td>
77
+            <td>{{i+(pageIndex-1) * pageSize + 1}}</td>
78 78
             <td>{{ data.patientName||'-' }}</td>
79 79
             <td>{{ data.residenceNo||'-' }}</td>
80 80
             <td>{{ data.applyDept ? data.applyDept.dept : '-' }}</td>

+ 1 - 1
src/app/views/jp-search/jp-search.component.html

@@ -77,7 +77,7 @@
77 77
         </thead>
78 78
         <tbody>
79 79
           <tr *ngFor="let data of listOfData;let i = index">
80
-            <td>{{i+1}}</td>
80
+            <td>{{i+(pageIndex-1) * pageSize + 1}}</td>
81 81
             <td>{{ data.launch?.dept}}</td>
82 82
             <td>{{ data.target?.dept }}</td>
83 83
             <td>{{ data.creatTime }}</td>

+ 5 - 0
src/app/views/main/main-routing.module.ts

@@ -413,6 +413,11 @@ const routes: Routes = [
413 413
         path: "questionnaireAnswer",
414 414
         loadChildren: () => import("../questionnaire-answer/questionnaire-answer.module").then((m) => m.QuestionnaireAnswerModule),
415 415
       },
416
+			// 陪检问卷配置
417
+			{
418
+			  path: "accExamineSet",
419
+			  loadChildren: () => import("../acc-examine-set/acc-examine-set.module").then((m) => m.AccExamineSetModule),
420
+			},
416 421
       // 条码预制
417 422
       {
418 423
         path: "barcodePrefabrication",

+ 1 - 1
src/app/views/operation-notice/operation-notice.component.ts

@@ -59,7 +59,7 @@ export class OperationNoticeComponent implements OnInit {
59 59
   tabNames = {
60 60
     doctor: '主刀医生',
61 61
     docAssistant: '助理医生',
62
-    anesthetist: '麻醉医师',
62
+    anesthetist: '临床',
63 63
     patient: '手术患者',
64 64
   }
65 65
 

+ 1 - 1
src/app/views/patient-search/patient-search.component.html

@@ -58,7 +58,7 @@
58 58
         </thead>
59 59
         <tbody>
60 60
           <tr *ngFor="let data of listOfData;let i = index">
61
-            <td>{{i+1}}</td>
61
+            <td>{{i+(pageIndex-1) * pageSize + 1}}</td>
62 62
             <td>{{ data.patientName||'-' }}</td>
63 63
             <td>{{ data.residenceNo||'-' }}</td>
64 64
             <td>{{ data.bedNum||'-' }}</td>

+ 7 - 2
src/app/views/preview/preview.component.html

@@ -1,10 +1,10 @@
1 1
 <div class="preview" [ngStyle]="{margin:isM?0:'',minHeight:isM?'100vh':''}">
2
-  <ng-container *ngIf="!success">
2
+  <ng-container *ngIf="!success && !pastStatus">
3 3
     <ng-container *ngIf="!failure">
4 4
       <div *ngIf="!loading">
5 5
         <h1>{{qm.title}}</h1>
6 6
         <p>{{qm.surveyDescribe}}</p>
7
-        <form nz-form [formGroup]="validateForm">
7
+        <form nz-form [formGroup]="validateForm" >
8 8
           <ng-container *ngFor="let item of listOfData;let i=index;">
9 9
             <!-- 单选 -->
10 10
             <nz-form-item *ngIf="item.answerMode && item.answerMode.value == 1">
@@ -48,4 +48,9 @@
48 48
   <div class="success" *ngIf="success">
49 49
     感谢您的参与!
50 50
   </div>
51
+	<div class="failure" *ngIf="pastStatus">
52
+	  调研码已过期,请知悉!<br>	
53
+		请退出重新扫码
54
+	</div>
55
+	
51 56
 </div>

+ 28 - 1
src/app/views/preview/preview.component.ts

@@ -17,7 +17,9 @@ export class PreviewComponent implements OnInit {
17 17
   listOfData:any[] = [];
18 18
   success:boolean = false;
19 19
   isM:boolean = false;
20
-
20
+	pastStatus:boolean = false;
21
+	gdid:string = '';
22
+	qrCodeIndex:string = '';
21 23
   constructor(
22 24
     private route: ActivatedRoute,
23 25
     private mainService:MainService,
@@ -33,6 +35,12 @@ export class PreviewComponent implements OnInit {
33 35
     }else{
34 36
       document.documentElement.style.fontSize = '100px';
35 37
     }
38
+		console.log(234,this.route.snapshot.queryParams)
39
+		this.gdid = this.route.snapshot.queryParams.gdId;
40
+		this.qrCodeIndex = this.route.snapshot.queryParams.qrCodeIndex
41
+		if(this.gdid){
42
+			this.verifyPast(this.gdid)
43
+		}
36 44
     this.getList();
37 45
   }
38 46
   // 初始化Form
@@ -58,6 +66,11 @@ export class PreviewComponent implements OnInit {
58 66
         hosId: this.qm.hosId,
59 67
       }))
60 68
     };
69
+		if(this.gdid){
70
+			postData.gdId = this.gdid
71
+		}else{
72
+			delete postData.gdId
73
+		}
61 74
     const mid = this.message.loading('loading..', { nzDuration: 0 }).messageId;
62 75
     this.mainService.surveyCommit(postData).subscribe((res:any)=>{
63 76
       this.message.remove(mid);
@@ -74,6 +87,20 @@ export class PreviewComponent implements OnInit {
74 87
       const reg = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i;
75 88
       return reg.test(navigator.userAgent);
76 89
   }
90
+	// 验证工单问卷调查二维码是否过期
91
+	verifyPast(gdid){
92
+		this.mainService.verifyPastApi({
93
+			gdId:gdid,
94
+			qrCodeIndex:this.qrCodeIndex
95
+		}).subscribe((res:any)=>{
96
+		  if (res.status == 200) {
97
+		    this.pastStatus = false;
98
+		  }else{
99
+				this.pastStatus = true;
100
+		    // this.message.create('error',res.info,{ nzDuration: 5000 });
101
+		  }
102
+		})
103
+	}
77 104
   // 问卷数据
78 105
   getList() {
79 106
     let token = this.route.snapshot.queryParams.token;

+ 7 - 1
src/app/views/questionnaire-answer/questionnaire-answer.component.html

@@ -17,13 +17,19 @@
17 17
         <thead>
18 18
           <tr class="thead">
19 19
             <th nzWidth="50px">序号</th>
20
+						<th *ngFor="let item of listBaseInfoTh">{{item.describe}}</th>
20 21
             <th *ngFor="let item of listOfDataTh">{{item.describe}}</th>
21 22
           </tr>
22 23
         </thead>
23 24
         <tbody>
24 25
           <tr *ngFor="let data of listOfData; let i = index">
25 26
             <td>{{ i + 1 }}</td>
26
-            <td *ngFor="let item of data">{{ item.answer }}</td>
27
+						<td *ngIf="data.data">{{ data.data.patientName }}</td>
28
+						<td *ngIf="data.data">{{ data.data.residenceNo }}</td>
29
+						<td *ngIf="data.data">{{data.data.gdCode}}/{{data.data.taskTypeName}}</td>
30
+						<td *ngFor="let item of data">
31
+							{{ item.answer }}
32
+						</td>
27 33
           </tr>
28 34
         </tbody>
29 35
       </nz-table>

+ 15 - 4
src/app/views/questionnaire-answer/questionnaire-answer.component.ts

@@ -25,7 +25,8 @@ export class QuestionnaireAnswerComponent implements OnInit {
25 25
   pageSize: number = 10; //表格每页展示条数
26 26
   listLength: number = 10; //表格总数据量
27 27
   currentHospital; //当前院区
28
-
28
+	listBaseInfoTh: any[] = []; //陪检患者表格表头
29
+	listBaseInfos: any[] = []; //陪检患者表格数据
29 30
   ngOnInit() {
30 31
     this.currentHospital = this.tool.getCurrentHospital();
31 32
     this.getList(1);
@@ -82,10 +83,20 @@ export class QuestionnaireAnswerComponent implements OnInit {
82 83
         this.loading1 = false;
83 84
         if (data.status == 200) {
84 85
           this.listOfData = data.data?data.data.answers:[];
85
-          // if(data.data && data.data.answers){
86
-          //   data.data.answers
87
-          // }
88 86
           this.listOfDataTh = data.data?data.data.infos:[];
87
+					this.listBaseInfos = data.data?data.data.baseInfos:[];
88
+					if(this.listBaseInfos&&this.listBaseInfos.length>0){
89
+						this.listBaseInfoTh = [
90
+							{describe:'患者姓名'},
91
+							{describe:'住院号'},
92
+							{describe:'工单编号/任务类型'},
93
+						]
94
+						for(let i in this.listBaseInfos){
95
+							this.listOfData[i].data = this.listBaseInfos[i]
96
+						}
97
+					}else{
98
+						this.listBaseInfoTh = []
99
+					}	
89 100
           this.listLength = data.totalNum;
90 101
         }
91 102
       });

+ 1 - 1
src/app/views/quilt-washing-search/quilt-washing-search.component.html

@@ -48,7 +48,7 @@
48 48
         </thead>
49 49
         <tbody>
50 50
           <tr *ngFor="let data of listOfData;let i = index">
51
-            <td>{{i+1}}</td>
51
+            <td>{{i+(pageIndex-1) * pageSize + 1}}</td>
52 52
             <td>{{ data.relatedDeptDTO?.dept }}</td>
53 53
             <td>{{ data.batchCode }}</td>
54 54
             <td>{{ data.clothesType?.name }}</td>

+ 1 - 1
src/app/views/specimen-search/specimen-search.component.html

@@ -175,7 +175,7 @@
175 175
         </thead>
176 176
         <tbody>
177 177
           <tr *ngFor="let data of listOfData; let i = index">
178
-            <td>{{ i + 1 }}</td>
178
+            <td>{{i+(pageIndex-1) * pageSize + 1}}</td>
179 179
             <td>{{ data.sickRoom ? data.sickRoom.dept : "-" }}</td>
180 180
             <td>{{ data.patientName}}<span *ngIf="data.bedNum">({{data.bedNum}})</span><br>{{data.residenceNo}}</td>
181 181
             <td>{{ data.scode || "-" }}</td>