diff --git a/pages/mine/msgTips/packageMsg/index.vue b/pages/mine/msgTips/packageMsg/index.vue
index 7b0067a..260c48b 100644
--- a/pages/mine/msgTips/packageMsg/index.vue
+++ b/pages/mine/msgTips/packageMsg/index.vue
@@ -6,7 +6,7 @@
{{ formatSendTime(row.send_time) }}
-
-
-
- {{ logisticsInfo.shipper }}快递 {{ logisticsInfo.logisticCode }}
-
-
-
-
-
-
-
-
-
-
-
- {{ item.AcceptStation }}
- {{ item.AcceptTime }}
-
-
-
-
-
-
-
+
+
diff --git a/pages/order/deliverDetail.vue b/pages/order/deliverDetail.vue
index e4d61f2..3ee8c97 100644
--- a/pages/order/deliverDetail.vue
+++ b/pages/order/deliverDetail.vue
@@ -1,238 +1,310 @@
-
-
-
-
-
-
-
- - 物流公司:
- {{ packageItem.logisticsName }}
-
-
- - 快递单号:
- -
-
-
-
-
-
- -
-
商品名称:{{ item.goodsName }}
- 发货时间:{{ item.logisticsTime }}
- 发货数量:{{ item.deliverNumber }}
-
-
-
-
-
- -
- {{ item.AcceptTime || item.acceptTime }}
- {{ item.AcceptStation || item.remark }}
-
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+ 重试
+
+
+
+
+ 其余商品待商家继续发货
+
+
+
+
+ {{ getPackageTitle(packageItem, index) }}
+
+
+
+ 完成时间:
+ {{ packageItem.logisticsTime }}
+
+
+ 商家说明:
+ {{ packageItem.deliveryRemark }}
+
+
+
+
+
+ 物流公司:
+ {{ packageItem.logisticsName || '-' }}
+
+
+ 运单号:
+ {{ packageItem.logisticsNo || '-' }}
+
+
+ 发货时间:
+ {{ packageItem.logisticsTime }}
+
+
+
+
+
+ {{ item.goodsName }}
+ x{{ item.deliverNumber }}
+
+
+
+
+
+ -
+ {{ item.AcceptTime || item.acceptTime }}
+ {{ item.AcceptStation || item.remark }}
+
+
+
+
+
+
+
+
+ 整单发货
+
+ 物流公司:
+ {{ legacyTraces.shipper || '-' }}
+
+
+ 运单号:
+ {{ legacyTraces.logisticCode || '-' }}
+
+
+
+ -
+ {{ item.AcceptTime || item.acceptTime }}
+ {{ item.AcceptStation || item.remark }}
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
+
+.empty {
+ padding: 40rpx 0;
+}
+
diff --git a/pages/order/orderDetail.vue b/pages/order/orderDetail.vue
index 8f7728b..3ad41e8 100644
--- a/pages/order/orderDetail.vue
+++ b/pages/order/orderDetail.vue
@@ -8,26 +8,24 @@
-
-
-
+
+
券码: {{ order.orderStatus == 'CANCELLED' ? '已失效' : order.verificationCode }}
-
-
- 当前订单有 {{ orderPackage.length }} 个包裹快递
-
-
- 点击此处查看
-
-
-
- {{ '暂无物流信息' }}
+
+ {{ deliveryEntryText }}
+ 点击此处查看
+
+
+ 等待商家发货
-
@@ -131,7 +129,7 @@
取消订单
- 查看物流
+ 查看物流
查看拼团信息
立即付款
确认收货
store.getters.lightColor)
@@ -279,7 +282,6 @@ const orderStatusMap: Record = {
TAKE: { title: '待核验' },
}
-const logisticsList = ref('')
const shareFlag = ref(false)
const order = ref>({})
const cancelShow = ref(false)
@@ -290,7 +292,28 @@ const sn = ref('')
const cancelList = ref([])
const rogShow = ref(false)
const reason = ref('')
-const orderPackage = ref('')
+const orderPackage = ref([])
+const legacyTraces = ref(null)
+
+const allowOperation = computed(() =>
+ getOrderAllowOperation(order.value, orderDetail.value)
+)
+
+const showDeliveryInfoBlock = computed(() => {
+ if (order.value.orderType === 'VIRTUAL') return false
+ if (order.value.deliveryMethod === 'SELF_PICK_UP') return false
+ if (order.value.verificationCode) return true
+ if (order.value.deliveryMethod === 'LOGISTICS') return true
+ return false
+})
+
+const deliveryEntryText = computed(() =>
+ getDeliveryEntryText(
+ orderPackage.value,
+ order.value.orderStatus,
+ legacyTraces.value
+ )
+)
function hideLoadingIfNeeded() {
if (store.state.isShowToast) uni.hideLoading()
@@ -302,12 +325,27 @@ onLoad((options) => {
loadData(orderSnParam)
})
-function getOrderPackage() {
- getPackage(order.value.sn).then((res) => {
- if (res.data.success) {
- orderPackage.value = res.data.result
+async function loadDelivery(orderData: Record) {
+ orderPackage.value = []
+ legacyTraces.value = null
+
+ if (!shouldLoadDelivery(orderData)) {
+ return
+ }
+
+ try {
+ const packageResponse = await getPackage(orderData.sn)
+ const packages = packageResponse?.data?.result || []
+ if (packages.length) {
+ orderPackage.value = packages
+ return
}
- })
+
+ const traceResponse = await getExpress(orderData.sn)
+ legacyTraces.value = traceResponse?.data?.result || null
+ } catch {
+ // 配送信息加载失败时不阻断订单详情展示
+ }
}
function handleClickDeliver() {
@@ -347,12 +385,6 @@ function goToShopPage(val: any) {
})
}
-function loadLogistics(orderSnParam: string) {
- getExpress(orderSnParam).then((res) => {
- logisticsList.value = res.data.result
- })
-}
-
function inviteGroup() {
shareFlag.value = true
}
@@ -371,15 +403,15 @@ function ByUserMessage(orderItem: any) {
function loadData(orderSnParam: string) {
uni.showLoading({ title: '加载中' })
- getOrderDetail(orderSnParam).then((res) => {
+ getOrderDetail(orderSnParam).then(async (res) => {
const result = res.data.result
order.value = result.order
orderGoodsList.value = result.orderItems
orderDetail.value = result
- if (order.value.deliveryMethod === 'LOGISTICS') {
- loadLogistics(orderSnParam)
- getOrderPackage()
+ if (!order.value.allowOperationVO && result.allowOperationVO) {
+ order.value.allowOperationVO = result.allowOperationVO
}
+ await loadDelivery(order.value)
hideLoadingIfNeeded()
})
}
@@ -482,18 +514,6 @@ function onComment(_orderSnText: string) {
})
}
-function onLogistics(orderItem: any) {
- uni.navigateTo({
- url:
- '/pages/mine/msgTips/packageMsg/logisticsDetail?logi_id=' +
- orderItem.logi_id +
- '&ship_no=' +
- orderItem.ship_no +
- '&order_sn=' +
- orderItem.sn,
- })
-}
-
function reasonChange(val: string) {
reason.value = val
}
diff --git a/utils/orderDelivery.js b/utils/orderDelivery.js
new file mode 100644
index 0000000..9ba1f0b
--- /dev/null
+++ b/utils/orderDelivery.js
@@ -0,0 +1,47 @@
+/**
+ * 订单配送展示工具(整单 / 拆单 / 无需配送)
+ */
+
+export function shouldLoadDelivery(order) {
+ return (
+ order?.deliveryMethod === 'LOGISTICS' &&
+ order?.allowOperationVO?.showLogistics === true
+ )
+}
+
+export function isNoDelivery(packageItem) {
+ return (
+ packageItem?.fulfillmentMode === 'NO_DELIVERY' ||
+ packageItem?.logisticsRequired === false
+ )
+}
+
+export function getPackageTitle(packageItem, index) {
+ if (isNoDelivery(packageItem)) return '无需配送'
+ if (packageItem?.fulfillmentMode === 'WHOLE') return '整单发货'
+ if (packageItem?.fulfillmentMode === 'SPLIT') return `包裹 ${index + 1}`
+ return `包裹 ${index + 1}`
+}
+
+export function getDeliveryEntryText(packages, orderStatus, legacyTraces) {
+ if (packages?.length) {
+ const allNoDelivery = packages.every(isNoDelivery)
+ if (allNoDelivery) return '查看配送说明'
+ if (orderStatus === 'PARTS_DELIVERED') {
+ return `已发出 ${packages.length} 个包裹,剩余商品待发货`
+ }
+ return `共 ${packages.length} 个配送包裹`
+ }
+
+ const traces = legacyTraces?.traces
+ if (Array.isArray(traces) && traces.length) {
+ const latest = traces[0]
+ return latest?.AcceptStation || '商家已发货,物流信息同步中'
+ }
+
+ return '商家已发货,物流信息同步中'
+}
+
+export function getOrderAllowOperation(order, orderDetail) {
+ return order?.allowOperationVO || orderDetail?.allowOperationVO || {}
+}