feat:0905优惠券多物流信息
This commit is contained in:
@@ -13,8 +13,9 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="product_item_price">
|
<view class="product_item_price">
|
||||||
<view class="price_">
|
<view class="price_">
|
||||||
|
<text v-if="item.couponPrice">券后</text>
|
||||||
<text>¥</text>
|
<text>¥</text>
|
||||||
<text style="color: 36rpx">{{ item.price }}</text>
|
<text style="color: 36rpx">{{ item.couponPrice || item.price }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="price_sell">全网销量{{ limit999(item.sales) }}件</view>
|
<view class="price_sell">全网销量{{ limit999(item.sales) }}件</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
<view class="seckill_card_container" @click="onSelectProct(item)">
|
<view class="seckill_card_container" @click="onSelectProct(item)">
|
||||||
<!-- Left side image with optional countdown overlay -->
|
<!-- Left side image with optional countdown overlay -->
|
||||||
<view class="seckill_card_left">
|
<view class="seckill_card_left">
|
||||||
<up-image :lazy-load="true" :src="item.url || item.image || item.accessUrl" width="220rpx" height="220rpx" bgColor="#f1f6ff00"
|
<up-image :lazy-load="true" :src="item.url || item.image || item.accessUrl" width="220rpx" height="220rpx"
|
||||||
shape="square" radius="16rpx"></up-image>
|
bgColor="#f1f6ff00" shape="square" radius="16rpx"></up-image>
|
||||||
<view class="countdown_bar" v-if="showCountdown && countdownText">
|
<view class="countdown_bar" v-if="showCountdown && countdownText">
|
||||||
<text class="countdown_text">{{ countdownText }}</text>
|
<text class="countdown_text">{{ countdownText }}</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -37,11 +37,11 @@
|
|||||||
<!-- Price and action card row -->
|
<!-- Price and action card row -->
|
||||||
<view class="price_action_row">
|
<view class="price_action_row">
|
||||||
<view class="price_section">
|
<view class="price_section">
|
||||||
|
<text class="price_symbol" v-if="item.couponPrice">券后</text>
|
||||||
<text class="price_symbol">¥</text>
|
<text class="price_symbol">¥</text>
|
||||||
<text class="price_integer">{{ item.price }}</text>
|
<text class="price_integer">{{ item.couponPrice || item.price }}</text>
|
||||||
<text class="original_price seckill">{{ `${attributes.leftTime ?
|
<text class="original_price seckill">{{ `${attributes.leftTime ?
|
||||||
`只剩${attributes.leftTime}` : ''}` }}</text>
|
`只剩${attributes.leftTime}` : ''}` }}</text>
|
||||||
<!-- <text class="original_price" v-else>¥{{ formatOriginalPrice }}</text> -->
|
|
||||||
</view>
|
</view>
|
||||||
<!-- Alarm clock button -->
|
<!-- Alarm clock button -->
|
||||||
<view class="alarm_btn_wrapper">
|
<view class="alarm_btn_wrapper">
|
||||||
|
|||||||
@@ -33,7 +33,18 @@
|
|||||||
|
|
||||||
<!-- 无优惠券/现金价格 -->
|
<!-- 无优惠券/现金价格 -->
|
||||||
<view class="price-action-row" v-else>
|
<view class="price-action-row" v-else>
|
||||||
<view class="price-left">
|
<view class="price-left" v-if="obj.couponPrice">
|
||||||
|
<view class="price-main">
|
||||||
|
<text class="price-symbol">券后¥</text>
|
||||||
|
<text class="price-num">{{ obj.couponPrice }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="price-sub">
|
||||||
|
|
||||||
|
<text class="sales-text" v-if="hasSales">全网销量{{ limit999(obj.sales) }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="price-left" v-else>
|
||||||
<view class="price-main">
|
<view class="price-main">
|
||||||
<text class="price-symbol">¥</text>
|
<text class="price-symbol">¥</text>
|
||||||
<text class="price-num">{{ obj.price }}</text>
|
<text class="price-num">{{ obj.price }}</text>
|
||||||
|
|||||||
@@ -5,105 +5,118 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="shop-right-view">
|
<view class="shop-right-view">
|
||||||
<view class="shop-top-img">
|
<view class="shop-top-img">
|
||||||
<image src="https://static.tbmall.xin/static/home/xyx.png" style="width: 122rpx;height: 28rpx;margin-right: 12rpx;"></image>
|
<image src="https://static.tbmall.xin/static/home/xyx.png"
|
||||||
<image src="https://static.tbmall.xin/static/home/xs.png" v-if="obj.limitedTime " style="width: 52rpx;height: 28rpx;margin-right: 12rpx;"></image>
|
style="width: 122rpx;height: 28rpx;margin-right: 12rpx;"></image>
|
||||||
<image src="https://static.tbmall.xin/static/home/tg.png" v-if="obj.tag" style="width: 80rpx;height: 28rpx;"></image>
|
<image src="https://static.tbmall.xin/static/home/xs.png" v-if="obj.limitedTime"
|
||||||
|
style="width: 52rpx;height: 28rpx;margin-right: 12rpx;"></image>
|
||||||
|
<image src="https://static.tbmall.xin/static/home/tg.png" v-if="obj.tag"
|
||||||
|
style="width: 80rpx;height: 28rpx;"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="right-top-view text-overflow1">
|
<view class="right-top-view text-overflow1">
|
||||||
<text class="text-32 text-bold text-zu text-overflow1">{{obj.title}}</text>
|
<text class="text-32 text-bold text-zu text-overflow1">{{ obj.title }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="shop-price" @ok.stop="onClick" >
|
<view class="shop-price" @ok.stop="onClick">
|
||||||
<view class="price-left"><text style="font-size: 24rpx;">¥</text>{{obj.price}}</view>
|
<view class="price-left"><text style="font-size: 24rpx;">¥</text>{{ obj.couponPrice || obj.price }}
|
||||||
<view class="price-center">专区立省{{ Number(obj.adPrice) - Number(obj.price) }}元</view>
|
</view>
|
||||||
<image src="https://static.tbmall.xin/static/home/qiang.png" style="width: 80rpx;height: 80rpx;"></image>
|
<view class="price-center">专区立省{{ Number(obj.adPrice) - Number(obj.price) }}元</view>
|
||||||
|
<image src="https://static.tbmall.xin/static/home/qiang.png" style="width: 80rpx;height: 80rpx;">
|
||||||
|
</image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import MyBtn from '@/components/common/my-btn.vue'
|
import MyBtn from '@/components/common/my-btn.vue'
|
||||||
export default {
|
export default {
|
||||||
components:{MyBtn},
|
components: { MyBtn },
|
||||||
props:{
|
props: {
|
||||||
obj:{
|
obj: {
|
||||||
type:Object,
|
type: Object,
|
||||||
default:()=>{}
|
default: () => { }
|
||||||
},
|
|
||||||
},
|
},
|
||||||
mounted(){
|
},
|
||||||
},
|
mounted() {
|
||||||
methods: {
|
},
|
||||||
onClick(){
|
methods: {
|
||||||
this.$emit('ok',this.obj.id);
|
onClick() {
|
||||||
}
|
this.$emit('ok', this.obj.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.shop-view{
|
.shop-view {
|
||||||
width: 700rpx;
|
width: 700rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
|
||||||
|
.shop-left-view {
|
||||||
|
min-width: 216rpx;
|
||||||
|
min-height: 216rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: center;
|
||||||
padding: 20rpx;
|
|
||||||
box-sizing: border-box;
|
image {
|
||||||
background-color: #fff;
|
width: 220rpx;
|
||||||
border-radius: 16rpx;
|
height: 220rpx;
|
||||||
.shop-left-view{
|
border-radius: 8rpx;
|
||||||
min-width:216rpx;
|
}
|
||||||
min-height:216rpx;
|
}
|
||||||
|
|
||||||
|
.shop-right-view {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
min-height: 216rpx;
|
||||||
|
margin-left: 24rpx;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
|
||||||
|
.shop-top-img {
|
||||||
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: flex-start;
|
||||||
image{
|
|
||||||
width:220rpx;
|
image {
|
||||||
height:220rpx;
|
width: 100%;
|
||||||
border-radius: 8rpx;
|
height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.shop-right-view{
|
|
||||||
width:100%;
|
.right-top-view {
|
||||||
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
min-height:216rpx;
|
|
||||||
margin-left:24rpx;
|
}
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-around;
|
.shop-price {
|
||||||
.shop-top-img{
|
background: linear-gradient(270deg, #F0E7FE 0%, rgba(240, 231, 254, 0) 100%);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
height: 80rpx;
|
||||||
align-items: center;
|
display: flex;
|
||||||
justify-content: flex-start;
|
justify-content: space-between;
|
||||||
image{
|
align-items: center;
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
.price-left {
|
||||||
}
|
font-weight: bold;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #7934F6;
|
||||||
}
|
}
|
||||||
.right-top-view{
|
|
||||||
width:100%;
|
.price-center {
|
||||||
display: flex;
|
font-size: 20rpx;
|
||||||
|
color: #7934F6;
|
||||||
}
|
|
||||||
.shop-price{
|
|
||||||
background: linear-gradient( 270deg, #F0E7FE 0%, rgba(240,231,254,0) 100%);
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
.price-left{
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #7934F6;
|
|
||||||
}
|
|
||||||
.price-center{
|
|
||||||
font-size: 20rpx;
|
|
||||||
color: #7934F6;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+4
-2
@@ -49,7 +49,8 @@
|
|||||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>"
|
||||||
],
|
],
|
||||||
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
|
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
|
||||||
"targetSdkVersion" : 30,
|
"targetSdkVersion" : 30,
|
||||||
@@ -74,7 +75,8 @@
|
|||||||
"privacyDescription" : {
|
"privacyDescription" : {
|
||||||
"NSPhotoLibraryUsageDescription" : "App需要您的同意才能访问相册,以便您选择本地图片上传头像或发布商品评价。例如:当您修改个人头像或发布带图评价时,需要从相册选择图片。",
|
"NSPhotoLibraryUsageDescription" : "App需要您的同意才能访问相册,以便您选择本地图片上传头像或发布商品评价。例如:当您修改个人头像或发布带图评价时,需要从相册选择图片。",
|
||||||
"NSPhotoLibraryAddUsageDescription" : "App需要您的同意才能添加图片到相册,以便您保存商品海报或图片到本地。例如:当您点击保存商品分享海报时,需要写入相册权限。",
|
"NSPhotoLibraryAddUsageDescription" : "App需要您的同意才能添加图片到相册,以便您保存商品海报或图片到本地。例如:当您点击保存商品分享海报时,需要写入相册权限。",
|
||||||
"NSCameraUsageDescription" : "App需要您的同意才能访问相机,以便您拍摄图片上传头像或发布商品评价。例如:当您修改个人头像或发布带图评价时,需要使用相机拍摄照片。"
|
"NSCameraUsageDescription" : "App需要您的同意才能访问相机,以便您拍摄图片上传头像或发布商品评价。例如:当您修改个人头像或发布带图评价时,需要使用相机拍摄照片。",
|
||||||
|
"NSMicrophoneUsageDescription" : "App需要您的同意才能访问麦克风,用于快速语音输入,实时语音记录等服务。例如:当您使用语音输入或发送语音消息时,需要调用麦克风权限。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/* SDK配置 */
|
/* SDK配置 */
|
||||||
|
|||||||
@@ -92,17 +92,49 @@
|
|||||||
<view class="content_right_quantity">x{{ pItem.buyNum }}</view>
|
<view class="content_right_quantity">x{{ pItem.buyNum }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="content_other_item">
|
<view class="express_card_box">
|
||||||
<view class="data_item data_item_yd" v-if="pItem.expressNo">
|
<template v-if="orderInfo.orderPackages && orderInfo.orderPackages.length > 0">
|
||||||
<view class="item_title">运单号:</view>
|
<view class="express_header_row">
|
||||||
<view class="item_value">
|
<view class="express_title">运单号</view>
|
||||||
<view>{{ pItem.expressNo }} </view>
|
<view
|
||||||
<view style="margin-left: 10rpx">
|
class="express_toggle_btn"
|
||||||
<up-image src="/static/common/copy.png" width="14" height="14"
|
v-if="orderInfo.orderPackages.length > 1"
|
||||||
bgColor="#f1f6ff00" @click="copyData(pItem.expressNo)"></up-image>
|
@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>
|
||||||
</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>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -193,6 +225,10 @@
|
|||||||
<view class="operate_comm operate_but_2" v-if="orderInfo.status === ORDER_TYPE.UNPAID" @click="goPay">去付款
|
<view class="operate_comm operate_but_2" v-if="orderInfo.status === ORDER_TYPE.UNPAID" @click="goPay">去付款
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.COMPLETED">申请退款</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"
|
<view class="operate_comm operate_but_2" v-if="orderInfo.status === ORDER_TYPE.NOT_RECEIVE"
|
||||||
@click="confirmReceiptOk(orderInfo)">确认收货</view>
|
@click="confirmReceiptOk(orderInfo)">确认收货</view>
|
||||||
<!-- <view class="operate_comm operate_but_3" v-if="orderInfo.status === ORDER_TYPE.UNSHIPPED">提醒发货</view> -->
|
<!-- <view class="operate_comm operate_but_3" v-if="orderInfo.status === ORDER_TYPE.UNSHIPPED">提醒发货</view> -->
|
||||||
@@ -282,7 +318,8 @@ export default {
|
|||||||
height: "100vh",
|
height: "100vh",
|
||||||
isShowBalance: false,
|
isShowBalance: false,
|
||||||
qrcodeVal: '',
|
qrcodeVal: '',
|
||||||
returnType: 1
|
returnType: 1,
|
||||||
|
isExpandExpress: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
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;
|
display: flex;
|
||||||
justify-content: left;
|
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>
|
</style>
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
5: WRITE_EXTERNAL_STORAGE / READ_EXTERNAL_STORAGE / 相册权限:读写外部存储及相册。用于缓存应用数据、保存图片至本地或读取上传所需的图片/文件。例如:当您发布评价或更换头像时,需要访问相册选择图片;当您分享商品海报时,需要将海报保存到您的手机相册。<br />
|
5: WRITE_EXTERNAL_STORAGE / READ_EXTERNAL_STORAGE / 相册权限:读写外部存储及相册。用于缓存应用数据、保存图片至本地或读取上传所需的图片/文件。例如:当您发布评价或更换头像时,需要访问相册选择图片;当您分享商品海报时,需要将海报保存到您的手机相册。<br />
|
||||||
6: VIBRATE:允许手机震动。用于在接收到重要通知或特定交互时提供震动反馈。<br />
|
6: VIBRATE:允许手机震动。用于在接收到重要通知或特定交互时提供震动反馈。<br />
|
||||||
7: WAKE_LOCK:唤醒锁定。用于在执行重要后台任务(如文件下载、数据同步)时防止手机进入休眠状态。<br />
|
7: WAKE_LOCK:唤醒锁定。用于在执行重要后台任务(如文件下载、数据同步)时防止手机进入休眠状态。<br />
|
||||||
8: RECORD_AUDIO / 麦克风(录音)权限:允许应用访问麦克风进行音频录制。用于在您使用在线客服发送语音消息、语音搜索或按键语音开单等功能时录制您的声音信息。例如:当您在全媒体智能客服页面按住“按住说话”按钮发送语音消息时,我们需要调用麦克风权限采集音频。<br />
|
8: RECORD_AUDIO / 麦克风(录音)权限:允许应用访问麦克风进行音频录制。用于快速语音输入,实时语音记录等服务。例如:当您使用语音输入或在线客服发送语音消息时,我们需要调用麦克风权限采集音频。<br />
|
||||||
哪些信息会被收集以及我们如何使用这些信息?<br />
|
哪些信息会被收集以及我们如何使用这些信息?<br />
|
||||||
收集的信息类别<br />
|
收集的信息类别<br />
|
||||||
为了向您提供我们的服务,我们会要求您提供服务所必需的个人信息。
|
为了向您提供我们的服务,我们会要求您提供服务所必需的个人信息。
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
<view class="info_warp">
|
<view class="info_warp">
|
||||||
<view v-if="form.category !== 'redpacket' && infoList.length > 1">
|
<view v-if="form.category !== 'redpacket' && infoList.length > 1">
|
||||||
<view class="info_title_warp">
|
<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)">
|
v-for="item in infoList" :key="item.key" @click="selectInfo(item)">
|
||||||
<text>{{ item.name }}</text>
|
<text>{{ item.name }}</text>
|
||||||
<view class="info_title_item_sel_but_warp" v-if="selInfo === item.key"></view>
|
<view class="info_title_item_sel_but_warp" v-if="selInfo === item.key"></view>
|
||||||
@@ -27,32 +28,35 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
</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="icon-top-view" v-if="form.category == 'expend' || form.category == 'balance'">
|
||||||
<view class="top-view">
|
<view class="top-view">
|
||||||
<view class="top-left-view">
|
<view class="top-left-view">
|
||||||
<text class="text-36 text-gray text-bold">{{headerData[source[0].key]}}</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-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-36 text-gray text-bold"
|
||||||
<text class="text-24 text-fu1">{{source[2].name}}</text>
|
style="margin-top:40rpx">{{ headerData[source[2].key] }}</text>
|
||||||
|
<text class="text-24 text-fu1">{{ source[2].name }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="top-left-view" style="border-width: 0;">
|
<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-36 text-gray text-bold">{{ headerData[source[1].key] }}</text>
|
||||||
<text class="text-24 text-fu1">{{source[1].name}}</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-36 text-gray text-bold"
|
||||||
<text class="text-24 text-fu1">{{source[3].name}}</text>
|
style="margin-top:40rpx">{{ headerData[source[3].key] }}</text>
|
||||||
|
<text class="text-24 text-fu1">{{ source[3].name }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</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-view">
|
||||||
<view class="top-left-view">
|
<view class="top-left-view">
|
||||||
<text class="text-36 text-gray text-bold">{{headerData[source[0].key]}}</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-24 text-fu1">{{ source[0].name }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="top-left-view" style="border-width: 0;">
|
<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-36 text-gray text-bold">{{ headerData[source[1].key] }}</text>
|
||||||
<text class="text-24 text-fu1">{{source[1].name}}</text>
|
<text class="text-24 text-fu1">{{ source[1].name }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -67,15 +71,18 @@
|
|||||||
v-if="orderList && orderList.length !== 0">
|
v-if="orderList && orderList.length !== 0">
|
||||||
<view class="purse_info_left">
|
<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.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_data_warp">
|
||||||
<view class="purse_info_name">{{ getValue(BALANCE_TYPE, item.type) }}</view>
|
<view class="purse_info_name">{{ getValue(BALANCE_TYPE, item.type) }}</view>
|
||||||
<view class="purse_info_value">{{ formatDate(item.ctdate) }}</view>
|
<view class="purse_info_value">{{ formatDate(item.ctdate) }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="ipurse_nfo_right">
|
<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 class="purse_info_value">{{ item.remark }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -169,8 +176,8 @@ export default {
|
|||||||
name: "总分享金额",
|
name: "总分享金额",
|
||||||
key: "totalBonus"
|
key: "totalBonus"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,7 +194,7 @@ export default {
|
|||||||
key: "lockAmount"
|
key: "lockAmount"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "分红",
|
name: "消费者权益",
|
||||||
key: "bonusAmount"
|
key: "bonusAmount"
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -381,7 +388,7 @@ export default {
|
|||||||
this.form.page = 1;
|
this.form.page = 1;
|
||||||
this.selInfo = item.key;
|
this.selInfo = item.key;
|
||||||
let id = 0;
|
let id = 0;
|
||||||
|
|
||||||
if (item.key === "cur") {
|
if (item.key === "cur") {
|
||||||
id = this.curId;
|
id = this.curId;
|
||||||
}
|
}
|
||||||
@@ -453,33 +460,36 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.icon-top-view{
|
.icon-top-view {
|
||||||
width:100%;
|
width: 100%;
|
||||||
height:298rpx;
|
height: 298rpx;
|
||||||
min-height:298rpx;
|
min-height: 298rpx;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 0 32rpx;
|
padding: 0 32rpx;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.top-view {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
.top-view{
|
border-radius: 12rpx;
|
||||||
width:100%;
|
border: 2rpx solid rgba(121, 52, 246, 0.08);
|
||||||
height:100%;
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 52rpx 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
.top-left-view {
|
||||||
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
border-radius: 12rpx;
|
flex-direction: column;
|
||||||
border: 2rpx solid rgba(121,52,246,0.08);
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 52rpx 0;
|
border-right: 2px solid #F5F5F5;
|
||||||
box-sizing: border-box;
|
|
||||||
.top-left-view{
|
|
||||||
flex:1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
border-right: 2px solid #F5F5F5;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.mine_purse_log_warp {
|
.mine_purse_log_warp {
|
||||||
height: calc(100vh - var(--status-bar-height));
|
height: calc(100vh - var(--status-bar-height));
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
<view class="content_right_total">
|
<view class="content_right_total">
|
||||||
<view>¥<text style="font-size: 36rpx">{{
|
<view>¥<text style="font-size: 36rpx">{{
|
||||||
pItem.totalPrice
|
pItem.totalPrice
|
||||||
}}</text></view>
|
}}</text></view>
|
||||||
<view>每件到手价¥{{ pItem.unitPrice }}</view>
|
<view>每件到手价¥{{ pItem.unitPrice }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="shopping_info_quantity">
|
<view class="shopping_info_quantity">
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<view class="content_right_total">
|
<view class="content_right_total">
|
||||||
<view>¥<text style="font-size: 36rpx">{{
|
<view>¥<text style="font-size: 36rpx">{{
|
||||||
pItem.totalPrice
|
pItem.totalPrice
|
||||||
}}</text></view>
|
}}</text></view>
|
||||||
<view>每件到手价¥{{ pItem.unitPrice }}</view>
|
<view>每件到手价¥{{ pItem.unitPrice }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="shopping_info_quantity">
|
<view class="shopping_info_quantity">
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
<view class="order_freight_item">
|
<view class="order_freight_item">
|
||||||
<view>运费<text style="color: #c0c3c6; margin-left: 20rpx">{{
|
<view>运费<text style="color: #c0c3c6; margin-left: 20rpx">{{
|
||||||
getValue(PRODUCT_DELIVERY_TIME, addItem.deliveryTime)
|
getValue(PRODUCT_DELIVERY_TIME, addItem.deliveryTime)
|
||||||
}}</text></view>
|
}}</text></view>
|
||||||
<view class="value_">
|
<view class="value_">
|
||||||
{{ orderInfo.postage ? "¥" + orderInfo.postage : "包邮" }}
|
{{ orderInfo.postage ? "¥" + orderInfo.postage : "包邮" }}
|
||||||
</view>
|
</view>
|
||||||
@@ -1192,6 +1192,7 @@ export default {
|
|||||||
specsId: this.sed.specsId.id,
|
specsId: this.sed.specsId.id,
|
||||||
goodsNum: this.orderInfo.shops?.[0]?.addrTimes?.[0]?.goods?.[0]?.num || this.sed.goodsNum || 1,
|
goodsNum: this.orderInfo.shops?.[0]?.addrTimes?.[0]?.goods?.[0]?.num || this.sed.goodsNum || 1,
|
||||||
couponUserId: couponUserId || undefined,
|
couponUserId: couponUserId || undefined,
|
||||||
|
payway2: this.isCoupon ? 'vcion' : null
|
||||||
});
|
});
|
||||||
if (!resp || resp.bizcode !== 100) {
|
if (!resp || resp.bizcode !== 100) {
|
||||||
this.$refs.uToastRef.show({
|
this.$refs.uToastRef.show({
|
||||||
|
|||||||
@@ -35,7 +35,20 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
">
|
">
|
||||||
<view class="content_data_price buy_deduction" v-if="orderInfo.buyDeductionValue">
|
<!-- 优惠券 -->
|
||||||
|
<view class="content_data_price coupon_price_box" v-if="orderInfo.couponPrice">
|
||||||
|
<text class="coupon_label">券后</text>
|
||||||
|
<text class="coupon_symbol">¥</text>
|
||||||
|
<text class="coupon_int">{{ String(orderInfo.couponPrice).split('.')[0] }}</text>
|
||||||
|
<text class="coupon_dec" v-if="String(orderInfo.couponPrice).split('.')[1]">.{{
|
||||||
|
String(orderInfo.couponPrice).split('.')[1] }}</text>
|
||||||
|
<text class="coupon_split">|</text>
|
||||||
|
<text class="coupon_origin">优惠前¥<template v-if="orderInfo.minPrice && orderInfo.maxPrice">{{
|
||||||
|
orderInfo.minPrice }} - {{ orderInfo.maxPrice }}</template><template v-else>{{ orderInfo.minPrice
|
||||||
|
}}</template></text>
|
||||||
|
</view>
|
||||||
|
<!-- 数字积分 -->
|
||||||
|
<view class="content_data_price buy_deduction" v-else-if="orderInfo.buyDeductionValue">
|
||||||
<view class="buy_deduction_value">
|
<view class="buy_deduction_value">
|
||||||
<text class="text-38 text-bold mr-10">{{ orderInfo.buyDeductionValue }}数字积分</text>
|
<text class="text-38 text-bold mr-10">{{ orderInfo.buyDeductionValue }}数字积分</text>
|
||||||
<text class="text-24">+{{ orderInfo.minPrice }}元</text>
|
<text class="text-24">+{{ orderInfo.minPrice }}元</text>
|
||||||
@@ -44,18 +57,22 @@
|
|||||||
兑后数字积分不退
|
兑后数字积分不退
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<!-- 正常 -->
|
||||||
<view class="content_data_price" v-else>
|
<view class="content_data_price" v-else>
|
||||||
<text>¥</text>
|
<text>¥</text>
|
||||||
<text style="font-size: 60rpx" v-if="orderInfo.minPrice && orderInfo.maxPrice">{{ orderInfo.minPrice }} - {{
|
<text style="font-size: 60rpx" v-if="orderInfo.minPrice && orderInfo.maxPrice">{{ orderInfo.minPrice }} -
|
||||||
orderInfo.maxPrice }}</text>
|
{{
|
||||||
|
orderInfo.maxPrice }}</text>
|
||||||
<text style="font-size: 60rpx" v-else>{{
|
<text style="font-size: 60rpx" v-else>{{
|
||||||
orderInfo.minPrice
|
orderInfo.minPrice
|
||||||
}}</text>
|
}}</text>
|
||||||
<text class="price_o">¥{{ orderInfo.adPrice }}</text>
|
<text class="price_o">¥{{ orderInfo.adPrice }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="text-24" style="color: #ff5a5a; height: 38rpx; display: flex; align-items: center; gap: 5rpx"
|
<view class="text-24" style="color: #ff5a5a; height: 38rpx; display: flex; align-items: center; gap: 5rpx"
|
||||||
v-if="orderInfo?.goodsTagList">
|
v-if="orderInfo?.goodsTagList">
|
||||||
<image v-for="val in orderInfo.goodsTagList" :src="val.icon" mode="heightFix" style="height: 38rpx">
|
<image v-for="val in orderInfo.goodsTagList" :key="val" :src="val.icon" mode="heightFix"
|
||||||
|
style="height: 38rpx">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -220,13 +237,33 @@
|
|||||||
<view class="product_content">
|
<view class="product_content">
|
||||||
<view class="price_warp">
|
<view class="price_warp">
|
||||||
<!-- 优惠券价格 -->
|
<!-- 优惠券价格 -->
|
||||||
<view class="price_content_warp" v-if="isCoupon">
|
<view class="price_content_warp coupon_price_box"
|
||||||
|
v-if="(selectSpecificationTempl && selectSpecificationTempl.couponPrice) || orderInfo.couponPrice">
|
||||||
|
<text class="coupon_label">券后</text>
|
||||||
|
<text class="coupon_symbol">¥</text>
|
||||||
|
<text class="coupon_int">{{ String((selectSpecificationTempl && selectSpecificationTempl.couponPrice) ||
|
||||||
|
orderInfo.couponPrice).split('.')[0] }}</text>
|
||||||
|
<text class="coupon_dec"
|
||||||
|
v-if="String((selectSpecificationTempl && selectSpecificationTempl.couponPrice) || orderInfo.couponPrice).split('.')[1]">.{{
|
||||||
|
String((selectSpecificationTempl && selectSpecificationTempl.couponPrice) ||
|
||||||
|
orderInfo.couponPrice).split('.')[1] }}</text>
|
||||||
|
<text class="coupon_origin">优惠前¥<template
|
||||||
|
v-if="selectSpecificationTempl && selectSpecificationTempl.price">{{ selectSpecificationTempl.price
|
||||||
|
}}</template><template v-else-if="skuBySpecInfo.originalPrice">{{ skuBySpecInfo.originalPrice
|
||||||
|
}}<template v-if="skuBySpecInfo.price">- {{ skuBySpecInfo.price }}</template></template><template
|
||||||
|
v-else>{{ orderInfo.minPrice }}</template></text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 数字积分 -->
|
||||||
|
<view class="price_content_warp" v-else-if="isCoupon">
|
||||||
<text class="text-38 text-bold mr-10">{{ orderInfo.buyDeductionValue }}数字积分</text>
|
<text class="text-38 text-bold mr-10">{{ orderInfo.buyDeductionValue }}数字积分</text>
|
||||||
<text class="text-24" v-if="
|
<text class="text-24" v-if="
|
||||||
selectSpecificationTempl &&
|
selectSpecificationTempl &&
|
||||||
Object.keys(selectSpecificationTempl).length !== 0">+{{ selectSpecificationTempl.price }}元</text>
|
Object.keys(selectSpecificationTempl).length !== 0">+{{ selectSpecificationTempl.price }}元</text>
|
||||||
<text v-else>+{{ orderInfo.minPrice }}元</text>
|
<text v-else>+{{ orderInfo.minPrice }}元</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<!-- 正常价格 -->
|
||||||
<view class="price_content_warp" v-else>
|
<view class="price_content_warp" v-else>
|
||||||
<view>¥</view>
|
<view>¥</view>
|
||||||
<text style="font-size: 50rpx" v-if="
|
<text style="font-size: 50rpx" v-if="
|
||||||
@@ -243,7 +280,10 @@
|
|||||||
优惠券{{
|
优惠券{{
|
||||||
orderInfo.couponPrice }}</view>
|
orderInfo.couponPrice }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="oOrice_content_warp" v-if="!isCoupon">¥{{ skuBySpecInfo.originalPrice }}</view>
|
|
||||||
|
<view class="oOrice_content_warp"
|
||||||
|
v-if="!isCoupon && !((selectSpecificationTempl && selectSpecificationTempl.couponPrice) || orderInfo.couponPrice)">
|
||||||
|
¥{{ skuBySpecInfo.originalPrice }}</view>
|
||||||
<view class="coupon_content_warp" v-if="orderInfo.couponPrice && orderInfo.couponPrice !== 0">
|
<view class="coupon_content_warp" v-if="orderInfo.couponPrice && orderInfo.couponPrice !== 0">
|
||||||
优惠券已优惠¥{{
|
优惠券已优惠¥{{
|
||||||
orderInfo.couponPrice }}</view>
|
orderInfo.couponPrice }}</view>
|
||||||
@@ -1498,7 +1538,7 @@ export default {
|
|||||||
async fetchGoodsCouponList() {
|
async fetchGoodsCouponList() {
|
||||||
if (!this.id) return;
|
if (!this.id) return;
|
||||||
try {
|
try {
|
||||||
const res = await getGoodsCouponList({ goodsId: this.id });
|
const res = await getGoodsCouponList({ goodsId: this.id, payway2: this.orderInfo.buyDeductionValue ? 'vcion' : null });
|
||||||
if (res && res.bizcode === 100) {
|
if (res && res.bizcode === 100) {
|
||||||
this.goodsCouponList = res.data || [];
|
this.goodsCouponList = res.data || [];
|
||||||
}
|
}
|
||||||
@@ -1663,6 +1703,47 @@ export default {
|
|||||||
font-size: 36rpx;
|
font-size: 36rpx;
|
||||||
color: $app-bt-bj;
|
color: $app-bt-bj;
|
||||||
|
|
||||||
|
&.coupon_price_box {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
|
||||||
|
.coupon_label {
|
||||||
|
font-size: 28rpx;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-right: 6rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_symbol {
|
||||||
|
font-size: 28rpx;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-right: 4rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_int {
|
||||||
|
font-size: 56rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_dec {
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_split {
|
||||||
|
font-size: 28rpx;
|
||||||
|
margin: 0 16rpx;
|
||||||
|
font-weight: normal;
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_origin {
|
||||||
|
font-size: 28rpx;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.price_o {
|
.price_o {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
@@ -1964,7 +2045,42 @@ export default {
|
|||||||
font-size: 36rpx;
|
font-size: 36rpx;
|
||||||
color: $app-bt-bj;
|
color: $app-bt-bj;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: baseline;
|
||||||
|
|
||||||
|
&.coupon_price_box {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
|
||||||
|
.coupon_label {
|
||||||
|
font-size: 26rpx;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-right: 6rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_symbol {
|
||||||
|
font-size: 26rpx;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-right: 4rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_int {
|
||||||
|
font-size: 50rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_dec {
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon_origin {
|
||||||
|
font-size: 26rpx;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.price_content_coupon_warp {
|
.price_content_coupon_warp {
|
||||||
|
|||||||
@@ -2,131 +2,439 @@
|
|||||||
<view class="content">
|
<view class="content">
|
||||||
<TopSafe></TopSafe>
|
<TopSafe></TopSafe>
|
||||||
<Header title="物流信息" />
|
<Header title="物流信息" />
|
||||||
<view class="setting-view">
|
|
||||||
|
<view class="main-body">
|
||||||
|
<!-- 多物流 Tab 切换 (数据源:this.expressList) -->
|
||||||
|
<view class="tabs-bar" v-if="expressList && expressList.length > 0">
|
||||||
|
<scroll-view class="tabs-scroll" scroll-x :show-scrollbar="false">
|
||||||
|
<view class="tabs-wrapper">
|
||||||
|
<view
|
||||||
|
v-for="(item, index) in expressList"
|
||||||
|
:key="index"
|
||||||
|
:class="['tab-item', { active: currentTab === index }]"
|
||||||
|
@click="onSelectTab(index)"
|
||||||
|
>
|
||||||
|
{{ getTabName(index) }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 物流详情面板 -->
|
||||||
<view class="express-panel">
|
<view class="express-panel">
|
||||||
<view class="top-one" style="margin-top:12rpx">
|
<!-- 快递单号行 -->
|
||||||
<u-icon name="email" color="#333" size="20"></u-icon>
|
<view class="info-row">
|
||||||
<text class="text-24 text-fu text-space" style="margin-left:10rpx;line-height: 1.4;margin-right:12rpx">{{curData && `${curData.items[0].expressName}:`}}</text>
|
<view class="icon-wrap">
|
||||||
<text class="text-24 text-gray text-space" style="margin-left:10rpx;line-height: 1.4;margin-right:12rpx">{{curData && `${curData.items[0].expressNo}`}}</text>
|
<u-icon name="bag" color="#333333" size="20"></u-icon>
|
||||||
<up-image src="/static/common/copy.png" width="14" height="14" bgColor="#f1f6ff00"
|
</view>
|
||||||
@click="copyData(curData ? curData.items[0].expressNo :'')"></up-image>
|
<text class="info-label" v-if="displayExpressName">{{ displayExpressName }}:</text>
|
||||||
|
<text class="info-label" v-else>快递单号:</text>
|
||||||
|
<text class="info-val">{{ displayExpressNo || '--' }}</text>
|
||||||
|
<view class="copy-btn" v-if="displayExpressNo" @click="copyData(displayExpressNo)">
|
||||||
|
<up-image src="/static/common/copy.png" width="14" height="14" bgColor="#f1f6ff00"></up-image>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="top-one" style="border-bottom:2rpx solid #eee">
|
|
||||||
<u-icon name="map" color="#333" size="20"></u-icon>
|
<!-- 收货地址行 -->
|
||||||
<text class="text-24 text-fu text-space" style="margin-left:10rpx;line-height: 1.4;margin-right:12rpx">收货地址</text>
|
<view class="info-row align-start" style="margin-top: 24rpx;" v-if="displayAddress">
|
||||||
<text class="text-24 text-zu text-space" style="margin-left:10rpx;line-height: 1.4;margin-right:12rpx">{{curData && `${curData.countryName} ${curData.cityName} ${curData.areaName} ${curData.address}`}}</text>
|
<view class="icon-wrap" style="margin-top: 4rpx;">
|
||||||
|
<u-icon name="map" color="#333333" size="20"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text class="info-label">收货地址:</text>
|
||||||
|
<text class="info-val address-text">{{ displayAddress }}</text>
|
||||||
</view>
|
</view>
|
||||||
<u-steps current="0" direction="column" dot activeColor="#7934F6" style="margin-top:20rpx">
|
|
||||||
<u-steps-item :style="`width:calc(100vw - 48rpx)`"
|
<!-- 分割线 -->
|
||||||
:title="item.areaName + ' ' + item.curTime" :desc="item.desc" v-for="(item,index) in express.logisticsTraceDetailList" :key="index"></u-steps-item>
|
<view class="divider"></view>
|
||||||
</u-steps>
|
|
||||||
|
<!-- 物流轨迹时间轴 -->
|
||||||
|
<view class="trace-list" v-if="express && express.logisticsTraceDetailList && express.logisticsTraceDetailList.length > 0">
|
||||||
|
<view
|
||||||
|
class="trace-item"
|
||||||
|
v-for="(item, index) in express.logisticsTraceDetailList"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<!-- 左侧时间轴 (点 + 连接线) -->
|
||||||
|
<view class="axis-col">
|
||||||
|
<view :class="['dot', { 'is-latest': index === 0 }]"></view>
|
||||||
|
<view class="line" v-if="index < express.logisticsTraceDetailList.length - 1"></view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 右侧轨迹内容 -->
|
||||||
|
<view class="content-col">
|
||||||
|
<view class="trace-header">
|
||||||
|
<text :class="['trace-status', { 'is-latest': index === 0 }]">
|
||||||
|
{{ getTraceTitle(item, index) }}
|
||||||
|
</text>
|
||||||
|
<text class="trace-time">{{ item.curTime || item.time }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="trace-desc" v-if="item.desc">
|
||||||
|
{{ item.desc }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 空数据提示 -->
|
||||||
|
<view class="empty-box" v-else>
|
||||||
|
<text class="empty-text">暂无物流轨迹信息</text>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<up-toast ref="uToastRef"></up-toast>
|
<up-toast ref="uToastRef"></up-toast>
|
||||||
<!-- 腾讯电子签H5 → 集成到UniApp -->
|
<!-- 腾讯电子签H5 → 集成到UniApp -->
|
||||||
<qiaobao-assistant page-key="pages/rwa_package/express/express" title="物流详情" />
|
<qiaobao-assistant page-key="pages/rwa_package/express/express" title="物流详情" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getUserInfo,uploadAvatar } from '@/api/auth.js';
|
|
||||||
import { uploadImage, uploadImg } from '@/api/common.js';
|
|
||||||
import { IMG_TYPE } from '@/utils/enumUtils.js';
|
|
||||||
import { BASE_URL, Authorization } from '@/utils/config.js';
|
|
||||||
import { getStorageFun, TOKEN_NAME,clear } from '@/utils/auth.js';
|
|
||||||
import Header from '@/components/common/header.vue';
|
import Header from '@/components/common/header.vue';
|
||||||
import TopSafe from '@/components/common/top-safe.nvue'
|
import TopSafe from '@/components/common/top-safe.nvue';
|
||||||
import MyBtn from '@/components/common/my-btn.vue'
|
import MyBtn from '@/components/common/my-btn.vue';
|
||||||
import func from '@/utils/func.js';
|
import func from '@/utils/func.js';
|
||||||
import { copyData } from '@/utils/index.js';
|
import { copyData } from '@/utils/index.js';
|
||||||
|
import { getDetail, orderLogistics } from "@/api/order.js";
|
||||||
import {
|
|
||||||
getDetail,
|
|
||||||
orderLogistics
|
|
||||||
} from "@/api/order.js";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Header, TopSafe,MyBtn },
|
components: { Header, TopSafe, MyBtn },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
express:null,
|
express: null,
|
||||||
curData:null,
|
curData: null,
|
||||||
id:0
|
id: 0,
|
||||||
|
expressList: [],
|
||||||
|
expressId: '',
|
||||||
|
currentTab: 0,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
currentPackage() {
|
||||||
|
return this.expressList[this.currentTab] || {};
|
||||||
|
},
|
||||||
|
displayExpressName() {
|
||||||
|
return this.currentPackage.expressName || this.curData?.items?.[0]?.expressName || this.express?.expressName || '';
|
||||||
|
},
|
||||||
|
displayExpressNo() {
|
||||||
|
return this.currentPackage.expressNo || this.expressId || this.curData?.items?.[0]?.expressNo || '';
|
||||||
|
},
|
||||||
|
displayAddress() {
|
||||||
|
if (!this.curData) return '';
|
||||||
|
const parts = [
|
||||||
|
this.curData.countryName,
|
||||||
|
this.curData.cityName,
|
||||||
|
this.curData.areaName,
|
||||||
|
this.curData.address
|
||||||
|
].filter(Boolean);
|
||||||
|
return parts.join(' ');
|
||||||
|
}
|
||||||
|
},
|
||||||
onLoad(option) {
|
onLoad(option) {
|
||||||
// this.userinfo();
|
if (option) {
|
||||||
if(option && option.id){
|
if (option.id) {
|
||||||
this.id = Number(option.id);
|
this.id = Number(option.id);
|
||||||
this.init();
|
this.detail();
|
||||||
|
} else if (option.expressNo) {
|
||||||
|
this.expressId = option.expressNo;
|
||||||
|
this.expressList = [{ expressNo: option.expressNo }];
|
||||||
|
this.getOrderLogistics();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
copyData,
|
copyData,
|
||||||
init() {
|
|
||||||
this.detail();
|
getTabName(index) {
|
||||||
|
const zhNums = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
|
||||||
|
return `物流${zhNums[index] || (index + 1)}`;
|
||||||
},
|
},
|
||||||
detail(){
|
|
||||||
let params = {
|
getTraceTitle(item, index) {
|
||||||
id:this.id
|
if (item.areaName) return item.areaName;
|
||||||
|
if (item.statusName) return item.statusName;
|
||||||
|
if (item.logisticsStatusDesc) return item.logisticsStatusDesc;
|
||||||
|
if (item.action) return item.action;
|
||||||
|
if (item.status) return item.status;
|
||||||
|
return index === 0 ? '已签收' : '运输中';
|
||||||
|
},
|
||||||
|
|
||||||
|
onSelectTab(index) {
|
||||||
|
this.currentTab = index;
|
||||||
|
const pkg = this.expressList[index];
|
||||||
|
if (pkg && pkg.expressNo) {
|
||||||
|
this.expressId = pkg.expressNo;
|
||||||
|
this.getOrderLogistics();
|
||||||
}
|
}
|
||||||
getDetail(params).then(res=>{
|
},
|
||||||
if(res.bizcode == 100){
|
|
||||||
|
detail() {
|
||||||
|
let params = {
|
||||||
|
id: this.id
|
||||||
|
};
|
||||||
|
getDetail(params).then(res => {
|
||||||
|
if (res.bizcode == 100) {
|
||||||
this.curData = res.data;
|
this.curData = res.data;
|
||||||
if(this.curData.items[0].expressNo){
|
this.expressList = this.curData?.orderPackages || [];
|
||||||
this.getOrderLogistics();
|
if (this.expressList.length > 0) {
|
||||||
|
this.onSelectTab(0);
|
||||||
|
} else if (this.curData?.items?.[0]?.expressNo) {
|
||||||
|
this.expressList = [{
|
||||||
|
expressName: this.curData.items[0].expressName,
|
||||||
|
expressNo: this.curData.items[0].expressNo
|
||||||
|
}];
|
||||||
|
this.onSelectTab(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log('id',res)
|
});
|
||||||
})
|
|
||||||
},
|
},
|
||||||
getOrderLogistics(){
|
|
||||||
|
getOrderLogistics() {
|
||||||
|
if (!this.expressId) return;
|
||||||
let params = {
|
let params = {
|
||||||
mailNo:this.curData.items[0].expressNo
|
mailNo: this.expressId
|
||||||
}
|
};
|
||||||
orderLogistics(params).then(res=>{
|
orderLogistics(params).then(res => {
|
||||||
if(res.bizcode == 100){
|
if (res.bizcode == 100 && res.data) {
|
||||||
this.express = res.data;
|
this.express = res.data;
|
||||||
this.express.logisticsTraceDetailList.forEach(item=>{
|
if (Array.isArray(this.express.logisticsTraceDetailList)) {
|
||||||
item.curTime = func.formatDate(new Date(item.time), 2);
|
this.express.logisticsTraceDetailList.forEach(item => {
|
||||||
})
|
if (item.time) {
|
||||||
|
try {
|
||||||
|
item.curTime = func.formatDate(new Date(item.time), 2);
|
||||||
|
} catch (e) {
|
||||||
|
item.curTime = item.time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.express = null;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.setting-view {
|
.content {
|
||||||
width: 100%;
|
width: 100vw;
|
||||||
height: calc(100% - 88rpx - var(--status-bar-height));
|
min-height: 100vh;
|
||||||
|
background-color: #ffffff;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
}
|
||||||
.express-panel{
|
|
||||||
width:100%;
|
.main-body {
|
||||||
margin-top:24rpx;
|
width: 100%;
|
||||||
height: calc(100% - 24rpx);
|
flex: 1;
|
||||||
padding: 0 32rpx;
|
display: flex;
|
||||||
box-sizing: border-box;
|
flex-direction: column;
|
||||||
overflow-y: auto;
|
}
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
.tabs-bar {
|
||||||
background-color: #fff;
|
width: 100%;
|
||||||
.top-one{
|
padding: 24rpx 32rpx 16rpx 32rpx;
|
||||||
width:100%;
|
box-sizing: border-box;
|
||||||
display: flex;
|
background-color: #ffffff;
|
||||||
|
|
||||||
|
.tabs-scroll {
|
||||||
|
width: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
.tabs-wrapper {
|
||||||
|
display: inline-flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
min-height:70rpx;
|
}
|
||||||
|
|
||||||
|
.tab-item {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 12rpx 36rpx;
|
||||||
|
border-radius: 32rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #333333;
|
||||||
|
background-color: #F5F5F5;
|
||||||
|
margin-right: 24rpx;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: #F2E9FF;
|
||||||
|
color: #7934F6;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.express-panel {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
padding: 20rpx 32rpx 40rpx 32rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.info-row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&.align-start {
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-wrap {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 12rpx;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-label {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #333333;
|
||||||
|
margin-right: 12rpx;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-val {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #333333;
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&.address-text {
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-btn {
|
||||||
|
margin-left: 16rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
width: 100%;
|
||||||
|
height: 1rpx;
|
||||||
|
background-color: #F5F5F5;
|
||||||
|
margin: 32rpx 0 40rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.trace-list {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.trace-item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 44rpx;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.axis-col {
|
||||||
|
width: 36rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
position: relative;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
.dot {
|
||||||
|
width: 16rpx;
|
||||||
|
height: 16rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 3rpx solid #CCCCCC;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
z-index: 2;
|
||||||
|
margin-top: 8rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
&.is-latest {
|
||||||
|
width: 20rpx;
|
||||||
|
height: 20rpx;
|
||||||
|
background-color: #7934F6;
|
||||||
|
border: none;
|
||||||
|
margin-top: 6rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
position: absolute;
|
||||||
|
top: 24rpx;
|
||||||
|
bottom: -10rpx;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 2rpx;
|
||||||
|
background-color: #EEEEEE;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-col {
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.trace-header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.trace-status {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #333333;
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&.is-latest {
|
||||||
|
color: #7934F6;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.trace-time {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999999;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.trace-desc {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #666666;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin-top: 12rpx;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-box {
|
||||||
|
width: 100%;
|
||||||
|
padding: 60rpx 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.empty-text {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #999999;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -75,8 +75,10 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="price-sales-row">
|
<view class="price-sales-row">
|
||||||
<view class="price-box">
|
<view class="price-box">
|
||||||
|
<text class="currency" v-if="item.couponPrice">券后</text>
|
||||||
<text class="currency">¥</text>
|
<text class="currency">¥</text>
|
||||||
<text class="price-val">{{ formatPrice(item.price || item.adPrice) }}</text>
|
<text class="price-val">{{ item.couponPrice || formatPrice(item.price || item.adPrice)
|
||||||
|
}}</text>
|
||||||
</view>
|
</view>
|
||||||
<text class="sales-val"
|
<text class="sales-val"
|
||||||
v-if="item.sales !== undefined && item.sales !== null && item.sales !== ''">
|
v-if="item.sales !== undefined && item.sales !== null && item.sales !== ''">
|
||||||
|
|||||||
@@ -45,9 +45,10 @@
|
|||||||
<view class="shopping_info_amount">
|
<view class="shopping_info_amount">
|
||||||
<view>
|
<view>
|
||||||
<view style="color: #7934f6">
|
<view style="color: #7934f6">
|
||||||
|
<text style="font-size: 22rpx" v-if="pItem.couponPrice">券后</text>
|
||||||
<text style="font-size: 22rpx">¥</text>
|
<text style="font-size: 22rpx">¥</text>
|
||||||
<text style="font-size: 32rpx">{{
|
<text style="font-size: 32rpx">{{
|
||||||
pItem.unitPrice
|
pItem.couponPrice || pItem.unitPrice
|
||||||
}}</text>
|
}}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="shopping_info_amount_original" v-if="pItem.originalPrice">
|
<view class="shopping_info_amount_original" v-if="pItem.originalPrice">
|
||||||
@@ -191,6 +192,7 @@ export default {
|
|||||||
specsId: curr.specsId, // 规格Id
|
specsId: curr.specsId, // 规格Id
|
||||||
isCheck: false, // 用作于全选
|
isCheck: false, // 用作于全选
|
||||||
originalPrice: curr.originalPrice,
|
originalPrice: curr.originalPrice,
|
||||||
|
couponPrice: curr.couponPrice,
|
||||||
goodsStatus: curr.goodsStatus, //商品状态:0-可下单,1-库存不够,2-商品已下架
|
goodsStatus: curr.goodsStatus, //商品状态:0-可下单,1-库存不够,2-商品已下架
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -213,6 +215,7 @@ export default {
|
|||||||
specsId: curr.specsId, // 规格Id
|
specsId: curr.specsId, // 规格Id
|
||||||
isCheck: false, // 用作于全选
|
isCheck: false, // 用作于全选
|
||||||
originalPrice: curr.originalPrice,
|
originalPrice: curr.originalPrice,
|
||||||
|
couponPrice: curr.couponPrice,
|
||||||
goodsStatus: curr.goodsStatus, //商品状态:0-可下单,1-库存不够,2-商品已下架
|
goodsStatus: curr.goodsStatus, //商品状态:0-可下单,1-库存不够,2-商品已下架
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
+1
-1
@@ -136,7 +136,7 @@
|
|||||||
<view class="product_price_row">
|
<view class="product_price_row">
|
||||||
<view class="price_box">
|
<view class="price_box">
|
||||||
<text class="price_symbol">¥</text>
|
<text class="price_symbol">¥</text>
|
||||||
<text class="price_val">{{ item.price }}</text>
|
<text class="price_val">{{ item.couponPrice || item.price }}</text>
|
||||||
</view>
|
</view>
|
||||||
<text class="sales_val">全网销量{{ limit999(item.sales) }}</text>
|
<text class="sales_val">全网销量{{ limit999(item.sales) }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
Reference in New Issue
Block a user