소스 검색

患者信息展示优化

maotao 1 주 전
부모
커밋
ce6e8f97b5

+ 2 - 0
pages/inspectList/inspectList.vue

@@ -606,6 +606,8 @@
606 606
 									// v.yyTime = new Date(date).Format('yyyy-MM-dd') + " " + time.slice(0, -3);
607 607
 									v.yyEndTime = v.newTime
608 608
 								}
609
+							}else{
610
+								v.yyEndTime = ''
609 611
 							}
610 612
 							// return v;
611 613
 						})

+ 471 - 129
pages/patientInformationInfo/patientInformationInfo.vue

@@ -2,71 +2,124 @@
2 2
 	<view class="patientInformationInfo" v-if="Object.keys(infoDATA).length > 0">
3 3
 		<view class="page_head">
4 4
 			<view class="title">{{ infoDATA.patientName }}<text class="patientCode">{{ infoDATA.residenceNo }}({{ infoDATA.bedNum }})</text></view>
5
-			<view class="info">
6
-        <view class="bedNum" v-if="infoDATA.tripTypeDTO">
7
-        	<text class="info_h">陪检方式</text>
8
-        	<text class="info_b">{{ infoDATA.tripTypeDTO ? infoDATA.tripTypeDTO.inspectMode : '' }}</text>
9
-        </view>
10
-				<view :class="(infoDATA.careLevel || infoDATA.illnessState)?'bedNum':'waitingCount'">
11
-					<text class="info_h">待检查数</text>
12
-					<text class="info_b">{{ infoDATA.watingCount }}</text>
13
-				</view>
14
-				<view :class="infoDATA.illnessState?'bedNum':'waitingCount'" v-if="infoDATA.careLevel">
15
-					<text class="info_h">护理等级</text>
16
-					<text class="info_b">{{ infoDATA.careLevel.name }}</text>
17
-				</view>
18
-				<view class="waitingCount" v-if="infoDATA.illnessState">
19
-					<text class="info_h">病情级别</text>
20
-					<text class="info_b">{{ infoDATA.illnessState.name }}</text>
21
-				</view>
5
+		</view>
6
+		<view class="page_tab">
7
+		  <view class="page_tab_bar" :class="{ active: item.label === selectedLabelSlots }" v-for="item in tabs"
8
+		    :key="item.value" @click.prevent="clickHandler(item.label)">
9
+		    {{ item.label }}
10
+		  </view>
11
+		</view>
12
+		<view v-if="selectedLabelSlots=='患者信息'" class="box1">
13
+			<view class="item">
14
+				<view class="title">护理等级:<text class="value">{{infoDATA.careLevel ? infoDATA.careLevel.name :''}}</text></view>
15
+				<view class="title">病情级别:<text class="value">{{infoDATA.illnessState ? infoDATA.illnessState.name :''}}</text></view>
16
+			</view>
17
+			<view class="item">
18
+				<view class="title">患者类型:<text class="value">{{infoDATA.department ? infoDATA.department.dept : ''}} {{infoDATA.bedNum?infoDATA.bedNum:''}} <text v-if="infoDATA.bedNum&&infoDATA.bedNum">床</text></text></view>
19
+			</view>
20
+			<view class="item">
21
+				<view class="title">联系电话:
22
+				<uni-icons v-if="infoDATA.patientPhone" type="phone-filled" color="#49b856" size="22" class="icon" @click="makePhoneCall(infoDATA.patientPhone)"></uni-icons><text class="value" @click="makePhoneCall(infoDATA.patientPhone)">{{infoDATA.patientPhone}}</text>
23
+				<uni-icons type="compose" color="#49b856" size="22" class="icon" @click="editPhone(infoDATA.patientPhone)"></uni-icons></view>
24
+			</view>
25
+			<view class="item">
26
+				<view class="title">年龄: <text class="value">{{infoDATA.age?infoDATA.age:''}}</text></view>
27
+				<view class="title">性别: <text class="value">{{infoDATA.gender ? infoDATA.gender.name : ''}}</text></view>
28
+			</view>
29
+			<view class="item">
30
+				<view class="title">陪检方式: <text class="value">{{infoDATA.tripTypeDTO ? infoDATA.tripTypeDTO.inspectMode : ''}}</text></view>
31
+			</view>
32
+			<view class="item">
33
+				<view class="title">注意事项: <text class="value">{{infoDATA.remark}}</text></view>
34
+			</view>
35
+		</view>
36
+		<view v-if="selectedLabelSlots=='待检查'" class="box2">
37
+			<scroll-view v-if="!isEmpty" scroll-y class="scrollContent">
38
+			  <view class="page_item" v-for="(inspects, key, index) in infoDATA.inspectListMap" :key="key">
39
+			    <view class="splitLine">
40
+			      <view class="splitLineFlex">
41
+			        <view class="splitLineBox"></view>
42
+			      </view>
43
+			      <view>{{key}}</view>
44
+			      <view class="splitLineFlex">
45
+			        <view class="splitLineBox"></view>
46
+			      </view>
47
+			    </view>
48
+			    <checkbox-group @change="checkboxChange($event, key)">
49
+			      <view class="page_item_info" :class="{mt0: i === 0}" v-for="(item, i) in inspects" :key="item.id">
50
+			        <label class="page_item_info_title" style="display: inline-block;width: 100%;">
51
+			          <checkbox color="#49B856" :value="item.id + ''" :checked="item.checked" />
52
+			          检查项目:<text class="bold">{{ item.inspectName }}-{{item.inspectCode}}</text></label>
53
+			        <view class="page_item_info_title"><text :class="{red: !item.execDept}">检查科室:</text><text>{{ item.execDept ? item.execDept.dept : "" }}<text class="newicon newicon-weibiaoti2010104 fz28" @click="changeExecDept(item)" v-if="item.inspectState.value == 1 || item.inspectState.value == 30"></text></text></view>
54
+			        <view class="page_item_info_title btn row">
55
+			          <view><text :class="{red: !item.yyTime}">预约时间:</text><text>{{ item.yyEndTime }}</text><text v-if="item.reservationNumber">({{ item.reservationNumber }})</text><text class="newicon newicon-weibiaoti2010104" @click="changeYyTime(item)" v-if="item.inspectState.value == 1 || item.inspectState.value == 30"></text></view>
56
+			        </view>
57
+			        <view class="page_item_info_title row">
58
+			          <text>医生备注:{{ item.remark }}</text>
59
+			        </view>
60
+			        <view class="page_item_info_title row">
61
+			          <view>是否紧急:<text :class="{red:item.priority===1||item.priority==='1'}">{{ (item.priority===1||item.priority==='1')?'是':'否' }}</text></view>
62
+			          <view>状态:<text v-if="item.inspectState">{{ item.inspectState.name }}</text></view>
63
+			        </view>
64
+			        <view class="buildOrder" @click="build(item)" v-if="!item.gdId&&(item.inspectState.value==1||item.inspectState.value==30)">建单</view>
65
+			      </view>
66
+			    </checkbox-group>
67
+			  </view>
68
+			</scroll-view>
69
+			<view v-if="isEmpty" class="zwsj">
70
+				<image class="zwsj-img" mode="widthFix" src="../../static/img/zanwushuju.png"></image>
71
+				<view class="zwsj-txt">暂无检查信息</view>
72
+			</view>
73
+			<view class="page_item_btns">
74
+			  <view class="page_item_btn" hover-class="seimin-btn-hover" @click="buildOrders()">批量陪检</view>
75
+			  <view class="toolbar" @click="Scanning()">
76
+			    <text class="toolbar-icon newicon newicon-saoma"></text>
77
+			    <text class="toolbar-sao">扫一扫</text>
78
+			  </view>
22 79
 			</view>
