From ec25a0bd96da0b128f81eb060c5e52921c555dca Mon Sep 17 00:00:00 2001 From: hwj Date: Mon, 29 Jun 2026 18:12:31 +0800 Subject: [PATCH] =?UTF-8?q?style=EF=BC=9A=E9=87=87=E8=B4=AD=E5=8D=95?= =?UTF-8?q?=E4=BD=8D/=E5=BA=93=E5=AD=98=E5=8D=95=E4=BD=8D=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/erp/stock/check/index.ts | 2 ++ src/api/erp/stock/record/index.ts | 1 + src/api/erp/stock/stock/index.ts | 1 + src/locales/en.ts | 8 ++++--- src/locales/zh-CN.ts | 8 ++++--- src/views/erp/product/product/ProductForm.vue | 23 ++++++++++++++++--- src/views/erp/product/product/index.vue | 2 +- .../components/StockCheckExecutionForm.vue | 6 ++++- src/views/erp/stock/checkRecord/index.vue | 2 +- .../stock/in/components/StockInItemForm.vue | 15 ++++++++++-- .../move/components/StockMoveItemForm.vue | 9 +++++++- src/views/erp/stock/record/index.vue | 3 ++- src/views/erp/stock/stock/index.vue | 6 ++++- 13 files changed, 69 insertions(+), 17 deletions(-) diff --git a/src/api/erp/stock/check/index.ts b/src/api/erp/stock/check/index.ts index 7965d179..cab6e8a6 100644 --- a/src/api/erp/stock/check/index.ts +++ b/src/api/erp/stock/check/index.ts @@ -38,6 +38,7 @@ export interface StockCheckItemVO { productName: string // 产品名称 productBarCode: string // 产品条码 productUnitName: string // 产品单位名称 + purchaseUnitName?: string // 采购单位名称 } export interface StockCheckRecordVO { @@ -56,6 +57,7 @@ export interface StockCheckRecordVO { barCode?: string standard?: string productUnitName?: string + purchaseUnitName?: string unitName?: string warehouseId?: number warehouseName?: string diff --git a/src/api/erp/stock/record/index.ts b/src/api/erp/stock/record/index.ts index fbf04240..75dd8107 100644 --- a/src/api/erp/stock/record/index.ts +++ b/src/api/erp/stock/record/index.ts @@ -21,6 +21,7 @@ export interface StockRecordVO { productName: string categoryName: string unitName: string + purchaseUnitName?: string warehouseName: string creatorName: string recordTime?: string diff --git a/src/api/erp/stock/stock/index.ts b/src/api/erp/stock/stock/index.ts index 50032944..6ee947b1 100644 --- a/src/api/erp/stock/stock/index.ts +++ b/src/api/erp/stock/stock/index.ts @@ -11,6 +11,7 @@ export interface StockVO { barCode?: string categoryName?: string unitName?: string + purchaseUnitName?: string // 产品分类类型 categoryType?: number // 仓库编号 diff --git a/src/locales/en.ts b/src/locales/en.ts index ec59e64e..eea88971 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -476,8 +476,8 @@ export default { packagingRule: 'Packaging / Conversion Rule', stockDisplay: 'Stock Display', areaStockDisplay: 'Area Stock', - totalPackageCount: 'Total Packages', - totalBaseCount: 'Total Base Count', + totalPackageCount: 'Total', + totalBaseCount: 'Base Quantity', unit: 'Unit', count: 'Base Quantity', latestInTime: 'Latest Inbound', @@ -642,6 +642,7 @@ export default { outPackageCount: 'Outbound Package Count', inPackageCount: 'Inbound Package Count', inItemCount: 'Inbound Count', + inCount: 'Inbound Quantity', outCount: 'Outbound Count', packageCountWithItems: 'Package Count ({count} per package)', itemCount: 'Item Count', @@ -2492,6 +2493,7 @@ export default { validatorSupplierRequired: 'Supplier is required', validatorPurchaseUnitRequired: 'Purchase unit is required', validatorPurchaseUnitConvertRequired: 'Purchase conversion quantity is required', + validatorPurchaseUnitConvertPositive: 'Purchase conversion quantity must be greater than 0', dialogFragileFlagLabel: 'Fragile', dialogSparePartLevelLabel: 'Spare Part Level', dialogPurchaseCycleLabel: 'Purchase Cycle (Days)', @@ -2499,7 +2501,7 @@ export default { dialogBrandPlaceholder: 'Please enter brand', dialogPurchaseUnitLabel: 'Purchase Unit', dialogPurchaseUnitConvertLabel: 'Purchase Conversion Qty', - dialogPurchaseUnitConvertTip: 'Inventory Unit = Conversion Qty × Purchase Unit', + dialogPurchaseUnitConvertTip: '1 Purchase Unit = N Inventory Units', images: 'Image', categoryTree: 'Material Category', addCategory: 'Add Category', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 57949785..d8b82ae5 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -476,8 +476,8 @@ export default { packagingRule: '包装/换算规则', stockDisplay: '库存展示', areaStockDisplay: '库区库存', - totalPackageCount: '总包数', - totalBaseCount: '总个数', + totalPackageCount: '总数', + totalBaseCount: '基本数量', unit: '单位', count: '基本数量', latestInTime: '最近入库', @@ -642,6 +642,7 @@ export default { outPackageCount: '出库包数', inPackageCount: '入库包数', inItemCount: '入库个数', + inCount: '入库数量', outCount: '出库个数', packageCountWithItems: '包数(每包{count}个)', itemCount: '个数', @@ -3727,6 +3728,7 @@ export default { validatorSupplierRequired: '供应商不能为空', validatorPurchaseUnitRequired: '采购单位不能为空', validatorPurchaseUnitConvertRequired: '采购换算数量不能为空', + validatorPurchaseUnitConvertPositive: '采购换算数量必须大于 0', dialogFragileFlagLabel: '是否易损件', dialogSparePartLevelLabel: '备件等级', dialogPurchaseCycleLabel: '采购周期(天)', @@ -3734,7 +3736,7 @@ export default { dialogBrandPlaceholder: '请输入品牌', dialogPurchaseUnitLabel: '采购单位', dialogPurchaseUnitConvertLabel: '采购换算数量', - dialogPurchaseUnitConvertTip: '库存单位 = 换算数量 × 采购单位', + dialogPurchaseUnitConvertTip: '1 采购单位 = N 库存单位', images: '图片', categoryTree: '物料分类', addCategory: '新增分类', diff --git a/src/views/erp/product/product/ProductForm.vue b/src/views/erp/product/product/ProductForm.vue index 1df731e2..04cedb6a 100644 --- a/src/views/erp/product/product/ProductForm.vue +++ b/src/views/erp/product/product/ProductForm.vue @@ -179,7 +179,7 @@ - +
{{ purchaseUnitConvertTipText }}
@@ -675,6 +675,23 @@ const validateSuppliers = (_rule, value, callback) => { } callback() } + +const validatePurchaseUnitConvertQuantity = (_rule, value, callback) => { + if (formData.value.categoryType !== 2 && formData.value.categoryType !== 3) { + callback() + return + } + if (value === undefined || value === null || value === '') { + callback(new Error(t('FactoryModeling.ProductInformation.validatorPurchaseUnitConvertRequired'))) + return + } + const quantity = Number(value) + if (!Number.isFinite(quantity) || quantity <= 0) { + callback(new Error(t('FactoryModeling.ProductInformation.validatorPurchaseUnitConvertPositive'))) + return + } + callback() +} // 包装方案弹框相关 const packagingSchemeDialogVisible = ref(false) const packagingSchemeDialogLoading = ref(false) @@ -908,7 +925,7 @@ const formRules = reactive({ packagingSchemes: [{ required: true, validator: validatePackagingSchemes, trigger: ['change', 'blur'] }], suppliers: [{ required: true, validator: validateSuppliers, trigger: ['change', 'blur'] }], purchaseUnitId: [{ required: true, message: t('FactoryModeling.ProductInformation.validatorPurchaseUnitRequired'), trigger: 'change' }], - purchaseUnitConvertQuantity: [{ required: true, message: t('FactoryModeling.ProductInformation.validatorPurchaseUnitConvertRequired'), trigger: 'blur' }] + purchaseUnitConvertQuantity: [{ required: true, validator: validatePurchaseUnitConvertQuantity, trigger: ['blur', 'change'] }] }) const formRef = ref() const categoryList = ref([]) @@ -919,7 +936,7 @@ const purchaseUnitConvertTipText = computed(() => { const qty = formData.value.purchaseUnitConvertQuantity const base = t('FactoryModeling.ProductInformation.dialogPurchaseUnitConvertTip') if (!inventoryUnitName || !purchaseUnitName || !qty) return base - return `${base}(${inventoryUnitName} = ${qty} × ${purchaseUnitName})` + return `${base}(1 ${purchaseUnitName} = ${qty} ${inventoryUnitName})` }) const packagingSchemeList = ref([]) const supplierList = ref([]) diff --git a/src/views/erp/product/product/index.vue b/src/views/erp/product/product/index.vue index 2aced0fc..008a64c8 100644 --- a/src/views/erp/product/product/index.vue +++ b/src/views/erp/product/product/index.vue @@ -571,7 +571,7 @@ const formatPurchaseUnitConvert = (detail: any) => { if (!detail?.purchaseUnitConvertQuantity) return '-' const unitName = detail.unitName || '' const purchaseUnitName = detail.purchaseUnitName || '' - return `${unitName} = ${detail.purchaseUnitConvertQuantity} × ${purchaseUnitName}` + return `1 ${purchaseUnitName} = ${detail.purchaseUnitConvertQuantity} ${unitName}` } const sparePartLevelDict = computed(() => getIntDictOptions(DICT_TYPE.SPARE_PARTS_LEVEL)) diff --git a/src/views/erp/stock/checkExecution/components/StockCheckExecutionForm.vue b/src/views/erp/stock/checkExecution/components/StockCheckExecutionForm.vue index e5a54432..ad0538bb 100644 --- a/src/views/erp/stock/checkExecution/components/StockCheckExecutionForm.vue +++ b/src/views/erp/stock/checkExecution/components/StockCheckExecutionForm.vue @@ -328,7 +328,11 @@ - + + +
diff --git a/src/views/erp/stock/checkRecord/index.vue b/src/views/erp/stock/checkRecord/index.vue index 2348ca54..46217d56 100644 --- a/src/views/erp/stock/checkRecord/index.vue +++ b/src/views/erp/stock/checkRecord/index.vue @@ -368,7 +368,7 @@ const getSourceTypeLabel = (value: number | string | undefined) => { } const getUnitName = (row: StockCheckRecordVO) => { - return row.productUnitName || row.unitName || '' + return row.purchaseUnitName || row.unitName || row.productUnitName || '' } const formatNumber = (value: number | string | undefined) => { diff --git a/src/views/erp/stock/in/components/StockInItemForm.vue b/src/views/erp/stock/in/components/StockInItemForm.vue index 1ddd4e28..f15992d2 100644 --- a/src/views/erp/stock/in/components/StockInItemForm.vue +++ b/src/views/erp/stock/in/components/StockInItemForm.vue @@ -149,7 +149,7 @@ - + - + --> - + + +