1048 lines
25 KiB
Vue
1048 lines
25 KiB
Vue
<template>
|
||
<view class="content">
|
||
<z-nav-bar title="VIP办理" bgColor="#5188e5" fontColor="#fff"></z-nav-bar>
|
||
<scroll-view scroll-x="true">
|
||
<view class="vip_block">
|
||
<view class="vip_item" v-for="(item, index) in list" :key="index"
|
||
:class="{'active':activeIndex==index, 'active_null': !item.canUpgrade}" @click="activeItem(item,index)">
|
||
<text class="item_title">{{item.title}}</text>
|
||
<text class="item_fee" :class="item.canUpgrade&&item.upgradeFee>0?'item_line_container':''">¥<span>{{item.fee}}</span></text>
|
||
<text class="item_count" :class="item.canUpgrade&&item.upgradeFee>0?'item_line':''">{{item.count}}次</text>
|
||
|
||
<view v-if="item.canUpgrade&&item.upgradeFee>0">
|
||
<text class="item_upgradeFee">升级价¥<span>{{item.upgradeFee}}</span></text>
|
||
</view>
|
||
<text class="item_content" v-if="item.canUpgrade&&item.upgradeCount>0">增加{{item.upgradeCount}}次问答</text>
|
||
<text class="item_content" v-else>{{item.content}}</text>
|
||
</view>
|
||
</view>
|
||
</scroll-view>
|
||
<view class="vip_rule">
|
||
<text class="rule_title">说明</text>
|
||
<text class="rule_con">1.普通用户:仅有三次免费机会,仅限制使用全科医生提问。</text>
|
||
<text class="rule_con">2.VIP用户:按月度或季度办理成功后,拥有相应VIP提问次数,不限制使用专科或全科医生。</text>
|
||
<text class="rule_con">3.VIP用户升级:按月度或季度办理成功后,如有效期内次数用尽,还想在有效期内增加使用次数,可进行同类型VIP升级操作(仅一次),补相应差价即可获得增加次数(有效期时间以第一次办理的时间为准)。</text>
|
||
</view>
|
||
<view class="order_box">
|
||
<view class="title">价格明细</view>
|
||
<view class="order_block">
|
||
<view class="order_item" v-for="(v, i) in priceBreakdownList">
|
||
<view class="top">
|
||
<view class="left">
|
||
<image v-if="v.imgUrl" class="pay_item_img_icon" :src="v.imgUrl" mode="aspectFil"></image>
|
||
<template v-if="v.type == 2">
|
||
{{ v.text }}
|
||
<text class="quanbu">(全部积分:{{ user.jf }})</text>
|
||
</template>
|
||
<template v-else-if="v.type == 3">
|
||
<text style="color: #fe6035">{{ v.text }}</text>
|
||
</template>
|
||
<text v-else>{{ v.text }}</text>
|
||
</view>
|
||
<view class="right">
|
||
<template v-if="v.type == 2">
|
||
<text style="color: #fe6035"> -¥{{ jfNumberShow }}</text>
|
||
</template>
|
||
<template v-else-if="v.type == 3">
|
||
<text style="color: #fe6035">¥{{ data.upgradeFee }}</text>
|
||
</template>
|
||
<template v-else>
|
||
<text :class="data.upgradeFee>0?'fee_line':''">¥{{ data.fee }}</text>
|
||
</template>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="bottom jf_box" v-if="v.type == 2">
|
||
<view class="jf_box">
|
||
<text>可用积分({{ jfNumberMax }}分)</text>
|
||
<view class="jf_input">
|
||
<u--input type="number" @input="handleChangejf" @clear="jfNumber = 0" :max="jfNumberMax"
|
||
v-model="jfNumber" placeholder="请输入积分" border="surround" clearable></u--input>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="pay_box">
|
||
<view class="title">支付方式</view>
|
||
|
||
<view class="pay_block">
|
||
<view class="pay_item" v-for="(v, i) in payList">
|
||
<view :class="isDefaultCurrency && i != 2 ? 'bgGrey top' : 'top'">
|
||
<view class="left">
|
||
<image class="pay_item_img" :src="v.imgUrl" mode="aspectFil" :style="v.style">
|
||
</image>
|
||
<template v-if="v.type == 4">
|
||
<text> {{ v.text }}</text>
|
||
<text style="color: #5188e5; font-weight: 600; margin-left: 10rpx">
|
||
(余额:{{ user && user.peanutCoin ? user.peanutCoin : 0 }})</text>
|
||
</template>
|
||
|
||
<text v-else> {{ v.text }}</text>
|
||
</view>
|
||
<template v-if="isDefaultCurrency">
|
||
<radio :value="v.value" color="#5188e5" v-if="$platform != 'ios'&&i == 2||$platform == 'ios'&&i == 0"
|
||
:checked="selectPayIndex == i ? true : false" @click="radioChange(i)" size="8" />
|
||
</template>
|
||
<template v-else>
|
||
<radio :value="v.value" color="#5188e5" :checked="selectPayIndex == i ? true : false"
|
||
@click="radioChange(i)" size="8" />
|
||
</template>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<template v-if="selectPayIndex == 2 || $platform == 'ios'">
|
||
<view class="goods_detail_list_title">
|
||
<view class="linlanzhifu">
|
||
<view class="linlanzhifu">
|
||
<u-icon name="error-circle" color="#5188e5" size="16"
|
||
style="display: inline-block; margin-right: 10rpx"></u-icon>
|
||
确保您的天医币足够支付
|
||
</view>
|
||
|
||
<text class="fdButtonBox" @click="
|
||
onPageJump('/pages/wallet/recharge?source=order')">立即充值</text>
|
||
</view>
|
||
|
||
<view class="other_info" style="margin-top: 12rpx">
|
||
<view class="explain" style="margin-bottom: 10rpx"> 说明 </view>
|
||
<view class="explain"> 1. 1天医币 = 1元人民币 </view>
|
||
<view class="explain">
|
||
2.若有疑问或意见请致电客服
|
||
<span><u @click="checkPermision">022-24142321</u></span>
|
||
</view>
|
||
<view class="explain">
|
||
|
||
3.非中国大陆用户可以信用卡支付。简单快捷,推荐使用!
|
||
支付时使用的信用卡需要带有Visa或MasterCard的标识。请向邮箱
|
||
<text @click="fnCopy('publisher@tmrjournals.com', '邮箱')" class="aui-text-success"
|
||
style="text-decoration: underline; color: #5188e5">
|
||
publisher@tmrjournals.com
|
||
</text>
|
||
(点击复制)发送支付请求,内容需包含:拟购买的课程名称、支付金额、APP注册姓名及手机号码,或者加一路健康客服微信(
|
||
<text class="aui-text-success" @click="fnCopy('yilujiankangkefu', '微信名')"
|
||
style="text-decoration: underline; color: #5188e5">
|
||
yilujiankangkefu </text>)(点击复制)联系我们,我们将在24小时内向您的邮箱或者微信发送支付链接,根据提示即可完成信用卡支付,无需兑换外币。
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
</view>
|
||
|
||
<view class="goods_nav_box">
|
||
<common-goods-nav :customButton="customButton" @submit="goBuyJie">
|
||
<!-- leftSlot -->
|
||
<template slot="leftSlot" slot-scope="slotProps">
|
||
<view class="price_box order_bottom_box">
|
||
<text class="price">合计:
|
||
<text class="total" v-if="actualPayment==0">{{jfNumber}}积分</text>
|
||
<text class="total" v-else>
|
||
<span style=" color: red;">¥{{actualPayment}}</span>
|
||
<text style="margin: 0 4rpx" v-if="actualPayment > 0 && jfNumber > 0"> + </text>
|
||
|
||
<text v-if="jfNumber > 0">{{ jfNumber }} 积分</text>
|
||
</text>
|
||
</text>
|
||
</view>
|
||
</template>
|
||
</common-goods-nav>
|
||
<view class="agree_wo">
|
||
<radio-group class="agree">
|
||
<view v-for="(item, index) in argee" :key="index">
|
||
<radio class="agreeRadio" :value="item.id" :checked="item.id == radioValue" color="#5188e5"
|
||
@click="radioCheck(index)"></radio>
|
||
</view>
|
||
</radio-group>
|
||
<view>* 我已阅读并同意<span class="highlight" @click="showXieyi">《会员服务协议》</span></view>
|
||
</view>
|
||
</view>
|
||
<!-- 会员协议 -->
|
||
<u-popup :show="xieyiShow" :round="10" @close="xieyiShow = false">
|
||
<view class="tanchu">
|
||
<view class="dp_title">{{ xieyi.title }}</view>
|
||
<view style="max-height: 1000rpx; overflow-y: scroll">
|
||
<view v-html="xieyi.content"></view>
|
||
</view>
|
||
</view>
|
||
</u-popup>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import $http from "@/config/requestConfig.js";
|
||
import { mapState } from "vuex";
|
||
import debounce from "@/common/debounce.js";
|
||
import {
|
||
setPay,
|
||
setPayAssign,
|
||
setWXPay
|
||
} from "@/config/utils";
|
||
const { platform } = uni.getSystemInfoSync();
|
||
export default {
|
||
watch: {
|
||
isDefaultCurrency: {
|
||
immediate: true,
|
||
handler(newRoute) {
|
||
if (this.isDefaultCurrency) {
|
||
if (platform == "ios") {
|
||
this.selectPayIndex = 0;
|
||
} else {
|
||
this.selectPayIndex = 0;
|
||
}
|
||
} else {
|
||
if (platform == "ios") {
|
||
this.selectPayIndex = 0;
|
||
} else {
|
||
this.selectPayIndex = 0;
|
||
}
|
||
}
|
||
this.payType = this.payList[this.selectPayIndex].type;
|
||
if (this.actualPayment == 0) {
|
||
var that = this;
|
||
this.payList.forEach((e, i) => {
|
||
if (e.type == 4) {
|
||
that.selectPayIndex = i;
|
||
that.payType = 4;
|
||
}
|
||
});
|
||
this.$forceUpdate();
|
||
}
|
||
this.$forceUpdate();
|
||
},
|
||
},
|
||
},
|
||
data() {
|
||
return {
|
||
list: [],
|
||
activeIndex: 0,
|
||
payType: null,
|
||
paylist: [{
|
||
title: "支付宝",
|
||
id: 2,
|
||
imgUrl: require("@/static/icon/pay_1.png"),
|
||
},
|
||
{
|
||
title: "微信",
|
||
id: 1,
|
||
imgUrl: require("@/static/icon/pay_2.png"),
|
||
},
|
||
],
|
||
priceBreakdownList: [
|
||
{
|
||
type: 1,
|
||
text: '商品价格',
|
||
}
|
||
],
|
||
isDefaultCurrency: false,
|
||
jfNumber: 0,
|
||
jfNumberShow: "",
|
||
jfNumberMax: 0,
|
||
user: {},
|
||
data: {}, //选中的每一个商品
|
||
actualPayment: 0, //合计价格
|
||
payType: 1,
|
||
selectPayIndex: 1,
|
||
argee: [{value: false, id: "1"}], // 同意权限
|
||
radioValue: "",
|
||
xieyi: {
|
||
title: "",
|
||
content: "",
|
||
},
|
||
xieyiShow: false,
|
||
customButton: [{
|
||
width: "300rpx",
|
||
text: "立即支付",
|
||
backgroundColor: "#5188e5",
|
||
color: "#fff",
|
||
}, ],
|
||
flag: null, //普通购买/升级
|
||
buyStatus: false, //重复下单
|
||
}
|
||
},
|
||
onLoad(e) {
|
||
this.flag = e.flag;
|
||
this.getData();
|
||
|
||
if (platform == "ios") {
|
||
this.payList = [
|
||
{
|
||
text: "天医币",
|
||
imgUrl: require("@/static/icon/pay_3.png"),
|
||
type: 4,
|
||
value: "2",
|
||
},
|
||
];
|
||
this.selectPayIndex = 0;
|
||
this.payType = 4;
|
||
} else {
|
||
this.payList = [
|
||
{
|
||
text: "支付宝",
|
||
imgUrl: require("@/static/icon/pay_1.png"),
|
||
type: 2,
|
||
value: "0",
|
||
},
|
||
{
|
||
text: "微信",
|
||
imgUrl: require("@/static/icon/pay_2.png"),
|
||
type: 1,
|
||
value: "1",
|
||
},
|
||
{
|
||
text: "天医币",
|
||
imgUrl: require("@/static/icon/pay_3.png"),
|
||
type: 4,
|
||
value: "2",
|
||
},
|
||
];
|
||
this.selectPayIndex = 1;
|
||
this.payType = 1;
|
||
}
|
||
},
|
||
onShow() {
|
||
|
||
},
|
||
computed: {
|
||
...mapState(["userInfo"]),
|
||
},
|
||
methods: {
|
||
//获取数据
|
||
getData() {
|
||
uni.showLoading({
|
||
title: '加载中'
|
||
})
|
||
this.$http.request({
|
||
url: 'taihumed/aiBuyConfig/getAiBuyConfigList',
|
||
method: "POST",
|
||
data: {},
|
||
header: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
})
|
||
.then(res=> {
|
||
uni.hideLoading();
|
||
if (res.list&&res.list.length>0) {
|
||
this.list = res.list;
|
||
|
||
//赋值能够买的index
|
||
if(this.flag==1){
|
||
this.activeIndex = res.list.findIndex(item => item.canUpgrade === true);
|
||
//价格明细
|
||
this.priceBreakdownList.push({
|
||
type: 3,
|
||
text: 'VIP升级价格',
|
||
})
|
||
}
|
||
this.data = this.list[this.activeIndex];
|
||
this.getUserInfo();
|
||
}
|
||
});
|
||
},
|
||
//选择
|
||
activeItem(data, index){
|
||
if(!data.canUpgrade){
|
||
return
|
||
}
|
||
this.data = data;
|
||
this.activeIndex = index;
|
||
this.getTotalPrice(this.user);
|
||
},
|
||
//获取用户详情
|
||
getUserInfo() {
|
||
if (this.userInfo.id != undefined) {
|
||
this.$http.post("book/user/info/" + this.userInfo.id).then(async(res) => {
|
||
this.user = res.user;
|
||
this.getTotalPrice(res.user);
|
||
if(res.user.jf>0){
|
||
this.priceBreakdownList.push({
|
||
type: 2,
|
||
imgUrl: require("@/static/icon/jifen.png"),
|
||
text: '积分',
|
||
})
|
||
}
|
||
});
|
||
}
|
||
},
|
||
//积分输入
|
||
handleChangejf(val) {
|
||
var value = String(val);
|
||
let fee = 0;
|
||
if(this.flag==1){
|
||
fee = this.data.upgradeFee;
|
||
}else{
|
||
fee = this.data.fee;
|
||
}
|
||
this.$nextTick(() => {
|
||
//1. 只允许数字字符,并去掉小数点后的部分
|
||
value = value.replace(/[^0-9.]/g, ""); // 删除非数字和小数点字符
|
||
|
||
//2. 如果有小数点,只保留小数点前的部分
|
||
if (value.indexOf(".") !== -1) {
|
||
value = value.split(".")[0]; // 截取小数点前的部分
|
||
}
|
||
|
||
//如果输入为0,强制设置为0并显示为 "0"
|
||
if (val == 0) {
|
||
this.jfNumber = 0;
|
||
this.jfNumberShow = "0";
|
||
} else {
|
||
//3. 强制转换为正整数
|
||
let numericValue = parseInt(value, 10); // 使用parseInt转换为整数
|
||
if (numericValue < 0 || isNaN(numericValue)) {
|
||
numericValue = 0;
|
||
}
|
||
|
||
//4. 确保最大值限制
|
||
if (numericValue >= this.jfNumberMax) {
|
||
numericValue = this.jfNumberMax;
|
||
}
|
||
|
||
//更新最终的数字值和显示
|
||
this.jfNumber = Math.max(0, numericValue); //强制为正整数
|
||
this.jfNumberShow = this.jfNumber.toString(); //显示整数
|
||
}
|
||
|
||
//计算实际支付金额
|
||
this.actualPayment = fee - this.jfNumber;
|
||
|
||
//如果实际支付金额为0,设置支付方式为默认货币
|
||
if (this.actualPayment == 0) {
|
||
this.isDefaultCurrency = true;
|
||
var that = this;
|
||
this.payList.forEach((e, i) => {
|
||
if (e.type == 4) {
|
||
that.selectPayIndex = i;
|
||
that.payType = 4;
|
||
}
|
||
});
|
||
this.$forceUpdate();
|
||
} else {
|
||
this.isDefaultCurrency = false;
|
||
}
|
||
this.$forceUpdate();
|
||
});
|
||
},
|
||
//获取总金额
|
||
getTotalPrice(userInfo) {
|
||
let fee = 0;
|
||
if(this.flag==1){
|
||
fee = this.data.upgradeFee;
|
||
}else{
|
||
fee = this.data.fee;
|
||
}
|
||
if (userInfo.jf >= fee) {
|
||
this.jfNumber = fee;
|
||
this.jfNumberMax = fee;
|
||
} else {
|
||
this.jfNumber = userInfo.jf;
|
||
this.jfNumberMax = userInfo.jf;
|
||
}
|
||
if (this.jfNumber == 0 || this.jfNumber == null) {
|
||
this.jfNumberShow = "0.00";
|
||
this.actualPayment = fee;
|
||
} else {
|
||
this.jfNumberShow = this.jfNumber;
|
||
this.actualPayment = fee - this.jfNumber;
|
||
}
|
||
if (this.actualPayment == 0) {
|
||
this.isDefaultCurrency = true;
|
||
this.payList.forEach((e, i) => {
|
||
if (e.type == 4) {
|
||
this.selectPayIndex = i;
|
||
this.payType = 4;
|
||
}
|
||
});
|
||
this.$forceUpdate();
|
||
} else {
|
||
this.isDefaultCurrency = false;
|
||
}
|
||
this.$forceUpdate();
|
||
},
|
||
|
||
//支付
|
||
async goBuyJie(){
|
||
if(this.radioValue!='1'){
|
||
uni.showToast({
|
||
title: "请勾选 已阅读会员服务协议",
|
||
icon: "none",
|
||
});
|
||
return false;
|
||
}
|
||
if(this.buyStatus){
|
||
uni.showToast({
|
||
title: "请勿重复下单",
|
||
icon: "none",
|
||
});
|
||
return false;
|
||
}
|
||
//下单状态
|
||
this.buyStatus = true;
|
||
let that = this;
|
||
let orderType = '';
|
||
let districtMoney = 0;
|
||
if(this.flag==0){
|
||
orderType = 'aiVip';
|
||
}else if(this.flag==1){
|
||
orderType = 'upgradeAiVip';
|
||
}
|
||
//VIP升级的价格逻辑
|
||
if(that.data.upgradeFee&&that.data.upgradeFee>0){
|
||
districtMoney = Number(that.data.fee)-Number(that.data.upgradeFee);
|
||
}
|
||
debounce(async () => {
|
||
let data = {
|
||
orderType: orderType, //aiVip-购买,upgradeAiVip-升级
|
||
paymentMethod: that.payType,
|
||
orderMoney: that.data.fee,
|
||
realMoney: that.actualPayment,
|
||
districtMoney: districtMoney,
|
||
aiBuyConfigId: that.data.id,
|
||
jfDeduction: that.jfNumber,
|
||
remark: that.data.title + '-' + that.data.content,
|
||
come: '4',
|
||
appName: 'thyy'
|
||
}
|
||
await $http.request({
|
||
url: 'taihumed/aiVip/placeAiVipOrder',
|
||
method: "POST",
|
||
data,
|
||
header: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
})
|
||
.then(async (res) => {
|
||
if (res.code == 0) {
|
||
uni.hideLoading();
|
||
if (res.orderSn == null) {
|
||
uni.showToast({
|
||
title: "失败,请重新下单",
|
||
icon: "none"
|
||
});
|
||
that.buyStatus = false;
|
||
} else {
|
||
if (that.payType == 2) {
|
||
//常规支付
|
||
uni.showToast({
|
||
title: "正在支付",
|
||
icon: "loading",
|
||
});
|
||
await setPay({
|
||
typePay: "alipay",
|
||
subject: "order",
|
||
totalAmount: res.money,
|
||
type: 2,
|
||
relevanceoid: res.orderSn,
|
||
customerId: that.userInfo.id,
|
||
},
|
||
(res) => {
|
||
uni.showLoading({
|
||
title: "加载中",
|
||
});
|
||
console.log(res, "支付支付");
|
||
if (res.success) {
|
||
uni.showToast({
|
||
title: "支付成功",
|
||
});
|
||
setTimeout(() => {
|
||
that.buyStatus = false;
|
||
uni.switchTab({
|
||
url: '/pages/my/index'
|
||
})
|
||
}, 1000);
|
||
} else {
|
||
setTimeout(() => {
|
||
that.buyStatus = false;
|
||
console.log("延迟调用 失败提示");
|
||
uni.showToast({
|
||
title: "支付失败"
|
||
});
|
||
}, 0);
|
||
}
|
||
}
|
||
);
|
||
} else if (that.payType == 1) {
|
||
//微信支付
|
||
let data1 = {
|
||
orderSn: res.orderSn,
|
||
buyOrderId: null,
|
||
totalAmount: res.money,
|
||
};
|
||
setWXPay(data1, (res) => {
|
||
if (res.success) {
|
||
uni.showToast({
|
||
title: "支付成功",
|
||
});
|
||
setTimeout(() => {
|
||
that.buyStatus = false;
|
||
uni.switchTab({
|
||
url: '/pages/my/index'
|
||
})
|
||
}, 1000);
|
||
} else {
|
||
if (res.data.errMsg.indexOf("User canceled") != -1) {
|
||
uni.showToast({
|
||
title: "用户取消支付",
|
||
icon: "none"
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: "支付失败",
|
||
icon: "none"
|
||
});
|
||
}
|
||
that.buyStatus = false;
|
||
}
|
||
});
|
||
} else if (that.payType == 4) {
|
||
//天医币支付
|
||
console.log(res, "天医币支付成功");
|
||
uni.showToast({
|
||
title: "购买成功",
|
||
icon: "success",
|
||
});
|
||
setTimeout(() => {
|
||
that.buyStatus = false;
|
||
uni.switchTab({
|
||
url: '/pages/my/index'
|
||
})
|
||
}, 1000);
|
||
}
|
||
}
|
||
}
|
||
})
|
||
.catch(()=>{
|
||
uni.hideLoading();
|
||
that.buyStatus = false;
|
||
});
|
||
}, 1000);
|
||
},
|
||
//支付方式切换
|
||
radioChange(index) {
|
||
this.selectPayIndex = index;
|
||
this.payType = this.payList[this.selectPayIndex].type;
|
||
this.$forceUpdate();
|
||
},
|
||
//复制
|
||
fnCopy(value, title) {
|
||
this.$commonJS.handleMakingPhoneCalls(value, title);
|
||
},
|
||
onPageJump(url) {
|
||
uni.navigateTo({
|
||
url: url,
|
||
});
|
||
},
|
||
//勾选会员协议
|
||
radioCheck(index) {
|
||
this.argee.forEach((item) => {
|
||
item.isCheck = false;
|
||
});
|
||
if (this.radioValue == this.argee[index].id) {
|
||
this.radioValue = null;
|
||
} else {
|
||
this.radioValue = this.argee[index].id;
|
||
}
|
||
},
|
||
//会员协议
|
||
async showXieyi() {
|
||
var data = await this.$commonJS.getAgreement(115);
|
||
if (data.content) {
|
||
data.content = data.content.replace(
|
||
/<h5>/g,
|
||
'<view style="font-weight: bold;font-size: 32rpx;margin-top: 20rpx;margin-bottom: 20rpx;">'
|
||
);
|
||
data.content = data.content.replace(/<\/h5>/g, "</view>");
|
||
}
|
||
|
||
this.xieyi = data;
|
||
this.xieyiShow = true;
|
||
},
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
@import '@/static/mixin.scss';
|
||
.content{
|
||
background-color: #eff5f8;
|
||
height: 100%;
|
||
overflow: auto;
|
||
}
|
||
.vip_block{
|
||
padding: 30rpx 30rpx 10rpx;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
white-space: nowrap;
|
||
|
||
.vip_item{
|
||
width: 205rpx;
|
||
height: 270rpx;
|
||
box-sizing: border-box;
|
||
border-radius: 10rpx;
|
||
position: relative;
|
||
margin-right: 20rpx;
|
||
background: #fff;
|
||
box-shadow: 0px 1px 5px 0px #a7bbe4;
|
||
flex-shrink: 0;
|
||
|
||
text{
|
||
display: block;
|
||
text-align: center;
|
||
}
|
||
.item_title{
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
padding-top: 25rpx;
|
||
}
|
||
|
||
.item_fee{
|
||
padding-top: 20rpx;
|
||
font-size: 30rpx;
|
||
color: #ec701f;
|
||
line-height: 50rpx;
|
||
|
||
span{
|
||
font-size: 40rpx;
|
||
padding-left: 4rpx;
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
.item_count{
|
||
font-size: 26rpx;
|
||
line-height: 34rpx;
|
||
color: #999;
|
||
padding-top: 10rpx;
|
||
}
|
||
|
||
.item_content{
|
||
position: absolute;
|
||
bottom: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
background: #fff9eb;
|
||
height: 50rpx;
|
||
line-height: 50rpx;
|
||
font-size: 24rpx;
|
||
color: #bbac84;
|
||
border-radius: 0 0 10rpx 10rpx;
|
||
}
|
||
.item_upgradeFee{
|
||
font-size: 26rpx;
|
||
line-height: 40rpx;
|
||
color: #ec701f;
|
||
|
||
span{
|
||
font-size: 36rpx;
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
.item_line{
|
||
text-decoration: line-through;
|
||
color: #bcbcbc;
|
||
padding-top: 0;
|
||
}
|
||
.item_line_container{
|
||
padding-top: 5rpx;
|
||
color: #bcbcbc;
|
||
}
|
||
.item_line_container::after{
|
||
content: "";
|
||
position: absolute;
|
||
left: 50%;
|
||
top: 300rpx;
|
||
width: 90rpx;
|
||
height: 1rpx;
|
||
background: #bcbcbc; /* 删除线颜色 */
|
||
transform: translateY(-198rpx);
|
||
margin-left: -45rpx;
|
||
}
|
||
}
|
||
.vip_item:last-child{
|
||
margin-right: 0;
|
||
}
|
||
.active{
|
||
border: 3rpx solid #ec701f;
|
||
background: rgba(255, 118, 31, 0.1);
|
||
|
||
.item_content{
|
||
background: rgba(255, 118, 31, 0.8);
|
||
color: #fff;
|
||
}
|
||
}
|
||
.active_null{
|
||
border: 3rpx solid #bcbcbc;
|
||
background: rgba(188, 188, 188, 0.1);
|
||
|
||
.item_title,.item_fee{
|
||
color: #bcbcbc;
|
||
}
|
||
.item_content{
|
||
background: rgba(188, 188, 188, 0.8);
|
||
color: #999;
|
||
}
|
||
}
|
||
}
|
||
.fee_line{
|
||
text-decoration: line-through;
|
||
}
|
||
.vip_rule{
|
||
margin: 30rpx;
|
||
border-radius: 10rpx;
|
||
padding: 30rpx;
|
||
background: #fff;
|
||
box-sizing: border-box;
|
||
|
||
.rule_title{
|
||
font-size: 34rpx;
|
||
font-weight: bold;
|
||
line-height: 40rpx;
|
||
display: block;
|
||
padding-bottom: 30rpx;
|
||
}
|
||
.rule_con{
|
||
display: block;
|
||
font-size: 28rpx;
|
||
line-height: 50rpx;
|
||
}
|
||
}
|
||
|
||
.order_box{
|
||
margin: 30rpx;
|
||
border-radius: 10rpx;
|
||
padding: 30rpx;
|
||
background: #fff;
|
||
box-sizing: border-box;
|
||
font-size: 28rpx;
|
||
|
||
.title{
|
||
font-size: 34rpx;
|
||
font-weight: bold;
|
||
line-height: 40rpx;
|
||
display: block;
|
||
padding-bottom: 30rpx;
|
||
}
|
||
.order_item{
|
||
padding: 20rpx 0;
|
||
border-bottom: 1px solid #eeecec;
|
||
|
||
.top{
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
|
||
.left{
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.pay_item_img_icon{
|
||
width: 40rpx;
|
||
height: 40rpx;
|
||
margin-right: 8rpx;
|
||
}
|
||
.quanbu{
|
||
color: #999;
|
||
font-size: 28rpx;
|
||
padding-left: 10rpx;
|
||
}
|
||
}
|
||
.right{
|
||
color: red;
|
||
}
|
||
}
|
||
|
||
.bottom {
|
||
background-color: #f5f5f5;
|
||
border-radius: 10rpx;
|
||
margin-top: 20rpx;
|
||
|
||
.jf_box {
|
||
width: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 15rpx;
|
||
box-sizing: border-box;
|
||
justify-content: space-between;
|
||
|
||
text{
|
||
color: $themeColor;
|
||
}
|
||
}
|
||
|
||
.jf_input {
|
||
width: calc(100% - 400rpx) !important;
|
||
|
||
input{
|
||
height: 50rpx;
|
||
border: 1rpx solid #efe4e4;
|
||
border-radius: 10rpx;
|
||
font-size: 28rpx;
|
||
padding: 10rpx 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.order_block .order_item:last-child{
|
||
border-bottom: none;
|
||
}
|
||
|
||
.pay_box{
|
||
margin: 30rpx 30rpx 200rpx;
|
||
border-radius: 10rpx;
|
||
padding: 30rpx;
|
||
background: #fff;
|
||
box-sizing: border-box;
|
||
font-size: 28rpx;
|
||
|
||
.title{
|
||
font-size: 34rpx;
|
||
font-weight: bold;
|
||
line-height: 40rpx;
|
||
display: block;
|
||
padding-bottom: 30rpx;
|
||
}
|
||
|
||
.pay_item{
|
||
padding: 20rpx 0;
|
||
border-bottom: 1px solid #eeecec;
|
||
|
||
.top{
|
||
width: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
|
||
.left{
|
||
line-height: 50rpx;
|
||
font-weight: 500;
|
||
color: #242323;
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.pay_item_img {
|
||
width: 45rpx;
|
||
height: 45rpx;
|
||
float: left;
|
||
margin-right: 20rpx;
|
||
}
|
||
.pay_item_img_icon{
|
||
width: 40rpx;
|
||
height: 40rpx;
|
||
float: left;
|
||
margin-right: 8rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.pay_block .pay_item:last-child{
|
||
border-bottom: none;
|
||
}
|
||
|
||
.goods_detail_list_title {
|
||
padding: 30rpx;
|
||
color: #7dc1f0;
|
||
background: rgba(125, 193, 240, 0.1);
|
||
|
||
.linlanzhifu {
|
||
color: $themeColor;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.other_info {
|
||
font-size: 28rpx;
|
||
color: #5a5a5a;
|
||
}
|
||
|
||
.left {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.right {
|
||
font-size: 24rpx;
|
||
font-weight: 500 !important;
|
||
color: #999;
|
||
font-family: none;
|
||
}
|
||
}
|
||
|
||
.fdButtonBox {
|
||
border: 1rpx solid $themeColor;
|
||
background-color: $themeColor;
|
||
color: #fff;
|
||
padding: 10rpx 15rpx;
|
||
font-size: 24rpx;
|
||
line-height: 30rpx;
|
||
border-radius: 10rpx;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/deep/.goods_nav_box {
|
||
background-color: #fff;
|
||
|
||
.left {
|
||
margin-top: -10rpx;
|
||
width: calc(100% - 220rpx);
|
||
line-height: 70rpx;
|
||
|
||
.price {
|
||
.total {
|
||
font-size: 30rpx;
|
||
color: red;
|
||
}
|
||
}
|
||
}
|
||
.right .button{
|
||
margin-left: 0;
|
||
}
|
||
}
|
||
|
||
.explain {
|
||
word-wrap: break-word;
|
||
word-break: normal;
|
||
word-break: break-all;
|
||
}
|
||
|
||
.order_bottom_box {
|
||
width: 100%;
|
||
text-align: right;
|
||
padding-right: 30rpx;
|
||
font-size: 30rpx;
|
||
}
|
||
|
||
.agree_wo {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: flex-end;
|
||
color: #aaa;
|
||
line-height: 30rpx;
|
||
font-size: 28rpx;
|
||
padding: 10rpx 10rpx 20rpx 0;
|
||
}
|
||
.agreeRadio {
|
||
zoom: 0.6;
|
||
}
|
||
.agree {
|
||
width: auto !important;
|
||
}
|
||
.highlight {
|
||
color: $themeColor;
|
||
}
|
||
.tanchu {
|
||
padding: 40rpx 30rpx 40rpx 30rpx;
|
||
position: relative;
|
||
|
||
.dp_title {
|
||
font-size: 32rpx;
|
||
margin-bottom: 50rpx;
|
||
color: #555;
|
||
text-align: center;
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
</style> |