23
-      <view class="remark">
24
-        <text class="remarkTitle">注意事项:</text><text class="remarkInfo">{{infoDATA.remark}}</text>
25
-      </view>
26 80
 		</view>
27
-    <scroll-view v-if="!isEmpty" scroll-y class="scrollContent">
28
-      <view class="page_item" v-for="(inspects, key, index) in infoDATA.inspectListMap" :key="key">
29
-        <view class="splitLine">
30
-          <view class="splitLineFlex">
31
-            <view class="splitLineBox"></view>
32
-          </view>
33
-          <view>{{key}}</view>
34
-          <view class="splitLineFlex">
35
-            <view class="splitLineBox"></view>
36
-          </view>
37
-        </view>
38
-        <checkbox-group @change="checkboxChange($event, key)">
39
-          <view class="page_item_info" :class="{mt0: i === 0}" v-for="(item, i) in inspects" :key="item.id">
40
-            <label class="page_item_info_title" style="display: inline-block;width: 100%;">
41
-              <checkbox color="#49B856" :value="item.id + ''" :checked="item.checked" />
42
-              检查项目:<text class="bold">{{ item.inspectName }}-{{item.inspectCode}}</text></label>
43
-            <view class="page_item_info_title"><text :class="{red: !item.execDept}">检查科室:</text><text>{{ item.execDept ? item.execDept.dept : "" }}<text class="newicon newicon-weibiaoti2010104 fz28" @click="changeExecDept(item)" v-if="item.inspectState.value == 1 || item.inspectState.value == 30"></text></text></view>
44
-            <view class="page_item_info_title btn row">
45
-              <view><text :class="{red: !item.yyTime}">预约时间:</text><text>{{ item.yyEndTime }}</text><text v-if="item.reservationNumber">({{ item.reservationNumber }})</text><text class="newicon newicon-weibiaoti2010104" @click="changeYyTime(item)" v-if="item.inspectState.value == 1 || item.inspectState.value == 30"></text></view>
46
-            </view>
47
-            <view class="page_item_info_title row">
48
-              <text>医生备注:{{ item.remark }}</text>
49
-            </view>
50
-            <view class="page_item_info_title row">
51
-              <view>是否紧急:<text :class="{red:item.priority===1||item.priority==='1'}">{{ (item.priority===1||item.priority==='1')?'是':'否' }}</text></view>
52
-              <view>状态:<text v-if="item.inspectState">{{ item.inspectState.name }}</text></view>
53
-            </view>
54
-            <view class="buildOrder" @click="build(item)" v-if="!item.gdId&&(item.inspectState.value==1||item.inspectState.value==30)">建单</view>
55
-          </view>
56
-        </checkbox-group>
57
-      </view>
58
-    </scroll-view>
59
-		<view v-if="isEmpty" class="zwsj">
60
-			<image class="zwsj-img" mode="widthFix" src="../../static/img/zanwushuju.png"></image>
61
-			<view class="zwsj-txt">暂无检查信息</view>
81
+		
82
+		<view v-if="selectedLabelSlots=='已建单'" class="box3">
83
+			<scroll-view v-if="infoDATA.orderedInspectList" scroll-y class="scrollContent">
84
+			  <view class="page_item">
85
+			    <view class="page_item_info" :class="{mt0: i === 0}" v-for="(item, i) in infoDATA.orderedInspectList" :key="item.id">
86
+			        检查项目:<text class="bold">{{ item.inspectName }}-{{item.inspectCode}}</text></label>
87
+			      <view class="page_item_info_title"><text :class="{red: !item.execDept}">检查科室:</text><text>{{ item.execDept ? item.execDept.dept : "" }}</text></view>
88
+			      <view class="page_item_info_title btn row">
89
+			        <view><text :class="{red: !item.yyTime}">预约时间:</text><text>{{ item.yyEndTime }}</text><text v-if="item.reservationNumber">({{ item.reservationNumber }})</text></view>
90
+			      </view>
91
+						<view class="page_item_info_title btn row">
92
+						  <text>工单号:{{item.workOrderDTO.gdcode}}</text>
93
+						</view>
94
+						<view class="page_item_info_title btn row">
95
+						  <text>工单状态:{{item.workOrderDTO.gdState?item.workOrderDTO.gdState.name:''}}</text>
96
+						</view>
97
+			      <view class="page_item_info_title row">
98
+			        <text>医生备注:{{ item.remark }}</text>
99
+			      </view>
100
+			      <view class="page_item_info_title row">
101
+			        <view>是否紧急:<text :class="{red:item.priority===1||item.priority==='1'}">{{ (item.priority===1||item.priority==='1')?'是':'否' }}</text></view>
102
+			        <view>状态:<text v-if="item.inspectState">{{ item.inspectState.name }}</text></view>
103
+			      </view>
104
+						<view class="btn-opt">
105
+							<view class="buildOrder" @click="operation(item, 1)" v-if="item.workOrderDTO.gdState.value==2">接单</view>
106
+							<view class="buildOrder" @click="operation(item, 2)" v-if="item.workOrderDTO.gdState.value==11">立即执行并接单</view>
107
+						</view>
108
+					</view>
109
+			  </view>
110
+			</scroll-view>
111
+			<view v-else class="zwsj">
112
+				<image class="zwsj-img" mode="widthFix" src="../../static/img/zanwushuju.png"></image>
113
+				<view class="zwsj-txt">暂无检查信息</view>
114
+			</view>
115
+<!-- 			<view class="page_item_btns">
116
+			  <view class="page_item_btn" hover-class="seimin-btn-hover" @click="buildOrders()">批量陪检</view>
117
+			  <view class="toolbar" @click="Scanning()">
118
+			    <text class="toolbar-icon newicon newicon-saoma"></text>
119
+			    <text class="toolbar-sao">扫一扫</text>
120
+			  </view>
121
+			</view> -->
62 122
 		</view>
