seimin преди 4 дни
родител
ревизия
a8133967b1

+ 7 - 0
App.vue

@@ -212,4 +212,11 @@
212 212
       flex: 1;
213 213
     }
214 214
   }
215
+  .ellipsis-multiline {
216
+    display: -webkit-box;
217
+    -webkit-box-orient: vertical;
218
+    -webkit-line-clamp: 2; /* 定义显示的行数 */
219
+    overflow: hidden;
220
+    text-overflow: ellipsis;
221
+  }
215 222
 </style>

+ 74 - 23
pages/checkAfterBigScreen/checkAfterBigScreen.vue

@@ -19,21 +19,29 @@
19 19
           检验科室标本数量:
20 20
         </view>
21 21
         <view class="page_item_cont_title" v-for="(item, i) in info.data" :key="i">
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>
22
+          <template v-if="taskTypeConfig.speExpandTube == 1">
23
+            <uni-collapse :border="false">
24
+              <uni-collapse-item titleBorder="none" :open="taskTypeConfig.speDefaultExpandTube == 1">
25
+                <template v-slot:title>
26
+                  <view class="page_item_cont_title_coll">
27
+                    <view>{{item.deptName}}</view>
28
+                    <view class="text_big" style="padding-right: 20rpx;" @click.stop="goToSpeDetail(item.deptName,item.deptQrCode)"><text class="underline">{{item.speCount}}</text>只</view>
29
+                  </view>
30
+                </template>
31
+                <view class="content">
32
+                  <view class="list" v-for="x in item.tubeTypeData" :key="x.id" @click="viewSpe(item.deptName,item.deptQrCode,x.tubeTypeId)">
33
+                    {{x.tubeTypeName}}:<text class="underline-item">{{x.speCount}}</text>
34
+                  </view>
35
+                </view>
36
+              </uni-collapse-item>
37
+            </uni-collapse>
38
+          </template>
39
+          <template v-else>
40
+            <view class="page_item_cont_title_coll" style="width: 100%;">
41
+            	<view>{{item.deptName}}</view>
42
+            	<view class="text_big" @click.stop="goToSpeDetail(item.deptName,item.deptQrCode)"><text class="underline">{{item.speCount}}</text>只</view>
43
+            </view>
44
+          </template>
37 45
         </view>
38 46
       </view>
39 47
     </view>
