no message

This commit is contained in:
2025-09-17 17:24:59 +08:00
parent f86ae4a4b8
commit 3dc5c52690
6 changed files with 261 additions and 29 deletions
+82 -24
View File
@@ -59,26 +59,26 @@
<view class="content_right_quantity">x{{ pItem.buyNum }}</view>
</view>
</view>
<view class="content_item_yd" v-if="pItem.expressNo">
<view>
运单号:
<text v-if="pItem.expressName">({{ pItem.expressName }})</text>
{{ pItem.expressNo }}
<view class="content_item_yd" v-if="pItem.expressNo && pItem.expressData">
<view class="express-view text-overflow1">
<u-icon name="email" color="#333" size="20"></u-icon>
<text class="text-24 text-zu1 text-space" style="margin-left:10rpx;">{{pItem.expressData.logisticsStatusDesc}}</text>
<text class="text-24 text-fu text-space text-overflow1" style="margin-left:10rpx;">{{pItem.expressData.logisticsTraceDetailList[0].desc}}</text>
</view>
<view style="margin-left: 10rpx">
<!-- <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>
</view> -->
</view>
</view>
</view>
<!-- 汇总 -->
<view class="order_item_collect">
<view class="collect_msg collect_msg_s" v-if="this.form.type === MINE_ORDER_TYPE.NOT_RECEIVE">
<view class="content_item_yd_msg">(快递动态跟进请复制单号至[快递100官网] 查询)</view>
<!-- <view class="collect_msg collect_msg_s" v-if="this.form.type === MINE_ORDER_TYPE.NOT_RECEIVE">
<view class="content_item_yd_msg">(快递动态跟进请复制单号至[快递100官网] 查询)</view>
<view>共{{ item.buyNum }}件,合计¥{{ item.sumAmount }}</view>
</view>
<view class="collect_msg" v-else>共{{ item.buyNum }}件,合计¥{{ item.sumAmount }}</view>
</view> -->
<view class="collect_msg">共{{ item.buyNum }}件,合计¥{{ item.sumAmount }}</view>
<view class="collect_operate">
<!-- <view class="operate_comm operate_but_1" v-if="item.status === ORDER_TYPE.UNSHIPPED" @click="checkCancel(true)">取消订单</view> -->
<view class="operate_comm operate_but_2" v-if="
@@ -89,6 +89,12 @@
<view class="operate_comm operate_but_2" v-if="item.status === ORDER_TYPE.NOT_RECEIVE"
@click="confirmReceiptOk(item)">确认收货</view>
<view class="operate_comm operate_but_1" style="borderColor: #7732FF;" v-if="form.type == 3"
@click="onExpress(item.id,item.items.expressNo)">
<text class="text-zi">查看物流</text>
</view>
<view class="operate_comm operate_but_2" v-if="
!isCheckSigne &&
index == 0 &&
@@ -261,7 +267,8 @@ import {
isSignContract,
getMiniProgramSignUrl,
afterSaleDetail,
cancelOrder
cancelOrder,
orderLogistics
} from "@/api/order.js";
import dayjs from "dayjs";
import { formatDate1, copyData } from "@/utils/index.js";
@@ -353,7 +360,9 @@ export default {
const type = options.type;
this.form.type =
type ? parseInt(type, 10) : MINE_ORDER_TYPE.UNPAID;
this.loadData();
this.$nextTick(()=>{
this.loadData();
})
// 待收货判断是否签署
if (
this.form.type === MINE_ORDER_TYPE.NOT_RECEIVE ||
@@ -368,7 +377,13 @@ export default {
getValue,
formatDate1,
copyData,
onExpress(itemId){
console.log('onExpress',itemId)
// let expressId =
uni.navigateTo({
url:`/pages/rwa_package/setting/express?id=${itemId}`
})
},
onNextRefund() {
this.salesServer = 2;
@@ -542,18 +557,21 @@ export default {
}
try {
// 模拟异步获取数据,实际应用中应该替换为你的数据获取逻辑,例如API调用
const newData = await this.fetchData(
this.form.page,
this.form.pageSize
);
if (newData.entitys && newData.entitys.length !== 0) {
this.orderList = [...this.orderList, ...newData.entitys]; // 将新数据添加到列表中
this.form.page++; // 页码加1
console.log("this.orderList", this.orderList);
}
const newData = await this.fetchData(
this.form.page,
this.form.pageSize
);
if (newData.entitys && newData.entitys.length !== 0) {
this.orderList = [...this.orderList, ...newData.entitys]; // 将新数据添加到列表中
this.form.page++; // 页码加1
console.log("this.orderList", this.orderList);
}
} catch (error) {
console.error("加载数据失败:", error);
} finally {
console.log("this.orderList1111",JSON.parse(JSON.stringify(this.orderList)));
this.$forceUpdate();
this.loading = false; // 设置加载状态为false
}
},
@@ -569,11 +587,41 @@ export default {
}
const data = await getOrderList(params);
if (data && data.bizcode === 100) {
for(let i=0;i<data.data.entitys.length;i++){
for(let j=0;j<data.data.entitys[i].items.length;j++){
if(data.data.entitys[i].items[j].expressNo){
data.data.entitys[i].items[j].expressData = await this.getOrderLogistics(data.data.entitys[i].items[j].expressNo);
}
}
}
// data.data.entitys.forEach(item=>{
// if(item.items.length){
// item.items.forEach(async (Iitem)=>{
// if(Iitem.expressNo){
// Iitem.expressData = await this.getOrderLogistics(Iitem.expressNo);
// }
// })
// }
// })
return data.data;
} else {
return [];
return '';
}
},
async getOrderLogistics(id){
const params = {
mailNo:id
};
const data = await orderLogistics(params);
if(data.bizcode == 100){
return data.data;
}else{
return [];
}
},
// 当滚动到底部时触发的方法
loadMore() {
this.loadData(); // 加载更多数据
@@ -726,6 +774,16 @@ export default {
</script>
<style lang="scss" scoped>
.express-view{
width:100%;
height:52rpx;
background-color: #f5f5f5;
display: flex;
flex-direction: row;
align-items: center;
border-radius: 4rpx;
line-height: 1.6;
}
.after-sales-popup {
height: 400px !important;
+31 -3
View File
@@ -8,9 +8,15 @@
v-for="(item,index) in headList" :key="index"
:style="{borderWidth:index == headList.length - 1 ? '0' : '2rpx'}"
>
<text class="text-zu1 text-32">{{item.text}}</text>
<view class="flex-r" >
<text class="text-zu1 text-32">{{item.text}}</text>
<view class="yi-view" v-if="item.type == 'text1' && item.she">
<text class="text-zi text-24">{{item.she}}</text>
</view>
</view>
<view class="flex-r-e" style="align-items: center;">
<text class="text-zu text-32" v-if="item.type == 'text'">{{item.value}}</text>
<text class="text-fu text-32" v-if="item.type == 'text1'">{{item.value}}</text>
<u-icon size="16" name="arrow-right" color="#666" style="margin-left:12rpx"></u-icon>
</view>
@@ -36,8 +42,8 @@ export default {
userInfo: null,
headList:[
{text:'注册手机号',type:'text',value:''},
{text:'交易密码设置',type:'text1',value:'设置密码'},
{text:'登录密码设置',type:'text1',value:'设置密码'},
{text:'交易密码设置',type:'text1',she:'',value:'设置密码'},
{text:'登录密码设置',type:'text1',she:'',value:'设置密码'},
{text:'注销账号',type:'text',value:''},
],
bottomList:[
@@ -81,6 +87,18 @@ export default {
this.userInfo = res.data;
this.headList[0].value = this.userInfo.mobile;
this.headList[0].value = this.headList[0].value.replace(this.headList[0].value.substring(3,7),'****')
if(res.data.tradePassword){
this.headList[1].she = '已设置';
this.headList[1].value = '修改密码';
}else{
this.headList[1].value = '设置密码';
}
if(res.data.password){
this.headList[2].she = '已设置';
this.headList[2].value = '修改密码';
}else{
this.headList[2].value = '设置密码';
}
}
})
}
@@ -89,6 +107,16 @@ export default {
</script>
<style lang="scss" scoped>
.yi-view{
width:104rpx;
height:44rpx;
display: flex;
background: rgba(122,53,246,0.1);
align-items: center;
justify-content: center;
border-radius: 8rpx;
margin-left:12rpx;
}
.setting-view {
width: 100%;
height: calc(100% - 88rpx - var(--status-bar-height));
+131
View File
@@ -0,0 +1,131 @@
<template>
<view class="content">
<TopSafe></TopSafe>
<Header title="物流信息" />
<view class="setting-view">
<view class="express-panel">
<view class="top-one" style="margin-top:12rpx">
<u-icon name="email" 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">{{curData && `${curData.items[0].expressName}:`}}</text>
<text class="text-24 text-zu1 text-space" style="margin-left:10rpx;line-height: 1.4;margin-right:12rpx">{{curData && `${curData.items[0].expressNo}`}}</text>
<up-image src="/static/common/copy.png" width="14" height="14" bgColor="#f1f6ff00"
@click="copyData(curData ? curData.items[0].expressNo :'')"></up-image>
</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>
<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>
<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>
</u-steps>
</view>
</view>
<up-toast ref="uToastRef"></up-toast>
<!-- 腾讯电子签H5 → 集成到UniApp -->
</view>
</template>
<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 TopSafe from '@/components/common/top-safe.nvue'
import MyBtn from '@/components/common/my-btn.vue'
import func from '@/utils/func.js';
import { copyData } from '@/utils/index.js';
import {
getDetail,
orderLogistics
} from "@/api/order.js";
export default {
components: { Header, TopSafe,MyBtn },
data() {
return {
express:null,
curData:null,
id:0
};
},
onLoad(option) {
// this.userinfo();
if(option && option.id){
this.id = Number(option.id);
this.init();
}
},
methods: {
copyData,
init() {
this.detail();
},
detail(){
let params = {
id:this.id
}
getDetail(params).then(res=>{
if(res.bizcode == 100){
this.curData = res.data;
if(this.curData.items[0].expressNo){
this.getOrderLogistics();
}
}
console.log('id',res)
})
},
getOrderLogistics(){
let params = {
mailNo:this.curData.items[0].expressNo
}
orderLogistics(params).then(res=>{
if(res.bizcode == 100){
this.express = res.data;
this.express.logisticsTraceDetailList.forEach(item=>{
item.curTime = func.formatDate(new Date(item.time), 2);
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
.setting-view {
width: 100%;
height: calc(100% - 88rpx - var(--status-bar-height));
display: flex;
flex-direction: column;
align-items: center;
.express-panel{
width:100%;
margin-top:24rpx;
height: calc(100% - 24rpx);
padding: 0 32rpx;
box-sizing: border-box;
overflow-y: auto;
display: flex;
flex-direction: column;
background-color: #fff;
.top-one{
width:100%;
display: flex;
flex-direction: row;
align-items: center;
min-height:70rpx;
}
}
}
</style>