You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1170 lines
29 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<script setup>
import DraggableButton from "@/pages/components/goHome.vue";
import PriceRange from "@/common/PriceRange.vue";
/**
* name
* usersa0ChunLuyu
* date2024年8月7日 20:05:05
*/
import {
ref,
computed,
nextTick
} from "vue";
import {
$image,
$api,
$response
} from "@/api";
import {
onShow,
onLoad
} from "@dcloudio/uni-app";
import {
useStore
} from "@/store";
const $store = useStore();
const $props = defineProps({
groupId: {
type: String,
default: "",
},
});
const combo_active = ref("");
const person_active = ref("");
let tabs_active_id=ref(false); //激活tabsid
let popup = ref(null);
let popup_new = ref(null);
let selectKey = ref(""); // 整个选择的key
let sortIndex = ref(0); // 排序的索引
let comboIndex = ref(null); // 套餐类型索引
let sort_price_index=ref(null)
let sort_salecount_index=ref(null)
let crowdIndex = ref(null); // 适用人群索引
let priceIndex = ref(null); // 套餐价格索引
let projectIds = ref([]); // 项目id集合
let screenObj = ref({}); // 筛选条件
let combo_select = ref({}); // 套餐筛选条件
let comboIds = ref([]); // 套餐对比列表
let popupMultiple = ref(false); // 多选弹窗
let multipleList = ref([]); // 多选列表
let multipleIndex = ref(0); // 多选索引
let itemIds = ref([]); // 项目id集合
let itemId = ref(""); // 项目id
let comboId = ref(""); // 套餐id
let price_max_min=ref([]);
let zhuangjianType=ref(18);
let TiShiPopupRef=ref(null);//提示弹窗
let SelectedComboInfo=ref(null);//选中的套餐信息
const selectItemClick = async (index, key) => {
// 选择套餐条件
let data = combo_select.value;
if (selectKey.value == "sort_list") {
combo_list.value.list = []
if (sortIndex.value == index) {
sortIndex.value = 0;
} else {
sortIndex.value = index;
}
screenObj.value.combo_sort = data[selectKey.value][index]?.id;
} else if (selectKey.value == "sort_sale_count") {
//清除综合排序
sortIndex.value = 0;
delete screenObj.value.combo_sort;
if (sort_salecount_index.value == index) {
sort_salecount_index.value = null;
delete screenObj.value.sort_sale_count;
} else {
sort_salecount_index.value = index;
screenObj.value.sort_sale_count = data[selectKey.value][index]?.id;
}
} else if (selectKey.value == "sort_price") {
//清除综合排序
sortIndex.value = 0;
delete screenObj.value.combo_sort;
if (sort_price_index.value == index) {
sort_price_index.value = null;
delete screenObj.value.sort_price;
} else {
sort_price_index.value = index;
screenObj.value.sort_price = data[selectKey.value][index]?.id;
}
} else {
if (key == "combo_price") {
if (priceIndex.value == index) {
priceIndex.value = null;
return;
}
priceIndex.value = index;
} else {
if (projectIds.value?.includes(index)) {
projectIds.value.splice(projectIds.value.indexOf(index), 1);
} else {
projectIds.value.push(index);
}
}
return;
}
await getComboList();
popup.value.close();
};
const selectDone = async () => {
if (priceIndex.value === null) {
delete screenObj.value.combo_price;
} else {
screenObj.value.combo_price =
combo_select.value["combo_price"][priceIndex.value]?.id;
}
if (projectIds.value.length) {
screenObj.value.combo_item = projectIds.value;
} else {
delete screenObj.value.combo_item;
}
await getComboList();
popup_new.value.close();
};
const remake = () => {
// 重置筛选
delete screenObj.value.combo_price;
delete screenObj.value.combo_item;
delete screenObj.value.price_range
delete screenObj.value.combo_crowd
delete screenObj.value.combo_type
price_max_min.value=[0,combo_list.value.price_max];
priceIndex.value = null;
projectIds.value = [];
comboIndex.value=null
crowdIndex.value=null
};
const getComboSelect = async () => {
uni.showLoading();
const response = await $api("GetComboSort");
uni.hideLoading();
$response(response, async () => {
combo_select.value = response.data;
combo_select.value.sort_sale_count=[{id:1,name:"销量从低到高"},{id:2,name:"销量从高到低"}]
combo_select.value.sort_price=[{id:1,name:"价格从低到高"},{id:2,name:"价格从高到低"}]
if ("sort_list" in combo_select.value) {
selectKey.value = "sort_list";
sortIndex.value = 0;
}
await getComboList();
});
};
const combo_list = ref({
list: [],
hospital: {
id: 1,
},
doctor: {
id: 0,
},
info: {
name: "",
},
});
const combo_list_computed = computed(() => {
let list = [];
for (let i in combo_list.value.list) {
let push = false;
if (!combo_active.value) {
push = true;
} else {
if (combo_list.value.list[i].combo_type === combo_active.value) {
push = true;
}
}
if (!!push) {
if (!person_active.value) {
push = true;
} else {
if (combo_list.value.list[i].person_type === person_active.value) {
push = true;
} else {
push = false;
}
}
}
if (!!push) {
list.push(combo_list.value.list[i]);
}
}
return list;
});
let combo_list_k = ref(null)
const getComboList = async (e) => {
uni.showLoading();
let obj = {
doctor: $store.save.doctor,
hospital: hospital_active.value,
search: e?.value,
keshi_name: keshi_name.value
};
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();
$response(response, () => {
combo_list.value = response.data;
price_max_min.value=combo_list.value.price_max_min
});
};
const contrastClick = async (item) => {
if (comboIds.value.includes(item.combo_id)) {
comboIds.value.splice(comboIds.value.indexOf(item.combo_id), 1);
} else {
if (comboIds.value.length < 3) {
comboIds.value.push(item.combo_id);
} else {
uni.showToast({
title: "最多对比3个套餐",
icon: "none",
});
}
}
$store.setComboContrast(comboIds.value);
};
const hospital_active = ref(0);
const checkHospital = () => {
let hospital_id = $store.save.hospital;
comboIds.value = $store.getComboContrast() || [];
if (!hospital_id) {
hospital_id = $store.config.hospital[0].id;
}
hospital_active.value = hospital_id;
$store.saveInfo({
hospital: hospital_id,
});
getComboSelect();
};
const tabPatients = () => {
uni.navigateTo({
url: "/pages/user/choose/choose",
});
};
const open = (key) => {
if (key) {
// 点击三个筛选条件
selectKey.value = key;
popup.value.close();
popup_new.value.close();
let time = setTimeout(() => {
popup.value.open("top");
clearTimeout(time);
}, 400);
} else {
// 点击筛选
popup.value.close();
popup_new.value.close();
selectKey.value = "screen";
let time = setTimeout(() => {
popup_new.value.open("top");
clearTimeout(time);
}, 400);
// 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 = [];
// }
}
};
const config_ref = ref(null);
const configRef = (e) => {
if (!config_ref.value) {
config_ref.value = e;
checkHospital();
}
};
onShow(() => {
$store.setDuoXuanYi({});
itemIds.value = [];
if (!!config_ref.value) {
checkHospital();
}
});
let keshi_name = ref(null);
onLoad((e) => {
keshi_name.value = e.keshi_name
})
const buyClick = async (item) => {
SelectedComboInfo.value=item
let checkup_type_id = $store.getCheckupTypeId();
console.log("----", checkup_type_id.id);
if (checkup_type_id.id == "" || checkup_type_id.id == undefined) {
$store.setCheckupTypeId({
id: item.checkup_type_id
});
}
comboId.value = item.combo_id;
if (item.duo_xuan_yi.length > 0) {
popupMultiple.value.open("center");
multipleIndex.value = 0;
itemIds.value = [];
$store.setDuoXuanYi([]);
itemId.value = "";
multipleList.value = item.duo_xuan_yi;
return;
}
if(item.type_id=zhuangjianType.value){
TiShiPopupRef.value.open();
return
}
toDetail();
};
const nextItemClick = () => {
if (!itemId.value) {
uni.$lu.toast("请选择项目");
return;
}
itemIds.value.push({
item_id: itemId.value,
zu_name: multipleList.value[multipleIndex.value]["0"]["zu_name"],
});
if (multipleIndex.value == multipleList.value.length - 1) {
toDetail();
return;
}
itemId.value = "";
multipleIndex.value = multipleIndex.value + 1;
};
const toDetail = () => {
// 跳转到套餐详情
let query = "?comboId=" + comboId.value;
if ($props.groupId) {
// 团检把团检ID加上
query += "&groupId=" + $props.groupId;
}
$store.setDuoXuanYi(itemIds.value);
// 个检只要套餐ID
// 预约 跳转到个检/团检套餐详情
popupMultiple.value.close();
uni.navigateTo({
url: "/pages/main/tj/tjxq" + query,
});
};
const toRouter = () => {
if (!comboIds.value.length) {
uni.showToast({
title: "请先选择套餐",
icon: "none",
});
return;
}
uni.navigateTo({
url: "/pages/main/combo/tcdb",
});
};
const ComboTypeClickFunc=(id)=>{
if(comboIndex.value==id){
comboIndex.value=null
delete screenObj.value.combo_type
}else{
comboIndex.value=id
screenObj.value.combo_type=comboIndex.value
}
}
const ComboCrowdClickFunc=(id)=>{
if(crowdIndex.value==id){
crowdIndex.value=null
delete screenObj.value.combo_crowd
}else{
crowdIndex.value=id
screenObj.value.combo_crowd=crowdIndex.value
}
}
const CheckItemClickFunc=(id)=>{
if (projectIds.value?.includes(id)) {
projectIds.value.splice(projectIds.value.indexOf(id), 1);
} else {
projectIds.value.push(id);
}
}
const getHuaKuaiValue=(value)=>{
screenObj.value.price_range=value
price_max_min.value=value
console.log(price_max_min.value);
}
const tabsClickFunc=(value)=>{
tabs_active_id.value=value
if(value==1){
comboIndex.value=zhuangjianType.value //设置筛选套餐类型为专家
screenObj.value.combo_type=comboIndex.value
}else{
comboIndex.value=''
delete screenObj.value.combo_type
}
getComboList();
}
</script>
<template>
<DraggableButton />
<view style="background-color: #d8eef3; padding-top: 20rpx;">
<view v-if="!!$store.config">
<view :ref="configRef"></view>
</view>
<view class="header_wrapper">
<view @click="toRouter"
class="center fixed pt-10rpx box-border left-40rpx bottom-5% rounded-full w-110rpx h-110rpx bg-#239EA3 flex-col">
<uni-badge :text="comboIds.length" absolute="rightTop" size="small">
<image src="@/static/assets/slices/duibi.png" mode="widthFix" class="w-42rpx" />
</uni-badge>
<text class="text-22rpx text-#fff -mt-5rpx">对比</text>
</view>
<view v-if="!!combo_list.hospital.id" class="hospital_wrapper">
<view class="hospital_icon_wrapper">
<image src="@/static/assets/dingwei@2x.png"></image>
</view>
<view class="hospital_name_wrapper">{{combo_list.hospital.name}}</view>
<view class="hospital_select_wrapper">
<image src="@/static/assets/gengduo@2x.png"></image>
</view>
</view>
<view v-if="!!combo_list.info.name" class="user_wrapper" @click="tabPatients()">
<view class="user_title_wrapper">体检人:</view>
<view class="user_name_wrapper">{{ combo_list.info.name }}</view>
<view v-if="combo_list.info.count > 1" class="user_choose_wrapper">
<image src="@/static/assets/qiehuan@2x.png"></image>
</view>
</view>
</view>
<view class="bg-#d8edf2" style="margin-top: -10rpx;">
<uni-search-bar class="search" radius="100" placeholder="请输入关键字搜索" @clear="getComboList()"
@cancel="getComboList()" @confirm="getComboList" />
</view>
<view class="top_button_row">
<view @click="tabsClickFunc(0)" :class="['top_button',{'top_button_active':tabs_active_id==false}]">选择套餐</view>
<view @click="tabsClickFunc(1)" :class="['top_button',{'top_button_active':tabs_active_id==true}]">专家定制</view>
<view class="top_button">项目自选</view>
</view>
<view class="select_wrapper flex" v-if="selectKey">
<template v-for="(value, key, index) in combo_select" :key="index">
<view @click="open(key)" class="flex-1 center text-#2f2f2f text-26rpx line-height-[1]"
v-if="key != 'combo_price' && key != 'combo_item' && key != 'combo_type' && key != 'combo_crowd'" :class="{
'!text-#239EA3': selectKey == key,
}">
<view v-if="key == 'sort_list'">
{{ value[sortIndex]?.name || "综合排序" }}
</view>
<view v-if="key == 'sort_sale_count'">
{{ value[sort_salecount_index]?.name || "按销量" }}
</view>
<view v-if="key == 'sort_price'">
{{ value[sort_price_index]?.name || "按价格" }}
</view>
<view class="select_item_icon_wrapper">
<image src="@/static/assets/xuanzegengduo@2x.png"></image>
</view>
</view>
</template>
<view @click="open()" :class="{
'!text-#239EA3': selectKey == 'screen',
}" class="mx-20rpx center text-#2f2f2f text-26rpx">
<view>筛选</view>
<view class="select_item_icon2_wrapper">
<image src="@/static/assets/shaixuan@2x.png"></image>
</view>
</view>
</view>
<view class="list_wrapper" ref="combo_list_k">
<view class="combo_wrapper" v-for="(i, k) in combo_list_computed" :key="k">
<view style="display: flex;">
<view class="combo_info_wrapper">
<view class="combo_content_wrapper">
<view style="display: flex;">
<view class="combo_name_wrapper">{{ i.name }}
</view>
<view v-if="i.is_hot">
<image style="height: 32rpx;width: 24rpx;" src="@/static/assets/buy/huomiao.jpg"></image>
</view>
</view>
<view class="combo_tags_wrapper">
<view class="combo_tag_wrapper" v-for="(ii, kk) in i.tag" :key="kk"
:style="{ color: ii.text_color, background: '#fff',}">
{{ ii.text }}
</view>
</view>
<view class="combo_desc_wrapper">
{{ i.tags2?.join(" | ") }}
</view>
<view class="combo_price_wrapper">
<view class="combo_price_box_wrapper">
<view class="combo_true_price_wrapper">
<text class="combo_true_price_icon_wrapper">¥</text>
<text class="combo_true_price_number_wrapper">{{ i.price }}</text>
</view>
<view v-if="i.type_id!=zhuangjianType" class="combo_original_price_wrapper">¥{{ i.original_price }}</view>
<view v-if="i.type_id==zhuangjianType" class="combo_original_price_wrapper2">预存款</view>
</view>
<!-- <view class="combo_count_wrapper">已售{{ i.count }}</view> -->
</view>
</view>
</view>
<view class="combo_button_wrapper">
<view v-if="i.type_id!=zhuangjianType" @click="contrastClick(i)" class="combo_pick_button_wrapper">
{{comboIds.includes(i.combo_id) ? "已加入" : "对比"}}
</view>
<view class="combo_buy_button_wrapper" @click="buyClick(i)">选择</view>
</view>
</view>
<view class="combo_line_wrapper"></view>
</view>
</view>
<uni-popup ref="popupMultiple" class="w-full">
<view class="rounded-10rpx px-20rpx pb-55rpx box-border bg-#fff w-95vw">
<view class="center relative pt-40rpx pb-30rpx text-36rpx rounded-t-15rpx box-border">
<text class="line-height-[1] text-32rpx">请选择</text>
<uni-icons @click="popupMultiple.close()" type="closeempty" color="#A6A6A6" size="26"
class="absolute right-40rpx"></uni-icons>
</view>
<view class="bg-#F8F8F8 px-20rpx box-border rounded-10rpx">
<view v-for="(item, index) in multipleList[multipleIndex]['item_list']" :key="index"
@click="itemId = item.item_id"
class="px-20rpx box-border b-b-1 b-#EAEAEA b-solid bs between h-100rpx">
<text class="text-#000000 text-30rpx">{{ item.item_name }}</text>
<view class="center">
<text class="text-#EC3D15 text-20rpx mt-10rpx mr-5rpx">¥</text>
<text class="text-#EC3D15 text-32rpx mb-0">{{ item.price }}</text>
<uni-icons class="ml-28rpx" color="#239EA3"
:type="itemId == item.item_id ? 'checkbox-filled' : 'circle'" size="30"></uni-icons>
</view>
</view>
</view>
<view class="text-#239EA3 text-28rpx my-45rpx text-center">当前套餐包含一个可自由{{
multipleList[multipleIndex]["item_list"].length
}}选1的体检项目请<br />根据您的实际情况自行选择。</view>
<view class="w-270rpx h-80rpx bg-#239EA3 center text-#F8F8F8 text-30rpx rounded-10rpx mx-auto"
@click="nextItemClick()">{{
multipleIndex == multipleList.length - 1 ? "确定" : "下一项"
}}</view>
</view>
</uni-popup>
<uni-popup ref="popup" mask-background-color="transparent" :animation="false">
<view class="pt-330rpx w-full h-100vh" @click="popup.close()">
<view class="bg-[rgba(0,0,0,0.3)] h-100%">
<view class="bg-#fff" :class="
selectKey != 'sort_list'
? 'flex pt20rpx px10rpx pb0 box-border flex-wrap'
: ''
">
<view v-for="(val, index) in combo_select[selectKey]" :key="index"
@click.stop="selectItemClick(index)" :class="{
'min-w-23% mx-1% mb-20rpx': selectKey != 'sort_list',
}">
<uni-list-item v-if="selectKey == 'sort_list'">
<template v-slot:body>
<text class="text-26rpx" :class="{
'!text-#239EA3': sortIndex == index,
}">{{ val.name }}</text>
</template>
</uni-list-item>
<view v-else
class="box-border px-28rpx py-20rpx text-26rpx center line-height-[1] rounded-5rpx"
:class="{
'!bg-#239EA3 !text-#fff':
(selectKey == 'sort_sale_count' && sort_salecount_index == index) ||
(selectKey == 'sort_price' && sort_price_index == index),
'!text-#747474 !bg-#e0e0e0':
(selectKey == 'sort_sale_count' && sort_salecount_index != index) ||
(selectKey == 'sort_price' && sort_price_index != index),
}">{{ val.name }}</view>
</view>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="popup_new" mask-background-color="transparent" :animation="false" :is-mask-click="true" >
<view class="pt-292rpx w-full h-100vh" >
<view class="bg-[rgba(0,0,0,0.3)] h-100%">
<view class="popup_new_main">
<view class="shaixuan_title">套餐类型</view>
<view style="display: flex;flex-wrap: wrap; ">
<view v-for="(item,index) in combo_select.combo_type" @click="ComboTypeClickFunc(item.id)" :class="['shaixuan_button',{'shaixuan_button_active': comboIndex==item.id}]">
{{item.name}}
</view>
</view>
<view class="shaixuan_title">价格区间</view>
<PriceRange @huakuaiValue="getHuaKuaiValue" :step="combo_list.step" :rangDate="price_max_min" :rangMax="combo_list.price_max" :dataInfo="combo_list.price_range"></PriceRange>
<view style="margin-top: -70rpx;">
<view class="shaixuan_title">适用人群</view>
<view style="display: flex;flex-wrap: wrap; ">
<view v-for="(item,index) in combo_select.combo_crowd" @click="ComboCrowdClickFunc(item.id)" :class="['shaixuan_button',{'shaixuan_button_active': crowdIndex==item.id}]">
{{item.name}}
</view>
</view>
</view>
<view >
<view class="shaixuan_title">体检项目</view>
<view style="display: flex;flex-wrap: wrap; ">
<view v-for="(item,index) in combo_select.combo_item" @click="CheckItemClickFunc(item.id)" :class="['shaixuan_button',{'shaixuan_button_active': projectIds.includes(item.id)}]">
{{item.name}}
</view>
</view>
</view>
<view class="around" style="margin-top: 40rpx;">
<view class="w-40% text-26rpx h-60rpx center rounded-full bg-#239EA3 text-#fff"
@click="remake()">重置</view>
<view class="w-40% text-26rpx h-60rpx center rounded-full bg-#239EA3 text-#fff"
@click="selectDone()">确定</view>
</view>
</view>
<view style=";height: 100%;" @click="popup_new.close()"></view>
</view>
</view>
</uni-popup>
<uni-popup ref="TiShiPopupRef" style="z-index: 999;">
<view class="tishi_main">
<view class="tishi_title">套餐须知</view>
<view class="tishi_title2">专家定制套餐</view>
<view class="tishi_content">此套餐收费{{SelectedComboInfo.price}}元为预存款,可根据现场定制套餐后实际价格多退少补。</view>
<view class="tishi_button" @click="toDetail()"></view>
</view>
</uni-popup>
</view>
</template>
<style scoped>
.tishi_main{
background-color: #fff;
padding: 40rpx 50rpx;
width:600rpx;
border-radius: 40rpx;
}
.tishi_button{
width: 365rpx;
background-color: #009da5;
color:#fff;
text-align: center;
padding-top: 10rpx;
padding-bottom: 10rpx;
border-radius: 40rpx;
margin: 40rpx auto 10rpx auto;
}
.tishi_title{
text-align: center;
font-size: 30rpx;
font-weight: 600;
color:#2b2827;
}
.tishi_title2{
font-size: 28rpx;
margin-top: 30rpx;
font-weight: 600;
color:#3a3635;
border-left: 3px solid #009da5;
padding-left: 5rpx;
}
.tishi_content{
font-size: 28rpx;
margin-top: 30rpx;
color:#474241;
}
.select_done_wrapper {
color: #ffffff;
background: #239ea3;
width: calc(100% - 60rpx);
margin: 50rpx auto 0;
height: 50rpx;
line-height: 50rpx;
text-align: center;
border-radius: 6rpx;
}
.select_group_item_wrapper {
padding: 10rpx 20rpx;
border: 1rpx solid #239ea3;
font-size: 22rpx;
margin: 20rpx 20rpx 0 0;
border-radius: 6rpx;
color: #239ea3;
}
.select_group_item_wrapper.active {
color: #ffffff;
background: #239ea3;
}
.select_group_line_wrapper {
display: flex;
align-items: center;
flex-wrap: wrap;
}
.select_group_wrapper {
margin: 20rpx;
}
.list_wrapper {
padding-top: 30rpx;
height: calc(100vh - 100rpx - 10rpx - 70rpx - 80rpx - 30rpx - 30rpx);
width: 750rpx;
overflow-y: auto;
padding-bottom: 30rpx;
margin: 0 auto;
overflow-x: hidden;
-ms-overflow-style: none;
scrollbar-width: none;
overflow: -moz-scrollbars-none;
overflow-y: scroll;
background-color: #fff;
}
.list_wrapper::-webkit-scrollbar {
display: none;
}
.combo_line_wrapper {
width: 710rpx;
height: 1rpx;
background: #e1ecee;
margin: 26rpx 0rpx 0rpx 0;
}
.combo_pick_button_wrapper {
width: 160rpx;
height: 60rpx;
background: #e1ecee;
border-radius: 30rpx;
font-weight: 400;
font-size: 28rpx;
color: #239ea3;
text-align: center;
line-height: 60rpx;
}
.combo_buy_button_wrapper {
width: 160rpx;
height: 60rpx;
background: #239ea3;
border-radius: 30rpx;
font-weight: 400;
font-size: 28rpx;
color: #ffffff;
text-align: center;
line-height: 60rpx;
}
.combo_button_wrapper {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
}
.combo_count_wrapper {
font-weight: 500;
font-size: 18rpx;
color: #8b8b8b;
line-height: 1;
}
.combo_original_price_wrapper {
font-weight: 500;
font-size: 18rpx;
color: #8b8b8b;
line-height: 1;
text-decoration-line: line-through;
margin-left: 10rpx;
}
.combo_original_price_wrapper2 {
font-weight: 500;
font-size: 18rpx;
color: #8b8b8b;
line-height: 1;
margin-left: 10rpx;
}
.combo_true_price_wrapper {
font-weight: 500;
font-size: 18rpx;
color: #ec3d15;
line-height: 1;
}
.combo_true_price_number_wrapper {
font-size: 38rpx;
}
.combo_price_wrapper {
display: flex;
align-items: end;
justify-content: space-between;
margin-top: 21rpx;
}
.combo_price_box_wrapper {
display: flex;
align-items: end;
}
.combo_wrapper {
/* height: 196rpx; */
width: calc(750rpx - 80rpx);
margin: 0 auto;
background-color: #fff;
padding: 0rpx 40rpx 30rpx 40rpx;
}
.combo_tags_wrapper {
display: flex;
align-items: center;
margin-top: 13rpx;
}
.combo_desc_wrapper {
font-weight: 500;
font-size: 20rpx;
color: #8b8b8b;
line-height: 1;
margin-top: 18rpx;
}
.combo_tag_wrapper {
padding-left: 13rpx;
padding-right: 13rpx;
height: 30rpx;
line-height: 30rpx;
border-radius: 5rpx;
font-weight: 400;
font-size: 18rpx;
color: #47abd8;
margin: 10rpx 8rpx 10rpx 0rpx;
border: 1rpx solid #009da5;
}
.combo_name_wrapper {
font-weight: 400;
font-size: 32rpx;
color: #0e0e0e;
line-height: 32rpx;
}
.combo_content_wrapper {
margin-left: 30rpx;
width: calc(750rpx - 190rpx - 30rpx - 20rpx - 55rpx);
}
.combo_info_wrapper {
display: flex;
align-items: center;
width: 750rpx;
margin: 0 auto;
}
.combo_cover_wrapper {
width: 190rpx;
height: 190rpx;
margin-left: 20rpx;
}
.combo_cover_wrapper image {
width: 190rpx;
height: 190rpx;
display: block;
object-fit: contain;
}
.select_item_line_wrapper {
position: absolute;
width: 95rpx;
height: 10rpx;
background: linear-gradient(to bottom, #ffffff00, #1b9a9f);
border-radius: 5rpx;
bottom: 0;
left: 50%;
transform: translateX(calc(-50% - 8px));
opacity: 0;
}
.select_wrapper {
display: flex;
align-items: center;
justify-content: space-between;
width: 750rpx;
height: 80rpx;
background: #eef7f7;
box-shadow: 0rpx -1rpx 1rpx 0rpx rgba(0, 0, 0, 0.1);
margin: 0 auto;
position: relative;
z-index: 998;
}
.select_item_icon_wrapper {
width: 18rpx;
height: 9rpx;
margin-left: 9rpx;
filter: grayscale(100%);
}
.select_item_icon_wrapper image {
width: 18rpx;
height: 9rpx;
display: block;
object-fit: contain;
}
.select_item_icon2_wrapper {
width: 26rpx;
height: 23rpx;
margin-left: 7rpx;
}
.select_item_icon2_wrapper image {
width: 26rpx;
height: 23rpx;
display: block;
object-fit: contain;
}
.select_item_name_wrapper {
font-weight: 400;
font-size: 26rpx;
color: #2f2f2f;
line-height: 1;
}
.select_item_wrapper {
width: 25%;
display: flex;
align-items: center;
justify-content: center;
position: relative;
height: 80rpx;
}
.select_item_wrapper.active .select_item_name_wrapper {
color: #239ea3;
font-weight: bold;
}
.select_item_wrapper.active .select_item_icon_wrapper {
filter: grayscale(0%);
}
.select_item_wrapper.active .select_item_line_wrapper {
opacity: 1;
}
.doctor_name_wrapper {
font-weight: 400;
font-size: 24rpx;
line-height: 1;
color: #ffffff;
border-bottom: 1rpx solid #ffffff;
}
.doctor_tip_wrapper {
font-weight: 400;
font-size: 22rpx;
line-height: 1;
color: #ffffff;
}
.doctor_wrapper {
display: flex;
align-items: center;
width: 710rpx;
height: 70rpx;
background: #239ea3;
border-radius: 15rpx 15rpx 0rpx 0rpx;
padding-left: 24rpx;
}
.user_choose_wrapper {
width: 50rpx;
height: 50rpx;
margin-left: 30rpx;
}
.user_choose_wrapper image {
width: 50rpx;
height: 50rpx;
display: block;
object-fit: contain;
}
.user_title_wrapper {
font-weight: 400;
font-size: 26rpx;
color: #fff;
line-height: 1;
}
.user_name_wrapper {
font-weight: 400;
font-size: 26rpx;
color: #fff;
line-height: 1;
}
.user_wrapper {
height: 60rpx;
padding-left: 40rpx;
padding-right: 20rpx;
margin-right: 20rpx;
background: #009ea7;
border-radius: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.header_wrapper {
display: flex;
align-items: center;
justify-content: space-between;
width: 710rpx;
height: 90rpx;
background: #d8edf2;
margin: 0 auto;
position: relative;
background-color: #fff;
margin-left: 20rpx;
margin-right: 20rpx;
border-radius: 20rpx;
}
.hospital_wrapper {
display: flex;
align-items: center;
width: 40%;
}
.hospital_icon_wrapper {
width: 48rpx;
height: 48rpx;
margin-left: 20rpx;
}
.hospital_icon_wrapper image {
width: 48rpx;
height: 48rpx;
display: block;
object-fit: contain;
}
.hospital_name_wrapper {
font-weight: 400;
font-size: 28rpx;
color: #484747;
margin-left: 9rpx;
line-height: 1;
}
.hospital_select_wrapper {
width: 24rpx;
height: 14rpx;
margin-left: 19rpx;
}
.hospital_select_wrapper image {
width: 24rpx;
height: 14rpx;
display: block;
object-fit: contain;
}
.popup_new_main {
background-color: #fff;
border-radius: 0rpx 0rpx 20rpx 20rpx;
padding: 40rpx 20rpx 20rpx 20rpx;
}
.top_button_row {
display: flex;
justify-content: space-between;
padding-left: 20rpx;
padding-right: 20rpx;
}
.top_button {
color: #666;
background-color: #fff;
padding: 6rpx 40rpx;
border-radius: 15rpx;
margin-top: -6rpx;
margin-bottom: 8rpx;
font-size: 28rpx;
width: 140rpx;
text-align: center;
}
.top_button_active {
background-color: #009ea7;
color: #fff;
}
.search {}
.shaixuan_title {
font-size: 26rpx;
margin-top: 20rpx;
margin-bottom: 10rpx;
}
.shaixuan_button {
font-size: 24rpx;
padding-left: 10rpx;
background-color: #ccc;
margin: 10rpx;
padding: 5rpx 10rpx;
border-radius: 5rpx;
background-color: #f3f3f3;
color: #1e1a19;
}
.shaixuan_button_active{
background-color: #009da5;
color: #fff;
}
</style>