63
-    <view class="page_item_btns">
64
-      <view class="page_item_btn" hover-class="seimin-btn-hover" @click="buildOrders()">批量陪检</view>
65
-      <view class="toolbar" @click="Scanning()">
66
-        <text class="toolbar-icon newicon newicon-saoma"></text>
67
-        <text class="toolbar-sao">扫一扫</text>
68
-      </view>
69
-    </view>
70 123
     <!-- 弹窗 -->
71 124
     <showModel :checkBoxText="models.checkBoxText" :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content"
72 125
       @ok="ok" @cancel="cancel" @know="know" :operate="models.operate"></showModel>
@@ -74,6 +127,16 @@
74 127
     <inspectRemoveModel :title="models1.title" :icon="models1.icon" :disjunctor="models1.disjunctor" :content="models1.content" @know="know1" :operate="models1.operate" @ok="ok1" @cancel="cancel1" :yy="currentInspect.yyTime" :currentInspect="currentInspect" :yytimeGapMinute="configObj.yytimeGapMinute"></inspectRemoveModel>
75 128
     <!-- 弹窗 -->
76 129
     <inspectExecDeptModel :title="models2.title" :icon="models2.icon" :disjunctor="models2.disjunctor" :content="models2.content" @know="know2" :operate="models2.operate" @ok="ok2" @cancel="cancel2" :execDeptList="currentInspect.inspectCheckType && currentInspect.inspectCheckType.deptList" :execDeptId="currentInspect.execDeptId"></inspectExecDeptModel>
