You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
4.8 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="PlanListMain">
<view class="head"></view>
<view class="userInfo" v-if="MianInfo">
<view class="title">选择预约日期及时段</view>
<view class="row">
<view class="label">登记号</view>
<view class="value">{{MianInfo.reg_num}}</view>
</view>
<view class="row">
<view class="label">医嘱</view>
<view class="value">{{MianInfo.entrust}}</view>
</view>
<view class="date">
<view class="datetime">
<uni-datetime-picker v-model="SearchInfo.date" :clear-icon="false" type="date" @change="dateSelecteFunc" />
</view>
</view>
</view>
<view class="list">
<view class="info" v-for="(item,index) in List">
<view>
<view class="row">
<view class="label">执行科室:</view>
<view class="value">{{MianInfo.implement_department}}</view>
</view>
<view class="row">
<view class="label">资源:</view>
<view class="value">{{item.department_resources_name}}</view>
</view>
<view class="row">
<view class="label">时间段:</view>
<view class="value" v-if="item.begin_time">{{item.begin_time.substring(0,5)}}~{{item.end_time.substring(0,5)}}</view>
</view>
</view>
<view class="right">
<view class="right_top">
<view class="button" @click="StartYuYue(item)">确认</view>
</view>
<view class="right_bottom">已约/总数:<span style="color: darkturquoise;">{{item.used_count}}</span>/{{item.count}}</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import{ref,onMounted} from "vue"
import {GetEnablePlan,H5_YuYue} from "@/api"
import {onLoad,onShow} from "@dcloudio/uni-app"
let SearchInfo=ref({
date:'',
})
let List=ref([]);
let MianInfo=ref(null); //主表信息
const GetList=()=> {
GetEnablePlan({...SearchInfo.value}).then(res => {
if(res.status){
List.value=res.data.plan_list
MianInfo.value=res.data.mainInfo
SearchInfo.value.mainlistid=[MianInfo.value.id]
}
})
}
const dateSelecteFunc=(e)=>{
SearchInfo.value.date=e
GetList()
}
const StartYuYue=(item)=>{
uni.showModal({
cancelText:"取消",
confirmText:"确定",
title: '提示',
content: '确定预约 '+SearchInfo.value.date+' '+item.begin_time.substring(0,5)+'~'+item.end_time.substring(0,5)+' 时段吗?',
success: function (res) {
if (res.confirm) {
SearchInfo.value.planid=item.id
H5_YuYue({...SearchInfo.value}).then(res => {
if(res.status){
uni.showToast({
title: '预约成功',
});
setTimeout(function(){
uni.redirectTo({
url: '/pages/CheckItemMainList'
})
},1000)
}
})
}
}
});
}
onLoad((option)=>{
SearchInfo.value = JSON.parse(decodeURIComponent(option.data))
var today = new Date();
// 格式化日期为YYYY-MM-DD形式
function formatDate(date) {
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).slice(-2); // 月份从0开始所以需要+1
var day = ("0" + date.getDate()).slice(-2);
return year + "-" + month + "-" + day;
}
SearchInfo.value.date = formatDate(today);
GetList()
})
</script>
<style scoped>
.PlanListMain {
height: calc(100vh - 120rpx);
background: radial-gradient(circle at top center, #dcdcdc 30%, #e3e3e3, transparent 2%);
padding-top: 30rpx;
}
.userInfo {
background-color: #33cdc9;
margin-left: 20rpx;
margin-right: 20rpx;
border-radius: 30rpx;
padding: 40rpx 40rpx 0rpx 40rpx;
border: 1rpx solid #fff;
}
.userInfo .row {
margin-top: 20rpx;
font-size: 32rpx;
color: #fff;
}
.userInfo .value {
margin-left: 20rpx;
}
.userInfo .label {
text-align: right;
width: 30%;
}
.row {
display: flex;
}
.date{
text-align: center;
font-size: 30rpx;
background-color: #fff;
padding: 20rpx 60rpx;
border-radius: 30rpx;
box-shadow: 0rpx 10rpx 10rpx #add2d1;
color: #333;
/* transform: translateY(40rpx); */
position: relative;
top: 50rpx;
white-space: nowrap;
}
.title{
font-weight: 700;
color:#fff;
font-size: 32rpx;
}
.list{
margin-top: 60rpx;
padding: 20rpx;
}
.info{
background-color: #fff;
padding: 40rpx 40rpx 20rpx 40rpx;
display: flex;
justify-content: space-between;
border-radius: 20rpx;
color: #333;
}
.info .row{
margin-bottom: 20rpx;
}
.info .row .value{
font-weight: 700;
}
.info .right{
}
.info .right .right_top{
display: flex;
justify-content: center;
}
.info .right .right_bottom{
display: flex;
justify-content: flex-end;
margin-top: 20rpx;
}
.button{
width: 70rpx;
height: 60rpx;
text-align: center;
line-height: 60rpx;
background-color: #33cdc9;
padding: 20rpx;
border-radius: 20rpx;
color: #fff;
}
</style>