maotao месяцев назад: 4
Родитель
Сommit
81b0fee773

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

@@ -96,6 +96,11 @@ const routes: Routes = [
96 96
 	  path: 'pathologyScan',
97 97
 	  loadChildren: () => import('./views/pathologyScan/pathologyScan.module').then(m => m.PathologyScanModule),
98 98
 	},
99
+	// 门诊病理采样端
100
+	{
101
+		path: 'pathologySample',
102
+		loadChildren: () => import('./views/pathology-sample/pathology-sample.module').then(m => m.PathologySampleModule),
103
+	},
99 104
   // 全局业务查看
100 105
   {
101 106
     path: 'disinfectionSupply',

+ 19 - 12
src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.html

@@ -107,22 +107,29 @@
107 107
 				<div class="TaskTypeManagement" *ngIf="activeDictionaryKey=='pathology'">
108 108
 					<div class="taskTypeInfo">
109 109
 						<div class="list">
110
-							<!--是否支持根据手术新建申请单 -->
111
-							<div class="display_flex align-items_center mb8">
112
-								<nz-form-label class="label">是否支持根据手术新建申请单</nz-form-label>
113
-								<nz-checkbox-group [(ngModel)]="autoCreate"></nz-checkbox-group>
110
+							<div>
111
+								<!--是否支持根据手术新建申请单 -->
112
+								<div class="display_flex align-items_center mb8">
113
+									<nz-form-label class="label">是否支持根据手术新建申请单</nz-form-label>
114
+									<nz-checkbox-group [(ngModel)]="autoCreate"></nz-checkbox-group>
115
+								</div>
116
+								<!--门诊支持离体并固定 -->
117
+								<div class="display_flex align-items_center mb8">
118
+									<nz-form-label class="label">门诊支持离体并固定</nz-form-label>
119
+									<nz-checkbox-group [(ngModel)]="immobilization"></nz-checkbox-group>
120
+								</div>
114 121
 							</div>
115 122
 							<div class="bottom">
116 123
 								<button class="login-form-button" nzType="primary" [nzLoading]="btnLoading" nz-button (click)="submitPathologyForm()">保存</button>
117 124
 							</div>
118
-							<div class="list" *ngIf="loading">
119
-							  <div class="loadingFull display_flex justify-content_flex-center align-items_center">
120
-							    <div class="loadingFullInner">
121
-							      <img src="../../../assets/images/loading.gif" alt="">
122
-							      <div>加载中...</div>
123
-							    </div>
124
-							  </div>
125
-							</div>
125
+						</div>
126
+						<div class="list" *ngIf="loading">
127
+						  <div class="loadingFull display_flex justify-content_flex-center align-items_center">
128
+						    <div class="loadingFullInner">
129
+						      <img src="../../../assets/images/loading.gif" alt="">
130
+						      <div>加载中...</div>
131
+						    </div>
132
+						  </div>
126 133
 						</div>
127 134
 					</div>
128 135
 				</div>

+ 8 - 1
src/app/components/configurationCenter/configuration-specimen/configuration-specimen.component.ts

@@ -26,11 +26,16 @@ export class ConfigurationSpecimenComponent implements OnInit {
26 26
 		}
27 27
 	];
28 28
 	
29
-	// 扫描时指定科室不提醒勾选项
29
+	// 是否支持根据手术新建申请单
30 30
 	autoCreate:any[] = [
31 31
 	  {label:'是否开启',value: 0}
32 32
 	];
33 33
 	
34
+	// 门诊支持离体并固定
35
+	immobilization:any[] = [
36
+	  {label:'是否开启',value: 0}
37
+	];
38
+	
34 39
   // 扫描时指定科室不提醒勾选项
