forked from yoone/WEB
1
0
Fork 0

Compare commits

..

6 Commits

Author SHA1 Message Date
黄珑 a8ba59ba88 Fix: fix for api 2025-11-08 11:56:33 +08:00
zhuotianyuan adbc087171 20251014-zty-换货代码 2025-10-14 17:14:38 +08:00
tikkhun f78a68414d refactor(docs): 移除旧版项目文档和优化订单状态标签
删除不再使用的项目文档中心和相关技术文档
在订单列表页面添加退款状态标签的空行以改善代码可读性
2025-10-14 06:54:23 +00:00
tikkhun 77590f2b22 refactor(Order/List): 更新退款相关状态标签为更简洁的表达
refund_approved 已退款
refund_cancelled 已完成
2025-10-14 06:54:23 +00:00
tikkhun 972e127dc2 build: 添加 code-inspector-plugin 依赖及配置
添加 code-inspector-plugin 作为开发依赖,并在 webpack 配置中启用该插件以增强代码检查能力

refactor(Order/List): 更新退款相关状态标签为更简洁的表达

refund_approved 已退款
refund_cancelled 已完成

chore: 在.gitignore中添加docs目录

忽略生成的文档目录以避免将其提交到版本控制
2025-10-14 14:32:17 +08:00
zhuotianyuan e5794c3d25 20251013-zty-换货功能前台代码 2025-10-13 16:53:05 +08:00
9 changed files with 155 additions and 45 deletions

2
.gitignore vendored
View File

@ -14,3 +14,5 @@
/package-lock.json /package-lock.json
/yarn.lock /yarn.lock
*.yaml *.yaml
#
/docs

View File

