|
|
@ -7,73 +7,48 @@ |
|
|
|
</view> |
|
|
|
<view class="order-title">订单详情</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 收货地址信息 --> |
|
|
|
<view class="address-section" v-if="hasPhysicalGoods"> |
|
|
|
<view class="section-label">收货地址:</view> |
|
|
|
<view class="address-card" v-if="orderDetail.address"> |
|
|
|
<view class="address-info"> |
|
|
|
<text class="address-text">{{ |
|
|
|
orderDetail.address.fullAddress |
|
|
|
}}</text> |
|
|
|
<view class="contact-info"> |
|
|
|
<text class="contact-name">{{ orderDetail.address.name }}</text> |
|
|
|
<text class="contact-phone">{{ orderDetail.address.phone }}</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="no-address" v-else> |
|
|
|
<text>该订单无需收货地址</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 预约发货时间 --> |
|
|
|
<view class="delivery-section"> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">预约发货时间</text> |
|
|
|
<text class="info-value">{{ orderDetail.deliveryDate || "--" }}</text> |
|
|
|
</view> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">快递单号</text> |
|
|
|
<text class="info-value">{{ orderDetail.trackingNo || "--" }}</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 商品标题 --> |
|
|
|
<view class="product-title"> |
|
|
|
{{ orderDetail.packageName }} |
|
|
|
{{ orderDetail.orderName || "--" }} |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 商品列表 --> |
|
|
|
<view class="goods-section"> |
|
|
|
<view |
|
|
|
class="goods-item" |
|
|
|
v-for="goods in orderDetail.goodsList" |
|
|
|
v-for="goods in orderDetail.orderChildVos" |
|
|
|
:key="goods.id" |
|
|
|
> |
|
|
|
<view class="goods-checkbox"> |
|
|
|
<view class="checkbox-icon"> |
|
|
|
<image |
|
|
|
mode="aspectFill" |
|
|
|
src="https://picsum.photos/200/300" |
|
|
|
:src="showImgJdsz(goods.goodsImg.split(',')[0])" |
|
|
|
></image> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="goods-content"> |
|
|
|
<view class="goods-info"> |
|
|
|
<view class="goods-name">{{ goods.name }}</view> |
|
|
|
<view class="goods-desc">{{ |
|
|
|
goods.description || goods.spec |
|
|
|
}}</view> |
|
|
|
<view class="goods-quantity">数量:{{ goods.quantity || 1 }}</view> |
|
|
|
<view class="goods-name">{{ goods.goodsTitle || "-" }}</view> |
|
|
|
<view class="goods-desc">{{ getGoodsTypeName(goods.type) }}</view> |
|
|
|
<view class="goods-quantity">数量:{{ goods.num || 1 }}</view> |
|
|
|
</view> |
|
|
|
<view class="goods-actions"> |
|
|
|
<button |
|
|
|
v-if="goods.status==1" |
|
|
|
class="action-btn" |
|
|
|
:class="[getGoodsActionClass(goods.type)]" |
|
|
|
@click="handleGoodsAction(goods)" |
|
|
|
> |
|
|
|
{{ getGoodsActionText(goods.type) }} |
|
|
|
</button> |
|
|
|
<button |
|
|
|
v-else |
|
|
|
class="action-btn" |
|
|
|
@click="handleGoodsAction(goods)" |
|
|
|
> |
|
|
|
{{ getGoodsActionTexted(goods.type) }} |
|
|
|
</button> |
|
|
|
|
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -82,12 +57,14 @@ |
|
|
|
<view class="amount-summary"> |
|
|
|
<view class="summary-row"> |
|
|
|
<text class="summary-label">订单金额</text> |
|
|
|
<text class="summary-value">¥{{ orderDetail.goodsAmount }}</text> |
|
|
|
<text class="summary-value" |
|
|
|
>¥{{ orderDetail.payMoney || "0.00" }}</text |
|
|
|
> |
|
|
|
</view> |
|
|
|
<view class="summary-row"> |
|
|
|
<text class="summary-label">运费</text> |
|
|
|
<text class="summary-value" |
|
|
|
>¥{{ orderDetail.shippingFee || "5.00" }}</text |
|
|
|
>¥{{ orderDetail.postMoney || "0.00" }}</text |
|
|
|
> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -98,57 +75,51 @@ |
|
|
|
<view class="section-title">订单信息</view> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">订单编号:</text> |
|
|
|
<text class="info-value">{{ orderDetail.orderNo }}</text> |
|
|
|
<text class="info-value">{{ orderDetail.orderId }}</text> |
|
|
|
</view> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">权益码:</text> |
|
|
|
<text class="info-value">{{ orderDetail.activeCode }}</text> |
|
|
|
</view> |
|
|
|
<!-- <view class="info-row"> |
|
|
|
<text class="info-label">商品合计</text> |
|
|
|
<text class="info-value">{{ orderDetail.goodsAmount }}</text> |
|
|
|
</view> |
|
|
|
</view> --> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">物流运费</text> |
|
|
|
<text class="info-value">{{ orderDetail.shippingFee || "5.00" }}</text> |
|
|
|
<text class="info-value">{{ orderDetail.postMoney || "0.00" }}</text> |
|
|
|
</view> |
|
|
|
<view class="info-row"> |
|
|
|
<!-- <view class="info-row"> |
|
|
|
<text class="info-label">优惠券</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
orderDetail.discountAmount > 0 ? "无" : "无" |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
</view> --> |
|
|
|
<view class="info-row total"> |
|
|
|
<text class="info-label">合计实付</text> |
|
|
|
<text class="info-value total-amount">{{ |
|
|
|
orderDetail.totalAmount |
|
|
|
}}</text> |
|
|
|
<text class="info-value total-amount">{{ orderDetail.payMoney }}</text> |
|
|
|
</view> |
|
|
|
<view class="info-row"> |
|
|
|
<!-- <view class="info-row"> |
|
|
|
<text class="info-label">积分</text> |
|
|
|
<text class="info-value">{{ orderDetail.points || "已获得1分" }}</text> |
|
|
|
</view> |
|
|
|
<view class="info-row"> |
|
|
|
</view> --> |
|
|
|
<!-- <view class="info-row"> |
|
|
|
<text class="info-label">支付方式</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
orderDetail.payMethod || "线上支付" |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
</view> --> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">支付时间</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
formatTime(orderDetail.payTime) || formatTime(orderDetail.createTime) |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">预约发货时间</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
orderDetail.deliveryDate || formatTime(orderDetail.createTime) |
|
|
|
}}</text> |
|
|
|
<text class="info-value">{{ orderDetail.payTime }}</text> |
|
|
|
</view> |
|
|
|
<view class="info-row"> |
|
|
|
<!-- <view class="info-row"> |
|
|
|
<text class="info-label">实际发货时间</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
formatTime(orderDetail.shippingTime) || |
|
|
|
formatTime(orderDetail.createTime) |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
</view> --> |
|
|
|
<view class="info-row"> |
|
|
|
<text class="info-label">备注</text> |
|
|
|
<text class="info-value">{{ orderDetail.remark || "XXXX" }}</text> |
|
|
@ -199,6 +170,82 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 物流信息弹窗 --> |
|
|
|
<view |
|
|
|
class="logistics-popup-mask" |
|
|
|
v-if="showLogisticsPopup" |
|
|
|
@click="closeLogisticsPopup" |
|
|
|
> |
|
|
|
<view class="logistics-popup" @click.stop> |
|
|
|
<view class="popup-header"> |
|
|
|
<text class="popup-title">物流信息</text> |
|
|
|
<text class="popup-close" @click="closeLogisticsPopup">×</text> |
|
|
|
</view> |
|
|
|
<view class="popup-content"> |
|
|
|
<!-- 收货地址 --> |
|
|
|
<view class="logistics-section"> |
|
|
|
<view class="section-title">收货地址</view> |
|
|
|
<view class="address-info" v-if="currentLogisticsInfo"> |
|
|
|
<view class="address-detail"> |
|
|
|
<text class="address-text"> |
|
|
|
{{ currentLogisticsInfo.province |
|
|
|
}}{{ currentLogisticsInfo.city }}{{ currentLogisticsInfo.area |
|
|
|
}}{{ currentLogisticsInfo.address }} |
|
|
|
</text> |
|
|
|
</view> |
|
|
|
<view class="contact-info"> |
|
|
|
<text class="contact-name">{{ |
|
|
|
currentLogisticsInfo.linkName |
|
|
|
}}</text> |
|
|
|
<text class="contact-phone">{{ |
|
|
|
currentLogisticsInfo.phone |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 预约发货时间 --> |
|
|
|
<view class="logistics-section"> |
|
|
|
<view class="section-title">预约发货时间</view> |
|
|
|
<view class="info-item"> |
|
|
|
<text class="info-value">{{ |
|
|
|
currentLogisticsInfo.bookDeliveryTime || "--" |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 快递信息 --> |
|
|
|
<view class="logistics-section"> |
|
|
|
<view class="section-title">快递信息</view> |
|
|
|
<view class="info-item"> |
|
|
|
<text class="info-label">快递公司:</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
currentLogisticsInfo.expressName || "--" |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
<view class="info-item"> |
|
|
|
<text class="info-label">快递单号:</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
currentLogisticsInfo.expressCode || "--" |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
<view class="info-item"> |
|
|
|
<text class="info-label">实际发货时间:</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
currentLogisticsInfo.deliveryTime || "--" |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
<view class="info-item"> |
|
|
|
<text class="info-label">发货人:</text> |
|
|
|
<text class="info-value">{{ |
|
|
|
currentLogisticsInfo.deliveryUserName || "--" |
|
|
|
}}</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
@ -208,34 +255,15 @@ export default { |
|
|
|
return { |
|
|
|
orderId: "", |
|
|
|
showEquityPopup: false, |
|
|
|
orderDetail: { |
|
|
|
id: "", |
|
|
|
orderNo: "", |
|
|
|
status: 0, |
|
|
|
packageName: "", |
|
|
|
goodsList: [], |
|
|
|
totalAmount: "0.00", |
|
|
|
goodsAmount: "0.00", |
|
|
|
discountAmount: "0.00", |
|
|
|
shippingFee: "5.00", |
|
|
|
points: "", |
|
|
|
remark: "", |
|
|
|
deliveryDate: "", |
|
|
|
trackingNo: "", |
|
|
|
shippingTime: "", |
|
|
|
createTime: "", |
|
|
|
payTime: "", |
|
|
|
payMethod: "", |
|
|
|
equityCode: "", |
|
|
|
qrcode: "", |
|
|
|
address: null, |
|
|
|
}, |
|
|
|
showLogisticsPopup: false, // 物流信息弹窗 |
|
|
|
currentLogisticsInfo: null, // 当前物流信息 |
|
|
|
orderDetail: {}, |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
// 是否有实体商品需要收货 |
|
|
|
hasPhysicalGoods() { |
|
|
|
return this.orderDetail.goodsList.some((goods) => goods.type === 2); |
|
|
|
return this.orderDetail.orderChildVos.some((goods) => goods.type === 2); |
|
|
|
}, |
|
|
|
// 是否显示底部操作按钮 |
|
|
|
showBottomActions() { |
|
|
@ -255,9 +283,16 @@ export default { |
|
|
|
// 加载订单详情 |
|
|
|
async loadOrderDetail() { |
|
|
|
try { |
|
|
|
uni.showLoading({ title: "加载中..." }); |
|
|
|
const res = await this.getOrderDetail(this.orderId); |
|
|
|
this.Post({}, `/framework/order/${this.orderId}`, "DES").then((res) => { |
|
|
|
if (res.code == 200) { |
|
|
|
this.orderDetail = res.data; |
|
|
|
} else { |
|
|
|
uni.showToast({ |
|
|
|
title: res.msg, |
|
|
|
icon: "none", |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (error) { |
|
|
|
console.error("加载订单详情失败:", error); |
|
|
|
uni.showToast({ |
|
|
@ -270,65 +305,6 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
// 加载假数据 |
|
|
|
loadMockData() { |
|
|
|
this.orderDetail = { |
|
|
|
id: "mock001", |
|
|
|
orderNo: "238232342424234423", |
|
|
|
status: 2, // 待收货状态 |
|
|
|
packageName: "食在扬州|世界美食之都巡礼", |
|
|
|
packageId: "pkg001", |
|
|
|
totalAmount: "699.00", |
|
|
|
goodsAmount: "699.00", |
|
|
|
discountAmount: "0.00", |
|
|
|
shippingFee: "0.00", |
|
|
|
points: "已获得1分", |
|
|
|
remark: "XXXX", |
|
|
|
deliveryDate: "2025-08-10", |
|
|
|
trackingNo: "SF120025020202", |
|
|
|
shippingTime: "2025-07-15 01:46:25", |
|
|
|
createTime: "2025-07-15 00:46:25", |
|
|
|
payTime: "2025-07-15 00:46:25", |
|
|
|
payMethod: "线上支付", |
|
|
|
equityCode: "EPIC2024010112345", |
|
|
|
qrcode: "/static/image/qrcode-sample.png", |
|
|
|
goodsList: [ |
|
|
|
{ |
|
|
|
id: 1, |
|
|
|
name: "IP数字资产", |
|
|
|
type: 1, |
|
|
|
description: "在数字资产相册中查看", |
|
|
|
price: "99.00", |
|
|
|
quantity: 1, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 2, |
|
|
|
name: "IP文创公仔", |
|
|
|
type: 2, |
|
|
|
description: "这里是XXX相仿介绍介绍", |
|
|
|
price: "150.00", |
|
|
|
quantity: 1, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 3, |
|
|
|
name: "XXX园叮门票", |
|
|
|
type: 3, |
|
|
|
description: "这里是XXX园叮门票的介绍介绍介绍", |
|
|
|
price: "50.00", |
|
|
|
quantity: 1, |
|
|
|
}, |
|
|
|
], |
|
|
|
address: { |
|
|
|
name: "XX先生", |
|
|
|
phone: "183****1234", |
|
|
|
fullAddress: "江苏省苏州市姑苏区XXXXXX", |
|
|
|
province_text: "江苏省", |
|
|
|
city_text: "苏州市", |
|
|
|
district_text: "姑苏区", |
|
|
|
detail_addr: "XXXXXX", |
|
|
|
is_default: 1, |
|
|
|
}, |
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
|
// 获取状态图标 |
|
|
|
getStatusIcon(status) { |
|
|
@ -342,16 +318,16 @@ export default { |
|
|
|
return iconMap[status] || "/static/icon/status-default.png"; |
|
|
|
}, |
|
|
|
|
|
|
|
// 获取状态文本 |
|
|
|
getStatusText(status) { |
|
|
|
const statusMap = { |
|
|
|
0: "待使用", |
|
|
|
1: "待收货", |
|
|
|
0: "待激活", |
|
|
|
1: "待使用", |
|
|
|
2: "待收货", |
|
|
|
3: "已完成", |
|
|
|
4: "用户已驳回", |
|
|
|
4: "售后/退款", |
|
|
|
"-1": "取消", |
|
|
|
}; |
|
|
|
return statusMap[status] || "未知状态"; |
|
|
|
return statusMap[status] || "未知"; |
|
|
|
}, |
|
|
|
|
|
|
|
// 获取状态样式类 |
|
|
@ -368,6 +344,14 @@ export default { |
|
|
|
|
|
|
|
// 获取商品操作按钮文本 |
|
|
|
getGoodsActionText(type) { |
|
|
|
const textMap = { |
|
|
|
1: "去查看", |
|
|
|
2: "预约发货", |
|
|
|
3: "去使用", |
|
|
|
}; |
|
|
|
return textMap[type] || "去查看"; |
|
|
|
}, |
|
|
|
getGoodsActionTexted(type) { |
|
|
|
const textMap = { |
|
|
|
1: "去查看", |
|
|
|
2: "查看物流", |
|
|
@ -375,6 +359,14 @@ export default { |
|
|
|
}; |
|
|
|
return textMap[type] || "去查看"; |
|
|
|
}, |
|
|
|
showImgJdsz(img) { |
|
|
|
if (!img) return; |
|
|
|
if (img.indexOf("https://") != -1 || img.indexOf("http://") != -1) { |
|
|
|
return img; |
|
|
|
} else { |
|
|
|
return this.JDSU_IMG_URL + img; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 获取商品操作按钮样式 |
|
|
|
getGoodsActionClass(type) { |
|
|
@ -431,6 +423,79 @@ export default { |
|
|
|
this.showEquityPopup = false; |
|
|
|
}, |
|
|
|
|
|
|
|
// 处理商品操作 |
|
|
|
handleGoodsAction(goods) { |
|
|
|
switch (goods.type) { |
|
|
|
case 1: // IP数字资产 - 查看 |
|
|
|
this.viewDigitalAsset(goods); |
|
|
|
break; |
|
|
|
case 2: // IP资源商品 - 预约发货 |
|
|
|
this.reserveDelivery(goods); |
|
|
|
break; |
|
|
|
case 3: // 君道苏州门票 - 去使用 |
|
|
|
this.useTicket(goods); |
|
|
|
break; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 查看数字资产 |
|
|
|
viewDigitalAsset(goods) { |
|
|
|
// 跳转到数字资产详情页面 |
|
|
|
uni.showToast({ |
|
|
|
title: "查看数字资产", |
|
|
|
icon: "none", |
|
|
|
}); |
|
|
|
uni.navigateTo({ |
|
|
|
url: "/subPackages/memorialAlbum/detail", |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 预约发货 |
|
|
|
reserveDelivery(goods) { |
|
|
|
// 跳转到确认订单页面 |
|
|
|
uni.navigateTo({ |
|
|
|
url: `/subPackages/orderQy/confrim?goodsId=${goods.orderId}`, |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 使用门票 |
|
|
|
useTicket(goods) { |
|
|
|
// 处理使用门票逻辑 |
|
|
|
uni.showToast({ |
|
|
|
title: "使用门票", |
|
|
|
icon: "none", |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 显示物流信息 |
|
|
|
showLogisticsInfo(goods) { |
|
|
|
if (goods.orderExchangeVo) { |
|
|
|
this.currentLogisticsInfo = goods.orderExchangeVo; |
|
|
|
this.showLogisticsPopup = true; |
|
|
|
} else { |
|
|
|
uni.showToast({ |
|
|
|
title: "暂无物流信息", |
|
|
|
icon: "none", |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 关闭物流信息弹窗 |
|
|
|
closeLogisticsPopup() { |
|
|
|
this.showLogisticsPopup = false; |
|
|
|
this.currentLogisticsInfo = null; |
|
|
|
}, |
|
|
|
|
|
|
|
// 查看商品详情 |
|
|
|
viewGoodsDetail(goods) { |
|
|
|
// 根据商品类型跳转到不同页面 |
|
|
|
if (goods.type === 1) { |
|
|
|
uni.navigateTo({ |
|
|
|
url: `/subPackages/equityGoods/detail?id=${goods.goodsId}`, |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 复制权益码 |
|
|
|
copyEquityCode() { |
|
|
|
uni.setClipboardData({ |
|
|
@ -510,87 +575,6 @@ export default { |
|
|
|
).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`; |
|
|
|
}, |
|
|
|
|
|
|
|
// API接口 - 获取订单详情 |
|
|
|
async getOrderDetail(orderId) { |
|
|
|
// 模拟API数据 - 根据订单ID返回不同状态的数据 |
|
|
|
return new Promise((resolve) => { |
|
|
|
setTimeout(() => { |
|
|
|
// 根据订单ID模拟不同的订单状态 |
|
|
|
const statusMapping = { |
|
|
|
1: 0, // 待使用 |
|
|
|
2: 1, // 待收货 |
|
|
|
3: 2, // 待收货 |
|
|
|
4: 3, // 已完成 |
|
|
|
5: 4, // 用户已驳回 |
|
|
|
}; |
|
|
|
|
|
|
|
const orderStatus = statusMapping[orderId] || 1; |
|
|
|
|
|
|
|
const mockData = { |
|
|
|
code: 200, |
|
|
|
data: { |
|
|
|
id: orderId, |
|
|
|
orderNo: "238232342424234423", |
|
|
|
status: orderStatus, |
|
|
|
packageName: "食在扬州|世界美食之都巡礼", |
|
|
|
packageId: "pkg001", |
|
|
|
totalAmount: "699.00", |
|
|
|
goodsAmount: "699.00", |
|
|
|
discountAmount: "0.00", |
|
|
|
shippingFee: "0.00", |
|
|
|
points: "已获得1分", |
|
|
|
remark: "XXXX", |
|
|
|
deliveryDate: "2025-08-10", |
|
|
|
trackingNo: orderStatus >= 1 ? "SF120025020202" : "--", |
|
|
|
shippingTime: orderStatus >= 2 ? "2025-07-15 01:46:25" : "", |
|
|
|
createTime: "2025-07-15 00:46:25", |
|
|
|
payTime: orderStatus >= 1 ? "2025-07-15 00:46:25" : "", |
|
|
|
payMethod: "线上支付", |
|
|
|
equityCode: "EPIC2024010112345", |
|
|
|
qrcode: "/static/image/qrcode-sample.png", |
|
|
|
goodsList: [ |
|
|
|
{ |
|
|
|
id: 1, |
|
|
|
name: "IP数字资产", |
|
|
|
type: 1, |
|
|
|
description: "在数字资产相册中查看", |
|
|
|
price: "99.00", |
|
|
|
quantity: 1, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 2, |
|
|
|
name: "IP文创公仔", |
|
|
|
type: 2, |
|
|
|
description: "这里是XXX相仿介绍介绍", |
|
|
|
price: "150.00", |
|
|
|
quantity: 1, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 3, |
|
|
|
name: "XXX园叮门票", |
|
|
|
type: 3, |
|
|
|
description: "这里是XXX园叮门票的介绍介绍介绍", |
|
|
|
price: "50.00", |
|
|
|
quantity: 1, |
|
|
|
}, |
|
|
|
], |
|
|
|
address: { |
|
|
|
name: "XX先生", |
|
|
|
phone: "183****1234", |
|
|
|
fullAddress: "江苏省苏州市姑苏区XXXXXX", |
|
|
|
province_text: "江苏省", |
|
|
|
city_text: "苏州市", |
|
|
|
district_text: "姑苏区", |
|
|
|
detail_addr: "XXXXXX", |
|
|
|
is_default: 1, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
resolve(mockData); |
|
|
|
}, 500); |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// API接口 - 取消订单 |
|
|
|
async cancelOrderApi(orderId) { |
|
|
|
return new Promise((resolve) => { |
|
|
@ -994,4 +978,102 @@ export default { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #999; |
|
|
|
} |
|
|
|
|
|
|
|
// 物流信息弹窗 |
|
|
|
.logistics-popup-mask { |
|
|
|
position: fixed; |
|
|
|
top: 0; |
|
|
|
left: 0; |
|
|
|
right: 0; |
|
|
|
bottom: 0; |
|
|
|
background-color: rgba(0, 0, 0, 0.5); |
|
|
|
z-index: 9999; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
} |
|
|
|
|
|
|
|
.logistics-popup { |
|
|
|
width: 650rpx; |
|
|
|
max-height: 80vh; |
|
|
|
background-color: #fff; |
|
|
|
border-radius: 20rpx; |
|
|
|
overflow: hidden; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
} |
|
|
|
|
|
|
|
.logistics-popup .popup-content { |
|
|
|
padding: 30rpx; |
|
|
|
text-align: left; |
|
|
|
flex: 1; |
|
|
|
overflow-y: auto; |
|
|
|
} |
|
|
|
|
|
|
|
.logistics-section { |
|
|
|
margin-bottom: 30rpx; |
|
|
|
|
|
|
|
&:last-child { |
|
|
|
margin-bottom: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.logistics-section .section-title { |
|
|
|
font-size: 28rpx; |
|
|
|
font-weight: 600; |
|
|
|
color: #333; |
|
|
|
margin-bottom: 16rpx; |
|
|
|
border-left: 4rpx solid #007aff; |
|
|
|
padding-left: 16rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.address-info { |
|
|
|
background-color: #f8f9fa; |
|
|
|
border-radius: 12rpx; |
|
|
|
padding: 20rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.address-detail { |
|
|
|
margin-bottom: 12rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.address-text { |
|
|
|
font-size: 26rpx; |
|
|
|
color: #333; |
|
|
|
line-height: 1.5; |
|
|
|
} |
|
|
|
|
|
|
|
.contact-info { |
|
|
|
display: flex; |
|
|
|
gap: 20rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.contact-name, |
|
|
|
.contact-phone { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #666; |
|
|
|
} |
|
|
|
|
|
|
|
.info-item { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
margin-bottom: 12rpx; |
|
|
|
|
|
|
|
&:last-child { |
|
|
|
margin-bottom: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.info-label { |
|
|
|
font-size: 26rpx; |
|
|
|
color: #666; |
|
|
|
min-width: 160rpx; |
|
|
|
flex-shrink: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.info-value { |
|
|
|
font-size: 26rpx; |
|
|
|
color: #333; |
|
|
|
flex: 1; |
|
|
|
} |
|
|
|
</style> |
|
|
|