35 40
   deptNotAlert:any[] = [
36 41
     {label:'是否开启',value: 0}
@@ -170,6 +175,7 @@ export class ConfigurationSpecimenComponent implements OnInit {
170 175
 		  taskType: this.taskTypeData.id,
171 176
 		  hosId: this.hosId,
172 177
 		  autoCreate: this.autoCreate[0].checked ? 1 : 0,
178
+			immobilization: this.immobilization[0].checked ? 1 : 0,
173 179
 		};
174 180
 		this.btnLoading = true;
175 181
 		this.mainService
@@ -291,6 +297,7 @@ export class ConfigurationSpecimenComponent implements OnInit {
291 297
           this.configs = result.list[0] || {};
292 298
 					// 病理标本
293 299
 					this.autoCreate[0].checked = this.configs.autoCreate == 1;
300
+					this.immobilization[0].checked = this.configs.immobilization == 1;
294 301
 					// 检查标本
295 302
           this.deptNotAlert[0].checked = this.configs.deptNotAlert == 1;
296 303
           this.arriveScanCode[0].checked = this.configs.arriveScanCode == 1;

+ 11 - 9
src/app/share/pathology-add/pathology-add.component.ts

@@ -100,15 +100,15 @@ export class PathologyAddComponent implements OnInit {
100 100
 	
101 101
 	statusValue:any = 1;
102 102
 	fetchDataList(){
103
-		let data = {
104
-		  idx: 0,
105
-		  sum: 9999,
106
-		  pathologyForm: {
107
-				surgeryId: "",
108
-		    patientId: this.patientId || "",
109
-		    hosId: this.hosId || "" ,
110
-		  },
111
-		};
103
+		// let data = {
104
+		//   idx: 0,
105
+		//   sum: 9999,
106
+		//   pathologyForm: {
107
+		// 		surgeryId: "",
108
+		//     patientId: this.patientId || "",
109
+		//     hosId: this.hosId || "" ,
110
+		//   },
111
+		// };
112 112
 		this.isSpinning = true;
113 113
 		// this.mainService
114 114
 		//   .getFetchDataList("data", "pathologyForm", data)
@@ -116,6 +116,8 @@ export class PathologyAddComponent implements OnInit {
116 116
 		  .subscribe((data) => {
117 117
 		    this.isSpinning = false;
118 118
 		    this.detailsData = data.data;
119
+				this.patientId = data.data.patientId;
120
+				this.surgeryId = data.data.surgeryId;
119 121
 				if(this.detailsData.status){
120 122
 					this.statusValue = this.detailsData.status.value
121 123
 				}

+ 3 - 2
src/app/views/main/main.component.html

@@ -35,7 +35,7 @@
35 35
           <i class="icon_transport transport-peizhi1 green" *ngIf="incidentConfigRole || otherConfigRole || pageConfigRole || nurseConfigRole" (click)="toConfigurationCenter()" nz-tooltip nzTooltipTitle="配置中心"></i>
36 36
           <i class="icon_transport transport-shangban green" *ngIf='PCCommutesToWork && userInfo.user && !userInfo.user.online' (click)="GoWork()" nz-tooltip nzTooltipTitle="我要上班"></i>
37 37
           <i class="icon_transport transport-shangban green" *ngIf='PCCommutesToWork && userInfo.user && userInfo.user.online' (click)="GoWork()" nz-tooltip nzTooltipTitle="我要下班"></i>
38
-          <div class="dropdown" *ngIf="pharmacyRole || largeScreenRole || largeScreenRole2 || specimenViewRole || specimenViewRole2 || specimenRoomView || pathology || disinfectionSupplyRole">
38
+          <div class="dropdown" *ngIf="pharmacyRole || largeScreenRole || largeScreenRole2 || specimenViewRole || specimenViewRole2 || specimenRoomView || pathology || disinfectionSupplyRole || sampling">
39 39
             <i class="icon_transport transport-gengduoda-copy" (mouseenter)="showDropdown1 = true" (mouseleave)="showDropdown1 = false"></i>
40 40
             <div class="dropdown-content ct" [hidden]="!showDropdown1" (mouseenter)="showDropdown1 = true" (mouseleave)="showDropdown1 = false">
41 41
               <div class="dropdownItem" *ngIf="pharmacyRole" (click)="toPharmacy()">药房端</div>
@@ -46,7 +46,8 @@
46 46
               <div class="dropdownItem" *ngIf="specimenViewRole2" (click)="toSpecimenView2()">标本视图</div>
47 47
               <div class="dropdownItem" *ngIf="specimenRoomView" (click)="toSpecimenRoomView()">标本间端</div>
48 48
               <div class="dropdownItem" *ngIf="pathology" (click)="toPathology()">病理科端</div>
49
-              <div class="dropdownItem" *ngIf="disinfectionSupplyRole" (click)="toDisinfectionSupply()">全局业务查看</div>
49
+							<div class="dropdownItem" *ngIf="sampling" (click)="toSampling()">门诊病理采样端</div>
50
+							<div class="dropdownItem" *ngIf="disinfectionSupplyRole" (click)="toDisinfectionSupply()">全局业务查看</div>
50 51
             </div>
51 52
           </div>
52 53
         </div>

+ 9 - 0
src/app/views/main/main.component.ts

@@ -31,6 +31,7 @@ export class MainComponent implements OnInit {
31 31
   specimenViewRole2: boolean = false; //标本视图权限
32 32
 	specimenRoomView: boolean = false; //标本间权限
33 33
 	pathology: boolean = false; //病理科权限
34
+	sampling: boolean = false; //门诊病理采样端权限
34 35
   disinfectionSupplyRole: boolean = false; //全局业务查看权限
35 36
   incidentConfigRole: boolean = false; //事件配置权限
36 37
   otherConfigRole: boolean = false; //三方配置权限
@@ -302,6 +303,10 @@ export class MainComponent implements OnInit {
302 303
 			  this.pathology = true;
303 304
 			  console.log("病理科权限");
304 305
 			}
306
+			if (e.link == "pathologySample") {
307
+			  this.sampling = true;
308
+			  console.log("门诊病理采样端权限");
309
+			}
305 310
       if (e.link == "disinfectionSupply") {
306 311
         this.disinfectionSupplyRole = true;
307 312
         console.log("全局业务查看权限");
@@ -441,6 +446,10 @@ export class MainComponent implements OnInit {
441 446
 	toPathology(): void {
442 447
 	  this.router.navigateByUrl("pathology");
443 448
 	}
449
+	// 门诊病理采样端
450
+	toSampling(): void {
451
+	  this.router.navigateByUrl("pathologySample");
452
+	}
444 453
   // 全局业务查看
445 454
   toDisinfectionSupply(): void {
446 455
     this.router.navigateByUrl("disinfectionSupply");

+ 24 - 0
src/app/views/pathology-sample/pathology-sample-routing.module.ts

@@ -0,0 +1,24 @@
1
+import { NgModule } from "@angular/core";
2
+import { Routes, RouterModule } from "@angular/router";
3
+import { PathologySampleComponent } from "./pathology-sample.component";
4
+import { DetailSampleComponent } from 'src/app/share/detail-sample/detail-sample.component';
5
+
6
+const routes: Routes = [
7
+  {
8
+    path: "",
9
+    component: PathologySampleComponent,
10
+    // children: [
11
+    //   {
12
+    //     // 工单详情-标本
13
+    //     path: "detailSample/:id",
14
+    //     component: DetailSampleComponent,
15
+    //   },
16
+    // ],
17
+  },
18
+];
19
+
20
+@NgModule({
21
+  imports: [RouterModule.forChild(routes)],
22
+  exports: [RouterModule],
23
+})
24
+export class PathologySampleRoutingModule {}

+ 755 - 0
src/app/views/pathology-sample/pathology-sample.component.html

@@ -0,0 +1,755 @@
1
+<div class="pharmacy">
2
+  <!-- 头部 start -->
3
+  <div class="pharmacy-header">
4
+   <div class="pharmacy-logo">
5
+<!--      <img
6
+        [src]="tool.logoUrl"
7
+        class="pharmacy-logo__img"
8
+        [alt]="tool.logoTitle"
9
+      />
10
+      <h1 class="pharmacy-logo__name">{{tool.logoTitle}}</h1> -->
11
+			<h2 class="pharmacy-name__title">
12
+			  <span>标本间</span>
13
+			  <!-- <span class="currentDate">{{ time | date: "yyyy年MM月dd日" }}</span> -->
14
+			</h2>
15
+    </div>
16
+    <div class="pharmacy-name">
17
+      <div class="pharmacy-name__total">
18
+				<div class="pharmacy-title">标本条码:</div>
19
+				<nz-input-group nzSize="large">
20
+					<input type="text" id="Binput" (ngModelChange)="specimenCodeChange($event)" [(ngModel)]="barCode" nz-input placeholder="请输入条码" />
21
+				</nz-input-group>
22
+				<!-- <ng-template #suffixButton>
23
+					<button nz-button nzType="primary" nzSize="large" nzSearch (click)="searchSpecimen()">搜索</button>
24
+				</ng-template> -->
25
+      </div>
26
+			<div>
27
+				<div class="error-class">{{searchMsg}}</div>
28
+			</div>
29
+    </div>
30
+    <div class="userInfo">
31
+      <div class="wel">欢迎您:</div>
32
+      <div class="user">
33
+        <img src="../../assets/images/icon_keshi.png" alt="" />
34
+        <span *ngIf="deptDisplay">{{
35
+          deptDisplay == 2 ? loginUser.dept.deptalias : loginUser.dept.dept
36
+        }}</span>
37
+      </div>
38
+      <div class="userInfo-wrap">
39
+        <div class="logOut" (click)="setSpecimen()">切换科室</div>
40
+        <div class="logOut" (click)="logOut()">退出</div>
41
+      </div>
42
+    </div>
43
+  </div>
44
+  <!-- 头部 end -->
45
+  <!-- 主体部分 start -->
46
+  <div class="pharmacy-main">
47
+    <!-- 手术间标本start -->
48
+    <div class="pharmacy-main__list pharmacy-main__print">
49
+      <!-- 标题 start -->
50
+      <div class="pharmacy-main__title">
51
+        <strong>手术间标本</strong>
52
+				<span *ngIf="printPharmacyList.length>0">共 {{printPharmacyList.length}} 条</span>
53
+        <span class="autoUpdate">{{ logTime }}秒</span>
54
+      </div>
55
+      <!-- 标题 end -->
56
+      <!-- 搜索框 start -->
57
+      <div class="pharmacy-main__search">
58
+        <div class="pharmacy-main__searchInput">
59
+          <input
60
+            nz-input
61
+            placeholder="请输入关键字"
62
+            [(ngModel)]="printPharmacySearchKey"
63
+          />
64
+          <div class="pharmacy-main__searchText" (click)="searchKeyHandle('surgeryDept')">
65
+            <i nz-icon nzType="search"></i>
66
+            <span>搜索</span>
67
+          </div>
68
+        </div>
69
+      </div>
70
+      <!-- 搜索框 end -->
71
+      <!-- 列表 start -->
72
+      <div #osComponentRef1 class="pharmacy-main__selectionWrap">
73
+        <div *ngIf="!loading1" style="height: 100%">
74
+          <div
75
+            class="pharmacy-main__selection noPointer"
76
+            *ngFor="let item of printPharmacyList"
77
+						(click)="viewDetail(item,1)"
78
+          >
79
+            <div class="pharmacy-main__selectionInfo">
80
+              <div class="pharmacy-main__selectionItem">
81
+                <span title="住院号" class="weight">
82
+									<span class="sign-red" *ngIf="item.intraoperativeRapidity==1">速冻</span>
83
+									{{item.applyCode || '无'}}
84
+								</span>
85
+                <span title="姓名" class="weight text-right">{{item.patientDTO.patientName || '无'}}</span>
86
+              </div>
87
+              <div class="pharmacy-main__selectionItem">
88
+                <span class="text-left" [title]="item.takePart">部位:{{item.takePart || '无'}}</span>
89
+                <span class="text-right" title="标本数">标本数:{{item.specimenNum || '无'}}</span>
90
+              </div>
91
+              <div class="pharmacy-main__selectionItem">
92
+                <span title="手术间">手术间:{{item.surgeryDeptDTO.dept || '无'}}</span>
93
+                <span class="text-right" title="离体时间">离体时间:{{item.inVitroTime?(item.inVitroTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</span>
94
+              </div>
95
+            </div>
96
+          </div>
97
+          <div
98
+            class="pharmacy-main__selection pharmacy-main__selection--noData"
99
+            *ngIf="printPharmacyList.length === 0"
100
+          >
101
+            <img src="./../../assets/images/image_kongbaiye.png" alt="" />
102
+          </div>
103
+          <!-- <div
104
+            (click)="loadMore(1)"
105
+            class="pharmacy-main__selection pharmacy-main__selection--more"
106
+            *ngIf="printPharmacyFlag"
107
+          >
108
+            <div class="pharmacy-main__selectionInfo">
109
+              <i
110
+                nz-icon
111
+                nzType="loading"
112
+                nzTheme="outline"
113
+                class="pharmacy-main__selection--icon"
114
+                *ngIf="printPharmacyLoad"
115
+              ></i
116
+              >查看更多
117
+            </div>
118
+          </div> -->
119
+        </div>
120
+        <div
121
+          *ngIf="loading1"
122
+          style="height: calc(100vh - 212px); min-height: 556px"
123
+        >
124
+          <div
125
+            class="loadingFull display_flex justify-content_flex-center align-items_center"
126
+          >
127
+            <div class="loadingFullInner">
128
+              <img src="../../../assets/images/loading.gif" alt="" />
129
+              <div>加载中...</div>
130
+            </div>
131
+          </div>
132
+        </div>
133
+      </div>
134
+      <!-- 列表 end -->
135
+    </div>
136
+
137
+    <!-- 标本间标本 start -->
138
+    <div class="pharmacy-main__list pharmacy-main__waitDelivery">
139
+      <!-- 标题 start -->
140
+      <div class="pharmacy-main__title">
141
+        <strong>标本间标本</strong>
142
+				<span *ngIf="waitPharmacyList.length>0">共 {{waitPharmacyList.length}} 条</span>
143
+        <span class="autoUpdate">{{ logTime }}秒</span>
144
+      </div>
145
+      <!-- 标题 end -->
146
+      <!-- 搜索框 start -->
147
+      <div class="pharmacy-main__search">
148
+        <div class="pharmacy-main__searchInput">
149
+          <input
150
+            nz-input
151
+            placeholder="请输入关键字"
152
+            [(ngModel)]="waitPharmacySearchKey"
153
+          />
154
+          <div class="pharmacy-main__searchText" (click)="searchKeyHandle('specimenDept')">
155
+            <i nz-icon nzType="search"></i>
156
+            <span>搜索</span>
157
+          </div>
158
+        </div>
159
+      </div>
160
+      <!-- 搜索框 end -->
161
+      <!-- 列表 start -->
162
+      <div #osComponentRef2 class="pharmacy-main__selectionWrap">
163
+        <div *ngIf="!loading2" style="height: 100%">
164
+          <div
165
+            class="pharmacy-main__selection"
166
+            *ngFor="let item of waitPharmacyList; let i = index"
167
+						(click)="viewDetail(item,2)"
168
+          >
169
+            <div class="pharmacy-main__selectionInfo">
170
+              <div class="pharmacy-main__selectionItem">
171
+                <span title="住院号" class="weight">
172
+            			<span class="sign-red" *ngIf="item.intraoperativeRapidity==1">速冻</span>
173
+            			{{item.applyCode || '无'}}
174
+            		</span>
175
+                <span title="姓名" class="weight text-right">{{item.patientDTO.patientName || '无'}}</span>
176
+              </div>
177
+              <div class="pharmacy-main__selectionItem">
178
+                <span class="text-left" [title]="item.takePart">部位:{{item.takePart || '无'}}</span>
179
+                <span class="text-right" title="标本数">标本数:{{item.specimenNum || '无'}}</span>
180
+              </div>
181
+              <div class="pharmacy-main__selectionItem">
182
+                <span title="离体时间">离体时间:{{item.inVitroTime?(item.inVitroTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</span>
183
+								<span class="text-right" title="固定时间">固定时间:{{item.fixationTime?(item.fixationTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</span>
184
+              </div>
185
+            </div>
186
+          </div>
187
+          <div
188
+            class="pharmacy-main__selection pharmacy-main__selection--noData"
189
+            *ngIf="waitPharmacyList.length === 0"
190
+          >
191
+            <img src="./../../assets/images/image_kongbaiye.png" alt="" />
192
+          </div>
193
+          <!-- <div
194
+            (click)="loadMore(2)"
195
+            class="pharmacy-main__selection pharmacy-main__selection--more"
196
+            *ngIf="waitPharmacyFlag"
197
+          >
198
+            <div class="pharmacy-main__selectionInfo">
199
+              <i
200
+                nz-icon
201
+                nzType="loading"
202
+                nzTheme="outline"
203
+                class="pharmacy-main__selection--icon"
204
+                *ngIf="waitPharmacyLoad"
205
+              ></i
206
+              >查看更多
207
+            </div>
208
+          </div> -->
209
+        </div>
210
+        <div
211
+          *ngIf="loading2"
212
+          style="height: calc(100vh - 212px); min-height: 556px"
213
+        >
214
+          <div
215
+            class="loadingFull display_flex justify-content_flex-center align-items_center"
216
+          >
217
+            <div class="loadingFullInner">
218
+              <img src="../../../assets/images/loading.gif" alt="" />
219
+              <div>加载中...</div>
220
+            </div>
221
+          </div>
222
+        </div>
223
+      </div>
224
+      <!-- 列表 end -->
225
+    </div>
226
+
227
+    <!-- 今日离科标本 start -->
228
+    <div class="pharmacy-main__list pharmacy-main__delivery">
229
+      <!-- 标题 start -->
230
+      <div class="pharmacy-main__title">
231
+        <strong>今日离科标本</strong>
232
+				<span *ngIf="pharmacyList.length>0">共 {{pharmacyList.length}} 条</span>
233
+        <span class="autoUpdate">{{ logTime }}秒</span>
234
+      </div>
235
+      <!-- 标题 end -->
236
+      <!-- 搜索框 start -->
237
+      <div class="pharmacy-main__search">
238
+        <div class="pharmacy-main__searchInput">
239
+          <input
240
+            nz-input
241
+            placeholder="请输入关键字"
242
+            [(ngModel)]="pharmacySearchKey"
243
+          />
244
+          <div class="pharmacy-main__searchText" (click)="searchKeyHandle('leavedDept')">
245
+            <i nz-icon nzType="search"></i>
246
+            <span>搜索</span>
247
+          </div>
248
+        </div>
249
+      </div>
250
+      <!-- 搜索框 end -->
251
+      <!-- 列表 start -->
252
+      <div #osComponentRef3 class="pharmacy-main__selectionWrap">
253
+        <div *ngIf="!loading3" style="height: 100%">
254
+          <div
255
+            class="pharmacy-main__selection"
256
+            *ngFor="let item of pharmacyList; let i = index"
257
+						(click)="viewDetail(item,3)"
258
+          >
259
+            <div class="pharmacy-main__selectionInfo">
260
+              <div class="pharmacy-main__selectionItem">
261
+                <span title="住院号" class="weight">
262
+            			<span class="sign-red" *ngIf="item.intraoperativeRapidity==1">速冻</span>
263
+            			{{item.applyCode || '无'}}
264
+            		</span>
265
+                <span title="姓名" class="weight text-right">{{item.patientDTO.patientName || '无'}}</span>
266
+              </div>
267
+              <div class="pharmacy-main__selectionItem">
268
+                <span class="text-left" [title]="item.takePart">部位:{{item.takePart || '无'}}</span>
269
+                <span class="text-right" title="标本数">标本数:{{item.specimenNum || '无'}}</span>
270
+              </div>
271
+              <div class="pharmacy-main__selectionItem">
272
+                <span title="离体时间">离体时间:{{item.inVitroTime?(item.inVitroTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</span>
273
+            		<span class="text-right" title="固定时间">固定时间:{{item.fixationTime?(item.fixationTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</span>
274
+              </div>
275
+							<div class="pharmacy-main__selectionItem">
276
+							  <span title="配送人">配送人:{{item.deliveryUserDTO?item.deliveryUserDTO.name:'无'}}</span>
277
+								<span class="text-right" title="离科时间">离科时间:{{item.leaveDeptTime?(item.leaveDeptTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</span>
278
+							</div>
279
+            </div>
280
+          </div>
281
+          <div
282
+            class="pharmacy-main__selection pharmacy-main__selection--noData"
283
+            *ngIf="pharmacyList.length === 0"
284
+          >
285
+            <img src="./../../assets/images/image_kongbaiye.png" alt="" />
286
+          </div>
287
+          <!-- <div
288
+            (click)="loadMore(3)"
289
+            class="pharmacy-main__selection pharmacy-main__selection--more"
290
+            *ngIf="pharmacyFlag"
291
+          >
292
+            <div class="pharmacy-main__selectionInfo">
293
+              <i
294
+                nz-icon
295
+                nzType="loading"
296
+                nzTheme="outline"
297
+                class="pharmacy-main__selection--icon"
298
+                *ngIf="pharmacyLoad"
299
+              ></i
300
+              >查看更多
301
+            </div>
302
+          </div> -->
303
+        </div>
304
+        <div
305
+          *ngIf="loading3"
306
+          style="height: calc(100vh - 212px); min-height: 556px"
307
+        >
308
+          <div
309
+            class="loadingFull display_flex justify-content_flex-center align-items_center"
310
+          >
311
+            <div class="loadingFullInner">
312
+              <img src="../../../assets/images/loading.gif" alt="" />
313
+              <div>加载中...</div>
314
+            </div>
315
+          </div>
316
+        </div>
317
+      </div>
318
+      <!-- 列表 end -->
319
+    </div>
320
+  </div>
321
+  <!-- 主体部分 end -->
322
+  <router-outlet></router-outlet>
323
+</div>
324
+
325
+<!-- 科室切换提示框 -->
326
+<app-hs-prompt-modal
327
+  [changeShow]="changeShow"
328
+  [closeTime]="closeTime"
329
+  [closeTimeFlag]="closeTimeFlag"
330
+  [show]="hsPromptModalShow"
331
+  (closeModelHs)="closeModelHs($event)"
332
+  (clearModelHs)="clearModelHs($event)"
333
+  deptType="nurse"
334
+> 
335
+  <!-- 返回系统按钮 -->
336
+  <!-- 右侧悬浮框 -->
337
+   <div id="fixedMenu" class="fixed" *ngIf="mainRole">
338
+    <div class="right">
339
+      <div class="fixedMenu hujiaozhongxin">
340
+        <div class="menuItems">
341
+          <div class="item">快捷菜单</div>
342
+        </div>
343
+      </div>
344
+      <div class="fixedMenu">
345
+        <div class="menuItems">
346
+          <div
347
+            class="others"
348
+            [ngStyle]="{
349
+              height: showLastItems
350
+                ? mainRole
351
+                  ? 35 * 2 + 'px'
352
+                  : 35 * 1 + 'px'
353
+                : 0
354
+            }"
355
+          >
356
+            <div
357
+              [ngClass]="{ item: true, checked: fixedTab == 'back' }"
358
+              *ngIf="mainRole"
359
+              (click)="checkFixedTab('toSystem')"
360
+            >
361
+              返回系统
362
+            </div>
363
+          </div>
364
+        </div>
365
+        <div class="arrow" *ngIf="!showLastItems" (click)="fixedMenuXiala()">
366
+          <i class="icon_transport transport-xiala2-01"></i>
367
+        </div>
368
+        <div class="arrow" *ngIf="showLastItems" (click)="fixedMenuShangla()">
369
+          <i class="icon_transport transport-shangla-"></i>
370
+        </div>
371
+      </div>
372
+    </div>
373
+    <div
374
+      *ngIf="showLastItems && fixedTab != ''"
375
+      (click)="fixedMenuShangla()"
376
+      class="fixedMark"
377
+    ></div>
378
+  </div>
379
+</app-hs-prompt-modal>
380
+
381
+<!-- 标本历史记录查看 -->
382
+<!-- <app-history-prompt-modal
383
+  *ngIf="logPromptModalShow"
384
+  [show]="logPromptModalShow"
385
+  [scode]="scode"
386
+  (closeModelHs)="closeModelLog($event)"
387
+></app-history-prompt-modal> -->
388
+
389
+<!-- 标本列表查看 -->
390
+<!-- <app-spe-prompt-modal
391
+  *ngIf="spePromptModalShow"
392
+  [show]="spePromptModalShow"
393
+  [checkDeptId]="checkDeptId"
394
+  [pharmacySearchKey]="pharmacySearchKey"
395
+  [printDate]="printDate"
396
+  (closeModelHs)="closeModelSpe($event)"
397
+></app-spe-prompt-modal> -->
398
+
399
+<!-- 工单列表查看 -->
400
+<!-- <app-order-prompt-modal
401
+  *ngIf="orderPromptModalShow"
402
+  [show]="orderPromptModalShow"
403
+  [workId]="workId"
404
+  (closeModelHs)="closeModelOrder($event)"
405
+></app-order-prompt-modal> -->
406
+
407
+<!-- 关联标本/手术室 -->
408
+<div class="save add display_flex align-items_center justify-content_flex-center" *ngIf="relevanceModal">
409
+	<div class="modalBody">
410
+		<div class="title">关联科室</div>
411
+		<overlay-scrollbars #osComponentRef1 class="content">
412
+		 <form nz-form [formGroup]="validateForm" class="addForm" (ngSubmit)="submitForm()">
413
+			<nz-form-item>
414
+				<nz-form-label nzRequired nzFor="specimen" [nzSm]="5" [nzXs]="24">关联标本间</nz-form-label>
415
+				<nz-form-control nzErrorTip="请选择标本间!" [nzSm]="19" [nzXs]="24">
416
+					<nz-input-group>
417
+						<nz-select class="formItem" [nzDropdownMatchSelectWidth]="false" nzShowSearch nzPlaceHolder="请选择标本间" formControlName="specimen">
418
+							<ng-container *ngFor="let option of specimenData">
419
+								<nz-option [nzLabel]="option.dept" [nzValue]="option.id"></nz-option>
420
+							</ng-container>
421
+						</nz-select>
422
+					</nz-input-group>
423
+				</nz-form-control>
424
+			</nz-form-item>
425
+			
426
+			<nz-form-item>
427
+				<nz-form-label nzRequired nzFor="operation" [nzSm]="5" [nzXs]="24">关联手术间</nz-form-label>
428
+				<nz-form-control nzErrorTip="请选择手术间!" [nzSm]="19" [nzXs]="24">
429
+					<nz-input-group>
430
+						<nz-select class="formItem" nzMode="multiple" [nzDropdownMatchSelectWidth]="false" nzShowSearch nzPlaceHolder="请选择请选择手术间" formControlName="operation">
431
+							<ng-container *ngFor="let option of operationData">
432
+								<nz-option [nzLabel]="option.dept" [nzValue]="option.id"></nz-option>
433
+							</ng-container>
434
+						</nz-select>
435
+					</nz-input-group>
436
+				</nz-form-control>
437
+			</nz-form-item>
438
+			
439
+			<nz-form-item>
440
+				<nz-form-label nzRequired nzFor="generate">标本是否直接生成配送单</nz-form-label>
441
+				<nz-form-control nzErrorTip="请选择!">
442
+					<nz-radio-group formControlName="generate">
443
+						<label nz-radio [nzValue]="1">是</label>
444
+						<label nz-radio [nzValue]="0">否</label>
445
+					</nz-radio-group>
446
+				</nz-form-control>
447
+			</nz-form-item>
448
+		 </form>
449
+		</overlay-scrollbars>
450
+		<div class="display_flex justify-content_flex-center">
451
+			<button class="btn" nz-button nzType="primary" (click)="submitForm()" [nzLoading]="btnLoading">确定</button>
452
+		</div>
453
+	</div>
454
+</div>
455
+
456
+
457
+<!-- 标本接收 -->
458
+<div class="pathology-box display_flex align-items_center justify-content_flex-center" *ngIf="fixationModal">
459
+	<div class="pathology-content width-80">
460
+		<div class="title">标本接收固定
461
+		<i class="icon_transport transport-guanbi" (click)="hideSpecimenModal()"></i></div>
462
+		<div class="content">
463
+			<div class="content-item boder-right">
464
+				<nz-form-item class="form-title-box">
465
+					<div class="form-title">申请单类型:{{codeData.pathologyFormType==1?'术中快速病理检查申请单':'病理检查申请单'}}</div>
466
+					<div class="form-title"><span class="font-weight-500">状态:</span>{{codeData.status?codeData.status.name:'-'}}</div>
467
+				</nz-form-item>
468
+				<nz-form-item class="form-title-box">
469
+					<div class="form-title"><span class="font-weight-500">申请单号:</span>{{codeData.applyCode}}</div>
470
+					<div class="form-title over-class"><span class="font-weight-500">申请科室:</span>{{codeData.patientDTO.department.dept}}</div>
471
+				</nz-form-item>
472
+				<nz-form-item class="form-title-box">
473
+					<div class="form-title">手术间:{{codeData.surgeryDeptDTO.dept}}</div>
474
+					<div class="form-title">取材医生:{{codeData.surgeryDoctorDTO?codeData.surgeryDoctorDTO.name : '-'}}</div>
475
+				</nz-form-item>
476
+				<nz-form-item class="form-title-box">
477
+					<div class="form-title mar-ri-20"><span class="font-weight-500">患者信息:</span>{{codeData.patientDTO.patientName}} ({{codeData.patientDTO.bedNum}}床)</div>
478
+					<div class="form-title mar-ri-20"><span class="font-weight-500">年龄:</span>{{codeData.patientDTO.age||'-'}}</div>
479
+					<div class="form-title mar-ri-20"><span class="font-weight-500">性别:</span>{{codeData.patientDTO.gender?codeData.patientDTO.gender.name:'-'}}</div>
480
+					<div class="form-title mar-ri-20"><span class="font-weight-500">住院号:</span>{{codeData.patientDTO.patientCode}}</div>
481
+				</nz-form-item>
482
+				<div class="form-title-box">
483
+					<div class="form-title"><span class="font-weight-500">检验项目:</span>{{project||'无'}}</div>
484
+				</div>
485
+				<div class="form-list">
486
+					<div class="form-title font-weight-500">诊断:</div>
487
+					<div class="indent">
488
+						{{codeData.diagnose||'无'}}
489
+					</div>
490
+				</div>
491
+				
492
+				<div class="form-list">
493
+					<div class="form-title font-weight-500">病历摘要:</div>
494
+					<div class="indent">{{codeData.medicalRecords||'无'}}</div>
495
+				</div>
496
+				<div class="form-list">
497
+					<div class="form-title font-weight-500">手术方案:</div>
498
+					<div class="indent">{{codeData.surgicalPlan||'无'}}</div>
499
+				</div>
500
+				<div class="form-list">
501
+					<div class="form-title font-weight-500">术中所见:</div>
502
+					<div class="indent">{{codeData.intraoperativeFindings||'无'}}</div>
503
+				</div>
504
+				<div class="form-title-box">
505
+					<div class="form-title"><span class="font-weight-500">标本类型:</span>{{codeData.specimenType?codeData.specimenType.name:'无'}}</div>
506
+					<div class="form-title"><span class="font-weight-500">标本数量:</span>{{codeData.specimenNum?codeData.specimenNum:'无'}}</div>
507
+				</div>
508
+				<div class="form-title-box">
509
+					<div class="form-title"><span class="font-weight-500">部位:</span>{{codeData.takePart||'无'}}</div>
510
+				</div>
511
+			</div>
512
+			
513
+			<div class="content-item">
514
+				<div class="center">提示:本申请单内共有<span class="red">{{totalNum}}</span>只标本固定,已固定<span class="red">{{fixationNum}}</span>份还需固定<span class="red">{{specimenNum}}</span>份</div>
515
+				<div class="disp-fl">
516
+					<div class="width-120">标本条码:</div>
517
+					<input nz-input id="specimen" [(ngModel)]="specimenCode" (ngModelChange)="codeChange($event)"/>
518
+				</div>
519
+				<div class="error-fix">{{fixationError}}</div>
520
+				<div class="list-template">
521
+				  <div class="list-template__content">
522
+						<div class="list-template__bottom" style="padding: 0 !important;">
523
+							<nz-table class="list-template__nzTable" [nzData]="codeData.pathologySpecimenDTOList" nzSize="middle" [nzShowPagination]="false"
524
+								[nzLoading]="tableLoading">
525
+								<thead>
526
+									<tr class="thead">
527
+										<th nzWidth="10%">序号</th>
528
+										<th>条码号</th>
529
+										<th>标本名称</th>
530
+									</tr>
531
+								</thead>
532
+								<tbody>
533
+									<tr *ngFor="let data of codeData.pathologySpecimenDTOList let index = index">
534
+										<td>{{index+1}}</td>
535
+										<td>{{ data.specimenCode}}</td>
536
+										<td>
537
+											{{data.partSource?data.partSource.name:''}}{{data.organ?data.organ.name:''}}{{data.specimenName}}
538
+										</td>
539
+									</tr>
540
+								</tbody>
541
+							</nz-table>
542
+						</div>
543
+					</div>
544
+				</div>
545
+			</div>
546
+		</div>
547
+		<div class="display_flex justify-content_flex-center bottom-btn">
548
+			<!-- <button class="btn btn-right" [disabled]="codeData.specimenNum != codeData.pathologySpecimenDTOList.length" nz-button nzType="primary" (click)="submitFixationForm()" [nzLoading]="btnLoading">确定</button> -->
549
+			<button class="btn btn-right" nz-button nzType="primary" (click)="submitFixationForm()" [nzLoading]="btnLoading">确定</button>
550
+			<button class="btn cancel" nz-button nzType="default" (click)="hideSpecimenModal()">取消</button>
551
+		</div>
552
+	</div>
553
+</div>
554
+
555
+<!-- 操作成功/失败提示框 -->
556
+<app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
557
+  [info]="promptInfo" (closeModel)="closeModel()"></app-prompt-modal>
558
+	
559
+<!-- 标本固定信息 -->
560
+<div class="save add display_flex align-items_center justify-content_flex-center" *ngIf="verificationMoadl">
561
+	<div class="modalBody no-width">
562
+		<div class="title">标本固定信息<i class="icon_transport transport-guanbi" (click)="hideVerificationModal()"></i>
563
+		</div>
564
+		<div class="content">
565
+			<form nz-form [formGroup]="validateVerificationForm" class="addForm" (ngSubmit)="submitVerificationForm()">
566
+				<nz-form-item>
567
+				  <nz-form-label nzRequired [nzSpan]="6" nzFor="fixationTime">固定时间</nz-form-label>
568
+				  <nz-form-control [nzSpan]="18" nzErrorTip="请选择固定时间!">
569
+				    <nz-input-group>
570
+							<nz-date-picker formControlName="fixationTime" 
571
+							[nzShowTime]="{ nzFormat: 'yyyy-MM-dd HH:mm:ss' }" nzFormat="yyyy-MM-dd HH:mm:ss"
572
+							(ngModelChange)="formChangeDate($event)"></nz-date-picker>
573
+						</nz-input-group>
574
+				  </nz-form-control>
575
+				</nz-form-item>
576
+				<nz-form-item>
577
+				  <nz-form-label nzRequired [nzSpan]="6" nzFor="jobNumber">工号</nz-form-label>
578
+					<nz-form-control [nzSpan]="18" nzErrorTip="请输入工号!">
579
+						<input nz-input (ngModelChange)="numberChange($event)" formControlName="jobNumber" placeholder="请输入工号" nzSize="default" />
580
+					</nz-form-control>
581
+				</nz-form-item>
582
+				<nz-form-item>
583
+				  <nz-form-label nzRequired [nzSpan]="6" nzFor="name">姓名</nz-form-label>
584
+					<nz-form-control [nzSpan]="18" nzErrorTip="请输入姓名!">
585
+						<input nz-input disabled formControlName="name" placeholder="请输入姓名" nzSize="default" />
586
+					</nz-form-control>
587
+				</nz-form-item>
588
+				<nz-form-item>
589
+				  <nz-form-label nzRequired [nzSpan]="8" nzFor="fixative">固体液类型</nz-form-label>
590
+				  <nz-form-control [nzSpan]="16" nzErrorTip="请选择固体液类型!">
591
+				    <nz-input-group>
592
+							<nz-select class="formItem" [nzDropdownMatchSelectWidth]="false" nzShowSearch nzPlaceHolder="请选择固体液类型" formControlName="fixative">
593
+							  <ng-container *ngFor="let option of fixativeData">
594
+							    <nz-option [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
595
+							  </ng-container>
596
+							</nz-select>
597
+						</nz-input-group>
598
+				  </nz-form-control>
599
+				</nz-form-item>
600
+			</form>
601
+		</div>
602
+		<div class="display_flex justify-content_flex-center bottom-btn">
603
+			<button class="btn btn-right" nz-button nzType="primary" (click)="submitVerificationForm()" [nzLoading]="btnInfoLoading">确定</button>
604
+			<button class="btn cancel" nz-button nzType="default" (click)="hideVerificationModal()">取消</button>
605
+		</div>
606
+	</div>
607
+</div>
608
+
609
+<!-- 标本查看详情-->
610
+<div class="pathology-box display_flex align-items_center justify-content_flex-center" *ngIf="detailMoadl">
611
+	<div class="pathology-content">
612
+		<div class="title">查看详情
613
+		<i class="icon_transport transport-guanbi" (click)="closeDetailMoadl()"></i></div>
614
+		<div class="content">
615
+			<div class="content-item boder-right">
616
+				<nz-form-item class="form-title-box">
617
+					<div class="form-title">申请单类型:{{detailsData.pathologyFormType==1?'术中快速病理检查申请单':'病理检查申请单'}}</div>
618
+					<div class="form-title"><span class="font-weight-500">状态:</span>{{detailsData.status?detailsData.status.name:'-'}}</div>
619
+				</nz-form-item>
620
+				<nz-form-item class="form-title-box">
621
+					<div class="form-title"><span class="font-weight-500">申请单号:</span>{{detailsData.applyCode}}</div>
622
+					<div class="form-title over-class"><span class="font-weight-500">申请科室:</span>{{detailsData.patientDTO.department.dept}}</div>
623
+				</nz-form-item>
624
+				<nz-form-item class="form-title-box">
625
+					<div class="form-title">手术间:{{detailsData.surgeryDeptDTO.dept}}</div>
626
+					<div class="form-title">取材医生:{{detailsData.surgeryDoctorDTO?detailsData.surgeryDoctorDTO.name : '-'}}</div>
627
+				</nz-form-item>
628
+				<nz-form-item class="form-title-box">
629
+					<div class="form-title"><span class="font-weight-500">患者信息:</span>{{detailsData.patientDTO.patientName}} ({{detailsData.patientDTO.bedNum}}床)</div>
630
+					<div class="form-title"><span class="font-weight-500">年龄:</span>{{detailsData.patientDTO.age||'-'}}</div>
631
+					<div class="form-title"><span class="font-weight-500">性别:</span>{{detailsData.patientDTO.gender?detailsData.patientDTO.gender.name:'-'}}</div>
632
+					<div class="form-title"><span class="font-weight-500">住院号:</span>{{detailsData.patientDTO.patientCode}}</div>
633
+				</nz-form-item>
634
+				
635
+				<div class="form-title-box">
636
+					<div class="form-title"><span class="font-weight-500">检验项目:</span>{{project||'无'}}</div>
637
+				</div>
638
+				
639
+				<div class="form-list">
640
+					<div class="form-title font-weight-500">诊断:</div>
641
+					<div class="indent">
642
+						{{detailsData.diagnose||'无'}}
643
+					</div>
644
+				</div>
645
+				
646
+				<div class="form-list">
647
+					<div class="form-title font-weight-500">病历摘要:</div>
648
+					<div class="indent">{{detailsData.medicalRecords||'无'}}</div>
649
+				</div>
650
+				<div class="form-list">
651
+					<div class="form-title font-weight-500">手术方案:</div>
652
+					<div class="indent">{{detailsData.surgicalPlan||'无'}}</div>
653
+				</div>
654
+				<div class="form-list">
655
+					<div class="form-title font-weight-500">术中所见:</div>
656
+					<div class="indent">{{detailsData.intraoperativeFindings||'无'}}</div>
657
+				</div>
658
+
659
+				<div class="form-title-box">
660
+					<div class="form-title"><span class="font-weight-500">标本类型:</span>{{detailsData.specimenType.name||'无'}}</div>
661
+					<div class="form-title"><span class="font-weight-500">标本数量:</span>{{detailsData.specimenNum||'无'}}</div>
662
+				</div>
663
+				
664
+				<div class="form-title-box">
665
+					<div class="form-title"><span class="font-weight-500">部位:</span>{{detailsData.takePart||'无'}}</div>
666
+					<!-- <div class="form-title"><span class="font-weight-500">离体时间:</span>{{detailsData.inVitroTime?(detailsData.inVitroTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</div> -->
667
+					<!-- <div class="form-title"><span class="font-weight-500">固定时间:</span>{{detailsData.fixationTime?(detailsData.fixationTime|date:'yyyy-MM-dd HH:mm:ss'):'无'}}</div> -->
668
+				</div>
669
+				
670
+				<div class="form-list">
671
+					<div class="form-title font-weight-500">标本:</div>
672
+					<div class="form-title specimen-list">
673
+						<div *ngFor="let item of specimenList" class="specimen-item-class" (click)="specimenView(item)">
674
+							{{item.partSource?item.partSource.name:''}}{{item.organ?item.organ.name:''}}{{item.specimenName}}
675
+							({{item.specimenCode}})
676
+						</div>
677
+					</div>
678
+				</div>
679
+
680
+			</div>
681
+			
682
+			<div class="content-item-right">
683
+				<div class="step-title">病理闭环</div>
684
+				<nz-steps [nzCurrent]="stepLength" nzDirection="vertical" nzSize="small">
685
+					<ng-container *ngFor="let item of pathologyLogs; let index = index">
686
+							<nz-step
687
+								[nzDescription]="tpl"
688
+							>
689
+							</nz-step>
690
+							<ng-template #tpl>
691
+								<div *ngIf="index==pathologyLogs.length-1" class="step-size">
692
+									<div style="color: #49B856;">{{item.operationType.name}}  {{item.handoverUserDto?item.handoverUserDto.name:''}}</div>
693
+									<div style="color:#333;">{{item.createTime|date:'yyyy-MM-dd HH:mm:ss'}} {{item.operationUserDto.name}}</div>
694
+								</div>
695
+								<div *ngIf="index!=pathologyLogs.length-1" class="step-size">
696
+									<div>{{item.operationType.name}}  {{item.handoverUserDto?item.handoverUserDto.name:''}}</div>
697
+									<div>{{item.createTime|date:'yyyy-MM-dd HH:mm:ss'}} {{item.operationUserDto.name}}</div>
698
+								</div>
699
+							</ng-template>
700
+						</ng-container>
701
+				</nz-steps>
702
+			</div>
703
+		</div>
704
+		<div class="display_flex justify-content_flex-center bottom-btn">
705
+			<button class="btn btn-right" nz-button nzType="primary" (click)="closeDetailMoadl()">知道了</button>
706
+			<!-- <button class="btn cancel" nz-button nzType="default" (click)="closeDetailMoadl()">取消</button> -->
707
+		</div>
708
+	</div>
709
+</div>
710
+
711
+<!-- 查看标本 -->
712
+<div class="look">
713
+	<div class="save add display_flex align-items_center justify-content_flex-center" *ngIf="specimenViewDialog">
714
+		<div class="modalBody modalBody-ga">
715
+			<div class="title">查看标本<i class="icon_transport transport-guanbi" (click)="closeSpecimenModal()"></i>
716
+			</div>
717
+			<overlay-scrollbars #osComponentRef1 class="content">
718
+				<div class="list-template__bottom">
719
+					<nz-table class="list-template__nzTable" [nzData]="viewData" nzSize="middle" [nzShowPagination]="false"
720
+						[nzLoading]="loading1">
721
+						<thead>
722
+							<tr class="thead">
723
+								<th>标本名称</th>
724
+								<th>编码</th>
725
+								<th>备注</th>
726
+								<th>离体时间</th>
727
+								<th>离体操作人</th>
728
+								<th>固定时间</th>
729
+								<th>固定操作人</th>
730
+							</tr>
731
+						</thead>
732
+						<tbody>
733
+							<tr *ngFor="let data of viewData">
734
+								<td>{{ data.specimenName }}</td>
735
+								<td>{{ data.specimenCode }}</td>
736
+								<td>{{ data.remark ? data.remark : '无' }}</td>
737
+								<td>{{ data.inVitroTime ? (data.inVitroTime|date:'yyyy-MM-dd HH:mm:ss') : '-' }}</td>
738
+								<td>{{ data.inVitroOperator ? data.inVitroOperator.name : '-' }}</td>
739
+								<td>{{ data.fixationTime ? (data.fixationTime|date:'yyyy-MM-dd HH:mm:ss') : '-' }}</td>
740
+								<td>{{ data.fixationOperator ? data.fixationOperator.name : '-' }}</td>
741
+							</tr>
742
+						</tbody>
743
+					</nz-table>
744
+				</div>
745
+			</overlay-scrollbars>
746
+			<div class="display_flex justify-content_flex-center">
747
+				<button class="btn" nz-button nzType="primary" (click)="closeSpecimenModal()">知道了</button>
748
+			</div>
749
+		</div>
750
+	</div>
751
+</div>
752
+
753
+<div class="mask-style" *ngIf="isSpinning">
754
+	<nz-spin nzSimple class="spin-style"></nz-spin>
755
+</div>

Разница между файлами не показана из-за своего большого размера
+ 1065 - 0
src/app/views/pathology-sample/pathology-sample.component.less


+ 928 - 0
src/app/views/pathology-sample/pathology-sample.component.ts

@@ -0,0 +1,928 @@
1
+import { Component, OnInit, ViewChild, OnDestroy } from "@angular/core";
2
+import { MainService } from "../../services/main.service";
3
+import { Router } from "@angular/router";
4
+import { OverlayScrollbarsComponent } from "overlayscrollbars-ngx";
5
+import { startOfDay, format, endOfDay } from "date-fns";
6
+import { ToolService } from 'src/app/services/tool.service';
7
+import { NzMessageService } from "ng-zorro-antd";
8
+import { debounceTime } from 'rxjs/operators';
9
+import { Subject } from 'rxjs';
10
+
11
+import {
12
+  FormBuilder,
13
+  Validators,
14
+  FormGroup,
15
+  FormControl,
16
+} from "@angular/forms";
17
+
18
+@Component({
19
+  selector: "app-pathology-sample",
20
+  templateUrl: "./pathology-sample.component.html",
21
+  styleUrls: ["./pathology-sample.component.less"],
22
+})
23
+export class PathologySampleComponent implements OnInit, OnDestroy {
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
+  @ViewChild("osComponentRef3", {
35
+    read: OverlayScrollbarsComponent,
36
+    static: false,
37
+  })
38
+  osComponentRef3: OverlayScrollbarsComponent;
39
+  @ViewChild("osComponentRef4", {
40
+    read: OverlayScrollbarsComponent,
41
+    static: false,
42
+  })
43
+  osComponentRef4: OverlayScrollbarsComponent;
44
+  @ViewChild("osComponentRef5", {
45
+    read: OverlayScrollbarsComponent,
46
+    static: false,
47
+  })
48
+  osComponentRef5: OverlayScrollbarsComponent;
49
+  constructor(
50
+	private mainService: MainService,
51
+	public router: Router,
52
+	public tool: ToolService,
53
+	private fb: FormBuilder,
54
+	private message: NzMessageService,
55
+	) {}
56
+  // 今日药单量
57
+  todayTotal: undefined;
58
+  // 今日已完成
59
+  todayComplete: undefined;
60
+  //手术间数据
61
+  printPharmacyList = []; //数据列表
62
+  printPharmacyIdx = 0; //页码
63
+  printPharmacyTotal = 0; //总数
64
+  printPharmacyFlag = false; //是否查看更多
65
+  printPharmacySearchKey = ""; //搜索的内容
66
+  printPharmacyLoad = false; //按钮的loading
67
+  // 标本间列表
68
+  waitPharmacyList = [];
69
+  waitPharmacyIdx = 0;
70
+  waitPharmacyTotal = 0;
71
+  waitPharmacyFlag = false;
72
+  waitPharmacySearchKey = "";
73
+  waitPharmacyLoad = false;
74
+  // 今日离科列表
75
+  pharmacyList = [];
76
+  pharmacyIdx = 0;
77
+  pharmacyTotal = 0;
78
+  pharmacyFlag = false;
79
+  pharmacySearchKey = "";
80
+  pharmacyLoad = false;
81
+  // 配送中列表
82
+  distributionList = [];
83
+  distributionIdx = 0;
84
+  distributionTotal = 0;
85
+  distributionFlag = false;
86
+  distributionSearchKey = "";
87
+  distributionLoad = false;
88
+  // 已完成列表
89
+  completedList = [];
90
+  completedIdx = 0;
91
+  completedTotal = 0;
92
+  completedFlag = false;
93
+  completedSearchKey = "";
94
+  completedLoad = false;
95
+
96
+	barCode:any; //条码搜索
97
+  // other
98
+  loginUser: any = localStorage.getItem("user")
99
+    ? JSON.parse(localStorage.getItem("user")).user
100
+    : null; //登录人信息
101
+
102
+  logTimer = null; //定时器
103
+  logTime = 0; //自动刷新秒数
104
+  logTimeConst = 60; //自动刷新秒数
105
+
106
+  time = new Date().getTime(); // 时间戳
107
+  timer = null; // 时间定时器
108
+	relevanceModal:boolean = false //关联标本和手术室
109
+	validateForm: FormGroup; //关联标本和手术室表单
110
+	validateVerificationForm: FormGroup; //核验标本
111
+	specimenData:any = []; //标本间数据
112
+	operationData:any = []; //手术间数据
113
+	fixationModal:boolean = false //标本接收固定
114
+	verificationMoadl:boolean = false //标本核验
115
+	specimenCode:any; //标本条码
116
+	listOfData:any=[];
117
+	fixativeData:any = []; //固体液类型
118
+	hosId:any;
119
+	userId:any;
120
+	detailsData:any;
121
+	isSpinning:boolean = false; //全屏加载状态
122
+	codeData:any; //标本条码数据
123
+	btnInfoLoading :boolean = false; //标本加固加载
124
+	searchMsg:any = null;
125
+	changeInpSubject = new Subject(); //防抖
126
+	changeInpSubjectSpecimen = new Subject(); //防抖
127
+  ngOnDestroy() {
128
+    clearTimeout(this.timer);
129
+    clearTimeout(this.logTimer);
130
+  }
131
+
132
+  ngOnInit() {
133
+		this.changeInpSubject.pipe(debounceTime(500)).subscribe((v) => {
134
+		  this.searchSpecimenData(v[0])
135
+		});
136
+		this.changeInpSubjectSpecimen.pipe(debounceTime(500)).subscribe((v) => {
137
+		  this.searchSpecimen(v[0])
138
+		});
139
+		this.hosId = this.tool.getCurrentHospital().id;
140
+		this.userId = this.tool.getCurrentUserId()
141
+    this.runTime();
142
+
143
+		// this.getDept()
144
+
145
+    this.initRole();
146
+    // 自动刷新倒计时 start
147
+    this.autoUpdate();
148
+    // 自动刷新倒计时 end
149
+		setTimeout(_=>{
150
+			document.getElementById('Binput').focus();
151
+		},200)
152
+  }
153
+  // 当前时间日期
154
+  runTime() {
155
+    clearTimeout(this.timer);
156
+    this.timer = setTimeout(() => {
157
+      this.time = Date.now();
158
+      this.runTime();
159
+    }, 500);
160
+  }
161
+
162
+	// 标本条码搜索
163
+	searchSpecimen(e){
164
+		if(!this.barCode){
165
+			return
166
+		}
167
+		if(this.barCode.length < 10) {
168
+			return
169
+		}
170
+		let data={
171
+			barcode:e
172
+		}
173
+		this.isSpinning = true
174
+		clearInterval(this.logTimer);
175
+		this.mainService.pathologyScanCode(data)
176
+		.subscribe((res:any) => {
177
+			this.isSpinning = false
178
+			if(res.status==200){
179
+				this.codeData = res.data[0]
180
+				let item = this.codeData.pathologySpecimenDTOList.find(i=>i.specimenCode == e)
181
+				console.log(7,item)
182
+				if(!item.fixationTime && this.codeData.pathologyFormType==0){
183
+					if(this.codeData.status.value==2 || this.codeData.status.value==3 ||
184
+						this.codeData.status.value==4){
185
+							if(this.codeData.pathologyInspectDTOS){
186
+								this.project = this.codeData.pathologyInspectDTOS.map(i=>{
187
+									return i.inspectProject.name
188
+								})
189
+								this.project = this.project.join('、')
190
+							}
191
+							this.getFixationNum(this.codeData.id)
192
+						}else{
193
+							this.viewDetail(this.codeData,'4')
194
+						}
195
+					this.fixationError = null
196
+					this.searchMsg = null
197
+				}else if(item.fixationTime && this.codeData.pathologyFormType==0){
198
+					this.viewDetail(this.codeData,'4')
199
+					this.barCode = null
200
+					this.fixationError = null
201
+					this.searchMsg = null
202
+				}else{
203
+					this.barCode = null
204
+					this.fixationError = null
205
+					this.searchMsg = '该申请单类型不是病理检查申请单'
206
+				}
207
+				
208
+			}else{
209
+				this.barCode = null
210
+				this.searchMsg = res.msg
211
+			}
212
+		})
213
+	}
214
+	
215
+	// 获取申请单扫标本信息
216
+	fixationNum:any;
217
+	specimenNum:any;
218
+	totalNum:any
219
+	getFixationNum(id){
220
+		this.mainService.pathologyCheckPrint('pathologyForm',id,{
221
+			operationType:'fixation'
222
+		}).subscribe((res:any)=>{
223
+			this.fixationModal = true
224
+			this.fixationNum = res.fixationNum
225
+			this.specimenNum = res.specimenNum
226
+			this.totalNum = res.totalNum
227
+			setTimeout(_=>{
228
+				document.getElementById('specimen').focus();
229
+			},200)
230
+		})
231
+	}
232
+	
233
+	// 选择固定时间
234
+	formChangeDate(result){
235
+	  this.startDate = format(result, 'yyyy-MM-dd HH:mm:ss');
236
+	}
237
+
238
+	// 确定接受固定标本
239
+	startDate:any;
240
+	submitFixationForm(){
241
+		this.validateVerificationForm = this.fb.group({
242
+		  fixationTime: [null, [Validators.required]],
243
+			jobNumber: [null, [Validators.required]],
244
+			name:[null, [Validators.required]],
245
+			fixative:[null, [Validators.required]],
246
+		});
247
+		let date = new Date();
248
+		this.startDate = format(date, "yyyy-MM-dd HH:mm:ss")
249
+		this.validateVerificationForm.controls.fixationTime.setValue(this.startDate);
250
+		this.btnLoading = true
251
+		this.mainService.getDictionary("list", "fixing_liquid_type").subscribe((res) => {
252
+			this.fixativeData = res
253
+			this.btnLoading = false
254
+			this.verificationMoadl = true
255
+		});
256
+	}
257
+
258
+	// 关闭接受固定标本
259
+	hideSpecimenModal(){
260
+		this.autoUpdate()
261
+		this.cancelSpecimenModal()
262
+		this.barCode = null;
263
+		this.specimenCode = null;
264
+		this.fixationError = null
265
+		this.fixationModal = false;
266
+		setTimeout(_=>{
267
+			document.getElementById('Binput').focus();
268
+		},200)
269
+	}
270
+	
271
+	cancelSpecimenModal(){
272
+		let ids = []
273
+		for(let i of this.codeData.pathologySpecimenDTOList){
274
+			ids.push(i.id)
275
+		}
276
+		let data = {
277
+			pathologySpecimenIds:ids.join(',')
278
+		}
279
+		this.mainService.pathologyOperation(data,'cancel').subscribe((res) =>{
280
+			
281
+		})
282
+	}
283
+	
284
+	// 获取标本详情
285
+	project:any = [];
286
+	getSampleData(item){
287
+		this.mainService.getFetchData("data", "pathologyForm", item.id)
288
+		.subscribe((data) => {
289
+			this.isSpinning = false
290
+			this.detailsData = data.data
291
+		  this.specimenList = data.data.pathologySpecimenDTOList||[]
292
+			this.pathologyLogs = data.data.formLogDTOS
293
+			this.stepLength = this.pathologyLogs.length
294
+			if(this.detailsData.pathologyInspectDTOS){
295
+				this.project = this.detailsData.pathologyInspectDTOS.map(i=>{
296
+					return i.inspectProject.name
297
+				})
298
+				this.project = this.project.join('、')
299
+			}
300
+		  this.detailMoadl = true
301
+		});
302
+	}
303
+	
304
+	// 关闭查看标本
305
+	closeSpecimenModal(){
306
+		this.specimenViewDialog = false
307
+	}
308
+	
309
+	// 查看标本
310
+	specimenViewDialog:any = false;
311
+	viewData:any = [];
312
+	specimenItem:any;
313
+	specimenView(item){
314
+		this.viewData = []
315
+		this.specimenViewDialog = true
316
+		this.specimenItem = item;
317
+		this.viewData.push(item)
318
+	}
319
+	
320
+	// 获取科室
321
+	getDept(){
322
+		this.setSpecimen()
323
+		var that = this;
324
+		that.mainService.getDictionary("list", "dept_type").subscribe((res2) => {
325
+			let item1 = res2.find(i=>i.name=='手术室科室')
326
+			let item2 = res2.find(i=>i.name=='标本间科室')
327
+			let data1 = {
328
+			  idx: 0,
329
+			  sum: 9999,
330
+			  department: {
331
+			    hospital: { id: that.hosId || "" },
332
+			    type: { id: item1.id || "" },
333
+			  },
334
+			};
335
+			let data2 = {
336
+			  idx: 0,
337
+			  sum: 9999,
338
+			  department: {
339
+			    hospital: { id: that.hosId || "" },
340
+			    type: { id: item2.id || "" },
341
+			  },
342
+			};
343
+			that.mainService
344
+			  .getFetchDataList("data", "department", data1)
345
+			  .subscribe((res) => {
346
+			    that.operationData = res.list;
347
+			  });
348
+
349
+			that.mainService
350
+			  .getFetchDataList("data", "department", data2)
351
+			  .subscribe((res) => {
352
+					that.specimenData = res.list
353
+					this.getDeptDetail()
354
+			  });
355
+		});
356
+	}
357
+
358
+	// 获取关联科室详情
359
+	getDeptDetail(){
360
+		this.mainService
361
+		  .transfusionPrint("user", this.userId)
362
+		  .subscribe((res) => {
363
+				let data = res.data;
364
+				if(data.surgeryDepts){
365
+					let deptArr = []
366
+					for(let i of data.surgeryDepts){
367
+						deptArr.push(i.id)
368
+					}
369
+					this.validateForm.controls.operation.setValue(deptArr);
370
+				}
371
+				this.validateForm.controls.specimen.setValue(data.dept.id);
372
+				if(data.autoCreateOrder){
373
+					this.validateForm.controls.generate.setValue(data.autoCreateOrder);
374
+				}
375
+		  });
376
+	}
377
+
378
+	// 获取是否关联标本间
379
+	setSpecimen(){
380
+		if(this.validateForm){
381
+			this.validateForm = this.fb.group({
382
+			  specimen: [this.validateForm.value.specimen, [Validators.required]],
383
+				operation: [this.validateForm.value.operation, [Validators.required]],
384
+				generate:[this.validateForm.value.generate, [Validators.required]],
385
+			});
386
+		}else{
387
+			this.validateForm = this.fb.group({
388
+			  specimen: [null, [Validators.required]],
389
+				operation: [null, [Validators.required]],
390
+				generate:[1, [Validators.required]],
391
+			});
392
+		}
393
+		this.relevanceModal = true
394
+	}
395
+
396
+	// 确定关联科室
397
+	btnLoading:boolean = false;
398
+	submitForm(){
399
+		for (const i in this.validateForm.controls) {
400
+		  this.validateForm.controls[i].markAsDirty();
401
+		  this.validateForm.controls[i].updateValueAndValidity();
402
+		}
403
+		if (this.validateForm.invalid) return;
404
+		let deptArr = this.validateForm.value.operation.join(',')
405
+		let data = {
406
+		  user: {
407
+		    autoCreateOrder: this.validateForm.value.generate,
408
+				dept:{
409
+					id:this.validateForm.value.specimen
410
+				},
411
+				surgeryDeptIds:deptArr,
412
+				id:this.userId
413
+		  },
414
+		};
415
+		this.btnLoading = true
416
+		this.mainService
417
+		  .coopData("updData", "user", data)
418
+		  .subscribe((data) => {
419
+				this.getNewDept()
420
+				// 手术间列表
421
+				this.getPharmacyList(this.printPharmacyIdx, 'surgeryDept', this.printPharmacySearchKey);
422
+				// 标本间列表
423
+				this.getPharmacyList(this.waitPharmacyIdx, 'specimenDept', this.waitPharmacySearchKey);
424
+				// 今日离科标本列表
425
+				this.getPharmacyList(this.pharmacyIdx, 'leavedDept', this.pharmacySearchKey);
426
+				this.btnLoading = false
427
+				this.relevanceModal = false
428
+		    if (data.status == 200) {
429
+		      this.showPromptModal("操作", true, "");
430
+		    } else {
431
+		      this.showPromptModal("操作", false, data.msg);
432
+		    }
433
+		  });
434
+	}
435
+
436
+	getNewDept(){
437
+		let postData = {
438
+		  currentHosId: this.hosId,
439
+		  loginType: "PC",
440
+		};
441
+		this.mainService.changeHospital(postData).subscribe((result) => {
442
+		  if (result.status == 200) {
443
+		    let dataObj = {
444
+		      user: {
445
+		        dept: {
446
+		          id: this.validateForm.value.specimen,
447
+		        },
448
+		        id: JSON.parse(localStorage.getItem("user")).user.id,
449
+		      },
450
+		    };
451
+		    this.mainService
452
+		      .coopData("updData", "user", dataObj)
453
+		      .subscribe((data) => {
454
+		        if (data.status == 200) {
455
+		          this.getCurrentUserNow();
456
+		        }
457
+		      });
458
+		  }
459
+		});
460
+	}
461
+
462
+	// 获取当前用户信息
463
+	getCurrentUserNow() {
464
+	  this.mainService.getCurrentUser1().subscribe((data:any) => {
465
+	    if (data["status"] == 200) {
466
+				this.loginUser = data.data
467
+	      let user = JSON.parse(localStorage.getItem("user"));
468
+	      user.user.dept = data["data"].dept;
469
+	      user.user.currentHospital = data["data"].currentHospital;
470
+	      localStorage.setItem("user", JSON.stringify(user));
471
+	    }
472
+	  });
473
+	}
474
+
475
+	// 输入工号查询姓名
476
+	handoverUserId:any = null;
477
+	numberChange(e){
478
+		if(e.length < 3) {
479
+			this.validateVerificationForm.controls.name.setValue('');
480
+			return
481
+		}
482
+		let query = {
483
+		  account: e
484
+		};
485
+		this.mainService
486
+		  .jobSearch(query)
487
+		  .subscribe((data:any) => {
488
+				if(data.status==200){
489
+					this.validateVerificationForm.controls.name.setValue(data.userName);
490
+					this.handoverUserId = data.userId
491
+				}else{
492
+					this.validateVerificationForm.controls.name.setValue('');
493
+					this.handoverUserId =null
494
+					// this.message.error(data.data)
495
+				}
496
+		  });
497
+	}
498
+
499
+	// 提交固定标本接收
500
+	submitVerificationForm(){
501
+		for (const i in this.validateVerificationForm.controls) {
502
+		  this.validateVerificationForm.controls[i].markAsDirty();
503
+		  this.validateVerificationForm.controls[i].updateValueAndValidity();
504
+		}
505
+		if (this.validateVerificationForm.invalid) return;
506
+		let str = this.codeData.pathologySpecimenDTOList.map(i=>{
507
+			return i.specimenCode
508
+		})
509
+		let data: any = {
510
+			id:this.codeData.id,
511
+			specimenDeptId:this.validateForm.value.specimen,
512
+			specimenFixingLiquid:{
513
+				id:this.validateVerificationForm.value.fixative
514
+			},
515
+			specimenCodes:str.join(','),
516
+			fixationTime:this.startDate,
517
+			hosId: this.hosId || "" ,
518
+			handoverUserId:this.handoverUserId
519
+		};
520
+		this.btnInfoLoading = true;
521
+		this.mainService
522
+		.simplePost("addData", "pathologyForm", data)
523
+		.subscribe((res) => {
524
+			this.autoUpdate(false)
525
+			this.btnInfoLoading = false;
526
+			this.barCode = null;
527
+			// 手术间列表
528
+			this.getPharmacyList(this.printPharmacyIdx, 'surgeryDept', this.printPharmacySearchKey);
529
+			// 标本间列表
530
+			this.getPharmacyList(this.waitPharmacyIdx, 'specimenDept', this.waitPharmacySearchKey);
531
+			// 今日离科标本列表
532
+			this.getPharmacyList(this.pharmacyIdx, 'leavedDept', this.pharmacySearchKey);
533
+			if (res.status == 200) {
534
+				this.showPromptModal("操作", true, "");
535
+			} else {
536
+				this.showPromptModal("操作", false, res.msg);
537
+			}
538
+		});
539
+	}
540
+
541
+	closeModel(){
542
+		this.verificationMoadl = false
543
+		this.fixationModal = false
544
+		setTimeout(_=>{
545
+			document.getElementById('Binput').focus();
546
+		},200)
547
+	}
548
+
549
+	// 关闭固定接受标本
550
+	hideVerificationModal(){
551
+		this.verificationMoadl = false
552
+		setTimeout(_=>{
553
+			document.getElementById('Binput').focus();
554
+		},200)
555
+	}
556
+
557
+
558
+	// 监听标本条码
559
+	specimenCodeChange(e){
560
+		this.changeInpSubjectSpecimen.next([e]);
561
+	}
562
+
563
+	// 监听接受固定标本条码
564
+	tableLoading:boolean = false;
565
+	codeChange(e){
566
+		this.changeInpSubject.next([e]);
567
+	}
568
+	
569
+	fixationError:any;
570
+	searchSpecimenData(e){
571
+		if(!e){
572
+			return
573
+		}
574
+		if(e.length < 10) {
575
+			return
576
+		}
577
+		this.tableLoading = true
578
+		this.mainService.pathologyScanCode({
579
+			barcode:e,
580
+			pathologyFormId:this.codeData.id
581
+		})
582
+		.subscribe((res:any) => {
583
+			this.autoUpdate(false)
584
+			this.tableLoading = false
585
+			this.specimenCode = null
586
+			if(res.status==200){
587
+				let item = res.data[0].pathologySpecimenDTOList.find(i=>i.specimenCode == e)
588
+				if(item.fixationTime){
589
+					this.fixationError = '该标本已经固定过'
590
+				}else{
591
+					this.getFixationNum(res.data[0].id)
592
+					this.codeData = res.data[0]
593
+					this.fixationError = null
594
+				}
595
+			}else{
596
+				this.fixationError = res.msg
597
+			}
598
+		})
599
+	}
600
+
601
+	// 查看详情
602
+	detailMoadl:boolean = false;
603
+	pathologyLogs:any=[];
604
+	specimenList:any=[]
605
+	stepLength:any = 0;
606
+	viewDetail(item,type){
607
+		this.isSpinning = true
608
+		this.getSampleData(item)
609
+		clearInterval(this.logTimer);
610
+	}
611
+
612
+	closeDetailMoadl(){
613
+		setTimeout(_=>{
614
+			document.getElementById('Binput').focus();
615
+		},200)
616
+		this.detailMoadl = false
617
+		this.autoUpdate(false);
618
+	}
619
+
620
+  // 自动刷新倒计时
621
+  autoUpdate(flag = true) {
622
+    if (flag) {
623
+      this.logTime = this.logTimeConst;
624
+    }
625
+    clearInterval(this.logTimer);
626
+    this.logTimer = setInterval(() => {
627
+      this.logTime--;
628
+      if (this.logTime === 0) {
629
+        this.logTime = this.logTimeConst;
630
+        // 代收急查标本(标本信息)列表
631
+        this.getPharmacyList(0, 'surgeryDept', this.printPharmacySearchKey);
632
+        // 已收取(工单信息)列表
633
+        this.getPharmacyList(0, 'specimenDept', this.waitPharmacySearchKey);
634
+        // 中转标本(标本统计信息)列表
635
+        this.getPharmacyList(0, 'leavedDept', this.pharmacySearchKey);
636
+
637
+      }
638
+    }, 1000);
639
+  }
640
+  // 药房端药房列表查询、搜索
641
+  // 1为pc待打印状态、2为pc配药中、3为pc核对中、4为pc配送中
642
+  // searchKey  为搜索的关键字,没有就不传
643
+  loading1 = false;
644
+  loading2 = false;
645
+  loading3 = false;
646
+  loading4 = false;
647
+  loading5 = false;
648
+  getPharmacyList(idx, type, searchKey) {
649
+    let hosId = JSON.parse(localStorage.getItem("user")).user.currentHospital.id;
650
+    switch (type) {
651
+      case 'surgeryDept':
652
+        this.loading1 = true;
653
+        break;
654
+      case 'specimenDept':
655
+        this.loading2 = true;
656
+        break;
657
+      case 'leavedDept':
658
+        this.loading3 = true;
659
+        break;
660
+    }
661
+    let postData = {
662
+			idx: 0,
663
+			sum: 50,
664
+			pathologyForm:{
665
+				detailsType: type,
666
+				keyWords:searchKey,
667
+				hosId,
668
+			}
669
+    };
670
+    this.mainService
671
+      .getFetchDataList("data", "pathologyForm", postData)
672
+      .subscribe((result) => {
673
+        switch (type) {
674
+          case 'surgeryDept':
675
+            this.loading1 = false;
676
+            break;
677
+          case 'specimenDept':
678
+            this.loading2 = false;
679
+            break;
680
+          case 'leavedDept':
681
+            this.loading3 = false;
682
+            break;
683
+        }
684
+        if (result["status"] == 200) {
685
+          switch (type) {
686
+            case 'surgeryDept':
687
+              // 总数
688
+              this.printPharmacyTotal = result.totalNum;
689
+              // 隐藏按钮的loading
690
+              this.printPharmacyLoad = false;
691
+              // 查看更多,是否显示
692
+              if (result["list"].length < 10) {
693
+                this.printPharmacyFlag = false;
694
+              } else if (result["list"].length === 0 && idx === 0) {
695
+                this.printPharmacyFlag = false;
696
+              } else {
697
+                this.printPharmacyFlag = true;
698
+              }
699
+              // 列表数据合并
700
+              if (idx === 0) {
701
+                this.printPharmacyList = result["list"];
702
+              } else {
703
+                this.printPharmacyList = [
704
+                  ...this.printPharmacyList,
705
+                  ...result["list"],
706
+                ];
707
+              }
708
+              break;
709
+            case 'specimenDept':
710
+              this.waitPharmacyTotal = result.totalNum;
711
+              this.waitPharmacyLoad = false;
712
+              if (result["list"].length < 10) {
713
+                this.waitPharmacyFlag = false;
714
+              } else if (result["list"].length === 0 && idx === 0) {
715
+                this.waitPharmacyFlag = false;
716
+              } else {
717
+                this.waitPharmacyFlag = true;
718
+              }
719
+              if (idx === 0) {
720
+                this.waitPharmacyList = result["list"];
721
+              } else {
722
+                this.waitPharmacyList = [
723
+                  ...this.waitPharmacyList,
724
+                  ...result["list"],
725
+                ];
726
+              }
727
+              break;
728
+            case 'leavedDept':
729
+              this.pharmacyTotal = result.totalNum;
730
+              this.pharmacyLoad = false;
731
+              if (result["list"].length < 10) {
732
+                this.pharmacyFlag = false;
733
+              } else if (result["list"].length === 0 && idx === 0) {
734
+                this.pharmacyFlag = false;
735
+              } else {
736
+                this.pharmacyFlag = true;
737
+              }
738
+              if (idx === 0) {
739
+                this.pharmacyList = result["list"];
740
+              } else {
741
+                this.pharmacyList = [...this.pharmacyList, ...result["list"]];
742
+              }
743
+              break;
744
+          }
745
+        }
746
+      });
747
+  }
748
+  // 加载更多
749
+  // loadMore(type) {
750
+  //   switch (type) {
751
+  //     case 'surgeryDept':
752
+  //       this.printPharmacyIdx++;
753
+  //       this.printPharmacyLoad = true;
754
+  //       this.getPharmacyList(
755
+  //         this.printPharmacyIdx,
756
+  //         type,
757
+  //         this.printPharmacySearchKey
758
+  //       );
759
+  //       break;
760
+  //     case 'specimenDept':
761
+  //       this.waitPharmacyIdx++;
762
+  //       this.waitPharmacyLoad = true;
763
+  //       this.getPharmacyList(
764
+  //         this.waitPharmacyIdx,
765
+  //         type,
766
+  //         this.waitPharmacySearchKey
767
+  //       );
768
+  //       break;
769
+  //     case 'leavedDept':
770
+  //       this.pharmacyIdx++;
771
+  //       this.pharmacyLoad = true;
772
+  //       this.getPharmacyList(this.pharmacyIdx, type, this.pharmacySearchKey);
773
+  //       break;
774
+  //   }
775
+  // }
776
+  // 搜索关键词
777
+  searchKeyHandle(type) {
778
+    switch (type) {
779
+      case 'surgeryDept':
780
+        this.printPharmacyIdx = 0; //页码重置
781
+        this.printPharmacyList = []; //列表重置
782
+        this.getPharmacyList(
783
+          this.printPharmacyIdx,
784
+          type,
785
+          this.printPharmacySearchKey
786
+        );
787
+        break;
788
+      case 'specimenDept':
789
+        this.waitPharmacyIdx = 0; //页码重置
790
+        this.waitPharmacyList = []; //列表重置
791
+        this.getPharmacyList(
792
+          this.waitPharmacyIdx,
793
+          type,
794
+          this.waitPharmacySearchKey
795
+        );
796
+        break;
797
+      case 'leavedDept':
798
+        this.pharmacyIdx = 0; //页码重置
799
+        this.pharmacyList = []; //列表重置
800
+        this.getPharmacyList(this.pharmacyIdx, type, this.pharmacySearchKey);
801
+        break;
802
+    }
803
+  }
804
+  // 退出
805
+  logOut(): void {
806
+    // 假退出
807
+    let hospital = this.tool.getCurrentHospital();
808
+    if(hospital){
809
+      this.router.navigate(["login", hospital.id]);
810
+    }else{
811
+      this.router.navigateByUrl("login");
812
+    }
813
+    localStorage.removeItem("user");
814
+    localStorage.removeItem("menu");
815
+    localStorage.removeItem("index");
816
+    // 假退出
817
+    this.mainService.logOut().subscribe((data) => {
818
+      if (data.status == 200) {
819
+        if(hospital){
820
+          this.router.navigate(["login", hospital.id]);
821
+        }else{
822
+          this.router.navigateByUrl("login");
823
+        }
824
+        localStorage.removeItem("user");
825
+        localStorage.removeItem("menu");
826
+        localStorage.removeItem("index");
827
+      }
828
+    });
829
+
830
+  }
831
+
832
+  // 右侧菜单
833
+  showLastItems: boolean = false;
834
+  // 下拉
835
+  fixedMenuXiala() {
836
+    this.showLastItems = true;
837
+  }
838
+
839
+  // 上拉
840
+  fixedMenuShangla() {
841
+    this.showLastItems = false;
842
+  }
843
+
844
+  mainRole: boolean = false; //回到系统管理权限
845
+  initRole() {
846
+    let menus = JSON.parse(localStorage.getItem("menu"));
847
+    console.log("菜单数量" + menus.length);
848
+    if (menus.length >= 2) {
849
+      this.mainRole = true;
850
+      return;
851
+    }
852
+  }
853
+
854
+  // 切换右侧菜单Tab
855
+  fixedTab: string = "";
856
+  checkFixedTab(type: string) {
857
+    if (type == "toSystem") {
858
+      this.router.navigateByUrl("main");
859
+    }
860
+    if (this.fixedTab == type) {
861
+      this.fixedTab = "";
862
+    } else {
863
+      this.fixedTab = type;
864
+    }
865
+  }
866
+  //药房端科室切换
867
+  changeShow = true;
868
+  closeTime = 3;
869
+  closeTimeFlag = 0;
870
+  hsPromptModalShow: boolean = false; //科室切换提示框是否展示
871
+  timerCloseTime = null;
872
+  deptDisplay = 1; //护士端是否显示可以别名,1是显示科室名称,2是显示科室别名
873
+  //子传父接收
874
+  closeModelHs(e) {
875
+    this.hsPromptModalShow = JSON.parse(e).show;
876
+    this.changeShow = JSON.parse(e).changeShow;
877
+  }
878
+  //子传父接收
879
+  clearModelHs(e) {
880
+    if (JSON.parse(e).clear === true) {
881
+      clearInterval(this.timerCloseTime);
882
+    }
883
+    this.changeShow = JSON.parse(e).changeShow;
884
+  }
885
+  // 头部切换科室
886
+  changeKsNow() {
887
+    this.hsPromptModalShow = true;
888
+    clearInterval(this.timerCloseTime);
889
+    this.changeShow = false;
890
+  }
891
+  // 切换科室
892
+  changeKs() {
893
+    this.hsPromptModalShow = true;
894
+    // (1)	当用户设置为正数时,用户必须查看此窗体指定秒数。
895
+    // (2)	当用户设置为负数时,用户可点击知道了也可倒计时自动关闭。
896
+    // (3)	如果用户填写0则为无自动关闭和强制查看时间。
897
+    if (this.closeTimeFlag === 0) {
898
+      return;
899
+    }
900
+    this.closeTime = Math.abs(this.closeTimeFlag);
901
+    clearInterval(this.timerCloseTime);
902
+    this.timerCloseTime = setInterval(() => {
903
+      this.closeTime = Math.max(--this.closeTime, 0);
904
+      if (this.closeTime === 0) {
905
+        if (this.closeTimeFlag <= 0) {
906
+          this.hsPromptModalShow = false;
907
+        }
908
+        clearInterval(this.timerCloseTime);
909
+      }
910
+    }, 1000);
911
+  }
912
+
913
+	promptModalShow:boolean = false;
914
+	promptContent:any = null;
915
+	ifSuccess:any = null;
916
+	promptInfo:any = null;
917
+	// 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
918
+	showPromptModal(con, success, promptInfo?) {
919
+	  this.promptModalShow = false;
920
+	  this.promptContent = con;
921
+	  this.ifSuccess = success;
922
+	  this.promptInfo = promptInfo;
923
+	  setTimeout(() => {
924
+	    this.promptModalShow = true;
925
+	  }, 100);
926
+	}
927
+}
928
+

+ 17 - 0
src/app/views/pathology-sample/pathology-sample.module.ts

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