From f88d2029c7b2c66fcf0a9dffdc55da75b939c2ea Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Tue, 12 Aug 2025 10:55:54 +0800
Subject: [PATCH] 修改
---
src/views/hazardousChemicals/warehouseManage/components/addRawDialog.vue | 76 +++++++++++++++++++++++++++++++++----
1 files changed, 67 insertions(+), 9 deletions(-)
diff --git a/src/views/hazardousChemicals/warehouseManage/components/addRawDialog.vue b/src/views/hazardousChemicals/warehouseManage/components/addRawDialog.vue
index d90e308..f37ac11 100644
--- a/src/views/hazardousChemicals/warehouseManage/components/addRawDialog.vue
+++ b/src/views/hazardousChemicals/warehouseManage/components/addRawDialog.vue
@@ -51,6 +51,20 @@
/>
</el-select>
</el-form-item>
+ <el-form-item label="存储柜:" prop="cupboardId" >
+ <el-select
+ v-model="state.form.cupboardId"
+ placeholder="请选择存储柜"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in state.cupList"
+ :key="item.id"
+ :label="item.cupboardName"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
<el-form-item label="数量:" prop="num" >
<el-input v-model.trim="state.form.num" oninput="value=value.replace(/^\.+|[^\d]/g,'')" placeholder="请输入最小包装数量" @input="changeNum"></el-input>
</el-form-item>
@@ -76,7 +90,7 @@
<script setup>
import {reactive, ref, toRefs} from 'vue'
import {ElMessage} from "element-plus";
-import {addWarehouse, checkName, editWarehouse, getWarehouse} from "@/api/hazardousChemicals/warehouse";
+import {addWarehouse, checkName, editWarehouse, getCupById, getWarehouse} from "@/api/hazardousChemicals/warehouse";
import {verifyPhone} from "@/utils/validate";
import {checkBasicName, getBasicList} from "@/api/hazardousChemicals/basicInfo";
import {addProductRecord, editProductRecord, getProductRecord} from "@/api/hazardousChemicals/productRecord";
@@ -90,6 +104,19 @@
const length = ref()
const emit = defineEmits(["getList"]);
+const validateNum = (rule, value, callback)=>{
+ if(value === ''){
+ callback(new Error('请输入最小包装数量'))
+ }else{
+ if(choosePro.value && value > choosePro.value.maxEntry ){
+ callback(new Error(`输入数量不能大于单次入库最大数量(${choosePro.value.maxEntry})`))
+ }else {
+ callback()
+ }
+
+ }
+}
+
const state = reactive({
form: {
@@ -98,19 +125,22 @@
basicName:'',
warehouseName: '',
warehouseId: null,
+ cupboardName: '',
+ cupboardId: null,
num: null,
batchNo: ''
},
formRules:{
- num: [{ required: true, trigger: "blur", message: '请输入数量' }],
+ num: [{ required: true, trigger: "blur", validator: validateNum }],
warehouseName: [{ required: true, trigger: "blur", message: '请选择入库仓库' }],
basicName: [{ required: true, trigger: "blur", message: '请选择入库成品' }],
- // batchNo: [{ required: true, trigger: "blur", message: '请输入批号' }]
+ cupboardId: [{ required: true, trigger: "blur", message: '请选择存储柜' }]
},
rawList: [],
wareHouseList: [],
- message: ''
+ message: '',
+ cupList: []
})
@@ -121,9 +151,11 @@
title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑':'' ;
if(type === 'edit' ) {
state.form = JSON.parse(JSON.stringify(value));
- state.form.basicName = value.hazmatBasic.name
+ await getCupList(value.warehouseId)
+ state.form.basicName = value.hazmatBasic.name + '—' + value.hazmatBasic.productSn + ' (' + value.hazmatBasic.metering + value.hazmatBasic.unit+') '
state.form.warehouseName = value.warehouse.name;
choosePro.value = value.hazmatBasic
+ choosePro.value.name = value.hazmatBasic.name + '—' + value.hazmatBasic.productSn + ' (' + value.hazmatBasic.metering + value.hazmatBasic.unit+') '
changeNum()
}
dialogVisible.value = true;
@@ -142,7 +174,14 @@
}
const res = await getBasicList(param)
if(res.code == 200){
- state.rawList = res.data.list
+ state.rawList = res.data.list.map(item => {
+ return{
+ ...item,
+ name: item.name + '—' + item.productSn + ' (' + item.metering +item.unit+') '
+
+ }
+ })
+ console.log('111',state.rawList)
}else{
ElMessage.warning(res.message)
}
@@ -161,7 +200,12 @@
}
const res = await getWarehouse(param)
if(res.code == 200){
- state.wareHouseList = res.data.list
+ state.wareHouseList = res.data.list.map(item => {
+ return {
+ ...item,
+ children: item.warehouseCupboards && item.warehouseCupboards.length>0 ? item.warehouseCupboards : null
+ }
+ })
}else{
ElMessage.warning(res.message)
}
@@ -216,19 +260,30 @@
state.form.basicId = item.id
console.log('item',item)
choosePro.value = item;
+ changeNum()
}
})
}
const changeNum = () => {
const minPackageType = choosePro.value.minPackage == 0 ? '瓶' :choosePro.value.minPackage == 1?'袋':choosePro.value.minPackage == 2?'桶 ':choosePro.value.minPackage == 3?'盒':choosePro.value.minPackage == 4?'箱':'其他'
- state.message = `您将入库 { ${choosePro.value.name} },编号:{ ${choosePro.value.productSn} },最小包装${choosePro.value.metering}${choosePro.value.unit},类别:${minPackageType}。 \n 共计:${state.form.num}${minPackageType}`
+ state.message = `您将入库 { ${choosePro.value.name.substring(0,choosePro.value.name.lastIndexOf('—')) } },编号:{ ${choosePro.value.productSn} },最小包装${choosePro.value.metering}${choosePro.value.unit},类别:${minPackageType}。 \n 共计:${state.form.num}${minPackageType}`
}
const selectWareValue = (val) => {
+ state.form.cupboardId = null
state.wareHouseList.forEach(item => {
if(item.name === val){
state.form.warehouseId = item.id
+ getCupList(item.id)
}
})
+}
+const getCupList = async (val) => {
+ const res = await getCupById(val)
+ if(res.code == 200) {
+ state.cupList = res.data
+ }else {
+ ElMessage.warning(res.message)
+ }
}
const handleClose = () => {
@@ -245,11 +300,14 @@
warehouseName: '',
warehouseId: null,
num: null,
- batchNo: ''
+ batchNo: '',
+ cupboardName: '',
+ cupboardId: null,
}
state.rawList = [];
state.wareHouseList = [];
state.message = '';
+ choosePro.value = {}
}
defineExpose({
openDialog
--
Gitblit v1.9.2