From 761bc7c8ede4e3aedb8bf9632eb3206e89ac81f7 Mon Sep 17 00:00:00 2001 From: shenyifei Date: Tue, 18 Nov 2025 18:31:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(supplier):=20=E6=96=B0=E5=A2=9E=E7=93=9C?= =?UTF-8?q?=E5=86=9C=E7=AE=A1=E7=90=86=E5=92=8C=E5=8F=91=E7=A5=A8=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 PageList 组件中实现选择行功能,支持复选框操作和状态管理 - 更新 ToolBar 类型定义,允许传递任意类型的选中数据 - 添加新的图标资源:eye、eye-slash 和 phone-flip - 重构 SupplierPicker 组件以适配最新的 API 接口类型 - 在工作台常量中增加“瓜农管理”和“上传发票”页面路由配置 - 创建供应商采购发票页面及列表展示组件 - 实现瓜农列表页面,支持搜索和详情展示 - 引入并导出订单供应商相关服务接口和类型定义 - 扩展业务模块的类型声明文件,新增订单供应商相关结构体 - 更新字体图标库版本,并添加新图标样式 - 在应用配置中注册新的供应商相关页面路径 - 优化采购订单计算器逻辑,排除特定费用项的重复计算 --- packages/app-client/src/app.config.ts | 5 + .../src/components/biz/PageList.tsx | 48 ++++- .../app-client/src/components/biz/typing.ts | 2 +- .../app-client/src/components/icon/Icon.tsx | 3 + .../components/supplier/SupplierPicker.tsx | 13 +- packages/app-client/src/constant/workbench.ts | 16 +- packages/app-client/src/iconfont.css | 18 +- .../src/pages/supplier/list.config.ts | 4 + .../app-client/src/pages/supplier/list.tsx | 127 ++++++++++++++ .../pages/supplier/purchase/invoice.config.ts | 4 + .../src/pages/supplier/purchase/invoice.tsx | 165 ++++++++++++++++++ .../app-client/src/services/business/index.ts | 2 + .../src/services/business/orderSupplier.ts | 59 +++++++ .../src/services/business/typings.d.ts | 138 ++++++++++++++- .../src/utils/PurchaseOrderCalculator.ts | 10 +- swagger/business.json | 2 +- 16 files changed, 585 insertions(+), 31 deletions(-) create mode 100644 packages/app-client/src/pages/supplier/list.config.ts create mode 100644 packages/app-client/src/pages/supplier/list.tsx create mode 100644 packages/app-client/src/pages/supplier/purchase/invoice.config.ts create mode 100644 packages/app-client/src/pages/supplier/purchase/invoice.tsx create mode 100644 packages/app-client/src/services/business/orderSupplier.ts diff --git a/packages/app-client/src/app.config.ts b/packages/app-client/src/app.config.ts index f1a2c5f..335e075 100644 --- a/packages/app-client/src/app.config.ts +++ b/packages/app-client/src/app.config.ts @@ -42,6 +42,11 @@ config = { root: "pages/delivery", pages: ["list", "document/delivery", "document/purchase"], }, + // 瓜农 + { + root: "pages/supplier", + pages: ["list", "purchase/invoice"], + }, ], permission: { "scope.userLocation": { diff --git a/packages/app-client/src/components/biz/PageList.tsx b/packages/app-client/src/components/biz/PageList.tsx index 2c27e24..3db4ce4 100644 --- a/packages/app-client/src/components/biz/PageList.tsx +++ b/packages/app-client/src/components/biz/PageList.tsx @@ -302,7 +302,41 @@ export default ( onLoadMore={loadMore} onRefresh={refresh} > - {data.map((item, index) => render(item as any, index))} + {data.map( + (item, index) => + (toolbar?.selectRow && ( + + item1[rowId] == item[rowId], + )} + value={item[rowId]} + onClick={() => { + if ( + selectRows.some( + (item1) => item1[rowId] === item[rowId], + ) + ) { + setSelectRows((prev) => { + return prev.filter( + (item1) => item1[rowId] !== item[rowId], + ); + }); + } else { + setSelectRows((prev) => { + return [...prev, item]; + }); + } + }} + > + {render(item as any, index)} + + )) || + render(item as any, index), + )} )} @@ -315,7 +349,7 @@ export default ( {toolbar?.actions && toolbar?.actions.map((item) => item)} {toolbar?.selectRow?.onClick && ( - + ( } else { setSelectAll("1"); data?.forEach((item) => { - if (selectRows.indexOf(item[rowId]) == -1) { + if ( + selectRows.some( + (item1) => item1[rowId] !== item[rowId], + ) + ) { setSelectRows((prev) => { - return [...prev, item[rowId]]; + return [...prev, item]; }); } }); @@ -343,7 +381,7 @@ export default ( - 共{selectRows.length || 0}张 + 共{selectRows.length || 0}项