@ -4,6 +4,7 @@ const isDev = process.env.NODE_ENV === 'development';
const UMI_APP_API_URL = isDev const UMI_APP_API_URL = isDev
? 'http://localhost:7001' ? 'http://localhost:7001'
: 'https://api.yoone.ca'; : 'https://api.yoone.ca';
import { codeInspectorPlugin } from 'code-inspector-plugin';
export default defineConfig({ export default defineConfig({
hash: true, hash: true,
@ -18,6 +19,13 @@ export default defineConfig({
define: { define: {
UMI_APP_API_URL, UMI_APP_API_URL,
}, },
chainWebpack(config) {
config.plugin('code-inspector-plugin').use(
codeInspectorPlugin({
bundler: 'webpack',
})
);
},
routes: [ routes: [
{ path: '/', redirect: '/home' }, { path: '/', redirect: '/home' },
{ name: '追踪', path: '/track', component: './Track', layout: false }, { name: '追踪', path: '/track', component: './Track', layout: false },

View File

@ -32,6 +32,7 @@
"devDependencies": { "devDependencies": {
"@types/react": "^18.0.33", "@types/react": "^18.0.33",
"@types/react-dom": "^18.0.11", "@types/react-dom": "^18.0.11",
"code-inspector-plugin": "^1.2.10",
"husky": "^9", "husky": "^9",
"lint-staged": "^13.2.0", "lint-staged": "^13.2.0",
"prettier": "^2.8.7", "prettier": "^2.8.7",

View File

@ -27,6 +27,7 @@ import {
ordercontrollerUpdateorderitems, ordercontrollerUpdateorderitems,
} from '@/servers/api/order'; } from '@/servers/api/order';
import { productcontrollerSearchproducts } from '@/servers/api/product'; import { productcontrollerSearchproducts } from '@/servers/api/product';
import { wpproductcontrollerSearchproducts } from '@/servers/api/wpProduct';
import { sitecontrollerAll } from '@/servers/api/site'; import { sitecontrollerAll } from '@/servers/api/site';
import { stockcontrollerGetallstockpoints } from '@/servers/api/stock'; import { stockcontrollerGetallstockpoints } from '@/servers/api/stock';
import { formatShipmentState, formatSource } from '@/utils/format'; import { formatShipmentState, formatSource } from '@/utils/format';
@ -127,12 +128,15 @@ const ListPage: React.FC = () => {
label: '已申请退款', label: '已申请退款',
}, },
{ {
key: 'refund_approved', key: 'refund_approved',
label: '退款申请已通过', label: "已退款",
// label: '退款申请已通过',
}, },
{ {
key: 'refund_cancelled', key: 'refund_cancelled',
label: '已取消退款', label: "已完成"
// label: '已取消退款',
}, },
// { // {
// key: 'pending_refund', // key: 'pending_refund',
@ -222,6 +226,11 @@ const ListPage: React.FC = () => {
title: '联系电话', title: '联系电话',
dataIndex: 'billing_phone', dataIndex: 'billing_phone',
render: (_, record) => record.shipping?.phone || record.billing?.phone, render: (_, record) => record.shipping?.phone || record.billing?.phone,
},
{
title: '换货次数',
dataIndex: 'exchange_frequency',
hideInSearch: true,
}, },
{ {
title: '州', title: '州',
@ -289,7 +298,7 @@ const ListPage: React.FC = () => {
record.orderStatus, record.orderStatus,
) ? ( ) ? (
<> <>
<Shipping id={record.id as number} tableRef={actionRef} setActiveLine={setActiveLine}/> <Shipping id={record.id as number} tableRef={actionRef} setActiveLine={setActiveLine} />
<Divider type="vertical" /> <Divider type="vertical" />
</> </>
) : ( ) : (
@ -419,7 +428,7 @@ const ListPage: React.FC = () => {
actionRef={actionRef} actionRef={actionRef}
rowKey="id" rowKey="id"
rowClassName={(record) => { rowClassName={(record) => {
return record.id === activeLine ? styles['selected-line-order-protable']: ''; return record.id === activeLine ? styles['selected-line-order-protable'] : '';
}} }}
toolBarRender={() => [ toolBarRender={() => [
<CreateOrder tableRef={actionRef} />, <CreateOrder tableRef={actionRef} />,
@ -765,7 +774,8 @@ const Detail: React.FC<{
<ProDescriptions.Item label="金额" dataIndex="total" /> <ProDescriptions.Item label="金额" dataIndex="total" />
<ProDescriptions.Item label="客户邮箱" dataIndex="customer_email" /> <ProDescriptions.Item label="客户邮箱" dataIndex="customer_email" />
<ProDescriptions.Item label="联系电话" span={3} <ProDescriptions.Item label="联系电话" span={3}
render={(_, record) => { return ( render={(_, record) => {
return (
<div> <div>
<span> <span>
{record?.shipping?.phone || record?.billing?.phone || '-'} {record?.shipping?.phone || record?.billing?.phone || '-'}
@ -1980,17 +1990,19 @@ const SalesChange: React.FC<{
}, },
[], [],
); );
// setOptions( // setOptions(
// data.sales?.map((item) => ({ // data.sales?.map((item) => ({
// label: item.name, // label: item.name,
// value: item.sku, // value: item.sku,
// })) || [], // })) || [],
// ); // );
return { ...data }; return { ...data};
}} }}
onFinish={async (formData: any) => { onFinish={async (formData: any) => {
const { sales } = formData; const { sales } = formData;
const res = await ordercontrollerUpdateorderitems({orderId:id}, sales); const res = await ordercontrollerUpdateorderitems({ orderId: id }, sales);
if (!res.success) { if (!res.success) {
message.error(`更新货物信息失败: ${res.message}`); message.error(`更新货物信息失败: ${res.message}`);
return false; return false;
@ -2000,13 +2012,65 @@ const SalesChange: React.FC<{
return true; return true;
}} }}
> >
<ProFormList
label="换货订单"
name="items"
>
<ProForm.Group>
<ProFormSelect
params={{ }}
request={async ({ keyWords }) => {
try {
const { data } = await wpproductcontrollerSearchproducts({
name: keyWords,
});
return (
data?.map((item) => {
return {
label: `${item.name}`,
value: item?.sku,
};
})
);
} catch (error) {
return [];
}
}}
name="sku"
label="订单"
placeholder="请选择订单"
tooltip="至少输入3个字符"
fieldProps={{
showSearch: true,
filterOption: false,
}}
debounceTime={300} // 防抖,减少请求频率
rules={[{ required: true, message: '请选择订单' }]}
/>
<ProFormDigit
name="quantity"
colProps={{ span: 12 }}
label="订单数量"
placeholder="请输入数量"
rules={[{ required: true, message: '请输入数量' }]}
fieldProps={{
precision: 0,
}}
/>
</ProForm.Group>
</ProFormList>
<ProFormList <ProFormList
label="换货产品" label="换货产品"
name="sales" name="sales"
> >
<ProForm.Group> <ProForm.Group>
<ProFormSelect <ProFormSelect
params={{ }} params={{}}
request={async ({ keyWords }) => { request={async ({ keyWords }) => {
try { try {
const { data } = await productcontrollerSearchproducts({ const { data } = await productcontrollerSearchproducts({

View File

@ -45,6 +45,16 @@ export async function ordercontrollerCreatenote(
}); });
} }
/** 此处后端没有提供注释 GET /order/excel/price */
export async function ordercontrollerGetorderspriceinexcel(options?: {
[key: string]: any;
}) {
return request<any>('/order/excel/price', {
method: 'GET',
...(options || {}),
});
}
/** 此处后端没有提供注释 POST /order/getOrderByNumber */ /** 此处后端没有提供注释 POST /order/getOrderByNumber */
export async function ordercontrollerGetorderbynumber( export async function ordercontrollerGetorderbynumber(
body: string, body: string,

View File

@ -235,7 +235,6 @@ declare namespace API {
total_tax?: number; total_tax?: number;
customer_id?: number; customer_id?: number;
customer_email?: string; customer_email?: string;
billing_phone?: string;
order_key?: string; order_key?: string;
billing?: OrderAddress; billing?: OrderAddress;
shipping?: OrderAddress; shipping?: OrderAddress;
@ -258,6 +257,8 @@ declare namespace API {
device_type?: string; device_type?: string;
source_type?: string; source_type?: string;
utm_source?: string; utm_source?: string;
is_exchange?: boolean;
exchange_frequency?: number;
/** 创建时间 */ /** 创建时间 */
createdAt: string; createdAt: string;
/** 更新时间 */ /** 更新时间 */
@ -333,9 +334,9 @@ declare namespace API {
| 'after_sale_pending' | 'after_sale_pending'
| 'pending_reshipment' | 'pending_reshipment'
| 'pending_refund' | 'pending_refund'
| 'refund_requested' | 'return-requested'
| 'refund_approved' | 'return-approved'
| 'refund_cancelled'; | 'return-cancelled';
payment_method?: string; payment_method?: string;
}; };
@ -377,7 +378,6 @@ declare namespace API {
total_tax?: number; total_tax?: number;
customer_id?: number; customer_id?: number;
customer_email?: string; customer_email?: string;
billing_phone?: string;
order_key?: string; order_key?: string;
billing?: OrderAddress; billing?: OrderAddress;
shipping?: OrderAddress; shipping?: OrderAddress;
@ -400,6 +400,8 @@ declare namespace API {
device_type?: string; device_type?: string;
source_type?: string; source_type?: string;
utm_source?: string; utm_source?: string;
is_exchange?: boolean;
exchange_frequency?: number;
/** 创建时间 */ /** 创建时间 */
createdAt: string; createdAt: string;
/** 更新时间 */ /** 更新时间 */
@ -861,9 +863,9 @@ declare namespace API {
| 'after_sale_pending' | 'after_sale_pending'
| 'pending_reshipment' | 'pending_reshipment'
| 'pending_refund' | 'pending_refund'
| 'refund_requested' | 'return-requested'
| 'refund_approved' | 'return-approved'
| 'refund_cancelled'; | 'return-cancelled';
payment_method?: string; payment_method?: string;
}; };
@ -1415,6 +1417,8 @@ declare namespace API {
sale_price?: number; sale_price?: number;
/** 是否促销中 */ /** 是否促销中 */
on_sale?: boolean; on_sale?: boolean;
/** 是否删除 */
on_delete?: boolean;
/** 创建时间 */ /** 创建时间 */
createdAt: string; createdAt: string;
/** 更新时间 */ /** 更新时间 */
@ -1448,6 +1452,10 @@ declare namespace API {
| 'inherit'; | 'inherit';
}; };
type wpproductcontrollerSearchproductsParams = {
name?: string;
};
type wpproductcontrollerSetconstitutionParams = { type wpproductcontrollerSetconstitutionParams = {
id: number; id: number;
}; };
@ -1500,6 +1508,8 @@ declare namespace API {
sale_price?: number; sale_price?: number;
/** 是否促销中 */ /** 是否促销中 */
on_sale?: boolean; on_sale?: boolean;
/** 是否删除 */
on_delete?: boolean;
/** 产品类型 */ /** 产品类型 */
type?: 'simple' | 'variable' | 'woosb'; type?: 'simple' | 'variable' | 'woosb';
/** 创建时间 */ /** 创建时间 */

View File

@ -36,6 +36,21 @@ export async function wpproductcontrollerGetwpproducts(
}); });
} }
/** 此处后端没有提供注释 GET /wp_product/search */
export async function wpproductcontrollerSearchproducts(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.wpproductcontrollerSearchproductsParams,
options?: { [key: string]: any },
) {
return request<API.ProductsRes>('/wp_product/search', {
method: 'GET',
params: {
...params,
},
...(options || {}),
});
}
/** 此处后端没有提供注释 PUT /wp_product/siteId/${param1}/products/${param0} */ /** 此处后端没有提供注释 PUT /wp_product/siteId/${param1}/products/${param0} */
export async function wpproductcontrollerUpdateproduct( export async function wpproductcontrollerUpdateproduct(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象) // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)