diff --git a/src/api/erp/stock/in/index.ts b/src/api/erp/stock/in/index.ts index ee692bb3..c902275d 100644 --- a/src/api/erp/stock/in/index.ts +++ b/src/api/erp/stock/in/index.ts @@ -7,6 +7,7 @@ export interface StockInVO { supplierId: number // 供应商编号 inTime: Date // 入库时间 inType: string //入库类型 + stockUserId?: string // 经办人编号 totalCount: number // 合计数量 totalPrice: number // 合计金额,单位:元 status: number // 状态 diff --git a/src/locales/en.ts b/src/locales/en.ts index c7a96dca..b549838c 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -364,6 +364,8 @@ export default { remark: 'Remark', supplier: 'Supplier', productInfo: 'Product Info', + materialInfo: 'Material Info', + sparePartInfo: 'Spare Part Info', count: 'Quantity', price: 'Amount', totalPrice: 'Total Price', @@ -2070,8 +2072,8 @@ export default { dialogNamePlaceholder: 'Please enter name', dialogCategoryLabel: 'Category', dialogCategoryPlaceholder: 'Please select category', - dialogUnitLabel: 'Unit', - dialogUnitPlaceholder: 'Please select unit', + dialogUnitLabel: 'Inventory Unit', + dialogUnitPlaceholder: 'Please select inventory unit', dialogStandardLabel: 'Specification', dialogStandardPlaceholder: 'Please enter specification', dialogExpiryDayLabel: 'Shelf Life (Days)', @@ -2106,11 +2108,16 @@ export default { dialogSupplierTitle: 'Select Supplier', dialogSupplierPlaceholder: 'Please select supplier', validatorSupplierRequired: 'Supplier is required', + validatorPurchaseUnitRequired: 'Purchase unit is required', + validatorPurchaseUnitConvertRequired: 'Purchase conversion quantity is required', dialogFragileFlagLabel: 'Fragile', dialogSparePartLevelLabel: 'Spare Part Level', dialogPurchaseCycleLabel: 'Purchase Cycle (Days)', dialogBrandLabel: 'Brand', dialogBrandPlaceholder: 'Please enter brand', + dialogPurchaseUnitLabel: 'Purchase Unit', + dialogPurchaseUnitConvertLabel: 'Purchase Conversion Qty', + dialogPurchaseUnitConvertTip: 'Inventory Unit = Conversion Qty × Purchase Unit', images: 'Image', categoryTree: 'Material Category', addCategory: 'Add Category', @@ -2508,6 +2515,7 @@ export default { MoldBrandPage: { all: 'All', onMachine: 'On Machine', + inStock: 'In Stock', standby: 'Standby', repairing: 'Repairing', scrapped: 'Scrapped', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 4e384913..0abe38f1 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -364,6 +364,8 @@ export default { remark: '备注', supplier: '供应商', productInfo: '产品信息', + materialInfo: '物料信息', + sparePartInfo: '备件信息', count: '数量', price: '金额', totalPrice: '合计金额', @@ -1990,6 +1992,7 @@ export default { MoldBrandPage: { all: '全部', onMachine: '在机', + inStock: '在库', standby: '待用', repairing: '维修', scrapped: '报废', @@ -3263,8 +3266,8 @@ export default { dialogCategoryTypeLabel: '类型', dialogCategoryLabel: '分类', dialogCategoryPlaceholder: '请选择分类', - dialogUnitLabel: '单位', - dialogUnitPlaceholder: '请选择单位', + dialogUnitLabel: '库存单位', + dialogUnitPlaceholder: '请选择库存单位', dialogStandardLabel: '规格', dialogStandardPlaceholder: '请输入规格', dialogExpiryDayLabel: '保质期天数', @@ -3299,11 +3302,16 @@ export default { dialogSupplierTitle: '选择供应商', dialogSupplierPlaceholder: '请选择供应商', validatorSupplierRequired: '供应商不能为空', + validatorPurchaseUnitRequired: '采购单位不能为空', + validatorPurchaseUnitConvertRequired: '采购换算数量不能为空', dialogFragileFlagLabel: '是否易损件', dialogSparePartLevelLabel: '备件等级', dialogPurchaseCycleLabel: '采购周期(天)', dialogBrandLabel: '品牌', dialogBrandPlaceholder: '请输入品牌', + dialogPurchaseUnitLabel: '采购单位', + dialogPurchaseUnitConvertLabel: '采购换算数量', + dialogPurchaseUnitConvertTip: '库存单位 = 换算数量 × 采购单位', images: '图片', categoryTree: '物料分类', addCategory: '新增分类', diff --git a/src/views/erp/mold/index.vue b/src/views/erp/mold/index.vue index 01b999d6..a5baf626 100644 --- a/src/views/erp/mold/index.vue +++ b/src/views/erp/mold/index.vue @@ -175,6 +175,7 @@ const statusOptions = computed(() => getIntDictOptions(DICT_TYPE.ERP_MOLD_STATUS const counters = reactive({ allCount: 0, onMachineCount: 0, + inStockCount: 0, standbyCount: 0, repairingCount: 0, scrappedCount: 0 @@ -216,6 +217,7 @@ const onKeywordClear = () => { const statusCards = computed(() => [ { key: 'all', label: t('MoldManagement.MoldBrandPage.all'), value: counters.allCount, status: undefined }, { key: 'onMachine', label: t('MoldManagement.MoldBrandPage.onMachine'), value: counters.onMachineCount, status: 1 }, + { key: 'inStock', label: t('MoldManagement.MoldBrandPage.inStock'), value: counters.inStockCount, status: 4 }, { key: 'standby', label: t('MoldManagement.MoldBrandPage.standby'), value: counters.standbyCount, status: 0 }, { key: 'repairing', label: t('MoldManagement.MoldBrandPage.repairing'), value: counters.repairingCount, status: 2 }, { key: 'scrapped', label: t('MoldManagement.MoldBrandPage.scrapped'), value: counters.scrappedCount, status: 3 } @@ -235,6 +237,7 @@ const normalizePageResult = (data: any) => { total.value = pageResult.total ?? 0 counters.allCount = Number(data?.allCount ?? pageResult.total ?? 0) counters.onMachineCount = Number(data?.onMachineCount ?? 0) + counters.inStockCount = Number(data?.inStockCount ?? 0) counters.standbyCount = Number(data?.standbyCount ?? 0) counters.repairingCount = Number(data?.repairingCount ?? 0) counters.scrappedCount = Number(data?.scrappedCount ?? 0) @@ -398,7 +401,7 @@ onMounted(async () => { diff --git a/src/views/erp/product/product/index.vue b/src/views/erp/product/product/index.vue index 54c225ea..2aced0fc 100644 --- a/src/views/erp/product/product/index.vue +++ b/src/views/erp/product/product/index.vue @@ -136,13 +136,13 @@
-
{{ t('FactoryModeling.ProductInformation.qrcode') }}
+
{{ t('FactoryModeling.ProductInformation.images') }}
@@ -195,6 +195,14 @@ -
-
{{ t('FactoryModeling.ProductInformation.images') }}
+
+
{{ t('FactoryModeling.ProductInformation.qrcode') }}
- +
@@ -559,6 +567,13 @@ const formatSparePartLevel = (value: any) => { return dictItem?.label || formatValue(value) } +const formatPurchaseUnitConvert = (detail: any) => { + if (!detail?.purchaseUnitConvertQuantity) return '-' + const unitName = detail.unitName || '' + const purchaseUnitName = detail.purchaseUnitName || '' + return `${unitName} = ${detail.purchaseUnitConvertQuantity} × ${purchaseUnitName}` +} + const sparePartLevelDict = computed(() => getIntDictOptions(DICT_TYPE.SPARE_PARTS_LEVEL)) const formatValue = (value: any) => { @@ -640,6 +655,21 @@ const formatDateTime = (value: any) => { grid-column: 1 / -1; } +.detail-qrcode-box { + display: flex; + flex-direction: column; + gap: 6px; +} + +.detail-qrcode { + width: 80px; + height: 80px; + flex-shrink: 0; + border: 1px solid var(--el-border-color-lighter); + border-radius: 4px; + cursor: pointer; +} + .field-label { flex: 0 0 auto; color: var(--el-text-color-regular); diff --git a/src/views/erp/product/unit/index.vue b/src/views/erp/product/unit/index.vue index 1cb4ef60..71063df0 100644 --- a/src/views/erp/product/unit/index.vue +++ b/src/views/erp/product/unit/index.vue @@ -87,11 +87,11 @@ prop="primaryFlag" /> - + /> --> diff --git a/src/views/mes/moldget/components/StockOutItemForm.vue b/src/views/mes/moldget/components/StockOutItemForm.vue index 08289ccd..b7450af3 100644 --- a/src/views/mes/moldget/components/StockOutItemForm.vue +++ b/src/views/mes/moldget/components/StockOutItemForm.vue @@ -137,6 +137,7 @@ const getList = async () => { pageSize: queryParams.pageSize, code: queryParams.code, name: queryParams.name, + status: 4, }) const pageResult = data?.pageResult ?? data ?? {} list.value = pageResult.list ?? [] diff --git a/src/views/mes/moldreturn/components/StockInItemForm.vue b/src/views/mes/moldreturn/components/StockInItemForm.vue index be7d2152..76ac7936 100644 --- a/src/views/mes/moldreturn/components/StockInItemForm.vue +++ b/src/views/mes/moldreturn/components/StockInItemForm.vue @@ -138,6 +138,7 @@ const getList = async () => { pageSize: queryParams.pageSize, code: queryParams.code, name: queryParams.name, + excludeStatus: 4, }) const pageResult = data?.pageResult ?? data ?? {} list.value = pageResult.list ?? []