Browse Source

拉取代码

maotao 3 months ago
parent
commit
cb992f1539

+ 15 - 4
components/bigScreen/bigScreen.vue

@@ -392,10 +392,21 @@
392
       },
392
       },
393
       // 底部扫描
393
       // 底部扫描
394
       Scanning(qrcodePrefix = '') {
394
       Scanning(qrcodePrefix = '') {
395
-				// this.ScanningCommon('', '250515541895@_1');
396
-        if (!this.SMFlag) {
397
-          return;
398
-        }
395
+				// 标本码
396
+				// this.ScanningCommon('', '250516486743@_1');
397
+				
398
+				// 快捷建单-轮巡工单码
399
+				// this.ScanningCommon('', '3330ec8e-76eb-413e-b000-995f08d2ff96');
400
+				
401
+				// 中转科室码--金银湖流转中心
402
+				// this.ScanningCommon('', '7d047a94-e102-446c-b477-94f977faaebd');
403
+				
404
+				// 终点科室核对码--本部住院检验科
405
+				// this.ScanningCommon('', '95c5de27-c05f-11ea-8cfe-000c29097622');
406
+				
407
+        // if (!this.SMFlag) {
408
+        //   return;
409
+        // }
399
         this.SMFlag = false;
410
         this.SMFlag = false;
400
         SM().then((content) => {
411
         SM().then((content) => {
401
           this.ScanningCommon(qrcodePrefix, content);
412
           this.ScanningCommon(qrcodePrefix, content);

+ 1 - 1
components/specimenListItem/specimenListItem.vue

@@ -13,7 +13,7 @@
13
     <view class="page_item_cont">
13
     <view class="page_item_cont">
14
       <view class="page_item_cont_T">
14
       <view class="page_item_cont_T">
15
         <view class="page_item_cont_title">
15
         <view class="page_item_cont_title">
16
-          <view style="width: 10em;"> {{item.stype ? item.stype.name : '无'}} </view>
16
+          <view style="width: 10em;"> {{item.stype ? item.stype.name : '无'}} <text v-if="item.tubeType">、</text> {{item.tubeType && item.tubeType.name}}</view>
17
           <view class="text_big">{{ item.scode || "无" }}</view>
17
           <view class="text_big">{{ item.scode || "无" }}</view>
18
         </view>
18
         </view>
19
         <view class="page_item_cont_title">
19
         <view class="page_item_cont_title">

+ 3 - 4
manifest.json

@@ -1,5 +1,5 @@
1
 {
1
 {
2
-    /* "name" : "病理全流程", */
2
+    // "name" : "大势科技",
3
     "name" : "",
3
     "name" : "",
4
     "appid" : "__UNI__9F2011E",
4
     "appid" : "__UNI__9F2011E",
5
     "description" : "",
5
     "description" : "",
@@ -123,9 +123,8 @@
123
             "disableHostCheck" : true,
123
             "disableHostCheck" : true,
124
             "proxy" : {
124
             "proxy" : {
125
                 "/service" : {
125
                 "/service" : {
126
-                    "target" : "http://192.168.3.108", //请求的目标域名
127
-
128
-                    // "target" : "http://192.168.4.163", //宋程玉本地
126
+                    // "target" : "http://192.168.3.108", //请求的目标域名
127
+                    "target" : "http://192.168.4.163", //宋程玉本地
129
                     "changeOrigin" : true, //是否跨域
128
                     "changeOrigin" : true, //是否跨域
130
                     "secure" : false
129
                     "secure" : false
131
                 }
130
                 }

+ 8 - 0
pages.json

@@ -760,6 +760,14 @@
760
 		      "titleNView": false
760
 		      "titleNView": false
761
 		    }
761
 		    }
762
 		  }
762
 		  }
763
+		},
764
+		{
765
+		  "path": "pages/viewSpe/viewSpe",
766
+		  "style": {
767
+		    "h5": {
768
+		      "titleNView": false
769
+		    }
770
+		  }
763
 		}
771
 		}
764
   ],
772
   ],
765
   "globalStyle": {
773
   "globalStyle": {

+ 63 - 8
pages/checkAfterBigScreen/checkAfterBigScreen.vue

@@ -19,9 +19,21 @@
19
           检验科室标本数量:
19
           检验科室标本数量:
20
         </view>
20
         </view>
21
         <view class="page_item_cont_title" v-for="(item, i) in info.data" :key="i">
21
         <view class="page_item_cont_title" v-for="(item, i) in info.data" :key="i">
22
-          <view>{{item[1]}}</view>
23
-          <view class="text_big" @click="goToSpeDetail(item[1],item[2])"><text class="underline">{{item[3]}}</text>只
24
-          </view>
22
+					<uni-collapse :border="false">
23
+						<uni-collapse-item titleBorder="none">
24
+							<template v-slot:title>
25
+								<view class="page_item_cont_title_coll">
26
+									<view>{{item.deptName}}</view>
27
+									<view class="text_big" @click.stop="goToSpeDetail(item.deptName,item.deptQrCode)"><text class="underline">{{item.speCount}}</text>只</view>
28
+								</view>
29
+							</template>
30
+							<view class="content">
31
+								<view class="list" v-for="x in item.tubeTypeData" @click="viewSpe(item.deptName,item.deptQrCode,x.tubeTypeId)">
32
+									{{x.tubeTypeName}}:<text class="underline-item">{{x.speCount}}</text>
33
+								</view>
34
+							</view>
35
+						</uni-collapse-item>
36
+					</uni-collapse>
25
         </view>
37
         </view>
26
       </view>
38
       </view>
27
     </view>
39
     </view>
@@ -61,6 +73,11 @@
61
       };
73
       };
62
     },
74
     },
