fix(shopOrder): 修复初次加载订单状态筛选问题
- 提取 getStatusFilterByTab 函数实现 tab key 与 statusFilter 的映射 - datasource 函数中当 statusFilter 未设置时,自动根据 activeKey 推导赋值 - onTabs 函数简化为复用 getStatusFilterByTab 函数,减少重复代码 - 确保初次加载时待发货等状态的 tab 能正确筛选订单数据
This commit is contained in:
@@ -435,6 +435,23 @@
|
||||
const { enabled: notifyEnabled, toggle: onNotifyToggle, testNotify: onTestNotify } = useOrderNotify({
|
||||
onNewOrder: () => reload()
|
||||
});
|
||||
// 根据tab key获取对应的statusFilter值
|
||||
// undefined全部,0待付款,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除,8已关闭
|
||||
const getStatusFilterByTab = (key: string): number | undefined => {
|
||||
const filterMap: Record<string, number> = {
|
||||
unpaid: 0,
|
||||
undelivered: 1,
|
||||
unverified: 2,
|
||||
unreceived: 3,
|
||||
unevaluated: 4,
|
||||
completed: 5,
|
||||
refunded: 6,
|
||||
deleted: 7,
|
||||
cancelled: 8
|
||||
};
|
||||
return filterMap[key];
|
||||
};
|
||||
|
||||
// 表格数据源
|
||||
const datasource: DatasourceFunction = ({
|
||||
page,
|
||||
@@ -447,6 +464,10 @@
|
||||
where.status = filters.status;
|
||||
}
|
||||
where.type = 0;
|
||||
// 确保初次加载时也按当前tab筛选(statusFilter未设置时从activeKey推导)
|
||||
if (where.statusFilter === undefined) {
|
||||
where.statusFilter = getStatusFilterByTab(activeKey.value);
|
||||
}
|
||||
return pageShopOrder({
|
||||
...where,
|
||||
...orders,
|
||||
@@ -527,54 +548,11 @@
|
||||
};
|
||||
|
||||
const onTabs = () => {
|
||||
// 使用statusFilter进行筛选,这是后端专门为订单状态筛选设计的字段
|
||||
const filterParams: Record<string, any> = {};
|
||||
|
||||
// 根据后端 statusFilter 的值对应:
|
||||
// undefined全部,0待付款,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除
|
||||
switch (activeKey.value) {
|
||||
case 'all':
|
||||
// 全部订单:不传statusFilter参数
|
||||
// filterParams.statusFilter = undefined; // 不设置该字段
|
||||
break;
|
||||
case 'unpaid':
|
||||
// 待付款:pay_status = false
|
||||
filterParams.statusFilter = 0;
|
||||
break;
|
||||
case 'undelivered':
|
||||
// 待发货:pay_status = true AND delivery_status = 10
|
||||
filterParams.statusFilter = 1;
|
||||
break;
|
||||
case 'unverified':
|
||||
// 待核销:pay_status = true AND delivery_status = 10 (与待发货相同)
|
||||
filterParams.statusFilter = 2;
|
||||
break;
|
||||
case 'unreceived':
|
||||
// 待收货:pay_status = true AND delivery_status = 20
|
||||
filterParams.statusFilter = 3;
|
||||
break;
|
||||
case 'unevaluated':
|
||||
// 待评价:order_status = 1 (与已完成相同)
|
||||
filterParams.statusFilter = 4;
|
||||
break;
|
||||
case 'completed':
|
||||
// 已完成:order_status = 1
|
||||
filterParams.statusFilter = 5;
|
||||
break;
|
||||
case 'cancelled':
|
||||
// 已关闭:order_status = 2
|
||||
filterParams.statusFilter = 8;
|
||||
break;
|
||||
case 'refunded':
|
||||
// 退款/售后:order_status = 6
|
||||
filterParams.statusFilter = 6;
|
||||
break;
|
||||
case 'deleted':
|
||||
// 已删除:deleted = 1
|
||||
filterParams.statusFilter = 7;
|
||||
break;
|
||||
const sf = getStatusFilterByTab(activeKey.value);
|
||||
if (sf !== undefined) {
|
||||
filterParams.statusFilter = sf;
|
||||
}
|
||||
|
||||
reload(filterParams);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user