1.套餐筛选时点击遮罩关闭抽屉对数据的缓存机制

2.预约页面 积分,预存款,积分选择完成
wenjuan
刘佳宇 1 year ago
parent 438933aa3f
commit d8070b37f2

@ -1,6 +1,6 @@
<script setup>
import DraggableButton from "@/pages/components/goHome.vue";
/**
/**
* name
* usersa0ChunLuyu
* date2024年8月7日 20:05:05
@ -30,6 +30,7 @@ let projectIds = ref([]); // 项目id集合
let screenObj = ref({}); //
let combo_select = ref({}); //
let comboIds = ref([]); //
let status = ref(false); //
const selectItemClick = async (index, key) => {
//
@ -160,17 +161,16 @@ const getComboList = async () => {
doctor: $store.save.doctor,
hospital: hospital_active.value,
};
if($store.getCheckupTypeId()){
let b=$store.getCheckupTypeId()
console.log();
if( Object.keys(b).length != 0){
screenObj.value.checkup_type_id=b.id
}
if ($store.getCheckupTypeId()) {
let b = $store.getCheckupTypeId();
console.log();
if (Object.keys(b).length != 0) {
screenObj.value.checkup_type_id = b.id;
}
}
if (screenObj.value) {
obj = Object.assign(obj, screenObj.value);
}
const response = await $api("ComboList", obj);
uni.hideLoading();
@ -229,6 +229,20 @@ const open = (key) => {
popup.value.close();
selectKey.value = "screen";
select_drawer_ref.value.open();
if (screenObj.value.combo_price) {
priceIndex.value = combo_select.value["combo_price"].findIndex(
(item) => item.id == screenObj.value.combo_price
);
} else {
priceIndex.value = null;
}
if (screenObj.value.combo_item?.length) {
projectIds.value = [...screenObj.value.combo_item];
} else {
projectIds.value = [];
}
}
};
@ -278,8 +292,8 @@ const toRouter = () => {
};
</script>
<template>
<DraggableButton />
<view>
<DraggableButton />
<view>
<view v-if="!!$store.config">
<view :ref="configRef"></view>
</view>
@ -322,7 +336,7 @@ const toRouter = () => {
</view>
</view>
</view>
<!-- <view class="relative z-999 pt-10rpx center">
<!-- <view class="relative z-999 pt-10rpx center">
<view class="doctor_wrapper">
<view class="doctor_tip_wrapper">
<text v-if="!!combo_list.doctor.id"></text>
@ -474,7 +488,7 @@ const toRouter = () => {
</view>
</view>
</uni-popup>
<uni-drawer :ref="selectDrawerRef" mode="right" :mask-click="true">
<uni-drawer :ref="selectDrawerRef" mode="right">
<view>
<scroll-view scroll-y="true">
<view>
@ -526,7 +540,7 @@ const toRouter = () => {
<view
class="w-40% text-26rpx h-60rpx center rounded-full bg-#239EA3 text-#fff"
@click="remake()"
></view
></view
>
<view
class="w-40% text-26rpx h-60rpx center rounded-full bg-#239EA3 text-#fff"

@ -12,8 +12,9 @@ import { useStore } from "@/store";
const $store = useStore();
let couponList = ref([]);
let yytjInfo = ref({});
const mountedAction = () => {
yytjInfo.value = $store.getYytjInfo();
GetPersonIntegralSaveMoneyCouponInfo();
};
@ -26,6 +27,13 @@ const GetPersonIntegralSaveMoneyCouponInfo = async () => {
});
};
const selectCoupon = (item) => {
yytjInfo.value.couponId = item.id;
yytjInfo.value.couponPrice = item.price;
$store.setYytjInfo(yytjInfo.value);
uni.navigateBack({ delta: 1 });
};
const config_ref = ref(null);
const configRef = (e) => {
if (!config_ref.value) {
@ -51,23 +59,36 @@ onShow(() => {
<view
class="px-10rpx py-30rpx box-border bg-#fff shadow-[0rpx_0rpx_10rpx_0rpx_rgba(0,0,0,0.04)] rounded-15rpx"
>
<view v-for="(item, index) in couponList" :key="index" class="mb-20rpx flex">
<view
v-for="(item, index) in couponList"
:key="index"
class="mb-20rpx flex"
@click="selectCoupon(item)"
>
<view class="min-w-200rpx max-w-200rpx h-170rpx yhq1 center flex-col">
<view>
<text class="text-#fff text-24rpx">¥</text>
<text class="text-#fff text-50rpx">{{ item.price }}</text>
</view>
<text class="text-#fff text-22rpx">{{ item.desc }}</text>
</view>
<view class="grow box-border b-1 b-l-0 b-#E5E5E5 b-solid rounded-r-15rpx flex between py-5rpx">
<view class="grow px-30rpx py-25rpx box-border flex-col between h-full items-start b-0 b-r-1 b-#E5E5E5 b-solid">
<text class="text-28rpx text-#B38933">{{ item.title }}</text>
<text class="text-20rpx text-#7C7C7C">{{ item.date_range?.join(" —— ") }}</text>
</view>
<view class="max-w-60rpx min-w-60rpx text-#B38933 text-25rpx center mx-0">
<br /><br />使<br />
</view>
</view>
<view>
<text class="text-#fff text-24rpx">¥</text>
<text class="text-#fff text-50rpx">{{ item.price }}</text>
</view>
<text class="text-#fff text-22rpx">{{ item.desc }}</text>
</view>
<view
class="grow box-border b-1 b-l-0 b-#E5E5E5 b-solid rounded-r-15rpx flex between py-5rpx"
>
<view
class="grow px-30rpx py-25rpx box-border flex-col between h-full items-start b-0 b-r-1 b-#E5E5E5 b-solid"
>
<text class="text-28rpx text-#B38933">{{ item.title }}</text>
<text class="text-20rpx text-#7C7C7C">{{
item.date_range?.join(" —— ")
}}</text>
</view>
<view
class="max-w-60rpx min-w-60rpx text-#B38933 text-25rpx center mx-0"
>
<br /><br />使<br />
</view>
</view>
</view>
</view>
</view>

@ -461,7 +461,7 @@ onShow(() => {
<view class="text-#2E2E2E text-30rpx font-500 text-center">
体检须知
</view>
<view>
<view class="text-30rpx text-#2E2E2E">
<image
class="w-5rpx h-26rpx"
src="@/static/assets/slices/tjcol2x.png"
@ -519,14 +519,14 @@ onShow(() => {
领取报告
</view>
</view>
<view class="pb-40rpx">
<view class="pb-40rpx text-30rpx text-#2E2E2E">
<image
class="w-5rpx h-26rpx"
src="@/static/assets/slices/tjcol2x.png"
></image>
体检注意事项
</view>
<view v-html="notice.content"> </view>
<view v-html="notice.content" class="text-28rpx"></view>
</view>
</view>
</view>

@ -19,6 +19,12 @@ let itemsInfo = ref({});
let userInfo = ref(""); //
let truePrice = ref(0); //
let yytjInfo = ref({}); //
let popup = ref(null);
let save_money = ref(0);
let integral = ref(0);
let couponList = ref([]);
let selectStatus = ref(null);
let selectIndex = ref(0);
const mountedAction = async () => {
uni.showLoading({
@ -31,11 +37,91 @@ const mountedAction = async () => {
: $store.getUser();
let time = setTimeout(() => {
getnmrList();
GetPersonIntegralSaveMoneyCouponInfo();
clearTimeout(time);
}, 500);
};
const GetPersonIntegralSaveMoneyCouponInfo = async () => {
// , ,
const response = await $api("GetPersonIntegralSaveMoneyCouponInfo", {
person_id: $store.getUser()?.person_id,
});
$response(response, () => {
couponList.value = response.data.coupon_list;
save_money.value = response.data.save_money;
integral.value = response.data.integral;
});
};
const selectDiscount = (status) => {
//
if (status == 2) {
//
if (couponList.value.length) {
toRouter("/pages/main/coupon/coupon");
} else {
uni.$lu.toast("暂无优惠券");
}
}
if (status == 1) {
//
if (integral.value) {
selectStatus.value = status;
popup.value.open("bottom");
if (yytjInfo.value.pointsPrice) {
selectIndex.value = 1;
} else {
selectIndex.value = 0;
}
} else {
uni.$lu.toast("暂无积分");
}
}
if (status == 3) {
//
if (save_money.value) {
selectStatus.value = status;
if (yytjInfo.value.prepaidPrice) {
selectIndex.value = 1;
} else {
selectIndex.value = 0;
}
popup.value.open("bottom");
} else {
uni.$lu.toast("暂无预付款");
}
}
};
const comfrimSelect = () => {
//
if (selectStatus.value == 1) {
//
if (selectIndex.value) {
yytjInfo.value.pointsPrice = integral.value;
$store.setYytjInfo(yytjInfo.value);
} else {
yytjInfo.value.pointsPrice = 0;
$store.setYytjInfo(yytjInfo.value);
}
} else {
//
if (selectIndex.value) {
yytjInfo.value.prepaidPrice = save_money.value;
$store.setYytjInfo(yytjInfo.value);
} else {
yytjInfo.value.prepaidPrice = 0;
$store.setYytjInfo(yytjInfo.value);
}
}
popup.value.close();
};
const getnmrList = async () => {
//
yytjInfo.value = $store.getYytjInfo();
console.log(yytjInfo.value);
const response = await $api("BuyInfo", buyInfo.value);
@ -188,6 +274,67 @@ const toRouter = (url, status) => {
</script>
<template>
<DraggableButton />
<uni-popup ref="popup">
<view
class="center relative px-10rpx pb-30rpx text-36rpx bg-#fff rounded-t-15rpx box-border col"
>
<view
class="text-28rpx p-[40rpx_50rpx_25rpx_50rpx] between w-full bs b-b-1 b-#DEDEDE box-border"
>
<text class="line-height-[1] text-#171717 mr-10rpx">{{
selectStatus == 1 ? "积分" : "预存款"
}}</text>
<view class="mr-auto text-#888787">
剩余<text class="text-#FB670E">{{
selectStatus == 1 ? integral : save_money
}}</text
>)
</view>
<uni-icons
@click="popup.close()"
type="closeempty"
color="#A6A6A6"
size="26"
class=""
></uni-icons>
</view>
<view class="text-#171717 text-28rpx px-40rpx box-border w-full">
<view
class="between pl-20rpx pr-10rpx box-border bs b-b-1 b-#E1ECEE h-90rpx"
@click="selectIndex = 0"
>
<text>暂不使用{{ selectStatus == 1 ? "积分" : "预存款" }}</text>
<uni-icons
:type="!selectIndex ? 'checkbox-filled' : 'circle'"
:color="!selectIndex ? '#239EA3' : '#A6A6A6'"
size="20"
class=""
></uni-icons>
</view>
<view
class="between pl-20rpx pr-10rpx box-border bs b-b-1 b-#E1ECEE h-90rpx"
@click="selectIndex = 1"
>
<text v-if="selectStatus == 1"
>抵扣{{ integral }}使用{{ integral }}积分</text
>
<text v-else>{{ save_money }}使{{ save_money }}</text>
<uni-icons
:type="selectIndex ? 'checkbox-filled' : 'circle'"
:color="selectIndex ? '#239EA3' : '#A6A6A6'"
size="20"
class=""
></uni-icons>
</view>
</view>
<view
@click="comfrimSelect"
class="text-#fff text-34rpx rounded-full bg-#239EA3 mt-80rpx ma w-520rpx h-100rpx center"
>
确定
</view>
</view>
</uni-popup>
<view>
<view v-if="!!$store.config">
<view :ref="configRef"></view>
@ -363,11 +510,15 @@ const toRouter = (url, status) => {
>
<text>{{ val.name }}</text>
<text class="ml-20rpx mr-auto text-#239EA3">{{ val.time }}</text>
<text class="text-30rpx">{{ val.time ? "重新预约" : "预约时间" }}</text>
<text class="text-30rpx">{{
val.time ? "重新预约" : "预约时间"
}}</text>
</view>
<view class="mb-20rpx between">
<text>体检医生</text>
<text class="text-30rpx">{{ yytjInfo?.doctor_name || "选择医生" }}</text>
<text class="text-30rpx">{{
yytjInfo?.doctor_name || "选择医生"
}}</text>
</view>
</view>
</view>
@ -376,14 +527,19 @@ const toRouter = (url, status) => {
<view
style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
class="p-38rpx pr-17rpx rounded-15rpx bg-#fff between text-24rpx line-height-[1] mb-15rpx"
@click="selectDiscount(1)"
>
<view>
<text class="text-#050505">积分抵扣</text>
<text class="text-#828383">共50个</text>
<text v-if="integral" class="text-#828383"
>{{ integral }}</text
>
</view>
<view class="ml-auto mr-20rpx">
<text class="text-#FB4F1A">-¥50.00</text>
<text class="text-#070707 ml-50rpx">去选择</text>
<text class="text-#FB4F1A" v-if="yytjInfo.pointsPrice"
>-¥{{ yytjInfo.pointsPrice }}</text
>
<text class="text-#070707" v-else></text>
</view>
<uni-icons type="right" size="12"></uni-icons>
</view>
@ -391,15 +547,19 @@ const toRouter = (url, status) => {
<view
style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
class="p-38rpx pr-17rpx rounded-15rpx bg-#fff between text-24rpx line-height-[1] mb-15rpx"
@click="toRouter('/pages/main/coupon/coupon')"
@click="selectDiscount(2)"
>
<view>
<text class="text-#050505">优惠券</text>
<!-- <text class="text-#828383">共50个</text> -->
<text v-if="couponList.length" class="text-#828383"
>{{ couponList.length }}</text
>
</view>
<view class="ml-auto mr-20rpx">
<text class="text-#FB4F1A">-¥50.00</text>
<!-- <text class="text-#070707 ml-50rpx">去选择</text> -->
<text class="text-#FB4F1A" v-if="yytjInfo.couponPrice"
>-¥{{ yytjInfo.couponPrice }}</text
>
<text class="text-#070707" v-else></text>
</view>
<uni-icons type="right" size="12"></uni-icons>
</view>
@ -407,14 +567,19 @@ const toRouter = (url, status) => {
<view
style="box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04)"
class="p-38rpx pr-17rpx rounded-15rpx bg-#fff between text-24rpx line-height-[1] mb-15rpx"
@click="selectDiscount(3)"
>
<view>
<text class="text-#050505">预存款</text>
<!-- <text class="text-#828383">共50个</text> -->
<text v-if="save_money" class="text-#828383"
>{{ save_money }}</text
>
</view>
<view class="ml-auto mr-20rpx">
<text class="text-#FB4F1A">-¥50.00</text>
<!-- <text class="text-#070707 ml-50rpx">去选择</text> -->
<text class="text-#FB4F1A" v-if="yytjInfo.prepaidPrice"
>-¥{{ yytjInfo.prepaidPrice }}</text
>
<text class="text-#070707" v-else></text>
</view>
<uni-icons type="right" size="12"></uni-icons>
</view>

Loading…
Cancel
Save