|  |  |  | <template> | 
					
						
							|  |  |  | 	<view class="book-page btPadding" v-if="bookInfo"> | 
					
						
							|  |  |  | 		<view class="list-box"> | 
					
						
							|  |  |  | 			<list-box class="item-wrapper" v-if="item.show" v-for="(item,key) in list" :key="key" :leftTitle="item.leftTitle" :rightTitle="item.rightTitle?item.rightTitle:''"> | 
					
						
							|  |  |  | 				<view class="item-inner" v-html="item.custom" v-if="item.custom" @click="edit" :data-item="item" :data-key="key"></view> | 
					
						
							|  |  |  | 			</list-box> | 
					
						
							|  |  |  | 		</view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		<view class="bot-con"> | 
					
						
							|  |  |  | 			<view class="title PfScMedium">治疗记录</view> | 
					
						
							|  |  |  | 			<visitor-account :open="true" :disabled="true"></visitor-account> | 
					
						
							|  |  |  | 		</view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		<view class="bot-con"> | 
					
						
							|  |  |  | 			<view class="title PfScMedium">预约提醒</view> | 
					
						
							|  |  |  | 			<view class="content" v-html="notice"></view> | 
					
						
							|  |  |  | 		</view> | 
					
						
							|  |  |  | 		<view class="btPadding pagebt"></view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		<view class="fixedBot btPadding"> | 
					
						
							|  |  |  | 			<view class="submit"> | 
					
						
							|  |  |  | 				<view :class="'btn cancel'+(showCancelBook?' btn1':' btn3')" hover-class="hover" @click="reback">返回</view> | 
					
						
							|  |  |  | 				<view class="btn primary btn1" hover-class="hover" v-if="showCancelBook" @click="cancelBook">取消预约</view> | 
					
						
							|  |  |  | 			</view> | 
					
						
							|  |  |  | 		</view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		<view :class="'ccpop'+(popkey==0?' bed-edit-pop':'')"> | 
					
						
							|  |  |  | 			<uni-popup ref="popup" type="bottom" background-color="#fff" :mask-click="true"> | 
					
						
							|  |  |  | 				<view class="edit-pop-title PfScSemibold">{{poptitle}}</view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				<user-card v-for="(item, key) in visitorList" :dataitem="item" @clickEvent="changeType" :index="key" :showuinfo="false"></user-card> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				<view class="submit flex submit-popup"> | 
					
						
							|  |  |  | 					<view :class="'btn cancel'+(' btn1')" hover-class="hover" @click="closepop">取消</view> | 
					
						
							|  |  |  | 					<view class="btn primary btn1" hover-class="hover" v-if="showCancelBook">确认修改</view> | 
					
						
							|  |  |  | 				</view> | 
					
						
							|  |  |  | 			</uni-popup> | 
					
						
							|  |  |  | 		</view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	</view> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  | 	import listBox from '@/components/listBox.vue'; | 
					
						
							|  |  |  | 	import visitorAccount from '@/components/visitorAccount.vue' | 
					
						
							|  |  |  | 	import userCard from '@/components/userCard.vue'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	export default { | 
					
						
							|  |  |  | 		data() { | 
					
						
							|  |  |  | 			return { | 
					
						
							|  |  |  | 				statusStyleList:{'0':'status_wait', '1':'status_ing', '2':'status_down', '3':'status_out_num', '4':'status_expire','5':'status_cancle'}, | 
					
						
							|  |  |  | 				status:'', | 
					
						
							|  |  |  | 				notice:"", | 
					
						
							|  |  |  | 				list:[ | 
					
						
							|  |  |  | 					{'leftTitle':'候诊状态','custom':"",show:true,edit:true}, | 
					
						
							|  |  |  | 					{'leftTitle':'所在床位','rightTitle':'',show:true,edit:true}, | 
					
						
							|  |  |  | 					{'leftTitle':'预约人','rightTitle':'',show:true,edit:false}, | 
					
						
							|  |  |  | 					{'leftTitle':'服务机构','rightTitle':'',show:true,edit:false}, | 
					
						
							|  |  |  | 					{'leftTitle':'预约科室','rightTitle':'',show:true,edit:false}, | 
					
						
							|  |  |  | 					{'leftTitle':'医生','rightTitle':'',show:true,edit:false}, | 
					
						
							|  |  |  | 					{'leftTitle':'排队情况','custom':"",show:true,edit:false}, | 
					
						
							|  |  |  | 					{'leftTitle':'预约时间','custom':"",show:true,edit:false} | 
					
						
							|  |  |  | 				], | 
					
						
							|  |  |  | 				showCancelBook:false, | 
					
						
							|  |  |  | 				bookId:false, | 
					
						
							|  |  |  | 				depart_id:false, | 
					
						
							|  |  |  | 				bookInfo:false, | 
					
						
							|  |  |  | 				cssUrl:this.cssUrl, | 
					
						
							|  |  |  | 				visitorList:[ | 
					
						
							|  |  |  | 					{name:'张三',type:1,showuinfo:false} | 
					
						
							|  |  |  | 				], | 
					
						
							|  |  |  | 				popkey:-1, | 
					
						
							|  |  |  | 				poptitle:'' | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		onLoad(option) { | 
					
						
							|  |  |  | 			if(option.id) this.bookId = option.id | 
					
						
							|  |  |  | 			if(option.depart_id) this.depart_id = option.depart_id | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		onShow() { | 
					
						
							|  |  |  | 			if(!this.bookId || !this.depart_id){ | 
					
						
							|  |  |  | 				this.$func.toPage('/pages/index/index') | 
					
						
							|  |  |  | 				return; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			this.getBookDetail() | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		components:{ | 
					
						
							|  |  |  | 			listBox, | 
					
						
							|  |  |  | 			visitorAccount, | 
					
						
							|  |  |  | 			userCard | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		methods: { | 
					
						
							|  |  |  | 			closepop(){ | 
					
						
							|  |  |  | 				this.$refs.popup.close() | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			edit(e){ | 
					
						
							|  |  |  | 				var dataset = e.currentTarget.dataset | 
					
						
							|  |  |  | 				var item = dataset.item | 
					
						
							|  |  |  | 				var key = dataset.key | 
					
						
							|  |  |  | 				if(!item.edit) return | 
					
						
							|  |  |  | 				this.popkey = key | 
					
						
							|  |  |  | 				this.poptitle = '所在床位' | 
					
						
							|  |  |  | 				if(this.popkey == 1) { | 
					
						
							|  |  |  | 					this.poptitle = '候诊状态' | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				this.$refs.popup.open('bottom') | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			cancelBook(){ | 
					
						
							|  |  |  | 				var that = this | 
					
						
							|  |  |  | 				uni.showModal({ | 
					
						
							|  |  |  | 					title:'取消预约', | 
					
						
							|  |  |  | 					content:'确认取消预约?', | 
					
						
							|  |  |  | 					success(res) { | 
					
						
							|  |  |  | 						if(!res.confirm) return | 
					
						
							|  |  |  | 						that.$http.req('api/user/cancel_appoint', { | 
					
						
							|  |  |  | 							appoint_id:that.bookId, | 
					
						
							|  |  |  | 							depart_id:that.depart_id | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 						 'POST').then(data=>{ | 
					
						
							|  |  |  | 							if(data == -1) return | 
					
						
							|  |  |  | 							that.getBookDetail() | 
					
						
							|  |  |  | 							uni.showToast({ | 
					
						
							|  |  |  | 								title:"取消预约成功", | 
					
						
							|  |  |  | 								mask:true, | 
					
						
							|  |  |  | 								image:'/static/images/gou.svg', | 
					
						
							|  |  |  | 								times:false, | 
					
						
							|  |  |  | 								duration: 1500, | 
					
						
							|  |  |  | 								success() { | 
					
						
							|  |  |  | 									that.$func.toPage('/pages/prebook_list/prebook_list') | 
					
						
							|  |  |  | 								} | 
					
						
							|  |  |  | 							}) | 
					
						
							|  |  |  | 						}); | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			rebook(){ | 
					
						
							|  |  |  | 				this.$func.toPage('/pages/index/index') | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			reback(){ | 
					
						
							|  |  |  | 				this.$func.toPage('/pages/index/index') | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			getBookDetail(){ | 
					
						
							|  |  |  | 				this.$http.req('api/user/get_appoint_detail', {appoint_id:this.bookId,depart_id:this.depart_id}, 'POST').then(data=>{ | 
					
						
							|  |  |  | 					if(data == -1) { | 
					
						
							|  |  |  | 						this.bookInfo = false | 
					
						
							|  |  |  | 						return | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					var bookInfo = data | 
					
						
							|  |  |  | 					this.bookInfo = bookInfo | 
					
						
							|  |  |  | 					this.status = this.statusStyleList[bookInfo.status] | 
					
						
							|  |  |  | 					if(bookInfo.status==0 || bookInfo.status==2){ | 
					
						
							|  |  |  | 						this.showCancelBook = true | 
					
						
							|  |  |  | 					}else{ | 
					
						
							|  |  |  | 						this.showCancelBook = false | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					this.list[0].custom = "<view class='bi flex'><view class='"+this.status+" status'><view class='over status_text'>"+bookInfo.status_desc+"</view></view><img src="+this.cssUrl+"bi.svg></view>" | 
					
						
							|  |  |  | 					this.list[1].custom = "<view class='bi flex'><text>2诊室13床</text><img src="+this.cssUrl+"bi.svg></view>" | 
					
						
							|  |  |  | 					this.list[2].rightTitle = bookInfo.name | 
					
						
							|  |  |  | 					this.list[3].rightTitle = bookInfo.hospital_name | 
					
						
							|  |  |  | 					this.list[4].rightTitle = bookInfo.depart_name | 
					
						
							|  |  |  | 					this.list[5].rightTitle = bookInfo.doctor_name ? bookInfo.doctor_name : '无' | 
					
						
							|  |  |  | 					this.list[6].show = false | 
					
						
							|  |  |  | 					this.list[7].custom = "<view class='book-date"+(bookInfo.status==0?' wait':' expire')+"'>"+bookInfo.visit_date+' '+bookInfo.week_desc+' '+bookInfo.visit_time+"</view>" | 
					
						
							|  |  |  | 					this.notice = bookInfo.notice; | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <style lang="scss" scoped> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .book-page{ | 
					
						
							|  |  |  | 	height: 100vh; | 
					
						
							|  |  |  | 	width: 100%; | 
					
						
							|  |  |  | 	background: #F6F6F6; | 
					
						
							|  |  |  | 	overflow-y: auto; | 
					
						
							|  |  |  | 	box-sizing: border-box; | 
					
						
							|  |  |  | 	.ccpop{ | 
					
						
							|  |  |  | 		&.bed-edit-pop{ | 
					
						
							|  |  |  | 			::v-deep{ | 
					
						
							|  |  |  | 				.uni-data-checklist{ | 
					
						
							|  |  |  | 					display: none !important; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				.bed-wrapper{ | 
					
						
							|  |  |  | 					display: block !important; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				.card-cus-txt{ | 
					
						
							|  |  |  | 					display: none; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		::v-deep{ | 
					
						
							|  |  |  | 			uni-view[name="content"]{ | 
					
						
							|  |  |  | 				border-radius: 40rpx; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	.list-box,.bot-con{ | 
					
						
							|  |  |  | 		width: calc(100% - 34rpx); | 
					
						
							|  |  |  | 		height: auto; | 
					
						
							|  |  |  | 		margin: 17rpx auto 0; | 
					
						
							|  |  |  | 		overflow: hidden; | 
					
						
							|  |  |  | 		border-radius: 0 0 8rpx 8rpx; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	.edit-pop-title{ | 
					
						
							|  |  |  | 		font-size: 36rpx; | 
					
						
							|  |  |  | 		line-height: 50rpx; | 
					
						
							|  |  |  | 		letter-spacing: 3.17rpx; | 
					
						
							|  |  |  | 		color: #333333; | 
					
						
							|  |  |  | 		margin: 42rpx 0 46rpx 0; | 
					
						
							|  |  |  | 		text-align: center; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	.submit-popup{ | 
					
						
							|  |  |  | 		justify-content: center; | 
					
						
							|  |  |  | 		column-gap: 50rpx; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		width: 100%; | 
					
						
							|  |  |  | 		height: 124rpx; | 
					
						
							|  |  |  | 		background: #FFFFFF; | 
					
						
							|  |  |  | 		backdrop-filter: blur(54.4rpx); | 
					
						
							|  |  |  | 		box-shadow: 0rpx -2rpx 6rpx 0rpx rgba(181, 181, 181, 0.1319); | 
					
						
							|  |  |  | 		align-items: center; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		.btn.btn1{ | 
					
						
							|  |  |  | 			border-radius: 12rpx; | 
					
						
							|  |  |  | 			width: 300rpx; | 
					
						
							|  |  |  | 			height: 90rpx; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	.list-box{ | 
					
						
							|  |  |  | 		.item-wrapper{ | 
					
						
							|  |  |  | 			.item-inner ::v-deep{ | 
					
						
							|  |  |  | 					.bi{ | 
					
						
							|  |  |  | 						align-items: center; | 
					
						
							|  |  |  | 						column-gap: 12rpx; | 
					
						
							|  |  |  | 						img{ | 
					
						
							|  |  |  | 							width: 42rpx; | 
					
						
							|  |  |  | 							height: 42rpx; | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				 .status{ | 
					
						
							|  |  |  | 					display: flex; | 
					
						
							|  |  |  | 					justify-content: flex-end; | 
					
						
							|  |  |  | 					.status_text{ | 
					
						
							|  |  |  | 						display: flex; | 
					
						
							|  |  |  | 						border-radius: 6rpx; | 
					
						
							|  |  |  | 						font-size: 26rpx; | 
					
						
							|  |  |  | 						height: 40rpx; | 
					
						
							|  |  |  | 						line-height: 40rpx; | 
					
						
							|  |  |  | 						padding:  0 10rpx; | 
					
						
							|  |  |  | 						box-sizing: border-box; | 
					
						
							|  |  |  | 						min-width: 90rpx; | 
					
						
							|  |  |  | 						display: block; | 
					
						
							|  |  |  | 						text-align: center; | 
					
						
							|  |  |  | 						min-width: 128rpx; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					&.status_wait{ | 
					
						
							|  |  |  | 						.status_text{ | 
					
						
							|  |  |  | 							background: #F8FFF7; | 
					
						
							|  |  |  | 							border: 2rpx solid #5BD07A; | 
					
						
							|  |  |  | 							color: #58CA7F; | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					&.status_out_num{ | 
					
						
							|  |  |  | 						.status_text{ | 
					
						
							|  |  |  | 							background: #FFFAF7; | 
					
						
							|  |  |  | 							color: #FE6710; | 
					
						
							|  |  |  | 							border: 2rpx solid #FE6710; | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					&.status_down{ | 
					
						
							|  |  |  | 						.status_text{ | 
					
						
							|  |  |  | 							background: #FCFCFC; | 
					
						
							|  |  |  | 							border: 2rpx solid #999999; | 
					
						
							|  |  |  | 							color: #999999; | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					&.status_expire,&.status_cancle{ | 
					
						
							|  |  |  | 						.status_text{ | 
					
						
							|  |  |  | 							background: #FCFCFC; | 
					
						
							|  |  |  | 							border: 2rpx solid #AEB0B8; | 
					
						
							|  |  |  | 							color: #B6B8BF; | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					&.status_ing{ | 
					
						
							|  |  |  | 						.status_text{ | 
					
						
							|  |  |  | 							border: 2rpx solid #5FA1CB; | 
					
						
							|  |  |  | 							background: #F7FCFF; | 
					
						
							|  |  |  | 							color: #5FA1CB; | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				.queue-text{ | 
					
						
							|  |  |  | 					height: 40rpx; | 
					
						
							|  |  |  | 					font-size: 28rpx; | 
					
						
							|  |  |  | 					color: #242833; | 
					
						
							|  |  |  | 					line-height: 40rpx; | 
					
						
							|  |  |  | 					.queue-num-txt{ | 
					
						
							|  |  |  | 						height: 48rpx; | 
					
						
							|  |  |  | 						font-weight: 600; | 
					
						
							|  |  |  | 						font-size: 48rpx; | 
					
						
							|  |  |  | 						color: #39D067; | 
					
						
							|  |  |  | 						line-height: 48rpx; | 
					
						
							|  |  |  | 						margin: 0 8rpx; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				.book-date{ | 
					
						
							|  |  |  | 					height: 45rpx; | 
					
						
							|  |  |  | 					font-size: 32rpx; | 
					
						
							|  |  |  | 					line-height: 45rpx; | 
					
						
							|  |  |  | 					&.wait{ | 
					
						
							|  |  |  | 						color: #39D067; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					&.expire{ | 
					
						
							|  |  |  | 						color: #FD7B13; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	.bot-con{ | 
					
						
							|  |  |  | 		background: #FFFFFF; | 
					
						
							|  |  |  | 		margin-top: 15rpx; | 
					
						
							|  |  |  | 		padding: 40rpx 27rpx; | 
					
						
							|  |  |  | 		box-sizing: border-box; | 
					
						
							|  |  |  | 		overflow: hidden; | 
					
						
							|  |  |  | 		min-height: 430rpx; | 
					
						
							|  |  |  | 		.title{ | 
					
						
							|  |  |  | 			height: 44rpx; | 
					
						
							|  |  |  | 			font-size: 32rpx; | 
					
						
							|  |  |  | 			color: #000000; | 
					
						
							|  |  |  | 			line-height: 44rpx; | 
					
						
							|  |  |  | 			letter-spacing: 2rpx; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		.content{ | 
					
						
							|  |  |  | 			margin-top: 16rpx; | 
					
						
							|  |  |  | 			font-size: 32rpx; | 
					
						
							|  |  |  | 			color: #666666; | 
					
						
							|  |  |  | 			line-height: 46rpx; | 
					
						
							|  |  |  | 			padding-bottom: 124rpx; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	.pagebt{ | 
					
						
							|  |  |  | 		opacity: 0; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	.fixedBot{ | 
					
						
							|  |  |  | 		position: fixed; | 
					
						
							|  |  |  | 		bottom: 0; | 
					
						
							|  |  |  | 		left: 0; | 
					
						
							|  |  |  | 		width: 100%; | 
					
						
							|  |  |  | 		height: 124rpx; | 
					
						
							|  |  |  | 		background: #FFFFFF; | 
					
						
							|  |  |  | 		box-shadow: 0rpx -2rpx 6rpx 0rpx rgba(181,181,181,0.13); | 
					
						
							|  |  |  | 		backdrop-filter: blur(20rpx); | 
					
						
							|  |  |  | 		display: flex; | 
					
						
							|  |  |  | 		.submit{ | 
					
						
							|  |  |  | 			width: 100%; | 
					
						
							|  |  |  | 			display: flex; | 
					
						
							|  |  |  | 			justify-content: center; | 
					
						
							|  |  |  | 			align-items: center; | 
					
						
							|  |  |  | 			column-gap: 50rpx; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </style> |