feat(shopOrder): 优化订单搜索和管理功能
- 添加订单编号、用户ID、手机号、昵称等搜索条件 - 修改订单删除条件,仅允许删除已取消的订单 - 更新已退款订单的状态显示为"退货/售后"- 移除多余的环境变量配置
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
VITE_APP_NAME=后台管理(开发环境)
|
VITE_APP_NAME=后台管理(开发环境)
|
||||||
#VITE_API_URL=http://127.0.0.1:9200/api
|
VITE_API_URL=http://127.0.0.1:9200/api
|
||||||
#VITE_SERVER_API_URL=http://127.0.0.1:8000/api
|
#VITE_SERVER_API_URL=http://127.0.0.1:8000/api
|
||||||
|
|
||||||
|
|
||||||
VITE_API_URL=https://cms-api.websoft.top/api
|
#VITE_API_URL=https://cms-api.s209.websoft.top/api
|
||||||
|
|||||||
@@ -157,6 +157,9 @@ export interface ShopOrderParam extends PageParam {
|
|||||||
orderNo?: string;
|
orderNo?: string;
|
||||||
type?: number;
|
type?: number;
|
||||||
phone?: string;
|
phone?: string;
|
||||||
|
userId?: number;
|
||||||
|
payUserId?: number;
|
||||||
|
nickname?: string;
|
||||||
payStatus?: number;
|
payStatus?: number;
|
||||||
orderStatus?: number;
|
orderStatus?: number;
|
||||||
payType?: number;
|
payType?: number;
|
||||||
|
|||||||
@@ -836,8 +836,8 @@ const isRefundStatus = (orderStatus?: number) => {
|
|||||||
|
|
||||||
// 判断是否可以删除订单
|
// 判断是否可以删除订单
|
||||||
const canDeleteOrder = (order: ShopOrder) => {
|
const canDeleteOrder = (order: ShopOrder) => {
|
||||||
// 已完成、已取消、退款成功的订单可以删除
|
// 已完成、已取消、退款成功的订单可以删除 (原来是[1, 2, 6],后面改成只有取消的订单能删除)
|
||||||
return [1, 2, 6].includes(order.orderStatus || 0);
|
return [2].includes(order.orderStatus || 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 判断是否可以申请退款
|
// 判断是否可以申请退款
|
||||||
|
|||||||
@@ -13,6 +13,14 @@
|
|||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- <span>批量删除</span>-->
|
<!-- <span>批量删除</span>-->
|
||||||
<!-- </a-button>-->
|
<!-- </a-button>-->
|
||||||
|
<a-input-search
|
||||||
|
allow-clear
|
||||||
|
v-model:value="where.orderNo"
|
||||||
|
placeholder="订单编号"
|
||||||
|
style="width: 240px"
|
||||||
|
@search="reload"
|
||||||
|
@pressEnter="reload"
|
||||||
|
/>
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="where.type"
|
v-model:value="where.type"
|
||||||
style="width: 150px"
|
style="width: 150px"
|
||||||
@@ -64,11 +72,30 @@
|
|||||||
/>
|
/>
|
||||||
<a-input-search
|
<a-input-search
|
||||||
allow-clear
|
allow-clear
|
||||||
placeholder="请输入关键词"
|
:placeholder="getSearchPlaceholder()"
|
||||||
style="width: 280px"
|
style="width: 320px"
|
||||||
v-model:value="where.keywords"
|
v-model:value="where.keywords"
|
||||||
@search="reload"
|
@search="reload"
|
||||||
/>
|
>
|
||||||
|
<template #addonBefore>
|
||||||
|
<a-select
|
||||||
|
v-model:value="type"
|
||||||
|
style="width: 88px;"
|
||||||
|
@change="onType"
|
||||||
|
>
|
||||||
|
<a-select-option value="">全部</a-select-option>
|
||||||
|
<a-select-option value="userId">
|
||||||
|
用户ID
|
||||||
|
</a-select-option>
|
||||||
|
<a-select-option value="phone">
|
||||||
|
手机号
|
||||||
|
</a-select-option>
|
||||||
|
<a-select-option value="nickname">
|
||||||
|
昵称
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</template>
|
||||||
|
</a-input-search>
|
||||||
<a-button @click="reset">重置</a-button>
|
<a-button @click="reset">重置</a-button>
|
||||||
<a-button @click="handleExport">导出</a-button>
|
<a-button @click="handleExport">导出</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
@@ -106,6 +133,8 @@
|
|||||||
createTimeStart: undefined,
|
createTimeStart: undefined,
|
||||||
createTimeEnd: undefined,
|
createTimeEnd: undefined,
|
||||||
userId: undefined,
|
userId: undefined,
|
||||||
|
payUserId: undefined,
|
||||||
|
nickname: undefined,
|
||||||
phone: undefined,
|
phone: undefined,
|
||||||
payStatus: undefined,
|
payStatus: undefined,
|
||||||
orderStatus: undefined,
|
orderStatus: undefined,
|
||||||
@@ -113,7 +142,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
const reload = () => {
|
const reload = () => {
|
||||||
emit('search', where);
|
emit('search', {...where, keywords: type.value == '' ? where.keywords : undefined});
|
||||||
};
|
};
|
||||||
|
|
||||||
// 批量删除
|
// 批量删除
|
||||||
@@ -121,6 +150,27 @@
|
|||||||
emit('remove');
|
emit('remove');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onType = () => {
|
||||||
|
resetFields();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取搜索框placeholder
|
||||||
|
const getSearchPlaceholder = () => {
|
||||||
|
switch (type.value){
|
||||||
|
case 'userId':
|
||||||
|
where.userId = Number(where.keywords);
|
||||||
|
return '请输入用户ID';
|
||||||
|
case 'phone':
|
||||||
|
where.phone = where.keywords;
|
||||||
|
return '请输入手机号';
|
||||||
|
case 'nickname':
|
||||||
|
where.nickname = where.keywords;
|
||||||
|
return '请输入用户昵称';
|
||||||
|
default:
|
||||||
|
return '请输入搜索内容';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* 搜索 */
|
/* 搜索 */
|
||||||
const search = () => {
|
const search = () => {
|
||||||
const [d1, d2] = dateRange.value ?? [];
|
const [d1, d2] = dateRange.value ?? [];
|
||||||
@@ -143,6 +193,7 @@
|
|||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const orders = ref<ShopOrder[]>([])
|
const orders = ref<ShopOrder[]>([])
|
||||||
const xlsFileName = ref<string>();
|
const xlsFileName = ref<string>();
|
||||||
|
const type = ref('');
|
||||||
|
|
||||||
// 导出
|
// 导出
|
||||||
const handleExport = async () => {
|
const handleExport = async () => {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<a-tab-pane key="undelivered" tab="待发货"/>
|
<a-tab-pane key="undelivered" tab="待发货"/>
|
||||||
<a-tab-pane key="unreceived" tab="待收货"/>
|
<a-tab-pane key="unreceived" tab="待收货"/>
|
||||||
<a-tab-pane key="completed" tab="已完成"/>
|
<a-tab-pane key="completed" tab="已完成"/>
|
||||||
<a-tab-pane key="refunded" tab="已退款"/>
|
<a-tab-pane key="refunded" tab="退货/售后"/>
|
||||||
<a-tab-pane key="cancelled" tab="已取消"/>
|
<a-tab-pane key="cancelled" tab="已取消"/>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
<ele-pro-table
|
<ele-pro-table
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<a-divider type="vertical"/>
|
<a-divider type="vertical"/>
|
||||||
<a
|
<a
|
||||||
@click.stop="openEdit(record)"
|
@click.stop="handleCancelOrder(record)"
|
||||||
>
|
>
|
||||||
<a class="ele-text-warning">
|
<a class="ele-text-warning">
|
||||||
<CloseOutlined /> 取消
|
<CloseOutlined /> 取消
|
||||||
@@ -179,9 +179,9 @@
|
|||||||
<a-divider type="vertical"/>
|
<a-divider type="vertical"/>
|
||||||
<a-popconfirm
|
<a-popconfirm
|
||||||
title="确定要删除此订单吗?删除后无法恢复。"
|
title="确定要删除此订单吗?删除后无法恢复。"
|
||||||
@confirm.stop="remove(record)"
|
@confirm="remove(record)"
|
||||||
>
|
>
|
||||||
<a class="ele-text-danger">
|
<a class="ele-text-danger" @click.stop>
|
||||||
<DeleteOutlined /> 删除
|
<DeleteOutlined /> 删除
|
||||||
</a>
|
</a>
|
||||||
</a-popconfirm>
|
</a-popconfirm>
|
||||||
@@ -399,7 +399,7 @@ const onTabs = () => {
|
|||||||
filterParams.statusFilter = 8;
|
filterParams.statusFilter = 8;
|
||||||
break;
|
break;
|
||||||
case 'refunded':
|
case 'refunded':
|
||||||
// 已退款:order_status = 6
|
// 退款/售后:order_status = 6
|
||||||
filterParams.statusFilter = 6;
|
filterParams.statusFilter = 6;
|
||||||
break;
|
break;
|
||||||
case 'deleted':
|
case 'deleted':
|
||||||
@@ -464,8 +464,8 @@ const isRefundStatus = (orderStatus?: number) => {
|
|||||||
|
|
||||||
// 判断是否可以删除订单
|
// 判断是否可以删除订单
|
||||||
const canDeleteOrder = (order: ShopOrder) => {
|
const canDeleteOrder = (order: ShopOrder) => {
|
||||||
// 已完成、已取消、退款成功的订单可以删除
|
// 已完成、已取消、退款成功的订单可以删除 (原来是[1, 2, 6],后面改成只有取消的订单能删除)
|
||||||
return [1, 2, 6].includes(order.orderStatus || 0);
|
return [2].includes(order.orderStatus || 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 订单操作方法 */
|
/* 订单操作方法 */
|
||||||
|
|||||||
Reference in New Issue
Block a user