130
+		<!-- 修改电话 -->
131
+		<uni-popup ref="inputDialog" type="dialog">
132
+			<uni-popup-dialog ref="inputClose"  mode="input" title="请填写电话" :value="phone"
133
+				placeholder="请输入联系电话" @confirm="dialogInputConfirm"></uni-popup-dialog>
134
+		</uni-popup>
135
+		<!-- 接单操作 -->
136
+		<uni-popup ref="alertDialog" type="dialog">
137
+			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" :content="content" @confirm="dialogConfirm"
138
+				@close="dialogClose"></uni-popup-dialog>
139
+		</uni-popup>
77 140
 	</view>
78 141
 </template>
79 142
 <script>
@@ -87,6 +150,21 @@
87 150
 	export default {
88 151
 		data() {
89 152
 			return {
153
+				tabs:[
154
+					{
155
+						label: "患者信息", //tab页名称
156
+						value: "", //值
157
+					},
158
+					{
159
+						label: "待检查", //tab页名称
160
+						value: "2", //值
161
+					},
162
+					{
163
+						label: "已建单", //tab页名称
164
+						value: "3", //值
165
+					},
166
+				],
167
+				selectedLabelSlots: '待检查',
90 168
         currentInspect: {},
91 169
         SMFlag: true,
92 170
         isEmpty: true,
@@ -108,9 +186,66 @@
108 186
         },
109 187
 				configObj: null,
110 188
 				hosId: uni.getStorageSync("userData").user.currentHospital.id,
189
+				phone: null ,//联系电话
190
+				content: null,
191
+				optType: null,
192
+				itemData: null
111 193
 			};
112 194
 		},
113 195
 		methods: {
196
+			// 点击tab页切换
197
+			clickHandler(key) {
198
+			  this.selectedLabelSlots = key;
199
+			  if (key === "患者信息") {
200
+			    this.getPatient(0);
201
+			  } else if (key === "待检查") {
202
+			    this.getInfo(this.options.patientCode);
203
+			  } else {
204
+					this.getInfo(this.options.patientCode);
205
+				}
206
+			},
207
+			// 拨打电话
208
+			makePhoneCall(phone){
209
+				uni.makePhoneCall({
210
+					phoneNumber: phone
211
+				})
212
+			},
213
+			// 修改电话
214
+			editPhone(phone){
215
+				this.phone = phone
216
+				this.$refs.inputDialog.open()
217
+			},
218
+			// 确认修改电话
219
+			dialogInputConfirm(e){
220
+				let data = {
221
+					patient: this.infoDATA
222
+				}
223
+				data.patient.patientPhone = e
224
+				uni.showLoading({
225
+				  title: "加载中",
226
+				  mask: true,
227
+				});
228
+				post("/data/addData/patient", data).then((result) => {
229
+				  if (result.status == 200) {
230
+				    uni.hideLoading();
231
+				    uni.showToast({
232
+				      icon: "none",
233
+				      mask: true,
234
+				      title: "修改成功",
235
+				    });
236
+				    this.$refs.inputDialog.close()
237
+						setTimeout(_=>{
238
+							this.getInfo(this.infoDATA.patientCode)
239
+						}, 1500)
240
+				  } else {
241
+				    uni.hideLoading();
242
+				    uni.showToast({
243
+				      icon: "none",
244
+				      title: result.msg,
245
+				    });
246
+				  }
247
+				});
248
+			},
114 249
       // 选择楼栋
115 250
       checkboxChange: function(e, key) {
116 251
         var dataList = this.infoDATA.inspectListMap[key],
@@ -162,6 +297,78 @@
162 297
           });
163 298
         }
164 299
       },
