From 8cfef12a569fedf8cfc530bb9a29b50dbe99f0e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Thu, 25 Jun 2026 08:17:00 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=8A=A0=E5=B7=A5=E8=B4=B9=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E9=87=8D=E6=9E=84=202.=20=E5=BF=AB=E9=80=92=E8=B4=B9?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E9=87=8D=E6=9E=84=203.=20=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96=204.=20?= =?UTF-8?q?=E5=95=86=E5=93=81=E8=AE=A2=E5=8D=95=E7=9A=84=E6=8A=98=E6=89=A3?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=205.=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E5=B7=B2=E7=9F=A5BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/api/index.ts | 44 + .../admin/components/TcmPriceBatchModal.vue | 782 ++++++++++++++++++ .../warehouse-drug-management/admin/index.vue | 21 + .../admin/utils/exportWarehousePriceExcel.ts | 82 ++ .../admin/utils/parseWarehousePriceExcel.ts | 146 ++++ .../admin/utils/priceCompare.ts | 75 ++ .../shared/components/ExcelCompareGrid.vue | 426 ++++++++++ .../components/PriceCompareCardGrid.vue | 452 ++++++++++ 8 files changed, 2028 insertions(+) create mode 100644 apps/web-antd/src/views/business/warehouse-drug-management/admin/components/TcmPriceBatchModal.vue create mode 100644 apps/web-antd/src/views/business/warehouse-drug-management/admin/utils/exportWarehousePriceExcel.ts create mode 100644 apps/web-antd/src/views/business/warehouse-drug-management/admin/utils/parseWarehousePriceExcel.ts create mode 100644 apps/web-antd/src/views/business/warehouse-drug-management/admin/utils/priceCompare.ts create mode 100644 apps/web-antd/src/views/business/warehouse-drug-management/shared/components/ExcelCompareGrid.vue create mode 100644 apps/web-antd/src/views/business/warehouse-drug-management/shared/components/PriceCompareCardGrid.vue diff --git a/apps/web-antd/src/views/business/warehouse-drug-management/admin/api/index.ts b/apps/web-antd/src/views/business/warehouse-drug-management/admin/api/index.ts index 03c1dc74..5f6a7ced 100644 --- a/apps/web-antd/src/views/business/warehouse-drug-management/admin/api/index.ts +++ b/apps/web-antd/src/views/business/warehouse-drug-management/admin/api/index.ts @@ -103,3 +103,47 @@ export async function importWarehouseDrugManagementApi(data: Record export async function importUpdatePriceApi(data: Record) { return requestClient.upload(`${prefix}import-update-price`, data); } + +export interface WarehouseBatchPriceItem { + id: number; + drug_id: number; + drug_name: string; + drug_number: string; + pinyin_simple: string; + market_price: number | string; + price: number | string; +} + +/** 批量改价预览:全量仓库药品 */ +export async function getAllForBatchPriceApi(params: { type: number }) { + return requestClient.get<{ items: WarehouseBatchPriceItem[] }>( + `${prefix}list-all-for-batch-price`, + { params }, + ); +} + +export interface BatchPriceUpdateItem { + id: number; + market_price: number; + price: number; +} + +export interface BatchPriceCreateItem { + drug_name: string; + drug_number: string; + market_price: number; + price: number; +} + +/** 批量改价预览:应用更新与新增 */ +export async function applyBatchPriceApi(data: { + type: number; + updates?: BatchPriceUpdateItem[]; + creates?: BatchPriceCreateItem[]; + notify?: boolean; +}) { + return requestClient.post<{ + update_count: number; + new_count: number; + }>(`${prefix}apply-batch-price`, data); +} diff --git a/apps/web-antd/src/views/business/warehouse-drug-management/admin/components/TcmPriceBatchModal.vue b/apps/web-antd/src/views/business/warehouse-drug-management/admin/components/TcmPriceBatchModal.vue new file mode 100644 index 00000000..ceab4136 --- /dev/null +++ b/apps/web-antd/src/views/business/warehouse-drug-management/admin/components/TcmPriceBatchModal.vue @@ -0,0 +1,782 @@ + + + + + diff --git a/apps/web-antd/src/views/business/warehouse-drug-management/admin/index.vue b/apps/web-antd/src/views/business/warehouse-drug-management/admin/index.vue index 001904aa..282b39c9 100644 --- a/apps/web-antd/src/views/business/warehouse-drug-management/admin/index.vue +++ b/apps/web-antd/src/views/business/warehouse-drug-management/admin/index.vue @@ -19,6 +19,7 @@ import { } from './api'; import FormModalDemo from './components/modal.vue'; import ExcelUpload from './components/ExcelUpload.vue'; +import TcmPriceBatchModal from './components/TcmPriceBatchModal.vue'; import { formOptions } from './config/search'; import { createGridOptions } from './config/table'; @@ -57,6 +58,10 @@ const [ExcelUploadModal, ExcelUploadModalApi] = useVbenModal({ connectedComponent: ExcelUpload, }); +const [TcmPriceBatchModalComp, TcmPriceBatchModalApi] = useVbenModal({ + connectedComponent: TcmPriceBatchModal, +}); + const TCM_PLACEHOLDER_IMAGE = 'https://xiaokang88.oss-cn-hangzhou.aliyuncs.com/xk_upload_20250510/cd470ebf97e31c4048ba502ba71b66a3.jpg'; @@ -111,6 +116,14 @@ const openExcelUploadModal = (type = 1) => { ExcelUploadModalApi.open(); }; +const openTcmPriceBatchModal = () => { + TcmPriceBatchModalApi.setData({ + gridApi, + productType: productType.value, + }); + TcmPriceBatchModalApi.open(); +}; + const updateStatus = (id: number) => { updateWarehouseDrugManagementStatusApi(id).then(() => { message.success('修改成功!'); @@ -122,6 +135,7 @@ const updateStatus = (id: number) => {