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.

251 lines
5.3 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>
<div>
<div class="userInfo">
<div v-if="MianInfo">
<div class="title">选择预约日期及时段</div>
<div class="row" style="justify-content: space-around; font-size: 18px;color: #fff;">
<div class="row">
<div class="label">登记号</div>
<div class="value">{{MianInfo.reg_num}}</div>
</div>
<div class="row">
<div class="label">医嘱</div>
<div class="value">{{MianInfo.entrust}}</div>
</div>
</div>
</div>
<div class="date">
<el-date-picker size="large" @change="dateSelecteFunc()"
style="width: 100%; border-radius: 20px;height: 60px;" v-model="SearchInfo.date" range-separator="至"
start-placeholder="开始时间" end-placeholder="结束时间" value-format="YYYY-MM-DD" />
</div>
</div>
<div class="list" v-loading="loading">
<div class="info" v-for="(item,index) in List">
<div>
<div class="row">
<div class="label">执行科室:</div>
<div class="value">{{MianInfo.implement_department}}</div>
</div>
<div class="row">
<div class="label">资源:</div>
<div class="value">{{item.department_resources_name}}</div>
</div>
<div class="row">
<div class="label">时间段:</div>
<div class="value" v-if="item.begin_time">{{item.begin_time.substring(0,5)}}~{{item.end_time.substring(0,5)}}</div>
</div>
</div>
<div class="right">
<div class="right_top">
<div class="button" @click="StartYuYue(item)">确认</div>
</div>
<div class="right_bottom">已约/总数:<span style="color: darkturquoise;">{{item.used_count}}</span>/{{item.count}}</div>
</div>
</div>
<div v-if="List==null || List.length==0">
<el-empty description="当前日期无号源" />
</div>
</div>
</div>
</template>
<script setup>
import {
GetEnablePlan,
GetServiceDateTime,H5_YuYue
} from "@/api/api.js";
import {
ElMessage,ElMessageBox
} from 'element-plus'
import {
ref,
nextTick,
onMounted
} from 'vue'
import {
useRoute,
useRouter
} from "vue-router"
const route = useRoute()
const router = useRouter()
let SearchInfo = ref({
date: '',
})
let loading=ref(false)
let List = ref([])
let MianInfo = ref(null); //主表信息
const GetList = () => {
loading.value=true
GetEnablePlan({
...SearchInfo.value
}).then(res => {
loading.value=false
if (res.status) {
List.value = res.data.plan_list
MianInfo.value = res.data.mainInfo
SearchInfo.value.mainlistid = [MianInfo.value.id]
}
})
}
const dateSelecteFunc = (e) => {
GetList()
}
const StartYuYue=(item)=>{
ElMessageBox.confirm(
'确定预约 '+SearchInfo.value.date+' '+item.begin_time.substring(0,5)+'~'+item.end_time.substring(0,5)+' 时段吗?',
'Warning',
{
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning',
}
)
.then(() => {
console.log(66666)
SearchInfo.value.planid=item.id
H5_YuYue({...SearchInfo.value}).then(res => {
if(res.status){
setTimeout(function(){
window.location.href ='./#/checkitemmainlist';
},1000)
} else{
ElMessage.error(res.msg)
}
})
})
.catch(() => {
})
}
onMounted(() => {
SearchInfo.value = JSON.parse(decodeURIComponent(route.query.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>
.CheckItemMain {
height: calc(100vh);
background-color: #eef7fa;
padding-top: 30px;
}
.row {
display: flex;
align-items: center;
}
.title {
font-size: 23px;
font-weight: bolder;
color: #1b706d;
margin-bottom: 20px;
}
.userInfo {
border: 1px solid #ccc;
border-radius: 4px;
padding:20px 20px;
background-color: #33cdc9;
margin-bottom: 50px;
}
.date {
padding: 8px;
text-align: center;
width: 50%;
margin-top: 16px;
transform: translate(50%, 55px);
}
.label {
font-size: 18px;
color: #fff;
}
.value {
font-size: 22px;
font-weight: 900;
}
.list{
margin-top: 60px;
padding-bottom: 10px;
background-color: #ebebeb;
display:flex;
flex-direction: column;
justify-content: center;
}
.info{
background-color: #fff;
padding: 40px 40px 20px 40px;
display: flex;
justify-content: space-between;
border-radius: 20px;
color: #333;
margin-left: 10px;
margin-right: 10px;
margin-top: 10px;
}
.info .row{
margin-bottom: 20px;
}
.info .row .label{
font-size: 14px;
color:#333;
}
.info .row .value{
font-weight: 700;
font-size: 14px;
}
.info .right{
}
.info .right .right_top{
display: flex;
justify-content: center;
}
.info .right .right_bottom{
display: flex;
justify-content: flex-end;
margin-top: 20px;
}
.button{
width: 80px;
height: 80px;
text-align: center;
line-height: 80px;
background-color: #33cdc9;
border-radius: 10px;
color: #fff;
}
</style>