@chenchaolong/plugin-trade-compliance-workbench 1.0.52 → 1.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/analytics-export.d.ts.map +1 -1
  3. package/dist/lib/analytics-export.js +1 -3
  4. package/dist/lib/analytics-export.js.map +1 -1
  5. package/dist/lib/analytics-query.d.ts.map +1 -1
  6. package/dist/lib/analytics-query.js +13 -20
  7. package/dist/lib/analytics-query.js.map +1 -1
  8. package/dist/lib/catalog-import/confidence.d.ts +1 -0
  9. package/dist/lib/catalog-import/confidence.d.ts.map +1 -1
  10. package/dist/lib/catalog-import/confidence.js +12 -0
  11. package/dist/lib/catalog-import/confidence.js.map +1 -1
  12. package/dist/lib/catalog-import/docx.parser.d.ts.map +1 -1
  13. package/dist/lib/catalog-import/docx.parser.js +7 -6
  14. package/dist/lib/catalog-import/docx.parser.js.map +1 -1
  15. package/dist/lib/catalog-import/pdf-layout.parser.d.ts.map +1 -1
  16. package/dist/lib/catalog-import/pdf-layout.parser.js +8 -7
  17. package/dist/lib/catalog-import/pdf-layout.parser.js.map +1 -1
  18. package/dist/lib/catalog-import/spreadsheet.parser.d.ts.map +1 -1
  19. package/dist/lib/catalog-import/spreadsheet.parser.js +12 -13
  20. package/dist/lib/catalog-import/spreadsheet.parser.js.map +1 -1
  21. package/dist/lib/demo-data.definitions.js +1 -1
  22. package/dist/lib/demo-data.definitions.js.map +1 -1
  23. package/dist/lib/entities/catalog.entity.d.ts +7 -1
  24. package/dist/lib/entities/catalog.entity.d.ts.map +1 -1
  25. package/dist/lib/entities/catalog.entity.js +26 -2
  26. package/dist/lib/entities/catalog.entity.js.map +1 -1
  27. package/dist/lib/entities/customer.entity.js.map +1 -1
  28. package/dist/lib/entities/procurement.entity.js.map +1 -1
  29. package/dist/lib/remote-components/trade-compliance-workbench/app.css +1 -1
  30. package/dist/lib/remote-components/trade-compliance-workbench/app.js +8 -8
  31. package/dist/lib/remote-ui/action-execution.d.ts +3 -0
  32. package/dist/lib/remote-ui/action-execution.d.ts.map +1 -1
  33. package/dist/lib/remote-ui/action-execution.js +21 -1
  34. package/dist/lib/remote-ui/action-execution.js.map +1 -1
  35. package/dist/lib/remote-ui/app-source.js +168 -151
  36. package/dist/lib/remote-ui/app-source.js.map +1 -1
  37. package/dist/lib/remote-ui/bridge.d.ts.map +1 -1
  38. package/dist/lib/remote-ui/components/forms.d.ts +5 -2
  39. package/dist/lib/remote-ui/components/forms.d.ts.map +1 -1
  40. package/dist/lib/remote-ui/components/forms.js +4 -4
  41. package/dist/lib/remote-ui/components/forms.js.map +1 -1
  42. package/dist/lib/remote-ui/components/layout.d.ts.map +1 -1
  43. package/dist/lib/remote-ui/components/layout.js +31 -4
  44. package/dist/lib/remote-ui/components/layout.js.map +1 -1
  45. package/dist/lib/remote-ui/components/task-status.js +2 -2
  46. package/dist/lib/remote-ui/components/task-status.js.map +1 -1
  47. package/dist/lib/remote-ui/contract-import.d.ts +1 -0
  48. package/dist/lib/remote-ui/contract-import.d.ts.map +1 -1
  49. package/dist/lib/remote-ui/contract-import.js.map +1 -1
  50. package/dist/lib/remote-ui/contracts.d.ts +11 -0
  51. package/dist/lib/remote-ui/contracts.d.ts.map +1 -1
  52. package/dist/lib/remote-ui/import-task-status.d.ts +5 -2
  53. package/dist/lib/remote-ui/import-task-status.d.ts.map +1 -1
  54. package/dist/lib/remote-ui/import-task-status.js +13 -8
  55. package/dist/lib/remote-ui/import-task-status.js.map +1 -1
  56. package/dist/lib/remote-ui/pages/analytics-detail-list.d.ts.map +1 -1
  57. package/dist/lib/remote-ui/pages/analytics-detail-list.js.map +1 -1
  58. package/dist/lib/remote-ui/pages/catalog-import-history.d.ts +47 -2
  59. package/dist/lib/remote-ui/pages/catalog-import-history.d.ts.map +1 -1
  60. package/dist/lib/remote-ui/pages/catalog-import-history.js +128 -8
  61. package/dist/lib/remote-ui/pages/catalog-import-history.js.map +1 -1
  62. package/dist/lib/remote-ui/pages/catalogs.css +55 -1
  63. package/dist/lib/remote-ui/pages/catalogs.d.ts +7 -4
  64. package/dist/lib/remote-ui/pages/catalogs.d.ts.map +1 -1
  65. package/dist/lib/remote-ui/pages/catalogs.js +40 -19
  66. package/dist/lib/remote-ui/pages/catalogs.js.map +1 -1
  67. package/dist/lib/remote-ui/pages/contracts.d.ts.map +1 -1
  68. package/dist/lib/remote-ui/pages/contracts.js +0 -16
  69. package/dist/lib/remote-ui/pages/contracts.js.map +1 -1
  70. package/dist/lib/remote-ui/pages/files-prototype.css +2 -2
  71. package/dist/lib/remote-ui/pages/files.d.ts +1 -1
  72. package/dist/lib/remote-ui/pages/files.d.ts.map +1 -1
  73. package/dist/lib/remote-ui/pages/files.js +6 -6
  74. package/dist/lib/remote-ui/pages/files.js.map +1 -1
  75. package/dist/lib/remote-ui/pages/home.d.ts.map +1 -1
  76. package/dist/lib/remote-ui/pages/home.js +2 -2
  77. package/dist/lib/remote-ui/pages/home.js.map +1 -1
  78. package/dist/lib/remote-ui/pages/procurement.d.ts +6 -1
  79. package/dist/lib/remote-ui/pages/procurement.d.ts.map +1 -1
  80. package/dist/lib/remote-ui/pages/procurement.js +77 -16
  81. package/dist/lib/remote-ui/pages/procurement.js.map +1 -1
  82. package/dist/lib/remote-ui/procurement-contracts.d.ts +7 -1
  83. package/dist/lib/remote-ui/procurement-contracts.d.ts.map +1 -1
  84. package/dist/lib/remote-ui/procurement-contracts.js.map +1 -1
  85. package/dist/lib/remote-ui/sidebar-state.d.ts +1 -0
  86. package/dist/lib/remote-ui/sidebar-state.d.ts.map +1 -1
  87. package/dist/lib/remote-ui/sidebar-state.js +3 -0
  88. package/dist/lib/remote-ui/sidebar-state.js.map +1 -1
  89. package/dist/lib/sales-file.service.js +1 -1
  90. package/dist/lib/sales-file.service.js.map +1 -1
  91. package/dist/lib/schema-maintenance.d.ts.map +1 -1
  92. package/dist/lib/schema-maintenance.js +125 -0
  93. package/dist/lib/schema-maintenance.js.map +1 -1
  94. package/dist/lib/types.d.ts +3 -0
  95. package/dist/lib/types.d.ts.map +1 -1
  96. package/dist/lib/types.js +1 -0
  97. package/dist/lib/types.js.map +1 -1
  98. package/dist/lib/workbench-action-contract.d.ts +1 -1
  99. package/dist/lib/workbench-action-contract.d.ts.map +1 -1
  100. package/dist/lib/workbench-action-contract.js +3 -1
  101. package/dist/lib/workbench-action-contract.js.map +1 -1
  102. package/dist/lib/workbench-view.provider.d.ts +12 -9
  103. package/dist/lib/workbench-view.provider.d.ts.map +1 -1
  104. package/dist/lib/workbench-view.provider.js +38 -6
  105. package/dist/lib/workbench-view.provider.js.map +1 -1
  106. package/dist/lib/workbench.middleware.js +7 -7
  107. package/dist/lib/workbench.middleware.js.map +1 -1
  108. package/dist/lib/workbench.service.d.ts +31 -3
  109. package/dist/lib/workbench.service.d.ts.map +1 -1
  110. package/dist/lib/workbench.service.js +756 -145
  111. package/dist/lib/workbench.service.js.map +1 -1
  112. package/package.json +2 -1
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  export const RISK_OPERATION_ITEMS = [
3
- { key: 'catalog-replace', title: '覆盖管控目录', description: '确认目录类型和被覆盖的历史文件。覆盖后新目录立即生效,原目录数据只在后台留痕,前端暂不支持恢复。', icon: 'ri-folder-open-line' },
3
+ { key: 'catalog-replace', title: '覆盖管控目录', description: '确认目录类型和被覆盖的历史文件。覆盖批次先作为草稿解析和复核,审核发布后生效;原有效目录在发布完成前持续可用。', icon: 'ri-folder-open-line' },
4
4
  { key: 'duplicate-contract', title: '重复上传合同', description: '采购合同和客户合同均不允许覆盖;发现相同合同编码时系统会阻止上传。确需重传时必须先逻辑删除旧合同。', icon: 'ri-upload-cloud-2-line' },
5
- { key: 'catalog-impact', title: '覆盖目录', description: '管控商品目录和公司制裁目录覆盖都会立即影响风险结果,请确认被覆盖文件和记录数量。', icon: 'ri-book-open-line' },
5
+ { key: 'catalog-impact', title: '覆盖目录', description: '管控商品目录和公司制裁目录在发布成功后重新计算风险结果,请确认被覆盖文件和记录数量。', icon: 'ri-book-open-line' },
6
6
  { key: 'delete-data', title: '删除业务数据', description: '删除供应商、客户、订单、商品、目录记录或历史文件前,请确认其下游影响。业务删除和目录覆盖均为逻辑删除。', icon: 'ri-delete-bin-line' },
7
7
  { key: 'payments', title: '维护付款/收款/退税', description: '采购和销售金额统一使用人民币;金额超过订单总额或预计退税额时系统将禁止保存。', icon: 'ri-money-cny-circle-line' },
8
8
  { key: 'profit', title: '维护利润率', description: '客户默认利润率会实时影响其全部未单独设置利润率的派生销售订单,历史生成文件不会自动更新。', icon: 'ri-line-chart-line' },
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../../src/lib/remote-ui/pages/home.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../../src/lib/remote-ui/pages/home.tsx"],"names":[],"mappings":"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"}
@@ -32,7 +32,12 @@ type ProcurementBulkFailure = {
32
32
  };
33
33
  export declare function procurementBulkEntity(collection: ProcurementCollectionKey): ProcurementDeleteEntityType;
34
34
  export declare function procurementRouteSelectionKey(route: ProcurementPageProps['route']): string;
35
- export declare function bindPurchaseLineHsCodeDraft(line: PurchaseOrderLineDraft, hsCode: string): PurchaseOrderLineDraft | null;
35
+ type PurchaseLineHsBindingResult = {
36
+ code: string;
37
+ englishName?: string | null;
38
+ taxRefundRate?: string | null;
39
+ };
40
+ export declare function bindPurchaseLineHsCodeDraft(line: PurchaseOrderLineDraft, hsCodeOrResult: string | PurchaseLineHsBindingResult, translatedEnglishName?: string | null): PurchaseOrderLineDraft | null;
36
41
  export declare function createProcurementSelectionQuery(query: ProcurementPageProps['onQuery'], clearSelection: () => void): (collection: ProcurementCollectionKey, request: Parameters<ProcurementPageProps["onQuery"]>[1]) => Promise<boolean | void>;
37
42
  export declare function createProcurementBulkConfirmGuard(): {
38
43
  run<T>(operation: () => Promise<T>): Promise<T> | null;
@@ -1 +1 @@
1
- {"version":3,"file":"procurement.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-ui/pages/procurement.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"procurement.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-ui/pages/procurement.tsx"],"names":[],"mappings":"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"}
@@ -89,14 +89,20 @@ export function createProcurementActionApi({ onAction, onFileAction }) {
89
89
  assertSucceeded(result);
90
90
  return result;
91
91
  },
92
- savePurchaseReview: (taskId, draft) => mutate('save_purchase_review', { importTaskId: taskId, draft }),
92
+ savePurchaseReview: (taskId, draft) => mutate('save_purchase_review', { importTaskId: taskId, draft: sanitizePurchaseReviewDraft(draft) }),
93
93
  updateSupplier: (input) => mutate('update_supplier', { ...input }),
94
94
  updatePurchaseOrder: (input) => mutate('update_purchase_order', { ...input }),
95
- addPurchaseLine: (purchaseOrderId, input) => mutate('add_purchase_line', { ...input, purchaseOrderId, sourceType: 'MANUAL_ENTRY' }),
96
- updatePurchaseLine: (input) => mutate('update_purchase_line', { ...input }),
95
+ addPurchaseLine: (purchaseOrderId, input) => mutate('add_purchase_line', { ...sanitizePurchaseLinePolicyFields(input), purchaseOrderId, sourceType: 'MANUAL_ENTRY' }),
96
+ updatePurchaseLine: (input) => mutate('update_purchase_line', { ...sanitizePurchaseLinePolicyFields(input) }),
97
97
  deleteEntity: (entityType, id, options) => mutate('delete_entity', { entityType, id }, options)
98
98
  };
99
99
  }
100
+ function sanitizePurchaseReviewDraft(draft) {
101
+ return { ...draft, lines: draft.lines.map(sanitizePurchaseLinePolicyFields) };
102
+ }
103
+ function sanitizePurchaseLinePolicyFields(line) {
104
+ return { ...line, refundPolicyReference: null, refundPolicyDate: null, refundValidationMethod: null };
105
+ }
100
106
  export function procurementBulkEntity(collection) {
101
107
  return collection === 'suppliers' ? 'supplier' : collection === 'purchaseOrders' ? 'purchaseOrder' : 'purchaseLine';
102
108
  }
@@ -107,15 +113,54 @@ export function procurementRouteSelectionKey(route) {
107
113
  return `orders:${route.supplierId}`;
108
114
  return `lines:${route.supplierId}:${route.orderId}`;
109
115
  }
110
- export function bindPurchaseLineHsCodeDraft(line, hsCode) {
111
- const nextHsCode = normalizeHsCodeValue(hsCode);
112
- if (!nextHsCode || normalizeHsCodeValue(line.hsCode) === nextHsCode)
116
+ export function bindPurchaseLineHsCodeDraft(line, hsCodeOrResult, translatedEnglishName) {
117
+ const isLookupResult = typeof hsCodeOrResult !== 'string';
118
+ const result = isLookupResult ? hsCodeOrResult : { code: hsCodeOrResult };
119
+ const nextHsCode = normalizeHsCodeValue(result.code);
120
+ if (!nextHsCode)
121
+ return null;
122
+ if (!isLookupResult && normalizeHsCodeValue(line.hsCode) === nextHsCode)
123
+ return null;
124
+ const hsEnglishName = optionalTrimmedString(result.englishName);
125
+ const translatedName = optionalTrimmedString(translatedEnglishName);
126
+ const nextEnglishName = hsEnglishName ?? translatedName;
127
+ const nextRefundRate = normalizeRefundRateValue(result.taxRefundRate);
128
+ const next = {
129
+ ...line,
130
+ hsCode: nextHsCode,
131
+ hsCodeStatus: 'MANUALLY_CONFIRMED',
132
+ ...(isLookupResult ? { hsCodeSource: 'HS_LOOKUP' } : {}),
133
+ ...(nextEnglishName ? { englishName: nextEnglishName, englishNameSource: hsEnglishName ? 'HS_LOOKUP' : 'AI_TRANSLATION' } : {}),
134
+ ...(nextRefundRate != null ? { refundRate: nextRefundRate, refundRateSource: 'HS_LOOKUP' } : {})
135
+ };
136
+ if (normalizeHsCodeValue(line.hsCode) === next.hsCode &&
137
+ line.hsCodeStatus === next.hsCodeStatus &&
138
+ line.hsCodeSource === next.hsCodeSource &&
139
+ String(line.englishName ?? '') === String(next.englishName ?? '') &&
140
+ line.englishNameSource === next.englishNameSource &&
141
+ String(line.refundRate ?? '') === String(next.refundRate ?? '') &&
142
+ line.refundRateSource === next.refundRateSource)
113
143
  return null;
114
- return { ...line, hsCode: nextHsCode, hsCodeStatus: 'MANUALLY_CONFIRMED' };
144
+ return next;
115
145
  }
116
146
  function normalizeHsCodeValue(value) {
117
147
  return String(value ?? '').replace(/\s/g, '').trim();
118
148
  }
149
+ function optionalTrimmedString(value) {
150
+ const result = String(value ?? '').trim();
151
+ return result || null;
152
+ }
153
+ function normalizeRefundRateValue(value) {
154
+ const raw = optionalTrimmedString(value);
155
+ if (!raw)
156
+ return null;
157
+ if (raw.endsWith('%')) {
158
+ const percent = Number(raw.slice(0, -1).trim());
159
+ return Number.isFinite(percent) ? String(percent / 100) : null;
160
+ }
161
+ const parsed = Number(raw);
162
+ return Number.isFinite(parsed) ? raw : null;
163
+ }
119
164
  export function createProcurementSelectionQuery(query, clearSelection) {
120
165
  return async (collection, request) => {
121
166
  clearSelection();
@@ -222,7 +267,7 @@ export function buildProcurementMetrics(orders, lines, currentYear = Number(form
222
267
  };
223
268
  }
224
269
  for (const line of lines)
225
- productAmounts.set(line.productName, (productAmounts.get(line.productName) ?? 0) + amount(line.lineAmountTaxIncluded));
270
+ productAmounts.set(line.productName, (productAmounts.get(line.productName) ?? 0) + purchaseLineMetricAmount(line));
226
271
  const currentOrders = orders.filter((item) => item.orderDate.startsWith(currentYearPrefix));
227
272
  return {
228
273
  totalOrderCount: orders.length,
@@ -273,8 +318,6 @@ export function validatePurchaseContractReview(draft) {
273
318
  errors.push(`${prefix}增值税率必须在0到1之间`);
274
319
  if (refundRate !== null && (!Number.isFinite(refundRate) || refundRate < 0 || refundRate > 1))
275
320
  errors.push(`${prefix}退税率必须在0到1之间`);
276
- if (line.refundPolicyDate && draft.order.orderDate && line.refundPolicyDate > draft.order.orderDate)
277
- errors.push(`${prefix}退税政策日期不得晚于下单日期`);
278
321
  if (line.amountMismatch && !line.amountMismatchConfirmed)
279
322
  errors.push(`${prefix}金额差异必须确认`);
280
323
  });
@@ -516,12 +559,13 @@ export function LineDialog({ state, order, busy, onAction, onClose, onSave, onBi
516
559
  const errors = validatePurchaseContractReview({ supplier: { name: 'line-review' }, order: order ?? { supplierId: '', contractNo: 'line-review', orderDate: '', contractAmountCny: value.lineAmountTaxIncluded }, lines: [value] })
517
560
  .filter((item) => item.startsWith('第1条商品') || item.includes('下单日期'));
518
561
  const hsAction = (actionKey, input) => {
519
- if (actionKey !== 'search_hs_code' && actionKey !== 'get_hs_code_detail')
562
+ if (actionKey !== 'search_hs_code' && actionKey !== 'get_hs_code_detail' && actionKey !== 'translate_purchase_product_name')
520
563
  return Promise.resolve({ success: false, message: '采购商品仅支持海关编码查询' });
521
564
  return onAction(actionKey, input);
522
565
  };
523
566
  const bindHsCode = async (result) => {
524
- const next = bindPurchaseLineHsCodeDraft(value, result.code);
567
+ const translatedEnglishName = optionalTrimmedString(result.englishName) ? null : await translatePurchaseProductName(hsAction, value.productName);
568
+ const next = bindPurchaseLineHsCodeDraft(value, result, translatedEnglishName);
525
569
  if (!next) {
526
570
  setHsOpen(false);
527
571
  return;
@@ -534,7 +578,22 @@ export function LineDialog({ state, order, busy, onAction, onClose, onSave, onBi
534
578
  setValue(next);
535
579
  setHsOpen(false);
536
580
  };
537
- return _jsxs(_Fragment, { children: [_jsx(Modal, { open: true, title: state.mode === 'create' ? '新增商品' : '采购商品审核', size: "wide", onClose: onClose, footer: _jsxs(_Fragment, { children: [_jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: [_jsx("i", { className: "ri-close-line", "aria-hidden": "true" }), "\u53D6\u6D88"] }), _jsxs("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: busy || errors.length > 0, onClick: () => void onSave(value), children: [_jsx("i", { className: "ri-save-line", "aria-hidden": "true" }), "\u4FDD\u5B58"] })] }), children: _jsxs("div", { className: "tcw-procurement-line-form", children: [_jsxs("div", { className: "tcw-procurement-source-label", children: ["\u6765\u6E90\u7C7B\u578B\uFF1A", sourceTypeLabels[value.sourceType]] }), state.mode === 'review' && errors.length > 0 && _jsx(RiskNotice, { children: errors.join(';') }), _jsxs(FieldGrid, { columns: 2, children: [_jsx(TextField, { label: "\u5546\u54C1\u540D\u79F0", required: true, value: value.productName, onChange: (next) => setValue({ ...value, productName: next }) }), _jsx(TextField, { label: "\u5546\u54C1\u63CF\u8FF0", value: value.productDescription, onChange: (next) => setValue({ ...value, productDescription: next }) }), _jsx(TextField, { label: "\u89C4\u683C\u578B\u53F7", value: value.modelSpecification, onChange: (next) => setValue({ ...value, modelSpecification: next }) }), _jsx(TextField, { label: "\u5355\u4F4D", required: true, value: value.unit, onChange: (next) => setValue({ ...value, unit: next }) }), _jsx(TextField, { label: "\u6570\u91CF", required: true, type: "number", value: value.quantity, onChange: (next) => setValue({ ...value, quantity: next, lineAmountTaxIncluded: String(amount(next) * amount(value.unitPriceTaxIncluded)) }) }), _jsx(TextField, { label: "\u542B\u7A0E\u5355\u4EF7\uFF08\u4EBA\u6C11\u5E01\uFF09", required: true, type: "number", value: value.unitPriceTaxIncluded, onChange: (next) => setValue({ ...value, unitPriceTaxIncluded: next, lineAmountTaxIncluded: String(amount(value.quantity) * amount(next)) }) }), _jsx(TextField, { label: "\u542B\u7A0E\u91D1\u989D\uFF08\u4EBA\u6C11\u5E01\uFF09", required: true, type: "number", value: value.lineAmountTaxIncluded || String(computedAmount), onChange: (next) => setValue({ ...value, lineAmountTaxIncluded: next }) }), _jsx(TextField, { label: "\u589E\u503C\u7A0E\u7387", required: true, type: "number", value: value.vatRate, onChange: (next) => setValue({ ...value, vatRate: next }) }), _jsx(FormField, { label: "\u6D77\u5173\u7F16\u7801", children: _jsxs("div", { className: "tcw-procurement-inline-field", children: [_jsx("input", { value: value.hsCode ?? '', onChange: (event) => setValue({ ...value, hsCode: event.target.value }) }), _jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => setHsOpen(true), children: [_jsx("i", { className: "ri-search-line", "aria-hidden": "true" }), "HS\u7F16\u7801\u67E5\u8BE2"] })] }) }), _jsx(FormField, { label: "\u7F16\u7801\u786E\u8BA4\u72B6\u6001", children: _jsx("div", { className: "tcw-procurement-line-status", children: enumOptions(hsStatusLabels).map((item) => _jsxs("label", { children: [_jsx("input", { type: "radio", name: "line-hs-code-status", value: item.value, checked: (value.hsCodeStatus ?? 'UNCONFIRMED') === item.value, onChange: () => setValue({ ...value, hsCodeStatus: item.value }) }), item.label] }, item.value)) }) }), _jsx(TextField, { label: "\u9000\u7A0E\u7387", required: true, type: "number", value: value.refundRate, onChange: (next) => setValue({ ...value, refundRate: next }) }), _jsx(TextField, { label: "\u9000\u7A0E\u653F\u7B56\u4F9D\u636E", required: true, value: value.refundPolicyReference, onChange: (next) => setValue({ ...value, refundPolicyReference: next }) }), _jsx(TextField, { label: "\u653F\u7B56\u65E5\u671F", required: true, type: "date", value: value.refundPolicyDate, onChange: (next) => setValue({ ...value, refundPolicyDate: next, refundValidationMethod: 'REVIEW_CONFIRMED' }) }), _jsx(TextField, { label: "\u82F1\u6587\u540D\u79F0", value: value.englishName, onChange: (next) => setValue({ ...value, englishName: next }) })] })] }) }), _jsx(HsCodeLookupDialog, { open: hsOpen, initialQuery: value.hsCode || value.englishName || value.productName, onAction: hsAction, onClose: () => setHsOpen(false), onBind: bindHsCode })] });
581
+ return _jsxs(_Fragment, { children: [_jsx(Modal, { open: true, title: state.mode === 'create' ? '新增商品' : '采购商品审核', size: "wide", onClose: onClose, footer: _jsxs(_Fragment, { children: [_jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: [_jsx("i", { className: "ri-close-line", "aria-hidden": "true" }), "\u53D6\u6D88"] }), _jsxs("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: busy || errors.length > 0, onClick: () => void onSave(value), children: [_jsx("i", { className: "ri-save-line", "aria-hidden": "true" }), "\u4FDD\u5B58"] })] }), children: _jsxs("div", { className: "tcw-procurement-line-form", children: [_jsxs("div", { className: "tcw-procurement-source-label", children: ["\u6765\u6E90\u7C7B\u578B\uFF1A", sourceTypeLabels[value.sourceType]] }), state.mode === 'review' && errors.length > 0 && _jsx(RiskNotice, { children: errors.join(';') }), _jsxs(FieldGrid, { columns: 2, children: [_jsx(TextField, { label: "\u5546\u54C1\u540D\u79F0", required: true, value: value.productName, onChange: (next) => setValue({ ...value, productName: next }) }), _jsx(TextField, { label: "\u5546\u54C1\u63CF\u8FF0", value: value.productDescription, onChange: (next) => setValue({ ...value, productDescription: next }) }), _jsx(TextField, { label: "\u89C4\u683C\u578B\u53F7", value: value.modelSpecification, onChange: (next) => setValue({ ...value, modelSpecification: next }) }), _jsx(TextField, { label: "\u5355\u4F4D", required: true, value: value.unit, onChange: (next) => setValue({ ...value, unit: next }) }), _jsx(TextField, { label: "\u6570\u91CF", required: true, type: "number", value: value.quantity, onChange: (next) => setValue({ ...value, quantity: next, lineAmountTaxIncluded: String(amount(next) * amount(value.unitPriceTaxIncluded)) }) }), _jsx(TextField, { label: "\u542B\u7A0E\u5355\u4EF7\uFF08\u4EBA\u6C11\u5E01\uFF09", required: true, type: "number", value: value.unitPriceTaxIncluded, onChange: (next) => setValue({ ...value, unitPriceTaxIncluded: next, lineAmountTaxIncluded: String(amount(value.quantity) * amount(next)) }) }), _jsx(TextField, { label: "\u542B\u7A0E\u91D1\u989D\uFF08\u4EBA\u6C11\u5E01\uFF09", required: true, type: "number", value: value.lineAmountTaxIncluded || String(computedAmount), onChange: (next) => setValue({ ...value, lineAmountTaxIncluded: next }) }), _jsx(TextField, { label: "\u589E\u503C\u7A0E\u7387", type: "number", value: value.vatRate, onChange: (next) => setValue({ ...value, vatRate: next }) }), _jsx(FormField, { label: "\u6D77\u5173\u7F16\u7801", children: _jsxs("div", { className: "tcw-procurement-inline-field", children: [_jsx("input", { value: value.hsCode ?? '', onChange: (event) => setValue(applyManualHsCode(value, event.target.value)) }), _jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => setHsOpen(true), children: [_jsx("i", { className: "ri-search-line", "aria-hidden": "true" }), "HS\u7F16\u7801\u67E5\u8BE2"] })] }) }), _jsx(TextField, { label: "\u9000\u7A0E\u7387", required: true, type: "number", value: value.refundRate, onChange: (next) => setValue({ ...value, refundRate: next }) }), _jsx(TextField, { label: "\u82F1\u6587\u540D\u79F0", value: value.englishName, onChange: (next) => setValue({ ...value, englishName: next }) })] })] }) }), _jsx(HsCodeLookupDialog, { open: hsOpen, initialQuery: value.hsCode || value.englishName || value.productName, onAction: hsAction, onClose: () => setHsOpen(false), onBind: bindHsCode })] });
582
+ }
583
+ function applyManualHsCode(line, hsCode) {
584
+ const nextHsCode = normalizeHsCodeValue(hsCode);
585
+ return { ...line, hsCode, hsCodeStatus: nextHsCode ? 'MANUALLY_CONFIRMED' : 'UNCONFIRMED', hsCodeSource: nextHsCode ? 'MANUAL' : null };
586
+ }
587
+ async function translatePurchaseProductName(onAction, productName) {
588
+ try {
589
+ const response = await onAction('translate_purchase_product_name', { productName });
590
+ if (response.success === false)
591
+ return null;
592
+ return optionalTrimmedString(response.data?.englishName);
593
+ }
594
+ catch {
595
+ return null;
596
+ }
538
597
  }
539
598
  export function PurchaseContractReviewDialog({ open, task, draft, busy, onChange, onClose, onSave }) {
540
599
  const errors = draft ? validatePurchaseContractReview(draft) : [];
@@ -542,7 +601,7 @@ export function PurchaseContractReviewDialog({ open, task, draft, busy, onChange
542
601
  return _jsxs(Modal, { open: open, title: "\u91C7\u8D2D\u5408\u540C\u5BA1\u6838", size: "wide", onClose: onClose, footer: _jsxs(_Fragment, { children: [_jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: [_jsx("i", { className: "ri-close-line", "aria-hidden": "true" }), "\u53D6\u6D88"] }), _jsxs("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: busy || !draft || Boolean(duplicate) || errors.length > 0, onClick: () => draft && void onSave(draft), children: [_jsx("i", { className: "ri-check-double-line", "aria-hidden": "true" }), "\u5BA1\u6838\u5E76\u5165\u5E93"] })] }), children: [duplicate && _jsx(RiskNotice, { children: duplicate }), !draft ? _jsx(RiskNotice, { children: task?.errorMessage || '采购合同解析结果不可用' }) : _jsxs("div", { className: "tcw-procurement-review-compact", children: [_jsxs("section", { className: "tcw-procurement-review-editor-pane", children: [_jsx("h3", { children: "\u8BC6\u522B\u5185\u5BB9" }), _jsxs("div", { className: "tcw-procurement-review-editor", children: [errors.length > 0 && _jsx(RiskNotice, { children: errors.join(';') }), _jsx(ReviewSection, { title: "\u4F9B\u5E94\u5546\u4FE1\u606F", children: _jsx(SupplierDraftEditor, { supplier: draft.supplier, onChange: (supplier) => onChange({ ...draft, supplier }) }) }), _jsx(ReviewSection, { title: "\u8BA2\u5355\u4FE1\u606F", children: _jsxs(FieldGrid, { columns: 3, children: [_jsx(TextField, { label: "\u91C7\u8D2D\u5408\u540C\u7F16\u53F7", required: true, value: draft.order.contractNo, onChange: (value) => onChange({ ...draft, order: { ...draft.order, contractNo: value } }) }), _jsx(TextField, { label: "\u4E0B\u5355\u65E5\u671F", type: "date", value: draft.order.orderDate, onChange: (value) => onChange({ ...draft, order: { ...draft.order, orderDate: value } }) }), _jsx(TextField, { label: "\u91C7\u8D2D\u603B\u989D\uFF08\u4EBA\u6C11\u5E01\uFF09", type: "number", value: draft.order.contractAmountCny, onChange: (value) => onChange({ ...draft, order: { ...draft.order, contractAmountCny: value } }) }), _jsx(TextField, { label: "\u5DF2\u4ED8\u6B3E", type: "number", value: draft.order.paidAmountCny, onChange: (value) => onChange({ ...draft, order: { ...draft.order, paidAmountCny: value } }) }), _jsx(TextField, { label: "\u5DF2\u9000\u7A0E", type: "number", value: draft.order.refundedAmountCny, onChange: (value) => onChange({ ...draft, order: { ...draft.order, refundedAmountCny: value } }) })] }) }), _jsx(ReviewSection, { title: `全部商品(${draft.lines.length})`, children: _jsx("div", { className: "tcw-procurement-review-lines", children: draft.lines.map((line, index) => _jsx(ContractLineEditor, { index: index, line: line, onChange: (next) => onChange({ ...draft, lines: draft.lines.map((item, lineIndex) => lineIndex === index ? next : item) }) }, line.id ?? index)) }) })] })] }), _jsxs("section", { className: "tcw-procurement-review-source-pane", children: [_jsx("h3", { children: "\u6E90\u6587\u4EF6\u5185\u5BB9" }), _jsx(SourcePreview, { draft: draft, task: task })] })] })] });
543
602
  }
544
603
  function ContractLineEditor({ line, index, onChange }) {
545
- return _jsxs("section", { className: "tcw-procurement-review-line", children: [_jsxs("h4", { children: ["\u5546\u54C1 ", index + 1, " ", _jsx(StatusTag, { tone: "muted", children: sourceTypeLabels[line.sourceType] })] }), _jsxs(FieldGrid, { columns: 3, children: [_jsx(TextField, { label: "\u5546\u54C1\u540D\u79F0", required: true, value: line.productName, onChange: (value) => onChange({ ...line, productName: value }) }), _jsx(TextField, { label: "\u5546\u54C1\u63CF\u8FF0", value: line.productDescription, onChange: (value) => onChange({ ...line, productDescription: value }) }), _jsx(TextField, { label: "\u89C4\u683C\u578B\u53F7", value: line.modelSpecification, onChange: (value) => onChange({ ...line, modelSpecification: value }) }), _jsx(TextField, { label: "\u5355\u4F4D", value: line.unit, onChange: (value) => onChange({ ...line, unit: value }) }), _jsx(TextField, { label: "\u6570\u91CF", type: "number", value: line.quantity, onChange: (value) => onChange({ ...line, quantity: value }) }), _jsx(TextField, { label: "\u542B\u7A0E\u91D1\u989D", type: "number", value: line.lineAmountTaxIncluded, onChange: (value) => onChange({ ...line, lineAmountTaxIncluded: value }) }), _jsx(TextField, { label: "\u6D77\u5173\u7F16\u7801", value: line.hsCode, onChange: (value) => onChange({ ...line, hsCode: value }) }), line.amountMismatch && _jsx(FormField, { label: "\u91D1\u989D\u5DEE\u5F02\u786E\u8BA4", required: true, children: _jsxs("label", { className: "tcw-procurement-checkbox", children: [_jsx("input", { type: "checkbox", checked: Boolean(line.amountMismatchConfirmed), onChange: (event) => onChange({ ...line, amountMismatchConfirmed: event.target.checked }) }), "\u786E\u8BA4\u4FDD\u7559\u5408\u540C\u539F\u59CB\u91D1\u989D"] }) })] }), _jsxs("details", { className: "tcw-procurement-review-more", children: [_jsx("summary", { children: "\u66F4\u591A\u5546\u54C1\u4FE1\u606F" }), _jsxs(FieldGrid, { columns: 3, children: [_jsx(TextField, { label: "\u82F1\u6587\u540D\u79F0", value: line.englishName, onChange: (value) => onChange({ ...line, englishName: value }) }), _jsx(TextField, { label: "\u542B\u7A0E\u5355\u4EF7", type: "number", value: line.unitPriceTaxIncluded, onChange: (value) => onChange({ ...line, unitPriceTaxIncluded: value }) }), _jsx(TextField, { label: "\u589E\u503C\u7A0E\u7387", type: "number", value: line.vatRate, onChange: (value) => onChange({ ...line, vatRate: value }) }), _jsx(FormField, { label: "\u7F16\u7801\u786E\u8BA4\u72B6\u6001", children: _jsx("select", { value: line.hsCodeStatus ?? 'UNCONFIRMED', onChange: (event) => onChange({ ...line, hsCodeStatus: event.target.value }), children: enumOptions(hsStatusLabels).map((item) => _jsx("option", { value: item.value, children: item.label }, item.value)) }) }), _jsx(TextField, { label: "\u9000\u7A0E\u7387", type: "number", value: line.refundRate, onChange: (value) => onChange({ ...line, refundRate: value }) }), _jsx(TextField, { label: "\u9000\u7A0E\u653F\u7B56\u4F9D\u636E", value: line.refundPolicyReference, onChange: (value) => onChange({ ...line, refundPolicyReference: value }) }), _jsx(TextField, { label: "\u9000\u7A0E\u653F\u7B56\u65E5\u671F", type: "date", value: line.refundPolicyDate, onChange: (value) => onChange({ ...line, refundPolicyDate: value, refundValidationMethod: value ? 'REVIEW_CONFIRMED' : null }) })] })] })] });
604
+ return _jsxs("section", { className: "tcw-procurement-review-line", children: [_jsxs("h4", { children: ["\u5546\u54C1 ", index + 1, " ", _jsx(StatusTag, { tone: "muted", children: sourceTypeLabels[line.sourceType] })] }), _jsxs(FieldGrid, { columns: 3, children: [_jsx(TextField, { label: "\u5546\u54C1\u540D\u79F0", required: true, value: line.productName, onChange: (value) => onChange({ ...line, productName: value }) }), _jsx(TextField, { label: "\u5546\u54C1\u63CF\u8FF0", value: line.productDescription, onChange: (value) => onChange({ ...line, productDescription: value }) }), _jsx(TextField, { label: "\u89C4\u683C\u578B\u53F7", value: line.modelSpecification, onChange: (value) => onChange({ ...line, modelSpecification: value }) }), _jsx(TextField, { label: "\u5355\u4F4D", value: line.unit, onChange: (value) => onChange({ ...line, unit: value }) }), _jsx(TextField, { label: "\u6570\u91CF", type: "number", value: line.quantity, onChange: (value) => onChange({ ...line, quantity: value }) }), _jsx(TextField, { label: "\u542B\u7A0E\u91D1\u989D", type: "number", value: line.lineAmountTaxIncluded, onChange: (value) => onChange({ ...line, lineAmountTaxIncluded: value }) }), _jsx(TextField, { label: "\u6D77\u5173\u7F16\u7801", value: line.hsCode, onChange: (value) => onChange(applyManualHsCode(line, value)) }), line.amountMismatch && _jsx(FormField, { label: "\u91D1\u989D\u5DEE\u5F02\u786E\u8BA4", required: true, children: _jsxs("label", { className: "tcw-procurement-checkbox", children: [_jsx("input", { type: "checkbox", checked: Boolean(line.amountMismatchConfirmed), onChange: (event) => onChange({ ...line, amountMismatchConfirmed: event.target.checked }) }), "\u786E\u8BA4\u4FDD\u7559\u5408\u540C\u539F\u59CB\u91D1\u989D"] }) })] }), _jsxs("details", { className: "tcw-procurement-review-more", children: [_jsx("summary", { children: "\u66F4\u591A\u5546\u54C1\u4FE1\u606F" }), _jsxs(FieldGrid, { columns: 3, children: [_jsx(TextField, { label: "\u82F1\u6587\u540D\u79F0", value: line.englishName, onChange: (value) => onChange({ ...line, englishName: value }) }), _jsx(TextField, { label: "\u542B\u7A0E\u5355\u4EF7", type: "number", value: line.unitPriceTaxIncluded, onChange: (value) => onChange({ ...line, unitPriceTaxIncluded: value }) }), _jsx(TextField, { label: "\u589E\u503C\u7A0E\u7387", type: "number", value: line.vatRate, onChange: (value) => onChange({ ...line, vatRate: value }) }), _jsx(TextField, { label: "\u9000\u7A0E\u7387", type: "number", value: line.refundRate, onChange: (value) => onChange({ ...line, refundRate: value }) })] })] })] });
546
605
  }
547
606
  function SupplierDraftEditor({ supplier, onChange }) {
548
607
  const coreFields = [
@@ -590,9 +649,12 @@ function orderStatus(row) {
590
649
  return { value: 'PARTIAL', label: '部分收货', tone: 'warning' };
591
650
  return { value: 'PENDING', label: '待收货', tone: 'muted' };
592
651
  }
593
- function balance(metrics, row) { return row.id && metrics.orderBalances[row.id] || { unpaidAmountCny: Math.max(amount(row.contractAmountCny) - amount(row.paidAmountCny), 0), unrefundedAmountCny: Math.max(amount(row.estimatedRefundAmountCny) - amount(row.refundedAmountCny), 0) }; }
594
652
  function estimatedLineRefund(line) { const divisor = 1 + rate(line.vatRate); return divisor > 0 ? amount(line.lineAmountTaxIncluded) / divisor * rate(line.refundRate) : 0; }
595
653
  function amount(value) { const parsed = Number(value ?? 0); return Number.isFinite(parsed) ? parsed : 0; }
654
+ function purchaseLineMetricAmount(line) {
655
+ const lineAmount = amount(line.lineAmountTaxIncluded);
656
+ return lineAmount > 0 ? lineAmount : amount(line.quantity) * amount(line.unitPriceTaxIncluded);
657
+ }
596
658
  function rate(value) { const parsed = amount(value); return parsed > 1 ? parsed / 100 : parsed; }
597
659
  function sum(items, read) { return items.reduce((total, item) => total + amount(read(item)), 0); }
598
660
  function optionalFiniteAmount(value) {
@@ -606,7 +668,6 @@ function currency(value) { return `¥${amount(value).toLocaleString('zh-CN', { m
606
668
  function currencyCompact(value) { return `¥${amount(value).toLocaleString('zh-CN', { maximumFractionDigits: 2 })}`; }
607
669
  function number(value) { return amount(value).toLocaleString('zh-CN'); }
608
670
  function percent(value) { return `${(rate(value) * 100).toLocaleString('zh-CN', { maximumFractionDigits: 4 })}%`; }
609
- function booleanOptions() { return [{ value: 'true', label: '是' }, { value: 'false', label: '否' }]; }
610
671
  function enumOptions(labels) { return Object.entries(labels).map(([value, label]) => ({ value, label })); }
611
672
  function pagination(collection) { const total = collection.total ?? collection.items.length; const pageSize = collection.pageSize ?? PAGE_SIZE; return { page: collection.page ?? 1, pageSize, total, pageCount: Math.max(1, Math.ceil(total / pageSize)) }; }
612
673
  function assertSucceeded(result) { if (result.success === false)