zck 8 месяцев назад
Родитель
Сommit
c0b6d0bc3b

+ 18 - 0
src/api/mes/job.js

@@ -844,3 +844,21 @@ export const getCPDelete = (params) => {
     params
   })
 }
+
+//物料存货编码数据同步接口
+export const InventoryCodeData = (params) => {
+  return service({
+    url: '/mes_server/Synchronization/InventoryCodeData',
+    method: 'get',
+    params
+  })
+}
+
+//美浓物料存货编码数据同步
+export const MNInventoryCodeData = (params) => {
+  return service({
+    url: '/mes_server/Synchronization/MNInventoryCodeData',
+    method: 'get',
+    params
+  })
+}

+ 148 - 23
src/view/managements/hardversionlibrary.vue

@@ -11,6 +11,7 @@
                 <el-button type="primary" class="bt" icon="edit" @click="onADD">添加</el-button>
                 <el-button type="primary" class="bt" icon="delete" :disabled="!selectedIds" @click="on_delete">删除</el-button>
                 <el-button type="primary" class="bt" icon="download"  @click="ToExcel" >导出到Excel</el-button>
+                <el-button type="primary" class="bt" icon="edit" @click="onsync">获取U8资料</el-button>
               </el-form-item>
             </el-form>
   
@@ -45,12 +46,12 @@
                         >
                
                <el-table-column  sortable align="center" label="存货编码" prop="存货编码"  width="120" />
-               <el-table-column  sortable align="center" label="物料名称" prop="物料名称"  width="120" />
+               <el-table-column  sortable align="center" label="物料名称" prop="物料名称"  width="200" />
                <el-table-column   align="center" label="印版名称" prop="印版名称"  width="200" />
                <el-table-column   align="center" label="供方批号" prop="供方批号"  width="200" />
                <el-table-column   align="center" label="制造日期" prop="制造日期"  width="110" />
-               <el-table-column   align="center" label="报废日期" prop="报废日期"  width="200" />
-               <el-table-column   align="center" label="原始印数" prop="原始印数"  width="200" />
+               <el-table-column   align="center" label="报废日期" prop="报废日期"  width="110" />
+               <el-table-column   align="center" label="原始印数" prop="原始印数"  width="110" />
                <el-table-column   align="center" label="累计印数" prop="累计印数"  width="110" />
                <el-table-column   align="center" label="考核印数" prop="考核印数"  width="110" />
                <el-table-column   align="center" label="创建用户" prop="创建用户"  width="110" />
@@ -145,7 +146,11 @@
                 <el-row :gutter="20">
                 <el-col :span="10">
                     <el-form-item label="存货编码">
-                    <el-input v-model="Plate.存货编码" @keydown="handleInventoryKeyDown($event)"  placeholder="请输入存货编码" />
+                      <el-input 
+                      v-model="Plate.存货编码" 
+                      id = '存货编码'
+                      @keydown="handleKeyDown" 
+                    />
                     </el-form-item>
                 </el-col>
                 </el-row>
@@ -154,7 +159,7 @@
                 <el-row :gutter="20">
                   <el-col :span="18">
                     <el-form-item label="存货名称">
-                    <el-input v-model="Plate.存货名称"  placeholder="请输入存货名称" />
+                    <el-input v-model="Plate.存货名称" readonly />
                     </el-form-item>
                 </el-col>
                 </el-row>
@@ -162,7 +167,7 @@
                 <el-row :gutter="20">
                 <el-col :span="18">
                     <el-form-item label="印版备注">
-                    <el-input v-model="Plate.印版备注"   />
+                    <el-input v-model="Plate.印版备注"  id = '印版备注' @keydown="entskip($event, '存货编码', '印版备注', '制造日期')" />
                     </el-form-item>
                 </el-col>
                 </el-row>
@@ -172,7 +177,7 @@
                   <el-col :span="10">
                         <el-form-item label="制造日期">
                             <el-date-picker
-                            v-model="Plate.制造日期"
+                            v-model="Plate.制造日期" id = '制造日期' @keydown="entskip($event, '印版备注', '制造日期', '报废日期')"
                             type="date"
                             placeholder="选择制造日期"
                             style="width: 100%"
@@ -182,7 +187,7 @@
                     <el-col :span="10 ">
                         <el-form-item label="报废日期">
                             <el-date-picker
-                            v-model="Plate.报废日期"
+                            v-model="Plate.报废日期" id = '报废日期' @keydown="entskip($event, '制造日期', '报废日期', '初始印数')"
                             type="date"
                             placeholder="选择报废日期"
                             style="width: 100%"
@@ -195,12 +200,12 @@
                 <el-row :gutter="20">
                   <el-col :span="10">
                     <el-form-item label="初始印数">
