更新 预约日期逻辑调整

main
鹿和sa0ChunLuyu 1 year ago
parent 29bca06861
commit 48088af219

@ -258,10 +258,15 @@
}, },
{ {
"path": "pages/main/question/choose/choose", "path": "pages/main/question/choose/choose",
"style" : "style": {
{
"navigationBarTitleText": "" "navigationBarTitleText": ""
} }
},
{
"path": "pages/main/ysdate/ysdate",
"style": {
"navigationBarTitleText": "预约医生"
}
} }
], ],

@ -5,10 +5,20 @@ import DraggableButton from "@/pages/components/goHome.vue";
* usersa0ChunLuyu * usersa0ChunLuyu
* date2024年9月11日 19:24:50 * date2024年9月11日 19:24:50
*/ */
import { ref } from "vue"; import {
import { $api, $image, $response } from "@/api"; ref
import { onShow } from "@dcloudio/uni-app"; } from "vue";
import { useStore } from "@/store"; import {
$api,
$image,
$response
} from "@/api";
import {
onShow
} from "@dcloudio/uni-app";
import {
useStore
} from "@/store";
const $store = useStore(); const $store = useStore();
const $props = defineProps({ const $props = defineProps({
url: { url: {
@ -21,7 +31,23 @@ const button_list = ref([]);
const getButtonList = async (api) => { const getButtonList = async (api) => {
const response = await $api(api); const response = await $api(api);
$response(response, () => { $response(response, () => {
// if (api === 'CheckUpTypeGetList') {
// button_list.value = [
// ...response.data.list,
// {
// created_at: "2024-08-29 16:22:12",
// id: 6,
// is_del: 0,
// logo: "/storage/20240822/sfptyuyue.png",
// name: "",
// status: 1,
// updated_at: "2024-10-26 10:45:52",
// url: "/pages/main/ysdate/ysdate"
// }
// ];
// } else {
button_list.value = response.data.list; button_list.value = response.data.list;
// }
}); });
}; };
@ -49,9 +75,12 @@ const configRef = (e) => {
const buttonClick = (info) => { const buttonClick = (info) => {
if (!!info.url) { if (!!info.url) {
if (info.id) { if (info.id) {
$store.setCheckupTypeId({ id: info.id }); $store.setCheckupTypeId({
id: info.id
});
} }
$store.setComboContrast([]); // $store.setComboContrast([]); //
$store.setYytjInfo({});
uni.navigateTo({ uni.navigateTo({
url: info.url, url: info.url,
}); });
@ -74,12 +103,7 @@ onShow(() => {
</view> </view>
<view class="button_list_wrapper"> <view class="button_list_wrapper">
<view <view @click="buttonClick(i)" class="button_item_wrapper" v-for="(i, k) in button_list" :key="k">
@click="buttonClick(i)"
class="button_item_wrapper"
v-for="(i, k) in button_list"
:key="k"
>
<view class="button_icon_wrapper"> <view class="button_icon_wrapper">
<image :src="$image(i.logo)"></image> <image :src="$image(i.logo)"></image>
</view> </view>

@ -137,7 +137,14 @@
duo_xuan_yi: $store.getDuoXuanYi(), duo_xuan_yi: $store.getDuoXuanYi(),
wj: wj.value, wj: wj.value,
}); });
if (!!$store.yytjInfo.doctor_name) {
$store.setYytjInfo({
doctor_name: $store.yytjInfo.doctor_name,
doctor_date: $store.yytjInfo.doctor_date,
});
} else {
$store.setYytjInfo({}); $store.setYytjInfo({});
}
uni.setStorageSync("yytjInfoS", {}); uni.setStorageSync("yytjInfoS", {});
uni.navigateTo({ uni.navigateTo({
url: "/pages/main/tjyy/tjyy", url: "/pages/main/tjyy/tjyy",
@ -211,13 +218,12 @@
<view class="pt-35rpx rounded-15rpx px-10rpx bg-#fff pb-30rpx box-border b-0 b-t-1 b-solid b-#E1ECEE"> <view class="pt-35rpx rounded-15rpx px-10rpx bg-#fff pb-30rpx box-border b-0 b-t-1 b-solid b-#E1ECEE">
<view class="flex w-full" v-if="status == 1"> <view class="flex w-full" v-if="status == 1">
<!-- 1个检套餐 显示套餐信息 --> <!-- 1个检套餐 显示套餐信息 -->
<image v-if="comboInfo.img" :src="$image(comboInfo.img)" class="w-190rpx h-190rpx mr-37rpx" <image v-if="comboInfo.img" :src="$image(comboInfo.img)" class="w-190rpx h-190rpx mr-37rpx" mode="widthFix" />
mode="widthFix" />
<view class="flex flex-col grow"> <view class="flex flex-col grow">
<text>{{ comboInfo.combo_name }}</text> <text>{{ comboInfo.combo_name }}</text>
<view class="mt-13rpx mb-18rpx"> <view class="mt-13rpx mb-18rpx">
<uni-tag v-for="(val, i) in comboInfo.tags" :key="i" size="small" :inverted="true" <uni-tag v-for="(val, i) in comboInfo.tags" :key="i" size="small" :inverted="true" :text="val.text"
:text="val.text" class="mr-8rpx" :custom-style=" class="mr-8rpx" :custom-style="
'background-color:' + 'background-color:' +
val.color + val.color +
';border-color:' + ';border-color:' +
@ -311,8 +317,8 @@
<view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"></view> <view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"></view>
<view class="grow center">{{ val.keshi_name }}{{ val.children.length }}</view> <view class="grow center">{{ val.keshi_name }}{{ val.children.length }}</view>
</view> </view>
<view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx" <view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx" v-for="(v, i) in val.children"
v-for="(v, i) in val.children" :key="i"> :key="i">
<view <view
class="min-w-155rpx break-all max-w-155rpx center b-0 b-r-4 b-solid b-#fff p-10rpx box-border text-center"> class="min-w-155rpx break-all max-w-155rpx center b-0 b-r-4 b-solid b-#fff p-10rpx box-border text-center">
{{ v.name }} {{ v.name }}
@ -339,8 +345,8 @@
<view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"></view> <view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"></view>
<view class="grow center">{{ val.keshi_name }}{{ val.children.length }}</view> <view class="grow center">{{ val.keshi_name }}{{ val.children.length }}</view>
</view> </view>
<view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx" <view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx" v-for="(v, i) in val.children"
v-for="(v, i) in val.children" :key="i"> :key="i">
<view <view
class="min-w-155rpx break-all max-w-155rpx center b-0 b-r-4 b-solid b-#fff p-10rpx box-border text-center"> class="min-w-155rpx break-all max-w-155rpx center b-0 b-r-4 b-solid b-#fff p-10rpx box-border text-center">
{{ v.name }} {{ v.name }}
@ -366,8 +372,8 @@
<view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"></view> <view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"></view>
<view class="grow center">{{ val.keshi_name }}{{ val.children.length }}</view> <view class="grow center">{{ val.keshi_name }}{{ val.children.length }}</view>
</view> </view>
<view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx" <view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx" v-for="(v, i) in val.children"
v-for="(v, i) in val.children" :key="i"> :key="i">
<view <view
class="min-w-155rpx break-all max-w-155rpx center b-0 b-r-4 b-solid b-#fff p-10rpx box-border text-center"> class="min-w-155rpx break-all max-w-155rpx center b-0 b-r-4 b-solid b-#fff p-10rpx box-border text-center">
{{ v.name }} {{ v.name }}
@ -445,8 +451,7 @@
</view> </view>
</view> </view>
<view class="flex"> <view class="flex">
<button @click="addCombo()" <button @click="addCombo()" class="bg-#ED6907 text-30rpx text-#fff rounded-l-full px-34rpx w-200rpx h-full">
class="bg-#ED6907 text-30rpx text-#fff rounded-l-full px-34rpx w-200rpx h-full">
增加项目 增加项目
</button> </button>
<button @click="buy()" class="bg-#239EA3 text-30rpx text-#fff rounded-r-full px-34rpx w-200rpx h-full"> <button @click="buy()" class="bg-#239EA3 text-30rpx text-#fff rounded-r-full px-34rpx w-200rpx h-full">

@ -0,0 +1,313 @@
<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); //
const setDefaultInfo = () => {
yytjInfo.value = $store.getYytjInfo();
buyInfo.value = $store.getBuyInfo();
$store.setCheckupTypeId({
id: 1
})
yytjInfo.value = {
nmr_list: [],
doctor_date: "",
doctor_name: "",
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 () => {
const response = await $api('UserInfo')
$response(response, () => {
$store.setUser(response.data.info);
setDefaultInfo()
})
}
const mountedAction = async () => {
uni.showLoading({
title: "加载中",
});
await getUserInfo()
};
onBeforeUnmount(() => {
if (!status.value) {
$store.setYytjInfo(uni.getStorageSync("yytjInfoS"));
}
});
const getnmrList = async () => {
const response = await $api("BuyInfo", buyInfo.value);
$response(response, () => {
uni.hideLoading();
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) => {
uni.showLoading({
title: "加载中"
});
const [year, month, day] = currentDate.value.split("-");
let dqmonth = m || `${year}-${month}`; //
let obj = {};
let methods = "";
obj = {
hospital: buyInfo.value.hospital,
person_id: buyInfo.value.person_id,
month: dqmonth, //
use_type: 1,
checkup_type_id: 1,
amount: 0,
};
const response = await $api("GetMonthPlanCount", obj);
$response(response, () => {
rl_list.value = [];
calendarShow.value = true;
uni.hideLoading();
});
};
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;
yytjInfo.value.doctor_name = '';
$store.setYytjInfo(yytjInfo.value);
clickDoctor()
}
const changerl = (e) => {
let deep_date = JSON.parse(JSON.stringify(currentDate.value))
if (!!yytjInfo.value.doctor_name) {
uni.showModal({
title: "提示",
content: "已选择医生,切换日期将重新选择医生,是否继续",
showCancel: true,
success: ({
confirm
}) => {
if (confirm) {
changeDate(e)
} else {
calendarShow.value = false
currentDate.value = deep_date;
yytjInfo.value.doctor_date = e.fulldate;
nextTick(() => {
calendarShow.value = true
})
}
},
});
} else {
changeDate(e)
}
};
const clickDoctor = (s) => {
status.value = 0;
let date = currentDate.value
uni.navigateTo({
url: `/pages/main/selectDoctor/selectDoctor?date=${date}`,
});
};
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();
}
};
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">
<uni-calendar :selected="rl_list" :startDate="getToday()" :showMonth="false" :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;
}
.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>

@ -5,10 +5,21 @@ import DraggableButton from "@/pages/components/goHome.vue";
* useryytjsj * useryytjsj
* date2024年9月25日 10:25:00 * date2024年9月25日 10:25:00
*/ */
import { ref, onBeforeUnmount } from "vue"; import {
import { $api, $response, $image } from "@/api"; ref,
import { onShow } from "@dcloudio/uni-app"; onBeforeUnmount
import { useStore } from "@/store"; } from "vue";
import {
$api,
$response,
$image
} from "@/api";
import {
onShow
} from "@dcloudio/uni-app";
import {
useStore
} from "@/store";
const $store = useStore(); const $store = useStore();
let date_list = ref(false); let date_list = ref(false);
@ -91,7 +102,9 @@ const getnmrList = async () => {
}; };
const moreTime = async (m, status) => { const moreTime = async (m, status) => {
uni.showLoading({ title: "加载中" }); uni.showLoading({
title: "加载中"
});
isClickDoctor.value = status; isClickDoctor.value = status;
if (status) { if (status) {
if (yytjInfo.value.nmr_list[yytjInfo.value.nmr_list.length - 1].time) { if (yytjInfo.value.nmr_list[yytjInfo.value.nmr_list.length - 1].time) {
@ -113,9 +126,8 @@ const moreTime = async (m, status) => {
person_id: buyInfo.value.person_id, person_id: buyInfo.value.person_id,
month: dqmonth, // month: dqmonth, //
use_type: buyInfo.value.group_id ? 2 : 1, use_type: buyInfo.value.group_id ? 2 : 1,
checkup_type_id: buyInfo.value.group_id checkup_type_id: buyInfo.value.group_id ?
? $store.getGroupInfo()?.checkup_type_id $store.getGroupInfo()?.checkup_type_id : $store.getCheckupTypeId()?.id,
: $store.getCheckupTypeId()?.id,
amount: truePrice.value, amount: truePrice.value,
}; };
if (yytjInfo.value.nmr_list?.length > 1) { if (yytjInfo.value.nmr_list?.length > 1) {
@ -190,9 +202,8 @@ const getTjTimeList = async (val) => {
person_id: buyInfo.value.person_id, person_id: buyInfo.value.person_id,
date: currentDate.value, //currentDate.value date: currentDate.value, //currentDate.value
use_type: buyInfo.value.group_id ? 2 : 1, use_type: buyInfo.value.group_id ? 2 : 1,
checkup_type_id: buyInfo.value.group_id checkup_type_id: buyInfo.value.group_id ?
? $store.getGroupInfo()?.checkup_type_id $store.getGroupInfo()?.checkup_type_id : $store.getCheckupTypeId()?.id,
: $store.getCheckupTypeId()?.id,
amount: truePrice.value, amount: truePrice.value,
}; };
apiText = "GetDayPlanList"; apiText = "GetDayPlanList";
@ -267,7 +278,9 @@ const changerl = (e) => {
title: "提示", title: "提示",
content: "已选择医生,切换日期将重新选择医生,是否继续", content: "已选择医生,切换日期将重新选择医生,是否继续",
showCancel: true, showCancel: true,
success: ({ confirm }) => { success: ({
confirm
}) => {
if (confirm) { if (confirm) {
currentDate.value = e.fulldate; currentDate.value = e.fulldate;
time.value = ""; time.value = "";
@ -288,9 +301,11 @@ const changerl = (e) => {
currentDate.value = e.fulldate; currentDate.value = e.fulldate;
time.value = ""; time.value = "";
timeIndex.value = null; timeIndex.value = null;
if (!yytjInfo.value.doctor_name) {
yytjInfo.value.nmr_list[nmrIndex.value].time = ""; yytjInfo.value.nmr_list[nmrIndex.value].time = "";
yytjInfo.value.nmr_list[nmrIndex.value].id = ""; yytjInfo.value.nmr_list[nmrIndex.value].id = "";
yytjInfo.value.doctor_name = ""; // yytjInfo.value.doctor_name = ""; //
}
getTjTimeList(yytjInfo.value.nmr_list[nmrIndex.value]); getTjTimeList(yytjInfo.value.nmr_list[nmrIndex.value]);
calendarShow.value = false; calendarShow.value = false;
} }
@ -317,7 +332,9 @@ const getCurrentClick = (item, i) => {
title: "提示", title: "提示",
content: "已选择医生,切换日期将重新选择医生,是否继续", content: "已选择医生,切换日期将重新选择医生,是否继续",
showCancel: true, showCancel: true,
success: ({ confirm }) => { success: ({
confirm
}) => {
console.log(confirm); console.log(confirm);
if (confirm) { if (confirm) {
if (yytjInfo.value.nmr_list.length > 1 && nmrIndex.value == 0) { if (yytjInfo.value.nmr_list.length > 1 && nmrIndex.value == 0) {
@ -345,6 +362,7 @@ const getCurrentClick = (item, i) => {
return; return;
} }
if (yytjInfo.value.nmr_list.length > 1 && nmrIndex.value == 0) { if (yytjInfo.value.nmr_list.length > 1 && nmrIndex.value == 0) {
if (!yytjInfo.value.doctor_name) {
yytjInfo.value.nmr_list = yytjInfo.value.nmr_list.map((val) => { yytjInfo.value.nmr_list = yytjInfo.value.nmr_list.map((val) => {
return { return {
...val, ...val,
@ -353,12 +371,15 @@ const getCurrentClick = (item, i) => {
}; };
}); });
} }
}
time.value = ""; time.value = "";
timeIndex.value = null; timeIndex.value = null;
if (!yytjInfo.value.doctor_name) {
yytjInfo.value.nmr_list[nmrIndex.value].time = ""; yytjInfo.value.nmr_list[nmrIndex.value].time = "";
yytjInfo.value.nmr_list[nmrIndex.value].id = ""; yytjInfo.value.nmr_list[nmrIndex.value].id = "";
yytjInfo.value.doctor_name = ""; // yytjInfo.value.doctor_name = ""; //
yytjInfo.value.doctor_date = ""; // yytjInfo.value.doctor_date = ""; //
}
$store.setYytjInfo(yytjInfo.value); $store.setYytjInfo(yytjInfo.value);
status.value = 0; status.value = 0;
currentDate.value = item.date; currentDate.value = item.date;
@ -371,6 +392,57 @@ const getCurrentTime = (item, index) => {
uni.$lu.toast("该号源已被其他人预约"); uni.$lu.toast("该号源已被其他人预约");
return; return;
} }
let active_item = yytjInfo.value.nmr_list[nmrIndex.value]
if (active_item.item_id !== -1) {
//
if (!!yytjInfo.value.doctor_name) {
let doctor_time = new Date(yytjInfo.value.doctor_date) / 1
let choose_time = new Date(item.date) / 1
let day_check = ''
let pick_day = 3
if (doctor_time > choose_time) {
day_check = `请选择${yytjInfo.value.doctor_date}之后${pick_day}天以内的日期`
} else {
if (doctor_time !== choose_time) {
choose_time = choose_time - (60 * 60 * 24 * 1000 * pick_day)
if (doctor_time < choose_time) {
day_check = `请选择${yytjInfo.value.doctor_date}之后${pick_day}天以内的日期.`
}
}
}
if (!!day_check) {
uni.$lu.toast(day_check);
return;
}
}
} else {
//
let heci_item = yytjInfo.value.nmr_list[0]
if (heci_item.item_id !== -1) {
//
if (!!heci_item.time) {
//
let heci_time = new Date(heci_item.time.split(' ')[0]) / 1
let choose_time = new Date(item.date) / 1
let day_check = ''
let pick_day = 3
if (choose_time > heci_time) {
day_check = `请选择${heci_item.time.split(' ')[0]}之前${pick_day}天以内的日期`
} else {
if (heci_time !== choose_time) {
choose_time = choose_time + (60 * 60 * 24 * 1000 * pick_day)
if (choose_time < heci_time) {
day_check = `请选择${heci_item.time.split(' ')[0]}之前${pick_day}天以内的日期.`
}
}
}
if (!!day_check) {
uni.$lu.toast(day_check);
return;
}
}
}
}
console.log(item); console.log(item);
timeIndex.value = index; timeIndex.value = index;
yytjInfo.value.nmr_list[nmrIndex.value].time = item.date + " " + item.newTime; yytjInfo.value.nmr_list[nmrIndex.value].time = item.date + " " + item.newTime;
@ -388,9 +460,11 @@ const xmmcClick = (val, index, status) => {
index != 0 && index != 0 &&
yytjInfo.value.nmr_list[0]?.time == "" yytjInfo.value.nmr_list[0]?.time == ""
) { ) {
if (!yytjInfo.value.doctor_name) {
uni.$lu.toast("请先选择" + yytjInfo.value.nmr_list[0]?.name + "时间"); uni.$lu.toast("请先选择" + yytjInfo.value.nmr_list[0]?.name + "时间");
return; return;
} }
}
nmrIndex.value = index; nmrIndex.value = index;
time.value = ""; time.value = "";
timeIndex.value = null; timeIndex.value = null;
@ -422,9 +496,11 @@ const clickDoctor = (s) => {
yytjInfo.value.nmr_list.length > 1 && yytjInfo.value.nmr_list.length > 1 &&
yytjInfo.value.nmr_list[0]?.time == "" yytjInfo.value.nmr_list[0]?.time == ""
) { ) {
if (!yytjInfo.value.doctor_name) {
uni.$lu.toast("请先选择" + yytjInfo.value.nmr_list[0]?.name + "时间"); uni.$lu.toast("请先选择" + yytjInfo.value.nmr_list[0]?.name + "时间");
return; return;
} }
}
// if (yytjInfo.value.nmr_list[yytjInfo.value.nmr_list.length - 1]?.time == "") { // if (yytjInfo.value.nmr_list[yytjInfo.value.nmr_list.length - 1]?.time == "") {
// nmrIndex.value = yytjInfo.value.nmr_list?.length - 1; // nmrIndex.value = yytjInfo.value.nmr_list?.length - 1;
nmrIndex.value = -1; nmrIndex.value = -1;
@ -475,32 +551,17 @@ onShow(() => {
<view :ref="configRef"></view> <view :ref="configRef"></view>
</view> </view>
<view class="h-38rpx bg-#239EA3 pl-20rpx pr-20rpx box-border"> <view class="h-38rpx bg-#239EA3 pl-20rpx pr-20rpx box-border">
<view <view style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)" class="p-16rpx pb-20rpx pt-30rpx rounded-15rpx bg-#fff">
class="p-16rpx pb-20rpx pt-30rpx rounded-15rpx bg-#fff" <view class="flex w-full b-0 b-solid b-b-1 b-#E1ECEE pb-25rpx mb-7rpx"
> v-if="!buyInfo.group_id && comboInfo?.items?.length">
<view
class="flex w-full b-0 b-solid b-b-1 b-#E1ECEE pb-25rpx mb-7rpx"
v-if="!buyInfo.group_id && comboInfo?.items?.length"
>
<!-- 1 个检套餐 显示套餐信息 --> <!-- 1 个检套餐 显示套餐信息 -->
<image <image v-if="comboInfo.img" :src="$image(comboInfo.img)" class="w-190rpx h-190rpx mr-37rpx" mode="widthFix" />
v-if="comboInfo.img"
:src="$image(comboInfo.img)"
class="w-190rpx h-190rpx mr-37rpx"
mode="widthFix"
/>
<view class="flex flex-col grow"> <view class="flex flex-col grow">
<text>{{ comboInfo.combo_name }}</text> <text>{{ comboInfo.combo_name }}</text>
<view class="mt-13rpx mb-18rpx"> <view class="mt-13rpx mb-18rpx">
<uni-tag <uni-tag v-for="(val, i) in comboInfo.tags" :key="i" size="small" :inverted="true" :text="val.text"
v-for="(val, i) in comboInfo.tags" class="mr-8rpx" :custom-style="
:key="i"
size="small"
:inverted="true"
:text="val.text"
class="mr-8rpx"
:custom-style="
'background-color:' + 'background-color:' +
val.color + val.color +
';border-color:' + ';border-color:' +
@ -508,17 +569,12 @@ onShow(() => {
'; color:' + '; color:' +
val.text_color + val.text_color +
';' ';'
" " />
/>
</view> </view>
<view v-if="comboInfo.tags2?.length"> <view v-if="comboInfo.tags2?.length">
<text <text v-for="(val, i) in comboInfo.tags2" :key="i"
v-for="(val, i) in comboInfo.tags2"
:key="i"
class="text-#8B8B8B text-20rpx line-height-[1] px-5rpx b-0 b-solid b-#8B8B8B" class="text-#8B8B8B text-20rpx line-height-[1] px-5rpx b-0 b-solid b-#8B8B8B"
:class="i == comboInfo.tags2?.length - 1 ? 'b-r-0' : 'b-r-2'" :class="i == comboInfo.tags2?.length - 1 ? 'b-r-0' : 'b-r-2'">{{ val }}</text>
>{{ val }}</text
>
</view> </view>
<view class="mt-20rpx w-full flex items-end"> <view class="mt-20rpx w-full flex items-end">
<text class="text-18rpx text-#EC3D15">¥</text> <text class="text-18rpx text-#EC3D15">¥</text>
@ -528,25 +584,16 @@ onShow(() => {
<text class="text-18rpx text-#878787 line-through">{{ <text class="text-18rpx text-#878787 line-through">{{
comboInfo.original_price comboInfo.original_price
}}</text> }}</text>
<text class="text-18rpx text-#878787 ml-auto mr-55rpx" <text class="text-18rpx text-#878787 ml-auto mr-55rpx">已售{{ comboInfo.sale_count }}</text>
>已售{{ comboInfo.sale_count }}</text
>
</view> </view>
</view> </view>
</view> </view>
<view <view v-if="buyInfo.group_id" class="b-0 b-solid b-#E1ECEE pb-25rpx mb-7rpx" :class="{
v-if="buyInfo.group_id"
class="b-0 b-solid b-#E1ECEE pb-25rpx mb-7rpx"
:class="{
'b-b-1': itemsInfo?.items?.length, 'b-b-1': itemsInfo?.items?.length,
}" }">
>
<!-- 3团检套餐 4团检自选 都要显示头像和名字 --> <!-- 3团检套餐 4团检自选 都要显示头像和名字 -->
<view class="flex items-center"> <view class="flex items-center">
<image <image src="@/static/assets/userm.png" class="w-70rpx h-70rpx mr-35rpx" />
src="@/static/assets/userm.png"
class="w-70rpx h-70rpx mr-35rpx"
/>
<view class="flex items-center grow"> <view class="flex items-center grow">
<text class="text-#707070 text-24rpx">您好</text> <text class="text-#707070 text-24rpx">您好</text>
<text class="text-#0E0E0E text-32rpx">{{ groupInfo?.name }}</text> <text class="text-#0E0E0E text-32rpx">{{ groupInfo?.name }}</text>
@ -562,10 +609,7 @@ onShow(() => {
<text class="text-#8B8B8B">部门名称</text> <text class="text-#8B8B8B">部门名称</text>
<text>{{ groupInfo.bumen_name }}</text> <text>{{ groupInfo.bumen_name }}</text>
</view> </view>
<view <view class="pb-30rpx" v-if="groupInfo.combo_name || comboInfo?.combo_name">
class="pb-30rpx"
v-if="groupInfo.combo_name || comboInfo?.combo_name"
>
<text class="text-#8B8B8B">套餐名称</text> <text class="text-#8B8B8B">套餐名称</text>
<text>{{ groupInfo?.combo_name || comboInfo?.combo_name }}</text> <text>{{ groupInfo?.combo_name || comboInfo?.combo_name }}</text>
</view> </view>
@ -578,23 +622,14 @@ onShow(() => {
<view class="pt-15rpx" v-if="itemsInfo?.items?.length"> <view class="pt-15rpx" v-if="itemsInfo?.items?.length">
<view class="text-30rpx text-#0E0E0E pb-30rpx"> 自选项目 </view> <view class="text-30rpx text-#0E0E0E pb-30rpx"> 自选项目 </view>
<view class="text-#8B8B8B text-24rpx"> <view class="text-#8B8B8B text-24rpx">
<view <view class="flex mb-20rpx" v-for="(val, index) in itemsInfo?.items.length > 3
class="flex mb-20rpx"
v-for="(val, index) in itemsInfo?.items.length > 3
? 3 ? 3
: itemsInfo?.items" : itemsInfo?.items" :key="index">
:key="index" <text class="whitespace-nowrap">{{ itemsInfo?.items[index]?.keshi_name }} -
>
<text class="whitespace-nowrap"
>{{ itemsInfo?.items[index]?.keshi_name }} -
</text> </text>
<view class="line-clamp-2"> <view class="line-clamp-2">
<text <text class="ml-10rpx text-#0E0E0E" v-for="(v, i) in itemsInfo?.items[index]?.children"
class="ml-10rpx text-#0E0E0E" :key="i">{{ v.name }}</text>
v-for="(v, i) in itemsInfo?.items[index]?.children"
:key="i"
>{{ v.name }}</text
>
</view> </view>
</view> </view>
</view> </view>
@ -610,114 +645,65 @@ onShow(() => {
</text> </text>
</view> --> </view> -->
</view> </view>
<view <view style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)" class="p-16rpx pb-20rpx pt-30rpx rounded-15rpx bg-#fff mt-15rpx ylrl" v-if="calendarShow">
class="p-16rpx pb-20rpx pt-30rpx rounded-15rpx bg-#fff mt-15rpx ylrl" <uni-calendar :selected="rl_list" :startDate="getToday()" :showMonth="false" :insert="true" :date="currentDate"
v-if="calendarShow" @change="changerl" @monthSwitch="monthSwitch" />
> </view>
<uni-calendar <view style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
:selected="rl_list" class="p-16rpx pb-20rpx pt-30rpx rounded-15rpx bg-#fff mt-15rpx" v-if="date_list && !calendarShow">
:startDate="getToday()"
:showMonth="false"
: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-16rpx pb-20rpx pt-30rpx rounded-15rpx bg-#fff mt-15rpx"
v-if="date_list && !calendarShow"
>
<view class=""> <view class="">
<view <view class="text-30rpx text-#0E0E0E pb-34rpx font-500" v-if="yytjInfo.nmr_list[nmrIndex]?.name">
class="text-30rpx text-#0E0E0E pb-34rpx font-500"
v-if="yytjInfo.nmr_list[nmrIndex]?.name"
>
{{ yytjInfo.nmr_list[nmrIndex]?.name }} {{ yytjInfo.nmr_list[nmrIndex]?.name }}
</view> </view>
<view class="flex mb-30rpx items-center"> <view class="flex mb-30rpx items-center">
<view <view class="flex-1 text-center text-18rpx" v-for="(item, index) in date_list" :key="index">
class="flex-1 text-center text-18rpx" <view @click="getCurrentClick(item, index)" :class="{
v-for="(item, index) in date_list"
:key="index"
>
<view
@click="getCurrentClick(item, index)"
:class="{
activeTime: 3 == index, activeTime: 3 == index,
'bg-#efefef text-#aaa8a8': 'bg-#efefef text-#aaa8a8':
item.count < 0 || item.count < 0 ||
new Date(item.date).getTime() < new Date(item.date).getTime() <
new Date(getToday()).getTime(), new Date(getToday()).getTime(),
}" }" class="rounded-12rpx pt-10rpx pb-10rpx ml-10rpx mr-10rpx mb-6rpx">
class="rounded-12rpx pt-10rpx pb-10rpx ml-10rpx mr-10rpx mb-6rpx"
>
<view> {{ item.newMonthDate }} </view> <view> {{ item.newMonthDate }} </view>
<view class="text-26rpx font-500"> {{ item.newWeek }} </view> <view class="text-26rpx font-500"> {{ item.newWeek }} </view>
</view> </view>
<view class="ma" v-if="item.count > -1"> <view class="ma" v-if="item.count > -1">
<text <text :class="{
:class="{
'text-#239EA3 !bg-#E1F4F8': 3 == index, 'text-#239EA3 !bg-#E1F4F8': 3 == index,
}" }" class="bg-#EFEFEF rounded-10rpx h-28rpx pl-10rpx pr-10rpx">{{ item.count }}</text>
class="bg-#EFEFEF rounded-10rpx h-28rpx pl-10rpx pr-10rpx"
>{{ item.count }}</text
>
</view> </view>
</view> </view>
<view <view class="flex-1 col center text-#239EA3 text-20rpx bs b-#E7E7E7 b-l-1 h-80rpx"
class="flex-1 col center text-#239EA3 text-20rpx bs b-#E7E7E7 b-l-1 h-80rpx" @click="moreTime(null, 0)">
@click="moreTime(null, 0)"
>
<uni-icons type="calendar" size="30" color="#239EA3"></uni-icons> <uni-icons type="calendar" size="30" color="#239EA3"></uni-icons>
<text>更多</text> <text>更多</text>
</view> </view>
</view> </view>
<view <view class="flex flex-wrap pt-30rpx pb-30rpx b-0 b-t-1 b-solid b-#E1ECEE" v-if="time_list.length">
class="flex flex-wrap pt-30rpx pb-30rpx b-0 b-t-1 b-solid b-#E1ECEE" <view class="w-20% text-center box-border p-20rpx" v-for="(item, index) in time_list" :key="index" :class="{
v-if="time_list.length"
>
<view
class="w-20% text-center box-border p-20rpx"
v-for="(item, index) in time_list"
:key="index"
:class="{
'text-red': item.status == 2, 'text-red': item.status == 2,
}" }" @click="getCurrentTime(item, index)">
@click="getCurrentTime(item, index)" <view class="text-24rpx rounded-12rpx h-54rpx flex flex-items-center flex-justify-center"
> :class="timeIndex == index ? 'activeTime' : ''">
<view
class="text-24rpx rounded-12rpx h-54rpx flex flex-items-center flex-justify-center"
:class="timeIndex == index ? 'activeTime' : ''"
>
{{ item.newTime }} {{ item.newTime }}
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view <view style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
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">
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"> <view class="bg-#F7F7F7 pl-20rpx pr-20rpx pt-23rpx pb-25rpx">
<text>{{ <text>{{
buyInfo.group_id buyInfo.group_id
? $store.getGroupInfo()?.name ? $store.getGroupInfo()?.name
: $store.getUser()?.name : $store.getUser()?.name
}}</text> }}</text>
<view <view class="bg-#EFEFEF rounded-15rpx p-10rpx pb-15rpx pt-15rpx mt-20rpx">
class="bg-#EFEFEF rounded-15rpx p-10rpx pb-15rpx pt-15rpx mt-20rpx" <view v-for="(item, index) in yytjInfo.nmr_list" :key="index" @click="xmmcClick(item, index, 1)"
>
<view
v-for="(item, index) in yytjInfo.nmr_list"
:key="index"
@click="xmmcClick(item, index, 1)"
:class="nmrIndex == index ? 'acitvetc' : ''" :class="nmrIndex == index ? 'acitvetc' : ''"
class="flex flex-justify-around p-20rpx pl-10rpx pr-10rpx rounded-15rpx" class="flex flex-justify-around p-20rpx pl-10rpx pr-10rpx rounded-15rpx">
>
<view class="flex-col flex flex-1 line-clamp-1"> <view class="flex-col flex flex-1 line-clamp-1">
<text v-for="(v, i) in item.name?.split('/')" :key="i">{{ <text v-for="(v, i) in item.name?.split('/')" :key="i">{{
v v
@ -727,11 +713,8 @@ onShow(() => {
{{ item.time }} {{ item.time }}
</view> </view>
</view> </view>
<view <view class="p-20rpx pl-10rpx pr-10rpx rounded-15rpx between" :class="nmrIndex == -1 ? 'acitvetc' : ''"
class="p-20rpx pl-10rpx pr-10rpx rounded-15rpx between" @click="clickDoctor()">
:class="nmrIndex == -1 ? 'acitvetc' : ''"
@click="clickDoctor()"
>
<text>体检医生</text> <text>体检医生</text>
<text class="ml-10rpx text-#0E0E0E center"> <text class="ml-10rpx text-#0E0E0E center">
{{ yytjInfo?.doctor_name || "请选择" }} {{ yytjInfo?.doctor_name || "请选择" }}
@ -742,10 +725,8 @@ onShow(() => {
</view> </view>
</view> </view>
<view class="pb-100rpx"> <view class="pb-100rpx">
<view <view @click="comfrimyy"
@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">
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>
@ -763,25 +744,31 @@ onShow(() => {
} }
::v-deep .ylrl { ::v-deep .ylrl {
.uni-calendar__header, .uni-calendar__header,
.uni-calendar__weeks-day { .uni-calendar__weeks-day {
border: none; border: none;
} }
.uni-calendar-item--checked { .uni-calendar-item--checked {
background-color: transparent; background-color: transparent;
.uni-calendar-item__weeks-box-item { .uni-calendar-item__weeks-box-item {
background-color: #239ea3 !important; background-color: #239ea3 !important;
border-radius: 12rpx; border-radius: 12rpx;
.uni-calendar-item--extra { .uni-calendar-item--extra {
color: #fff !important; color: #fff !important;
} }
} }
} }
.uni-calendar-item--isDay { .uni-calendar-item--isDay {
background-color: #239ea3 !important; background-color: #239ea3 !important;
border-radius: 12rpx; border-radius: 12rpx;
color: #fff !important; color: #fff !important;
} }
.uni-calendar-item--extra { .uni-calendar-item--extra {
color: #239ea3; color: #239ea3;
} }
@ -794,12 +781,15 @@ onShow(() => {
.uni-calendar-item__weeks-box-circle { .uni-calendar-item__weeks-box-circle {
background-color: rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 0);
} }
.uni-calendar-item--isDay-text { .uni-calendar-item--isDay-text {
color: #333; color: #333;
} }
.uni-calendar-item__weeks-box-text { .uni-calendar-item__weeks-box-text {
font-size: 26rpx; font-size: 26rpx;
} }
.uni-calendar-item__weeks-lunar-text { .uni-calendar-item__weeks-lunar-text {
font-size: 16rpx; font-size: 16rpx;
} }
@ -807,6 +797,7 @@ onShow(() => {
.uni-calendar-item__weeks-box-item { .uni-calendar-item__weeks-box-item {
width: 100%; width: 100%;
} }
.uni-calendar__backtoday { .uni-calendar__backtoday {
display: none; display: none;
} }

Loading…
Cancel
Save