300
+			// 取消接单
301
+			dialogClose(){
302
+				this.$refs.alertDialog.close()
303
+			},
304
+			// 确定接单
305
+			dialogConfirm(){
306
+				if(this.optType==1){
307
+					uni.showLoading({
308
+					  title: "加载中",
309
+					  mask: true,
310
+					});
311
+					get(`/workerOrder/takeOrder/${this.itemData.workOrderDTO.id}`).then((result) => {
312
+						if (result.status == 200) {
313
+					    uni.hideLoading();
314
+					    uni.showToast({
315
+					      icon: "none",
316
+					      mask: true,
317
+					      title: "操作成功",
318
+					    });
319
+							this.$refs.alertDialog.close()
320
+							setTimeout(_=>{
321
+								this.getInfo(this.infoDATA.patientCode)
322
+							}, 1500)
323
+					  } else {
324
+					    uni.hideLoading();
325
+					    uni.showToast({
326
+					      icon: "none",
327
+					      title: result.msg,
328
+					    });
329
+					  }
330
+					});
331
+				}else{
332
+					let query = {
333
+						userId: uni.getStorageSync("userData").user.id
334
+					}
335
+					uni.showLoading({
336
+					  title: "加载中",
337
+					  mask: true,
338
+					});
339
+					post(`/api/directStartOrder/${this.itemData.workOrderDTO.id}`, query).then((result) => {
340
+					  if (result.status == 200) {
341
+					    uni.hideLoading();
342
+					    uni.showToast({
343
+					      icon: "none",
344
+					      mask: true,
345
+					      title: "操作成功",
346
+					    });
347
+							this.$refs.alertDialog.close()
348
+							setTimeout(_=>{
349
+								this.getInfo(this.infoDATA.patientCode)
350
+							}, 1500)
351
+					  } else {
352
+					    uni.hideLoading();
353
+					    uni.showToast({
354
+					      icon: "none",
355
+					      title: result.msg,
356
+					    });
357
+					  }
358
+					});
359
+				}
360
+			},
361
+			// 接单
362
+			operation(data, type){
363
+				this.optType = type
364
+				this.itemData = data
365
+				if(type==1){
366
+					this.content = '您确定接单吗?'
367
+				}else{
368
+					this.content = '您确定立即执行并接单吗?'
369
+				}
370
+				this.$refs.alertDialog.open()
371
+			},
165 372
       // 建单
166 373
       build(data) {
167 374
         console.log(data);
@@ -481,6 +688,10 @@
481 688
 						this.getInfo(patientCode);
482 689
 			    }
483 690
 			  })
691
+			},
692
+			// 获取患者信息
693
+			getPatient(page){
694
+				
484 695
 			},
485 696
 			// 请求详细页面的数据