-                    <el-input v-model="Plate.初始印数" type="number" placeholder="请输入初始印数" />
+                    <el-input v-model="Plate.初始印数" id = '初始印数' @keydown="entskip($event, '报废日期', '初始印数', '考核印数')" type="number" placeholder="请输入初始印数" />
                     </el-form-item>
                 </el-col>
                 <el-col :span="10">
                     <el-form-item label="考核印数">
-                    <el-input v-model="Plate.考核印数" type="number" placeholder="请输入考核印数" />
+                    <el-input v-model="Plate.考核印数" id = '考核印数' @keydown="entskip($event, '初始印数', '考核印数', '供方批号')" type="number" placeholder="请输入考核印数" />
                     </el-form-item>
                 </el-col>
                 </el-row>
@@ -210,10 +215,16 @@
 
                 <el-col :span="18">
                     <el-form-item label="供方批号">
-                    <el-input v-model="Plate.供方批号" placeholder="请输入供方批号" />
+                    <el-input v-model="Plate.供方批号" id = '供方批号' @keydown="entskip($event, '考核印数', '供方批号', 'number')" placeholder="请输入供方批号" />
                     </el-form-item>
                 </el-col>
                 </el-row>
+
+                  <el-row :gutter="20" v-if="type === 'create'">
+                    <el-col :span="15">
+                      <el-input v-model="Plate.number" id = 'number' @keydown="entskip($event, '供方批号', 'number', '')" style="margin-left:120px" />
+                    </el-col>
+                  </el-row>
                 
             </el-form>
 
@@ -296,11 +307,24 @@
   import { exportExcelFile } from '@/utils/excel'
   import { useUserStore } from '@/pinia/modules/user'
   import {ElMessage,ElMessageBox} from "element-plus";
-  import {getPPTab,getPPList,getPPEdit,getPPDetail,getPPCode,getPPReceive,getPPDelete,getPPkhTab} from "@/api/mes/job.js"
+  import {getPPTab,getPPList,getPPEdit,getPPDetail,getPPCode,getPPReceive,getPPDelete,getPPkhTab,InventoryCodeData,MNInventoryCodeData} from "@/api/mes/job.js"
   const userStore = useUserStore()
   const sys_id='['+userStore.userInfo.userName+'/'+userStore.userInfo.nickName+']'
   defineOptions({name: 'Company'})
 
+
+  // 获取当前日期
+  const today = new Date();
+    const year = today.getFullYear();
+    const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
+    const day = String(today.getDate()).padStart(2, '0');
+    const hours = String(today.getHours()).padStart(2, '0');
+    const minutes = String(today.getMinutes()).padStart(2, '0');
+    const seconds = String(today.getSeconds()).padStart(2, '0');
+    const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+    const currentDates = `${year}-${month}-${day}`;
+
+
  // 分页
  const page = ref(1)
 const total = ref(0)
@@ -416,8 +440,15 @@ getTreeData()
       nodecode.value = node.label.split(' ')[0]
       showKH.value = !node.code?true:false;
       const res = await getPPList({code:node.label.split(' ')[0],page:page.value,limit:pageSize.value})
-      total.value = res.data.total
-      wltableData.value = res.data.data
+      if (res.code === 0){
+        total.value = res.data.total
+        wltableData.value = res.data.data
+      }else{
+        total.value = 0
+        wltableData.value = []
+        wlmxtableData.value = []
+      }
+      
     }
   }
 
@@ -458,6 +489,8 @@ getTreeData()
     // 新增逻辑
     console.log('新增按钮点击'); 
     type.value = 'create'
+    Plate.制造日期 = currentDates
+    console.log(Plate.制造日期)
     dialogPlateVisible.value = true
   }
 
@@ -485,14 +518,49 @@ const selectedCategory = ref('') // 选中的分类
 const categoryOptions = ref([]) // 下拉框选项
 const categoryLoading = ref(false) // 下拉框加载状态
 
