Browse Source

标本视图优化

seimin 2 years ago
parent
commit
49e1f1fbcb

+ 45 - 0
src/app/share/order-prompt-modal/order-prompt-modal.component.html

@@ -0,0 +1,45 @@
1
+<div class="modal display_flex justify-content_flex-center align-items_center" *ngIf="show">
2
+  <div class="modalBody">
3
+    <div class="title">工单列表查看<i class="icon_transport transport-guanbi" (click)="hideModal()"></i></div>
4
+    <div class="content">
5
+      <nz-table class="hospitalTable" [nzData]="historySpecimenList" nzSize="middle" [nzShowPagination]="false"
6
+        [nzLoading]="hsLoading">
7
+        <thead>
8
+          <tr class="thead">
9
+              <th nzWidth="4%">序号</th>
10
+              <th nzWidth="8%">单号</th>
11
+              <th nzWidth="7%">申请科室</th>
12
+              <th nzWidth="5%">实际接收</th>
13
+              <th nzWidth="8%">发起时间</th>
14
+              <th nzWidth="8%">状态</th>
15
+              <th nzWidth="5%">操作</th>
16
+          </tr>
17
+        </thead>
18
+        <tbody>
19
+          <tr *ngFor="let data of historySpecimenList;let i = index;">
20
+              <td>{{ i + 1 }}</td>
21
+              <td>{{ data.gdcode || '无' }}</td>
22
+              <td>{{ data.createDeptDTO?data.createDeptDTO.dept:'无' }}</td>
23
+              <td>{{ data.actualReceiveNum }}</td>
24
+              <td>{{ data.startTime|date:'yyyy-MM-dd HH:mm'}}</td>
25
+              <td>{{ data.gdState?data.gdState.name:'无' }}</td>
26
+              <td>
27
+                <div class="coop">
28
+                  <span (click)="goToOrderDetail(data.id)">查看</span>
29
+                </div>
30
+              </td>
31
+          </tr>
32
+        </tbody>
33
+      </nz-table>
34
+      <div class="pagination">
35
+        <nz-pagination [(nzPageIndex)]="historySpecimenPageIndex" [(nzTotal)]="historySpecimenListLength"
36
+          [(nzPageSize)]="historySpecimenPageSize" (nzPageIndexChange)="getOrders()"
37
+          (nzPageSizeChange)="getOrders()">
38
+        </nz-pagination>
39
+      </div>
40
+    </div>
41
+    <div class="display_flex justify-content_flex-center">
42
+      <button class="btn know" nz-button nzType="primary" (click)="hideModal()">知道了</button>
43
+    </div>
44
+  </div>
45
+</div>

+ 176 - 0
src/app/share/order-prompt-modal/order-prompt-modal.component.less

