mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-28 21:40:50 +00:00
fix(实物订单): 订单列表展示配送方式并修复已发货误判未发货
This commit is contained in:
parent
5bf347b19e
commit
8a20f32c2b
@ -13,6 +13,7 @@ declare(strict_types=1);
|
||||
namespace modules\product\normal\listener;
|
||||
|
||||
use modules\product\normal\dao\NormalOrderDao;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* 订单中心列表扩展监听器
|
||||
@ -53,36 +54,37 @@ class OrderCenterListExtendListener
|
||||
}
|
||||
}
|
||||
$missingOrderNos = array_filter(array_unique($missingOrderNos));
|
||||
if (empty($missingOrderNos)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 批量查询扩展表获取配送信息
|
||||
try {
|
||||
/** @var NormalOrderDao $orderDao */
|
||||
$orderDao = app(NormalOrderDao::class);
|
||||
$extDeliveryMap = $orderDao->getModel()
|
||||
->whereIn('order_no', $missingOrderNos)
|
||||
->field('order_no, delivery_name, delivery_id, delivery_type')
|
||||
->select()
|
||||
->toArray();
|
||||
$mappedExtDeliveries = [];
|
||||
foreach ($extDeliveryMap as $row) {
|
||||
$orderNo = (string)($row['order_no'] ?? '');
|
||||
if ($orderNo === '') {
|
||||
continue;
|
||||
// 批量查询扩展表获取配送信息(仅存在缺失时查询;查询失败不阻断归一化,仍用 extra_info/中台数据兜底)
|
||||
$mappedExtDeliveries = [];
|
||||
if (!empty($missingOrderNos)) {
|
||||
try {
|
||||
/** @var NormalOrderDao $orderDao */
|
||||
$orderDao = app(NormalOrderDao::class);
|
||||
$extDeliveryMap = $orderDao->getDb()
|
||||
->whereIn('order_no', $missingOrderNos)
|
||||
->field('order_no, delivery_name, delivery_id, delivery_type')
|
||||
->select()
|
||||
->toArray();
|
||||
foreach ($extDeliveryMap as $row) {
|
||||
$orderNo = (string)($row['order_no'] ?? '');
|
||||
if ($orderNo === '') {
|
||||
continue;
|
||||
}
|
||||
$mappedExtDeliveries[$orderNo] = [
|
||||
'delivery_name' => (string)($row['delivery_name'] ?? ''),
|
||||
'delivery_id' => (string)($row['delivery_id'] ?? ''),
|
||||
'delivery_type' => (string)($row['delivery_type'] ?? ''),
|
||||
];
|
||||
}
|
||||
$mappedExtDeliveries[$orderNo] = [
|
||||
'delivery_name' => (string)($row['delivery_name'] ?? ''),
|
||||
'delivery_id' => (string)($row['delivery_id'] ?? ''),
|
||||
'delivery_type' => (string)($row['delivery_type'] ?? ''),
|
||||
];
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('[Normal] OrderCenterListExtend 读取扩展表配送信息失败: ' . $e->getMessage());
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 回填到列表数据(统一顶层 + nested 格式)
|
||||
// 回填到列表数据(统一顶层 + nested 格式),对所有 normal 订单执行,
|
||||
// 保证顶层始终存在 delivery_type/delivery_name/delivery_id,前端列表按顶层字段渲染;
|
||||
// 即使本页全部订单配送信息完整,也不能跳过本循环,否则前端会把已发货订单误判为未发货
|
||||
foreach ($list as &$item) {
|
||||
if (($item['source_type'] ?? '') !== 'normal_order') {
|
||||
continue;
|
||||
|
||||
@ -39,6 +39,9 @@
|
||||
<el-table-column label="订单号" width="180">
|
||||
<template #default="scope">
|
||||
<div>{{ scope.row.order_no }}</div>
|
||||
<div style="font-size: 11px; color: var(--prev-color-text-secondary)">
|
||||
[{{ getShippingTypeLabel(scope.row) }}]
|
||||
</div>
|
||||
<span v-if="scope.row.is_del === 1" style="color: #ed4014; font-size: 12px">用户已删除</span>
|
||||
<span v-if="scope.row.is_cancel === 1 && scope.row.is_del === 0" style="color: #ed4014; font-size: 12px"
|
||||
>用户已取消</span
|
||||
@ -140,7 +143,9 @@
|
||||
>物流查询</a
|
||||
>
|
||||
</template>
|
||||
<span v-else style="color: var(--prev-color-text-secondary)">未发货</span>
|
||||
<span v-else style="color: var(--prev-color-text-secondary)">{{
|
||||
isPickupOrder(scope.row) ? '--' : '未发货'
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" width="160">
|
||||
@ -368,8 +373,23 @@ function canConfirm(row) {
|
||||
return statusCode === 'pending_receive' || statusCode === 'pending_pickup';
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否到店自提订单
|
||||
*/
|
||||
function isPickupOrder(row) {
|
||||
return row?.extra_info?.delivery_type === 'pickup' || row?.shipping_type === 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送方式文案(shipping_type:1快递 2自提 3上门)
|
||||
*/
|
||||
function getShippingTypeLabel(row) {
|
||||
const type = Number(row?.shipping_type ?? 1);
|
||||
return type === 2 ? '到店自提' : type === 3 ? '上门服务' : '快递配送';
|
||||
}
|
||||
|
||||
function getConfirmLabel(row) {
|
||||
return row?.extra_info?.delivery_type === 'pickup' || row?.shipping_type === 2 ? '到店核销' : '确认收货';
|
||||
return isPickupOrder(row) ? '到店核销' : '确认收货';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user