Feature: 增加上下架功能 #16

Merged
longbot merged 1 commits from longbot/WEB:Feature-control-product-status into main 2025-09-16 03:43:40 +00:00
4 changed files with 91 additions and 8 deletions
Showing only changes of commit 2265bae239 - Show all commits

View File

@ -9,23 +9,23 @@ export const PRODUCT_STATUS_ENUM: ProSchemaValueEnumObj = {
}, },
draft: { draft: {
text: '草稿', text: '草稿',
status: 'default', status: 'draft',
}, },
pending: { pending: {
text: '待审核', text: '待审核',
status: 'warning', status: 'pending',
}, },
private: { private: {
text: '私有', text: '私有',
status: 'warning', status: 'private',
}, },
trash: { trash: {
text: '已删除', text: '已删除',
status: 'error', status: 'error',
}, },
'auto-draft': { 'auto-draft': {
text: '字段草稿', text: '自动草稿',
status: 'default', status: 'auto-draft',
}, },
future: { future: {
text: '定时发布', text: '定时发布',
@ -33,7 +33,7 @@ export const PRODUCT_STATUS_ENUM: ProSchemaValueEnumObj = {
}, },
inherit: { inherit: {
text: '继承状态', text: '继承状态',
status: 'default', status: 'inherit',
}, },
}; };

View File

@ -10,6 +10,7 @@ import {
wpproductcontrollerSyncproducts, wpproductcontrollerSyncproducts,
wpproductcontrollerUpdateproduct, wpproductcontrollerUpdateproduct,
wpproductcontrollerUpdatevariation, wpproductcontrollerUpdatevariation,
wpproductcontrollerUpdatewpproductstate,
} from '@/servers/api/wpProduct'; } from '@/servers/api/wpProduct';
import { EditOutlined } from '@ant-design/icons'; import { EditOutlined } from '@ant-design/icons';
import { import {
@ -86,6 +87,7 @@ const List: React.FC = () => {
render: (_, record) => ( render: (_, record) => (
<> <>
<UpdateForm tableRef={actionRef} values={record} /> <UpdateForm tableRef={actionRef} values={record} />
<UpdateStatus tableRef={actionRef} values={record} />
{record.type === 'simple' && record.sku ? ( {record.type === 'simple' && record.sku ? (
<> <>
<Divider type="vertical" /> <Divider type="vertical" />
@ -232,6 +234,62 @@ const SyncForm: React.FC<{
); );
}; };
const UpdateStatus: React.FC<{
tableRef: React.MutableRefObject<ActionType | undefined>;
values: API.WpProductDTO;
}> = ({ tableRef, values: initialValues }) => {
const { message } = App.useApp();
return (
<DrawerForm<API.UpdateProductDTO>
title="修改产品上下架状态"
initialValues={initialValues}
trigger={
<Button type="primary">
<EditOutlined />
</Button>
}
autoFocusFirstInput
drawerProps={{
destroyOnHidden: true,
}}
onFinish={async (values) => {
console.log('values', values);
const { status } = values;
try {
const { success, message: errMsg } =
await wpproductcontrollerUpdatewpproductstate(
{
id: initialValues.id,
},
{ status },
);
if (!success) {
throw new Error(errMsg);
}
message.success('提交成功');
tableRef.current?.reload();
return true;
} catch (error: any) {
message.error(error.message);
}
}}
>
<ProForm.Group>
<ProFormSelect
label="状态"
width="lg"
name="status"
valueEnum={PRODUCT_STATUS_ENUM}
>
</ProFormSelect>
</ProForm.Group>
</DrawerForm>
);
};
const UpdateForm: React.FC<{ const UpdateForm: React.FC<{
tableRef: React.MutableRefObject<ActionType | undefined>; tableRef: React.MutableRefObject<ActionType | undefined>;
values: API.WpProductDTO; values: API.WpProductDTO;

View File

@ -299,6 +299,7 @@ declare namespace API {
type ordercontrollerGetordersalesParams = { type ordercontrollerGetordersalesParams = {
isSource?: boolean; isSource?: boolean;
exceptPackage?: boolean;
/** 页码 */ /** 页码 */
current?: number; current?: number;
/** 每页大小 */ /** 每页大小 */
@ -501,7 +502,7 @@ declare namespace API {
/** sku */ /** sku */
sku?: string; sku?: string;
quantity?: number; quantity?: number;
exceptPackage?: boolean; isPackage?: boolean;
isYoone?: boolean; isYoone?: boolean;
isZex?: boolean; isZex?: boolean;
size?: number; size?: number;
@ -522,7 +523,7 @@ declare namespace API {
/** sku */ /** sku */
sku?: string; sku?: string;
quantity?: number; quantity?: number;
exceptPackage?: boolean; isPackage?: boolean;
isYoone?: boolean; isYoone?: boolean;
isZex?: boolean; isZex?: boolean;
size?: number; size?: number;
@ -856,6 +857,7 @@ declare namespace API {
type QueryOrderSalesDTO = { type QueryOrderSalesDTO = {
isSource?: boolean; isSource?: boolean;
exceptPackage?: boolean;
/** 页码 */ /** 页码 */
current?: number; current?: number;
/** 每页大小 */ /** 每页大小 */
@ -1447,6 +1449,10 @@ declare namespace API {
siteId: string; siteId: string;
}; };
type wpproductcontrollerUpdatewpproductstateParams = {
id: number;
};
type WpProductDTO = { type WpProductDTO = {
/** ID */ /** ID */
id: number; id: number;

View File

@ -98,3 +98,22 @@ export async function wpproductcontrollerSyncproducts(
...(options || {}), ...(options || {}),
}); });
} }
/** 此处后端没有提供注释 POST /wp_product/updateState/${param0} */
export async function wpproductcontrollerUpdatewpproductstate(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.wpproductcontrollerUpdatewpproductstateParams,
body: Record<string, any>,
options?: { [key: string]: any },
) {
const { id: param0, ...queryParams } = params;
return request<API.BooleanRes>(`/wp_product/updateState/${param0}`, {
method: 'POST',
headers: {
'Content-Type': 'text/plain',
},
params: { ...queryParams },
data: body,
...(options || {}),
});
}