63
     methods: {
75
     methods: {
76
+			viewSpe(deptName, qrCode, id){
77
+				uni.navigateTo({
78
+				  url: `../viewSpe/viewSpe?deptName=${deptName}&workOrderId=${this.queryObj.ids}&deptCode=${qrCode}&tubeTypeId=${id}&isScan=1&specimensCheck=1`,
79
+				});
80
+			},
64
       // 填写交接人工号-确认
81
       // 填写交接人工号-确认
65
       hosOk(data) {
82
       hosOk(data) {
66
         console.log(data);
83
         console.log(data);
@@ -224,17 +241,25 @@
224
   };
241
   };
225
 </script>
242
 </script>
226
 <style lang="less" scoped>
243
 <style lang="less" scoped>
244
+	/deep/ .uni-collapse-item--border{
245
+		border-bottom-color: #fff !important;
246
+	}
247
+	
248
+	/deep/ .uni-collapse-item__title-arrow{
249
+		margin-right: 0 !important;
250
+	}
227
   .checkAfterScanning {
251
   .checkAfterScanning {
228
     .checkAfterScanning_title {
252
     .checkAfterScanning_title {
229
       padding: 50rpx 0;
253
       padding: 50rpx 0;
230
       font-size: 46rpx;
254
       font-size: 46rpx;
231
       font-weight: 550;
255
       font-weight: 550;
232
       text-align: center;
256
       text-align: center;
233
-      border-bottom: 1px solid #ccc;
257
+      // border-bottom: 1px solid #ccc;
234
     }
258
     }
235
 
259
 
236
     .page_item_cont {
260
     .page_item_cont {
237
-      min-height: 90rpx;
261
+      height: 73vh;
262
+      overflow-y: auto;
238
       padding: 0 20rpx;
263
       padding: 0 20rpx;
239
       text-align: left;
264
       text-align: left;
240
       position: relative;
265
       position: relative;
@@ -253,18 +278,41 @@
253
           text-decoration: underline;
278
           text-decoration: underline;
254
         }
279
         }
255
       }
280
       }
256
-
281
+			
282
+			.underline-item{
283
+				// text-decoration: underline;
284
+				// margin-right: 40rpx;
285
+			}
286
+			
257
       .page_item_cont_T {
287
       .page_item_cont_T {
258
         padding-top: 28rpx;
288
         padding-top: 28rpx;
259
         padding-bottom: 28rpx;
289
         padding-bottom: 28rpx;
260
         font-size: 28rpx;
290
         font-size: 28rpx;
261
-
291
+        background: #fff;
292
+        border: 1px solid #CBCBCB;
293
+        border-radius: 10rpx;
294
+        padding: 20rpx;
295
+				
262
         .page_item_cont_title {
296
         .page_item_cont_title {
263
           height: 100%;
297
           height: 100%;
264
           font-size: 32rpx;
298
           font-size: 32rpx;
265
           display: flex;
299
           display: flex;
266
           justify-content: space-between;
300
           justify-content: space-between;
267
           align-items: center;
301
           align-items: center;
302
+					.content{
303
+						display: flex;
304
+						flex-wrap: wrap;
305
+						.list{
306
+							font-size: 28rpx;
307
+							height: 60rpx;
308
+							line-height: 60rpx;
309
+							width: 50%;
310
+							border-bottom: 1rpx solid #E6E6E6;
311
+							&:last-child{
312
+								border-bottom: none;
313
+							}
314
+						}
315
+					}
268
         }
316
         }
269
 
317
 
270
         .page_item_cont_title2 {
318
         .page_item_cont_title2 {
@@ -277,7 +325,14 @@
277
           align-items: center;
325
           align-items: center;
278
         }
326
         }
279
       }
327
       }
280
-
328
+			
329
+			.page_item_cont_title_coll{
330
+				display: flex;
331
+				justify-content: space-between;
332
+				align-items: center;
333
+				margin-right: 8rpx;
334
+			}
335
+			
281
       .page_item_cont_B {
336
       .page_item_cont_B {
282
         padding-top: 28rpx;
337
         padding-top: 28rpx;
283
         margin-bottom: 28rpx;
338
         margin-bottom: 28rpx;

+ 68 - 11
pages/checkAfterScanning/checkAfterScanning.vue

@@ -19,8 +19,21 @@
19
           检验科室标本数量:
19
           检验科室标本数量:
20
         </view>
20
         </view>
21
         <view class="page_item_cont_title" v-for="(item, i) in info.data" :key="i">
21
         <view class="page_item_cont_title" v-for="(item, i) in info.data" :key="i">
22
-          <view>{{item[1]}}</view>
23
-          <view class="text_big" @click="goToSpeDetail(item[1],item[2])"><text class="underline">{{item[3]}}</text>只</view>
22
+         <uni-collapse :border="false">
23
+						<uni-collapse-item titleBorder="none">
24
+							<template v-slot:title>
25
+								<view class="page_item_cont_title_coll">
26
+									<view>{{item.deptName}}</view>
27
+									<view class="text_big" @click.stop="goToSpeDetail(item.deptName,item.deptQrCode)"><text class="underline">{{item.speCount}}</text>只</view>
28
+								</view>
29
+							</template>
30
+							<view class="content">
31
+								<view class="list" v-for="x in item.tubeTypeData" @click="viewSpe(item.deptName,item.deptQrCode,x.tubeTypeId)">
32
+									{{x.tubeTypeName}}:<text class="underline-item">{{x.speCount}}</text>
33
+								</view>
34
+							</view>
35
+						</uni-collapse-item>
36
+					</uni-collapse>
24
         </view>
37
         </view>
25
       </view>
38
       </view>
26
     </view>
39
     </view>
@@ -80,6 +93,11 @@
80
 			numberKeyModel
93
 			numberKeyModel
81
 		},
94
 		},
82
     methods: {
95
     methods: {
96
+			viewSpe(deptName, qrCode, id){
97
+				uni.navigateTo({
98
+				  url: `../viewSpe/viewSpe?deptName=${deptName}&workOrderId=${encodeURIComponent(JSON.stringify([this.queryObj.id]))}&deptCode=${qrCode}&tubeTypeId=${id}&isScan=1&specimensCheck=1`,
99
+				});
100
+			},
83
 			confirmKey(data){
101
 			confirmKey(data){
84
 				this.Scanning_complete('key')
102
 				this.Scanning_complete('key')
85
 				this.contentData = data
103
 				this.contentData = data
@@ -558,17 +576,26 @@
558
   };
576
   };
559
 </script>
577
 </script>
560
 <style lang="less" scoped>
578
 <style lang="less" scoped>
579
+	/deep/ .uni-collapse-item--border{
580
+		border-bottom-color: #fff !important;
581
+	}
582
+	
583
+	/deep/ .uni-collapse-item__title-arrow{
584
+		margin-right: 0 !important;
585
+	}
586
+	
561
   .checkAfterScanning {
587
   .checkAfterScanning {
562
     .checkAfterScanning_title {
588
     .checkAfterScanning_title {
563
       padding: 50rpx 0;
589
       padding: 50rpx 0;
564
       font-size: 46rpx;
590
       font-size: 46rpx;
565
       font-weight: 550;
591
       font-weight: 550;
566
       text-align: center;
592
       text-align: center;
567
-      border-bottom: 1px solid #ccc;
593
+      // border-bottom: 1px solid #ccc;
568
     }
594
     }
569
 
595
 
570
     .page_item_cont {
596
     .page_item_cont {
571
-      min-height: 90rpx;
597
+      height: 73vh;
598
+			overflow-y: auto;
572
       padding: 0 20rpx;
599
       padding: 0 20rpx;
573
       text-align: left;
600
       text-align: left;
574
       position: relative;
601
       position: relative;
@@ -582,23 +609,46 @@
582
         font-size: 32rpx;
609
         font-size: 32rpx;
583
         font-weight: 700;
610
         font-weight: 700;
584
         margin-top: 10rpx;
611
         margin-top: 10rpx;
585
-
586
-        .underline{
587
-          text-decoration: underline;
588
-        }
589
       }
612
       }
590
-
613
+			
614
+			.underline{
615
+			  text-decoration: underline;
616
+			}
617
+			
618
+			.underline-item{
619
+				// text-decoration: underline;
620
+				// margin-right: 40rpx;
621
+			}
622
+			
591
       .page_item_cont_T {
623
       .page_item_cont_T {
592
         padding-top: 28rpx;
624
         padding-top: 28rpx;
593
         padding-bottom: 28rpx;
625
         padding-bottom: 28rpx;
594
         font-size: 28rpx;
626
         font-size: 28rpx;
595
-
627
+				background: #fff;
628
+				border: 1px solid #CBCBCB;
629
+				border-radius: 10rpx;
630
+				padding: 20rpx;
631
+						
596
         .page_item_cont_title {
632
         .page_item_cont_title {
597
           height: 100%;
633
           height: 100%;
598
           font-size: 32rpx;
634
           font-size: 32rpx;
599
           display: flex;
635
           display: flex;
600
           justify-content: space-between;
636
           justify-content: space-between;
601
           align-items: center;
637
           align-items: center;
638
+					.content{
639
+						display: flex;
640
+						flex-wrap: wrap;
641
+						.list{
642
+							font-size: 28rpx;
643
+							height: 60rpx;
644
+							line-height: 60rpx;
645
+							width: 50%;
646
+							border-bottom: 1rpx solid #E6E6E6;
647
+							&:last-child{
648
+								border-bottom: none;
649
+							}
650
+						}
651
+					}
602
         }
652
         }
603
         .page_item_cont_title2{
653
         .page_item_cont_title2{
604
           margin-top: 36rpx;
654
           margin-top: 36rpx;
@@ -610,7 +660,14 @@
610
           align-items: center;
660
           align-items: center;
611
         }
661
         }
612
       }
662
       }
613
-
663
+			
664
+			.page_item_cont_title_coll{
665
+				display: flex;
666
+				justify-content: space-between;
667
+				align-items: center;
668
+				margin-right: 8rpx;
669
+			}
670
+			
614
       .page_item_cont_B {
671
       .page_item_cont_B {
615
         padding-top: 28rpx;
672
         padding-top: 28rpx;
616
         margin-bottom: 28rpx;
673
         margin-bottom: 28rpx;

+ 122 - 0
pages/receipt_infopage/receipt_infopage.vue

@@ -420,6 +420,9 @@
420
           infoDATA.taskType.associationType.value == 'specimen' ||
420
           infoDATA.taskType.associationType.value == 'specimen' ||
421
           infoDATA.taskType.associationType.value == 'specimenPlan'
421
           infoDATA.taskType.associationType.value == 'specimenPlan'
422
         " hover-class="seimin-btn-hover">查看标本</view>
422
         " hover-class="seimin-btn-hover">查看标本</view>
423
+			
424
+			<view class="btn3" @click="redeployScan(infoDATA)" v-if="(infoDATA.taskType.associationType.value == 'specimen' ||
425
+			    infoDATA.taskType.associationType.value == 'specimenPlan') && sPehandoverOrder==1 && (infoDATA.gdState.value==4 || infoDATA.gdState.value==5 || infoDATA.gdState.value==8)" hover-class="seimin-btn-hover">转派</view>
423
       <view class="btn3" @click="viewDrugsBag(infoDATA)" v-if="infoDATA.taskType.associationType.value == 'drugsBag'" hover-class="seimin-btn-hover">查看业务流程</view>
426
       <view class="btn3" @click="viewDrugsBag(infoDATA)" v-if="infoDATA.taskType.associationType.value == 'drugsBag'" hover-class="seimin-btn-hover">查看业务流程</view>
424
       <view class="btn3" @click="toDrugBatches(infoDATA.drugs.batchNo)" v-if="infoDATA.taskType.associationType.value == 'drugsBag' && taskTypeConfig.drugsBatchInfo == 1" hover-class="seimin-btn-hover">药品批次</view>
427
       <view class="btn3" @click="toDrugBatches(infoDATA.drugs.batchNo)" v-if="infoDATA.taskType.associationType.value == 'drugsBag' && taskTypeConfig.drugsBatchInfo == 1" hover-class="seimin-btn-hover">药品批次</view>
425
       <view class="btn3" @click="viewBlood(infoDATA)" v-if="infoDATA.taskType.associationType.value == 'ordinary' && infoDATA.taskType.ordinaryField.value == 'blood'" hover-class="seimin-btn-hover">查看血制品</view>
428
       <view class="btn3" @click="viewBlood(infoDATA)" v-if="infoDATA.taskType.associationType.value == 'ordinary' && infoDATA.taskType.ordinaryField.value == 'blood'" hover-class="seimin-btn-hover">查看血制品</view>
@@ -449,6 +452,13 @@
449
     </checkboxModal>
452
     </checkboxModal>
450
 		<!-- PDA扫描 -->
453
 		<!-- PDA扫描 -->
451
 		<scanner></scanner>
454
 		<scanner></scanner>
455
+		<!-- 标本转派 -->
456
+		<uni-popup ref="alertDialog" type="dialog" :mask-click="false">
457
+			<uni-popup-dialog type="info" cancelText="否" confirmText="是" title="提示" @confirm="dialogConfirm"
458
+				@close="dialogClose">
459
+				<text v-html="speContent"></text>
460
+			</uni-popup-dialog>
461
+		</uni-popup>
452
   </view>
462
   </view>
453
 </template>
463
 </template>
454
 <script>
464
 <script>
@@ -518,6 +528,9 @@
518
         // 特殊情况关闭原因开关
528
         // 特殊情况关闭原因开关
519
         textareaFlag: false,
529
         textareaFlag: false,
520
         textareaText: "",
530
         textareaText: "",
531
+				tasktype: null,
532
+				sPehandoverOrder: null ,//是否转派
533
+				speContent: null,
521
       };
534
       };
522
     },
535
     },
523
     filters: {
536
     filters: {
@@ -1076,6 +1089,68 @@
1076
           url: "../receiptpage/receiptpage",
1089
           url: "../receiptpage/receiptpage",
1077
         });
1090
         });
1078
       },