486 697
 			getInfo(patientCode) {
@@ -499,17 +710,37 @@
499 710
 						for(let i of Object.keys(res.data.inspectListMap)){
500 711
 							let x = res.data.inspectListMap[i]
501 712
 							for(let e of x){
502
-								e.newTime = dayjs(new Date(e.yyTime)).format('MM-DD HH:mm')
503
-								if(e.endCheckTime){
504
-									e.newTime2 = dayjs(new Date(e.endCheckTime)).format('HH:mm')
505
-									e.yyEndTime = e.newTime +'--'+ e.newTime2
713
+								if(e.yyTime){
714
+									e.newTime = dayjs(new Date(e.yyTime)).format('MM-DD HH:mm')
715
+									if(e.endCheckTime){
716
+										e.newTime2 = dayjs(new Date(e.endCheckTime)).format('HH:mm')
717
+										e.yyEndTime = e.newTime +'--'+ e.newTime2
718
+									}else{
719
+										let date = dayjs(new Date(e.yyTime));
720
+										e.yyEndTime = e.newTime
721
+									}
506 722
 								}else{
507
-									let date = dayjs(new Date(e.yyTime));
508
-									e.yyEndTime = e.newTime
723
+									e.yyEndTime = ''
509 724
 								}
510 725
 							}
511 726
 						}
512
-						// console.log(222, res.data.inspectListMap)
727
+						
728
+						if(res.data.orderedInspectList && res.data.orderedInspectList.length>0){
729
+							res.data.orderedInspectList.forEach(e =>{
730
+								if(e.yyTime){
731
+									e.newTime = dayjs(new Date(e.yyTime)).format('MM-DD HH:mm')
732
+									if(e.endCheckTime){
733
+										e.newTime2 = dayjs(new Date(e.endCheckTime)).format('HH:mm')
734
+										e.yyEndTime = e.newTime +'--'+ e.newTime2
735
+									}else{
736
+										let date = dayjs(new Date(e.yyTime));
737
+										e.yyEndTime = e.newTime
738
+									}
739
+								}else{
740
+									e.yyEndTime = ''
741
+								}
742
+							})
743
+						}
513 744
 						this.infoDATA = res.data;
514 745
 					} else {
515 746
 						uni.showToast({
@@ -540,51 +771,60 @@
540 771
   /deep/ uni-checkbox:not([disabled]) .uni-checkbox-input:hover{
541 772
     border-color: #49B856!important;
542 773
   }
543
-  .page_item_btns{
544
-    display: flex;
545
-    justify-content: space-between;
546
-    align-items: center;
547
-    margin-top: 16rpx;
548
-    margin-bottom: 16rpx;
549
-    .page_item_btn {
550
-      flex: 1;
551
-      height: 88rpx;
552
-      background-image: linear-gradient(to right, #72c172, #3bb197);
553
-      border-radius: 8rpx;
554
-      line-height: 88rpx;
555
-      color: #fff;
556
-      font-size: 36rpx;
557
-      font-weight: 700;
558
-      text-align: center;
559
-      margin-right: 24rpx;
560
-      &:first-of-type{
561
-        margin-left: 24rpx;
562
-      }
563
-    }
564
-    .toolbar {
565
-      flex: 1;
566
-      z-index: 999;
567
-      height: 88rpx;
568
-      display: flex;
569
-      justify-content: center;
570
-      align-items: center;
571
-      box-sizing: border-box;
572
-      border-radius: 4rpx;
573
-      background-color: #E5E8ED;
574
-      margin-right: 24rpx;
575
-    
576
-      .toolbar-icon {
577
-        font-size: 52rpx;
578
-        margin-right: 16rpx;
579
-        color: #07863c;
580
-      }
581
-    
582
-      .toolbar-sao {
583
-        font-size: 36rpx;
584
-        color: #333;
585
-      }
586
-    }
587
-  }
774
+	/deep/ .uni-popup__info{
775
+		color: #000;
776
+	}
777
+	.box2{
778
+		.page_item_btns{
779
+		  display: flex;
780
+		  justify-content: space-between;
781
+		  align-items: center;
782
+		  margin-top: 16rpx;
783
+		  margin-bottom: 16rpx;
784
+			position: absolute;
785
+			bottom: 0;
786
+			width: 100%;
787
+		  .page_item_btn {
788
+		    flex: 1;
789
+		    height: 88rpx;
790
+		    background-image: linear-gradient(to right, #72c172, #3bb197);
791
+		    border-radius: 8rpx;
792
+		    line-height: 88rpx;
793
+		    color: #fff;
794
+		    font-size: 36rpx;
795
+		    font-weight: 700;
796
+		    text-align: center;
797
+		    margin-right: 24rpx;
798
+		    &:first-of-type{
799
+		      margin-left: 24rpx;
800
+		    }
801
+		  }
802
+		  .toolbar {
803
+		    flex: 1;
804
+		    z-index: 999;
805
+		    height: 88rpx;
806
+		    display: flex;
807
+		    justify-content: center;
808
+		    align-items: center;
809
+		    box-sizing: border-box;
810
+		    border-radius: 4rpx;
811
+		    background-color: #E5E8ED;
812
+		    margin-right: 24rpx;
813
+		  
814
+		    .toolbar-icon {
815
+		      font-size: 52rpx;
816
+		      margin-right: 16rpx;
817
+		      color: #07863c;
818
+		    }
819
+		  
820
+		    .toolbar-sao {
821
+		      font-size: 36rpx;
822
+		      color: #333;
823
+		    }
824
+		  }
825
+		}
826
+	}
827
+
588 828
   .newicon-weibiaoti2010104{
589 829
     margin-left: 8rpx;
590 830
   }
@@ -594,6 +834,89 @@
594 834
     display: flex;
595 835
     flex-direction: column;
596 836
     height: 100vh;
837
+		
838
+		.page_tab {
839
+		  width: 100%;
840
+		  height: 96rpx;
841
+		  display: flex;
842
+		  position: fixed;
843
+		  left: 0;
844
+		  top: 60rpx;
845
+		  z-index: 999;
846
+		
847
+		  .page_tab_bar {
848
+		    flex: 1;
849
+		    font-size: 36rpx;
850
+		    background: #fff;
851
+		    display: flex;
852
+		    justify-content: center;
853
+		    align-items: center;
854
+		    position: relative;
855
+		
856
+		    &:after {
857
+		      content: "";
858
+		      position: absolute;
859
+		      left: 0;
860
+		      bottom: 0;
861
+		      height: 2rpx;
862
+		      width: 100%;
863
+		      background-color: transparent;
864
+		    }
865
+		
866
+		    .tab_num {
867
+		      color: #ff3b53;
868
+		      margin-left: 8rpx;
869
+		    }
870
+		
871
+		    &.active {
872
+		      color: #49b856;
873
+		
874
+		      &:after {
875
+		        background-color: #49b856;
876
+		      }
877
+		    }
878
+		  }
879
+		}
880
+		
881
+		.box1{
882
+			height: 100vh;
883
+			background: #fff;
884
+			padding: 0 20rpx;
885
+			.item{
886
+				height: 80rpx;
887
+				display: flex;
888
+				align-items: center;
889
+				
890
+				.title{
891
+					margin-right: 40rpx;
892
+					.value{
893
+						position: relative;
894
+						top: -3rpx;
895
+					}
896
+				}
897
+				
898
+				.icon{
899
+					margin-left: 20rpx;
900
+				}
901
+			}
902
+		}
903
+		
904
+		.box1,
905
+		.box2,
906
+		.box3{
907
+			margin-top: 98rpx;
908
+		}
909
+		
910
+		.box2{
911
+			height: 78vh;
912
+			overflow-y: auto;
913
+		}
914
+		
915
+		.box3{
916
+			height: 100vh;
917
+			overflow-y: auto;
918
+		}
919
+		
597 920
 		.zwsj {
598 921
       flex: 1;
599 922
       min-height: 0;
@@ -614,10 +937,11 @@
614 937
 		.page_head {
615 938
 			background-color: #49b856;
616 939
 			color: #fff;
617
-
940
+			// margin-top: 97rpx;
941
+			
618 942
 			.title {
619 943
 				font-size: 48rpx;
620
-				padding-top: 24rpx;
944
+				// padding-top: 24rpx;
621 945
 				text-align: center;
622 946
 			}
623 947
 
@@ -718,19 +1042,37 @@
718 1042
         &.mt0{
719 1043
           margin-top: 0;
720 1044
         }
721
-
722
-        .buildOrder{
723
-          width: 258rpx;
724
-          height: 72rpx;
725
-          background: #49B856;
726
-          border-radius: 6rpx;
727
-          margin: 0 auto;
728
-          color: #FFFFFF;
729
-          display: flex;
730
-          align-items: center;
731
-          justify-content: center;
732
-          font-size: 30rpx;
733
-        }
1045
+				
1046
+				.buildOrder{
1047
+					width: 258rpx;
1048
+					height: 72rpx;
1049
+					background: #49B856;
1050
+					border-radius: 6rpx;
1051
+					margin: 0 auto;
1052
+					color: #FFFFFF;
1053
+					display: flex;
1054
+					align-items: center;
1055
+					justify-content: center;
1056
+					font-size: 30rpx;
1057
+				}
1058
+								
1059
+				.btn-opt{
1060
+					display: flex;
1061
+					align-items: center;
1062
+					justify-content: center;
1063
+					
1064
+					.buildOrder{
1065
+					  width: 258rpx;
1066
+					  height: 72rpx;
1067
+						line-height: 72rpx;
1068
+						text-align: center;
1069
+					  background: #49B856;
1070
+					  border-radius: 6rpx;
1071
+					  margin: 0 auto;
1072
+					  color: #FFFFFF;
1073
+					  font-size: 30rpx;
1074
+					}
1075
+				}
734 1076
 
735 1077
 				.page_item_info_title {
736 1078
 					font-weight: 700;

+ 9 - 5
pages/patientInformationList/patientInformationList.vue

@@ -546,12 +546,16 @@
546 546
             this.freshing = true;
547 547
             this.totalNum = res.totalNum;
548 548
 						res.list.forEach(e => {
549
-							e.newTime = dayjs(new Date(e.sortYytime)).format('MM-DD HH:mm')
550
-							if(e.inspects && e.inspects.length && e.inspects[0].endCheckTime){
551
-								e.newTime2 = dayjs(new Date(e.inspects[0].endCheckTime)).format('HH:mm')
552
-								e.yyEndTime = e.newTime +'--'+ e.newTime2
549
+							if(e.sortYytime){
550
+								e.newTime = dayjs(new Date(e.sortYytime)).format('MM-DD HH:mm')
551
+								if(e.inspects && e.inspects.length && e.inspects[0].endCheckTime){
552
+									e.newTime2 = dayjs(new Date(e.inspects[0].endCheckTime)).format('HH:mm')
553
+									e.yyEndTime = e.newTime +'--'+ e.newTime2
554
+								}else{
555
+									e.yyEndTime = e.newTime
556
+								}
553 557
 							}else{
554
-								e.yyEndTime = e.newTime
558
+								e.yyEndTime = ''
555 559
 							}
556 560
 						})
557 561
             if (idx === 0) {

+ 10 - 1
pages/patientInspectLog/patientInspectLogList.vue

@@ -275,6 +275,15 @@
275 275
       // 批量回科
276 276
       tagClickList(){
277 277
         let list = this.dataInfo.list.filter(v => v.checked);
278
+				let newList = list.map(i =>{
279
+					return{
280
+						patientName: i.patientName,
281
+						bedNum: i.bedNum,
282
+						patientCode: i.patientCode,
283
+						id: i.id,
284
+						checked: i.checked
285
+					}
286
+				})
278 287
         if(list.length){
279 288
           let arr = list.filter(v => v.deptDTO).map(v => v.deptDTO.id);
280 289
           arr = uniq(arr);
@@ -285,7 +294,7 @@
285 294
             });
286 295
           }else if(arr.length === 1){
287 296
             uni.navigateTo({
288
-              url: `/pages/patientInspectLog/patientInspectLogSendBack?deptId=${arr[0]}&patientList=${encodeURIComponent(JSON.stringify(list))}`,
297
+              url: `/pages/patientInspectLog/patientInspectLogSendBack?deptId=${arr[0]}&patientList=${encodeURIComponent(JSON.stringify(newList))}`,
289 298
             })
290 299
           }else{
291 300
             uni.showToast({

+ 74 - 3
pages/receipt_infopage/receipt_infopage.vue

@@ -178,6 +178,17 @@
178 178
 						</text>
179 179
 					</text>
180 180
         </view>
181
+				<view class="page_item_foot_text" v-if="
182
+					infoDATA.taskType.associationType.value == 'inspect' ||
183
+					infoDATA.taskType.associationType.value == 'patientTransport'">
184
+				  <text class="text1">联系电话</text>
185
+				  <text class="text2">
186
+						<uni-icons v-if="infoDATA.patient.patientPhone" type="phone-filled" color="#49b856" size="22" class="icon" @click="makePhoneCall(infoDATA.patient.patientPhone)"></uni-icons>
187
+						<text class="value" @click="makePhoneCall(infoDATA.patient.patientPhone)">{{ infoDATA.patient.patientPhone }}</text>
188
+						<uni-icons type="compose" color="#49b856" size="22" class="icon" @click="editPhone(infoDATA.patient.patientPhone)"></uni-icons>
189
+					</text>
190
+				</view>
191
+				
181 192
         <view class="page_item_foot_text" v-if="
182 193
             (infoDATA.taskType.associationType.value == 'inspect' ||
183 194
             infoDATA.taskType.associationType.value == 'patientTransport')&&infoDATA.patient.careLevel
@@ -478,6 +489,11 @@
478 489
 				<text v-html="speContent"></text>
479 490
 			</uni-popup-dialog>
480 491
 		</uni-popup>
492
+		<!-- 修改电话 -->
493
+		<uni-popup ref="inputDialog" type="dialog">
494
+			<uni-popup-dialog ref="inputClose"  mode="input" title="请填写电话" :value="phone"
495
+				placeholder="请输入联系电话" @confirm="dialogInputConfirm"></uni-popup-dialog>
496
+		</uni-popup>
481 497
   </view>
482 498
 </template>
483 499
 <script>
@@ -552,7 +568,8 @@
552 568
 				tasktype: null,
553 569
 				sPehandoverOrder: null ,//是否转派
554 570
 				speContent: null,
555
-				configObj: null
571
+				configObj: null,
572
+				phone: null //联系电话
556 573
       };
557 574
     },
558 575
     filters: {
@@ -584,6 +601,48 @@
584 601
       },
585 602
     },
586 603
     methods: {
604
+			// 拨打电话
605
+			makePhoneCall(phone){
606
+				uni.makePhoneCall({
607
+					phoneNumber: phone
608
+				})
609
+			},
610
+			// 修改电话
611
+			editPhone(phone){
612
+				this.phone = phone
613
+				this.$refs.inputDialog.open()
614
+			},
615
+			// 确认修改电话
616
+			dialogInputConfirm(e){
617
+				let data = {
618
+					patient: this.infoDATA.patient
619
+				}
620
+				data.patient.patientPhone = e
621
+				uni.showLoading({
622
+				  title: "加载中",
623
+				  mask: true,
624
+				});
625
+				post("/data/addData/patient", data).then((result) => {
626
+				  if (result.status == 200) {
627
+				    uni.hideLoading();
628
+				    uni.showToast({
629
+				      icon: "none",
630
+				      mask: true,
631
+				      title: "修改成功",
632
+				    });
633
+				    this.$refs.inputDialog.close()
634
+						setTimeout(_=>{
635
+							this.getInfo(this.dataId)
636
+						}, 1500)
637
+				  } else {
638
+				    uni.hideLoading();
639
+				    uni.showToast({
640
+				      icon: "none",
641
+				      title: result.msg,
642
+				    });
643
+				  }
644
+				});
645
+			},
587 646
       ok2() {
588 647
         uni.showLoading({
589 648
           title: "加载中",
@@ -2113,9 +2172,12 @@
2113 2172
   };
2114 2173
 </script>
2115 2174
 <style lang="less">
2175
+	/deep/ .uni-popup__info{
2176
+		color: #000;
2177
+	}
2116 2178
   .Receipt_infopage {
2117 2179
     padding: 0 20rpx;
2118
-    overflow: hidden;
2180
+    overflow-y: auto;
2119 2181
 
2120 2182
     .red {
2121 2183
       color: red !important;
@@ -2341,10 +2403,19 @@
2341 2403
           .text1 {
2342 2404
             color: rgb(102, 102, 102);
2343 2405
           }
2344
-
2406
+					
2345 2407
           .text2 {
2346 2408
             float: right;
2347 2409
             font-weight: 700;
2410
+						
2411
+						.icon{
2412
+							margin-left: 18rpx;
2413
+						}
2414
+						
2415
+						.value{
2416
+							position: relative;
2417
+							top: -3rpx;
2418
+						}
2348 2419
           }
2349 2420
         }
2350 2421
       }

+ 10 - 1
pages/receiptpage/receiptpage.vue

@@ -61,7 +61,7 @@
61 61
                     item.gdState.value == 5
62 62
                   )
63 63
                 ">
64
-                <text class="text_big">{{ item.gdState.name }}</text>
64
+                <text class="text_big" :class="{'yellow': item.gdState.value==4,'orange': item.gdState.value==8,'blue': item.gdState.value==5}">{{ item.gdState.name }}</text>
65 65
               </view>
66 66
               <view class="page_item_top_R" v-if="
67 67
                   item.taskType.associationType.value == 'inspect' &&
@@ -3493,6 +3493,15 @@
3493 3493
                 .text_big{
3494 3494
                   font-weight: bold;
3495 3495
                 }
3496
+								.yellow{
3497
+									color: #FFC107;
3498
+								}
3499
+								.orange{
3500
+									color: #FF9800;
3501
+								}
3502
+								.blue{
3503
+									color: #2196F3;
3504
+								}
3496 3505
               }
3497 3506
             }
3498 3507