diff --git a/apps/admin-web/src/pages/FulfillmentProvidersPage.tsx b/apps/admin-web/src/pages/FulfillmentProvidersPage.tsx index 136a9b7..6856f53 100644 --- a/apps/admin-web/src/pages/FulfillmentProvidersPage.tsx +++ b/apps/admin-web/src/pages/FulfillmentProvidersPage.tsx @@ -7,6 +7,7 @@ import { Input, InputNumber, Modal, + Popconfirm, Select, Space, Table, @@ -68,7 +69,10 @@ export default function FulfillmentProvidersPage() { setLoading(true); try { const res = await request('/admin/fulfillment-providers'); - setRows(res); + setRows(Array.isArray(res) ? res : []); + } catch (e) { + setRows([]); + message.error(e instanceof Error ? e.message : '加载承运商失败'); } finally { setLoading(false); } @@ -94,6 +98,7 @@ export default function FulfillmentProvidersPage() { extraBottleFee: DEFAULT_XFX_LOGISTICS_PRICING.extraBottleFee, boxBottles: DEFAULT_XFX_LOGISTICS_PRICING.boxBottles, boxFee: DEFAULT_XFX_LOGISTICS_PRICING.boxFee, + deliveryHintHtml: '', }); setOpen(true); } @@ -122,6 +127,7 @@ export default function FulfillmentProvidersPage() { extraBottleFee: pricing?.extraBottleFee ?? DEFAULT_XFX_LOGISTICS_PRICING.extraBottleFee, boxBottles: pricing?.boxBottles ?? DEFAULT_XFX_LOGISTICS_PRICING.boxBottles, boxFee: pricing?.boxFee ?? DEFAULT_XFX_LOGISTICS_PRICING.boxFee, + deliveryHintHtml: row.deliveryHintHtml || '', }); setOpen(true); } @@ -144,6 +150,7 @@ export default function FulfillmentProvidersPage() { boxBottles: v.boxBottles != null ? Number(v.boxBottles) : undefined, boxFee: v.boxFee != null ? Number(v.boxFee) : undefined, }, + deliveryHintHtml: v.deliveryHintHtml?.trim() || null, }; if (isXfxProviderCode(String(v.code)) && v.type === FulfillmentProviderType.API) { @@ -176,6 +183,16 @@ export default function FulfillmentProvidersPage() { void load(); } + async function remove(row: FulfillmentProviderDto) { + try { + await request(`/admin/fulfillment-providers/${row.id}`, { method: 'DELETE' }); + message.success('已删除'); + void load(); + } catch (e) { + message.error(e instanceof Error ? e.message : '删除失败'); + } + } + const baseColumns: ColumnsType = [ { title: '编码', dataIndex: 'code', width: 100 }, { @@ -230,11 +247,23 @@ export default function FulfillmentProvidersPage() { { title: '更新时间', dataIndex: 'updatedAt', width: 170, render: fmtTime }, { title: '操作', - width: 80, + width: 140, render: (_, row) => ( - + + + void remove(row)} + > + + + ), }, ]; @@ -288,6 +317,17 @@ export default function FulfillmentProvidersPage() {