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.

349 lines
8.4 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.

<script setup>
import DraggableButton from "@/pages/components/goHome.vue";
/**
* name
* useryytjsj
* date2024年9月25日 10:25:00
*/
import {
ref,
nextTick,
onBeforeUnmount
} from "vue";
import {
$api,
$response,
$image
} from "@/api";
import {
onShow
} from "@dcloudio/uni-app";
import {
useStore
} from "@/store";
const $store = useStore();
let currentDate = ref(0);
let buyInfo = ref({}); // 购买信息
let yytjInfo = ref({}); // 购买信息
let nmrIndex = ref(-1); // 当前选中项目索引
let status = ref(0); // 1点了确定 2未点确定
let calendarShow = ref(false); // 日历显示
const rl_list = ref(false); //日历插槽
let user_person=ref({});
user_person.value= $store.getUser();
const setDefaultInfo = () => {
yytjInfo.value = $store.getYytjInfo();
buyInfo.value = $store.getBuyInfo();
// $store.setCheckupTypeId({})
yytjInfo.value = {
nmr_list: [],
doctor_date: "",
doctor_name: "",
doctor_id:"",
nmrIndex: -1,
...yytjInfo.value,
}
buyInfo.value = {
combo_id: "",
duo_xuan_yi: [],
group_id: "",
hospital: 1,
item_ids: [],
person_id: $store.user.person_id,
wj: "",
...buyInfo.value,
}
getnmrList()
}
const getUserInfo = async () => {
uni.showLoading({
title: "加载中",
});
const response = await $api('UserInfo')
uni.hideLoading();
$response(response, () => {
$store.setUser(response.data.info);
setDefaultInfo()
})
}
const mountedAction = async () => {
await getUserInfo()
};
onBeforeUnmount(() => {
if (!status.value) {
$store.setYytjInfo(uni.getStorageSync("yytjInfoS"));
}
});
const getnmrList = async () => {
let date = null
if (!!yytjInfo.value.doctor_date) {
date = yytjInfo.value.doctor_date
currentDate.value = yytjInfo.value.doctor_date
} else {
currentDate.value = getToday();
yytjInfo.value.doctor_date = currentDate.value;
}
moreTime(date, 1);
};
const moreTime = async (m, status) => {
const [year, month, day] = currentDate.value.split("-");
let dqmonth = m || `${year}-${month}`; //年 月份
let obj = {};
let methods = "";
getdoctorList(`${year}-${month}`)
calendarShow.value = true;
};
const monthSwitch = (givenDate) => {
const currentYear = new Date().getFullYear();
const currentMonth = new Date().getMonth() + 1;
// 获取当前日期
if (
givenDate.year < currentYear ||
(givenDate.year === currentYear && givenDate.month < currentMonth)
) {
// uni.$lu.toast("不能选择过去时间");
return false;
} else {
let str = `${givenDate.year}-${givenDate.month}`;
moreTime(str, 0);
}
};
const getToday = () => {
var today = new Date();
var year = today.getFullYear();
var month = (today.getMonth() + 1).toString().padStart(2, "0");
var day = today.getDate().toString().padStart(2, "0");
return year + "-" + month + "-" + day;
};
const changeDate = (e) => {
currentDate.value = e.fulldate;
yytjInfo.value.doctor_date = e.fulldate;
$store.setYytjInfo(yytjInfo.value);
uni.navigateTo({
url: '/pages/main/combo/combo?keshi_name='+DoctorInfo.value.keshiname+'&keshi_sex='+DoctorInfo.value.keshi_sex
})
}
const changerl = (e) => {
console.log(e)
if(e.extraInfo.info!=undefined && e.extraInfo.info=='出诊'){
changeDate(e)
}else{
uni.$lu.toast("当前日期不可预约");
}
};
const clickDoctor = (s) => {
status.value = 0;
let date = currentDate.value
};
const comfrimyy = () => {
uni.navigateTo({
url: '/pages/main/combo/combo'
})
};
const config_ref = ref(null);
const configRef = (e) => {
if (!config_ref.value) {
config_ref.value = e;
mountedAction();
}
};
let MonthList=ref([]);
let DoctorInfo=ref(false)
const getdoctorList = async (month) => {
let c_type=$store.getCheckupTypeId()
// 获取 体检报告列表
let obj = {
hospital: $store.save.hospital,
month:month,
doctor_id:yytjInfo.value.doctor_id?yytjInfo.value.doctor_id:null,
person_id:user_person.value.person_id,
checkup_type:c_type.id
};
uni.showLoading({
title: "加载中",
});
const response = await $api("DoctorGetList", obj);
uni.hideLoading();
$response(response, () => {
console.log(response, "response");
response.data.list.forEach((item)=>{
if(item.id==yytjInfo.value.doctor_id){
DoctorInfo.value=item
}
})
let rlArr = [];
response.data.paiban.forEach((item) => {
let o = {
date: item.date,
info: "出诊",
};
rlArr.push(o);
});
MonthList.value = rlArr;
uni.hideLoading();
});
};
onShow(() => {
if (!!config_ref.value) {
mountedAction();
}
});
</script>
<template>
<DraggableButton />
<view>
<view v-if="!!$store.config">
<view :ref="configRef"></view>
</view>
<view class="h-38rpx bg-#239EA3 pl-20rpx pr-20rpx box-border">
<view style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
class="p-16rpx pb-20rpx pt-30rpx rounded-15rpx bg-#fff ylrl" v-if="calendarShow">
<view class="p-10rpx" v-if="DoctorInfo">
<view class="flex flex-row text-#8B8B8B text-23rpx">
<image :src="$image(DoctorInfo.head_img)" class="w-170rpx h-226rpx mr-20rpx"></image>
<view class="flex-1 flex flex-col flex-justify-start pr-20rpx">
<view class="text-#0E0E0E text-36rpx">
{{ DoctorInfo.name }}
<span class="text-26rpx text-#515151 ml-10rpx">{{
DoctorInfo.level
}}</span>
</view>
<view class="mt-33rpx mb-10rpx line-clamp-1">
<text v-if="false">{{ DoctorInfo.hospital }}:</text>
<text>{{ DoctorInfo.time }}</text>
</view>
<view class="line-clamp-2">
{{ DoctorInfo.desc }}
</view>
</view>
</view>
<view class="w-100% h-1rpx bg-#E6E9E9 mt-15rpx" > </view>
</view>
<uni-calendar :selected="MonthList" :startDate="getToday()" :insert="true" :date="currentDate"
@change="changerl" @monthSwitch="monthSwitch" />
</view>
<!-- <view style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
class="p-30rpx pl-10rpx pr-10rpx rounded-15rpx bg-#fff mt-15rpx text-#101010 text-28rpx">
<view class="bg-#F7F7F7 pl-20rpx pr-20rpx pt-23rpx pb-25rpx">
<text>{{ $store.getUser()?.name }}</text>
<view class="bg-#EFEFEF rounded-15rpx p-10rpx pb-15rpx pt-15rpx mt-20rpx">
<view class="p-20rpx pl-10rpx pr-10rpx rounded-15rpx between" @click="clickDoctor()">
<text>体检医生</text>
<text class="ml-10rpx text-#0E0E0E center">
{{ yytjInfo?.doctor_name || "请选择" }}
<uni-icons type="right" size="14"></uni-icons>
</text>
</view>
</view>
</view>
</view>
<view class="pb-100rpx">
<view @click="comfrimyy"
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>
</view>
</template>
<style scoped lang="scss">
.activeTime {
background-color: #239ea3;
color: #fff;
}
.acitvetc {
background-color: #e0f1f2;
}
::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;
color:#ccc;
}
.uni-calendar-item__weeks-box-text:has(+ .uni-calendar-item--extra) {
color: #666 ;
}
.uni-calendar-item__weeks-box-text:has(+ .uni-calendar-item--disable) {
color: #ccc !important;
}
.uni-calendar-item__weeks-lunar-text {
font-size: 16rpx;
}
.uni-calendar-item__weeks-box-item {
width: 100%;
}
.uni-calendar__backtoday {
display: none;
}
.uni-calendar-item--disable {
.uni-calendar-item__weeks-lunar-text {
display: none;
}
}
}
</style>