mrr.sj.front/pages/service/components/self-pay.vue

1348 lines
33 KiB
Vue
Raw Normal View History

2026-03-24 11:45:13 +08:00
<template>
<view class="self-pay">
<uv-popup ref="popup" mode="bottom" @change="change">
<view class="salf-card">
<view class="pop-card" v-if="serviceType == 1">
<text class="syr-info-address">{{
reservationAddress.server_address
}}</text>
<text class="syr-info-phone">{{
reservationAddress.name + " " + reservationAddress.call_phone
}}</text>
</view>
<view class="pop-card" v-if="serviceType == 1">
<view class="salf-card-between mb-20">
<text class="salf-card-between-text1">到家时间</text>
<text class="salf-card-between-text2">{{
reservationTime.selectedTime
}}</text>
</view>
<view class="salf-card-between">
<text class="salf-card-between-text1">服务人员</text>
<view style="width: 425rpx; justify-content: flex-end" class="flex-row-center">
<image v-if="reservationSyr.head_photo" class="card-right-photo"
:src="reservationSyr.head_photo" />
<text class="salf-card-between-text2" style="width: auto">{{
reservationSyr.name
}}</text>
</view>
</view>
</view>
<view class="pop-card">
<view class="serve-info">
<image :src="serviceInfo.photo[0]" class="serve-info-img" mode="aspectFill"></image>
<view class="serve-info-right">
<text class="serve-info-right-name">{{ serviceInfo.title }}</text>
<view class="serve-info-right-num flex-row-center-between">
<text class="serve-info-right-num-text1">服务数量</text>
<text class="serve-info-right-num-text2">X1</text>
</view>
</view>
</view>
<view class="salf-card-between">
<view>
<view class="salf-card-between-box">
<text class="salf-card-between-text2-o">应付金额</text>
<text class="salf-card-between-text2-t"></text>
<text class="salf-card-between-text2-s">{{
isOriginalPrice ? serviceInfo.server_price : serviceInfo.team_buy.price }}</text>
<text class="salf-card-between-text2-f">3999</text>
</view>
<view class="border-b"></view>
</view>
</view>
<view class="conpon" @click="useconpon" v-if="selectCoupon">
<text class="conpon-l">平台优惠券</text>
<text class="conpon-r1">-</text>
<text class="conpon-r2"></text>
<text class="conpon-r3">300</text>
<image class="conpon-r4"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/58b8f49b-41ef-4e92-8d7d-61ce136726ec.png"
mode="widthFix"></image>
</view>
<view class="conpon" @click="useconpon" v-if="!selectCoupon">
<text class="conpon-l">平台优惠券</text>
<text class="conpon-r1-no">暂不使用优惠券</text>
<image class="conpon-r4"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/58b8f49b-41ef-4e92-8d7d-61ce136726ec.png"
mode="widthFix"></image>
</view>
</view>
<view class="pop-card" v-if="serviceType == 2">
<view class="serve-store">
<image :src="selectStore.head_photo" class="serve-store-img" mode="aspectFill"></image>
<view class="serve-store-right">
<text class="serve-store-right-name">{{ selectStore.name }}</text>
<view class="serve-store-right-num flex-row-center-between">
<view class="flex-row-center">
<text class="serve-store-right-num-text">营业时间</text>
<text class="serve-store-right-num-text" style="color: #333333">{{
selectStore.business_time }}</text>
</view>
</view>
</view>
</view>
<view class="serve-store-address flex-row-center">
<view class="serve-store-address-right">
<text class="serve-store-address-right-text">地址{{ selectStore.address }}</text>
<text class="serve-store-address-right-text">电话{{ selectStore.account }}</text>
</view>
<view class="serve-store-address-left flex-row-center">
<image class="address-left-icon" src="/static/images/icons/adress.png"
@click="openMap(selectStore)"></image>
<image class="address-left-icon ml40" src="/static/images/icons/phone.png"
@click="contactService(selectStore.account)"></image>
</view>
</view>
</view>
<view class="pop-card">
<text class="pop-card-title">选择支付方式</text>
<view class="method-list">
<view class="method-item flex-row-center-between"
:class="{ mb43: index != methodList.length - 1 }" v-for="(item, index) in methodList"
:key="index" @click="selectMethod(item)">
<view class="method-info flex-row-center">
<image :src="item.icon" mode="aspectFit" class="method-icon"></image>
<text class="method-name">{{ item.name }}</text>
</view>
<agree-radio :isAgree="item.selected" :yesImg="`/static/images/icons/yes_icon.png`"
:radioSize="`40rpx`" :noImg="`/static/images/icons/no_icon.png`"></agree-radio>
</view>
</view>
</view>
<view class="pop-submit flex-row-center-between">
<view class="pop-submit-left">
<text class="pop-submit-left-text1">应付金额</text>
<text class="pop-submit-left-text2"><text style="font-size: 24rpx">¥</text>{{
isOriginalPrice ? serviceInfo.server_price : serviceInfo.team_buy.price }}</text>
</view>
<view class="pop-submit-btn flex-row-center-center">
<text class="pop-submit-btn-text" @click="submitOrder">立即支付</text>
</view>
</view>
</view>
</uv-popup>
<uv-popup round='40rpx' ref="popups" mode="bottom" @maskClick='closes'>
<text class="popups-title">平台优惠券</text>
<scroll-view scroll-y="true" class="popups-box">
<!-- 使用计算属性控制显示数量 -->
<view class="popups-card" v-for="item in displayCouponList" :key="item.id" @click="selectcoupon(item)">
<image class="popups-card-img"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ba6a1d6d-2fe9-45ce-8ee4-49895f7a2a68.png"
mode="widthFix"></image>
<view class="popups-card-list">
<view class="popups-card-list-t">
<text class="popups-card-list-t-price">{{ item.price }}</text>
<text class="popups-card-list-t-dw"></text>
</view>
<view class="popups-card-list-b">
<text class="popups-card-list-b-can">{{ item.threshold }}</text>
</view>
</view>
<view class="popups-card-center">
<text class="popups-card-center-title">{{ item.title }}</text>
<text class="popups-card-center-content">{{ item.time }}</text>
</view>
<view class="popups-card-r-img">
<image class="popups-card-r-img-detail"
:src="selectedId === item.id ? item.selectedImg : item.normalImg" mode="widthFix"></image>
</view>
</view>
<!-- 展开/收起按钮 -->
<view class="popups-bottom" @click="toggleExpand">
<view class="popups-bottom-view">
<text class="popups-bottom-text">{{ isExpanded ? '收起全部' : '展开全部' }}</text>
</view>
<image class="popups-bottom-img"
:src="isExpanded ? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/fe418cfb-99c5-43ca-8ffd-5c656fb1cd06.png' : 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/169e99f5-8181-43d9-b290-f0526690ff83.png'"
mode="widthFix"></image>
</view>
<view class="nouse" @click="nousecoupon()">
<text class="nouse-text">暂不使用优惠券</text>
<image class="nouse-img"
:src="selectnouse ? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dbbc70e5-5e96-46fc-9b1a-ffd825187975.png' : 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb950b95-5221-4d4e-abf1-4d3c830aa8f0.png'"
mode="widthFix"></image>
</view>
<view class="zhanwei"></view>
<view class="pop-bot-confim">
<view class="confirm-button" @click="confim()">
<text class="confirm-button-text">确认</text>
</view>
</view>
</scroll-view>
</uv-popup>
</view>
</template>
<script>
import request from "@/utils/request";
import _public from "@/utils/public";
import locationService from "@/utils/locationService";
import permissionUtils from "@/utils/per";
export default {
name: "AgreeRadio",
props: {
show: {
type: Boolean,
default: false,
},
serviceInfo: {
type: Object,
default: () => ({}),
},
serviceType: {
type: [String, Number],
default: 2,
},
isOriginalPrice: {
type: Boolean,
default: true,
},
},
computed: {
reservationAddress() {
return this.$store.state.reservationAddress;
},
reservationSyr() {
return this.$store.state.reservationSyr;
},
selectStore() {
return this.$store.state.selectStore;
},
reservationTime() {
return this.$store.state.reservationTime;
},
// 核心控制优惠券显示数量默认4条展开显示全部
displayCouponList() {
return this.isExpanded ? this.couponList : this.couponList.slice(0, 4);
}
},
data() {
return {
isExpanded: false, // 展开/收起状态标识
selectedId: null,
couponList: [{
id: 1,
price: 10,
threshold: "满100可用",
title: "满减优惠券",
time: "2026-03-31到期",
selectedImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dbbc70e5-5e96-46fc-9b1a-ffd825187975.png",
normalImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb950b95-5221-4d4e-abf1-4d3c830aa8f0.png"
},
{
id: 2,
price: 20,
threshold: "满200可用",
title: "大额满减券",
time: "2026-04-30到期",
selectedImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dbbc70e5-5e96-46fc-9b1a-ffd825187975.png",
normalImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb950b95-5221-4d4e-abf1-4d3c830aa8f0.png"
},
{
id: 3,
price: 20,
threshold: "满200可用",
title: "大额满减券",
time: "2026-04-30到期",
selectedImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dbbc70e5-5e96-46fc-9b1a-ffd825187975.png",
normalImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb950b95-5221-4d4e-abf1-4d3c830aa8f0.png"
}, {
id: 4,
price: 20,
threshold: "满200可用",
title: "大额满减券",
time: "2026-04-30到期",
selectedImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dbbc70e5-5e96-46fc-9b1a-ffd825187975.png",
normalImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb950b95-5221-4d4e-abf1-4d3c830aa8f0.png"
},
{
id: 5,
price: 20,
threshold: "满200可用",
title: "大额满减券",
time: "2026-04-30到期",
selectedImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dbbc70e5-5e96-46fc-9b1a-ffd825187975.png",
normalImg: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb950b95-5221-4d4e-abf1-4d3c830aa8f0.png"
},
],
selectCoupon: false,
popups: false,
isSubmit: false,
orderInfo: {
id: "",
pay_money: "",
number: "",
},
payType: false,
formData: {},
selectedPayment: "wechat",
methodList: [{
id: 1,
name: "微信",
payment: "wechat",
icon: "/static/images/wechat.png",
selected: true,
},
{
id: 2,
name: "支付宝",
payment: "alipay",
icon: "/static/images/alipay.png",
selected: false,
},
],
selectnouse: false
};
},
watch: {
show(newVal) {
if (newVal) {
this.open();
} else {
this.close();
}
},
},
methods: {
confim() {
this.$refs.popups.close();
},
nousecoupon() {
this.selectedId = null
this.selectnouse = false
this.selectnouse = true
this.selectCoupon = false
},
// 切换展开/收起状态
toggleExpand() {
this.isExpanded = !this.isExpanded;
},
selectcoupon(item) {
this.selectCoupon = true
this.selectnouse = false
this.selectedId = this.selectedId === item.id ? null : item.id;
if (this.selectedId) {
console.log("选中的优惠券:", item);
} else {
console.log("取消选中优惠券");
}
},
useconpon() {
console.log('123123123123123');
this.$refs.popups.open()
},
opens() { },
clearSubmit() {
this.isSubmit = false
},
selectMethod(item) {
this.selectedPayment = item.payment;
this.methodList.forEach((method) => {
method.selected = method.id === item.id;
});
},
open() {
this.$refs.popup.open();
},
close() {
this.$refs.popup.close();
},
change(e) {
this.$emit("change", e);
},
async submitOrder() {
if (this.isSubmit) return;
try {
uni.showLoading({
title: "提交中...",
});
let orderData = {};
if (this.serviceType == 2) {
orderData = {
server_id: this.serviceInfo.id,
order_kind: this.serviceType,
order_money: this.serviceInfo.server_price,
server_title: this.serviceInfo.title,
server_type_first_id: this.serviceInfo.first_class_id,
server_type_secod_id: this.serviceInfo.second_class_id,
order_type: 3,
};
} else if (this.serviceType == 1) {
orderData = {
server_id: this.serviceInfo.id,
order_money: this.serviceInfo.server_price,
reservation_time: `${this.reservationTime.selected_date} ${this.reservationTime.selected_time}:00`,
reservation_address_id: this.reservationAddress.id,
server_title: this.serviceInfo.title,
server_type_first_id: this.serviceInfo.first_class_id,
server_type_secod_id: this.serviceInfo.second_class_id,
order_type: 3,
};
if (this.reservationSyr.id_type == 1) {
orderData.order_kind = 1;
}
if (this.reservationSyr.id_type == 2) {
orderData.order_shopid_other = this.reservationSyr.id;
orderData.order_kind = 3;
}
}
if (!this.isOriginalPrice) {
orderData.team_buy_id = this.serviceInfo.team_buy.id
orderData.order_money = this.serviceInfo.team_buy.price
}
console.log("orderData", orderData);
this.isSubmit = true;
let res = await request.post("/user/creatorder", orderData);
console.log("creatorderres", res);
uni.hideLoading();
if (res.code == 200 || res.state == 1) {
this.orderInfo.id = res.data.id;
this.orderInfo.number = res.data.number;
this.orderInfo.pay_money = this.isOriginalPrice ? this.serviceInfo.server_price : this
.serviceInfo.team_buy.price;
console.log("orderInfo", this.orderInfo);
this.confirmPay();
} else {
uni.showToast({
title: res.msg || "提交失败",
icon: "none",
});
this.isSubmit = false;
}
} catch (error) {
uni.hideLoading();
uni.showToast({
title: "提交失败,请重试",
icon: "none",
});
console.error("提交订单失败:", error);
this.isSubmit = false;
}
},
async confirmPay() {
let that = this;
try {
uni.showLoading({
title: "支付中...",
});
console.log(that.selectedPayment);
switch (that.selectedPayment) {
case "wechat":
let wechatpayfor = await request.post(
"/user/wechatpayfor",
that.orderInfo
);
console.log("wechatpayfor", wechatpayfor);
if (wechatpayfor.code == 452) {
uni.showToast({
title: wechatpayfor.msg || "支付失败,请重试",
icon: "none",
duration: 2000,
});
this.cancelService();
return;
}
const systemInfo = uni.getSystemInfoSync();
if (systemInfo.platform === "ios") {
let appId = wechatpayfor.data.appid;
delete wechatpayfor.data.appid;
wechatpayfor.data["appId"] = appId;
console.log("wechatpayfor2", wechatpayfor);
}
console.log("================================");
uni.hideLoading();
uni.requestPayment({
provider: "wxpay",
orderInfo: wechatpayfor.data,
success: function (res) {
console.log("success:", res);
console.log(that.orderInfo.id, that.orderInfo.number);
that.isSubmit = false;
request
.post("/user/wechatsearchorder", {
id: that.orderInfo.id,
number: that.orderInfo.number,
})
.then((orderRes) => {
that.paySuccess();
})
.catch((err) => {
console.log("查询状态", err);
});
},
fail: function (err) {
that.isSubmit = false;
uni.showModal({
title: "提示",
content: "该订单未成功支付",
success: function (res) {
if (res.confirm) {
console.log("用户点击确定");
} else if (res.cancel) {
console.log("用户点击取消");
}
},
});
console.log("fail:", JSON.stringify(err));
},
});
break;
case "alipay":
let orderInfo = {
...that.orderInfo,
};
orderInfo.title = that.serviceInfo.title;
console.log("alipayorderInfo", orderInfo);
let alipayfor = await request.post("/user/alipayfor", orderInfo);
if (alipayfor.code == 452) {
uni.showToast({
title: alipayfor.msg || "支付失败,请重试",
icon: "none",
duration: 2000,
});
that.cancelService();
return;
}
console.log("alipayfor", alipayfor);
uni.hideLoading();
uni.requestPayment({
provider: "alipay",
orderInfo: alipayfor.data,
success: function (res) {
that.isSubmit = false;
console.log("success:", res);
console.log(
"id: ",
that.orderInfo.id,
"number: ",
that.orderInfo.number
);
console.log("ali支付成功了====================");
request
.post("/user/alisearchorder", {
id: that.orderInfo.id,
number: that.orderInfo.number,
})
.then((orderRes) => {
console.log("orderRes", orderRes, orderRes.trade_status);
that.paySuccess();
})
.catch((err) => {
console.log("ali报错了】】】】】】】】】】】】】】", err);
console.log("查询状态", err);
});
},
fail: function (err) {
that.isSubmit = false;
uni.showModal({
title: "提示",
content: "该订单未成功支付",
success: function (res) {
if (res.confirm) {
console.log("用户点击确定");
} else if (res.cancel) {
console.log("用户点击取消");
}
},
});
console.log("fail:", JSON.stringify(err));
},
});
break;
}
} catch (error) {
uni.hideLoading();
console.error("支付失败", error);
uni.showToast({
title: "支付失败,请重试",
icon: "none",
});
that.isSubmit = false;
}
},
async cancelService() {
this.isSubmit = false;
let id = "";
await request
.post("/user/getuser", {
type: 1,
})
.then((res) => {
console.log(res);
id = res.data.id;
});
let data = {
orderNo: this.orderInfo.number,
amount: this.orderInfo.pay_money,
cancel_state: 1,
cancel_id: id,
};
request
.post("/user/cancelorder", data)
.then((res) => {
console.log(22222, res);
})
.catch((err) => {
console.log(err);
})
.finally(() => {
setTimeout(() => {
uni.switchTab({
url: "/pages/order/userorder-list",
});
}, 2000);
});
},
paySuccess() {
uni.showToast({
title: "支付成功",
icon: "success",
});
setTimeout(() => {
uni.redirectTo({
url: `/pages/order/pay-success?orderId=${this.orderInfo.id}`,
});
}, 50);
this.isSubmit = true;
},
openMap(store) {
if (!store.latitude || !store.longitude) {
uni.showToast({
title: "该门店暂无定位信息",
icon: "none",
});
return;
}
// #ifdef MP-WEIXIN
uni.openLocation({
latitude: parseFloat(store.latitude),
longitude: parseFloat(store.longitude),
name: store.name,
address: store.address,
success: () => console.log("打开地图成功"),
fail: (err) => console.log("打开地图失败:", err),
});
// #endif
// #ifdef APP-PLUS
_public.goMap({
latitude: parseFloat(store.latitude),
longitude: parseFloat(store.longitude),
name: store.name,
address: store.address,
});
// #endif
},
async contactService(phone) {
if (!phone) {
uni.showToast({
title: "暂无联系电话",
icon: "none",
});
return;
}
const systemInfo = uni.getSystemInfoSync();
if (systemInfo.platform === "ios") {
uni.makePhoneCall({
phoneNumber: phone,
});
} else {
try {
const {
granted
} = await permissionUtils.checkPermission(
"phone",
"需要拨打电话权限,方便您联系商家"
);
if (granted) {
uni.makePhoneCall({
phoneNumber: phone,
});
return;
}
const confirm = await this.showPermissionDialog(
"拨打电话权限申请",
"我们需要获取拨打电话权限,以便您直接联系商家"
);
if (!confirm) return;
const result = await permissionUtils.requestPermission(
"phone",
"需要拨打电话权限,方便您联系商家"
);
if (result) {
uni.makePhoneCall({
phoneNumber: phone,
});
} else {
locationService.openAppSettings();
}
} catch (err) {
console.log("联系商家失败:", err);
uni.showToast({
title: "操作失败,请稍后重试",
icon: "none",
});
}
}
},
showPermissionDialog(title, content) {
return new Promise((resolve) => {
uni.showModal({
title,
content,
confirmText: "去设置",
cancelText: "取消",
success: (res) => resolve(res.confirm),
});
});
},
},
};
</script>
<style lang="less">
.self-pay {
.salf-card {
width: 750rpx;
background: #f5f5f5;
border-radius: 30rpx 30rpx 0rpx 0rpx;
padding: 30rpx 20rpx 0rpx 20rpx;
box-sizing: border-box;
.syr-info-address {
font-weight: 500;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
margin-bottom: 10rpx;
}
.syr-info-phone {
font-weight: 400;
font-size: 28rpx;
color: #999999;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.salf-card-between {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
.salf-card-between-text1 {
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.salf-card-between-text2 {
font-weight: 500;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.card-right-photo {
margin-right: 10rpx;
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
}
.serve-info {
display: flex;
flex-direction: row;
padding-bottom: 20rpx;
margin-bottom: 20rpx;
.serve-info-img {
width: 120rpx;
height: 120rpx;
border-radius: 30rpx;
}
.serve-info-right {
flex: 1;
margin-left: 13rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.serve-info-right-name {
font-weight: 500;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.serve-info-right-num {
.serve-info-right-num-text1 {
font-weight: 400;
font-size: 26rpx;
color: #999999;
line-height: 37rpx;
text-align: left;
font-style: normal;
}
.serve-info-right-num-text2 {
font-weight: 400;
font-size: 24rpx;
color: #333333;
line-height: 33rpx;
text-align: left;
font-style: normal;
}
}
}
}
.serve-store {
display: flex;
flex-direction: row;
padding-bottom: 20rpx;
border-bottom: 1rpx solid #f1f1f1;
margin-bottom: 20rpx;
.serve-store-img {
width: 90rpx;
height: 90rpx;
border-radius: 20rpx;
}
.serve-store-right {
flex: 1;
margin-left: 13rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.serve-store-right-name {
font-weight: 500;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.serve-store-right-num {
.serve-store-right-num-text {
font-weight: 400;
font-size: 24rpx;
color: #666666;
line-height: 33rpx;
text-align: left;
font-style: normal;
}
}
}
}
.serve-store-address {
.serve-store-address-right {
flex: 1;
display: flex;
flex-direction: column;
.serve-store-address-right-text {
font-weight: 400;
font-size: 24rpx;
color: #666666;
line-height: 33rpx;
text-align: left;
font-style: normal;
width: 510rpx;
lines: 1;
text-overflow: ellipsis;
}
}
.serve-store-address-left {
.address-left-icon {
width: 43rpx;
height: 43rpx;
}
}
}
.pop-card {
background: #ffffff;
border-radius: 30rpx;
padding: 20rpx;
margin-bottom: 20rpx;
.pop-card-title {
margin-bottom: 30rpx;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
}
.pop-submit {
padding: 25rpx 25rpx 25rpx 45rpx;
margin: 0 -20rpx;
background: #fff;
.pop-submit-left {
display: flex;
flex-direction: column;
.pop-submit-left-text1 {
font-weight: 500;
font-size: 22rpx;
color: #333333;
line-height: 30rpx;
text-align: left;
font-style: normal;
}
.pop-submit-left-text2 {
font-family: DINPro, DINPro;
font-weight: 500;
font-size: 52rpx;
color: #e8101e;
line-height: 67rpx;
text-align: left;
font-style: normal;
}
}
.pop-submit-btn {
width: 226rpx;
height: 82rpx;
background: #e8101e;
border-radius: 41rpx;
.pop-submit-btn-text {
font-weight: 500;
font-size: 30rpx;
color: #ffffff;
line-height: 82rpx;
text-align: center;
font-style: normal;
}
}
}
}
}
.method-item {}
.method-info {
display: flex;
align-items: center;
}
.method-icon {
width: 38rpx;
height: 38rpx;
margin-right: 20rpx;
}
.method-name {
font-weight: 500;
font-size: 30rpx;
color: #5b5b5b;
line-height: 42rpx;
text-align: left;
font-style: normal;
}
.mb-20 {
margin-bottom: 20rpx;
}
.mb43 {
margin-bottom: 43rpx;
}
.ml40 {
margin-left: 40rpx;
}
.flex-row-center-between {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.flex-row-center {
display: flex;
flex-direction: row;
align-items: center;
}
.flex-row-center-center {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.salf-card-between-text2-o {
font-size: 22rpx;
height: 37rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #333333;
line-height: 37rpx;
font-style: normal;
}
.salf-card-between-box {
display: flex;
flex-direction: row;
justify-content: flex-end;
}
.salf-card-between-text2-t {
height: 28rpx;
font-family: DINPro, DINPro;
font-weight: 500;
font-size: 22rpx;
color: #333333;
line-height: 28rpx;
font-style: normal;
margin-top: 5rpx;
}
.salf-card-between-text2-s {
height: 41rpx;
font-family: DINPro, DINPro;
font-weight: 500;
font-size: 32rpx;
color: #333333;
line-height: 41rpx;
text-align: left;
font-style: normal;
margin-top: -4rpx;
}
.salf-card-between-text2-f {
height: 36rpx;
font-family: DINPro, DINPro;
font-weight: 400;
font-size: 28rpx;
color: #999999;
line-height: 36rpx;
text-align: left;
font-style: normal;
margin-left: 10rpx;
text-decoration: line-through;
}
.border-b {
width: 670rpx;
height: 1rpx;
background: #F1F1F1;
margin-top: 30rpx;
}
.conpon {
display: flex;
flex-direction: row;
justify-content: flex-end;
margin-top: 33rpx;
}
.conpon-l {
height: 37rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #333333;
line-height: 37rpx;
text-align: left;
font-style: normal;
}
.conpon-r1 {
width: 13rpx;
height: 38rpx;
font-family: DINPro, DINPro;
font-weight: 500;
font-size: 30rpx;
color: #E8101E;
line-height: 38rpx;
text-align: left;
font-style: normal;
margin-left: 410rpx;
margin-top: 6rpx;
}
.conpon-r2 {
margin-top: 6rpx;
height: 31rpx;
font-family: DINPro, DINPro;
font-weight: 500;
font-size: 24rpx;
color: #E8101E;
line-height: 31rpx;
text-align: left;
font-style: normal;
}
.conpon-r3 {
height: 41rpx;
font-family: DINPro, DINPro;
font-weight: 500;
font-size: 32rpx;
color: #E8101E;
line-height: 41rpx;
text-align: left;
font-style: normal;
}
.conpon-r4 {
width: 10rpx;
margin-top: 10rpx;
margin-left: 20rpx;
}
.conpon-r1-no {
height: 37rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #333333;
line-height: 37rpx;
font-style: normal;
margin-left: 328rpx;
}
.popups-box {
width: 750rpx;
height: 1023rpx;
background: #FFFFFF;
border-radius: 40rpx 40rpx 0rpx 0rpx;
}
.popups-title {
width: 750rpx;
height: 100rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 500;
font-size: 36rpx;
color: #333333;
line-height: 50rpx;
font-style: normal;
padding-left: 285rpx;
padding-top: 30rpx;
}
.popups-card {
width: 690rpx;
height: 167rpx;
margin: 30rpx 30rpx 0 30rpx;
position: relative;
}
.popups-card-img {
position: absolute;
width: 690rpx;
}
.popups-card-list {
width: 690rpx;
height: 167rpx;
}
.popups-card-list-t {
display: flex;
flex-direction: row;
position: absolute;
top: 10rpx;
left: 37rpx;
}
.popups-card-list-t-price {
height: 69rpx;
font-family: DINPro, DINPro;
font-weight: 500;
font-size: 54rpx;
color: #FF3340;
font-style: normal;
margin-top: 12rpx;
}
.popups-card-list-t-dw {
height: 33rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FF3340;
line-height: 33rpx;
font-style: normal;
margin-top: 41rpx;
}
.popups-card-list-b {
height: 33rpx;
display: flex;
flex-direction: row;
margin-top: 99rpx;
}
.popups-card-list-b-can {
color: #FF3340;
height: 33rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
line-height: 33rpx;
font-style: normal;
position: absolute;
margin-left: 20rpx;
}
.popups-card-center {
position: absolute;
margin: 40rpx 0 0 199rpx;
}
.popups-card-center-title {
height: 42rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #333333;
line-height: 42rpx;
font-style: normal;
}
.popups-card-center-content {
height: 33rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
color: #777777;
line-height: 33rpx;
font-style: normal;
margin-top: 12rpx;
}
.popups-card-r-img {
position: absolute;
margin: 64rpx 0 0 620rpx;
}
.popups-card-r-img-detail {
width: 40rpx;
}
.popups-bottom {
display: flex;
flex-direction: row;
margin: 20rpx 0 0 295rpx;
}
.popups-bottom-view {
width: 161rpx;
height: 57rpx;
border-radius: 29rpx;
border: 2rpx solid #D6D6D6;
}
.popups-bottom-text {
height: 33rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
color: #3F3B3A;
line-height: 33rpx;
font-style: normal;
margin: 12rpx 0 0 20rpx;
}
.popups-bottom-img {
width: 15rpx;
margin: 24rpx 0 0 -40rpx;
}
.zhanwei {
height: 200rpx;
}
.confirm-button {
width: 690rpx;
height: 98rpx;
background: #E8101E;
border-radius: 49rpx;
margin: 24rpx 0 0 30rpx;
}
.pop-bot-confim {
width: 750rpx;
height: 183rpx;
margin-top: 40rpx;
position: fixed;
bottom: 0rpx;
background-color: white;
}
.confirm-button-text {
height: 45rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
line-height: 45rpx;
font-style: normal;
margin: 27rpx 0 0 313rpx;
}
.nouse {
display: flex;
flex-direction: row;
justify-content: space-between;
margin-top: 30rpx;
}
.nouse-text {
height: 42rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 30rpx;
color: #333333;
line-height: 42rpx;
font-style: normal;
margin-left: 30rpx;
}
.nouse-img {
width: 40rpx;
margin-right: 60rpx;
}
</style>