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) => {