1091
       },
1092
+			// 转派
1093
+			redeployScan(workOrder){
1094
+				if (!this.SMFlag) {
1095
+				  return;
1096
+				}
1097
+				this.SMFlag = false;
1098
+				SM().then((content) => {
1099
+				  uni.showLoading({
1100
+				    title: "加载中",
1101
+				    mask: true,
1102
+				  });
1103
+					// let content = '3262'
1104
+				  post("/workerOrder/transfer ", {
1105
+							handoverId: content,
1106
+							orderId: workOrder.id
1107
+				    })
1108
+				    .then((result) => {
1109
+				      this.SMFlag = true;
1110
+							uni.hideLoading();
1111
+				      if (result.state == 205) {
1112
+								this.speContent = result.msg
1113
+								this.handoverId = content
1114
+				        this.$refs.alertDialog.open()
1115
+				      }else{
1116
+								uni.showToast({
1117
+								  icon: "none",
1118
+								  title: result.msg,
1119
+								});
1120
+							} 
1121
+				    })
1122
+				}).catch(err => {
1123
+				  this.SMFlag = true;
1124
+				});
1125
+			},
1126
+			dialogConfirm() {
1127
+				uni.showLoading({
1128
+				  title: "加载中",
1129
+				  mask: true,
1130
+				});
1131
+				post("/workerOrder/transfer ", {
1132
+						handoverId: this.handoverId,
1133
+						orderId: this.infoDATA.id,
1134
+						transferOrder: 1
1135
+				  })
1136
+				.then((result) => {
1137
+					this.SMFlag = true;
1138
+					uni.hideLoading();
1139
+					if (result.state == 200) {
1140
+						uni.showToast({
1141
+						  icon: "none",
1142
+						  title: result.info || "转派成功",
1143
+						});
1144
+						setTimeout(_=>{
1145
+							this.goBack()
1146
+						},2000)
1147
+					} 
1148
+				})
1149
+			},
1150
+			dialogClose() {
1151
+				this.$refs.alertDialog.close()
1152
+				this.speContent = null
1153
+			},
1079
       // 查看标本
1154
       // 查看标本
1080
       viewSpecimen(workOrder) {
1155
       viewSpecimen(workOrder) {
1081
         uni.navigateTo({
1156
         uni.navigateTo({
@@ -1580,6 +1655,51 @@
1580
           }
1655
           }
1581
         });
1656
         });
1582
       },
1657
       },
1658
+			// 获取标本是否转派配置
1659
+			getSpeTaskConfig(){
1660
+				let postData = {
1661
+					idx: 0,
1662
+					sum: 10,
1663
+					taskType: {
1664
+						simpleQuery: true,
1665
+						hosId: {
1666
+							id: this.hosId
1667
+						},
1668
+						ordinaryField: {
1669
+							key:"ordinary_field",
1670
+							value: "specimenPackage"
1671
+						}
1672
+					}
1673
+				};
1674
+				 
1675
+				post("/simple/data/fetchDataList/taskType", postData).then((result) => {
1676
+					if (result.status == 200) {
1677
+						this.tasktype = result.list[0] || {};
1678
+						this.getSpeConfig();
1679
+					}
1680
+				});
1681
+			},
1682
+			// 获取配置
1683
+			getSpeConfig() {
1684
+				let postData = {
1685
+					idx: 0,
1686
+					sum: 10,
1687
+					taskTypeConfig: {
1688
+						taskTypeDTO: {
1689
+							hosId: {
1690
+								id: this.hosId
1691
+							},
1692
+							ordinaryField: this.tasktype.ordinaryField
1693
+						}
1694
+					}
1695
+				};;
1696
+			  post("/simple/data/fetchDataList/taskTypeConfig", postData).then((result) => {
1697
+					if (result.status == 200) {
1698
+						this.configs = result.list[0] || {};
1699
+						this.sPehandoverOrder = this.configs.handoverOrder || null;
1700
+					}
1701
+			  });
1702
+			},
1583
       // 获取检查页面控制开关
1703
       // 获取检查页面控制开关
