feat:0905优惠券多物流信息

This commit is contained in:
2026-09-05 16:11:42 +08:00
parent b1d3ec9b2f
commit 75060faa39
14 changed files with 825 additions and 233 deletions
@@ -92,17 +92,49 @@
<view class="content_right_quantity">x{{ pItem.buyNum }}</view>
</view>
</view>
<view class="content_other_item">
<view class="data_item data_item_yd" v-if="pItem.expressNo">
<view class="item_title">运单号:</view>
<view class="item_value">
<view>{{ pItem.expressNo }} </view>
<view style="margin-left: 10rpx">
<up-image src="/static/common/copy.png" width="14" height="14"
bgColor="#f1f6ff00" @click="copyData(pItem.expressNo)"></up-image>
<view class="express_card_box">
<template v-if="orderInfo.orderPackages && orderInfo.orderPackages.length > 0">
<view class="express_header_row">
<view class="express_title">运单号</view>
<view
class="express_toggle_btn"
v-if="orderInfo.orderPackages.length > 1"
@click="isExpandExpress = !isExpandExpress"
>
<text>{{ isExpandExpress ? '收起' : `展开全部(${orderInfo.orderPackages.length})` }}</text>
<u-icon :name="isExpandExpress ? 'arrow-up' : 'arrow-down'" color="#7934F6" size="12" style="margin-left: 4rpx;"></u-icon>
</view>
</view>
</view>
<view
class="express_item_row"
v-for="(pkg, pkgIdx) in (isExpandExpress ? orderInfo.orderPackages : orderInfo.orderPackages.slice(0, 1))"
:key="pkg.id || pkgIdx"
>
<view class="express_info_text">
<text class="express_name_tag" v-if="pkg.expressName">{{ pkg.expressName }}</text>
<text class="express_no_num">{{ pkg.expressNo }}</text>
</view>
<view class="express_copy_btn" @click="copyData(pkg.expressNo)">
<up-image src="/static/common/copy.png" width="12" height="12" bgColor="#f1f6ff00"></up-image>
<text class="copy_text">复制</text>
</view>
</view>
</template>
<template v-else-if="pItem.expressNo">
<view class="express_header_row">
<view class="express_title">运单号</view>
</view>
<view class="express_item_row">
<view class="express_info_text">
<text class="express_no_num">{{ pItem.expressNo }}</text>
</view>
<view class="express_copy_btn" @click="copyData(pItem.expressNo)">
<up-image src="/static/common/copy.png" width="12" height="12" bgColor="#f1f6ff00"></up-image>
<text class="copy_text">复制</text>
</view>
</view>
</template>
</view>
</view>
</view>
@@ -193,6 +225,10 @@
<view class="operate_comm operate_but_2" v-if="orderInfo.status === ORDER_TYPE.UNPAID" @click="goPay">去付款
</view>
<!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.COMPLETED">申请退款</view> -->
<view class="operate_comm operate_but_1" style="border-color: #7732ff" v-if="orderInfo.status === ORDER_TYPE.NOT_RECEIVE"
@click="onExpress(orderInfo.id)">
<text class="text-zi">查看物流</text>
</view>
<view class="operate_comm operate_but_2" v-if="orderInfo.status === ORDER_TYPE.NOT_RECEIVE"
@click="confirmReceiptOk(orderInfo)">确认收货</view>
<!-- <view class="operate_comm operate_but_3" v-if="orderInfo.status === ORDER_TYPE.UNSHIPPED">提醒发货</view> -->
@@ -282,7 +318,8 @@ export default {
height: "100vh",
isShowBalance: false,
qrcodeVal: '',
returnType: 1
returnType: 1,
isExpandExpress: false
};
},
onLoad(options) {
@@ -431,6 +468,11 @@ export default {
// 处理支付失败后的逻辑,如提示用户等
}
},
onExpress(itemId) {
uni.navigateTo({
url: `/pages/rwa_package/express/express?id=${itemId}`,
});
},
/**
* 确认收货
*/
@@ -742,4 +784,87 @@ export default {
display: flex;
justify-content: left;
}
.express_card_box {
background-color: #F8F9FB;
border-radius: 16rpx;
padding: 20rpx 24rpx;
margin-top: 24rpx;
.express_header_row {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 14rpx;
.express_title {
font-size: 26rpx;
font-weight: 600;
color: #333333;
}
.express_toggle_btn {
display: flex;
align-items: center;
background-color: #F2E9FF;
padding: 6rpx 20rpx;
border-radius: 24rpx;
font-size: 22rpx;
color: #7934F6;
font-weight: 500;
}
}
.express_item_row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16rpx 0 4rpx 0;
border-top: 1rpx dashed #E5E7EB;
&:first-of-type {
border-top: none;
padding-top: 0;
}
.express_info_text {
font-size: 26rpx;
color: #333333;
display: flex;
align-items: center;
.express_name_tag {
font-size: 22rpx;
color: #7934F6;
background-color: #F2E9FF;
padding: 2rpx 12rpx;
border-radius: 6rpx;
margin-right: 12rpx;
font-weight: 500;
}
.express_no_num {
font-weight: 500;
color: #333333;
letter-spacing: 0.5rpx;
}
}
.express_copy_btn {
display: flex;
align-items: center;
padding: 6rpx 16rpx;
border-radius: 20rpx;
background-color: #FFFFFF;
border: 1rpx solid #E2E4E8;
cursor: pointer;
.copy_text {
font-size: 22rpx;
color: #666666;
margin-left: 6rpx;
}
}
}
}
</style>
@@ -29,7 +29,7 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5: WRITE_EXTERNAL_STORAGE / READ_EXTERNAL_STORAGE / 相册权限:读写外部存储及相册。用于缓存应用数据、保存图片至本地或读取上传所需的图片/文件。例如:当您发布评价或更换头像时,需要访问相册选择图片;当您分享商品海报时,需要将海报保存到您的手机相册。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6: VIBRATE:允许手机震动。用于在接收到重要通知或特定交互时提供震动反馈。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7: WAKE_LOCK:唤醒锁定。用于在执行重要后台任务(如文件下载、数据同步)时防止手机进入休眠状态。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8: RECORD_AUDIO / 麦克风(录音)权限:允许应用访问麦克风进行音频录制。用于在您使用在线客服发送语音消息、语音搜索或按键语音开单等功能时录制您的声音信息。例如:当您在全媒体智能客服页面按住“按住说话”按钮发送语音消息时,我们需要调用麦克风权限采集音频。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8: RECORD_AUDIO / 麦克风(录音)权限:允许应用访问麦克风进行音频录制。用于快速语音输入,实时语音记录等服务。例如:当您使用语音输入或在线客服发送语音消息时,我们需要调用麦克风权限采集音频。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;哪些信息会被收集以及我们如何使用这些信息?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;收集的信息类别<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了向您提供我们的服务,我们会要求您提供服务所必需的个人信息。
@@ -6,7 +6,8 @@
<view class="info_warp">
<view v-if="form.category !== 'redpacket' && infoList.length > 1">
<view class="info_title_warp">
<view :class="selInfo === item.key ? 'info_title_item_warp info_title_item_sel_warp' : 'info_title_item_warp'"
<view
:class="selInfo === item.key ? 'info_title_item_warp info_title_item_sel_warp' : 'info_title_item_warp'"
v-for="item in infoList" :key="item.key" @click="selectInfo(item)">
<text>{{ item.name }}</text>
<view class="info_title_item_sel_but_warp" v-if="selInfo === item.key"></view>
@@ -27,32 +28,35 @@
</view>
<view class="line"></view>
</view>
<view v-if="source.length ">
<view v-if="source.length">
<view class="icon-top-view" v-if="form.category == 'expend' || form.category == 'balance'">
<view class="top-view">
<view class="top-left-view">
<text class="text-36 text-gray text-bold">{{headerData[source[0].key]}}</text>
<text class="text-24 text-fu1">{{source[0].name}}</text>
<text class="text-36 text-gray text-bold" style="margin-top:40rpx">{{headerData[source[2].key]}}</text>
<text class="text-24 text-fu1">{{source[2].name}}</text>
<text class="text-36 text-gray text-bold">{{ headerData[source[0].key] }}</text>
<text class="text-24 text-fu1">{{ source[0].name }}</text>
<text class="text-36 text-gray text-bold"
style="margin-top:40rpx">{{ headerData[source[2].key] }}</text>
<text class="text-24 text-fu1">{{ source[2].name }}</text>
</view>
<view class="top-left-view" style="border-width: 0;">
<text class="text-36 text-gray text-bold">{{headerData[source[1].key]}}</text>
<text class="text-24 text-fu1">{{source[1].name}}</text>
<text class="text-36 text-gray text-bold" style="margin-top:40rpx">{{headerData[source[3].key]}}</text>
<text class="text-24 text-fu1">{{source[3].name}}</text>
<text class="text-36 text-gray text-bold">{{ headerData[source[1].key] }}</text>
<text class="text-24 text-fu1">{{ source[1].name }}</text>
<text class="text-36 text-gray text-bold"
style="margin-top:40rpx">{{ headerData[source[3].key] }}</text>
<text class="text-24 text-fu1">{{ source[3].name }}</text>
</view>
</view>
</view>
<view class="icon-top-view" style="height:178rpx;min-height:178rpx;margin-top:24rpx" v-if="form.category == 'vcoin'">
<view class="icon-top-view" style="height:178rpx;min-height:178rpx;margin-top:24rpx"
v-if="form.category == 'vcoin'">
<view class="top-view">
<view class="top-left-view">
<text class="text-36 text-gray text-bold">{{headerData[source[0].key]}}</text>
<text class="text-24 text-fu1">{{source[0].name}}</text>
<text class="text-36 text-gray text-bold">{{ headerData[source[0].key] }}</text>
<text class="text-24 text-fu1">{{ source[0].name }}</text>
</view>
<view class="top-left-view" style="border-width: 0;">
<text class="text-36 text-gray text-bold">{{headerData[source[1].key]}}</text>
<text class="text-24 text-fu1">{{source[1].name}}</text>
<text class="text-36 text-gray text-bold">{{ headerData[source[1].key] }}</text>
<text class="text-24 text-fu1">{{ source[1].name }}</text>
</view>
</view>
</view>
@@ -67,15 +71,18 @@
v-if="orderList && orderList.length !== 0">
<view class="purse_info_left">
<!-- <up-image :src="item.type === 1? 'https://static.tbmall.xin/static/mine/purse_sf.png' : 'https://static.tbmall.xin/static/mine/purse_xf.png'" width="40" height="40" bgColor="#f1f6ff00"></up-image> -->
<up-image :src="item.amount > 0 ? 'https://static.tbmall.xin/static/mine/zhen.png' : 'https://static.tbmall.xin/static/mine/fu.png'" width="32" height="32" bgColor="#f1f6ff00"></up-image>
<up-image
:src="item.amount > 0 ? 'https://static.tbmall.xin/static/mine/zhen.png' : 'https://static.tbmall.xin/static/mine/fu.png'"
width="32" height="32" bgColor="#f1f6ff00"></up-image>
<view class="purse_data_warp">
<view class="purse_info_name">{{ getValue(BALANCE_TYPE, item.type) }}</view>
<view class="purse_info_value">{{ formatDate(item.ctdate) }}</view>
</view>
</view>
<view class="ipurse_nfo_right">
<view class="purse_info_title" style="text-align: end;">{{ handleAmount(item.amount) }}</view>
<view class="purse_info_title" style="text-align: end;">{{ handleAmount(item.amount) }}
</view>
<view class="purse_info_value">{{ item.remark }}</view>
</view>
</view>
@@ -169,8 +176,8 @@ export default {
name: "总分享金额",
key: "totalBonus"
},
];
}
@@ -187,7 +194,7 @@ export default {
key: "lockAmount"
},
{
name: "分红",
name: "消费者权益",
key: "bonusAmount"
},
@@ -381,7 +388,7 @@ export default {
this.form.page = 1;
this.selInfo = item.key;
let id = 0;
if (item.key === "cur") {
id = this.curId;
}
@@ -453,33 +460,36 @@ export default {
</script>
<style lang="scss">
.icon-top-view{
width:100%;
height:298rpx;
min-height:298rpx;
box-sizing: border-box;
padding: 0 32rpx;
.icon-top-view {
width: 100%;
height: 298rpx;
min-height: 298rpx;
box-sizing: border-box;
padding: 0 32rpx;
display: flex;
.top-view {
width: 100%;
height: 100%;
display: flex;
.top-view{
width:100%;
height:100%;
border-radius: 12rpx;
border: 2rpx solid rgba(121, 52, 246, 0.08);
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 52rpx 0;
box-sizing: border-box;
.top-left-view {
flex: 1;
display: flex;
border-radius: 12rpx;
border: 2rpx solid rgba(121,52,246,0.08);
flex-direction: row;
justify-content: space-between;
flex-direction: column;
align-items: center;
padding: 52rpx 0;
box-sizing: border-box;
.top-left-view{
flex:1;
display: flex;
flex-direction: column;
align-items: center;
border-right: 2px solid #F5F5F5;
}
border-right: 2px solid #F5F5F5;
}
}
}
.mine_purse_log_warp {
height: calc(100vh - var(--status-bar-height));
overflow-y: hidden;