Jelajahi Sumber

优化工艺修改键盘事件

曹鹤洋 1 tahun lalu
induk
melakukan
33e53ba1f0

+ 47 - 48
src/view/yunyin/chanpinziliao/chanpinziliao.vue

@@ -1170,7 +1170,7 @@
                       <el-row>
                         <el-col :span="6">
                           <el-form-item label="车间名称:" prop="address" class="mab">
-                            <el-input v-model="gyformDataTest['Gy0_site']"  placeholder="" style="width: 140px;" id="gy0_site"  @keydown="ent($event, 'Gy0_ls', 'gy0_site', 'gy0_gxmc')"/>
+                            <el-input v-model="gyformDataTest['Gy0_site']"  placeholder="" style="width: 140px;"  @keyup.enter="getcjmc()" id="gy0_site"  @keydown="ent($event, 'Gy0_ls', 'gy0_site', 'gy0_gxmc')"/>
                           </el-form-item>
                         </el-col>
                         <el-col :span="6">
@@ -1245,7 +1245,7 @@
               </el-dialog>
 
           <!-- 新增工艺资料 弹窗 -->
-          <el-dialog v-model="addgydialogFormVisible" :before-close="addgycloseDialog" :title="'新增工艺资料'" height="300px" width="900px" destroy-on-close>
+          <el-dialog v-model="addgydialogFormVisible" :before-close="addgycloseDialog" :title="typeGy === 'create' ? '新增工艺资料' : '修改工艺资料'" height="300px" width="900px" destroy-on-close>
             <el-row>
               <el-scrollbar>
                 <el-form :model="gyformDataTest" label-position="right" ref="elFormRef" :rules="rule"  >
@@ -2708,10 +2708,14 @@ let formDataTest = reactive({})
 //弹窗
 const dialogFormVisible = ref(false)
 const huanxingVisible = ref(false)
+
+// 行为控制标记(弹窗内部需要增还是改)
+const typeGy = ref('')
 
 //双击修改弹窗
 const dbclickId = ref()
