2026-05-26 13:58:25 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<view class="page">
|
|
|
|
|
|
<custom-navbar title="订单核销详情" :showBack="true" backgroundColor="#F5F5F5" :show-headle="true" borderBottom="none">
|
|
|
|
|
|
</custom-navbar>
|
|
|
|
|
|
|
|
|
|
|
|
<scroll-view class="scroll-content" scroll-y="true">
|
|
|
|
|
|
<view class="page-header">
|
2026-06-05 18:20:19 +08:00
|
|
|
|
<image class="header-icon"
|
|
|
|
|
|
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/be13b4f4-c0db-4f39-b9fc-0e69c13b72ee.png"
|
|
|
|
|
|
mode="aspectFit"></image>
|
2026-05-26 13:58:25 +08:00
|
|
|
|
<view class="header-text-box">
|
2026-06-08 17:53:00 +08:00
|
|
|
|
<view class="header-title">{{ orderTypeText }}</view>
|
2026-05-26 13:58:25 +08:00
|
|
|
|
<view class="header-sub">请确认核销订单信息~</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="card">
|
|
|
|
|
|
<view class="card-title">顾客信息</view>
|
|
|
|
|
|
<view class="customer-info">
|
|
|
|
|
|
<text>{{ orderData.customerName || '--' }}</text>
|
|
|
|
|
|
<text class="ml-10">{{ orderData.customerPhone || '--' }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="card">
|
|
|
|
|
|
<view class="card-title">预约信息</view>
|
|
|
|
|
|
<view class="goods-block">
|
|
|
|
|
|
<image class="goods-img" :src="orderData.goodsImg" mode="aspectFill"></image>
|
|
|
|
|
|
<view class="goods-detail">
|
|
|
|
|
|
<view class="goods-top">
|
|
|
|
|
|
<text class="goods-name">{{ orderData.goodsName || '--' }}</text>
|
|
|
|
|
|
<text class="goods-quantity">x{{ orderData.goodsNum || 1 }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="goods-price"><text class="money-symbol1">¥</text>{{ formatPrice(orderData.goodsPrice) }}</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="price-row mt-10">
|
|
|
|
|
|
<text class="label">服务售价</text>
|
|
|
|
|
|
<view class="val-box">
|
|
|
|
|
|
<text class="old-price">¥{{ formatPrice(orderData.originalPrice) }}</text>
|
|
|
|
|
|
<text class="new-price">¥{{ formatPrice(orderData.actualPrice) }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="price-row mt-15">
|
|
|
|
|
|
<text class="label">用户实付</text>
|
|
|
|
|
|
<text class="new-price">¥{{ formatPrice(orderData.payPrice) }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="dashed-divider"></view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="settle-row">
|
|
|
|
|
|
<text class="settle-label">商家结算基数</text>
|
|
|
|
|
|
<text class="settle-val"><text class="money-symbol2">¥</text>{{ formatPrice(orderData.settlePrice) }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="bottom-placeholder"></view>
|
|
|
|
|
|
</scroll-view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="bottom-btn-wrapper">
|
2026-06-10 11:21:43 +08:00
|
|
|
|
<view class="confirm-btn" @tap="isVerified ? goHomePage() : confirmVerify()"
|
|
|
|
|
|
:class="{ 'btn-disabled': isVerifying }">
|
|
|
|
|
|
<text class="btn-text">{{ isVerified ? '核销成功,返回首页' : (isVerifying ? '核销中...' : '确认核销') }}</text>
|
2026-05-26 13:58:25 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import request from "@/utils/request";
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
2026-06-08 17:53:00 +08:00
|
|
|
|
computed: {
|
|
|
|
|
|
orderTypeText() {
|
|
|
|
|
|
const map = {
|
|
|
|
|
|
1: '用户订单',
|
|
|
|
|
|
2: '商家订单',
|
|
|
|
|
|
3: '工时订单',
|
|
|
|
|
|
4: '工位订单',
|
|
|
|
|
|
5: '铁军线上缴费订单',
|
|
|
|
|
|
6: '自营订单'
|
|
|
|
|
|
};
|
|
|
|
|
|
return map[this.orderData.orderType] || '工时订单';
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2026-05-26 13:58:25 +08:00
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
statusBarHeight: 44,
|
|
|
|
|
|
orderData: {
|
|
|
|
|
|
orderId: '',
|
2026-06-03 16:37:31 +08:00
|
|
|
|
orderType: '', // 订单类型
|
|
|
|
|
|
serverCode: '', // 核销码
|
2026-05-26 13:58:25 +08:00
|
|
|
|
customerName: '',
|
|
|
|
|
|
customerPhone: '',
|
|
|
|
|
|
goodsImg: '',
|
|
|
|
|
|
goodsName: '',
|
|
|
|
|
|
goodsNum: 1,
|
|
|
|
|
|
goodsPrice: 0,
|
|
|
|
|
|
originalPrice: 0,
|
|
|
|
|
|
actualPrice: 0,
|
|
|
|
|
|
payPrice: 0,
|
|
|
|
|
|
settlePrice: 0
|
|
|
|
|
|
},
|
2026-06-10 11:21:43 +08:00
|
|
|
|
isVerifying: false,
|
|
|
|
|
|
isVerified: false, // 订单是否已被核销
|
|
|
|
|
|
userInfo: {} // 用户信息,用于获取sjid
|
2026-05-26 13:58:25 +08:00
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
onLoad(options) {
|
|
|
|
|
|
const sysInfo = uni.getSystemInfoSync();
|
|
|
|
|
|
if (sysInfo.statusBarHeight) {
|
|
|
|
|
|
this.statusBarHeight = sysInfo.statusBarHeight;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (options.data) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const parsedData = JSON.parse(decodeURIComponent(options.data));
|
|
|
|
|
|
this.mapOrderData(parsedData);
|
2026-06-08 17:53:00 +08:00
|
|
|
|
console.log(parsedData, '-==-=-=-=-=-=parsedData=-=-=-=-=parsedData')
|
2026-05-26 13:58:25 +08:00
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.error('解析订单数据失败', e);
|
|
|
|
|
|
uni.showToast({ title: '订单数据异常', icon: 'none' });
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// uni.showToast({ title: '未获取到订单信息', icon: 'none' });
|
|
|
|
|
|
console.log('未获取到订单信息');
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2026-06-10 11:21:43 +08:00
|
|
|
|
async onShow() {
|
|
|
|
|
|
// 每次页面显示时刷新订单核销状态
|
|
|
|
|
|
if (this.orderData.orderId) {
|
|
|
|
|
|
// 获取用户信息(sjid)
|
|
|
|
|
|
if (!this.userInfo.id) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await request.post('/user/getuser', { type: 3 });
|
|
|
|
|
|
if (res.data) {
|
|
|
|
|
|
this.userInfo = res.data;
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.error('获取用户信息失败', e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
this.checkVerifyStatus();
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2026-05-26 13:58:25 +08:00
|
|
|
|
methods: {
|
|
|
|
|
|
// 精准映射 /sj/poster/getOrderByCode 接口返回的 data 字段
|
|
|
|
|
|
mapOrderData(data) {
|
|
|
|
|
|
this.orderData = {
|
|
|
|
|
|
orderId: data.order_id || '',
|
2026-06-03 16:37:31 +08:00
|
|
|
|
orderType: data.order_type || '', // 映射订单类型
|
|
|
|
|
|
serverCode: data.server_code || '', // 映射核销码
|
2026-05-26 13:58:25 +08:00
|
|
|
|
customerName: data.user_name || '--',
|
|
|
|
|
|
customerPhone: data.user_phone || '--',
|
|
|
|
|
|
goodsImg: data.order_photo || 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/default_goods.png',
|
|
|
|
|
|
goodsName: data.order_title || '--',
|
|
|
|
|
|
goodsNum: data.order_num || 1,
|
|
|
|
|
|
goodsPrice: data.cost_money || 0,
|
|
|
|
|
|
originalPrice: data.line_money || 0,
|
|
|
|
|
|
actualPrice: data.cost_money || 0,
|
|
|
|
|
|
payPrice: data.pay_money || 0,
|
|
|
|
|
|
settlePrice: data.jiesuan_jine_yiju || 0
|
|
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
formatPrice(price) {
|
|
|
|
|
|
if (price === null || price === undefined) return '0.00';
|
|
|
|
|
|
const num = parseFloat(price);
|
|
|
|
|
|
if (isNaN(num)) return '0.00';
|
|
|
|
|
|
return num.toFixed(2);
|
|
|
|
|
|
},
|
|
|
|
|
|
goBack() {
|
|
|
|
|
|
uni.navigateBack();
|
|
|
|
|
|
},
|
2026-06-10 11:21:43 +08:00
|
|
|
|
// 检查订单核销状态
|
|
|
|
|
|
checkVerifyStatus() {
|
|
|
|
|
|
if (!this.orderData.orderId) return;
|
|
|
|
|
|
// 根据订单类型选择对应的详情接口
|
|
|
|
|
|
const orderType = this.orderData.orderType;
|
|
|
|
|
|
let detailUrl = '';
|
|
|
|
|
|
let params = { id: this.orderData.orderId };
|
|
|
|
|
|
|
|
|
|
|
|
if (orderType == 3) {
|
|
|
|
|
|
// 工时订单
|
|
|
|
|
|
detailUrl = '/syr/workHourOrder/details';
|
|
|
|
|
|
} else if (orderType == 4) {
|
|
|
|
|
|
// 工位订单
|
|
|
|
|
|
detailUrl = '/sj/workSeatOrder/details';
|
|
|
|
|
|
} else if (orderType == 6) {
|
|
|
|
|
|
// 自营订单
|
|
|
|
|
|
detailUrl = '/sj/orderSelf/details';
|
|
|
|
|
|
params.sjid = this.userInfo.id || ''; // 自营订单需要sjid
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 普通订单 (orderType 1, 2, 5)
|
|
|
|
|
|
detailUrl = '/sj/yhorderdetail';
|
|
|
|
|
|
params.sjid = this.userInfo.id || '';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
request.post(detailUrl, params).then(res => {
|
|
|
|
|
|
if (res.code === 200 && res.data) {
|
|
|
|
|
|
const orderState = res.data.state;
|
|
|
|
|
|
// 状态 1/2/3 为待核销,状态 4/5/6/7 为已核销
|
|
|
|
|
|
if (orderState >= 4) {
|
|
|
|
|
|
this.isVerified = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
|
console.error('检查核销状态失败', err);
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
// 返回首页
|
|
|
|
|
|
goHomePage() {
|
|
|
|
|
|
uni.switchTab({
|
|
|
|
|
|
url: '/pages/home/home'
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
2026-05-26 13:58:25 +08:00
|
|
|
|
confirmVerify() {
|
|
|
|
|
|
if (this.isVerifying) return;
|
|
|
|
|
|
if (!this.orderData.orderId) {
|
|
|
|
|
|
uni.showToast({ title: '订单ID缺失,无法核销', icon: 'none' });
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
uni.showModal({
|
|
|
|
|
|
title: '确认核销',
|
|
|
|
|
|
content: '确定要将此订单标记为已核销吗?',
|
|
|
|
|
|
success: (res) => {
|
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
|
this.doVerify();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
doVerify() {
|
|
|
|
|
|
this.isVerifying = true;
|
|
|
|
|
|
uni.showLoading({ title: '核销中...', mask: true });
|
2026-06-08 17:53:00 +08:00
|
|
|
|
console.log(this.orderData, '------------------parsedData')
|
2026-05-26 13:58:25 +08:00
|
|
|
|
|
|
|
|
|
|
// 调用核销接口
|
|
|
|
|
|
request.post('/sj/poster/useOrderServerCode', {
|
2026-06-03 16:37:31 +08:00
|
|
|
|
id: this.orderData.orderId,
|
|
|
|
|
|
order_type: this.orderData.orderType,
|
|
|
|
|
|
server_code: this.orderData.serverCode
|
2026-05-26 13:58:25 +08:00
|
|
|
|
}).then(res => {
|
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
|
uni.showToast({ title: '核销成功', icon: 'success' });
|
2026-06-10 11:21:43 +08:00
|
|
|
|
this.isVerified = true;
|
|
|
|
|
|
this.isVerifying = false;
|
|
|
|
|
|
// 核销成功后跳转到订单详情
|
2026-06-08 17:53:00 +08:00
|
|
|
|
const orderId = this.orderData.orderId;
|
|
|
|
|
|
const orderType = this.orderData.orderType;
|
|
|
|
|
|
let url = '';
|
|
|
|
|
|
if (orderType == 3) {
|
|
|
|
|
|
url = `/pages/shop/SellerDetail?order_id=${orderId}`;
|
2026-06-10 10:38:39 +08:00
|
|
|
|
} else if (orderType == 2 || orderType == 5 || orderType == 6) {
|
2026-06-08 17:53:00 +08:00
|
|
|
|
url = `/pages/shop/userorder-detail?order_id=${orderId}&serviceType=2`;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
url = `/pages/shop/userorder-detail?order_id=${orderId}`;
|
|
|
|
|
|
}
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
uni.navigateTo({ url });
|
|
|
|
|
|
}, 1500);
|
2026-05-26 13:58:25 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
uni.showToast({ title: res.msg || '核销失败,请重试', icon: 'none' });
|
|
|
|
|
|
this.isVerifying = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
|
console.error('核销请求异常', err);
|
|
|
|
|
|
uni.showToast({ title: '网络异常,核销失败', icon: 'none' });
|
|
|
|
|
|
this.isVerifying = false;
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
.page {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
height: 100vh;
|
|
|
|
|
|
background-color: #F5F5F5;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 自定义导航栏 */
|
|
|
|
|
|
.nav-bar {
|
|
|
|
|
|
position: fixed;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
right: 0;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
padding: 0 30rpx;
|
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
|
z-index: 10;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.back-btn {
|
|
|
|
|
|
width: 60rpx;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.back-icon {
|
|
|
|
|
|
width: 18rpx;
|
|
|
|
|
|
height: 36rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.nav-title {
|
|
|
|
|
|
font-size: 34rpx;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.right-placeholder {
|
|
|
|
|
|
width: 60rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 可滚动内容区域 */
|
|
|
|
|
|
.scroll-content {
|
2026-06-05 18:20:19 +08:00
|
|
|
|
padding-top: 40rpx;
|
2026-05-26 13:58:25 +08:00
|
|
|
|
flex: 1;
|
|
|
|
|
|
padding-bottom: 20rpx;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 页面头部:订单类型标识 */
|
|
|
|
|
|
.page-header {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
padding: 40rpx 30rpx 10rpx;
|
|
|
|
|
|
|
|
|
|
|
|
.header-icon {
|
|
|
|
|
|
width: 99rpx;
|
|
|
|
|
|
height: 95rpx;
|
|
|
|
|
|
margin-right: 20rpx;
|
|
|
|
|
|
}
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.header-text-box {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.header-title {
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-size: 36rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
line-height: 50rpx;
|
|
|
|
|
|
margin-bottom: 12rpx;
|
|
|
|
|
|
}
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.header-sub {
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
color: #999999;
|
|
|
|
|
|
line-height: 33rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 卡片通用样式 */
|
|
|
|
|
|
.card {
|
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
margin: 24rpx 30rpx;
|
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
|
box-shadow: none;
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.card-title {
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
line-height: 42rpx;
|
|
|
|
|
|
margin-bottom: 24rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 顾客信息 */
|
|
|
|
|
|
.customer-info {
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
|
color: #666666;
|
|
|
|
|
|
line-height: 40rpx;
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.ml-10 {
|
|
|
|
|
|
margin-left: 6rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 商品基础信息块 */
|
|
|
|
|
|
.goods-block {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
|
margin-bottom: 30rpx;
|
|
|
|
|
|
|
|
|
|
|
|
.goods-img {
|
|
|
|
|
|
width: 120rpx;
|
|
|
|
|
|
height: 127rpx;
|
|
|
|
|
|
border-radius: 12rpx;
|
|
|
|
|
|
background-color: #f0f0f0;
|
|
|
|
|
|
margin-right: 20rpx;
|
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.goods-detail {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.goods-top {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
|
|
|
|
|
|
|
.goods-name {
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
line-height: 42rpx;
|
|
|
|
|
|
max-width: 380rpx;
|
|
|
|
|
|
}
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.goods-quantity {
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
|
color: #666666;
|
|
|
|
|
|
line-height: 40rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.goods-price {
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-size: 36rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
line-height: 50rpx;
|
|
|
|
|
|
}
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.money-symbol1 {
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 价格明细行 */
|
|
|
|
|
|
.price-row {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
align-items: baseline;
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
|
|
|
|
|
&.mt-10 {
|
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&.mt-15 {
|
|
|
|
|
|
margin-top: 30rpx;
|
|
|
|
|
|
}
|
2026-05-26 13:58:25 +08:00
|
|
|
|
|
|
|
|
|
|
.label {
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
color: #666666;
|
|
|
|
|
|
line-height: 37rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.val-box {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
|
align-items: baseline;
|
|
|
|
|
|
|
|
|
|
|
|
.old-price {
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
color: #999999;
|
|
|
|
|
|
line-height: 37rpx;
|
|
|
|
|
|
text-decoration: line-through;
|
|
|
|
|
|
margin-right: 16rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.new-price {
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
line-height: 37rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 虚线分割线 */
|
|
|
|
|
|
.dashed-divider {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 1px;
|
|
|
|
|
|
border-bottom: 2rpx solid #f5f5f5;
|
|
|
|
|
|
margin: 30rpx 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 商家结算基数栏 */
|
|
|
|
|
|
.settle-row {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
|
align-items: baseline;
|
|
|
|
|
|
|
|
|
|
|
|
.settle-label {
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
line-height: 37rpx;
|
|
|
|
|
|
margin-right: 12rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.settle-val {
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-size: 40rpx;
|
|
|
|
|
|
color: #FF4767;
|
|
|
|
|
|
line-height: 56rpx;
|
|
|
|
|
|
}
|
2026-06-05 18:20:19 +08:00
|
|
|
|
|
2026-05-26 13:58:25 +08:00
|
|
|
|
.money-symbol2 {
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
margin-right: 5rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.bottom-placeholder {
|
|
|
|
|
|
height: 160rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 底部按钮容器 */
|
|
|
|
|
|
.bottom-btn-wrapper {
|
|
|
|
|
|
position: fixed;
|
|
|
|
|
|
bottom: 0;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
right: 0;
|
|
|
|
|
|
background-color: #f5f5f5;
|
|
|
|
|
|
padding: 20rpx 40rpx 60rpx; // 底部安全区
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.confirm-btn {
|
|
|
|
|
|
background-color: #FF4767;
|
|
|
|
|
|
height: 98rpx;
|
|
|
|
|
|
border-radius: 49rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
transition: opacity 0.2s;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.btn-text {
|
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.btn-disabled {
|
|
|
|
|
|
opacity: 0.6;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|