修改订单详情取件码重复问题,优化scroll-view

This commit is contained in:
2025-03-11 19:41:57 +08:00
parent 26069d6f4d
commit f0b511d9f5
12 changed files with 188 additions and 147 deletions

View File

@ -227,6 +227,9 @@ page-container .content{
flex:1; flex:1;
overflow: hidden; overflow: hidden;
} }
.scroll-view-top-margin{
height:1rpx;
}
.bottom-bar-v2{ .bottom-bar-v2{
padding:24rpx; padding:24rpx;
background-color: #fff; background-color: #fff;

View File

@ -1,9 +1,9 @@
<scroll-view scroll-y refresher-enabled bindrefresherrefresh="refreshList" <scroll-view scroll-y refresher-enabled bindrefresherrefresh="refreshList"
refresher-triggered="{{refresherTriggered}}" style="{{heightStyle}}" bindscroll="scrolling" refresher-triggered="{{refresherTriggered}}" style="{{heightStyle}}" bindscroll="scrolling"
class="scroll-view" id="scrollView" enhanced show-scrollbar="{{false}}"> class="scroll-view" id="scrollView" enhanced show-scrollbar="{{false}}">
<view class="scroll-view-content"> <view class="scroll-view-top-margin"></view>
<slot/> <slot/>
</view>
<view class="load-more" wx:if="{{showLoadMore}}"> <view class="load-more" wx:if="{{showLoadMore}}">
<label class="text" wx:if="{{loadAll}}">{{loadMoreText}}</label> <label class="text" wx:if="{{loadAll}}">{{loadMoreText}}</label>
<label class="text" wx:else>加载中...</label> <label class="text" wx:else>加载中...</label>

View File

@ -169,6 +169,11 @@ Page({
this.loadList(); this.loadList();
}) })
}, },
refreshCurrentList(){
this.data.pager.pageIndex = 0;
this.data.pager.loadAll = false;
this.loadList();
},
async loadStatusDetail(){ async loadStatusDetail(){
const data = await orderApi.statusDetail(this.data.userInfo.community_id); const data = await orderApi.statusDetail(this.data.userInfo.community_id);
this.data.statusDetail.created.value = 0; this.data.statusDetail.created.value = 0;
@ -412,6 +417,10 @@ Page({
wx.removeStorage({ wx.removeStorage({
key: item.orderid, key: item.orderid,
}) })
}).catch(()=>{
this.setData({
[`list[${index}].receiving`]:false
})
}) })
}, },
//完成配送 选择图片 //完成配送 选择图片
@ -545,6 +554,7 @@ Page({
}, },
emptyFun(){}, emptyFun(){},
onShow(){ onShow(){
console.log('onshow');
if(this.data.statusDetailKey==this.data.statusDetail.received.key.toLowerCase()){ if(this.data.statusDetailKey==this.data.statusDetail.received.key.toLowerCase()){
let needRefreshData = {} let needRefreshData = {}
this.data.list.map((item,index)=>{ this.data.list.map((item,index)=>{
@ -565,7 +575,11 @@ Page({
getPackageReceiveStatus(orderId,pkg){ getPackageReceiveStatus(orderId,pkg){
let receivedInfo = wx.getStorageSync(orderId); let receivedInfo = wx.getStorageSync(orderId);
let codes = receivedInfo[pkg.id]; let codes = receivedInfo[pkg.id];
if(codes&&pkg.pickup_codes.length==codes.length){ let tempVar = {};
pkg.pickup_codes.map((code)=>{
tempVar[code] = 1;
})
if(codes&&Object.keys(tempVar).length==codes.length){
return true; return true;
} }
return false; return false;

View File

@ -48,7 +48,10 @@
</view> </view>
<view class="station-list"> <view class="station-list">
<view class="sl-item" wx:for="{{item.packages}}" wx:key="index" wx:for-item="pItem" wx:for-index="pIndex"> <view class="sl-item" wx:for="{{item.packages}}" wx:key="index" wx:for-item="pItem" wx:for-index="pIndex">
<view class="name">{{pItem.station_name}} {{pItem.pickup_codes.length}} 件</view> <view class="name">
<view class="text">{{pItem.station_name}}</view>
<view class="count">{{pItem.pickup_codes.length}} 件</view>
</view>
<view class="received-status {{item.status==orderStatus.received&&!pItem.receivedAll?'done':''}}" wx:if="{{item.status!=orderStatus.created}}"> <view class="received-status {{item.status==orderStatus.received&&!pItem.receivedAll?'done':''}}" wx:if="{{item.status!=orderStatus.created}}">
{{ {{
item.status==orderStatus.received?(pItem.receivedAll?'已取件':'待取件'): item.status==orderStatus.received?(pItem.receivedAll?'已取件':'待取件'):
@ -215,7 +218,7 @@
<modal-view titleText="取消订单需联系客户说明原因" editable content-placeholder="请输入退单原因" bind:ok="refund" model:show="{{isShowRefundConfirm}}" titleTextCenter="{{false}}" editRequired/> <modal-view titleText="取消订单需联系客户说明原因" editable content-placeholder="请输入退单原因" bind:ok="refund" model:show="{{isShowRefundConfirm}}" titleTextCenter="{{false}}" editRequired/>
<mark-up id="markupView" class="mark-up"/> <mark-up id="markupView" class="mark-up" bind:success="refreshCurrentList"/>
<background-notice bind:onTrigger="findNewOrder" id="orderBackgroundNotice" <background-notice bind:onTrigger="findNewOrder" id="orderBackgroundNotice"
start="{{isStartLoopOrder}}" bind:initSuccess="bgNoticeSuccess" start="{{isStartLoopOrder}}" bind:initSuccess="bgNoticeSuccess"

View File

@ -165,6 +165,14 @@
font-size: 40rpx; font-size: 40rpx;
font-weight: 600; font-weight: 600;
flex: 1; flex: 1;
display: flex;
gap: 16rpx;
min-width: 0;
white-space: nowrap;
}
.package-list .item .name .text{
overflow: hidden;
text-overflow: ellipsis;
} }
.package-list .item .received-status{ .package-list .item .received-status{
border-left: 1rpx solid #999999; border-left: 1rpx solid #999999;

View File

@ -48,15 +48,7 @@ Component({
photo_urls:urls, photo_urls:urls,
additional_fee_amount:this.data.money additional_fee_amount:this.data.money
}).then(()=>{ }).then(()=>{
this.setData({ this._updateSuccessAction();
reason:'',
money:0,
isShowMarkup:false
});
this.imgUploader.setUploadedImgs([]);
wx.showToast({
title: '保存成功',
})
}); });
}else{ }else{
orderApi.markUp.add({ orderApi.markUp.add({
@ -65,6 +57,12 @@ Component({
photo_urls:urls, photo_urls:urls,
additional_fee_amount:this.data.money additional_fee_amount:this.data.money
}).then((data)=>{ }).then((data)=>{
this._updateSuccessAction();
})
}
},
_updateSuccessAction(){
this.triggerEvent('success');
this.setData({ this.setData({
reason:'', reason:'',
money:0, money:0,
@ -74,8 +72,6 @@ Component({
wx.showToast({ wx.showToast({
title: '保存成功', title: '保存成功',
}) })
})
}
}, },
show(order){ show(order){
this.setData({ this.setData({

View File

@ -45,16 +45,26 @@ Page({
data.pickup_time = this.formatTime(data.pickup_time); data.pickup_time = this.formatTime(data.pickup_time);
data.received_time = this.formatTime(data.received_time); data.received_time = this.formatTime(data.received_time);
const receivedStatusCode = wx.getStorageSync(data.orderid); const receivedStatusCode = wx.getStorageSync(data.orderid);
data.packages.map((item)=>{ data.packages.map((item,index)=>{
//formattedCode 预防有重复 code造成选中问题,如果code全部显示出来可能跑腿的在取了快递之后后面遇到重复的这个会找不到包裹因为已经取了
item.formattedCode = {};
item.pickup_codes.map((code)=>{
if(!item.formattedCode[code]){
item.formattedCode[code] = {
sameCount:item.pickup_codes.filter((c)=>c==code).length
}
}
})
if(receivedStatusCode){ if(receivedStatusCode){
if(item.pickup_codes.length==(receivedStatusCode[item.id]||[]).length){ if(Object.keys(item.formattedCode).length==(receivedStatusCode[item.id]||[]).length){
item.receivedAll = true; item.receivedAll = true;
} }
(receivedStatusCode[item.id]||[]).map((code)=>{ (receivedStatusCode[item.id]||[]).map((code)=>{
item[code] = true; item.formattedCode[code].checked = true;
}) })
} }
}); });
console.log(data.packages);
if(data.status==this.data.orderStatus.created||data.status==this.data.orderStatus.completed||data.status==this.data.orderStatus.unpaid){ if(data.status==this.data.orderStatus.created||data.status==this.data.orderStatus.completed||data.status==this.data.orderStatus.unpaid){
data.address_phone = hidePhoneNumber(data.address_phone); data.address_phone = hidePhoneNumber(data.address_phone);
} }
@ -64,7 +74,6 @@ Page({
orderStep orderStep
}) })
}).catch((res)=>{ }).catch((res)=>{
console.log(res);
this.setData({ this.setData({
refreshTrigger:false refreshTrigger:false
}) })
@ -97,11 +106,11 @@ Page({
const item = this.data.orderDetail.packages[index]; const item = this.data.orderDetail.packages[index];
let receviedStatus = wx.getStorageSync(item.orderid)||{}; let receviedStatus = wx.getStorageSync(item.orderid)||{};
const checkedCode = event.detail.value; const checkedCode = event.detail.value;
item.pickup_codes.map((code)=>{ for(let key in item.formattedCode){
item[code] = !!checkedCode.find((c)=>c==code); item.formattedCode[key].checked = !!checkedCode.find((code)=>code==key);
}) }
let receivedAll = item.pickup_codes.length==checkedCode.length; let receivedAll = Object.keys(item.formattedCode).length==checkedCode.length;
item.receivedAll = receivedAll item.receivedAll = receivedAll;
this.setData({ this.setData({
[`orderDetail.packages[${index}]`]:item [`orderDetail.packages[${index}]`]:item
}); });

View File

@ -1,7 +1,7 @@
<scroll-view refresher-triggered="{{refreshTrigger}}" bindrefresherrefresh="getOrderDetail" <scroll-view refresher-triggered="{{refreshTrigger}}" bindrefresherrefresh="getOrderDetail"
refresher-enabled scroll-y class="order-detail {{orderDetail.is_first_order?'is-new-order':''}}" refresher-enabled scroll-y class="order-detail {{orderDetail.is_first_order?'is-new-order':''}}"
enhanced show-scrollbar="{{false}}"> enhanced show-scrollbar="{{false}}">
<view class="content"> <view class="scroll-view-top-margin"></view>
<view class="page-container address-info"> <view class="page-container address-info">
<view class="title"> <view class="title">
{{orderDetail.community_name}} {{orderDetail.community_name}}
@ -12,7 +12,7 @@
{{orderDetail.address_name}}{{genderKV[orderDetail.address_gender]}}{{orderDetail.address_phone}}丨{{deliverStatusKV[orderDetail.delivery_method]}} {{orderDetail.address_name}}{{genderKV[orderDetail.address_gender]}}{{orderDetail.address_phone}}丨{{deliverStatusKV[orderDetail.delivery_method]}}
</view> </view>
<view class="deliver-time"> <view class="deliver-time">
期望送达 <label class="time">{{orderDetail.delivery_time}}</label> 期望送达<label class="time">{{orderDetail.delivery_time}}</label>
</view> </view>
</view> </view>
<view class="page-container station-info" wx:for="{{orderDetail.packages}}" wx:key="index"> <view class="page-container station-info" wx:for="{{orderDetail.packages}}" wx:key="index">
@ -27,13 +27,18 @@
}} }}
</view> </view>
</view> </view>
<checkbox-group value="{{receivedCodes}}" bindchange="selectPackageCode" <checkbox-group bindchange="selectPackageCode"
data-index="{{index}}"> data-index="{{index}}">
<label class="code-item" wx:for="{{item.pickup_codes}}" wx:key="index" wx:for-item="code"> <label class="code-item" wx:for="{{item.formattedCode}}" wx:key="cIndex"
<view class="code {{orderDetail.status==orderStatus.created||(orderDetail.status==orderStatus.received&&!item[code])?'':'checked'}}"> wx:for-item="formattedItem" wx:for-index="code">
<view class="code {{orderDetail.status==orderStatus.created||(orderDetail.status==orderStatus.received&&!item.formattedCode[code].checked)?'':'checked'}}">
{{orderDetail.status==orderStatus.created?'*********':code}} {{orderDetail.status==orderStatus.created?'*********':code}}
<view wx:if="{{item.formattedCode[code].sameCount>1}}" class="same-count">
x {{item.formattedCode[code].sameCount}} 重复的取件码
</view> </view>
<checkbox checked="{{!!item[code]}}" value="{{code}}" wx:if="{{orderDetail.status==orderStatus.received}}"/> </view>
<checkbox checked="{{!!item.formattedCode[code].checked}}" value="{{code}}" wx:if="{{orderDetail.status==orderStatus.received}}"/>
</label> </label>
</checkbox-group> </checkbox-group>
</view> </view>
@ -100,7 +105,7 @@
<view class="key">取件数量</view> <view class="key">取件数量</view>
<view class="value">{{orderDetail.package_count}}</view> <view class="value">{{orderDetail.package_count}}</view>
</view> </view>
<view class="row"> <view class="row" wx:if="{{orderDetail.additional_fee_amount}}">
<view class="key">加价金额</view> <view class="key">加价金额</view>
<view class="value money money-normal">{{orderDetail.additional_fee_amount}}</view> <view class="value money money-normal">{{orderDetail.additional_fee_amount}}</view>
</view> </view>
@ -110,6 +115,5 @@
</view> </view>
</view> </view>
<view class="scroll-view-dispatch"></view> <view class="scroll-view-dispatch"></view>
</view>
</scroll-view> </scroll-view>

View File

@ -1,9 +1,6 @@
.order-detail{ .order-detail{
height:100vh; height:100vh;
} }
.order-detail .content{
overflow: auto;
}
.address-info .title{ .address-info .title{
font-size: 40rpx; font-size: 40rpx;
font-weight: 600; font-weight: 600;
@ -29,6 +26,7 @@
.address-info .deliver-time .time{ .address-info .deliver-time .time{
color: #ff0000; color: #ff0000;
font-weight: 500; font-weight: 500;
margin-left: 16rpx;
} }
.station-info{ .station-info{
@ -69,6 +67,14 @@
font-weight: 600; font-weight: 600;
flex:1; flex:1;
color: #888888; color: #888888;
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 20rpx;
}
.station-info .code-item .same-count{
font-size: 24rpx;
color:#999;
} }
.station-info .code-item .code.checked{ .station-info .code-item .code.checked{
color:var(--main-font-color); color:var(--main-font-color);

View File

@ -14,7 +14,6 @@
margin-top:40rpx; margin-top:40rpx;
} }
.income-list{ .income-list{
height:100vh;
margin: 0 20rpx; margin: 0 20rpx;
} }
.income-list .item{ .income-list .item{

View File

@ -3,6 +3,7 @@
</view> </view>
<scroll-view scroll-y class="scroll-view" refresher-enabled enhanced show-scrollbar="{{false}}" <scroll-view scroll-y class="scroll-view" refresher-enabled enhanced show-scrollbar="{{false}}"
bindrefresherrefresh="refreshSummary" refresher-triggered="{{refreshTrigger}}"> bindrefresherrefresh="refreshSummary" refresher-triggered="{{refreshTrigger}}">
<view class="scroll-view-top-margin"></view>
<view class="page-container user-info"> <view class="page-container user-info">
<view class="title">账户余额 (元)</view> <view class="title">账户余额 (元)</view>
<view class="_money">{{summary.balance}}</view> <view class="_money">{{summary.balance}}</view>

View File

@ -1,8 +1,6 @@
.withdraw-list{ .withdraw-list{
height:100vh; margin-top:20rpx;
} height: 100vh;
.withdraw-list .scroll-view-content{
padding-top:20rpx;
} }
.withdraw-list .item{ .withdraw-list .item{
padding:40rpx 30rpx; padding:40rpx 30rpx;