-const type = ref('')
+const type = ref('')
+
 const updateCompanyFunc = async (row, cols) => {
    type.value = 'update';
   dbclickId.value = row.UniqID
@@ -3207,7 +3211,9 @@ const addgydialogFormVisible = ref(false)
 const searchCJModel = ref(false)
 const searchSHModel = ref(false)
 
-const addcpgy_onclick = () => {
+const addcpgy_onclick = () => {
+	//新增
+	typeGy.value = 'create'
 	addgydialogFormVisible.value=true
   // add_yjdialogFormVisible.value = true
   // console.log(yjtableData.length)
@@ -3375,8 +3381,7 @@ const selectSHNode = (node,check) => {
 //   return tree;
 // };
 //工艺新增确定
-const addgyenterDialog = async () =>{
-  console.log(add_yjzlformdata)
+const addgyenterDialog = () =>{
   const formattedData = {
     Gy0_cpdh: _Gd_gdbh.value,
     Gy0_方案: add_gyformData['Gy0_方案'],
@@ -3398,45 +3403,39 @@ const addgyenterDialog = async () =>{
     质量隐患: add_gyformData['质量隐患'],
     Sys_id  : _username.value,
     // 万小张: add_yjzlformdata['万小张'],
-  };
-  console.log(formattedData)
-  // return false;
-  await addProductGyInfo(formattedData).then( result =>{
-	  if(result.code===0){
-	  	ElMessage({
-	  	  type: 'success',
-	  	  message: '成功'
-	  	})
-	    GetInfo();
-	    addgydialogFormVisible.value = false
-	   Object.keys(add_gyformData).forEach(key => {
-	  		add_gyformData[key] = '';
-	  	  });
-	  }else{
-	  	ElMessage({
-	  	  type: 'error',
-	  	  message: '失败'
-	  	})
-	  }
-  })
-  // res.then(result => {
-  //   if(result.code===0){
-  // 		ElMessage({
-  // 		  type: 'success',
-  // 		  message: '成功'
-  // 		})
-  //     GetInfo();
-	 //  addgydialogFormVisible.value = false
-	 // Object.keys(add_gyformData).forEach(key => {
-		// 	add_gyformData[key] = '';
-		//   });
-  // 	}else{
-  // 		ElMessage({
-  // 		  type: 'error',
-  // 		  message: '失败'
-  // 		})
-  // 	}
-  // });
+  };
+ 
+  if(typeGy.value == 'create'){
+	  addProductGyInfo(formattedData).then( result =>{
+	  	  if(result.code===0){
+	  	  	ElMessage({
+	  	  	  type: 'success',
+	  	  	  message: '成功'
+	  	  	})
+	  	    GetInfo();
+	  	    addgydialogFormVisible.value = false
+	  	   Object.keys(add_gyformData).forEach(key => {
+	  	  		add_gyformData[key] = '';
+	  	  	  });
+	  	  }else{
+	  	  	ElMessage({
+	  	  	  type: 'error',
+	  	  	  message: '失败'
+	  	  	})
+	  	  }
+	  })
+  }else{
+	  formattedData['UniqID'] = add_gyformData['UniqID']
+	  ProcessEdit(formattedData).then( editdata =>{
+	  	  if (editdata.code == 0) {
+	  	    ElMessage({type: 'success',message: '更新成功'})
+	  	  	addgydialogFormVisible.value = false
+	  	  	GetInfo()
+	  	  } else {
+	  	    ElMessage({ type: 'error',message: '更新失败'})
+	  	  }
+	  });
+  }
 }
 //新增后刷新
 const GetInfo = async () => {
@@ -3676,9 +3675,9 @@ let gyformDataTest = reactive({})
 const gyupdateCompanyFunc = async (row) => {
   //3.6工艺资料-获取产品工艺资料
   const getProductGyInfo_edit = await getProductGyInfo({UniqID:row.UniqID})
-  console.log(getProductGyInfo_edit)
-  Object.assign(gyformDataTest,getProductGyInfo_edit.data);
-  gydialogFormVisible.value = true;
+  Object.assign(add_gyformData,getProductGyInfo_edit.data);
+  typeGy.value = 'update'
+  addgydialogFormVisible.value = true;
 };
 //默认关闭弹窗
 const gydialogFormVisible = ref(false)

+ 254 - 9
src/view/yunyin/shengchanguanli/gongdanziliao.vue

@@ -1174,13 +1174,13 @@
                   </div>
                   <div style="display: flex; gap: 0px;">
                     <el-form-item label="车间名称:"  class="mab" prop="keyOrder">
-                      <el-input  v-model="gdgyformData['车间名称']"  style="width: 130px;"/>
+                      <el-input  v-model="gdgyformData['车间名称']"  style="width: 130px;" @keydown="gyzlent($event, '联数', '车间名称', '工序名称')"/>
                     </el-form-item>
                     <el-form-item label="工艺名称:"  class="mab" prop="keyOrder" label-width=" 90">
                       <el-input  v-model="gdgyformData['工艺名称']"  style="width: 140px;"/>
                     </el-form-item>
                     <el-form-item label="工序名称:"  class="mab" prop="keyOrder" label-width=" 90">
-                      <el-input  v-model="gdgyformData['工序名称']"  style="width: 400px;"/>
+                      <el-input  v-model="gdgyformData['工序名称']"  id="工序名称" style="width: 400px;" @keydown="gyzlent($event, '车间名称', '工序名称', '设备编号')" />
                     </el-form-item>
                     <el-form-item label="计损色数"  class="mab" prop="keyOrder" label-width=" 80">
                       <el-input  v-model="gdgyformData['计损色数']" style="width: 90px;"/>
@@ -1203,7 +1203,7 @@
                   </el-form-item>
                   <el-form-item label="工序损耗:"  class="mab" prop="keyOrder" >
                     <el-input v-model="gdgyformData['shdh']"  style="width: 10%;" id="工序损耗"  @keydown="gyzlent($event, '设备编号', '工序损耗', '损耗系数')"/>
-                    <el-input  v-model="gdgyformData['工序名称']"  style="width: 88.7%;margin-left: 10px"/>
+                    <el-input  v-model="gdgyformData['工序损耗名称']"  style="width: 88.7%;margin-left: 10px"/>
                   </el-form-item>
                   <div style="display: flex; gap: 0px;">
                     <el-form-item label="损耗系数:"  class="mab" prop="keyOrder">
@@ -1278,7 +1278,58 @@
 				</div>
 			  </template>
 			</el-dialog>
-
+
+
+<el-dialog v-model="yjdisplay" :before-close="()=> yjdisplay = false" style="width: 800px;" :title="'可选列表'" destroy-on-close>
+      <el-tree :data="yjList" :props="{children: 'children',label: 'name', value: 'no'}" @node-click="changeHandle"
+               default-expand-all style="border: 1px solid #ececec; padding: 10px;height: 400px;overflow: auto;">
+      </el-tree>
+    </el-dialog>
+	
+<el-dialog v-model="cjdisplay" :before-close="()=> cjdisplay = false" style="width: 800px;" :title="'车间选择'" destroy-on-close>
+      <el-tree
+          :data="cjList"
+          :render-after-expand="false"
+          @node-click="selectHandle"
+          :props="{children: 'children',label: 'label', value: 'value'}"
+          style="border: 1px solid #ececec; padding: 10px;height: 400px;overflow: auto;"
+          node-key="value"
+      >
+      </el-tree>
+<!--         :default-expanded-keys="['标准工艺']"-->
+    </el-dialog>
+	
+	<!--    工序损耗列表-->
+	    <el-dialog v-model="gxshdisplay" :before-close="()=> gxshdisplay = false" style="width: 800px;" :title="'工序损耗'" destroy-on-close>
+	      <el-tree
+	          :data="gxshList"
+	          :render-after-expand="false"
+	          @node-click="gxshselectHandle"
+	          :props="{children: 'children',label: 'label', value: 'value'}"
+	          style="border: 1px solid #ececec; padding: 10px;height: 400px;overflow: auto;"
+	          node-key="value"
+	          :default-expanded-keys="gdgyformData['车间名称']"
+	      >
+	      </el-tree>
+	    </el-dialog>
+		
+		<!-- 新增查询标准损耗 -->
+		<el-dialog v-model="shxsdisplay" :before-close="() => shxsdisplay = false">
+		  <el-form>
+		    <div>
+		      <!-- <el-form-item label="关键字:"  class="mab" prop="keyOrder">
+		        <el-space>
+		          <el-input v-model="gymc_keyword" style="width: 100%;"/>
+		          <el-button @click="searchHandle(gymc_keyword)">刷新</el-button>
+		        </el-space>
+		      </el-form-item> -->
+		      <div style="border:1px solid #eee; width:100%; height: 400px; overflow-y: auto">
+		        <el-tree :data="getSHListdata" :props="defaultProps" @node-click="selectSHNode" />
+		      </div>
+		    </div>
+		  </el-form>
+		</el-dialog>
+		
 <el-dialog v-model="luckyexcelVisible" :before-close="luckyexcelCloseDialog" width="100%" top="0vh">
   <div id="luckyexcel" style="width: 100%;height: 90vh;"></div>
 </el-dialog>
@@ -1331,7 +1382,7 @@ import {
   PrintDetailDel, ProcessDetailDel,WorkOrderDetailCope,
   getGdAnnexTable,WorkOrderData,WorkOrderDel,
   gdAnnexAdd,ProductCopeDetail,WorkOrderDetailListCope,
-  gdAnnexDel,
+  gdAnnexDel,getLossCode,getDepartName,WastageList,getCouplet,PrintDetailList
 } from "@/api/yunyin/yunying";
 import PrintPage from './components/print.vue'
 import AddGongYi from './components/addGongYi.vue'
@@ -3473,7 +3524,27 @@ const _cjmc = ref(null);
 //双击修改
 const gdgyupdateCompanyFunc = async(row) => {
   gdgydialogFormVisible.value = true
-
+
+const apiData = await getDepartName()
+  console.log(apiData)
+  function transformDataToTreeFormat(data) {
+    return Object.entries(data).map(([key, value]) => {
+      // key是车间名称,value是车间内的操作列表
+      const children = Object.entries(value).map(([workshop, operations]) => ({
+        label: workshop,
+        children: operations.map(operation => ({
+          label: operation,
+          value: operation // 可以根据需要添加更多属性
+        }))
+      }));
+      return { label: key, children };
+    });
+  }
+  // 使用ref来管理转换后的数据
+  cjList.value = ref(transformDataToTreeFormat(apiData.data));
+  const res = await PrintDetailList({workOrder: _Gd_gdbh.value})
+  yjList.value = res.data
+  
   console.log(row)
   if(row['车间名称']){
     _cjmc.value = row['车间名称']
@@ -3540,7 +3611,8 @@ const gdgyupdateCompanyFunc = async(row) => {
 }
 
 //工艺列表修改【确定】
-const gdgyenterDialog = async () => {
+const gdgyenterDialog = async () => {
+	
   if(_Gd_gdbh.value){
     const selectedValuesAsString = gdgyformData['设备编号'].join(' ');
     // if(gdgyformData['shdh'] === ''){
@@ -3586,6 +3658,7 @@ const gdgyenterDialog = async () => {
     const ProcessDetailEdit_edit = await ProcessDetailEdit(formattedData);
     if (ProcessDetailEdit_edit.code === 0) {
       ElMessage({type: 'success',message: '更新成功' })
+	  gdgydialogFormVisible.value = false
 	  let row = {
 		 '工单编号':_Gd_gdbh.value,
 		 '产品代号':_Gd_cpdh.value,
@@ -3625,9 +3698,50 @@ const _capacityList = async () => {
 //截取印件前两位
 const clickybupdate2 = (row,column,event) => {
   currentGy0_yjno.value = row['印件-工序'].substr(0, 2)
-}
+}
+
+const yjdisplay = ref(false)
+const yjList = ref()
+const shxsdisplay = ref(false)
+const cjList = ref([])
+const cjdisplay = ref(false)
 //修改工艺资料弹窗 键盘 input框跳转
-const gyzlent = (event,id1,id2,id3) => {
+const gyzlent = (event,id1,id2,id3) => {
+	if (id2==='印件编号' && event.key==='Tab' || id2 === '印件编号' && event.key=== 'Enter') {
+	  console.log(id.value)
+	  console.log(form['yjno'])
+	  const response = getCouplet({ gdbh:id.value,yjno:form['yjno']});
+	  console.log(response)
+	  gdgyformData['开数'] = response.data['开数']
+	  gdgyformData['联数'] = response.data['联数']
+	  if(yjList.value !== undefined){
+	    const node = yjList.value.find(item => item.no ===gdgyformData['yjno'])
+	    if (! node) {
+	      yjdisplay.value = true
+	    }
+	    document.getElementById(id3).focus()
+	  }
+	}
+	if (id2 === '车间名称' && event.key==='Tab') {
+	  document.getElementById(id3).focus()
+	  cjdisplay.value = true
+	}
+	if (id2 === '工序损耗' &&  event.key==='Tab') {
+	  if(gdgyformData['车间名称']){
+	     getGxshList();
+	    _getSH()
+	    shxsdisplay.value = true
+	  }
+	}
+	if (id2 === '工序名称' &&  event.key==='Tab' || event.key==='Enter') {
+	  if(gdgyformData['工艺名称'] === undefined){
+	    gdgyformData['工艺名称'] = '';
+	  }
+	  if(gdgyformData['工序名称'] === undefined){
+	    gdgyformData['工序名称'] = '';
+	  }
+	  gdgyformData['工序损耗名称'] = `${gdgyformData['工艺名称']} ${gdgyformData['工序名称']}`;
+	}
   if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
     if(id3!=''){
       document.getElementById(id3).focus()
@@ -3651,6 +3765,137 @@ const gyzlent = (event,id1,id2,id3) => {
     }
   }
 }
+
+const selectHandle = async (node)=>{
+  console.log(node)
+  if(node.value){
+    gdgyformData['工艺名称'] = node.value
+    gdgyformData['工序损耗名称'] = node.value
+    cjdisplay.value = false
+  }else{
+    gdgyformData['车间名称'] = node.label
+    return false;
+  }
+  gdgyformData['设备编号'] = []
+
+  //通过车间名称查询机台
+  const MachineList_jitai = await gdzl_MachineList({address:gdgyformData['车间名称']});
+  gdzl_MachineList_address.value = MachineList_jitai.data;
+  gdgyformData['shdh'] = ''
+  //通过车间名称查询工序损耗
+  // await getGxshList()
+  if(gdgyformData['工艺名称'] === undefined){
+    gdgyformData['工艺名称'] = '';
+  }
+  if(gdgyformData['工序名称'] === undefined){
+    gdgyformData['工序名称'] = '';
+  }
+  await InSH()
+}
+const InSH = async (value) => {
+  if(gdgyformData['工艺名称']){
+    const response = await getLossCode({ code:gdgyformData['工艺名称']});
+    console.log(response)
+    if(response.code===0){
+      gdgyformData['shdh']=response.data[0].sys_bh
+      // gdgyformData.工序损耗名称= node.sys_mc
+      gdgyformData['工序损耗名称'] = `${response.data[0].sys_mc} ${gdgyformData['工序名称']}`;
+      gdgyformData.损耗系数='1.00'
+      gdgyformData.难度系数='1.00'
+    }
+  }
+
+}
+
+const getSHListdata = ref([]);
+const _shdh = ref('');
+
+//工序损耗列表
+const gxshList = ref([])
+const getGxshList = async ()=>{
+  const WastageList_data = await WastageList({process: gdgyformData.工艺名称})
+  console.log(WastageList_data)
+  if(WastageList_data.data === null || WastageList_data.data === ''){
+    gdgyformData['shdh'] = '';
+    ElMessage({
+      type: 'warning',
+      message: '未获取到工序损耗'
+    })
+  }
+  // const response = await getLossCode({ code: WastageList_data.data });
+  // console.log(response)
+  gdgyformData['shdh'] = WastageList_data.data
+}
+//点击工序损耗列表数据
+const gxshselectHandle = async (node)=>{
+  if(node.label2){
+    gdgyformData['shdh'] = node.value
+    gdgyformData['工序损耗名称'] = node.label2
+    gxshdisplay.value = false
+  }
+}
+
+//填充树形结构
+const _getSH = async () => {
+  const response = await getLossCode({ code:'' });
+  if (response.code === 0) {
+    const data = response.data;
+    const treeData = [];
+    const map = {};
+    // 构建树形结构
+    data.forEach(item => {
+      map[item.sys_bh] = { ...item, children: [], label: `${item.sys_bh}---${item.sys_mc}---${item.sys_rate0}---${item.sys_rate1}` };
+    });
+    data.forEach(item => {
+      if (item.sys_bh.length === 3) {
+        map[item.sys_bh].level = 1;
+        treeData.push(map[item.sys_bh]);
+      } else {
+        map[item.sys_bh].level = 2;
+        map[item.sys_bh.substring(0, 3)].children.push(map[item.sys_bh]);
+      }
+    });
+    getSHListdata.value = treeData;
+    shxsdisplay.value = true;
+  } else {
+    // 处理错误情况
+    console.error('获取损耗列表失败');
+  }
+};
+
+//损耗树形结构点击
+const selectSHNode = (node,check) => {
+  console.log(node.level)
+  if(node.level==1){
+    console.log(node.label)
+  }
+  if(node.level==2){
+    if(gdgyformData['工艺名称'] === undefined){
+      gdgyformData['工艺名称'] = '';
+    }
+    if(gdgyformData['工序名称'] === undefined){
+      gdgyformData['工序名称'] = '';
+    }
+
+    gdgyformData['shdh']=node.sys_bh
+    // gdgyformData.工序损耗名称= node.sys_mc
+    gdgyformData['工序损耗名称'] = `${node.sys_mc} ${gdgyformData['工序名称']}`;
+    gdgyformData.损耗系数='1.00'
+    gdgyformData.难度系数='1.00'
+    shxsdisplay.value = false;
+  }
+}
+
+const changeHandle = (v) => {
+  const no = '0' + v.no
+  let list = gxList.value.map(item => {
+    const yj = item.split('-')[0]
+    if (yj === no) return Number(item.split('-')[1])
+  })
+  gdgyformData['yjno'] = v.no
+  gdgyformData['工序'] = (list.sort((a, b) => b-a)[0] + 1)
+  yjdisplay.value = false
+}
 
 //===============颜色==================================
 //工艺资料背景颜色变黄