@@ -0,0 +1,176 @@
1
+@import "../../../../src/theme.less";
2
+.coop span {
3
+  display: inline-block;
4
+  padding: 0 8px;
5
+  cursor: pointer;
6
+  position: relative;
7
+}
8
+.modal {
9
+  position: fixed;
10
+  left: 0;
11
+  top: 0;
12
+  width: 100%;
13
+  height: 100%;
14
+  background: rgba(0, 0, 0, 0.4);
15
+  z-index: 8;
16
+  .ji {
17
+    position: absolute;
18
+    right: 0px;
19
+    top: -3px;
20
+    width: 30px;
21
+  }
22
+  .hospitalTable {
23
+    width: 100%;
24
+    td {
25
+      text-align: center !important;
26
+      position: relative;
27
+    }
28
+    .thead {
29
+      background-image: linear-gradient(to right, @bg-start, @bg-end);
30
+      th {
31
+        text-align: center !important;
32
+        color: #fff;
33
+        background: transparent;
34
+      }
35
+    }
36
+  }
37
+
38
+  .modalBody {
39
+    width: 1094px;
40
+    min-height: 220px;
41
+    background: #fff;
42
+    border-radius: 5px;
43
+    padding: 10px 20px;
44
+    color: #333;
45
+    &.modalBody-search {
46
+      width: 480px;
47
+      min-height: 250px;
48
+    }
49
+
50
+    .title {
51
+      width: 100%;
52
+      text-align: center;
53
+      font-size: 18px;
54
+      position: relative;
55
+
56
+      i {
57
+        position: absolute;
58
+        right: 0;
59
+        top: 0;
60
+        font-size: 20px;
61
+        color: #666;
62
+        cursor: pointer;
63
+        padding: 0 5px;
64
+      }
65
+    }
66
+
67
+    .content {
68
+      min-height: 117px;
69
+      background: #f9fafb;
70
+      border: 1px solid #e5e9ed;
71
+      border-radius: 5px;
72
+      overflow: hidden;
73
+      margin-top: 12px;
74
+      display: flex;
75
+      flex-direction: column;
76
+      justify-content: center;
77
+      align-items: center;
78
+      &.content-search {
79
+        min-height: 147px;
80
+        justify-content: start;
81
+        .defeat-search {
82
+          width: 100%;
83
+          height: 52px;
84
+          display: flex;
85
+          justify-content: center;
86
+          align-items: center;
87
+          border-bottom: solid 1px #e5e9ed;
88
+          em {
89
+            color: #666;
90
+            font-style: normal;
91
+          }
92
+        }
93
+        .form {
94
+          width: 100%;
95
+          padding: 0 16px;
96
+          .ant-form-item-label,
97
+          .ant-form-explain {
98
+            text-align: left !important;
99
+          }
100
+        }
101
+      }
102
+
103
+      div {
104
+        text-align: center;
105
+        margin: 0;
106
+
107
+        &.defeat {
108
+          color: #333;
109
+          font-size: 28px;
110
+        }
111
+        &.countDown {
112
+          font-size: 14px;
113
+          color: 666;
114
+          em {
115
+            font-style: normal;
116
+            color: @primary-color;
117
+          }
118
+        }
119
+
120
+        &:nth-child(3) {
121
+          font-size: 14px;
122
+          color: #666;
123
+          padding-bottom: 10px;
124
+        }
125
+      }
126
+    }
127
+
128
+    button {
129
+      margin-top: 10px;
130
+
131
+      &.btn {
132
+        margin-left: 8px;
133
+      }
134
+    }
135
+  }
136
+
137
+  // 新增
138
+  &.add {
139
+    .modalBody {
140
+      width: 480px;
141
+      height: auto;
142
+
143
+      .content {
144
+        width: 100%;
145
+        height: auto;
146
+        padding: 18px 14px 0 14px;
147
+
148
+        .addForm {
149
+          .ant-form-item {
150
+            margin-bottom: 15px;
151
+
152
+            .ant-form-item-label {
153
+              line-height: 0;
154
+            }
155
+          }
156
+        }
157
+
158
+        .editForm {
159
+          .ant-form-item {
160
+            margin-bottom: 15px;
161
+
162
+            .ant-form-item-label {
163
+              line-height: 0;
164
+            }
165
+          }
166
+        }
167
+      }
168
+
169
+      button {
170
+        &:nth-child(1) {
171
+          margin-right: 20px;
172
+        }
173
+      }
174
+    }
175
+  }
176
+}

+ 61 - 0
src/app/share/order-prompt-modal/order-prompt-modal.component.ts