1584
       getTaskConfig(){
1704
       getTaskConfig(){
1585
         post("/simple/data/fetchDataList/taskTypeConfig", {
1705
         post("/simple/data/fetchDataList/taskTypeConfig", {
@@ -1861,6 +1981,8 @@
1861
         options.associationTypeValue == 'specimen' ||
1981
         options.associationTypeValue == 'specimen' ||
1862
         options.associationTypeValue == 'specimenPlan'
1982
         options.associationTypeValue == 'specimenPlan'
1863
       ) {
1983
       ) {
1984
+				// 到达 送达 执行中
1985
+				this.getSpeTaskConfig();
1864
         this.getInfoBySpecimen(id);
1986
         this.getInfoBySpecimen(id);
1865
       } else {
1987
       } else {
1866
         this.getInfo(id);
1988
         this.getInfo(id);

+ 1 - 1
pages/scanning_B/scanning_B.vue

@@ -19,7 +19,7 @@
19
     </view>
19
     </view>
20
 
20
 
21
     <view class="Scanning_cont" v-if="res.status == 200 || res.status == 666">
21
     <view class="Scanning_cont" v-if="res.status == 200 || res.status == 666">
22
-      <view>标本类型 : {{ infoDATA.stype.name || "-" }}</view>
22
+      <view>标本类型 : {{ infoDATA.stype.name || "-" }} <text v-if="res.data.tubeType">、</text> {{res.data.tubeType && res.data.tubeType.name}}</view>
23
       <view>标本编码 : {{ infoDATA.scode || "-" }}</view>
23
       <view>标本编码 : {{ infoDATA.scode || "-" }}</view>
24
       <view>标本状态 : <text :class="{ red: res.data.speState && res.data.speState.value == 8 }">{{ res.data.speState ? res.data.speState.name : "-" }}</text></view>
24
       <view>标本状态 : <text :class="{ red: res.data.speState && res.data.speState.value == 8 }">{{ res.data.speState ? res.data.speState.name : "-" }}</text></view>
25
       <view>申请科室 : {{ infoDATA.sickRoom || "-" }}</view>
25
       <view>申请科室 : {{ infoDATA.sickRoom || "-" }}</view>

+ 62 - 44
pages/scanning_Result/scanning_Result.vue

@@ -38,48 +38,51 @@
38
         (res.status == 200 && type == 'specimenPlan') ||
38
         (res.status == 200 && type == 'specimenPlan') ||
39
         (res.status == 200 && type == 'specimen')
39
         (res.status == 200 && type == 'specimen')
40
       ">
40
       ">
41
-      <view>{{ infoDATA.stype.name }}({{infoDATA.scode}})</view>
42
-      <view>检验项目 : {{ infoDATA.specimenDesc || "-" }}</view>
43
-      <view>
41
+			<view class="df"><view class="width-100">编码:</view> <text class="red">{{infoDATA.urgent==1?'急':''}}</text> {{infoDATA.scode}} {{infoDATA.speState && infoDATA.speState.name}}</view>
42
+      <view class="df"><view class="width-100">检验项目:</view> {{ infoDATA.specimenDesc || "-" }}</view>
43
+			<view class="df"><view class="width-100">类型:</view>{{ infoDATA.stype.name }} <text v-if="infoDATA.tubeType">、</text> {{infoDATA.tubeType && infoDATA.tubeType.name}}</view>
44
+      <view class="df">
45
+				<view class="width-100">科室:</view>
44
         {{ infoDATA.sickRoom ? infoDATA.sickRoom.dept : "" }}
46
         {{ infoDATA.sickRoom ? infoDATA.sickRoom.dept : "" }}
45
-        <text style="width: 4em;text-align: center;margin-left: 1em;margin-right: 1em;" class="newicon newicon-arrow-right-full"></text>
47
+        <text class="newicon newicon-arrow-right-full"></text>
46
         <text :class="{ red: isEndDeptRedShow }">{{ infoDATA.checkDept ? infoDATA.checkDept.dept : "" }}</text>
48
         <text :class="{ red: isEndDeptRedShow }">{{ infoDATA.checkDept ? infoDATA.checkDept.dept : "" }}</text>
47
       </view>
49
       </view>
48
-      <view>患者姓名 : {{ infoDATA.patientName}}({{infoDATA.bedNum}})</view>
49
-      <view>住院号 : {{ infoDATA.residenceNo || '-' }}</view>
50
+      <view class="df"><view class="width-100">患者姓名:</view>{{ infoDATA.patientName}}({{infoDATA.bedNum}})</view>
51
+      <view class="df"><view class="width-100">住院号:</view>{{ infoDATA.residenceNo || '-' }}</view>
50
     </view>
52
     </view>
51
 
53
 
52
     <view class="Scanning_cont" v-if="
54
     <view class="Scanning_cont" v-if="
53
         (res.status == 11111 && type == 'specimenPlan') ||
55
         (res.status == 11111 && type == 'specimenPlan') ||
54
         (res.status == 11111 && type == 'specimen')
56
         (res.status == 11111 && type == 'specimen')
55
       ">
57
       ">
56
-      <view>{{ infoDATA.stype.name }}({{infoDATA.scode}})</view>
57
-      <view>检验项目 : {{ infoDATA.specimenDesc || "-" }}</view>
58
-      <view>标本状态 : <text style="color: red">{{ infoDATA.speState ? infoDATA.speState.name : '' }}</text></view>
59
-      <view>
60
-        {{ infoDATA.sickRoom ? infoDATA.sickRoom.dept : "" }}
61
-        <text style="width: 4em;text-align: center;margin-left: 1em;margin-right: 1em;" class="newicon newicon-arrow-right-full"></text>
62
-        <text :class="{ red: isEndDeptRedShow }">{{ infoDATA.checkDept ? infoDATA.checkDept.dept : "" }}</text>
63
-      </view>
64
-      <view>患者姓名 : {{ infoDATA.patientName}}({{infoDATA.bedNum}})</view>
65
-      <view>住院号 : {{ infoDATA.residenceNo || '-' }}</view>
58
+			<view class="df"><view class="width-100">编码:</view> <text class="red">{{infoDATA.urgent==1?'急':''}}</text> {{infoDATA.scode}} {{infoDATA.speState && infoDATA.speState.name}}</view>
59
+			<view class="df"><view class="width-100">检验项目:</view> {{ infoDATA.specimenDesc || "-" }}</view>
60
+			<view class="df"><view class="width-100">类型:</view>{{ infoDATA.stype.name }} <text v-if="infoDATA.tubeType">、</text> {{infoDATA.tubeType && infoDATA.tubeType.name}}</view>
61
+			<view class="df">
62
+				<view class="width-100">科室:</view>
63
+			  {{ infoDATA.sickRoom ? infoDATA.sickRoom.dept : "" }}
64
+			  <text class="newicon newicon-arrow-right-full"></text>
65
+			  <text :class="{ red: isEndDeptRedShow }">{{ infoDATA.checkDept ? infoDATA.checkDept.dept : "" }}</text>
66
+			</view>
67
+			<view class="df"><view class="width-100">患者姓名:</view>{{ infoDATA.patientName}}({{infoDATA.bedNum}})</view>
68
+			<view class="df"><view class="width-100">住院号:</view>{{ infoDATA.residenceNo || '-' }}</view>
66
     </view>
69
     </view>
67
 
70
 
68
     <view class="Scanning_cont" v-if="
71
     <view class="Scanning_cont" v-if="
69
         (res.status == 200 && type == 'inspect') || type == 'patientTransport'
72
         (res.status == 200 && type == 'inspect') || type == 'patientTransport'
70
       ">
73
       ">
71
-      <view v-if="res.patient"> 患者姓名 : {{ res.patient || "-" }} </view>
72
-      <view v-if="res.residenceNo">
73
-        住院号 : {{ res.residenceNo || "-" }}
74
+      <view class="df" v-if="res.patient"> <view class="width-100">患者姓名:</view> {{ res.patient || "-" }} </view>
75
+      <view class="df" v-if="res.residenceNo">
76
+        <view class="width-100">住院号:</view> {{ res.residenceNo || "-" }}
74
       </view>
77
       </view>
75
-      <view v-if="res.deptName">
76
-        住院科室 : {{ res.deptName !== "undefined" ? res.deptName : "-" }}
78
+      <view class="df" v-if="res.deptName">
79
+        <view class="width-100">住院科室:</view> {{ res.deptName !== "undefined" ? res.deptName : "-" }}
77
       </view>
80
       </view>
78
-      <view v-if="res.bedNum">
79
-        床号 : {{ res.bedNum !== "undefined" ? res.bedNum : "-" }}
81
+      <view class="df" v-if="res.bedNum">
82
+        <view class="width-100">床号:</view> {{ res.bedNum !== "undefined" ? res.bedNum : "-" }}
80
       </view>
83
       </view>
81
-      <view v-if="res.data">
82
-        检查项目 :
84
+      <view class="df" v-if="res.data">
85
+        <view class="width-100">检查项目:</view>
83
         <text v-for="(data, i) in res.data" :key="i">{{
86
         <text v-for="(data, i) in res.data" :key="i">{{
84
           data.inspectName
87
           data.inspectName
85
         }}</text>
88
         }}</text>
@@ -106,18 +109,18 @@
106
       </view>
109
       </view>
107
     </view>
110
     </view>
108
     <view class="Scanning_cont" v-if="res.status == 200 && (type == 'drugsBag' || type == 'jPBag')">
111
     <view class="Scanning_cont" v-if="res.status == 200 && (type == 'drugsBag' || type == 'jPBag')">
109
-      <view> 药包类型 : {{(infoDATA.packType && infoDATA.packType !== 0) ? DRUGSBAG_TYPE[infoDATA.packType] : "-"}} </view>
110
-      <view v-if="type == 'drugsBag'"> 药包编码 : #{{ infoDATA.packid }} </view>
111
-      <view
112
+      <view class="df"> <view class="width-100">药包类型:</view>  {{(infoDATA.packType && infoDATA.packType !== 0) ? DRUGSBAG_TYPE[infoDATA.packType] : "-"}} </view>
113
+      <view class="df" v-if="type == 'drugsBag'"> <view class="width-100">药包编码:</view>  #{{ infoDATA.packid }} </view>
114
+      <view class="df"
112
         v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
115
         v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
113
-        交接人工号 : {{ accountObj.account }} </view>
114
-      <view
116
+        <view class="width-100">交接人工号:</view>  {{ accountObj.account }} </view>
117
+      <view class="df"
115
         v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
118
         v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
116
-        交接人姓名 : {{ accountObj.accountName }} </view>
117
-      <view v-if="type == 'jPBag'">
118
-        静配药包编码 : #{{ infoDATA.packid }}
119
+        <view class="width-100">交接人姓名:</view>  {{ accountObj.accountName }} </view>
120
+      <view class="df"v-if="type == 'jPBag'">
121
+        <view class="width-100">静配药包编码:</view>  #{{ infoDATA.packid }}
119
       </view>
122
       </view>
120
-      <view> 所属科室 : {{ infoDATA.target.dept || "-" }} </view>
123
+      <view class="df"> <view class="width-100">所属科室:</view>  {{ infoDATA.target.dept || "-" }} </view>
121
       <view v-if="infoType === 'drug-dsd-2' || infoType === 'jp-dsd-2'">
124
       <view v-if="infoType === 'drug-dsd-2' || infoType === 'jp-dsd-2'">
122
         工单已完成。
125
         工单已完成。
123
       </view>
126
       </view>
@@ -1280,13 +1283,15 @@
1280
 <style lang="less">
1283
 <style lang="less">
1281
   .Scanning_Result {
1284
   .Scanning_Result {
1282
     padding: 0 20rpx;
1285
     padding: 0 20rpx;
1283
-
1286
+		height: 96vh;
1287
+		position: relative;
1288
+		
1284
     .Scanning_top {
1289
     .Scanning_top {
1285
       .Scanning_top_icon {
1290
       .Scanning_top_icon {
1286
         width: 140rpx;
1291
         width: 140rpx;
1287
         height: 140rpx;
1292
         height: 140rpx;
1288
         margin: 0 auto;
1293
         margin: 0 auto;
1289
-        margin-top: 116rpx;
1294
+        margin-top: 40rpx;
1290
         border-radius: 50%;
1295
         border-radius: 50%;
1291
         line-height: 140rpx;
1296
         line-height: 140rpx;
1292
 
1297
 
@@ -1321,12 +1326,23 @@
1321
 
1326
 
1322
     .Scanning_cont {
1327
     .Scanning_cont {
1323
       font-size: 32rpx;
1328
       font-size: 32rpx;
1324
-      text-align: center;
1325
-
1326
-      view {
1327
-        margin-bottom: 16rpx;
1328
-      }
1329
-
1329
+      // text-align: center;
1330
+			margin-top: 40rpx;
1331
+			.df{
1332
+				display: flex;
1333
+				align-items: center;
1334
+				margin-bottom: 14rpx;
1335
+				
1336
+				.newicon{
1337
+					margin: 0 8rpx;
1338
+				}
1339
+			}
1340
+			
1341
+			.width-100{
1342
+				width: 160rpx;
1343
+				font-weight: 600;
1344
+			}
1345
+			
1330
       .Scanning_cont_center {
1346
       .Scanning_cont_center {
1331
         text-align: center;
1347
         text-align: center;
1332
       }
1348
       }
@@ -1366,12 +1382,14 @@
1366
     .foot_btn_spe {
1382
     .foot_btn_spe {
1367
       line-height: 88rpx;
1383
       line-height: 88rpx;
1368
       height: 100rpx;
1384
       height: 100rpx;
1369
-      margin-top: 40rpx;
1385
+      // margin-top: 40rpx;
1370
       text-align: center;
1386
       text-align: center;
1371
       display: flex;
1387
       display: flex;
1372
       justify-content: space-between;
1388
       justify-content: space-between;
1373
       flex-wrap: wrap;
1389
       flex-wrap: wrap;
1374
-
1390
+			position: absolute;
1391
+			bottom: 220rpx;
1392
+			
1375
       &::after {
1393
       &::after {
1376
         content: '';
1394
         content: '';
1377
         flex: 1;
1395
         flex: 1;

+ 125 - 65
pages/specimenChecking/specimenChecking.vue

@@ -1,17 +1,30 @@
1
 <template>
1
 <template>
2
   <view class="specimenChecking">
2
   <view class="specimenChecking">
3
     <view class="title">请您确认一下科室标本数量!</view>
3
     <view class="title">请您确认一下科室标本数量!</view>
4
-    <view class="page_item_wrap" v-for="item in list" :key="item.deptId" @click="gotoDetail(item)">
4
+    <view class="page_item_wrap" v-for="item in list" :key="item.deptId">
5
       <view class="page_item">
5
       <view class="page_item">
6
         <view class="page_item_top">
6
         <view class="page_item_top">
7
-          <view class="page_item_top-inner">
8
-            <view class="page_item_top_L">
9
-              <view class="L_text">{{item.deptName}}</view>
10
-            </view>
11
-            <view class="page_item_top_R">
12
-              <view class="L_iocn">{{item.speNum}}</view>
13
-            </view>
14
-          </view>
7
+					<uni-collapse :border="false">
8
+						<uni-collapse-item titleBorder="none">
9
+							<template v-slot:title>
10
+								<view class="page_item_cont_title_coll" @click.stop="gotoDetail(item)">
11
+									<view class="page_item_top-inner">
12
+										<!-- <view class="page_item_top_L"> -->
13
+											<view class="L_text">{{item.deptName}}</view>
14
+										<!-- </view> -->
15
+										<view class="page_item_top_R">
16
+											<view class="L_iocn">{{item.speNum}}</view>
17
+										</view>
18
+									</view>
19
+								</view>
20
+							</template>
21
+							<view class="content">
22
+								<view class="list" v-for="x in item.tubeTypeDataList" @click="viewSpe(item, x.tubeTypeId)">
23
+									{{x.tubeTypeName}}:<text class="underline-item">{{x.speNum}}</text>
24
+								</view>
25
+							</view>
26
+						</uni-collapse-item>
27
+					</uni-collapse>
15
         </view>
28
         </view>
16
         <!-- <view class="page_item_cont">
29
         <!-- <view class="page_item_cont">
17
           <view class="page_item_cont_T">
30
           <view class="page_item_cont_T">
@@ -70,6 +83,17 @@
70
       };
83
       };
71
     },
84
     },
72
     methods: {
85
     methods: {
86
+			viewSpe(item, tubeTypeId){
87
+				this.speNumChange = item.speNum;
88
+				this.changeSpeObj = {
89
+				  infoDATA: this.msg,
90
+				  id: item.deptId,
91
+				  endDepts:this.msg.targetDept,
92
+				}
93
+				uni.navigateTo({
94
+				  url: `../../pages/specimenCheckingDetail/specimenCheckingDetail?infoDATA=${encodeURIComponent(JSON.stringify(this.changeSpeObj.infoDATA))}&id=${this.changeSpeObj.id}&endDepts=${this.changeSpeObj.endDepts}&tubeTypeId=${tubeTypeId}`,
95
+				});
96
+			},
73
       //确认数量并建单-返回
97
       //确认数量并建单-返回
74
       know() {
98
       know() {
75
         this.models.disjunctor = false;
99
         this.models.disjunctor = false;
@@ -494,6 +518,14 @@
494
   };
518
   };
495
 </script>
519
 </script>
496
 <style lang="less" scoped>
520
 <style lang="less" scoped>
521
+	/deep/ .uni-collapse-item--border{
522
+		border-bottom-color: #fff !important;
523
+	}
524
+	
525
+	/deep/ .uni-collapse-item__title-arrow{
526
+		margin-right: 0 !important;
527
+	}
528
+	
497
   .specimenChecking {
529
   .specimenChecking {
498
     padding-bottom: 100rpx;
530
     padding-bottom: 100rpx;
499
 
531
 
@@ -572,64 +604,92 @@
572
         }
604
         }
573
 
605
 
574
         .page_item_top {
606
         .page_item_top {
575
-          height: 88rpx;
607
+          // height: 88rpx;
576
           // border-bottom: 2rpx dashed #e5e9ed;
608
           // border-bottom: 2rpx dashed #e5e9ed;
577
-          padding: 0 16rpx;
578
-
579
-          .page_item_top-inner {
580
-            display: flex;
581
-            justify-content: space-between;
582
-            align-items: center;
583
-            height: 100%;
584
-
585
-            .page_item_top_L {
586
-              .emergencys {
587
-                background: #ff3b53 !important;
588
-                width: 124rpx !important;
589
-              }
590
-
591
-              .emergency {
592
-                background: #ff3b53 !important;
593
-              }
594
-
595
-              .emergency1 {
596
-                background: #49b856 !important;
597
-              }
598
-
599
-              .page_item_cont_start {
600
-                text-align: center;
601
-                height: 44rpx;
602
-                width: 104rpx;
603
-                line-height: 44rpx;
604
-                border-radius: 8rpx;
605
-                background: #49b856;
606
-                color: #fff;
607
-                display: inline-block;
608
-              }
609
-
610
-              .L_time {
611
-                color: #6cc076;
612
-                font-size: 32rpx;
613
-              }
614
-
615
-              .L_text {
616
-                font-size: 32rpx;
617
-                font-weight: 700;
618
-              }
619
-            }
620
-
621
-            .page_item_top_R {
622
-              font-size: 32rpx;
623
-
624
-              .L_iocn {
625
-                color: rgb(7, 134, 60);
626
-                font-size: 36rpx;
627
-                font-weight: 700;
628
-              }
629
-            }
630
-          }
609
+          padding: 20rpx 16rpx;
610
+					
611
+					.page_item_cont_title_coll{
612
+						display: flex;
613
+						justify-content: space-between;
614
+						align-items: center;
615
+						margin-right: 8rpx;
616
+						
617
+						.page_item_top-inner {
618
+						  display: flex;
619
+						  justify-content: space-between;
620
+						  align-items: center;
621
+						  height: 100%;
622
+							width: 100%;
623
+							
624
+						  .page_item_top_L {
625
+						    .emergencys {
626
+						      background: #ff3b53 !important;
627
+						      width: 124rpx !important;
628
+						    }
629
+						
630
+						    .emergency {
631
+						      background: #ff3b53 !important;
632
+						    }
633
+						
634
+						    .emergency1 {
635
+						      background: #49b856 !important;
636
+						    }
637
+						
638
+						    .page_item_cont_start {
639
+						      text-align: center;
640
+						      height: 44rpx;
641
+						      width: 104rpx;
642
+						      line-height: 44rpx;
643
+						      border-radius: 8rpx;
644
+						      background: #49b856;
645
+						      color: #fff;
646
+						      display: inline-block;
647
+						    }
648
+						
649
+						    .L_time {
650
+						      color: #6cc076;
651
+						      font-size: 32rpx;
652
+						    }
653
+						
654
+						    .L_text {
655
+						      font-size: 32rpx;
656
+						      font-weight: 700;
657
+						    }
658
+						  }
659
+						
660
+						  .page_item_top_R {
661
+						    font-size: 32rpx;
662
+						
663
+						    .L_iocn {
664
+						      color: rgb(7, 134, 60);
665
+						      font-size: 36rpx;
666
+						      font-weight: 700;
667
+						    }
668
+						  }
669
+						}
670
+					}
671
+					
672
+					.content{
673
+						display: flex;
674
+						flex-wrap: wrap;
675
+						.list{
676
+							font-size: 28rpx;
677
+							height: 60rpx;
678
+							line-height: 60rpx;
679
+							width: 50%;
680
+							border-bottom: 1rpx solid #E6E6E6;
681
+							&:last-child{
682
+								border-bottom: none;
683
+							}
684
+						}
685
+					}
631
         }
686
         }
632
-
687
+				
688
+				.underline-item{
689
+					// text-decoration: underline;
690
+					// margin-right: 40rpx;
691
+				}
692
+				
633
         .page_item_cont {
693
         .page_item_cont {
634
           min-height: 90rpx;
694
           min-height: 90rpx;
635
           padding: 0 16rpx;
695
           padding: 0 16rpx;

+ 16 - 2
pages/specimenCheckingDetail/specimenCheckingDetail.vue

@@ -64,7 +64,7 @@
64
       <view class="R-l"></view>
64
       <view class="R-l"></view>
65
     </view>
65
     </view>
66
     <view class="foot_btn2">
66
     <view class="foot_btn2">
67
-      <view class="btn2" @click="showChangeSpe()">修改数量</view>
67
+      <view class="btn2" @click="showChangeSpe()" v-if="!tubeTypeId">修改数量</view>
68
       <view class="btn2" @click="goto()">返回</view>
68
       <view class="btn2" @click="goto()">返回</view>
69
     </view>
69
     </view>
70
     <!-- 修改标本数量弹窗 -->
70
     <!-- 修改标本数量弹窗 -->
@@ -122,6 +122,7 @@
122
         models: {
122
         models: {
123
           disjunctor: false,
123
           disjunctor: false,
124
         },
124
         },
125
+				tubeTypeId: null //试管类型
125
       };
126
       };
126
     },
127
     },
127
     methods: {
128
     methods: {
@@ -376,6 +377,7 @@
376
           checkDept: this.options.endDepts, //终点科室
377
           checkDept: this.options.endDepts, //终点科室
377
           transDept: Number(this.msg.startDept), //起点科室id
378
           transDept: Number(this.msg.startDept), //起点科室id
378
           gdId: this.msg.uuid, //工单id或uuid
379
           gdId: this.msg.uuid, //工单id或uuid
380
+					tubeTypeId: null //试管类型id
379
         };
381
         };
380
         if (this.selectDeptId != "undefined") {
382
         if (this.selectDeptId != "undefined") {
381
           if (Number(this.msg.startDept) != Number(this.selectDeptId)) {
383
           if (Number(this.msg.startDept) != Number(this.selectDeptId)) {
@@ -385,6 +387,11 @@
385
             }
387
             }
386
           }
388
           }
387
         }
389
         }
390
+				if(this.tubeTypeId){
391
+					postData.tubeTypeId = this.tubeTypeId
392
+				}else{
393
+					delete postData.tubeTypeId
394
+				}
388
         post(`/api/getTransDeptSpecimens`, postData).then((res) => {
395
         post(`/api/getTransDeptSpecimens`, postData).then((res) => {
389
           uni.hideLoading();
396
           uni.hideLoading();
390
           uni.stopPullDownRefresh();
397
           uni.stopPullDownRefresh();
@@ -650,8 +657,15 @@
650
     onLoad(options) {
657
     onLoad(options) {
651
       console.log(options, "快捷建单");
658
       console.log(options, "快捷建单");
652
       this.options = options;
659
       this.options = options;
653
-      this.msg = JSON.parse(options.infoDATA);
660
+			if(options.infoDATA){
661
+				this.msg = JSON.parse(options.infoDATA);
662
+			}
654
       this.selectDeptId = options.id;
663
       this.selectDeptId = options.id;
664
+			if(options.tubeTypeId){
665
+				this.tubeTypeId = options.tubeTypeId
666
+			}else{
667
+				this.tubeTypeId = null
668
+			}
655
       // this.msg = JSON.parse(options.infoDATA);
669
       // this.msg = JSON.parse(options.infoDATA);
656
       // this.targetDeptShow = this.msg.targetDeptShow.split(",");
670
       // this.targetDeptShow = this.msg.targetDeptShow.split(",");
657
       this.getList();
671
       this.getList();

+ 38 - 7
pages/specimenHandoverNew/specimenHandoverNew.vue

@@ -25,6 +25,14 @@
25
           <view class="name" v-if="type === 'specimenDesc'">
25
           <view class="name" v-if="type === 'specimenDesc'">
26
             项目名称<text class="red">({{typeList.specimenDesc.titleCount}})</text>
26
             项目名称<text class="red">({{typeList.specimenDesc.titleCount}})</text>
27
           </view>
27
           </view>
28
+					<view class="name" v-if="type === 'speTubeType'">
29
+					  试管类型<text class="red">({{typeList.specimenDesc.titleCount}})</text>
30
+					</view>
31
+					<view class="value" v-if="type === 'speTubeType'">
32
+					  <view>
33
+					    标本数量<text class="red">({{typeList.patient.count}})</text>
34
+					  </view>
35
+					</view>
28
           <view class="value" v-if="type === 'patient'">
36
           <view class="value" v-if="type === 'patient'">
29
             <view>
37
             <view>
30
               标本数量<text class="red">({{typeList.patient.count}})</text>
38
               标本数量<text class="red">({{typeList.patient.count}})</text>
@@ -44,7 +52,17 @@
44
             <view class="name" v-if="type === 'specimenDesc'">
52
             <view class="name" v-if="type === 'specimenDesc'">
45
               {{item.specimen_desc}}
53
               {{item.specimen_desc}}
46
             </view>
54
             </view>
47
-            <view class="value">
55
+						<view class="name" v-if="type === 'speTubeType'">
56
+						  {{item.tubeTypeName}}
57
+						</view>
58
+						
59
+						<view class="value" v-if="type === 'speTubeType'">
60
+						  <view>
61
+						    {{item.count}}
62
+						  </view>
63
+						</view>
64
+						
65
+            <view class="value" v-if="type != 'speTubeType'">
48
               <view>
66
               <view>
49
                 {{item.count}}
67
                 {{item.count}}
50
               </view>
68
               </view>
@@ -87,6 +105,12 @@
87
             count: 0,
105
             count: 0,
88
             titleCount: 0,
106
             titleCount: 0,
89
           },
107
           },
108
+					"speTubeType":{
109
+						id: -3,
110
+						name: '试管类型',
111
+						count: 0,
112
+						titleCount: 0,
113
+					},
90
           "specimenDesc": {
114
           "specimenDesc": {
91
             id: -2,
115
             id: -2,
92
             name: '检验项目',
116
             name: '检验项目',
@@ -246,7 +270,7 @@
246
       },
270
       },
247
       clickTab(key){
271
       clickTab(key){
248
         this.type = key;
272
         this.type = key;
249
-        this.initData();
273
+				this.getInfo(key);
250
       },
274
       },
251
       onClick(){
275
       onClick(){
252
         this.allStart();
276
         this.allStart();
@@ -283,7 +307,8 @@
283
       },
307
       },
284
       initData(){
308
       initData(){
285
         this.getInfo('patient');
309
         this.getInfo('patient');
286
-        this.getInfo('specimenDesc');
310
+				// this.getInfo('speTubeType');
311
+    //     this.getInfo('specimenDesc');
287
       },
312
       },
288
     },
313
     },
289
 		onShow(){
314
 		onShow(){
@@ -292,7 +317,7 @@
292
 			// #endif
317
 			// #endif
293
 		},
318
 		},
294
     onLoad(options) {
319
     onLoad(options) {
295
-      console.log(options, "result");
320
+      console.log(JSON.parse(options.model), "result");
296
       this.queryObj = options;
321
       this.queryObj = options;
297
       this.initData();
322
       this.initData();
298
       // #ifdef APP-PLUS
323
       // #ifdef APP-PLUS
@@ -306,7 +331,7 @@
306
 </script>
331
 </script>
307
 <style lang="less" scoped>
332
 <style lang="less" scoped>
308
   .Scanning_Result {
333
   .Scanning_Result {
309
-    height: 100vh;
334
+    height: 98vh;
310
     display: flex;
335
     display: flex;
311
     flex-direction: column;
336
     flex-direction: column;
312
     background-color: #fafbfd;
337
     background-color: #fafbfd;
@@ -410,6 +435,11 @@
410
             border-bottom: none;
435
             border-bottom: none;
411
             flex-shrink: 0;
436
             flex-shrink: 0;
412
           }
437
           }
438
+					
439
+					.underline{
440
+						text-decoration: underline;
441
+					}
442
+					
413
           .name,
443
           .name,
414
           .value{
444
           .value{
415
             padding: 0 40rpx;
445
             padding: 0 40rpx;
@@ -430,11 +460,12 @@
430
       line-height: 66rpx;
460
       line-height: 66rpx;
431
       display: flex;
461
       display: flex;
432
       justify-content: center;
462
       justify-content: center;
433
-
463
+			padding: 0 20rpx;
464
+			
434
       .btn {
465
       .btn {
435
         height: 66rpx;
466
         height: 66rpx;
436
         flex: 1;
467
         flex: 1;
437
-        margin-right: 1%;
468
+        margin-right: 4%;
438
         background-image: linear-gradient(to right, #72c172, #3bb197);
469
         background-image: linear-gradient(to right, #72c172, #3bb197);
439
         color: #fff;
470
         color: #fff;
440
         border-radius: 8rpx;
471
         border-radius: 8rpx;

+ 11 - 8
pages/specimenOrderComplete/specimenOrderComplete.vue

@@ -12,13 +12,15 @@
12
     <view class="Scanning_cont">
12
     <view class="Scanning_cont">
13
       <view>您已到达{{queryObj.deptName}},请核对以下数量</view>
13
       <view>您已到达{{queryObj.deptName}},请核对以下数量</view>
14
       <view class="table_head">
14
       <view class="table_head">
15
-        <view>科室</view>
16
-        <view>是否配送完成</view>
15
+        <view>科室名称</view>
16
+				<view>标本数量</view>
17
+        <view>是否签到</view>
17
       </view>
18
       </view>
18
       <view class="table_bodys">
19
       <view class="table_bodys">
19
         <view class="table_body" v-for="(item, index) in dataList" :key="index">
20
         <view class="table_body" v-for="(item, index) in dataList" :key="index">
20
           <view>{{item.dept}}</view>
21
           <view>{{item.dept}}</view>
21
-          <view :class="{red: item.all != item.complete}">{{item.all == item.complete ? '是' : '否'}}</view>
22
+					<view>{{item.complete}}/{{item.all}}</view>
23
+          <view :class="item.all != item.complete ? 'red' : 'green'">{{item.all == item.complete ? '是' : '否'}}</view>
22
         </view>
24
         </view>
23
       </view>
25
       </view>
24
     </view>
26
     </view>
@@ -101,6 +103,9 @@
101
   };
103
   };
102
 </script>
104
 </script>
103
 <style lang="less" scoped>
105
 <style lang="less" scoped>
106
+	.green{
107
+		color: #35b34a !important;
108
+	}
104
   .Scanning_Result {
109
   .Scanning_Result {
105
     padding: 0 20rpx;
110
     padding: 0 20rpx;
106
     display: flex;
111
     display: flex;
@@ -175,17 +180,15 @@
175
       }
180
       }
176
 
181
 
177
       .table_body{
182
       .table_body{
178
-        background: #F3FAF7;
179
-        border-radius: 8px;
180
-        border: 1px solid #E9E9E9;
183
+        // background: #F3FAF7;
184
+        border-bottom: 1px solid #E9E9E9;
181
         display: flex;
185
         display: flex;
182
-        margin-bottom: 20rpx;
183
         padding: 30rpx 20rpx;
186
         padding: 30rpx 20rpx;
184
         view {
187
         view {
185
           line-height: 1;
188
           line-height: 1;
186
           flex: 1;
189
           flex: 1;
187
           color: #555;
190
           color: #555;
188
-          font-size: 38rpx;
191
+          font-size: 28rpx;
189
           display: flex;
192
           display: flex;
190
           justify-content: center;
193
           justify-content: center;
191
           align-items: center;
194
           align-items: center;

+ 329 - 0
pages/viewSpe/viewSpe.vue

@@ -0,0 +1,329 @@
1
+<template>
2
+  <view class="pharmacyDetails">
3
+    <view class="pharmacyDetails_title">检验科室标本信息</view>
4
+    <view class="page_item footerOtherMargin">
5
+      <view class="page_item_wrap" v-for="(spe, i) in specimens" :key="spe.id">
6
+        <specimenListItem :i="i" :item="spe"></specimenListItem>
7
+        <view class="L-l"></view>
8
+        <view class="R-l"></view>
9
+      </view>
10
+    </view>
11
+    <view class="foot_btn2 footerPadding">
12
+      <view class="btn2" @click="goBack">返回</view>
13
+    </view>
14
+  </view>
15
+</template>
16
+<script>
17
+  import {
18
+    post,
19
+    webHandle
20
+  } from "../../http/http.js";
21
+  export default {
22
+    data() {
23
+      return {
24
+        queryObj: {}, //路由传递过来的数据
25
+        isScan: false,//true是已扫描标本,false是未扫描标本
26
+        workOrderId: -1,
27
+        deptCode: '',
28
+        specimens: [],
29
+      };
30
+    },
31
+    methods: {
32
+      // 返回
33
+      goBack() {
34
+        uni.navigateBack();
35
+      },
36
+      // 获取已扫描或未扫描标本信息
37
+      getNoScanSpecimen(isScan) {
38
+        let postData = {
39
+          gdIds: this.workOrderId,
40
+          currentPage: 0,
41
+          pageSize: 999,
42
+					tubeTypeId:this.tubeTypeId
43
+        };
44
+        
45
+        if(this.queryObj.specimensCheck){
46
+          //标本核对页面过来的
47
+          if(this.queryObj.deptName){
48
+            // 标本核对,已扫描总数
49
+            postData.deptQrCode = this.deptCode||undefined;
50
+            postData.specimensCheck = 1;
51
+          }
52
+        }else{
53
+          postData.deptQrCode = this.deptCode||undefined;
54
+        }
55
+        // 是否是已扫描
56
+        if(isScan && !this.queryObj.noScan){
57
+          // 显示已扫描,但添加scanned参数
58
+          postData.scanned = 1;
59
+        }
60
+        uni.showLoading({
61
+          title: "加载中",
62
+          mask: true,
63
+        });
64
+        post("/api/noScanSpecimenData", postData).then((res) => {
65
+          uni.hideLoading();
66
+          if (res.data) {
67
+            this.specimens = res.data;
68
+          }
69
+        });
70
+      },
71
+    },
72
+    onLoad(options) {
73
+      console.log(options);
74
+      this.queryObj = options;
75
+      this.workOrderId = JSON.parse(options.workOrderId);
76
+      this.deptCode = options.deptCode;
77
+			this.tubeTypeId = options.tubeTypeId;
78
+      this.isScan = Boolean(options.isScan);
79
+      this.getNoScanSpecimen(this.isScan);
80
+      // #ifdef APP-PLUS
81
+      webHandle("no", "app");
82
+      // #endif
83
+      // #ifdef H5
84
+      webHandle("no", "wx");
85
+      // #endif
86
+    },
87
+  };
88
+</script>
89
+<style lang="less" scoped>
90
+  .pharmacyDetails {
91
+    background-color: rgb(249, 250, 251);
92
+    padding-top: 50rpx;
93
+    height: 100%;
94
+    box-sizing: border-box;
95
+
96
+    .pharmacyDetails_title {
97
+      font-size: 46rpx;
98
+      font-weight: 550;
99
+      text-align: center;
100
+    }
101
+
102
+    .page_item_wrap {
103
+      position: relative;
104
+      margin-top: 32rpx;
105
+
106
+      .page_item {
107
+        margin-top: 16rpx;
108
+        margin-bottom: 124rpx;
109
+        background: #fff;
110
+        border-radius: 8rpx;
111
+        margin: 0 20rpx;
112
+        border: 2rpx solid #e5e9ed;
113
+        position: relative;
114
+        overflow: hidden;
115
+        padding: 0 16rpx;
116
+
117
+        .L {
118
+          width: 40rpx;
119
+          height: 40rpx;
120
+          border-radius: 50%;
121
+          background: #f9fafb;
122
+          position: absolute;
123
+          left: -20rpx;
124
+          top: 68rpx;
125
+          border: 2rpx solid #e5e9ed;
126
+        }
127
+
128
+        .R {
129
+          width: 40rpx;
130
+          height: 40rpx;
131
+          border-radius: 50%;
132
+          background: #f9fafb;
133
+          position: absolute;
134
+          float: right;
135
+          right: -20rpx;
136
+          top: 68rpx;
137
+          border: 2rpx solid #e5e9ed;
138
+        }
139
+
140
+        .page_item_top {
141
+          height: 88rpx;
142
+          border-bottom: 2rpx dashed #e5e9ed;
143
+          padding: 0 16rpx;
144
+
145
+          .page_item_top-inner {
146
+            display: flex;
147
+            justify-content: space-between;
148
+            align-items: center;
149
+            height: 100%;
150
+
151
+            .page_item_top_L {
152
+              .L_text {
153
+                font-size: 32rpx;
154
+                font-weight: 700;
155
+              }
156
+            }
157
+
158
+            .page_item_top_R {
159
+              font-size: 32rpx;
160
+
161
+              .L_iocn {
162
+                color: rgb(7, 134, 60);
163
+                font-size: 36rpx;
164
+                font-weight: 700;
165
+              }
166
+            }
167
+          }
168
+        }
169
+
170
+        .page_item_cont {
171
+          min-height: 90rpx;
172
+          padding: 0 16rpx;
173
+          text-align: left;
174
+          position: relative;
175
+
176
+          .text_big {
177
+            font-size: 32rpx;
178
+            font-weight: 700;
179
+            margin-top: 10rpx;
180
+          
181
+            p {
182
+              font-weight: 700;
183
+              line-height: 1.5;
184
+            }
185
+          }
186
+
187
+          .line {
188
+            height: 20rpx;
189
+            width: 2rpx;
190
+            border-left: 2rpx solid #e5e9ed;
191
+            position: absolute;
192
+            top: 82rpx;
193
+            left: 40rpx;
194
+          }
195
+
196
+          .page_item_cont_T {
197
+            padding-top: 28rpx;
198
+            padding-bottom: 28rpx;
199
+            font-size: 28rpx;
200
+
201
+            .page_item_cont_title {
202
+              height: 100%;
203
+              font-size: 32rpx;
204
+              display: flex;
205
+              justify-content: space-between;
206
+              align-items: center;
207
+            }
208
+          }
209
+
210
+          .page_item_cont_B {
211
+            padding-top: 28rpx;
212
+            margin-bottom: 28rpx;
213
+
214
+            .page_item_cont_title {
215
+              font-size: 32rpx;
216
+              display: flex;
217
+              justify-content: space-between;
218
+              align-items: center;
219
+            }
220
+          }
221
+
222
+          .page_item_cont_C {
223
+            margin-bottom: 28rpx;
224
+
225
+            .page_item_cont_title_C {
226
+              font-size: 32rpx;
227
+              display: flex;
228
+              justify-content: space-between;
229
+              align-items: center;
230
+            }
231
+          }
232
+
233
+          #infos {
234
+            display: none;
235
+          }
236
+        }
237
+      }
238
+
239
+      .L-l {
240
+        width: 2rpx;
241
+        height: 40rpx;
242
+        background: #f9fafb;
243
+        position: absolute;
244
+        left: 20rpx;
245
+        top: 72rpx;
246
+      }
247
+
248
+      .R-l {
249
+        width: 2rpx;
250
+        height: 40rpx;
251
+        background: #f9fafb;
252
+        position: absolute;
253
+        right: 20rpx;
254
+        top: 72rpx;
255
+      }
256
+    }
257
+
258
+    .cube-toolbar-item {
259
+      width: 710rpx;
260
+      height: 68rpx;
261
+      line-height: 68rpx;
262
+      position: fixed;
263
+      left: 20rpx;
264
+      bottom: 160rpx;
265
+      border-radius: 8rpx;
266
+      background: linear-gradient(to right, #72c172, #3bb197);
267
+      font-size: 36rpx;
268
+      color: #fff;
269
+      text-align: center;
270
+    }
271
+
272
+    .btn-wrap {
273
+      display: flex;
274
+      justify-content: space-between;
275
+      position: fixed;
276
+      left: 20rpx;
277
+      bottom: 160rpx;
278
+    }
279
+
280
+    .cube-toolbar-item1 {
281
+      width: 350rpx;
282
+      height: 68rpx;
283
+      line-height: 68rpx;
284
+      border-radius: 8rpx;
285
+      margin: 0 5rpx;
286
+      background: linear-gradient(to right, #72c172, #3bb197);
287
+      font-size: 36rpx;
288
+      color: #fff;
289
+      text-align: center;
290
+    }
291
+
292
+    .foot_btn2 {
293
+      position: fixed;
294
+      bottom: 0;
295
+      right: 20rpx;
296
+      left: 20rpx;
297
+      line-height: 66rpx;
298
+      height: 100rpx;
299
+      border-top: 2rpx solid #e5e9ed;
300
+      background: #f9fafb;
301
+      display: flex;
302
+      justify-content: space-between;
303
+
304
+      .btn2 {
305
+        height: 66rpx;
306
+        width: 100%;
307
+        margin: 0 1%;
308
+        background-image: linear-gradient(to right, #72c172, #3bb197);
309
+        color: #fff;
310
+        border-radius: 8rpx;
311
+        font-size: 32rpx;
312
+        margin-top: 16rpx;
313
+        text-align: center;
314
+      }
315
+
316
+      .btn3 {
317
+        height: 66rpx;
318
+        width: 48%;
319
+        margin: 0 1%;
320
+        background-image: linear-gradient(to right, #72c172, #3bb197);
321
+        color: #fff;
322
+        border-radius: 8rpx;
323
+        font-size: 32rpx;
324
+        margin-top: 16rpx;
325
+        text-align: center;
326
+      }
327
+    }
328
+  }
329
+</style>