From 39868da3de6192d19dfd316c8be1c080b2d3ebe7 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期五, 18 四月 2025 14:35:46 +0800
Subject: [PATCH] 修改

---
 src/views/hazardousChemicals/warehouseManage/components/addProDialog.vue |   83 +++++++++++++++++++++++++++++++++--------
 1 files changed, 67 insertions(+), 16 deletions(-)

diff --git a/src/views/hazardousChemicals/warehouseManage/components/addProDialog.vue b/src/views/hazardousChemicals/warehouseManage/components/addProDialog.vue
index db362a7..31c6a3d 100644
--- a/src/views/hazardousChemicals/warehouseManage/components/addProDialog.vue
+++ b/src/views/hazardousChemicals/warehouseManage/components/addProDialog.vue
@@ -51,7 +51,21 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="最小包装数量:" prop="num" >
+        <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>
         <el-form-item label="批号:" prop="batchNo" >
@@ -73,7 +87,7 @@
 <script setup>
 import {reactive, ref, toRefs} from 'vue'
 import {ElMessage} from "element-plus";
-import {getWarehouse} from "@/api/hazardousChemicals/warehouse";
+import {getCupById, getWarehouse} from "@/api/hazardousChemicals/warehouse";
 import {addProductRecord, editProductRecord, getProductRecord} from "@/api/hazardousChemicals/productRecord";
 import {getFinishBasicList} from "@/api/hazardousChemicals/finishedBasicInfo";
 import moment from "moment";
@@ -84,6 +98,18 @@
 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: {
@@ -93,13 +119,16 @@
     warehouseName: '',
     warehouseId: null,
     num: null,
-    batchNo: ''
+    batchNo: '',
+    cupboardName: '',
+    cupboardId: null,
 
   },
   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: '请选择入库成品' }],
+    cupboardId: [{ required: true, trigger: "blur", message: '请选择存储柜' }]
     // batchNo: [{ required: true, trigger: "blur", message: '请输入批号' }]
   },
   proList: [],
@@ -111,13 +140,16 @@
 const openDialog = async (type, value) => {
   await getProBasic("")
   await getWareHouseList("")
-
+  state.form.batchNo = moment(new Date()).format("YYYYMMDD")
   title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑':'' ;
   if(type === 'edit' ) {
-    state.form = value;
-    state.form.basicName = value.productBasic.name
+    await getCupList(value.warehouseId)
+    state.form = JSON.parse(JSON.stringify(value));
+    state.form.cupboardId = state.form.cupboard && state.form.cupboard.id ?state.form.cupboard.id : null
+    state.form.basicName = value.productBasic.name + '—' + value.productBasic.productSn + ' (' + value.productBasic.metering +value.productBasic.unit+') '
     state.form.warehouseName = value.warehouse.name;
     choosePro.value = value.productBasic
+    choosePro.value.name = value.productBasic.name + '—' + value.productBasic.productSn + ' (' + value.productBasic.metering + value.productBasic.unit+') '
     changeNum()
   }
   dialogVisible.value = true;
@@ -136,7 +168,13 @@
   }
   const res = await getFinishBasicList(param)
   if(res.code == 200){
-    state.proList = res.data.list
+    state.proList = res.data.list.map(item => {
+      return{
+        ...item,
+        name: item.name + '—' + item.productSn + ' (' + item.metering +item.unit+') '
+
+      }
+    })
   }else{
     ElMessage.warning(res.message)
   }
@@ -165,9 +203,9 @@
   const valid = await busRef.value.validate();
   if(valid){
     if(title.value === '新增'){
-      if(state.form.batchNo == ''){
-        state.form.batchNo = moment(new Date()).format("YYYY-MM-DD")
-      }
+      // if(state.form.batchNo == ''){
+      //   state.form.batchNo = moment(new Date()).format("YYYY-MM-DD")
+      // }
       const {id, ...data} = JSON.parse(JSON.stringify(state.form))
       const res = await addProductRecord(data)
       if(res.code === 200){
@@ -183,9 +221,9 @@
       reset();
       dialogVisible.value = false;
     }else if(title.value === '编辑'){
-      if(state.form.batchNo == ''){
-        state.form.batchNo = moment(new Date()).format("YYYY-MM-DD")
-      }
+      // if(state.form.batchNo == ''){
+      //   state.form.batchNo = moment(new Date()).format("YYYY-MM-DD")
+      // }
       const {...data} = JSON.parse(JSON.stringify(state.form))
       const res = await editProductRecord(data)
       if(res.code === 200){
@@ -210,21 +248,32 @@
       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 = () => {
   busRef.value.clearValidate();
   reset();
@@ -239,7 +288,9 @@
     warehouseName: '',
     warehouseId: null,
     num: null,
-    batchNo: ''
+    batchNo: '',
+    cupboardName: '',
+    cupboardId: null,
   }
   state.proList = [];
   state.wareHouseList = [];

--
Gitblit v1.9.2