Przeglądaj źródła

Merge branch 'master' of https://git.7in6.com/Minong/mes-admin-backend-ui

tty 1 rok temu
rodzic
commit
ba07c374ee

+ 1 - 0
src/api/jixiaoguanli/baogong.js

@@ -63,6 +63,7 @@ export const ChanliangDel = (params) => {
     params
   })
 }
+
 //客诉记录
 export const  ComplaintRecord= (params) => {
   return service({

+ 7 - 0
src/api/jixiaoguanli/jitairibaobiao.js

@@ -979,4 +979,11 @@ export const index = (params) => {
     method: 'get',
     params
   })
+}
+export const ChanliangAdd = (data) => {
+  return service({
+    url:'/mes_server/facility/ChanliangAdd',
+    method: 'post',
+    data
+  })
 }

+ 18 - 10
src/api/yunyin/yunying.js

@@ -539,6 +539,14 @@ export const WastageList  = (params) => {
         params
     })
 }
+//引用产品资料->工单列表
+export const WorkOrderDetailCope  = (params) => {
+    return service({
+        url: '/mes_server/work_order/WorkOrderDetailCope',
+        method: 'get',
+        params
+    })
+}
 
 /**工单生产排单(排产管理)*/
 //计划中工单
@@ -806,8 +814,8 @@ export const getOrderProcessRight = (params) => {
         method: 'get',
         params
     })
