feat(shipping): 前端添加48小时撤销限制
- 添加checkCanCancel函数判断是否在48小时内 - 超过48小时不显示撤销发货按钮 - 点击撤销时如超过48小时提示'需要撤销发货请联系客服'
This commit is contained in:
parent
be915a1507
commit
bcbe7a9b29
@ -91,7 +91,7 @@
|
|||||||
<view class="shipment-status" :class="getStatusClass(item.status)">
|
<view class="shipment-status" :class="getStatusClass(item.status)">
|
||||||
{{ getStatusText(item.status) }}
|
{{ getStatusText(item.status) }}
|
||||||
</view>
|
</view>
|
||||||
<text class="shipment-cancel" v-if="Number(item.status) === 1 && item.batch_no" @tap="onCancelShipping(item)">撤销发货</text>
|
<text class="shipment-cancel" v-if="Number(item.status) === 1 && item.batch_no && item.can_cancel" @tap="onCancelShipping(item)">撤销发货</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -429,6 +429,9 @@ async function loadShipments(uid) {
|
|||||||
productNames = ['未知商品']
|
productNames = ['未知商品']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 判断是否可以撤销(48小时内且状态为待发货)
|
||||||
|
const canCancel = checkCanCancel(s.status, s.created_at)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
batch_no: s.batch_no || '',
|
batch_no: s.batch_no || '',
|
||||||
count: s.count ?? (Array.isArray(s.inventory_ids) ? s.inventory_ids.length : 0),
|
count: s.count ?? (Array.isArray(s.inventory_ids) ? s.inventory_ids.length : 0),
|
||||||
@ -440,7 +443,8 @@ async function loadShipments(uid) {
|
|||||||
created_at: s.created_at || '',
|
created_at: s.created_at || '',
|
||||||
shipped_at: s.shipped_at || '',
|
shipped_at: s.shipped_at || '',
|
||||||
received_at: s.received_at || '',
|
received_at: s.received_at || '',
|
||||||
status: s.status || 1
|
status: s.status || 1,
|
||||||
|
can_cancel: canCancel
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -692,10 +696,39 @@ async function onShip() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查是否可以撤销发货(48小时内)
|
||||||
|
function checkCanCancel(status, createdAt) {
|
||||||
|
// 只有待发货状态(status=1)才能撤销
|
||||||
|
if (Number(status) !== 1) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// 没有创建时间,默认允许撤销(兼容旧数据)
|
||||||
|
if (!createdAt) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const created = new Date(createdAt).getTime()
|
||||||
|
const now = Date.now()
|
||||||
|
const diffHours = (now - created) / (1000 * 60 * 60)
|
||||||
|
// 48小时内可以撤销
|
||||||
|
return diffHours <= 48
|
||||||
|
}
|
||||||
|
|
||||||
function onCancelShipping(shipment) {
|
function onCancelShipping(shipment) {
|
||||||
const user_id = uni.getStorageSync('user_id')
|
const user_id = uni.getStorageSync('user_id')
|
||||||
const batchNo = shipment && shipment.batch_no
|
const batchNo = shipment && shipment.batch_no
|
||||||
if (!user_id || !batchNo) return
|
if (!user_id || !batchNo) return
|
||||||
|
|
||||||
|
// 前端再次检查48小时限制
|
||||||
|
if (!checkCanCancel(shipment.status, shipment.created_at)) {
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '发货申请超过48小时,不允许撤销,需要撤销发货请联系客服',
|
||||||
|
showCancel: false,
|
||||||
|
confirmText: '知道了'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '撤销发货',
|
title: '撤销发货',
|
||||||
content: `确认不再发货,并撤销发货单 ${batchNo} 吗?`,
|
content: `确认不再发货,并撤销发货单 ${batchNo} 吗?`,
|
||||||
@ -711,7 +744,9 @@ function onCancelShipping(shipment) {
|
|||||||
shippedList.value = []
|
shippedList.value = []
|
||||||
await loadShipments(user_id)
|
await loadShipments(user_id)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
uni.showToast({ title: e?.message || '取消失败', icon: 'none' })
|
// 后端返回的错误信息可能包含"联系客服"提示
|
||||||
|
const msg = e?.message || '取消失败'
|
||||||
|
uni.showToast({ title: msg, icon: 'none' })
|
||||||
} finally {
|
} finally {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user