@@ -0,0 +1,61 @@
1
+import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2
+import { MainService } from '../../services/main.service';
3
+import { Router } from '@angular/router';
4
+
5
+@Component({
6
+  selector: 'app-order-prompt-modal',
7
+  templateUrl: './order-prompt-modal.component.html',
8
+  styleUrls: ['./order-prompt-modal.component.less']
9
+})
10
+export class OrderPromptModalComponent implements OnInit {
11
+  // 切换科室,切换弹窗
12
+  hsLoading = false;
13
+  historySpecimenList: any = [];
14
+  historySpecimenPageIndex: number = 1;//表格当前页码
15
+  historySpecimenPageSize: number = 5;//表格每页展示条数
16
+  historySpecimenListLength: number = 10;//表格总数据量
17
+  @Input() show: Boolean;
18
+  @Input() workId: any;
19
+
20
+  @Output() closeModelHs = new EventEmitter<any>();//1.组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件
21
+
22
+  constructor(private mainService: MainService,private router: Router) { }
23
+
24
+  ngOnInit() {
25
+    this.getOrders();
26
+  }
27
+  // 关闭弹窗
28
+  hideModal() {
29
+    this.closeModelHs.emit(JSON.stringify({ show: false }));//emits(向上弹射)事件
30
+  }
31
+  // 查看工单详情
32
+  goToOrderDetail(id){
33
+    this.router.navigateByUrl(`specimenView2/detailSample/${id}`);
34
+  }
35
+  // 获取列表数据
36
+  getOrders(idx?) {
37
+    if (idx) {
38
+      this.historySpecimenPageIndex = 1;
39
+    }
40
+    let postData = {
41
+      idx: this.historySpecimenPageIndex - 1,
42
+      sum: this.historySpecimenPageSize,
43
+      workOrder: {
44
+        hosId: JSON.parse(localStorage.getItem("user")).user.currentHospital.id,
45
+        worker: {id: this.workId},
46
+        gdState: {id: "72"},
47
+        taskType: {associationType: {id: 256}},
48
+      }
49
+    }
50
+    this.hsLoading = true;
51
+    this.mainService.getFetchDataList('data','workOrder',postData).subscribe(data => {
52
+      this.hsLoading = false;
53
+      this.historySpecimenList = data.list || [];
54
+      this.historySpecimenListLength = data.totalNum || 0;
55
+    })
56
+  }
57
+}
58
+
59
+
60
+
61
+

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

@@ -34,6 +34,7 @@ import { LogPromptModalComponent } from './log-prompt-modal/log-prompt-modal.com
34 34
 import { DetailBxComponent } from './detail-bx/detail-bx.component';
35 35
 import { ImageViewerComponent } from './image-viewer/image-viewer.component';
36 36
 import { SpePromptModalComponent } from './spe-prompt-modal/spe-prompt-modal.component';
37
+import { OrderPromptModalComponent } from './order-prompt-modal/order-prompt-modal.component';
37 38
 
38 39
 @NgModule({
39 40
   declarations: [
@@ -66,6 +67,7 @@ import { SpePromptModalComponent } from './spe-prompt-modal/spe-prompt-modal.com
66 67
     DetailBxComponent,
67 68
     ImageViewerComponent,
68 69
     SpePromptModalComponent,
70
+    OrderPromptModalComponent,
69 71
   ],
70 72
   imports: [
71 73
     CommonModule,
@@ -113,6 +115,7 @@ import { SpePromptModalComponent } from './spe-prompt-modal/spe-prompt-modal.com
113 115
     DetailBxComponent,
114 116
     ImageViewerComponent,
115 117
     SpePromptModalComponent,
118
+    OrderPromptModalComponent,
116 119
   ]
117 120
 })
118 121
 export class ShareModule { }

+ 2 - 0
src/app/share/spe-prompt-modal/spe-prompt-modal.component.ts