@@ -60,6 +68,8 @@
60 68
   export default {
61 69
     data() {
62 70
       return {
71
+        hosId: uni.getStorageSync('userData').user.currentHospital.id,
72
+        taskTypeConfig: {},
63 73
         // 弹窗model
64 74
         models: {
65 75
           disjunctor: false,
@@ -73,6 +83,45 @@
73 83
       };
74 84
     },
75 85
     methods: {
86
+      // 获取配置
87
+			getSpecimenTaskTypeConfig(){
88
+        uni.showLoading({
89
+          title: "加载中",
90
+          mask: true,
91
+        });
92
+        post("/simple/data/fetchDataList/taskTypeConfig", {
93
+          "idx": 0,
94
+          "sum": 1,
95
+          "taskTypeConfig": {
96
+            "taskTypeDTO": {
97
+              "hosId": {
98
+                  "id": this.hosId
99
+              },
100
+              "associationType": {
101
+                  "key": "association_types",
102
+                  "value": "specimen"
103
+              }
104
+            }
105
+          }
106
+        }).then((result) => {
107
+          uni.hideLoading();
108
+          if (result.status == 200) {
109
+            if(result.list.length){
110
+              this.taskTypeConfig = result.list[0] || {};
111
+            }else{
112
+              uni.showToast({
113
+                icon: "none",
114
+                title: "请配置标本配送任务类型!",
115
+              });
116
+            }
117
+          } else {
118
+            uni.showToast({
119
+              icon: "none",
120
+              title: result.msg || "接口获取数据失败!",
121
+            });
122
+          }
123
+        });
124
+      },
76 125
 			viewSpe(deptName, qrCode, id){
77 126
 				uni.navigateTo({
78 127
 				  url: `../viewSpe/viewSpe?deptName=${deptName}&workOrderId=${this.queryObj.ids}&deptCode=${qrCode}&tubeTypeId=${id}&isScan=1&specimensCheck=1&noScan=1`,
@@ -231,6 +280,7 @@
231 280
       console.log(options);
232 281
       this.queryObj = options;
233 282
       this.getInfo(this.queryObj.ids);
283
+      this.getSpecimenTaskTypeConfig();
234 284
       // #ifdef APP-PLUS
235 285
       webHandle("no", "app");
236 286
       // #endif
@@ -244,7 +294,7 @@
244 294
 	/deep/ .uni-collapse-item--border{
245 295
 		border-bottom-color: #fff !important;
246 296
 	}
247
-	
297
+
248 298
 	/deep/ .uni-collapse-item__title-arrow{
249 299
 		margin-right: 0 !important;
250 300
 	}
@@ -263,7 +313,7 @@
263 313
       padding: 0 20rpx;
264 314
       text-align: left;
265 315
       position: relative;
266
-      
316
+
267 317
       .text_title{
268 318
         flex-shrink: 0;
269 319
         margin-right: 16rpx;
@@ -272,18 +322,18 @@
272 322
       .text_big {
273 323
         font-size: 32rpx;
274 324
         font-weight: 700;
275
-        margin-top: 10rpx;
325
+        // margin-top: 10rpx;
276 326
 
277 327
         .underline {
278 328
           text-decoration: underline;
279 329
         }
280 330
       }
281
-			
331
+
282 332
 			.underline-item{
283 333
 				// text-decoration: underline;
284 334
 				// margin-right: 40rpx;
285 335
 			}
286
-			
336
+
287 337
       .page_item_cont_T {
288 338
         padding-top: 28rpx;
289 339
         padding-bottom: 28rpx;
@@ -292,13 +342,14 @@
292 342
         border: 1px solid #CBCBCB;
293 343
         border-radius: 10rpx;
294 344
         padding: 20rpx;
295
-				
345
+
296 346
         .page_item_cont_title {
297 347
           height: 100%;
298 348
           font-size: 32rpx;
299 349
           display: flex;
300 350
           justify-content: space-between;
301 351
           align-items: center;
352
+          margin-top: 10rpx;
302 353
 					.content{
303 354
 						display: flex;
304 355
 						flex-wrap: wrap;
@@ -325,14 +376,14 @@
325 376
           align-items: center;
326 377
         }
327 378
       }
328
-			
379
+
329 380
 			.page_item_cont_title_coll{
330 381
 				display: flex;
331 382
 				justify-content: space-between;
332 383
 				align-items: center;
333 384
 				margin-right: 8rpx;
334 385
 			}
335
-			
386
+
336 387
       .page_item_cont_B {
337 388
         padding-top: 28rpx;
338 389
         margin-bottom: 28rpx;

+ 27 - 16
pages/checkAfterScanning/checkAfterScanning.vue

@@ -19,21 +19,29 @@
19 19
           检验科室标本数量:
20 20
         </view>
21 21
         <view class="page_item_cont_title" v-for="(item, i) in info.data" :key="i">
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>
22
+          <template v-if="taskTypeConfig.speExpandTube == 1">
23
+            <uni-collapse :border="false">
24
+              <uni-collapse-item titleBorder="none" :open="taskTypeConfig.speDefaultExpandTube == 1">
25
+                <template v-slot:title>
26
+                  <view class="page_item_cont_title_coll">
27
+                    <view>{{item.deptName}}</view>
28
+                    <view class="text_big" style="padding-right: 20rpx;" @click.stop="goToSpeDetail(item.deptName,item.deptQrCode)"><text class="underline">{{item.speCount}}</text>只</view>
29
+                  </view>
30
+                </template>
31
+                <view class="content">
32
+                  <view class="list" v-for="x in item.tubeTypeData" :key="x.id" @click="viewSpe(item.deptName,item.deptQrCode,x.tubeTypeId)">
33
+                    {{x.tubeTypeName}}:<text class="underline-item">{{x.speCount}}</text>
34
+                  </view>
35
+                </view>
36
+              </uni-collapse-item>
37
+            </uni-collapse>
38
+          </template>
39
+          <template v-else>
40
+            <view class="page_item_cont_title_coll" style="width: 100%;">
41
+            	<view>{{item.deptName}}</view>
42
+            	<view class="text_big" @click.stop="goToSpeDetail(item.deptName,item.deptQrCode)"><text class="underline">{{item.speCount}}</text>只</view>
43
+            </view>
44
+          </template>
37 45
         </view>
38 46
       </view>
39 47
     </view>
@@ -67,6 +75,7 @@
67 75
   export default {
68 76
     data() {
69 77
       return {
78
+        taskTypeConfig: {},
70 79
         handoverId: undefined,
71 80
         handoverDeptId: undefined,
72 81
         info: {},
@@ -175,6 +184,7 @@
175 184
 			            let data = res.list[0];
176 185
 									uni.hideLoading();
177 186
 			        		if(data){
187
+                    this.taskTypeConfig = data || {};
178 188
 										// 输入动态数字密钥
179 189
 			              this.enterDynamicDigitalKey = data.enterDynamicDigitalKey
180 190
 										console.log(55555,this.enterDynamicDigitalKey)
@@ -608,7 +618,7 @@
608 618
       .text_big {
609 619
         font-size: 32rpx;
610 620
         font-weight: 700;
611
-        margin-top: 10rpx;
621
+        // margin-top: 10rpx;
612 622
       }
613 623
 			
614 624
 			.underline{
@@ -635,6 +645,7 @@
635 645
           display: flex;
636 646
           justify-content: space-between;
637 647
           align-items: center;
648
+          margin-top: 10rpx;
638 649
 					.content{
639 650
 						display: flex;
640 651
 						flex-wrap: wrap;

+ 6 - 2
pages/patientInspectLog/components/patientInspectLogListFilter.vue

@@ -4,13 +4,13 @@
4 4
       <view class="container_form">
5 5
         <view class="head">
6 6
           <text class="name">状态</text>
7
-          <text class="status">{{getStateNames()}}</text>
7
+          <text class="status ellipsis-multiline">{{getStateNames()}}</text>
8 8
         </view>
9 9
         <view class="statusList">
10 10
           <view class="statusItem" :class="{ active: item.checked }" v-for="item in searchData.stateList" :key="item.id" @click="item.checked = !item.checked;">{{item.name}}<text class="newicon newicon-xuanzejiaobiao" v-if="item.checked"></text></view>
11 11
         </view>
12 12
         <view class="category" @click="clickPageRouter('department')">
13
-          <text class="name">科室</text>
13
+          <text class="name">患者科室</text>
14 14
           <text class="value ellipsis">{{searchData.department ? searchData.department.dept : ''}}</text>
15 15
         </view>
16 16
         
@@ -359,8 +359,12 @@
359 359
       justify-content: space-between;
360 360
       background-color: #fff;
361 361
       padding: 0 24rpx;
362
+      .name{
363
+        flex-shrink: 0;
364
+      }
362 365
       .status{
363 366
         color: #5DAAB6;
367
+        padding-left: 24rpx;
364 368
       }
365 369
     }
366 370
     .statusList{

+ 1 - 1
pages/patientInspectLog/patientInspectLogList.vue

@@ -10,7 +10,7 @@
10 10
     </view>
11 11
     <view class="body" v-if="dataInfo.list.length">
12 12
       <view class="body_item" v-for="data in dataInfo.list" :key="data.id" @click="toDetail(data)">
13
-        <view class="body_item_head ellipsis-multiline">
13
+        <view class="body_item_head">
14 14
           <text>
15 15
             <text class="sign signRed">{{ data.careLevel ? data.careLevel.name : '' }}<template v-if="data.careLevel && data.illnessState">、</template>{{ data.illnessState ? data.illnessState.name : '' }}</text> {{ data.patientName }}<text v-if="data.bedNum">({{ data.bedNum }})</text>
16 16
           </text>

+ 74 - 22
pages/specimenChecking/specimenChecking.vue

@@ -4,27 +4,37 @@
4 4
     <view class="page_item_wrap" v-for="item in list" :key="item.deptId">
5 5
       <view class="page_item">
6 6
         <view class="page_item_top">
7
-					<uni-collapse :border="false">
8
-						<uni-collapse-item titleBorder="none">
7
+          <template v-if="taskTypeConfig.speExpandTube == 1">
8
+            <uni-collapse :border="false">
9
+						<uni-collapse-item titleBorder="none" :open="taskTypeConfig.speDefaultExpandTube == 1">
9 10
 							<template v-slot:title>
10 11
 								<view class="page_item_cont_title_coll" @click.stop="gotoDetail(item)">
11 12
 									<view class="page_item_top-inner">
12
-										<!-- <view class="page_item_top_L"> -->
13
-											<view class="L_text">{{item.deptName}}</view>
14
-										<!-- </view> -->
13
+                    <view class="L_text">{{item.deptName}}</view>
15 14
 										<view class="page_item_top_R">
16
-											<view class="L_iocn">{{item.speNum}}</view>
15
+											<view class="L_iocn" style="margin-right: 20rpx;">{{item.speNum}}</view>
17 16
 										</view>
18 17
 									</view>
19 18
 								</view>
20 19
 							</template>
21 20
 							<view class="content">
22
-								<view class="list" v-for="x in item.tubeTypeDataList" @click="viewSpe(item, x.tubeTypeId)">
21
+								<view class="list" v-for="x in item.tubeTypeDataList" :key="x.id" @click="viewSpe(item, x.tubeTypeId)">
23 22
 									{{x.tubeTypeName}}:<text class="underline-item">{{x.speNum}}</text>
24 23
 								</view>
25 24
 							</view>
26 25
 						</uni-collapse-item>
27 26
 					</uni-collapse>
27
+          </template>
28
+          <template v-else>
29
+            <view class="page_item_cont_title_coll" @click.stop="gotoDetail(item)">
30
+              <view class="page_item_top-inner">
31
+                  <view class="L_text">{{item.deptName}}</view>
32
+                <view class="page_item_top_R">
33
+                  <view class="L_iocn">{{item.speNum}}</view>
34
+                </view>
35
+              </view>
36
+            </view>
37
+          </template>
28 38
         </view>
29 39
         <!-- <view class="page_item_cont">
30 40
           <view class="page_item_cont_T">
@@ -68,6 +78,8 @@
68 78
     },
69 79
     data() {
70 80
       return {
81
+        hosId: uni.getStorageSync('userData').user.currentHospital.id,
82
+        taskTypeConfig: {},
71 83
         // 弹窗model
72 84
         models: {
73 85
           disjunctor: false,
@@ -83,6 +95,45 @@
83 95
       };
84 96
     },
85 97
     methods: {
98
+      // 获取配置
99
+			getSpecimenTaskTypeConfig(){
100
+        uni.showLoading({
101
+          title: "加载中",
102
+          mask: true,
103
+        });
104
+        post("/simple/data/fetchDataList/taskTypeConfig", {
105
+          "idx": 0,
106
+          "sum": 1,
107
+          "taskTypeConfig": {
108
+            "taskTypeDTO": {
109
+              "hosId": {
110
+                  "id": this.hosId
111
+              },
112
+              "associationType": {
113
+                  "key": "association_types",
114
+                  "value": "specimen"
115
+              }
116
+            }
117
+          }
118
+        }).then((result) => {
119
+          uni.hideLoading();
120
+          if (result.status == 200) {
121
+            if(result.list.length){
122
+              this.taskTypeConfig = result.list[0] || {};
123
+            }else{
124
+              uni.showToast({
125
+                icon: "none",
126
+                title: "请配置标本配送任务类型!",
127
+              });
128
+            }
129
+          } else {
130
+            uni.showToast({
131
+              icon: "none",
132
+              title: result.msg || "接口获取数据失败!",
133
+            });
134
+          }
135
+        });
136
+      },
86 137
 			viewSpe(item, tubeTypeId){
87 138
 				this.speNumChange = item.speNum;
88 139
 				this.changeSpeObj = {
@@ -505,6 +556,7 @@
505 556
       console.log(options, "快捷建单");
506 557
       this.msg = JSON.parse(options.infoDATA);
507 558
       this.getList();
559
+      this.getSpecimenTaskTypeConfig();
508 560
       // #ifdef APP-PLUS
509 561
       webHandle("no", "app");
510 562
       // #endif
@@ -521,11 +573,11 @@
521 573
 	/deep/ .uni-collapse-item--border{
522 574
 		border-bottom-color: #fff !important;
523 575
 	}
524
-	
576
+
525 577
 	/deep/ .uni-collapse-item__title-arrow{
526 578
 		margin-right: 0 !important;
527 579
 	}
528
-	
580
+
529 581
   .specimenChecking {
530 582
     padding-bottom: 100rpx;
531 583
 
@@ -607,34 +659,34 @@
607 659
           // height: 88rpx;
608 660
           // border-bottom: 2rpx dashed #e5e9ed;
609 661
           padding: 20rpx 16rpx;
610
-					
662
+
611 663
 					.page_item_cont_title_coll{
612 664
 						display: flex;
613 665
 						justify-content: space-between;
614 666
 						align-items: center;
615 667
 						margin-right: 8rpx;
616
-						
668
+
617 669
 						.page_item_top-inner {
618 670
 						  display: flex;
619 671
 						  justify-content: space-between;
620 672
 						  align-items: center;
621 673
 						  height: 100%;
622 674
 							width: 100%;
623
-							
675
+
624 676
 						  .page_item_top_L {
625 677
 						    .emergencys {
626 678
 						      background: #ff3b53 !important;
627 679
 						      width: 124rpx !important;
628 680
 						    }
629
-						
681
+
630 682
 						    .emergency {
631 683
 						      background: #ff3b53 !important;
632 684
 						    }
633
-						
685
+
634 686
 						    .emergency1 {
635 687
 						      background: #49b856 !important;
636 688
 						    }
637
-						
689
+
638 690
 						    .page_item_cont_start {
639 691
 						      text-align: center;
640 692
 						      height: 44rpx;
@@ -645,21 +697,21 @@
645 697
 						      color: #fff;
646 698
 						      display: inline-block;
647 699
 						    }
648
-						
700
+
649 701
 						    .L_time {
650 702
 						      color: #6cc076;
651 703
 						      font-size: 32rpx;
652 704
 						    }
653
-						
705
+
654 706
 						    .L_text {
655 707
 						      font-size: 32rpx;
656 708
 						      font-weight: 700;
657 709
 						    }
658 710
 						  }
659
-						
711
+
660 712
 						  .page_item_top_R {
661 713
 						    font-size: 32rpx;
662
-						
714
+
663 715
 						    .L_iocn {
664 716
 						      color: rgb(7, 134, 60);
665 717
 						      font-size: 36rpx;
@@ -668,7 +720,7 @@
668 720
 						  }
669 721
 						}
670 722
 					}
671
-					
723
+
672 724
 					.content{
673 725
 						display: flex;
674 726
 						flex-wrap: wrap;
@@ -684,12 +736,12 @@
684 736
 						}
685 737
 					}
686 738
         }
687
-				
739
+
688 740
 				.underline-item{
689 741
 					// text-decoration: underline;
690 742
 					// margin-right: 40rpx;
691 743
 				}
692
-				
744
+
693 745
         .page_item_cont {
694 746
           min-height: 90rpx;
695 747
           padding: 0 16rpx;

+ 57 - 4
pages/specimenHandoverNew/specimenHandoverNew.vue

@@ -96,8 +96,9 @@
96 96
     data() {
97 97
       return {
98 98
         hosId: uni.getStorageSync('userData').user.currentHospital.id,
99
-        type: 'patient',//patient|specimenDesc
99
+        type: '',//patient|speTubeType|specimenDesc
100 100
         queryObj: {}, //路由传递过来的数据
101
+        taskTypeConfig: {}, //页面控制
101 102
         typeList: {
102 103
           "patient": {
103 104
             id: -1,
@@ -130,6 +131,60 @@
130 131
       };
131 132
     },
132 133
     methods: {
134
+      getSpecimenTaskTypeConfig(){
135
+        uni.showLoading({
136
+          title: "加载中",
137
+          mask: true,
138
+        });
139
+        post("/simple/data/fetchDataList/taskTypeConfig", {
140
+          "idx": 0,
141
+          "sum": 1,
142
+          "taskTypeConfig": {
143
+            "taskTypeDTO": {
144
+              "hosId": {
145
+                  "id": this.hosId
146
+              },
147
+              "associationType": {
148
+                  "key": "association_types",
149
+                  "value": "specimen"
150
+              }
151
+            }
152
+          }
153
+        }).then((result) => {
154
+          uni.hideLoading();
155
+          if (result.status == 200) {
156
+            if(result.list.length){
157
+              this.taskTypeConfig = result.list[0] || {};
158
+              
159
+              if(this.taskTypeConfig.speHandoverTubeType == 1){
160
+                // 患者
161
+                this.type = 'patient';
162
+              }else if(this.taskTypeConfig.speHandoverTubeType == 2){
163
+                // 试管类型
164
+                this.type = 'speTubeType';
165
+              }else if(this.taskTypeConfig.speHandoverTubeType == 3){
166
+                // 检验标本
167
+                this.type = 'specimenDesc';
168
+              }else{
169
+                // 默认-患者
170
+                this.type = 'patient';
171
+              }
172
+              
173
+              this.clickTab(this.type);
174
+            }else{
175
+              uni.showToast({
176
+                icon: "none",
177
+                title: "请配置标本配送任务类型!",
178
+              });
179
+            }
180
+          } else {
181
+            uni.showToast({
182
+              icon: "none",
183
+              title: result.msg || "接口获取数据失败!",
184
+            });
185
+          }
186
+        });
187
+      },
133 188
       ok(){
134 189
         this.models.disjunctor = false;
135 190
         uni.showLoading({
@@ -307,9 +362,7 @@
307 362
         });
308 363
       },
309 364
       initData(){
310
-        this.getInfo('patient');
311
-				// this.getInfo('speTubeType');
312
-    //     this.getInfo('specimenDesc');
365
+        this.getSpecimenTaskTypeConfig();
313 366
       },
314 367
     },
315 368
 		onShow(){