|
|
|
@ -1,32 +1,42 @@
|
|
|
|
<script setup>
|
|
|
|
<script setup>
|
|
|
|
import DraggableButton from "@/pages/components/goHome.vue";
|
|
|
|
import DraggableButton from "@/pages/components/goHome.vue";
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* name:
|
|
|
|
* name:
|
|
|
|
* user:sa0ChunLuyu
|
|
|
|
* user:sa0ChunLuyu
|
|
|
|
* date:2024年9月11日 19:24:50
|
|
|
|
* date:2024年9月11日 19:24:50
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
import { ref } from "vue";
|
|
|
|
import {
|
|
|
|
import { $api, $response, $image } from "@/api";
|
|
|
|
ref
|
|
|
|
import { onShow } from "@dcloudio/uni-app";
|
|
|
|
} from "vue";
|
|
|
|
import { useStore } from "@/store";
|
|
|
|
import {
|
|
|
|
const $store = useStore();
|
|
|
|
$api,
|
|
|
|
|
|
|
|
$response,
|
|
|
|
|
|
|
|
$image
|
|
|
|
|
|
|
|
} from "@/api";
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
|
|
|
onShow
|
|
|
|
|
|
|
|
} from "@dcloudio/uni-app";
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
|
|
|
useStore
|
|
|
|
|
|
|
|
} from "@/store";
|
|
|
|
|
|
|
|
const $store = useStore();
|
|
|
|
|
|
|
|
|
|
|
|
// groupId
|
|
|
|
// groupId
|
|
|
|
|
|
|
|
|
|
|
|
let comboInfo = ref({}); // 套餐详情
|
|
|
|
let comboInfo = ref({}); // 套餐详情
|
|
|
|
let selectIds = ref([]); // 选中自选ID
|
|
|
|
let selectIds = ref([]); // 选中自选ID
|
|
|
|
let itemsInfo = ref({}); // 自选项目详情
|
|
|
|
let itemsInfo = ref({}); // 自选项目详情
|
|
|
|
let comboId = ref(""); // 套餐id
|
|
|
|
let comboId = ref(""); // 套餐id
|
|
|
|
let personId = ref(""); // 患者id
|
|
|
|
let personId = ref(""); // 患者id
|
|
|
|
let groupId = ref(""); // 团检id
|
|
|
|
let groupId = ref(""); // 团检id
|
|
|
|
let tabIndex = ref(0); // 标签索引
|
|
|
|
let tabIndex = ref(0); // 标签索引
|
|
|
|
let totalPrice = ref(0); // 总折扣价格
|
|
|
|
let totalPrice = ref(0); // 总折扣价格
|
|
|
|
let groupInfo = ref({}); // 团检信息
|
|
|
|
let groupInfo = ref({}); // 团检信息
|
|
|
|
let status = ref(0); // 1个检套餐 2个检自选 3团检套餐 4团检自选
|
|
|
|
let status = ref(0); // 1个检套餐 2个检自选 3团检套餐 4团检自选
|
|
|
|
let buyText = ref("立即购买"); // 购买按钮文字
|
|
|
|
let buyText = ref("立即购买"); // 购买按钮文字
|
|
|
|
let notice = ref({}); // 体检须知
|
|
|
|
let notice = ref({}); // 体检须知
|
|
|
|
|
|
|
|
|
|
|
|
const GetReadmeDetails = async () => {
|
|
|
|
const GetReadmeDetails = async () => {
|
|
|
|
const response = await $api("GetReadme");
|
|
|
|
const response = await $api("GetReadme");
|
|
|
|
$response(response, () => {
|
|
|
|
$response(response, () => {
|
|
|
|
notice.value = response.data || false;
|
|
|
|
notice.value = response.data || false;
|
|
|
|
@ -46,9 +56,9 @@ const GetReadmeDetails = async () => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uni.hideLoading();
|
|
|
|
uni.hideLoading();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const $props = defineProps({
|
|
|
|
const $props = defineProps({
|
|
|
|
comboId: {
|
|
|
|
comboId: {
|
|
|
|
type: String,
|
|
|
|
type: String,
|
|
|
|
default: "",
|
|
|
|
default: "",
|
|
|
|
@ -65,9 +75,9 @@ const $props = defineProps({
|
|
|
|
type: String,
|
|
|
|
type: String,
|
|
|
|
default: "",
|
|
|
|
default: "",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
const mountedAction = async () => {
|
|
|
|
const mountedAction = async () => {
|
|
|
|
selectIds.value = $props.itemIds?.split(",") || [];
|
|
|
|
selectIds.value = $props.itemIds?.split(",") || [];
|
|
|
|
console.log($store.user);
|
|
|
|
console.log($store.user);
|
|
|
|
comboId.value = $props.comboId || "";
|
|
|
|
comboId.value = $props.comboId || "";
|
|
|
|
@ -106,9 +116,9 @@ const mountedAction = async () => {
|
|
|
|
title: "加载中",
|
|
|
|
title: "加载中",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
getBuyInfo(); // 获取购买信息
|
|
|
|
getBuyInfo(); // 获取购买信息
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const buy = () => {
|
|
|
|
const buy = () => {
|
|
|
|
if (tabIndex.value == 0) {
|
|
|
|
if (tabIndex.value == 0) {
|
|
|
|
GetReadmeDetails();
|
|
|
|
GetReadmeDetails();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -125,9 +135,9 @@ const buy = () => {
|
|
|
|
url: "/pages/main/tjyy/tjyy",
|
|
|
|
url: "/pages/main/tjyy/tjyy",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const getBuyInfo = async () => {
|
|
|
|
const getBuyInfo = async () => {
|
|
|
|
// 获取购买信息
|
|
|
|
// 获取购买信息
|
|
|
|
let obj = {
|
|
|
|
let obj = {
|
|
|
|
item_ids: selectIds.value,
|
|
|
|
item_ids: selectIds.value,
|
|
|
|
@ -142,7 +152,7 @@ const getBuyInfo = async () => {
|
|
|
|
if (groupId.value && response.data.group_info.length) {
|
|
|
|
if (groupId.value && response.data.group_info.length) {
|
|
|
|
// 团检
|
|
|
|
// 团检
|
|
|
|
groupInfo.value = response.data.group_info[0];
|
|
|
|
groupInfo.value = response.data.group_info[0];
|
|
|
|
if(response.data.group_info[0].items?.length){
|
|
|
|
if (response.data.group_info[0].items?.length) {
|
|
|
|
status.value = 3;
|
|
|
|
status.value = 3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -150,9 +160,9 @@ const getBuyInfo = async () => {
|
|
|
|
itemsInfo.value = response.data.items_info;
|
|
|
|
itemsInfo.value = response.data.items_info;
|
|
|
|
totalPrice.value = response.data.true_price;
|
|
|
|
totalPrice.value = response.data.true_price;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const addCombo = () => {
|
|
|
|
const addCombo = () => {
|
|
|
|
// 增加项目
|
|
|
|
// 增加项目
|
|
|
|
let itemIds = $props.itemIds ? $props.itemIds : "";
|
|
|
|
let itemIds = $props.itemIds ? $props.itemIds : "";
|
|
|
|
let query = "?comboId=" + comboId.value + "&itemIds=" + itemIds;
|
|
|
|
let query = "?comboId=" + comboId.value + "&itemIds=" + itemIds;
|
|
|
|
@ -162,21 +172,21 @@ const addCombo = () => {
|
|
|
|
uni.navigateTo({
|
|
|
|
uni.navigateTo({
|
|
|
|
url: "/pages/main/tj/tjzx?" + query,
|
|
|
|
url: "/pages/main/tj/tjzx?" + query,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const config_ref = ref(null);
|
|
|
|
const config_ref = ref(null);
|
|
|
|
const configRef = (e) => {
|
|
|
|
const configRef = (e) => {
|
|
|
|
if (!config_ref.value) {
|
|
|
|
if (!config_ref.value) {
|
|
|
|
config_ref.value = e;
|
|
|
|
config_ref.value = e;
|
|
|
|
mountedAction();
|
|
|
|
mountedAction();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
onShow(() => {
|
|
|
|
onShow(() => {
|
|
|
|
if (!!config_ref.value) {
|
|
|
|
if (!!config_ref.value) {
|
|
|
|
mountedAction();
|
|
|
|
mountedAction();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
<template>
|
|
|
|
<template>
|
|
|
|
<DraggableButton />
|
|
|
|
<DraggableButton />
|
|
|
|
@ -187,28 +197,16 @@ onShow(() => {
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="px-30rpx box-border comboInfo">
|
|
|
|
<view class="px-30rpx box-border comboInfo">
|
|
|
|
<view
|
|
|
|
<view class="pt-35rpx rounded-15rpx px-10rpx bg-#fff pb-30rpx box-border b-0 b-t-1 b-solid b-#E1ECEE">
|
|
|
|
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
|
|
|
|
<image v-if="comboInfo.img" :src="$image(comboInfo.img)" class="w-190rpx h-190rpx mr-37rpx"
|
|
|
|
v-if="comboInfo.img"
|
|
|
|
mode="widthFix" />
|
|
|
|
: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"
|
|
|
|
v-for="(val, i) in comboInfo.tags"
|
|
|
|
:text="val.text" 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:' +
|
|
|
|
@ -216,17 +214,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>
|
|
|
|
@ -236,16 +229,11 @@ 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="status == 1" class="mt-25rpx pt-25rpx b-0 b-t-1 b-solid b-#E1ECEE bettween flex-col text-24rpx">
|
|
|
|
v-if="status == 1"
|
|
|
|
|
|
|
|
class="mt-25rpx pt-25rpx b-0 b-t-1 b-solid b-#E1ECEE bettween flex-col text-24rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<!-- 1个检套餐显示 -->
|
|
|
|
<!-- 1个检套餐显示 -->
|
|
|
|
<view>
|
|
|
|
<view>
|
|
|
|
<text class="text-#8B8B8B">适用人群:</text>
|
|
|
|
<text class="text-#8B8B8B">适用人群:</text>
|
|
|
|
@ -259,10 +247,7 @@ onShow(() => {
|
|
|
|
<view v-if="status != 1" class="px-15rpx pt-10rpx">
|
|
|
|
<view v-if="status != 1" class="px-15rpx pt-10rpx">
|
|
|
|
<!-- 2个检自选 和 3团检套餐 4团检自选 都要显示头像和名字 -->
|
|
|
|
<!-- 2个检自选 和 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">{{
|
|
|
|
<text class="text-#0E0E0E text-32rpx">{{
|
|
|
|
@ -280,10 +265,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>
|
|
|
|
@ -296,108 +278,59 @@ onShow(() => {
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="pb-300rpx">
|
|
|
|
<view class="pb-300rpx">
|
|
|
|
<view class="flex items-center justify-around px-30rpx mt-30rpx">
|
|
|
|
<view class="flex items-center justify-around px-30rpx mt-30rpx">
|
|
|
|
<text
|
|
|
|
<text v-if="status == 1 || status == 3" @click="tabIndex = 0" :class="tabIndex == 0 ? 'active' : ''"
|
|
|
|
v-if="status == 1 || status == 3"
|
|
|
|
class="text-30rpx text-#2E2E2E">套餐内容</text>
|
|
|
|
@click="tabIndex = 0"
|
|
|
|
<text v-else @click="tabIndex = 0" :class="tabIndex == 0 ? 'active' : ''"
|
|
|
|
:class="tabIndex == 0 ? 'active' : ''"
|
|
|
|
class="text-30rpx text-#2E2E2E">自选内容</text>
|
|
|
|
class="text-30rpx text-#2E2E2E"
|
|
|
|
<text @click="GetReadmeDetails" :class="tabIndex == 1 ? 'active' : ''"
|
|
|
|
>套餐内容</text
|
|
|
|
class="text-30rpx text-#2E2E2E">体检须知</text>
|
|
|
|
>
|
|
|
|
</view>
|
|
|
|
<text
|
|
|
|
<view v-if="tabIndex == 0" class="mt-20rpx bg-#fff py-40rpx px-14rpx box-border flex-col flex">
|
|
|
|
v-else
|
|
|
|
|
|
|
|
@click="tabIndex = 0"
|
|
|
|
|
|
|
|
:class="tabIndex == 0 ? 'active' : ''"
|
|
|
|
|
|
|
|
class="text-30rpx text-#2E2E2E"
|
|
|
|
|
|
|
|
>自选内容</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<text
|
|
|
|
|
|
|
|
@click="GetReadmeDetails"
|
|
|
|
|
|
|
|
:class="tabIndex == 1 ? 'active' : ''"
|
|
|
|
|
|
|
|
class="text-30rpx text-#2E2E2E"
|
|
|
|
|
|
|
|
>体检须知</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
|
|
|
v-if="tabIndex == 0"
|
|
|
|
|
|
|
|
class="mt-20rpx bg-#fff py-40rpx px-14rpx box-border flex-col flex"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<!-- 套餐内容 -->
|
|
|
|
<!-- 套餐内容 -->
|
|
|
|
<view v-if="comboInfo?.items?.length" class="mb-20rpx">
|
|
|
|
<view v-if="comboInfo?.items?.length" class="mb-20rpx">
|
|
|
|
<!-- 套餐项目 -->
|
|
|
|
<!-- 套餐项目 -->
|
|
|
|
<view class="text-#2E2E2E text-30rpx center mb-20rpx"
|
|
|
|
<view class="text-#2E2E2E text-30rpx center mb-20rpx">套餐项目({{ comboInfo?.items?.length }}项)</view>
|
|
|
|
>套餐项目({{ comboInfo?.items?.length }}项)</view
|
|
|
|
<view class="flex h-67rpx bg-#239ea3 text-#fff text-26rpx rounded-10rpx">
|
|
|
|
>
|
|
|
|
<view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff">检查项目</view>
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="flex h-67rpx bg-#239ea3 text-#fff text-26rpx rounded-10rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"
|
|
|
|
|
|
|
|
>检查项目</view
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="grow center">检查指标意义</view>
|
|
|
|
<view class="grow center">检查指标意义</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view v-for="(val, index) in comboInfo?.items" :key="index">
|
|
|
|
<view v-for="(val, index) in comboInfo?.items" :key="index">
|
|
|
|
<view
|
|
|
|
<view v-if="val.keshi_name !='材料费'">
|
|
|
|
class="flex h-55rpx bg-#9f9f9f text-#fff text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
<view class="flex h-55rpx bg-#9f9f9f text-#fff text-24rpx rounded-10rpx mt-10rpx">
|
|
|
|
>
|
|
|
|
<view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"></view>
|
|
|
|
<view
|
|
|
|
<view class="grow center">{{ val.keshi_name }}({{ val.children.length }})</view>
|
|
|
|
class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"
|
|
|
|
</view>
|
|
|
|
></view>
|
|
|
|
<view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
<view class="grow center"
|
|
|
|
v-for="(v, i) in val.children" :key="i">
|
|
|
|
>{{ val.keshi_name }}({{ val.children.length }})</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">
|
|
|
|
>
|
|
|
|
{{ v.name }}
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="grow center p-10rpx box-border">{{v.desc || "-"}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
|
|
|
|
v-for="(v, i) in val.children"
|
|
|
|
|
|
|
|
:key="i"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<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"
|
|
|
|
|
|
|
|
>{{ v.name }}</view
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="grow center p-10rpx box-border">{{
|
|
|
|
|
|
|
|
v.desc || "-"
|
|
|
|
|
|
|
|
}}</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 团检内自带的项目 -->
|
|
|
|
<!-- 团检内自带的项目 -->
|
|
|
|
<view v-if="groupInfo?.items?.length" class="mb-20rpx">
|
|
|
|
<view v-if="groupInfo?.items?.length" class="mb-20rpx">
|
|
|
|
<!-- 套餐 -->
|
|
|
|
<!-- 套餐 -->
|
|
|
|
<view class="text-#2E2E2E text-30rpx center mb-20rpx"
|
|
|
|
<view class="text-#2E2E2E text-30rpx center mb-20rpx">套餐项目({{ groupInfo?.items?.length }}项)</view>
|
|
|
|
>套餐项目({{ groupInfo?.items?.length }}项)</view
|
|
|
|
<view class="flex h-67rpx bg-#239ea3 text-#fff text-26rpx rounded-10rpx">
|
|
|
|
>
|
|
|
|
<view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff">检查项目</view>
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="flex h-67rpx bg-#239ea3 text-#fff text-26rpx rounded-10rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"
|
|
|
|
|
|
|
|
>检查项目</view
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="grow center">检查指标意义</view>
|
|
|
|
<view class="grow center">检查指标意义</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view v-for="(val, index) in groupInfo?.items" :key="index">
|
|
|
|
<view v-for="(val, index) in groupInfo?.items" :key="index">
|
|
|
|
<view
|
|
|
|
<view class="flex h-55rpx bg-#9f9f9f text-#fff text-24rpx rounded-10rpx mt-10rpx">
|
|
|
|
class="flex h-55rpx bg-#9f9f9f text-#fff text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
<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="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>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
|
|
|
|
v-for="(v, i) in val.children" :key="i">
|
|
|
|
<view
|
|
|
|
<view
|
|
|
|
class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
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-for="(v, i) in val.children"
|
|
|
|
{{ v.name }}
|
|
|
|
: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"
|
|
|
|
|
|
|
|
>{{ v.name }}</view
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="grow center p-10rpx box-border">{{
|
|
|
|
<view class="grow center p-10rpx box-border">{{
|
|
|
|
v.desc || "-"
|
|
|
|
v.desc || "-"
|
|
|
|
}}</view>
|
|
|
|
}}</view>
|
|
|
|
@ -407,38 +340,22 @@ onShow(() => {
|
|
|
|
|
|
|
|
|
|
|
|
<view v-if="itemsInfo.items?.length">
|
|
|
|
<view v-if="itemsInfo.items?.length">
|
|
|
|
<!-- 自选 -->
|
|
|
|
<!-- 自选 -->
|
|
|
|
<view class="text-#2E2E2E text-30rpx center mb-20rpx"
|
|
|
|
<view class="text-#2E2E2E text-30rpx center mb-20rpx">自选项目({{ itemsInfo.items?.length }}项)</view>
|
|
|
|
>自选项目({{ itemsInfo.items?.length }}项)</view
|
|
|
|
<view class="flex h-67rpx bg-#239ea3 text-#fff text-26rpx rounded-10rpx">
|
|
|
|
>
|
|
|
|
<view class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff">检查项目</view>
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="flex h-67rpx bg-#239ea3 text-#fff text-26rpx rounded-10rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="min-w-155rpx max-w-155rpx center b-0 b-r-4 b-solid b-#fff"
|
|
|
|
|
|
|
|
>检查项目</view
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="grow center">检查指标意义</view>
|
|
|
|
<view class="grow center">检查指标意义</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view v-for="(val, index) in itemsInfo.items" :key="index">
|
|
|
|
<view v-for="(val, index) in itemsInfo.items" :key="index">
|
|
|
|
<view
|
|
|
|
<view class="flex h-55rpx bg-#9f9f9f text-#fff text-24rpx rounded-10rpx mt-10rpx">
|
|
|
|
class="flex h-55rpx bg-#9f9f9f text-#fff text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
<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="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>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
|
|
|
|
v-for="(v, i) in val.children" :key="i">
|
|
|
|
<view
|
|
|
|
<view
|
|
|
|
class="flex bg-#efefef text-#000 text-24rpx rounded-10rpx mt-10rpx"
|
|
|
|
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-for="(v, i) in val.children"
|
|
|
|
{{ v.name }}
|
|
|
|
: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"
|
|
|
|
|
|
|
|
>{{ v.name }}</view
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="grow center p-10rpx box-border">{{
|
|
|
|
<view class="grow center p-10rpx box-border">{{
|
|
|
|
v.desc || "-"
|
|
|
|
v.desc || "-"
|
|
|
|
}}</view>
|
|
|
|
}}</view>
|
|
|
|
@ -448,97 +365,60 @@ onShow(() => {
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view v-if="tabIndex == 1">
|
|
|
|
<view v-if="tabIndex == 1">
|
|
|
|
<!-- 体检须知 -->
|
|
|
|
<!-- 体检须知 -->
|
|
|
|
<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="rounded-15rpx mt-20rpx bg-#fff py-40rpx px-14rpx box-border flex-col flex">
|
|
|
|
class="rounded-15rpx mt-20rpx bg-#fff py-40rpx px-14rpx box-border flex-col flex"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="text-#2E2E2E text-30rpx font-500 text-center">
|
|
|
|
<view class="text-#2E2E2E text-30rpx font-500 text-center">
|
|
|
|
体检须知
|
|
|
|
体检须知
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view>
|
|
|
|
<image
|
|
|
|
<image class="w-5rpx h-26rpx" src="@/static/assets/slices/tjcol2x.png"></image>
|
|
|
|
class="w-5rpx h-26rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/tjcol2x.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
体检须知
|
|
|
|
体检须知
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view
|
|
|
|
<view class="flex flex-justify-around text-#111111 text-28rpx pt-24rpx pb-50rpx">
|
|
|
|
class="flex flex-justify-around text-#111111 text-28rpx pt-24rpx pb-50rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<image
|
|
|
|
<image class="w-80rpx h-80rpx" src="@/static/assets/slices/xgtc.png"></image>
|
|
|
|
class="w-80rpx h-80rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/xgtc.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
选购套餐
|
|
|
|
选购套餐
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="pt-25rpx">
|
|
|
|
<view class="pt-25rpx">
|
|
|
|
<image
|
|
|
|
<image class="w-30rpx h-30rpx" src="@/static/assets/slices/lt.png"></image>
|
|
|
|
class="w-30rpx h-30rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/lt.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<image
|
|
|
|
<image class="w-80rpx h-80rpx" src="@/static/assets/slices/yytj.png"></image>
|
|
|
|
class="w-80rpx h-80rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/yytj.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
预约体检
|
|
|
|
预约体检
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="pt-25rpx">
|
|
|
|
<view class="pt-25rpx">
|
|
|
|
<image
|
|
|
|
<image class="w-30rpx h-30rpx" src="@/static/assets/slices/lt.png"></image>
|
|
|
|
class="w-30rpx h-30rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/lt.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<image
|
|
|
|
<image class="w-80rpx h-80rpx" src="@/static/assets/slices/qwty.png"></image>
|
|
|
|
class="w-80rpx h-80rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/qwty.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
前往体检
|
|
|
|
前往体检
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="pt-25rpx">
|
|
|
|
<view class="pt-25rpx">
|
|
|
|
<image
|
|
|
|
<image class="w-30rpx h-30rpx" src="@/static/assets/slices/lt.png"></image>
|
|
|
|
class="w-30rpx h-30rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/lt.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<view class="flex flex-col flex-items-center">
|
|
|
|
<image
|
|
|
|
<image class="w-80rpx h-80rpx" src="@/static/assets/slices/lqbg.png"></image>
|
|
|
|
class="w-80rpx h-80rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/lqbg.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
领取报告
|
|
|
|
领取报告
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="pb-40rpx">
|
|
|
|
<view class="pb-40rpx">
|
|
|
|
<image
|
|
|
|
<image class="w-5rpx h-26rpx" src="@/static/assets/slices/tjcol2x.png"></image>
|
|
|
|
class="w-5rpx h-26rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/slices/tjcol2x.png"
|
|
|
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
体检注意事项
|
|
|
|
体检注意事项
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view v-html="notice.content"> </view>
|
|
|
|
<view v-html="notice.content"> </view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view
|
|
|
|
<view class="fixed bottom-0 left-0 w-full bg-#fff p-30rpx box-border between">
|
|
|
|
class="fixed bottom-0 left-0 w-full bg-#fff p-30rpx box-border between"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="grow">
|
|
|
|
<view class="grow">
|
|
|
|
<view class="flex items-end" v-if="comboId != 0">
|
|
|
|
<view class="flex items-end" v-if="comboId != 0">
|
|
|
|
<text class="text-18rpx text-#878787">套餐价格</text>
|
|
|
|
<text class="text-18rpx text-#878787">套餐价格</text>
|
|
|
|
<text class="text-21rpx text-#ED6907 mx-20rpx ml-56rpx"
|
|
|
|
<text class="text-21rpx text-#ED6907 mx-20rpx ml-56rpx">¥ {{ comboInfo.price }}</text>
|
|
|
|
>¥ {{ comboInfo.price }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="flex items-end">
|
|
|
|
<view class="flex items-end">
|
|
|
|
<text class="text-18rpx text-#878787">自选项目价格</text>
|
|
|
|
<text class="text-18rpx text-#878787">自选项目价格</text>
|
|
|
|
<text class="text-21rpx text-#ED6907 mx-20rpx"
|
|
|
|
<text class="text-21rpx text-#ED6907 mx-20rpx">¥ {{ itemsInfo.price || 0 }}</text>
|
|
|
|
>¥ {{ itemsInfo.price || 0 }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="flex items-end">
|
|
|
|
<view class="flex items-end">
|
|
|
|
<text class="text-18rpx text-#ED6907">合计费用</text>
|
|
|
|
<text class="text-18rpx text-#ED6907">合计费用</text>
|
|
|
|
@ -549,16 +429,11 @@ onShow(() => {
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="flex">
|
|
|
|
<view class="flex">
|
|
|
|
<button
|
|
|
|
<button @click="addCombo()"
|
|
|
|
@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
|
|
|
|
<button @click="buy()" class="bg-#239EA3 text-30rpx text-#fff rounded-r-full px-34rpx w-200rpx h-full">
|
|
|
|
@click="buy()"
|
|
|
|
|
|
|
|
class="bg-#239EA3 text-30rpx text-#fff rounded-r-full px-34rpx w-200rpx h-full"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
{{ buyText }}
|
|
|
|
{{ buyText }}
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
@ -566,9 +441,10 @@ onShow(() => {
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<style scoped lang="scss">
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.comboInfo {
|
|
|
|
.comboInfo {
|
|
|
|
position: relative;
|
|
|
|
position: relative;
|
|
|
|
z-index: 1;
|
|
|
|
z-index: 1;
|
|
|
|
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
&::after {
|
|
|
|
content: "";
|
|
|
|
content: "";
|
|
|
|
width: 100%;
|
|
|
|
width: 100%;
|
|
|
|
@ -596,5 +472,5 @@ onShow(() => {
|
|
|
|
transform: translateX(-50%);
|
|
|
|
transform: translateX(-50%);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|