forked from yoone/WEB
1
0
Fork 0

Compare commits

..

2 Commits

Author SHA1 Message Date
黄珑 cc1e7d96f2 Improvement: 增加一个上下架状态 2025-09-16 16:37:39 +08:00
黄珑 2265bae239 Feature: 增加上下架功能 2025-09-16 11:39:57 +08:00
4 changed files with 116 additions and 9 deletions

View File

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

View File

@ -1,4 +1,4 @@
import { PRODUCT_STATUS_ENUM } from '@/constants';
import { PRODUCT_STATUS_ENUM, PRODUCT_STOCK_STATUS_ENUM } from '@/constants';
import {
productcontrollerProductbysku,
productcontrollerSearchproducts,
@ -10,6 +10,7 @@ import {
wpproductcontrollerSyncproducts,
wpproductcontrollerUpdateproduct,
wpproductcontrollerUpdatevariation,
wpproductcontrollerUpdatewpproductstate,
} from '@/servers/api/wpProduct';
import { EditOutlined } from '@ant-design/icons';
import {
@ -86,6 +87,7 @@ const List: React.FC = () => {
render: (_, record) => (
<>
<UpdateForm tableRef={actionRef} values={record} />
<UpdateStatus tableRef={actionRef} values={record} />
{record.type === 'simple' && record.sku ? (
<>
<Divider type="vertical" />
@ -232,6 +234,69 @@ 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, stock_status } = values;
try {
const { success, message: errMsg } =
await wpproductcontrollerUpdatewpproductstate(
{
id: initialValues.id,
},
{
status,
stock_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
label="上下架状态"
width="lg"
name="stock_status"
valueEnum={PRODUCT_STOCK_STATUS_ENUM}
/>
</ProForm.Group>
</DrawerForm>
);
};
const UpdateForm: React.FC<{
tableRef: React.MutableRefObject<ActionType | undefined>;
values: API.WpProductDTO;

View File

@ -299,6 +299,7 @@ declare namespace API {
type ordercontrollerGetordersalesParams = {
isSource?: boolean;
exceptPackage?: boolean;
/** 页码 */
current?: number;
/** 每页大小 */
@ -501,7 +502,7 @@ declare namespace API {
/** sku */
sku?: string;
quantity?: number;
exceptPackage?: boolean;
isPackage?: boolean;
isYoone?: boolean;
isZex?: boolean;
size?: number;
@ -522,7 +523,7 @@ declare namespace API {
/** sku */
sku?: string;
quantity?: number;
exceptPackage?: boolean;
isPackage?: boolean;
isYoone?: boolean;
isZex?: boolean;
size?: number;
@ -856,6 +857,7 @@ declare namespace API {
type QueryOrderSalesDTO = {
isSource?: boolean;
exceptPackage?: boolean;
/** 页码 */
current?: number;
/** 每页大小 */
@ -1447,6 +1449,10 @@ declare namespace API {
siteId: string;
};
type wpproductcontrollerUpdatewpproductstateParams = {
id: number;
};
type WpProductDTO = {
/** ID */
id: number;
@ -1468,6 +1474,8 @@ declare namespace API {
| 'auto-draft'
| 'future'
| 'inherit';
/** 上下架状态 */
stockStatus?: 'instock' | 'outofstock' | 'onbackorder';
/** 常规价格 */
regular_price?: number;
/** 销售价格 */

View File

@ -98,3 +98,22 @@ export async function wpproductcontrollerSyncproducts(
...(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 || {}),
});
}