From 871982fc071453fd06f8b774ac8b72e6944a05e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Sun, 9 Aug 2026 15:27:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.=20=E9=87=91=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/utils/use-paste-upload-listen.ts | 10 + .../china-medicine/components/modal.vue | 119 ++--- .../views/system/golden-formula/api/index.ts | 140 ++++++ .../components/FormulaDrugsModal.vue | 328 +++++++++++++ .../components/ImportExcelModal.vue | 202 ++++++++ .../components/MissingDrugModal.vue | 275 +++++++++++ .../components/ResolveMissingDrugPanel.vue | 432 ++++++++++++++++++ .../golden-formula/components/modal.vue | 37 +- .../system/golden-formula/config/constants.ts | 16 + .../system/golden-formula/config/form.ts | 14 +- .../src/views/system/golden-formula/index.vue | 113 ++++- 11 files changed, 1563 insertions(+), 123 deletions(-) create mode 100644 apps/web-antd/src/views/system/golden-formula/components/FormulaDrugsModal.vue create mode 100644 apps/web-antd/src/views/system/golden-formula/components/ImportExcelModal.vue create mode 100644 apps/web-antd/src/views/system/golden-formula/components/MissingDrugModal.vue create mode 100644 apps/web-antd/src/views/system/golden-formula/components/ResolveMissingDrugPanel.vue diff --git a/apps/web-antd/src/utils/use-paste-upload-listen.ts b/apps/web-antd/src/utils/use-paste-upload-listen.ts index 439bfe1a..dd8eb518 100644 --- a/apps/web-antd/src/utils/use-paste-upload-listen.ts +++ b/apps/web-antd/src/utils/use-paste-upload-listen.ts @@ -9,6 +9,11 @@ export interface UsePasteUploadListenOptions { maxSize?: number | (() => number); /** 过滤后的文件回调 */ onFiles: (files: File[]) => void | Promise; + /** + * 粘贴成功拿到合法文件后自动停止监听 + * 为什么默认 false:发票等组件仍要手动点「停止」;金方 Excel 导入需要成功即停 + */ + autoStopOnSuccess?: boolean; } /** @@ -136,6 +141,11 @@ export function usePasteUploadListen(options: UsePasteUploadListenOptions) { return; } event.preventDefault(); + // 成功拿到文件后先停监听(按需),再回调业务,避免重复粘贴 + if (options.autoStopOnSuccess) { + stop(); + message.success('已粘贴文件,监听已结束'); + } void options.onFiles(filtered); }; window.addEventListener('paste', handler); diff --git a/apps/web-antd/src/views/business/product/china-medicine/components/modal.vue b/apps/web-antd/src/views/business/product/china-medicine/components/modal.vue index aa4f7b08..b601177d 100644 --- a/apps/web-antd/src/views/business/product/china-medicine/components/modal.vue +++ b/apps/web-antd/src/views/business/product/china-medicine/components/modal.vue @@ -1,8 +1,11 @@ + + diff --git a/apps/web-antd/src/views/system/golden-formula/components/ImportExcelModal.vue b/apps/web-antd/src/views/system/golden-formula/components/ImportExcelModal.vue new file mode 100644 index 00000000..12d18865 --- /dev/null +++ b/apps/web-antd/src/views/system/golden-formula/components/ImportExcelModal.vue @@ -0,0 +1,202 @@ + + + diff --git a/apps/web-antd/src/views/system/golden-formula/components/MissingDrugModal.vue b/apps/web-antd/src/views/system/golden-formula/components/MissingDrugModal.vue new file mode 100644 index 00000000..aa1bb78c --- /dev/null +++ b/apps/web-antd/src/views/system/golden-formula/components/MissingDrugModal.vue @@ -0,0 +1,275 @@ + + + diff --git a/apps/web-antd/src/views/system/golden-formula/components/ResolveMissingDrugPanel.vue b/apps/web-antd/src/views/system/golden-formula/components/ResolveMissingDrugPanel.vue new file mode 100644 index 00000000..cecd599b --- /dev/null +++ b/apps/web-antd/src/views/system/golden-formula/components/ResolveMissingDrugPanel.vue @@ -0,0 +1,432 @@ + + + diff --git a/apps/web-antd/src/views/system/golden-formula/components/modal.vue b/apps/web-antd/src/views/system/golden-formula/components/modal.vue index 4af040a1..99ca8e80 100644 --- a/apps/web-antd/src/views/system/golden-formula/components/modal.vue +++ b/apps/web-antd/src/views/system/golden-formula/components/modal.vue @@ -1,7 +1,7 @@