@@ -15,6 +15,7 @@ export class SpePromptModalComponent implements OnInit {
15 15
   historySpecimenListLength: number = 10;//表格总数据量
16 16
   @Input() show: Boolean;
17 17
   @Input() checkDeptId: String;
18
+  @Input() pharmacySearchKey: String;
18 19
   @Input() printDate: any;
19 20
 
20 21
   @Output() closeModelHs = new EventEmitter<any>();//1.组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件
@@ -39,6 +40,7 @@ export class SpePromptModalComponent implements OnInit {
39 40
       specimen: {
40 41
         hosId: JSON.parse(localStorage.getItem("user")).user.currentHospital.id,
41 42
         checkDept: {id: this.checkDeptId},
43
+        scode: this.pharmacySearchKey || undefined,
42 44
         speState: {id: 382},
43 45
         printDate: this.printDate?(new Date(this.printDate).getTime()):undefined,
44 46
       }

+ 3 - 2
src/app/views/questionnaire-answer/questionnaire-answer.component.less

@@ -1,10 +1,11 @@
1 1
 @import "../../../../src/theme.less";
2 2
 
3 3
 :host {
4
-  ::ng-deep .ant-calendar-picker {
5
-    width: 100% !important;
4
+  ::ng-deep .ant-table table{
5
+    table-layout: fixed;
6 6
   }
7 7
 }
8
+
8 9
 .save {
9 10
   position: fixed;
10 11
   left: 0;

+ 43 - 78
src/app/views/specimen-view2/specimen-view2.component.html

@@ -72,25 +72,25 @@
72 72
           >
73 73
             <div class="pharmacy-main__selectionInfo">
74 74
               <div class="pharmacy-main__selectionItem">
75
-                <span>检验项目</span>
76
-                <span>{{item.specimen_desc || '无'}}</span>
75
+                <span title="检验项目">{{item.specimen_desc || '无'}}</span>
76
+                <span></span>
77 77
               </div>
78 78
               <div class="pharmacy-main__selectionItem">
79
-                <span>患者姓名(床号)</span>
80
-                <span>{{item.patientname || '无'}}<span *ngIf="item.patientname && item.bednum">({{item.bednum}})</span></span>
79
+                <span title="标本编码">{{item.scode || '无'}}</span>
80
+                <span title="标本类型">{{item.stype || '无'}}</span>
81 81
               </div>
82 82
               <div class="pharmacy-main__selectionItem">
83
-                <span>住院号</span>
84
-                <span>{{item.residence_no || '无'}}</span>
83
+                <span title="患者姓名(床号)">{{item.patientname || '无'}}({{item.bednum || '无'}})</span>
84
+                <span title="住院号">{{item.residence_no || '无'}}</span>
85 85
               </div>
86 86
               <div class="pharmacy-main__selectionItem">
87
-                <span class="moreContent left">{{item.sick_room || '无'}}</span>
87
+                <span title="起点科室" class="moreContent left">{{item.sick_room || '无'}}</span>
88 88
                 <span class="icon_transport transport-arrow-right-full"></span>
89
-                <span class="moreContent">{{item.check_dept || '无'}}</span>
89
+                <span title="终点科室" class="moreContent">{{item.check_dept || '无'}}</span>
90 90
               </div>
91 91
               <div class="pharmacy-main__selectionItem">
92
-                <span>采集时间</span>
93
-                <span>{{item.print_date ? (item.print_date|date:'MM-dd HH:mm') :'无'}}</span>
92
+                <span></span>
93
+                <span title="采集时间">{{item.print_date ? (item.print_date|date:'MM-dd HH:mm') :'无'}}</span>
94 94
               </div>
95 95
             </div>
96 96
           </div>
@@ -161,30 +161,14 @@
161 161
       <overlay-scrollbars #osComponentRef2 class="pharmacy-main__selectionWrap">
162 162
         <div *ngIf="!loading2" style="height: 100%">
163 163
           <div
164
-            (click)="goToOrderDetail(item)"
164
+            (click)="showOrderList(item)"
165 165
             class="pharmacy-main__selection"
166 166
             *ngFor="let item of waitPharmacyList; let i = index"
167 167
           >
168 168
             <div class="pharmacy-main__selectionInfo">
169 169
               <div class="pharmacy-main__selectionItem">
170
-                <span>单号</span>
171
-                <span>{{item.gdcode || '无'}}</span>
172
-              </div>
173
-              <div class="pharmacy-main__selectionItem">
174
-                <span>执行人</span>
175
-                <span>{{item.userName || '无'}}</span>
176
-              </div>
177
-              <div class="pharmacy-main__selectionItem">
178
-                <span>科室名称</span>
179
-                <span class="moreContent">{{item.start_department || '无'}}</span>
180
-              </div>
181
-              <div class="pharmacy-main__selectionItem">
182
-                <span>扫描标本总数</span>
183
-                <span>{{item.actual_receive_num || '无'}}</span>
184
-              </div>
185
-              <div class="pharmacy-main__selectionItem">
186
-                <span>到达时间</span>
187
-                <span>{{item.arrivetime ? (item.arrivetime|date:'MM-dd HH:mm') :'无'}}</span>
170
+                <span title="执行人姓名">{{item.userName || '无'}}</span>
171
+                <span title="工单数量">{{item.orderNum || '无'}}</span>
188 172
               </div>
189 173
             </div>
190 174
           </div>
@@ -261,12 +245,8 @@
261 245
           >
262 246
             <div class="pharmacy-main__selectionInfo">
263 247
               <div class="pharmacy-main__selectionItem">
264
-                <span>科室名称</span>
265
-                <span class="moreContent">{{item.check_dept || '无'}}</span>
266
-              </div>
267
-              <div class="pharmacy-main__selectionItem">
268
-                <span>数量</span>
269
-                <span>{{item.count || '无'}}</span>
248
+                <span title="检验科室名称" class="moreContent left">{{item.check_dept || '无'}}</span>
249
+                <span title="配送标本数量">{{item.count || '无'}}</span>
270 250
               </div>
271 251
             </div>
272 252
           </div>
@@ -343,24 +323,16 @@
343 323
           >
344 324
             <div class="pharmacy-main__selectionInfo">
345 325
               <div class="pharmacy-main__selectionItem">
346
-                <span>单号</span>
347
-                <span>{{item.gdcode || '无'}}</span>
348
-              </div>
349
-              <div class="pharmacy-main__selectionItem">
350
-                <span>执行人</span>
351
-                <span>{{item.userName || '无'}}</span>
326
+                <span title="配送科室" class="moreContent left">{{item.deptList || '无'}}</span>
327
+                <span></span>
352 328
               </div>
353 329
               <div class="pharmacy-main__selectionItem">
354
-                <span>配送科室</span>
355
-                <span class="moreContent">{{item.deptList || '无'}}</span>
330
+                <span title="单号">{{item.gdcode || '无'}}</span>
331
+                <span title="执行人">{{item.userName || '无'}}</span>
356 332
               </div>
357 333
               <div class="pharmacy-main__selectionItem">
358
-                <span>建单时间</span>
359
-                <span>{{item.starttime ? (item.starttime|date:'MM-dd HH:mm') :'无'}}</span>
360
-              </div>
361
-              <div class="pharmacy-main__selectionItem">
362
-                <span>标本总数</span>
363
-                <span>{{item.count || '无'}}</span>
334
+                <span title="建单时间">{{item.starttime ? (item.starttime|date:'MM-dd HH:mm') :'无'}}</span>
335
+                <span title="标本总数">{{item.count === undefined ? '无' : item.count}}</span>
364 336
               </div>
365 337
             </div>
366 338
           </div>
@@ -437,45 +409,29 @@
437 409
           >
438 410
             <div class="pharmacy-main__selectionInfo">
439 411
               <div class="pharmacy-main__selectionItem">
440
-                <span>标本编码</span>
441
-                <span>{{item.scode || '无'}}</span>
442
-              </div>
443
-              <div class="pharmacy-main__selectionItem">
444
-                <span>标本类型</span>
445
-                <span>{{item.stype || '无'}}</span>
412
+                <span title="检验项目">{{item.specimen_desc || '无'}}</span>
413
+                <span></span>
446 414
               </div>
447 415
               <div class="pharmacy-main__selectionItem">
448
-                <span>检验项目</span>
449
-                <span>{{item.specimen_desc || '无'}}</span>
416
+                <span title="标本编码">{{item.scode || '无'}}</span>
417
+                <span title="标本类型">{{item.stype || '无'}}</span>
450 418
               </div>
451 419
               <div class="pharmacy-main__selectionItem">
452
-                <span>状态</span>
453
-                <span>{{item.spe_state || '无'}}</span>
420
+                <span title="患者姓名(床号)">{{item.patientname || '无'}}({{item.bednum || '无'}})</span>
421
+                <span title="住院号">{{item.residence_no || '无'}}</span>
454 422
               </div>
455 423
               <div class="pharmacy-main__selectionItem">
456
-                <span>住院号</span>
457
-                <span>{{item.residence_no || '无'}}</span>
458
-              </div>
459
-              <div class="pharmacy-main__selectionItem">
460
-                <span>患者姓名(床号)</span>
461
-                <span>{{item.patientname || '无'}}<span *ngIf="item.patientname && item.bednum">({{item.bednum}})</span></span>
462
-              </div>
463
-              <div class="pharmacy-main__selectionItem">
464
-                <span>收取人</span>
465
-                <span>{{item.receiver || '无'}}</span>
466
-              </div>
467
-              <div class="pharmacy-main__selectionItem">
468
-                <span>收取时间</span>
469
-                <span>{{item.arrive_time ? (item.arrive_time|date:'MM-dd HH:mm') : '无'}}</span>
424
+                <span title="起点科室" class="moreContent left">{{item.sick_room || '无'}}</span>
425
+                <span class="icon_transport transport-arrow-right-full"></span>
426
+                <span title="终点科室" class="moreContent">{{item.check_dept || '无'}}</span>
470 427
               </div>
471 428
               <div class="pharmacy-main__selectionItem">
472
-                <span>中转时间</span>
473
-                <span>{{item.trans_time ? (item.trans_time|date:'MM-dd HH:mm') : '无'}}</span>
429
+                <span title="收取时间">{{item.arrive_time ? (item.arrive_time|date:'MM-dd HH:mm') : '无'}}</span>
430
+                <span title="收取人">{{item.receiver || '无'}}</span>
474 431
               </div>
475 432
               <div class="pharmacy-main__selectionItem">
476
-                <span class="moreContent left">{{item.sick_room || '无'}}</span>
477
-                <span class="icon_transport transport-arrow-right-full"></span>
478
-                <span class="moreContent">{{item.check_dept || '无'}}</span>
433
+                <span></span>
434
+                <span title="中转时间">{{item.trans_time ? (item.trans_time|date:'MM-dd HH:mm') : '无'}}</span>
479 435
               </div>
480 436
             </div>
481 437
           </div>
@@ -593,6 +549,15 @@
593 549
   *ngIf="spePromptModalShow"
594 550
   [show]="spePromptModalShow"
595 551
   [checkDeptId]="checkDeptId"
552
+  [pharmacySearchKey]="pharmacySearchKey"
596 553
   [printDate]="printDate"
597 554
   (closeModelHs)="closeModelSpe($event)"
598 555
 ></app-spe-prompt-modal>
556
+
557
+<!-- 工单列表查看 -->
558
+<app-order-prompt-modal
559
+  *ngIf="orderPromptModalShow"
560
+  [show]="orderPromptModalShow"
561
+  [workId]="workId"
562
+  (closeModelHs)="closeModelOrder($event)"
563
+></app-order-prompt-modal>

+ 13 - 0
src/app/views/specimen-view2/specimen-view2.component.ts

@@ -174,6 +174,19 @@ export class SpecimenView2Component implements OnInit, OnDestroy {
174 174
     this.spePromptModalShow = JSON.parse(e).show;
175 175
     this.autoUpdate(false);
176 176
   }
177
+   // 查看工单列表弹窗
178
+   orderPromptModalShow = false; //弹窗开关
179
+   workId = ""; //支助人员ID
180
+   showOrderList(data) {
181
+     clearInterval(this.logTimer);
182
+     this.workId = data.workerid;
183
+     this.orderPromptModalShow = true;
184
+   }
185
+   // 关闭工单列表弹窗
186
+   closeModelOrder(e) {
187
+     this.orderPromptModalShow = JSON.parse(e).show;
188
+     this.autoUpdate(false);
189
+   }
177 190
   // 自动刷新倒计时
178 191
   autoUpdate(flag = true) {
179 192
     if (flag) {