-}
-
+}
+
 //获取产品附件资料列表
 export const getAnnexTable = (params) => {
     return service({
@@ -820,18 +828,18 @@ export const getAnnexTable = (params) => {
 export const annexAdd = (formData) => {
     return service({
         url:'/mes_server/work_order/annexAdd',
-        method: 'post',
+        method: 'post',
 		data: formData
     })
-}
-//产品附件删除
+}
+//产品附件删除
 export const annexDel= (params) => {
     return service({
         url:'/mes_server/work_order/annexDel',
         method: 'get',
         params
     })
-}
+}
 //获取工单附件资料列表
 export const getGdAnnexTable = (params) => {
     return service({
@@ -844,15 +852,15 @@ export const getGdAnnexTable = (params) => {
 export const gdAnnexAdd = (formData) => {
     return service({
         url:'/mes_server/work_order/gdAnnexAdd',
-        method: 'post',
+        method: 'post',
 		data: formData
     })
-}
-//工单附件删除
+}
+//工单附件删除
 export const gdAnnexDel= (params) => {
     return service({
         url:'/mes_server/work_order/gdAnnexDel',
         method: 'get',
         params
     })
-}
+}

+ 2 - 0
src/pinia/modules/user.js

@@ -56,6 +56,8 @@ export const useUserStore = defineStore('user', () => {
     })
     try {
       const res = await login(loginInfo)
+	  console.log(loginInfo)
+	  console.log(res)
       if (res.code === 0) {
         setUserInfo(res.data.user)
         setToken(res.data.token)

+ 35 - 1
src/view/login/index.vue

@@ -185,6 +185,7 @@ const loginVerify = () => {
     picPath.value = ele.data.picPath
     loginFormData.captchaId = ele.data.captchaId
     loginFormData.openCaptcha = ele.data.openCaptcha
+	console.log()
   })
 }
 loginVerify()
@@ -201,7 +202,7 @@ const loginFormData = reactive({
 })
 const rules = reactive({
   username: [{ validator: checkUsername, trigger: 'blur' }],
-  // password: [{ validator: checkPassword, trigger: 'blur' }],
+  password: [{ validator: checkPassword, trigger: 'blur' }],
   captcha: [
     {
       message: '验证码格式不正确',
@@ -249,4 +250,37 @@ const checkInit = async() => {
   }
 }
 
+const GetAddr = () => {
+  var xmlhttp = null;
+  var res;
+  if (window.XMLHttpRequest) {
+    xmlhttp = new XMLHttpRequest();
+  } else if (window.ActiveXObject) {
+    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+  }
+  // 设置回调函数
+  xmlhttp.onreadystatechange = function() {
+    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
+      res = eval('('+xmlhttp.response+')');
+      let result = '';
+      for (let i = 0; i < res.macAddress.length; i++) {
+        if (i % 2 === 0 && i !== 0) {
+          result += '-'; // 根据实际需求修改分隔符
+        }
+        result += res.macAddress[i];
+      }
+      console.log(result);
+      loginAndRedirect(result); // 获取MAC地址后调用自动登录函数
+    }
+  }
+  // 打开一个连接
+  xmlhttp.open("get", "http://127.0.0.1:8090/init");
+  // 发送请求
+  xmlhttp.send();
+};
+
+// 在页面加载时获取MAC地址并进行自动登录
+GetAddr();
+
+
 </script>

+ 37 - 1
src/view/performance/06-packingDocuments/index.vue

@@ -261,6 +261,7 @@
             title="选择"
             destroy-on-close
             width="600px"
+			@keydown="selectCP($event)"
           >
             <el-table
               tooltip-effect="dark"
@@ -270,6 +271,7 @@
               border
               style="width:100%"
               @row-dblclick="handleSelectClick"
+			  ref="table2"
             >
               <el-table-column
                 prop="Gd_cpmc"
@@ -641,6 +643,7 @@ const getTableGxMc = async(index, row) => {
         detailData.table[index].sczl_gxmc = Gy0_gxmc
       } else {
         selectData.splice(0, selectData.length, ...response.data)
+		setCPCurrent(selectData[0])
         detailData.selectIndex = index
         dialogSelectVisible.value = true
       }
@@ -764,7 +767,40 @@ const handleSelectClick = (row, column, event) => {
   detailData.table[index].sczl_gxmc = Gy0_gxmc
   dialogSelectVisible.value = false
 }
-
+const table2=ref()
+const setCPCurrent = (row) => {
+  setTimeout(()=>{
+	  table2.value?.setCurrentRow(row) 
+	  const { Gd_cpmc, Gy0_gxmc, jyGx } = row
+	  const index = detailData.selectIndex
+	  detailData.table[index].Gd_cpmc = Gd_cpmc
+	  detailData.table[index].sczl_yjGx = jyGx
+	  detailData.table[index].sczl_gxmc = Gy0_gxmc
+  })
+}
+const CPIndex = ref(0);
+const JYCurrent = ref(0);
+const selectCP = (event) => {
+    if (event.keyCode === 40) { // 向下箭头
+        if (CPIndex.value < selectData.length - 1) {
+            CPIndex.value++;
+            setCPCurrent(selectData[CPIndex.value]);
+        } else {
+            CPIndex.value = 0;
+            setCPCurrent(selectData[CPIndex.value]); // 到达最后一行时回到第一行			
+        }
+    } else if (event.keyCode === 38) { // 向上箭头
+        if (CPIndex.value > 0) {
+            CPIndex.value--;
+            setCPCurrent(selectData[CPIndex.value]);
+        } else {
+            CPIndex.value = selectData.length - 1;
+            setCPCurrent(selectData[CPIndex.value]); // 到达第一行时回到最后一行
+        }
+    } else if (event.keyCode === 13) { // 回车键
+        dialogSelectVisible.value = false
+    }
+}
 // 弹窗确定
 const enterDialog = () => {
   if (type.value === '查改') {

+ 60 - 8
src/view/performance/07-otherDocuments/index.vue

@@ -249,9 +249,12 @@
             :before-close="()=>{dialogGylc = false}"
             title="工艺流程"
             destroy-on-close
+			style="width: 50%px; "
+			
+			@keydown="selectGX($event)"
           >
-
-            <el-scrollbar
+		  
+            <!-- <el-scrollbar
               style="height: 50vh;width: 50vw;"
             >
               <el-tree
@@ -259,8 +262,16 @@
                 highlight-current
                 style="width: 90%;"
                 @node-click="handleSelectGylc"
+				node-key="id"
               />
-            </el-scrollbar>
+            </el-scrollbar> -->
+			
+			<el-table tooltip-effect="dark" :data="selectData" row-key="ID"
+			  highlight-current-row="true" border style="width:240px" height="500px"
+			  @row-dblclick="handleSelectClick" ref="table2" >		  
+			  <el-table-column prop="jyGx" label="检验工序" width="200" />		 
+			</el-table>
+			
           </el-dialog>
 
         </div>
@@ -463,6 +474,8 @@ const leftData = ref(0)
 const rightData = ref(0)
 const dedhTreeData = ref()
 const gylcTreeData = ref()
+const selectData = reactive([])
+
 
 // 弹窗控制标记
 const dialogFormVisible = ref(false)
@@ -508,20 +521,59 @@ const handleGdbhEnter = async() => {
 const handleGylcEnter = async() => {
   const res = await getGxMc({ gdbh: detailData.sczl_gdbh, keyword: '' })
   if (res.code === 0) {
-    const ret = res.data.map(item => ({
-      ...item,
-      label: item['jyGx'],
-    }))
-    gylcTreeData.value = ret
+	const data =res.data
+	selectData.splice(0, selectData.length, ...data)
+	setGXCurrent[selectData[0]]
     dialogGylc.value = true
   }
 }
 
+// 工单选择框
+const handleSelectClick = (row, column, event) => {
+  const { jyGx, Gy0_gxh } = row
+  detailData.Sczl_gxmc=row.jyGx
+  detailData.sczl_gxh = row.Gy0_gxh
+  dialogGylc.value = false
+}
+const table2 = ref()
+const setGXCurrent = (row) => {
+  setTimeout(()=>{
+	  table2.value?.setCurrentRow(row)
+	  const { jyGx, Gy0_gxh } = row
+	  detailData.Sczl_gxmc=row.jyGx
+	  detailData.sczl_gxh = row.Gy0_gxh 
+  })
+}
 const handleSelectGylc = (node, check) => {
+   console.log(node.key)
+   console.log(check)
   detailData.Sczl_gxmc = node['jyGx']
   detailData.sczl_gxh = node['Gy0_gxh']
   dialogGylc.value = false
 }
+const currentIndex = ref(0);
+const GXCurrent = ref(0);
+const selectGX = (event) => {
+    if (event.keyCode === 40) { // 向下箭头
+        if (currentIndex.value < selectData.length - 1) {
+            currentIndex.value++;
+            setGXCurrent(selectData[currentIndex.value]);
+        } else {
+            currentIndex.value = 0;
+            setGXCurrent(selectData[currentIndex.value]); // 到达最后一行时回到第一行			
+        }
+    } else if (event.keyCode === 38) { // 向上箭头
+        if (currentIndex.value > 0) {
+            currentIndex.value--;
+            setGXCurrent(selectData[currentIndex.value]);
+        } else {
+            currentIndex.value = selectData.length - 1;
+            setGXCurrent(selectData[currentIndex.value]); // 到达第一行时回到最后一行
+        }
+    } else if (event.keyCode === 13) { // 回车键
+        dialogGylc.value = false
+    }
+}
 
 const handleGjdhEnter = async() => {
   const res = await getDedh({ sczl_jtbh: '' })

+ 41 - 1
src/view/performance/09-workOrderVerification/index.vue

@@ -399,6 +399,7 @@
             title="选择"
             destroy-on-close
             width="800px"
+			@keydown="selectSL($event)"
           >
             <el-table
               tooltip-effect="dark"
@@ -408,6 +409,7 @@
               border
               style="width:100%"
               @row-dblclick="handleSelectClick"
+			  ref="table2"
             >
               <el-table-column
                 v-for=" column in selectColumns "
@@ -816,6 +818,7 @@ const handleFpslEnter = async(index, row) => {
   }
   selectIndex = index
   Object.assign(selectData, res.data)
+  setCurrent(selectData[0])
   dialogSelectVisible2.value = true
 }
 
@@ -835,7 +838,44 @@ const handleSelectClick = (row, column, event) => {
   detailData.table[index].fp_name = name
   dialogSelectVisible2.value = false
 }
-
+const table2 = ref()
+const setCurrent = (row) => {
+  setTimeout(()=>{
+	  table2.value?.setCurrentRow(row)
+	  // SelectClick(row)
+	  // console.log(row)
+	  // console.log(table)
+	  const { sczl_gxmc, sczl_bzdh, sczl_bh1, name } = row
+	  const index = selectIndex
+	  detailData.table[index].fp_gxmc = sczl_gxmc
+	  detailData.table[index].fp_bz = sczl_bzdh
+	  detailData.table[index].fp_bh = sczl_bh1
+	  detailData.table[index].fp_name = name
+  })
+}
+const SLIndex = ref(0);
+const JYCurrent = ref(0);
+const selectSL = (event) => {
+    if (event.keyCode === 40) { // 向下箭头
+        if (SLIndex.value < selectData.length - 1) {
+            SLIndex.value++;
+            setCurrent(selectData[SLIndex.value]);
+        } else {
+            SLIndex.value = 0;
+            setCurrent(selectData[SLIndex.value]); // 到达最后一行时回到第一行			
+        }
+    } else if (event.keyCode === 38) { // 向上箭头
+        if (SLIndex.value > 0) {
+            SLIndex.value--;
+            setCurrent(selectData[SLIndex.value]);
+        } else {
+            SLIndex.value = selectData.length - 1;
+            setCurrent(selectData[SLIndex.value]); // 到达第一行时回到最后一行
+        }
+    } else if (event.keyCode === 13) { // 回车键
+        dialogSelectVisible2.value = false
+    }
+}
 // 弹窗确定
 const enterDialog = async() => {
   if (type.value === '查改') {

+ 20 - 18
src/view/performance/Dayreports.vue

@@ -819,20 +819,20 @@ const ent1 = (event) => {
   
   if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
     for (let i = currentIndex + 1; i < inputs.length; i++) {
-      if (!inputs[i].readOnly) {
-		  nextTick(()=>{
-			  inputs[i].focus();
-			  inputs[i].select();
-		  })
+      if (!inputs[i].readOnly) {
+        nextTick(()=>{
+          inputs[i].focus();
+          inputs[i].select();
+        })
         break;
       }
     }
   } else if (event.keyCode === 38) { // 向上箭头
     for (let i = currentIndex - 1; i >= 0; i--) {
       if (!inputs[i].readOnly) {
-        nextTick(()=>{
-        	inputs[i].focus();
-			inputs[i].select();
+        nextTick(()=>{
+          inputs[i].focus();
+          inputs[i].select();
         })
         break;
       }
@@ -841,9 +841,10 @@ const ent1 = (event) => {
     if (event.target.selectionStart === 0) {
       for (let i = currentIndex - 1; i >= 0; i--) {
         if (!inputs[i].readOnly) {
-          nextTick(()=>{
-          	inputs[i].focus();
-			inputs[i].setSelectionRange(0, 0);
+          nextTick(()=>{
+            inputs[i].focus();
+            inputs[i].setSelectionRange(0, 0);
+            inputs[i].select(); // 全选输入框内容
           })
           break;
         }
@@ -853,9 +854,9 @@ const ent1 = (event) => {
     if (event.target.selectionStart === 0) {
       for (let i = currentIndex - 1; i >= 0; i--) {
         if (!inputs[i].readOnly) {
-          nextTick(()=>{
-          	inputs[i].focus();
-			inputs[i].select();
+          nextTick(()=>{
+            inputs[i].focus();
+            inputs[i].select();
           })
           break;
         }
@@ -865,16 +866,17 @@ const ent1 = (event) => {
     if (event.target.selectionStart === event.target.value.length) {
       for (let i = currentIndex + 1; i < inputs.length; i++) {
         if (!inputs[i].readOnly) {
-          nextTick(()=>{
-          	inputs[i].focus();
-			inputs[i].select();
+          nextTick(()=>{
+            inputs[i].focus();
+            inputs[i].select();
           })
           break;
         }
       }
     }
   }
-}
+}
+
 
 
 //追加字体颜色和不可输入

+ 100 - 7
src/view/performance/MachineDocuments.vue

@@ -222,11 +222,11 @@
 		    </el-table>
 		  </el-dialog>
 		  
-		 <el-dialog v-model="dialogSelectVisible" title="选择" destroy-on-close width="600px" >
+		 <el-dialog v-model="dialogSelectVisible" title="选择" destroy-on-close width="600px" @keydown="selectGX($event)" >
             <el-table tooltip-effect="dark" :data="selectData"
               row-key="ID" highlight-current-row="true"
               border style="width:100%"
-              @row-dblclick="handleSelectClick"
+              @row-dblclick="handleSelectClick" ref="table2"
             >
               <el-table-column prop="Gd_cpmc" label="印件名称" width="340" />
 			  <el-table-column prop="jyGx" label="检验工序" width="150" />
@@ -254,10 +254,10 @@
 		      </el-table>
 		  </el-dialog>
 			
-		   <el-dialog v-model="LbVisible" title="选择" destroy-on-close width="200px" >
+		   <el-dialog v-model="LbVisible" title="选择" destroy-on-close width="200px" @keydown="selectJY($event)" >
 		     <el-table tooltip-effect="dark" :data="selectDataLb" row-key="ID"
 		       highlight-current-row="true" border style="width:100%"
-		       :row-style="{ height: '30px' }" @row-dblclick="SelectClickLb"
+		       :row-style="{ height: '30px' }" @row-dblclick="SelectClickLb"  ref="table3"
 		     >
 		       <el-table-column prop="sczl_检验类别" label="可选名称" width="150" />			        	 
 		     </el-table>
@@ -739,6 +739,7 @@ const getMachineGxMcsubmit = async() => {
 					return false
 				  }
 				  selectData.splice(0, selectData.length, ...response.data)
+				  setGXCurrent(selectData[0])
 				  dialogSelectVisible.value=true
 			}
 		}
@@ -765,6 +766,39 @@ const handleSelectClick = (row, column, event) => {
   setColorReadonly('yjmc');
   dialogSelectVisible.value = false
 }
+const currentIndex = ref(0);
+const GXCurrent = ref(0);
+const selectGX = (event) => {
+    if (event.keyCode === 40) { // 向下箭头
+        if (currentIndex.value < selectData.length - 1) {
+            currentIndex.value++;
+            setGXCurrent(selectData[currentIndex.value]);
+        } else {
+            currentIndex.value = 0;
+            setGXCurrent(selectData[currentIndex.value]); // 到达最后一行时回到第一行			
+        }
+    } else if (event.keyCode === 38) { // 向上箭头
+        if (currentIndex.value > 0) {
+            currentIndex.value--;
+            setGXCurrent(selectData[currentIndex.value]);
+        } else {
+            currentIndex.value = selectData.length - 1;
+            setGXCurrent(selectData[currentIndex.value]); // 到达第一行时回到最后一行
+        }
+    } else if (event.keyCode === 13) { // 回车键
+        dialogSelectVisible.value = false;
+    }
+}
+const table2 = ref()
+const setGXCurrent = (row) => {
+  setTimeout(()=>{
+	  table2.value?.setCurrentRow(row) 
+	  const { Gd_cpmc, Gy0_yjno, Gy0_gxh, Gy0_gxmc,jyGx } = row
+	  formData.value.yj_yjmc=Gd_cpmc
+	  formData.value.sczl_gxmc=Gy0_gxmc
+	  formData.value.sczl_yjgx=jyGx
+  })
+}
 
 //机台编号失去焦点事件
 const GetjtbhVisible = ref(false)
@@ -819,6 +853,7 @@ const getLbsubmit = () => {
 	//弹出选择
 	const data = [{'sczl_检验类别':''},{'sczl_检验类别':'正品板'},{'sczl_检验类别':'次品板'},{'sczl_检验类别':'废品板'}]
 	selectDataLb.splice(0, selectDataLb.length, ...data)
+	setJYCurrent(selectDataLb[0])
 	LbVisible.value=true
 }
 //检验类别选择
@@ -849,7 +884,58 @@ const SelectClickLb = (row, column, event) => {
 	}
   LbVisible.value = false
 }
-
+const table3=ref()
+const setJYCurrent = (row) => {
+  setTimeout(()=>{
+	  table3.value?.setCurrentRow(row) 
+	  const {sczl_检验类别 } = row
+	  	formData.value.sczl_检验类别=row.sczl_检验类别
+		
+		//查询废品系数
+		if(row.sczl_检验类别!=''){
+			var value = {
+				'gdbh':formData.value.sczl_gdbh,
+				'yjno':parseInt(formData.value.sczl_yjgx.split('-')[0]),
+				'gxh':parseInt(formData.value.sczl_yjgx.split('-')[1]),
+				'type':formData.value.sczl_检验类别
+				}
+			getMachineScrapFactor(value).then(response=>{
+				if(response.code==0){
+					if(response.data!=null){
+						formData.value.sczl_废品率系数 = response.data.num;
+					}
+					setColorReadonly('废品率系数')
+				}
+			});
+			
+		}else{
+			unsetColorReadonly('废品率系数')
+		}
+  })
+}
+const JYIndex = ref(0);
+const JYCurrent = ref(0);
+const selectJY = (event) => {
+    if (event.keyCode === 40) { // 向下箭头
+        if (JYIndex.value < selectDataLb.length - 1) {
+            JYIndex.value++;
+            setJYCurrent(selectDataLb[JYIndex.value]);
+        } else {
+            JYIndex.value = 0;
+            setJYCurrent(selectDataLb[JYIndex.value]); // 到达最后一行时回到第一行			
+        }
+    } else if (event.keyCode === 38) { // 向上箭头
+        if (JYIndex.value > 0) {
+            JYIndex.value--;
+            setJYCurrent(selectDataLb[JYIndex.value]);
+        } else {
+            JYIndex.value = selectDataLb.length - 1;
+            setJYCurrent(selectDataLb[JYIndex.value]); // 到达第一行时回到最后一行
+        }
+    } else if (event.keyCode === 13) { // 回车键
+        LbVisible.value = false
+    }
+}
 //获取定额代号
 const GetMachineDedhVisible = ref(false)
 let GetMachineDedhtreeData = reactive([]);
@@ -1255,8 +1341,15 @@ function doubleClick(row, column, event) {
   GetMachineInfo(table.value)
 }
 // 单击表格操作
-function Click(row, column, event) {
-    lastCellValue= row['UniqId'];
+function Click(row, column, event) {
+   console.log(row)
+   lastCellValue= row['UniqId'];
+   const parts = row['sczl_yjgx'].split('-')
+   ScrapFactor.yjno=parts[0]
+   ScrapFactor.gdbh=row['sczl_gdbh']
+   ScrapFactor.type=row['sczl_检验类别']
+   ScrapFactor.gxh=parts[1]
+   console.log(ScrapFactor)
    console.log(lastCellValue)
   // if(row['table_type']=='db_sczl'){
   // 	 dialogFormVisible.value = true

+ 92 - 13
src/view/yunyin/shengchanguanli/chengpinrucang.vue

@@ -84,7 +84,7 @@
 			   <el-form-item label="仓库" prop="name">
 				 <el-row :gutter="20">
 				   <el-col :span="12">
-					 <el-input v-model="formData.仓库编号" id="仓库编号"  @keydown="ent($event, '入仓类型', '仓库编号', '仓库名称')"  @keyup.enter.native="getCKsubmit" :clearable="true" placeholder="ZT01733" />
+					 <el-input v-model="formData.仓库编号" id="仓库编号"  @keydown="ent($event, '入仓类型', '仓库编号', '仓库名称')"   :clearable="true" placeholder="ZT01733" />
 				   </el-col>   
 				   <el-col :span="12">
 					 <el-input v-model="formData.仓库名称" id="仓库名称"  @keydown="ent($event, '仓库编号', '仓库名称', '单据编号')" :clearable="true" placeholder="" />
@@ -241,6 +241,7 @@
             title="选择"
             destroy-on-close
             width="600px"
+			@keydown="selectCK($event)"
           			>
             <el-table
               tooltip-effect="dark"
@@ -250,6 +251,7 @@
               border
               style="width:100%"
               @row-dblclick="CKSelectClick"
+			  ref="table2"
             >
               <el-table-column
                 prop="编号"
@@ -271,6 +273,7 @@
 		    title="选择"
 		    destroy-on-close
 		    width="600px"
+			@keydown="selectGD($event)"
 		  			>
 		    <el-table
 		      tooltip-effect="dark"
@@ -280,6 +283,7 @@
 		      border
 		      style="width:100%"
 		      @row-dblclick="GDSelectClick"
+			  ref="table3"
 		    >
 			<el-table-column
 			  prop="gdyj"
@@ -393,7 +397,8 @@
 		    v-model="SMVisible"
 		    title="选择"
 		    destroy-on-close
-		    width="600px"
+		    width="1200px"
+			
 		  			>
 		    <el-table
 		      tooltip-effect="dark"
@@ -401,46 +406,47 @@
 		      row-key="ID"
 		      highlight-current-row="true"
 		      border
-		      style="width:100%"
+		      style="width:180%"
+			  height="500px"
 		      @row-dblclick="SMSelectClick"
 		    >
 				<el-table-column
-				  prop="gdyj"
+				  prop="Yj_Gdbh"
 				  label="工单编号"
 				  width="180"
 				/>
 		      <el-table-column
-		        prop="Gd_gdbh"
+		        prop="yj_Yjno"
 		        label="印件号"
 		        width="200"
 		      />
 			  <el-table-column
-				prop="yj_yjno"
+				prop="yj_yjmc"
 				label="印件名称"
 				width="200"
 			  />
 			  <el-table-column
-				prop="销售订单号"
+				prop="yj_成品数量"
 				label="计划交货数量"
 				width="200"
 			  />
 			  <el-table-column
-				prop="yj_Yjdh"
+				prop="yj_实际投料"
 				label="印件投料"
 				width="200"
 			  />
 			  <el-table-column
-				prop="yj_yjmc"
+				prop="jjcp_sls"
 				label="包装产量"
 				width="200"
 			  />
 			  <el-table-column
-				prop="成品代号"
+				prop="sczl_cls"
 				label="入仓数量"
 				width="200"
 			  />
 			  <el-table-column
-				prop="成品名称"
+				prop="jjcp_smb"
 				label="缺数"
 				width="200"
 			  />
@@ -450,7 +456,7 @@
 				width="200"
 			  />
 			  <el-table-column
-				prop="客户料号"
+				prop="jjcp_sj"
 				label="最近入仓时间"
 				width="200"
 			  />
@@ -651,7 +657,7 @@ function onSMB() {
 	SMVisible.value=true
 }
 const MbList = async (value) => {
-  const response = await mbList({page:page.value,limit:limit.value});
+  const response = await mbList();
   console.log(response.data) 
   if (response.code === 0) {
 	 SMselectData.value=response.data.rows
@@ -689,6 +695,7 @@ const GetCK = async () => {
   console.log(response) 
   if (response.code === 0) {
   CKselectData.splice(0, CKselectData.length, ...response.data)
+  setCKCurrent(CKselectData[0])
   CKVisible.value=true
   }
 }
@@ -699,6 +706,38 @@ const CKSelectClick = (row, column, event) => {
   formData.value.仓库名称=名称
   CKVisible.value = false
 }
+const table2=ref()
+const setCKCurrent = (row) => {
+  setTimeout(()=>{
+	  table2.value?.setCurrentRow(row) 
+	  const { 编号,名称 } = row
+	  formData.value.仓库编号=编号
+	  formData.value.仓库名称=名称
+  })
+}
+const CKIndex = ref(0);
+const JYCurrent = ref(0);
+const selectCK = (event) => {
+    if (event.keyCode === 40) { // 向下箭头
+        if (CKIndex.value < CKselectData.length - 1) {
+            CKIndex.value++;
+            setCKCurrent(CKselectData[CKIndex.value]);
+        } else {
+            CKIndex.value = 0;
+            setCKCurrent(CKselectData[CKIndex.value]); // 到达最后一行时回到第一行			
+        }
+    } else if (event.keyCode === 38) { // 向上箭头
+        if (CKIndex.value > 0) {
+            CKIndex.value--;
+            setCKCurrent(CKselectData[CKIndex.value]);
+        } else {
+            CKIndex.value = CKselectData.length - 1;
+            setCKCurrent(CKselectData[CKIndex.value]); // 到达第一行时回到最后一行
+        }
+    } else if (event.keyCode === 13) { // 回车键
+        CKVisible.value = false
+    }
+}
   
 //工单编号回车事件
 const getGDsubmit = (event) => {
@@ -713,6 +752,7 @@ const GetGD = async () => {
   console.log(response) 
   if (response.code === 0) {
   GDselectData.splice(0, GDselectData.length, ...response.data)
+  setGDCurrent(GDselectData[0])
   GDVisible.value=true
   }
 }
@@ -729,6 +769,44 @@ const GDSelectClick = (row, column, event) => {
   formData.value.客户料号=客户料号
   GDVisible.value = false
 }
+const table3=ref()
+const setGDCurrent = (row) => {
+  setTimeout(()=>{
+	  table3.value?.setCurrentRow(row) 
+	  
+	  const { Gd_gdbh,yj_yjno,销售订单号,yj_Yjdh,yj_yjmc,成品代号,成品名称,客户料号,gdyj } = row
+	  formData.value.jjcp_gdbh=Gd_gdbh
+	  formData.value.jjcp_yjno=yj_yjno
+	  formData.value.订单编号=销售订单号
+	  formData.value.jjcp_cpdh=yj_Yjdh
+	  formData.value.jjcp_cpmc=yj_yjmc
+	  formData.value.成品编码=成品代号
+	  formData.value.成品名称=成品名称
+	  formData.value.客户料号=客户料号	  
+  })
+}
+const GDIndex = ref(0);
+const selectGD = (event) => {
+    if (event.keyCode === 40) { // 向下箭头
+        if (GDIndex.value < GDselectData.length - 1) {
+            GDIndex.value++;
+            setGDCurrent(GDselectData[GDIndex.value]);
+        } else {
+            GDIndex.value = 0;
+            setGDCurrent(GDselectData[GDIndex.value]); // 到达最后一行时回到第一行			
+        }
+    } else if (event.keyCode === 38) { // 向上箭头
+        if (GDIndex.value > 0) {
+            GDIndex.value--;
+            setGDCurrent(GDselectData[GDIndex.value]);
+        } else {
+            GDIndex.value = GDselectData.length - 1;
+            setGDCurrent(GDselectData[GDIndex.value]); // 到达第一行时回到最后一行
+        }
+    } else if (event.keyCode === 13) { // 回车键
+        GDVisible.value = false
+    }
+}
 
 //产品编号回车事件
 const getSLsubmit = (event) => {
@@ -929,6 +1007,7 @@ const ent = (event,id1,id2,id3) => {
   if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
     if(id2=='仓库编号'&&event.keyCode === 13){
 		getCKsubmit()
+		// document.getElementById(id3).focus()
 	}if(id2=='工单编号'&&event.keyCode === 13){
 		getGDsubmit()
 	}if(id2=='产品编号'&&event.keyCode === 13){

+ 13 - 5
src/view/yunyin/shengchanguanli/gongdanshengchan.vue

@@ -94,9 +94,6 @@
             </el-table>
           </el-dialog>
 
-          <!--加入排产【弹窗】-->
-          <!--暂停完工【弹窗】-->
-          <!--暂停完工【弹窗】-->
           <!--机组调整【弹窗】-->
           <el-dialog v-model="jizuDisplay" title="机组调整" style="width: 600px;">
             <el-row class="">
@@ -251,7 +248,7 @@
       <layout>
         <layout-sider :resize-directions="['right']" :width="190" style="margin-right: 10px;">
           <div class="JKWTree-tree" style="height: 200px">
-            <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
+            <el-tree :data="treeData" :props="defaultProps" :current-node-key="currentNodeKey" @node-click="handleNodeClick"></el-tree>
           </div>
         </layout-sider>
         <layout-content>
@@ -692,6 +689,8 @@ const tableData = ref([]);
 const _machine = ref(null);
 const treeType = ref('customTree') // dataTree // 计划中,排产中 ,dataTree 车间
 const handleNodeClick = async (node) => {
+  // console.log(node)
+  // console.log(node['$treeNodeId'])
   if (node.type && node.type === '__customer') {
     treeType.value = 'customTree'
     schandleNodeClick(node)
@@ -701,7 +700,12 @@ const handleNodeClick = async (node) => {
     // 使用字符串分割获取#前面的数据
     const dataBeforeHash = custom_code.split('#')[0].trim();
     _machine.value = dataBeforeHash + '#';
-    console.log(_machine.value)
+    // if(_machine.value && node['$treeNodeId']){
+    //   console.log(_machine.value)
+    //   console.log(node['$treeNodeId'])
+    //   return 'el-background-color';
+    // }
+    console.log('机台' + _machine.value)
     const zhubiao = await MachineWorkOrderList({ machine:_machine.value})
     chejianData.value = zhubiao.data['排程'];
     chejianfuData.value = zhubiao.data['制程'];
@@ -1609,6 +1613,10 @@ const rowContextMenu = (row) => {
 :deep(.hui-plan-usage-low div) {
   color: #8c939d !important;
 }
+/*点击车间机台*/
+:deep(.el-background-color) {
+  color: red !important;
+}
 /*工序状态更正颜色【蓝色】*/
 :deep(.lan-plan-usage-low div) {
   color: blue !important;

+ 29 - 22
src/view/yunyin/shengchanguanli/gongdanziliao.vue

@@ -111,7 +111,7 @@
           </el-dialog>
 
           <!--引用产品资料-->
-          <el-dialog v-model="onyycpzllist" title="获取产品资料">
+          <el-dialog v-model="onyycpzllist" title="获取工单资料">
             <div style=" padding: 0px; align-items: center;">
               <el-form-item label="工单编号" prop="processName" class="mab">
                 <el-input v-model="yycpzlformData['gdbh']" @keyup.enter="yycpzlProductValue" style="width: 23%;" />
@@ -1275,7 +1275,7 @@ import {
   ProductInformation, TestCoefficient, capacityList,getOrderProcessRight,
   DataCorrection, U8Trial, ProcessFlow, AccountingParameter,setProductStatus,
   getProduct, getProductGy, ProductInformationEdit, workOrderListDetail, editProduct, getOrderProcessCount, StatusEdit,
-  PrintDetailDel, ProcessDetailDel,
+  PrintDetailDel, ProcessDetailDel,WorkOrderDetailCope,
   getGdAnnexTable,
   gdAnnexAdd,
   gdAnnexDel,
@@ -2693,32 +2693,39 @@ const onyycpzlclick = () => {
     ElMessage({type: 'warning',message: '请选择具体的工单后,再操作此功能'})
   }else{
     yycpzlformData['gdbh'] = _Gd_gdbh.value;
-    _ProductInformations();
+    _WorkOrderDetailCopedata();
     onyycpzllist.value = true;
   }
 };
 //引用产品资料【回车】
 const yycpzlProductValue = async () => {
-  _ProductInformations();
-};
-//引用产品资料->获取产品资料
-const _ProductInformations = async ()=>{
-  let workOrder = yycpzlformData['gdbh'];
-  const ProductInformations = await ProductInformation({workOrder:workOrder});
-  if(ProductInformations.msg === '未找到工单信息'){
-    yycpzlformData['khdh'] = '';
-    yycpzlformData['khmc'] = '';
-    yycpzlformData['cpdh'] = '';
-    yycpzlformData['cpmc'] =  '';
-    ElMessage({type: 'warning',message: '未找到工单信息'})
+  if(yycpzlformData['gdbh'] == null || yycpzlformData['gdbh'] == ''){
+    ElMessage({type: 'warning',message: '工单那不能为空'})
     return false;
-  }else{
-    yycpzlformData['gdbh'] = ProductInformations.data['工单编号'];
-    yycpzlformData['khdh'] = ProductInformations.data['客户代号'];
-    yycpzlformData['khmc'] = ProductInformations.data['客户名称'];
-    yycpzlformData['cpdh'] = ProductInformations.data['产品代号'];
-    yycpzlformData['cpmc'] = ProductInformations.data['产品名称'];
   }
+  _WorkOrderDetailCopedata();
+};
+//引用产品资料->获取产品资料
+const _WorkOrderDetailCopedata = async ()=>{
+  let search = yycpzlformData['gdbh'];
+  console.log(search)
+  // const ProductInformations = await ProductInformation({workOrder:search});
+  const WorkOrderDetailCopes = await WorkOrderDetailCope({search:search});
+  console.log(WorkOrderDetailCopes);
+  // if(ProductInformations.msg === '未找到工单信息'){
+  //   yycpzlformData['khdh'] = '';
+  //   yycpzlformData['khmc'] = '';
+  //   yycpzlformData['cpdh'] = '';
+  //   yycpzlformData['cpmc'] =  '';
+  //   ElMessage({type: 'warning',message: '未找到工单信息'})
+  //   return false;
+  // }else{
+  //   yycpzlformData['gdbh'] = ProductInformations.data['工单编号'];
+  //   yycpzlformData['khdh'] = ProductInformations.data['客户代号'];
+  //   yycpzlformData['khmc'] = ProductInformations.data['客户名称'];
+  //   yycpzlformData['cpdh'] = ProductInformations.data['产品代号'];
+  //   yycpzlformData['cpmc'] = ProductInformations.data['产品名称'];
+  // }
 }
 //引用产品资料【执行】
 const yycpzlhandleConfirm = async () => {
@@ -2873,7 +2880,7 @@ const type = ref('')
 let scgdformData = ref({})
 //双击修改
 const updateCompanyFunc = async(row) => {
-  console.log(row['工单编号'])
+  console.log(row)
   // if(row['status'] === '*'){
   //   ElMessage({ type: 'warning', message: '未找到该工单印件资料' });
   //   return false;

+ 104 - 6
src/view/yunyin/shengchanguanli/shebeiyunxing.vue

@@ -11,6 +11,7 @@
 			<!-- <el-button type="primary" @click="onstatus" >设置机台状态</el-button> -->
 			<el-button type="primary" @click="oncomplaints" >客诉记录</el-button>
 			<el-button type="primary" @click="onClear" >换型清场</el-button>
+			<el-button type="primary" @click="onADD">新增</el-button>
 			<!-- <el-button type="primary" @click="onClear2" >换型清场</el-button> -->
 		</header>
     <el-container>
@@ -1456,11 +1457,11 @@
 		
 		<el-dialog
 		  v-model="chanliangVisible"
-		  title="查改"
 		  destroy-on-close
 		  width="60%"
 		  style="height: 110vh;"
 		  :before-close="closechanliangVisible"
+		  :title="type2 === 'create' ? '新增' : '修改'"
 		>
 		  <el-row :gutter="24">
 		    <el-col :span="6">
@@ -1508,10 +1509,15 @@
                  <el-input v-model="formdata3.value.rq"  id="日期"  @keydown="ent1($event)" @blur="getJtbhsubmit()" :clearable="true" style="width: 100px;" />
 			    </el-form-item>
 			  </el-col>
-			  <el-col :span="8">
+			  <el-col :span="6">
 			    <el-form-item label="机器:" prop="flatFeed" class="mab">
 			    <el-input v-model="formdata3.value.sczl_jtbh"  id="机器"  @keydown="ent1($event)" @blur="getJtbhsubmit()" :clearable="true" style="width: 100px;" />		  				  
 			    </el-form-item>
+			  </el-col>
+			  <el-col :span="7">
+			    <el-form-item label="开工时间:" prop="flatFeed" class="mab">
+			     <el-input v-model="formdata3.value.starttime"  id="日期"  @keydown="ent1($event)" @blur="getJtbhsubmit()" style="width: 100px;" />
+			    </el-form-item>
 			  </el-col>
 				<el-col :span="5" style="margin-top=0px; margin-bottom: 1px;">
 				<el-form-item label="流程单号" prop="id" style="margin-top=0px; margin-bottom: 1px;">
@@ -1861,7 +1867,8 @@ import {
    chanliangEdit,
    productionGdmc,
    productionYjmc,
-   ChanliangDel
+   ChanliangDel,
+   ChanliangAdd
 } from '@/api/jixiaoguanli/jitairibaobiao'
 
 import {
@@ -2295,6 +2302,12 @@ const getTableList = async() => {
 }
 
 getTableData()
+const type2 = ref('')
+//新增
+function onADD(){
+	type2.value="create"
+	MachineChanliang(uid.value)
+}
 //删除
 function onDel() {
 	Chanliangdel()
@@ -2303,7 +2316,7 @@ function onDel() {
 const Chanliangdel = async() => {
 	
     const res = await ChanliangDel({ UniqId:uid.value})
-    if (res.msg === '成功') {
+    if (res.code === 0) {
     ElMessage({
       type: 'success',
       message: '成功'
@@ -3010,13 +3023,14 @@ const chanliangVisible = ref(false)
 const formdata3=reactive([])
 function gytableDatadoubleClick(row, column, event) {
  console.log(row)
+ type2.value="update"
  MachineChanliang(row.UniqId)
  
 }
 const uid=ref()
 function getUid(row, column, event) {
  uid.value=row.UniqId
- console.log(uid)
+ console.log(uid.value)
 }
 
 //获取详细信息
@@ -3028,6 +3042,7 @@ const MachineChanliang = async(value) => {
 	 formdata3.value=response.data
 	 const pattern = /-(.*?)〖(.*?)$/;
 	 const matches = formdata3.value.gxmc.match(pattern);
+	 console.log(matches)
 	 formdata3.value.gymc=matches[1]
 	 formdata3.value.sczl_jtbh=JTMC
 	 formdata3.value.rq=date
@@ -3145,7 +3160,90 @@ const MachineChanliang = async(value) => {
  }
  //日报表修改弹窗确定
  const chanliangenterDialog = async () => {
-  SubmitDailyProduction()
+  // SubmitDailyProduction()
+  if (type2.value === 'update') {
+  	  SubmitDailyProduction()
+  } else if (type2.value === 'create') {
+  	  add()   
+  }
+ }
+ //日报表新增
+ const add = async () => {
+   console.log(formdata3.value)
+   const restoredData = {
+     sczl_gdbh:formdata3.value.工单编号,
+     sczl_yjno:formdata3.value.yjno,
+     sczl_gxh:formdata3.value.gxh,
+     sczl_gxmc: formdata3.value.gxmc,
+ 	sczl_bzdh: formdata3.value.bzdh,
+ 	sczl_bh1: formdata3.value.组员1['编号'],
+ 	sczl_bh2: formdata3.value.组员2['编号'],
+ 	sczl_bh3: formdata3.value.组员3['编号'],
+ 	sczl_bh4: formdata3.value.组员4['编号'],
+ 	sczl_bh5: formdata3.value.组员5['编号'],
+ 	sczl_bh6: formdata3.value.组员6['编号'],
+ 	sczl_bh7: formdata3.value.组员7['编号'],
+ 	sczl_bh8: formdata3.value.组员8['编号'],
+ 	sczl_bh9: formdata3.value.组员9['编号'],
+ 	sczl_bh10: formdata3.value.组员10['编号'],
+ 	sczl_bh98:formdata3.value.组员1['编号'],
+ 	sczl_rate1: formdata3.value.组员1['比例'],
+ 	sczl_rate2: formdata3.value.组员2['比例'],
+ 	sczl_rate3: formdata3.value.组员3['比例'],
+ 	sczl_rate4: formdata3.value.组员4['比例'],
+ 	sczl_rate5: formdata3.value.组员5['比例'],
+ 	sczl_rate6: formdata3.value.组员6['比例'],
+ 	sczl_rate7: formdata3.value.组员7['比例'],
+ 	sczl_rate8: formdata3.value.组员8['比例'],
+ 	sczl_rate9: formdata3.value.组员9['比例'],
+ 	sczl_rate10: formdata3.value.组员10['比例'],
+ 	sczl_jtbh: formdata3.value.sczl_jtbh,
+	开工时间:"2024-03-12 08:30:00",
+	码开始行:formdata3.value.码开始行,
+	码结束行:formdata3.value.码结束行,
+	sys_id:"[68-ED-A4-26-5F-37/JY01#]",
+	sczl_装版工时:formdata3.value.装版工时,
+	sczl_打样工时:formdata3.value.打样工时,
+	sczl_异常类型1:formdata3.value.异常类型,
+	sczl_异常工时1:formdata3.value.异常总工时,
+    sczl_dedh:formdata3.value.dedh,
+	
+	
+	
+	
+	
+ 	sczl_rq: formdata3.value.rq,
+ 	sczl_num: formdata3.value.num,
+ 	// sczl_rq: formData3.value.sczl_rq,
+ 	sczl_cl: formdata3.value.产量,
+ 	sczl_zcfp: formdata3.value.制程废品,
+ 	sczl_zccp: formdata3.value.制程次品,
+ 	sczl_前工序废: formdata3.value.前工序废,
+ 	sczl_来料少数: formdata3.value.来料异常,
+ 	sczl_ls: formdata3.value.联数,
+ 	sczl_ms: formdata3.value.色度数,
+ 	sczl_装版总工时: formdata3.value.装版补产工时,
+ 	sczl_打样总工时: formdata3.value.打样补产工时,
+ 	sczl_设备运行工时: formdata3.value.通电工时,
+ 	码包: formdata3.value.码包,
+ 	辅电表: formdata3.value.辅电表,
+ 	sczl_bh98: formdata3.value.拉料['编号'],
+ 	UniqId: formdata3.value.UniqId,
+ 	// bom: formData3.value.formattedArray
+   }
+   // console.log(restoredData)
+   // console.log(formData3.value.formattedArray)
+   const response = await ChanliangAdd(restoredData);
+   console.log(response)
+   if (response.code === 0) {
+ 	  ElMessage({
+ 	    type: 'success',
+ 	    message: '成功'
+ 	  })
+ 	   FacilitychanLiang()
+       FacilityDetail()
+       chanliangVisible.value=false
+   }
  }
  //日报表上传
  const SubmitDailyProduction = async () => {