|
|
|
@ -5,10 +5,20 @@ import DraggableButton from "@/pages/components/goHome.vue";
|
|
|
|
* 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 {
|
|
|
|
|
|
|
|
$api,
|
|
|
|
|
|
|
|
$response,
|
|
|
|
|
|
|
|
$image
|
|
|
|
|
|
|
|
} from "@/api";
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
|
|
|
onShow
|
|
|
|
|
|
|
|
} from "@dcloudio/uni-app";
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
|
|
|
useStore
|
|
|
|
|
|
|
|
} from "@/store";
|
|
|
|
|
|
|
|
|
|
|
|
// comboId 套餐ID 没有套餐ID就是个人自选项目
|
|
|
|
// comboId 套餐ID 没有套餐ID就是个人自选项目
|
|
|
|
// itemIds 自选ID
|
|
|
|
// itemIds 自选ID
|
|
|
|
@ -42,6 +52,8 @@ let leftList = ref({}); // 左侧列表
|
|
|
|
let tabIndex = ref(""); // 默认选中
|
|
|
|
let tabIndex = ref(""); // 默认选中
|
|
|
|
let rightLeft = ref([]); // 右侧列表
|
|
|
|
let rightLeft = ref([]); // 右侧列表
|
|
|
|
let selectIds = ref([]); // 选中id列表
|
|
|
|
let selectIds = ref([]); // 选中id列表
|
|
|
|
|
|
|
|
let selectItems = ref([]); // 选中项目列表
|
|
|
|
|
|
|
|
let BuyInfo = ref(""); //BuyInfo接口返回
|
|
|
|
let headImg = ref(""); // 头部图片
|
|
|
|
let headImg = ref(""); // 头部图片
|
|
|
|
let packagePrice = ref(0); //套餐折扣价格
|
|
|
|
let packagePrice = ref(0); //套餐折扣价格
|
|
|
|
let packageOriginalPrice = ref(0); //套餐原始价格
|
|
|
|
let packageOriginalPrice = ref(0); //套餐原始价格
|
|
|
|
@ -60,6 +72,7 @@ let personId = ref(""); // 就诊人ID
|
|
|
|
let groupId = ref(""); // 团检id
|
|
|
|
let groupId = ref(""); // 团检id
|
|
|
|
let losePrice = ref(0); // 剩余金额
|
|
|
|
let losePrice = ref(0); // 剩余金额
|
|
|
|
// let query = ref(""); // 参数
|
|
|
|
// let query = ref(""); // 参数
|
|
|
|
|
|
|
|
let popupItemList = ref(null); //已选项目列表弹窗
|
|
|
|
|
|
|
|
|
|
|
|
const getComboRecommend = async () => {
|
|
|
|
const getComboRecommend = async () => {
|
|
|
|
// 获取推荐套餐
|
|
|
|
// 获取推荐套餐
|
|
|
|
@ -119,16 +132,17 @@ const getBuyInfo = async () => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$response(response, () => {
|
|
|
|
$response(response, () => {
|
|
|
|
|
|
|
|
|
|
|
|
groupLength.value = response.data.group_info
|
|
|
|
groupLength.value = response.data.group_info ?
|
|
|
|
? response.data.group_info[0]?.items?.length
|
|
|
|
response.data.group_info[0]?.items?.length :
|
|
|
|
: 0;
|
|
|
|
0;
|
|
|
|
packagePrice.value = response.data.combo_info.price;
|
|
|
|
packagePrice.value = response.data.combo_info.price;
|
|
|
|
packageOriginalPrice.value = response.data.combo_info.original_price;
|
|
|
|
packageOriginalPrice.value = response.data.combo_info.original_price;
|
|
|
|
optionalPrice.value = response.data.items_info.price;
|
|
|
|
optionalPrice.value = response.data.items_info.price;
|
|
|
|
optionalOriginalPrice.value = response.data.items_info.original_price;
|
|
|
|
optionalOriginalPrice.value = response.data.items_info.original_price;
|
|
|
|
|
|
|
|
BuyInfo.value = response.data;
|
|
|
|
totalPrice.value = response.data.true_price;
|
|
|
|
totalPrice.value = response.data.true_price;
|
|
|
|
totalOriginalPrice.value = response.data.original_price;
|
|
|
|
totalOriginalPrice.value = response.data.original_price;
|
|
|
|
total.value = response.data.pay_item_count;
|
|
|
|
//total.value = response.data.pay_item_count;
|
|
|
|
losePrice.value = response.data.lose_price;
|
|
|
|
losePrice.value = response.data.lose_price;
|
|
|
|
if (status.value == 4 && groupLength.value) {
|
|
|
|
if (status.value == 4 && groupLength.value) {
|
|
|
|
// 团检无套餐ID的情况下需要判断一下 是否有团检自带套餐
|
|
|
|
// 团检无套餐ID的情况下需要判断一下 是否有团检自带套餐
|
|
|
|
@ -302,6 +316,25 @@ const XuanZeItem= async (item)=>{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const openPopupItemList = () => {
|
|
|
|
|
|
|
|
selectItems.value = [];
|
|
|
|
|
|
|
|
if (BuyInfo.value.items_info) {
|
|
|
|
|
|
|
|
BuyInfo.value.items_info.items.forEach((v, i) => {
|
|
|
|
|
|
|
|
v.children.forEach((v2, i2) => {
|
|
|
|
|
|
|
|
selectItems.value.push(v2)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (selectItems.value.length > 0) {
|
|
|
|
|
|
|
|
popupItemList.value.open()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const ClearItems=async()=>{
|
|
|
|
|
|
|
|
selectIds.value=[];
|
|
|
|
|
|
|
|
await getBuyInfo()
|
|
|
|
|
|
|
|
popupItemList.value.close()
|
|
|
|
|
|
|
|
}
|
|
|
|
onShow(() => {
|
|
|
|
onShow(() => {
|
|
|
|
if (!!config_ref.value) {
|
|
|
|
if (!!config_ref.value) {
|
|
|
|
mountedAction();
|
|
|
|
mountedAction();
|
|
|
|
@ -315,28 +348,50 @@ onShow(() => {
|
|
|
|
<view :ref="configRef"></view>
|
|
|
|
<view :ref="configRef"></view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<uni-popup ref="popupItemList" type="bottom">
|
|
|
|
|
|
|
|
<view class="popupItemList-content">
|
|
|
|
|
|
|
|
<view style="display: flex;justify-content: space-between;margin-bottom: 34rpx;">
|
|
|
|
|
|
|
|
<view style="font-size: 30rpx;">已加购项目</view>
|
|
|
|
|
|
|
|
<view style="color: #9E9E9F;display: flex;align-items: center;" @click="ClearItems()">
|
|
|
|
|
|
|
|
<uni-icons type="trash" color="#9E9E9F" size="20"></uni-icons>
|
|
|
|
|
|
|
|
<view style="font-size: 20rpx;">清空</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view v-for="(item,index) in selectItems">
|
|
|
|
|
|
|
|
<view class="itemlist_list" @click="XuanZeItem(item)">
|
|
|
|
|
|
|
|
<view>
|
|
|
|
|
|
|
|
<view style="display: flex; align-items: center;margin-bottom: 20rpx;">
|
|
|
|
|
|
|
|
<view class="itemlist_bianhao">{{index+1}}</view>
|
|
|
|
|
|
|
|
<view class="itemlist_itemname">{{item.name}}</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view style="display: flex;align-items: end;">
|
|
|
|
|
|
|
|
<view class="itemlist_price"><span style="font-size: 20rpx;">¥</span>{{item.price}}</view>
|
|
|
|
|
|
|
|
<view class="itemlist_org_price line-through">{{item.original_price}}</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view :class="{
|
|
|
|
|
|
|
|
'!bg-#009fa8 !b-#008e99': selectIds.includes(item.id),
|
|
|
|
|
|
|
|
}" class="w-24rpx h-24rpx b-1 b-solid b-#009fa8 bg-#fff rounded-24rpx center">
|
|
|
|
|
|
|
|
<image v-if="selectIds.includes(item.id)" class="w-20rpx" src="@/static/assets/select.png"
|
|
|
|
|
|
|
|
mode="widthFix" />
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
</uni-popup>
|
|
|
|
<uni-popup ref="popupTip">
|
|
|
|
<uni-popup ref="popupTip">
|
|
|
|
<view
|
|
|
|
<view class="mb-70rpx bg-#fff text-center box-border pt-80rpx pb-50rpx px-65rpx w-90vw rounded-15rpx">
|
|
|
|
class="mb-70rpx bg-#fff text-center box-border pt-80rpx pb-50rpx px-65rpx w-90vw rounded-15rpx"
|
|
|
|
<view class="w-full text-center text-##090909 text-26rpx line-height-[50rpx]">您还剩余
|
|
|
|
>
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
|
|
|
class="w-full text-center text-##090909 text-26rpx line-height-[50rpx]"
|
|
|
|
|
|
|
|
>您还剩余
|
|
|
|
|
|
|
|
{{ losePrice }}
|
|
|
|
{{ losePrice }}
|
|
|
|
元体检额度尚未使用,确认提交后剩余体检额度将无法使用!</view
|
|
|
|
元体检额度尚未使用,确认提交后剩余体检额度将无法使用!
|
|
|
|
>
|
|
|
|
</view>
|
|
|
|
<view class="mt-50rpx between">
|
|
|
|
<view class="mt-50rpx between">
|
|
|
|
<button
|
|
|
|
<button type="primary" @click="toDetails(1)"
|
|
|
|
type="primary"
|
|
|
|
class="w-196rpx h-68rpx center text-#fff text-24rpx !bg-#239EA3 rounded-8rpx">
|
|
|
|
@click="toDetails(1)"
|
|
|
|
|
|
|
|
class="w-196rpx h-68rpx center text-#fff text-24rpx !bg-#239EA3 rounded-8rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
我想好了
|
|
|
|
我想好了
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
<button @click="popupTip.close()"
|
|
|
|
@click="popupTip.close()"
|
|
|
|
class="w-196rpx h-68rpx center text-#239EA3 text-24rpx !bg-#D9F3F2 rounded-8rpx">
|
|
|
|
class="w-196rpx h-68rpx center text-#239EA3 text-24rpx !bg-#D9F3F2 rounded-8rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
我再想想
|
|
|
|
我再想想
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
@ -346,39 +401,19 @@ onShow(() => {
|
|
|
|
<view class="bg-#fff rounded-15rpx w-95vw px-20rpx box-border">
|
|
|
|
<view class="bg-#fff rounded-15rpx w-95vw px-20rpx box-border">
|
|
|
|
<view class="center relative pt-47rpx pb-32rpx text-36rpx">
|
|
|
|
<view class="center relative pt-47rpx pb-32rpx text-36rpx">
|
|
|
|
<text class="line-height-[1]">推荐套餐</text>
|
|
|
|
<text class="line-height-[1]">推荐套餐</text>
|
|
|
|
<uni-icons
|
|
|
|
<uni-icons @click="popup.close()" type="closeempty" color="#A6A6A6" size="26"
|
|
|
|
@click="popup.close()"
|
|
|
|
class="absolute right-40rpx top-30rpx"></uni-icons>
|
|
|
|
type="closeempty"
|
|
|
|
</view>
|
|
|
|
color="#A6A6A6"
|
|
|
|
<view v-for="(item, index) in recommendPackageList" :key="index"
|
|
|
|
size="26"
|
|
|
|
class="pt-40rpx pb-15rpx box-border b-0 b-t-1 b-solid b-#E1ECEE">
|
|
|
|
class="absolute right-40rpx top-30rpx"
|
|
|
|
|
|
|
|
></uni-icons>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
|
|
|
v-for="(item, index) in recommendPackageList"
|
|
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
|
|
class="pt-40rpx pb-15rpx box-border b-0 b-t-1 b-solid b-#E1ECEE"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="flex w-full">
|
|
|
|
<view class="flex w-full">
|
|
|
|
<image
|
|
|
|
<image v-if="item.cover" :src="$image(item.cover)" class="w-190rpx h-190rpx mr-37rpx"
|
|
|
|
v-if="item.cover"
|
|
|
|
mode="widthFix" />
|
|
|
|
:src="$image(item.cover)"
|
|
|
|
|
|
|
|
class="w-190rpx h-190rpx mr-37rpx"
|
|
|
|
|
|
|
|
mode="widthFix"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
<view class="flex flex-col grow">
|
|
|
|
<view class="flex flex-col grow">
|
|
|
|
<text
|
|
|
|
<text>{{ item.name }}</text>
|
|
|
|
>{{ item.name }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="mt-13rpx mb-18rpx">
|
|
|
|
<view class="mt-13rpx mb-18rpx">
|
|
|
|
<uni-tag
|
|
|
|
<uni-tag v-for="(val, i) in item.tags" :key="i" size="small" :inverted="true"
|
|
|
|
v-for="(val, i) in item.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:' +
|
|
|
|
@ -386,16 +421,11 @@ onShow(() => {
|
|
|
|
'; color:' +
|
|
|
|
'; color:' +
|
|
|
|
val.text_color +
|
|
|
|
val.text_color +
|
|
|
|
';'
|
|
|
|
';'
|
|
|
|
"
|
|
|
|
" />
|
|
|
|
/>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view>
|
|
|
|
<text
|
|
|
|
<text v-for="(val, i) in item.tags2" :key="i"
|
|
|
|
v-for="(val, i) in item.tags2"
|
|
|
|
class="text-#8B8B8B text-20rpx line-height-[1] px-5rpx b-0 b-r-2 b-solid b-#8B8B8B">{{ val }}</text>
|
|
|
|
:key="i"
|
|
|
|
|
|
|
|
class="text-#8B8B8B text-20rpx line-height-[1] px-5rpx b-0 b-r-2 b-solid b-#8B8B8B"
|
|
|
|
|
|
|
|
>{{ 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>
|
|
|
|
@ -405,9 +435,7 @@ onShow(() => {
|
|
|
|
<text class="text-18rpx text-#878787 line-through">{{
|
|
|
|
<text class="text-18rpx text-#878787 line-through">{{
|
|
|
|
item.original_price
|
|
|
|
item.original_price
|
|
|
|
}}</text>
|
|
|
|
}}</text>
|
|
|
|
<text class="text-18rpx text-#878787 ml-auto mr-55rpx"
|
|
|
|
<text class="text-18rpx text-#878787 ml-auto mr-55rpx">已售{{ item.count }}</text>
|
|
|
|
>已售{{ item.count }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
@ -424,71 +452,47 @@ onShow(() => {
|
|
|
|
? "增加"
|
|
|
|
? "增加"
|
|
|
|
: "减少"
|
|
|
|
: "减少"
|
|
|
|
}}了
|
|
|
|
}}了
|
|
|
|
<text class="text-#239EA3"
|
|
|
|
<text class="text-#239EA3">¥{{ item.recommend?.money.replace(/-/, "") }}</text>
|
|
|
|
>¥{{ item.recommend?.money.replace(/-/, "") }}</text
|
|
|
|
</view>
|
|
|
|
>
|
|
|
|
<button type="primary" @click="buy(item)"
|
|
|
|
</view>
|
|
|
|
class="w-160rpx h-60rpx center text-#fff text-28rpx !bg-#239EA3 rounded-full">
|
|
|
|
<button
|
|
|
|
|
|
|
|
type="primary"
|
|
|
|
|
|
|
|
@click="buy(item)"
|
|
|
|
|
|
|
|
class="w-160rpx h-60rpx center text-#fff text-28rpx !bg-#239EA3 rounded-full"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
预约
|
|
|
|
预约
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="b-0 b-t-1 b-solid b-#E1ECEE pt-80rpx pb-70rpx">
|
|
|
|
<view class="b-0 b-t-1 b-solid b-#E1ECEE pt-80rpx pb-70rpx">
|
|
|
|
<button
|
|
|
|
<button type="primary" @click="buy()"
|
|
|
|
type="primary"
|
|
|
|
class="w-300rpx h-78rpx center text-#fff text-30rpx !bg-#239EA3 rounded-10rpx">
|
|
|
|
@click="buy()"
|
|
|
|
|
|
|
|
class="w-300rpx h-78rpx center text-#fff text-30rpx !bg-#239EA3 rounded-10rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
跳过
|
|
|
|
跳过
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</uni-popup>
|
|
|
|
</uni-popup>
|
|
|
|
<view class="bg-#d8edf2">
|
|
|
|
<view class="bg-#d8edf2">
|
|
|
|
<uni-search-bar
|
|
|
|
<uni-search-bar class="search" radius="100" placeholder="请输入关键字搜索" @clear="getAllItems()"
|
|
|
|
class="search"
|
|
|
|
@cancel="getAllItems()" @confirm="getAllItems" />
|
|
|
|
radius="100"
|
|
|
|
|
|
|
|
placeholder="请输入关键字搜索"
|
|
|
|
|
|
|
|
@clear="getAllItems()"
|
|
|
|
|
|
|
|
@cancel="getAllItems()"
|
|
|
|
|
|
|
|
@confirm="getAllItems"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="mt-20rpx flex min-h-100%" style="background-color: #eef7f7;">
|
|
|
|
<view class="mt-20rpx flex min-h-100%" style="background-color: #eef7f7;">
|
|
|
|
<view class="min-w-214rpx max-w-214rpx mr-20rpx min-h-100% text-center">
|
|
|
|
<view class="min-w-214rpx max-w-214rpx mr-20rpx min-h-100% text-center">
|
|
|
|
<view
|
|
|
|
<view class="w-100% rounded-r-full text-#0E0E0E text-25rpx px-20rpx w-100% center h-84rpx box-border"
|
|
|
|
class="w-100% rounded-r-full text-#0E0E0E text-25rpx px-20rpx w-100% center h-84rpx box-border"
|
|
|
|
v-for="(item, index) in leftList" :key="index" :class="{
|
|
|
|
v-for="(item, index) in leftList"
|
|
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
|
|
:class="{
|
|
|
|
|
|
|
|
'bg-gradient-to-r from-#edf6f5 to-#bbdfe2': tabIndex == index,
|
|
|
|
'bg-gradient-to-r from-#edf6f5 to-#bbdfe2': tabIndex == index,
|
|
|
|
}"
|
|
|
|
}" @click="
|
|
|
|
@click="
|
|
|
|
|
|
|
|
() => {
|
|
|
|
() => {
|
|
|
|
tabIndex = index;
|
|
|
|
tabIndex = index;
|
|
|
|
rightLeft = item.children;
|
|
|
|
rightLeft = item.children;
|
|
|
|
headImg = item.head_img;
|
|
|
|
headImg = item.head_img;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
"
|
|
|
|
">
|
|
|
|
>
|
|
|
|
|
|
|
|
{{ item.title }}
|
|
|
|
{{ item.title }}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view style="height: 150rpx;"></view>
|
|
|
|
<view style="height: 150rpx;"></view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="grow min-h-100% bg-#fff pb-200rpx">
|
|
|
|
<view class="grow min-h-100% bg-#fff pb-200rpx">
|
|
|
|
|
|
|
|
|
|
|
|
<view
|
|
|
|
<view v-for="(item, index) in rightLeft" :key="index" :class="{
|
|
|
|
v-for="(item, index) in rightLeft"
|
|
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
|
|
:class="{
|
|
|
|
|
|
|
|
'!b-0': index == rightLeft.length - 1,
|
|
|
|
'!b-0': index == rightLeft.length - 1,
|
|
|
|
}"
|
|
|
|
}" class="flex justify-between center py-30rpx px-20rpx b-b-1px b-b-solid b-b-#e5e5e5">
|
|
|
|
class="flex justify-between center py-30rpx px-20rpx b-b-1px b-b-solid b-b-#e5e5e5"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<view class="w-40% text-#0E0E0E text-24rpx flex items-center">
|
|
|
|
<view class="w-40% text-#0E0E0E text-24rpx flex items-center">
|
|
|
|
<text>{{ item.title }}</text>
|
|
|
|
<text>{{ item.title }}</text>
|
|
|
|
<uni-tooltip>
|
|
|
|
<uni-tooltip>
|
|
|
|
@ -504,83 +508,41 @@ onShow(() => {
|
|
|
|
<uni-icons color="#009fa8" type="help-filled" size="14"></uni-icons>
|
|
|
|
<uni-icons color="#009fa8" type="help-filled" size="14"></uni-icons>
|
|
|
|
</uni-tooltip>
|
|
|
|
</uni-tooltip>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view
|
|
|
|
<view class="w-58% items-end flex justify-between" @click="XuanZeItem(item)">
|
|
|
|
class="w-58% items-end flex justify-between"
|
|
|
|
|
|
|
|
@click="XuanZeItem(item)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<text class="text-#EC3D15 text-26rpx">¥ {{ item.price }}</text>
|
|
|
|
<text class="text-#EC3D15 text-26rpx">¥ {{ item.price }}</text>
|
|
|
|
<text class="text-#9e9d9d text-20rpx line-through"
|
|
|
|
<text class="text-#9e9d9d text-20rpx line-through">¥ {{ item.original_price }}</text>
|
|
|
|
>¥ {{ item.original_price }}</text
|
|
|
|
<view :class="{
|
|
|
|
>
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
|
|
|
:class="{
|
|
|
|
|
|
|
|
'!bg-#009fa8 !b-#008e99': selectIds.includes(item.id),
|
|
|
|
'!bg-#009fa8 !b-#008e99': selectIds.includes(item.id),
|
|
|
|
}"
|
|
|
|
}" class="w-24rpx h-24rpx b-1 b-solid b-#c3e9eb bg-#ccecee rounded-8rpx center">
|
|
|
|
class="w-24rpx h-24rpx b-1 b-solid b-#c3e9eb bg-#ccecee rounded-8rpx center"
|
|
|
|
<image v-if="selectIds.includes(item.id)" class="w-20rpx" src="@/static/assets/select.png"
|
|
|
|
>
|
|
|
|
mode="widthFix" />
|
|
|
|
<image
|
|
|
|
|
|
|
|
v-if="selectIds.includes(item.id)"
|
|
|
|
|
|
|
|
class="w-20rpx"
|
|
|
|
|
|
|
|
src="@/static/assets/select.png"
|
|
|
|
|
|
|
|
mode="widthFix"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view
|
|
|
|
<view style="z-index: 999;"
|
|
|
|
class="fixed bottom-0 left-0 w-100% h-135rpx bg-gradient-to-r from-#7fcfd3 to-#aad7d7 px-20rpx py-30rpx box-border items-center flex justify-between"
|
|
|
|
class="fixed bottom-0 left-0 w-100% h-150rpx bg-gradient-to-r from-#7fcfd3 to-#aad7d7 px-20rpx py-30rpx box-border items-center flex justify-between">
|
|
|
|
>
|
|
|
|
<view style="position: relative;" class="w-110rpx h-129rpx ml-60rpx mt-5rpx" @click="openPopupItemList()">
|
|
|
|
<text
|
|
|
|
<image class="w-110rpx h-129rpx" src="@/static/assets/buy/xiong.png" mode="widthFix" />
|
|
|
|
class="text-26rpx text-#121212 b-r-1 b-r-solid b-#8D9698 pr-12rpx mr-12rpx min-w-120rpx max-w-120rpx"
|
|
|
|
<view class="yuandian">
|
|
|
|
>
|
|
|
|
{{ selectIds.length }}
|
|
|
|
您需付费 \n{{ total }}个项目
|
|
|
|
|
|
|
|
</text>
|
|
|
|
|
|
|
|
<view class="grow">
|
|
|
|
|
|
|
|
<view class="flex items-end" v-if="comboId != 0">
|
|
|
|
|
|
|
|
<text class="text-18rpx text-#878787">套餐价格</text>
|
|
|
|
|
|
|
|
<text class="text-21rpx text-#ED6907 mx-20rpx"
|
|
|
|
|
|
|
|
>¥ {{ packagePrice }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<text class="text-18rpx text-#878787 line-through"
|
|
|
|
|
|
|
|
>¥ {{ packageOriginalPrice }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="flex items-end">
|
|
|
|
|
|
|
|
<text class="text-18rpx text-#878787">自选项目价格</text>
|
|
|
|
|
|
|
|
<text class="text-21rpx text-#ED6907 mx-20rpx"
|
|
|
|
|
|
|
|
>¥ {{ optionalPrice || 0 }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<text
|
|
|
|
|
|
|
|
v-if="optionalOriginalPrice"
|
|
|
|
|
|
|
|
class="text-18rpx text-#878787 line-through"
|
|
|
|
|
|
|
|
>¥ {{ optionalOriginalPrice }}</text
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="grow" style="margin-left: 10rpx;">
|
|
|
|
<view class="flex items-end">
|
|
|
|
<view class="flex items-end">
|
|
|
|
<text class="text-18rpx text-#ED6907">合计费用</text>
|
|
|
|
<text class="text-46rpx text-#e95513 ml-20rpx mr-5rpx">¥</text>
|
|
|
|
<text class="text-24rpx text-#ED6907 ml-20rpx mr-5rpx">¥</text>
|
|
|
|
<text class="text-46rpx text-#e95513 mr-10rpx font-bold">{{
|
|
|
|
<text class="text-36rpx text-#ED6907 mr-20rpx font-bold">{{
|
|
|
|
|
|
|
|
totalPrice || 0
|
|
|
|
totalPrice || 0
|
|
|
|
}}</text>
|
|
|
|
}}</text>
|
|
|
|
<text
|
|
|
|
<text v-if="totalOriginalPrice" class="text-26rpx text-#3e3a39 line-through">¥
|
|
|
|
v-if="totalOriginalPrice"
|
|
|
|
{{ totalOriginalPrice }}</text>
|
|
|
|
class="text-18rpx text-#878787 line-through"
|
|
|
|
</view>
|
|
|
|
>¥ {{ totalOriginalPrice }}</text
|
|
|
|
</view>
|
|
|
|
>
|
|
|
|
<view @click="confirm()" class="button">
|
|
|
|
</view>
|
|
|
|
确认项目
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<button
|
|
|
|
|
|
|
|
type="primary"
|
|
|
|
|
|
|
|
@click="confirm()"
|
|
|
|
|
|
|
|
class="text-#F8F8F8 w-240rpx h-hull rounded-full !bg-#239EA3 !mx-0 text-30rpx"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
确定
|
|
|
|
|
|
|
|
</button>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<style>
|
|
|
|
<style>
|
|
|
|
@ -588,3 +550,76 @@ onShow(() => {
|
|
|
|
background-color: #fff;
|
|
|
|
background-color: #fff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
|
|
.button {
|
|
|
|
|
|
|
|
color: #00828e;
|
|
|
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
|
|
|
height: 58rpx;
|
|
|
|
|
|
|
|
line-height: 58rpx;
|
|
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
width: 174rpx;
|
|
|
|
|
|
|
|
border-radius: 24rpx;
|
|
|
|
|
|
|
|
margin-right: 20rpx;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.popupItemList-content {
|
|
|
|
|
|
|
|
padding: 40rpx 40rpx 180rpx 40rpx;
|
|
|
|
|
|
|
|
border-radius: 40rpx;
|
|
|
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.yuandian {
|
|
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
|
|
top: 55rpx;
|
|
|
|
|
|
|
|
right: -10rpx;
|
|
|
|
|
|
|
|
background-color: #E95513;
|
|
|
|
|
|
|
|
height: 26rpx;
|
|
|
|
|
|
|
|
width: 26rpx;
|
|
|
|
|
|
|
|
border-radius: 13rpx;
|
|
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
|
|
font-size: 20rpx;
|
|
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
font-weight: 900;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.itemlist_org_price {
|
|
|
|
|
|
|
|
color: #9E9E9F;
|
|
|
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
|
|
|
font-size: 18rpx;
|
|
|
|
|
|
|
|
margin-left: 10rpx;
|
|
|
|
|
|
|
|
padding-bottom: 5rpx;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.itemlist_price {
|
|
|
|
|
|
|
|
color: #E95513;
|
|
|
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.itemlist_itemname {
|
|
|
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.itemlist_list {
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
border-bottom: 1px solid #00828e;
|
|
|
|
|
|
|
|
padding-bottom: 20rpx;
|
|
|
|
|
|
|
|
margin-bottom: 20rpx;
|
|
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.itemlist_bianhao{
|
|
|
|
|
|
|
|
height: 26rpx;
|
|
|
|
|
|
|
|
width: 26rpx;
|
|
|
|
|
|
|
|
margin-right: 10rpx;
|
|
|
|
|
|
|
|
border-radius: 26rpx;
|
|
|
|
|
|
|
|
line-height: 26rpx;
|
|
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
|
|
font-size: 20rpx;
|
|
|
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
background: linear-gradient(to right, #67a8aa, #8ce7e7);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
</style>
|