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.
444 lines
12 KiB
Vue
444 lines
12 KiB
Vue
<template>
|
|
<view class="ctime_main">
|
|
<view class="top">
|
|
<view v-if="orderInfo" style="display: flex;justify-content: space-between;">
|
|
<view style="font-size: 26rpx; color: #666;">体检医生 - <span v-if="doctor_name"
|
|
style="font-size: 28rpx;font-weight: 700;"> {{doctor_name}}</span></view>
|
|
<view style="font-size: 26rpx; color: #333;font-weight: 700;" @click="selectDoctor()">重新选择 </view>
|
|
</view>
|
|
</view>
|
|
<view class="zhouli">
|
|
<WeeklyCalendar v-if="weekList" :dataInfo="weekList" :selectedTime="selectedTime"
|
|
@selectDate="selectDateFunc" @selectTime="selectTimeFunc" @openMonth="openMonthFunc" />
|
|
</view>
|
|
<view class="dateitem" v-if="orderInfo">
|
|
<view
|
|
style="background-color: #f7f7f7; padding: 20rpx; font-size: 30rpx; border-radius: 20rpx;color: #333;">
|
|
<view>{{orderInfo.name}}</view>
|
|
<view
|
|
style="background-color: #f1f1f1;padding: 20rpx 10rpx; margin-top: 10rpx;border-radius: 14rpx;font-size: 28rpx;color: #666;">
|
|
<view @click="itemClick('nmr')"
|
|
v-if=" orderInfo.buy_info.nmr_list && orderInfo.buy_info.nmr_list.length>0"
|
|
style="padding: 20rpx;" :class="itemSelected=='nmr'?'itemSelected':''">
|
|
<view v-for="(item1,index1) in orderInfo.buy_info.nmr_list">
|
|
{{item1.name}} <span v-if="nmr_date && nmr_time">{{nmr_date}} {{nmr_time}}</span>
|
|
</view>
|
|
</view>
|
|
<view @click="itemClick('tj')" style="margin-top: 10rpx;padding: 20rpx;color: #666;"
|
|
:class="itemSelected=='tj'?'itemSelected':''">体检日期 <span v-if="tj_date && tj_time">{{tj_date}}
|
|
{{tj_time}}</span></view>
|
|
</view>
|
|
|
|
</view>
|
|
</view>
|
|
<view class="pb-100rpx">
|
|
<view @click="StartYuYue()"
|
|
class="text-#fff text-32rpx rounded-45rpx bg-#239EA3 mt-40rpx ma w-520rpx h-90rpx flex flex-items-center flex-justify-center">
|
|
确定
|
|
</view>
|
|
</view>
|
|
<view id="ylrl">
|
|
<uni-calendar :insert="false" :showMonth="false" ref="DoctorMonthCalendar" @confirm="DoctMonthConfirm" />
|
|
<uni-calendar :selected="MonthList" @monthSwitch="monthSwitch" :insert="false"
|
|
:showMonth="false" ref="MonthCalendar" @confirm="MonthConfirm" />
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
onMounted,
|
|
ref
|
|
} from 'vue';
|
|
import {
|
|
$image,
|
|
$api,
|
|
$response
|
|
} from "@/api";
|
|
import {
|
|
useStore
|
|
} from "@/store";
|
|
const $store = useStore();
|
|
import {
|
|
onShow
|
|
} from "@dcloudio/uni-app";
|
|
import WeeklyCalendar from '@/common/WeeklyCalendar.vue';
|
|
let nmr_date = ref(null);
|
|
let nmr_time = ref(null);
|
|
let nmr_plan_id = ref(null); //核磁号源id
|
|
|
|
let tj_date = ref(null);
|
|
let tj_time = ref(null);
|
|
let tj_plan_id = ref(null); //体检号源id
|
|
|
|
let weekList = ref(null);
|
|
|
|
let doctor_name = ref(null);
|
|
//查询体检号源
|
|
const GetDayPlanListFunc = async () => {
|
|
uni.showLoading();
|
|
let data = {
|
|
hospital: orderInfo.value.hospital_id,
|
|
person_id: orderInfo.value.person_id,
|
|
date: selectedDate.value,
|
|
use_type: orderInfo.value.type,
|
|
checkup_type_id: orderInfo.value.checkup_type_id,
|
|
amount: orderInfo.value.true_price,
|
|
}
|
|
const response = await $api("GetDayPlanList", data);
|
|
uni.hideLoading();
|
|
$response(response, () => {
|
|
weekList.value = response.data
|
|
|
|
});
|
|
};
|
|
//查询核磁号源
|
|
const NMRGetDayPlanListFunc = async () => {
|
|
uni.showLoading();
|
|
let data = {
|
|
hospital: orderInfo.value.hospital_id,
|
|
date: selectedDate.value,
|
|
}
|
|
const response = await $api("NMRGetDayPlanList", data);
|
|
uni.hideLoading();
|
|
$response(response, () => {
|
|
weekList.value = response.data
|
|
|
|
});
|
|
};
|
|
let selectedTime = ref(null);
|
|
let orderInfo = ref(null)
|
|
const GetOrderInfo = async () => {
|
|
uni.showLoading();
|
|
const response = await $api("GetOrderDetail", {
|
|
id: 38
|
|
});
|
|
uni.hideLoading();
|
|
$response(response, () => {
|
|
orderInfo.value = response.data.info
|
|
doctor_name.value = orderInfo.value.doctor
|
|
//如果有核磁项目
|
|
if (orderInfo.value.buy_info.nmr_list && orderInfo.value.buy_info.nmr_list.length > 0) {
|
|
itemSelected.value = 'nmr'
|
|
selectedTime.value = '10:45' //应该是核磁时间
|
|
selectedDate.value = '2024-10-09' //应该是核磁日期
|
|
|
|
NMRGetDayPlanListFunc()
|
|
} else {
|
|
itemSelected.value = 'tj'
|
|
selectedTime.value = orderInfo.value.appointment_time
|
|
selectedDate.value = orderInfo.value.appointment_date
|
|
|
|
GetDayPlanListFunc()
|
|
}
|
|
nmr_date.value = '2024-10-09'
|
|
nmr_time.value = '10:45'
|
|
tj_date.value = orderInfo.value.appointment_date
|
|
tj_time.value = orderInfo.value.appointment_time
|
|
});
|
|
}
|
|
|
|
//weekly子组件点击了日期
|
|
let selectedDate = ref(null);
|
|
const selectDateFunc = (date) => {
|
|
selectedDate.value = date
|
|
selectedTime.value = null
|
|
if (itemSelected.value == 'nmr') {
|
|
nmr_time.value = null
|
|
nmr_date.value = date
|
|
|
|
tj_time.value = null //如果切换核磁日期则清空体检选择的日期时间
|
|
tj_date.value = null
|
|
doctor_name.value = null //清空体检医生
|
|
NMRGetDayPlanListFunc()
|
|
}
|
|
if (itemSelected.value == 'tj') {
|
|
tj_time.value = null
|
|
tj_date.value = date
|
|
doctor_name.value = null //清空体检医生
|
|
GetDayPlanListFunc();
|
|
}
|
|
|
|
}
|
|
//weekly子组件点击了时间
|
|
let SelectedPlanId = ref(null)
|
|
const selectTimeFunc = (timeinfo) => {
|
|
selectedTime.value = timeinfo.time
|
|
SelectedPlanId.value = timeinfo.id
|
|
if (itemSelected.value == 'nmr') {
|
|
nmr_time.value = timeinfo.time
|
|
nmr_plan_id.value = timeinfo.id
|
|
}
|
|
if (itemSelected.value == 'tj') {
|
|
tj_time.value = timeinfo.time
|
|
tj_plan_id.value = timeinfo.id
|
|
}
|
|
}
|
|
let itemSelected = ref(null);
|
|
const itemClick = (type) => {
|
|
//weekList.value=null
|
|
|
|
if (type == 'nmr') {
|
|
selectedTime.value = nmr_time.value
|
|
selectedDate.value = nmr_date.value
|
|
NMRGetDayPlanListFunc()
|
|
}
|
|
if (type == 'tj') {
|
|
if (orderInfo.value.buy_info.nmr_list && orderInfo.value.buy_info.nmr_list.length > 0) {
|
|
if (nmr_time.value == null || nmr_date.value == null) {
|
|
uni.$lu.toast("请先预约为影像科项目选择时间");
|
|
return false
|
|
}
|
|
}
|
|
if (tj_date.value == null) {
|
|
tj_date.value = nmr_date.value
|
|
}
|
|
selectedTime.value = tj_time.value
|
|
selectedDate.value = tj_date.value
|
|
GetDayPlanListFunc()
|
|
}
|
|
itemSelected.value = type
|
|
}
|
|
|
|
let DoctorMonthCalendar = ref(null)
|
|
const selectDoctor = () => {
|
|
if (orderInfo.value.buy_info.nmr_list && orderInfo.value.buy_info.nmr_list.length > 0) {
|
|
if (nmr_time.value == null || nmr_date.value == null) {
|
|
uni.$lu.toast("请先预约为影像科项目选择时间");
|
|
return false
|
|
}
|
|
}
|
|
if (tj_date.value == null) { //如果没有选定体检日期,则打开日历
|
|
DoctorMonthCalendar.value.open();
|
|
} else {
|
|
uni.navigateTo({
|
|
url: `/pages/main/selectDoctor/selectDoctor?date=${tj_date.value}`,
|
|
});
|
|
}
|
|
|
|
}
|
|
//点击医生月历日期后跳转
|
|
const DoctMonthConfirm = (e) => {
|
|
tj_date.value = e.year + "-" + e.month + "-" + e.date
|
|
uni.navigateTo({
|
|
url: `/pages/main/selectDoctor/selectDoctor?date=${tj_date.value}`,
|
|
});
|
|
}
|
|
let MonthCalendar = ref(null)
|
|
let MonthList = ref([]); //月历号源数据
|
|
let currentDate = ref(null); //月历当前日期
|
|
const monthSwitch = (e) => { //月历切换月份
|
|
let ym=e.year+""+"-"+e.month+""
|
|
if (itemSelected.value == 'nmr') {
|
|
NMRGetMonthPlanListFunc(ym)
|
|
}
|
|
if (itemSelected.value == 'tj') {
|
|
GetMonthPlanListFunc(ym)
|
|
}
|
|
}
|
|
const MonthConfirm = (e) => { //月历确认日期
|
|
console.log(e.fulldate)
|
|
selectedDate.value=e.fulldate
|
|
selectedTime.value = null
|
|
if (itemSelected.value == 'nmr') {
|
|
nmr_time.value = null
|
|
nmr_date.value = e.fulldate
|
|
|
|
tj_time.value = null //如果切换核磁日期则清空体检选择的日期时间
|
|
tj_date.value = null
|
|
doctor_name.value = null //清空体检医生
|
|
NMRGetDayPlanListFunc()
|
|
}
|
|
if (itemSelected.value == 'tj') {
|
|
tj_time.value = null
|
|
tj_date.value = e.fulldate
|
|
doctor_name.value = null //清空体检医生
|
|
GetDayPlanListFunc()
|
|
}
|
|
}
|
|
//获取体检每月号源数量
|
|
const GetMonthPlanListFunc = async (ym='') => {
|
|
uni.showLoading();
|
|
let data = {
|
|
hospital: orderInfo.value.hospital_id,
|
|
person_id: orderInfo.value.person_id,
|
|
month: ym?ym:tj_date.value.substring(0, 7),
|
|
use_type: orderInfo.value.type,
|
|
checkup_type_id: orderInfo.value.checkup_type_id,
|
|
amount: orderInfo.value.true_price,
|
|
}
|
|
const response = await $api("GetMonthPlanCount", data);
|
|
uni.hideLoading();
|
|
$response(response, () => {
|
|
let rlArr = [];
|
|
response.data.list.forEach((item) => {
|
|
let o = {
|
|
date: item.date,
|
|
info: "余号" + item.count,
|
|
};
|
|
rlArr.push(o);
|
|
});
|
|
MonthList.value = rlArr;
|
|
//MonthCalendar.value.open()
|
|
});
|
|
};
|
|
//获取核磁每月号源数量
|
|
const NMRGetMonthPlanListFunc = async (ym='') => {
|
|
uni.showLoading();
|
|
let data = {
|
|
hospital: orderInfo.value.hospital_id,
|
|
month: ym?ym:nmr_date.value.substring(0, 7),
|
|
}
|
|
const response = await $api("NMRGetMonthPlanCount", data);
|
|
uni.hideLoading();
|
|
$response(response, () => {
|
|
let rlArr = [];
|
|
response.data.list.forEach((item) => {
|
|
let o = {
|
|
date: item.date,
|
|
info: "余号" + item.count,
|
|
};
|
|
rlArr.push(o);
|
|
});
|
|
MonthList.value = rlArr;
|
|
//MonthCalendar.value.open()
|
|
});
|
|
};
|
|
//打开月历
|
|
const openMonthFunc = async() => {
|
|
if (itemSelected.value == 'nmr') {
|
|
await NMRGetMonthPlanListFunc()
|
|
}
|
|
if (itemSelected.value == 'tj') {
|
|
await GetMonthPlanListFunc()
|
|
}
|
|
MonthCalendar.value.open()
|
|
}
|
|
//点击提交
|
|
const StartYuYue = async() => {
|
|
if(tj_time.value==null){
|
|
uni.$lu.toast("请选择体检日期");
|
|
return false
|
|
}
|
|
console.log(tj_plan_id.value);
|
|
uni.showLoading();
|
|
let data = {
|
|
orderid: orderInfo.value.id,
|
|
planid: tj_plan_id,
|
|
nmrPlanid:nmr_plan_id,
|
|
doctor: doctor_name.value
|
|
}
|
|
const response = await $api("ChangeAppointment", data);
|
|
uni.hideLoading();
|
|
$response(response, () => {
|
|
if(response.status){
|
|
uni.showToast({
|
|
title: '改约完成'
|
|
});
|
|
uni.redirectTo({
|
|
url:'/pages/main/order/order'
|
|
})
|
|
}
|
|
});
|
|
}
|
|
|
|
let temp = null
|
|
onMounted(() => {
|
|
//清空一下缓存的医生,防止出问题
|
|
temp = $store.getYytjInfo()
|
|
temp.doctor_name = ""
|
|
$store.setYytjInfo(temp)
|
|
|
|
GetOrderInfo()
|
|
});
|
|
onShow(() => {
|
|
|
|
temp = $store.getYytjInfo()
|
|
if (temp.doctor_name != null && temp.doctor_name != '') {
|
|
doctor_name.value = temp.doctor_name
|
|
}
|
|
|
|
})
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.ctime_main {
|
|
padding: 20rpx;
|
|
}
|
|
|
|
.top {
|
|
background-color: #fff;
|
|
border-radius: 20rpx;
|
|
margin-bottom: 20rpx;
|
|
padding: 20rpx;
|
|
}
|
|
|
|
.zhouli {
|
|
padding: 20rpx;
|
|
background-color: #fff;
|
|
border-radius: 20rpx;
|
|
}
|
|
|
|
.itemSelected {
|
|
background-color: #e0fafa;
|
|
border-radius: 10rpx;
|
|
|
|
}
|
|
|
|
.dateitem {
|
|
padding: 20rpx;
|
|
background-color: #fff;
|
|
border-radius: 20rpx;
|
|
margin-top: 20rpx;
|
|
}
|
|
|
|
::v-deep #ylrl {
|
|
.uni-calendar__header,
|
|
.uni-calendar__weeks-day {
|
|
border: none;
|
|
}
|
|
.uni-calendar-item--checked {
|
|
background-color: transparent;
|
|
.uni-calendar-item__weeks-box-item {
|
|
background-color: #239ea3 !important;
|
|
border-radius: 12rpx;
|
|
.uni-calendar-item--extra {
|
|
color: #fff !important;
|
|
}
|
|
}
|
|
}
|
|
.uni-calendar-item--isDay {
|
|
background-color: #239ea3 !important;
|
|
border-radius: 12rpx;
|
|
color: #fff !important;
|
|
}
|
|
.uni-calendar-item--extra {
|
|
color: #239ea3;
|
|
}
|
|
|
|
.uni-calendar-item__weeks-box {
|
|
// padding: 10rpx;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.uni-calendar-item__weeks-box-circle {
|
|
background-color: rgba(0, 0, 0, 0);
|
|
}
|
|
.uni-calendar-item--isDay-text {
|
|
color: #333;
|
|
}
|
|
.uni-calendar-item__weeks-box-text {
|
|
font-size: 26rpx;
|
|
}
|
|
.uni-calendar-item__weeks-lunar-text {
|
|
font-size: 16rpx;
|
|
}
|
|
|
|
.uni-calendar-item__weeks-box-item {
|
|
width: 100%;
|
|
}
|
|
.uni-calendar__backtoday {
|
|
display: none;
|
|
}
|
|
}
|
|
</style> |