-// 处理输入框按键事件
 const handleInventoryKeyDown = async (event) => {
   if (event.key === 'Tab' || event.key === 'Enter') {
-    event.preventDefault()
-    await _getInventoryList()
-    inventorySearchModel.value = true
+    console.log(Plate.存货编码)
+    // return;
+    event.preventDefault();
+    try {
+      if(Plate.存货编码 === undefined||Plate.存货编码 === ''){
+
+        await _getInventoryList();
+        inventorySearchModel.value = true;
+      }else{
+        const res = await getPPCode({ code: '', search: Plate.存货编码||'' });
+      console.log(res);
+
+      // 提取所有第三层的数组
+      const validData = [];
+      Object.values(res.data).forEach(l1 => {    
+        Object.values(l1).forEach(l2 => {           
+          Object.values(l2).forEach(l3 => {         
+            if (Array.isArray(l3)) {
+              validData.push(...l3.filter(item => item?.trim()));
+            }
+          });
+        });
+      });
+
+      console.log("提取的数据:", validData);
+      if (validData.length === 1) {//如果只有一条数据
+        console.log("唯一数据:", validData[0]);
+        Plate.存货名称 = validData[0].split('/')[1];
+      } else if (validData.length > 1) {
+        await _getInventoryList();
+        inventorySearchModel.value = true;
+      } else {
+        console.log("未匹配到数据");
+      }
+      }
+      
+    } catch (error) {
+      console.error("请求失败:", error);
+    }
   }
-}
+};
 
 // 在打开弹窗时获取分类数据
 const _getInventoryList = async () => {
@@ -624,8 +692,8 @@ const dhlenterDialog = async () => {
     code: Plate.存货编码,
     name: Plate.存货名称,
     desc: Plate.印版备注,
-    Manufactur_date:dayjs(Plate.制造日期).format('YYYY-MM-DD')||'',
-    Scrappe_date: dayjs(Plate.报废日期).format('YYYY-MM-DD')||'',
+    Manufactur_date: Plate.制造日期 ? dayjs(Plate.制造日期).format('YYYY-MM-DD') : '',
+    Scrappe_date: Plate.报废日期 ? dayjs(Plate.报废日期).format('YYYY-MM-DD') : '',
     start_num: Plate.初始印数,
     Assessment_num: Plate.考核印数,
     batch: Plate.供方批号,
@@ -635,6 +703,7 @@ console.log(params)
 console.log(type.value)
   if (type.value === 'create') {
     console.log('新增')
+    params.number = Plate.number
     // 新增
     try {
       const response = await getPPEdit(params)
@@ -669,12 +738,14 @@ const initialPlateState = {
   存货编码: '',
   存货名称: '',
   印版备注: '',
-  制造日期: '',
-  报废日期: '',
+  制造日期: null,
+  报废日期: null,
   初始印数: '',
   考核印数: '',
   供方批号: '',
   value: [],
+  number: '',     
+  UniqID: ''     
 };
 //关闭弹窗
 const dhlcloseDialog = async () => {
@@ -805,6 +876,60 @@ const ToExcel = () => {
   return wbout;
   }
 }
+
+const onsync = async() => {
+  try {
+    // 并行请求两个接口
+    const [res1, res2] = await Promise.all([InventoryCodeData(), MNInventoryCodeData()])
+    
+    if (res1.code === 0 && res2.code === 0) {
+      ElMessage({
+        message: '同步成功',
+        type: 'success',
+      })
+    } else {
+      console.error('获取失败:', res1.msg || res2.msg)
+    }
+  } catch (error) {
+    console.error('请求出错:', error)
+  }
+}
+
+  //键盘input框跳转
+  const entskip = async (event,id1,id2,id3,idx) => {
+	if(event.keyCode === 40){
+	  if(id3!=''){
+		document.getElementById(id3).focus()
+	  }
+	}else if (event.keyCode === 13) { // Enter 或向下箭头
+	  if(id3!=''){
+		document.getElementById(id3).focus()
+	  }
+	} else if (event.keyCode === 38) { // 向上箭头
+	  if(id1!=''){
+    console.log(id1)
+
+		document.getElementById(id1).focus()
+	  }
+	}else if (event.keyCode === 8) { // 删除箭头
+	  if(id1!='' && document.getElementById(id2).value==''){
+		document.getElementById(id1).focus()
+	  }
+	}else if (event.keyCode === 37) { // 向左箭头
+	  if(id1!='' && document.getElementById(id2).selectionStart==0){
+		document.getElementById(id1).focus()
+	  }
+	}else if (event.keyCode === 39) { // 向右箭头
+	  if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
+		document.getElementById(id3).focus()
+	  }
+	}
+  }
+
+  const handleKeyDown = async (event) => {
+   handleInventoryKeyDown(event);  // 先执行异步操作
+  entskip(event, '', '存货编码', '印版备注');  // 再执行同步操作
+};
   
   </script>
   

+ 82 - 20
src/view/yunyin/shengchanguanli/PrintingPlateRequisition.vue

@@ -114,8 +114,9 @@
         <el-col :span="12">
           <el-form-item label="工单编号">
             <el-input 
-              v-model="Plate.工单编号"  
-              @keyup.enter="openOrderSelectDialog"
+              v-model="Plate.工单编号" 
+              id="工单编号" 
+              @keyup.enter="handleKeyDown"
               placeholder="请输入工单编号" 
             />
           </el-form-item>
@@ -151,6 +152,7 @@
           <el-form-item style="margin-top:20px" label="机台备注">
             <el-input 
               v-model="Plate.机台备注" 
+              id="机台备注"
               @keyup.enter="openMachineSelectDialog"
               placeholder="请输入机台备注" 
               readonly
@@ -215,6 +217,7 @@
     title="请选择机台"
     width="40%"
     @keyup.enter="confirmMachineSelection"
+    
   >
     <el-table
       ref="machineTableRef"
@@ -345,9 +348,14 @@ const transformData = (data) => {
       nodecode.value = node.label.split(' ')[0]
       showKH.value = node.code === '客户产品印版库'?true:false;
       const res = await getPPList({code:node.label.split(' ')[0],page:page.value,limit:pageSize.value})
-      console.log(res.data)
-      total.value = res.data.total
-      wltableData.value = res.data.data
+      if (res.code === 0){
+        total.value = res.data.total
+        wltableData.value = res.data.data
+      }else{
+        total.value = 0
+        wltableData.value = []
+        wlmxtableData.value = []
+      }
     }
   }
 
@@ -397,7 +405,16 @@ const transformData = (data) => {
 
   
     //新增
-    const Plate = reactive({})
+    // 定义名称到车间的映射
+    const nameToWorkshop = {
+    '易鹏': '印后车间',
+    '华余峰': '胶印车间',
+    '柴春才': '凹丝印车间'
+    }
+
+    const Plate = reactive({
+    车间: nameToWorkshop[userStore.userInfo.nickName] || '' 
+    })
     // 弹窗控制
     const dialogPlateVisible = ref(false)
     const dialogwithdrawVisible = ref(false)
@@ -422,6 +439,7 @@ const transformData = (data) => {
       return
     }else{
       dialogPlateVisible.value = true;
+      console.log(userStore.userInfo.nickName)
     }
   }
 
@@ -464,30 +482,38 @@ const rawcloseDialog = () => {
 }
 
   // 打开工单选择弹窗
-const openOrderSelectDialog = async () => {
+  const openOrderSelectDialog = async () => {
   try {
-    const res = await getOrderInfo({ order: Plate.工单编号 })
+    if(!Plate.工单编号){
+      ElMessage.error('请先输入工单编号')
+      return
+    }
+    const res = await getOrderInfo({ order: Plate.工单编号 });
     
-    if (res.code === 0 && res.data.length > 0) {
-      orderList.value = res.data
-      orderSelectDialogVisible.value = true
+    // 如果 res.msg 是 "参数错误",不处理
+    if (res.msg === "参数错误") {
+      return; // 直接返回,不弹任何提示
+    }
+    
+    // 正常逻辑
+    if (res.data?.length > 0) {
+      orderList.value = res.data;
+      orderSelectDialogVisible.value = true;
       
-      // 默认选中第一条并聚焦表格
       nextTick(() => {
         if (orderList.value.length > 0) {
-          orderTableRef.value.setCurrentRow(orderList.value[0])
-          selectedOrder.value = orderList.value[0]
-          // 聚焦表格以便响应键盘事件
-          orderTableRef.value.$el.querySelector('.el-table__body-wrapper').focus()
+          orderTableRef.value.setCurrentRow(orderList.value[0]);
+          selectedOrder.value = orderList.value[0];
+          orderTableRef.value.$el.querySelector('.el-table__body-wrapper').focus();
         }
-      })
+      });
     } else {
-      ElMessage.warning('未找到相关工单信息')
+      ElMessage.warning('未找到相关工单信息'); // 只在这里提示
     }
   } catch (error) {
-    ElMessage.error('获取工单信息失败: ' + error.message)
+    ElMessage.error('获取工单信息失败: ' + error.message);
   }
-}
+};
 
 // 处理工单选择
 const handleOrderSelect = (row) => {
@@ -682,6 +708,42 @@ const ToExcel = () => {
     return wbout;
   }
 }
+
+  //键盘input框跳转
+  const entskip = async (event,id1,id2,id3,idx) => {
+	if(event.keyCode === 40){
+	  if(id3!=''){
+		document.getElementById(id3).focus()
+	  }
+	}else if (event.keyCode === 13) { // Enter 或向下箭头
+	  if(id3!=''){
+		document.getElementById(id3).focus()
+	  }
+	} else if (event.keyCode === 38) { // 向上箭头
+	  if(id1!=''){
+    console.log(id1)
+
+		document.getElementById(id1).focus()
+	  }
+	}else if (event.keyCode === 8) { // 删除箭头
+	  if(id1!='' && document.getElementById(id2).value==''){
+		document.getElementById(id1).focus()
+	  }
+	}else if (event.keyCode === 37) { // 向左箭头
+	  if(id1!='' && document.getElementById(id2).selectionStart==0){
+		document.getElementById(id1).focus()
+	  }
+	}else if (event.keyCode === 39) { // 向右箭头
+	  if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
+		document.getElementById(id3).focus()
+	  }
+	}
+  }
+
+  const handleKeyDown = async (event) => {
+  entskip(event, '', '工单编号', '机台备注');  // 再执行同步操作
+    openOrderSelectDialog(event);  // 先执行异步操作
+};
   
   </script>