修改订单详情取件码重复问题,优化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;
overflow: hidden;
}
.scroll-view-top-margin{
height:1rpx;
}
.bottom-bar-v2{
padding:24rpx;
background-color: #fff;

View File

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

View File

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

View File

@ -48,7 +48,10 @@
</view>
<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="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}}">
{{
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/>
<mark-up id="markupView" class="mark-up"/>
<mark-up id="markupView" class="mark-up" bind:success="refreshCurrentList"/>
<background-notice bind:onTrigger="findNewOrder" id="orderBackgroundNotice"
start="{{isStartLoopOrder}}" bind:initSuccess="bgNoticeSuccess"

View File

@ -165,6 +165,14 @@
font-size: 40rpx;
font-weight: 600;
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{
border-left: 1rpx solid #999999;

View File

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

View File

@ -45,16 +45,26 @@ Page({
data.pickup_time = this.formatTime(data.pickup_time);
data.received_time = this.formatTime(data.received_time);
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(item.pickup_codes.length==(receivedStatusCode[item.id]||[]).length){
if(Object.keys(item.formattedCode).length==(receivedStatusCode[item.id]||[]).length){
item.receivedAll = true;
}
(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){
data.address_phone = hidePhoneNumber(data.address_phone);
}
@ -64,7 +74,6 @@ Page({
orderStep
})
}).catch((res)=>{
console.log(res);
this.setData({
refreshTrigger:false
})
@ -97,11 +106,11 @@ Page({
const item = this.data.orderDetail.packages[index];
let receviedStatus = wx.getStorageSync(item.orderid)||{};
const checkedCode = event.detail.value;
item.pickup_codes.map((code)=>{
item[code] = !!checkedCode.find((c)=>c==code);
})
let receivedAll = item.pickup_codes.length==checkedCode.length;
item.receivedAll = receivedAll
for(let key in item.formattedCode){
item.formattedCode[key].checked = !!checkedCode.find((code)=>code==key);
}
let receivedAll = Object.keys(item.formattedCode).length==checkedCode.length;
item.receivedAll = receivedAll;
this.setData({
[`orderDetail.packages[${index}]`]:item
});

View File

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

View File

@ -1,9 +1,6 @@
.order-detail{
height:100vh;
}
.order-detail .content{
overflow: auto;
}
.address-info .title{
font-size: 40rpx;
font-weight: 600;
@ -29,6 +26,7 @@
.address-info .deliver-time .time{
color: #ff0000;
font-weight: 500;
margin-left: 16rpx;
}
.station-info{
@ -69,6 +67,14 @@
font-weight: 600;
flex:1;
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{
color:var(--main-font-color);

View File

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

View File

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

View File

@ -1,9 +1,7 @@
.withdraw-list{
margin-top:20rpx;
height: 100vh;
}
.withdraw-list .scroll-view-content{
padding-top:20rpx;
}
.withdraw-list .item{
padding:40rpx 30rpx;
background-color: #ffffff;