Browse Source

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

曹鹤洋 1 year ago
parent
commit
55c3bed0f0

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

@@ -1025,4 +1025,11 @@ export const EmployeeData = (params) => {
     method: 'get',
     params
   })
+}
+export const RemodelDetail = (params) => {
+  return service({
+    url: '/mes_server/Facility/RemodelDetail',
+    method: 'get',
+    params
+  })
 }

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

@@ -6,7 +6,7 @@
           <!--          按钮部分-->
           <el-form ref="elSearchFormRef"  :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
             <el-form-item>
-              <!--按钮 clearable-->
+              <!--按钮-->
               <el-input v-model="searchInfo" placeholder="搜索工单编号"  style="width: 180px;"></el-input>
               <el-button type="primary" title="搜索" icon="search"  @click="onSubmit"></el-button>
               <el-button type="primary" title="设置工单的状态-->【计划中】 【生产中】 【已完成】" icon="edit" @click="onStatusClick" class="bt">工单状态设置</el-button>
@@ -27,12 +27,9 @@
                 <el-button type="primary" title="可【批量设置】所选择的生产任务的生产机台" icon="edit"  @click="onjztzClick" class="bt">机组调整</el-button>
                 <el-button type="primary" title="给担负起那设备做生产任务排程" icon="edit"  @click="oncjsbpcClick" class="bt">车间设备制程排序</el-button>
               </div>
-
               <el-button type="primary" title="打印生产工单" icon="edit" @click="pd_gdprintonClick" class="bt">工单打印</el-button>
               <el-button type="primary" icon="edit" @click="pd_gxclhconClick" class="bt">工序产量核查</el-button>
               <el-button type="primary" icon="edit" @click="pd_lcdlistonClick" class="bt">流程单查询</el-button>
-
-
             </el-form-item>
           </el-form>
 
@@ -94,7 +91,6 @@
               </template>
             </el-table>
           </el-dialog>
-
           <!--机组调整【弹窗】-->
           <el-dialog v-model="jizuDisplay" title="机组调整" style="width: 600px;">
             <el-row class="">
@@ -175,7 +171,6 @@
             </div>
 
           </el-dialog>
-
           <!--工序产量核查【弹窗】-->
           <el-dialog v-model="pd_gxclhclist" title="工序产量核查" style="width: 100%;height: 100%;margin: 0px;padding: 0px">
             <el-button type="" @click="gxclhcCancel">退出</el-button>
@@ -205,7 +200,6 @@
               </template>
             </el-table>
           </el-dialog>
-
           <!--流程单查询【弹窗】-->
           <el-dialog v-model="pd_lcdlist" title="工单工序生产进程" style="width: 100%;height: 100%;margin: 0px;padding: 0px;">
             <div style="width: 100%;height: 100%;">
@@ -253,7 +247,7 @@
         </layout-sider>
         <layout-content>
           <el-main>
-
+<!--          customTree 排程 制程  dataTree // 计划中,排产中 ,dataTree 车间-->
             <div class="gva-table-box"  v-if="treeType === 'customTree'">
               <el-table ref="multipleTable" style="width: 100%;height: 25vh"
                         :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
@@ -698,10 +692,8 @@ const handleNodeClick = async (node) => {
   });
   // 获取点击的节点
   const clickedNodeId = node['$treeNodeId'];
-  console.log(clickedNodeId);
   const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
   if (clickedNode) {
-    console.log(clickedNode);
     // 给当前点击的节点改变颜色
     clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
   }
@@ -713,9 +705,10 @@ const handleNodeClick = async (node) => {
     treeType.value = 'dataTree'
     // 使用字符串分割获取#前面的数据
     _machine.value = node.label.split('#')[0].trim() + '#';
-    console.log('机台-------' + _machine.value)
+    console.log('点击了机台-------' + _machine.value)
     const zhubiao = await MachineWorkOrderList({ machine:_machine.value})
-    // console.log(zhubiao)
+    console.log("获取出来的数据【排程↑】【制程↓】↓↓↓↓↓↓↓↓↓↓↓↓↓")
+    console.log(zhubiao)
     chejianData.value = zhubiao.data['排程'];
     chejianfuData.value = zhubiao.data['制程'];
   }
@@ -740,7 +733,7 @@ const schandleNodeClick = async (node) => {
   bottomData.value = []
   yjtableData.value = []
   gytableData.value = []
-  console.log(node.number)
+  console.log('点击了-------' + node.number)
   switch (node.number) {
     case "计划中":
       const jhz_Projectdata = await Project({status:currentNode.value,search:'',page:1,limit:30});

+ 16 - 7
src/view/yunyin/shengchanguanli/gongdanziliao.vue

@@ -890,12 +890,14 @@
                 <div>
                   <el-form-item label="关键字:"  class="mab" prop="keyOrder">
                     <el-space>
-                      <el-input v-model="cpdh_keyword" @keyup.enter="cpdh_ProductValue" style="width: 100%;"/>
+                      <el-input v-model="cpdh_keyword" @keyup.enter="cpdh_ProductValue" style="width: 100%;" ref="addgdzlcpdhInput"/>
                       <el-button @click="gongdanSearchHandle(cpdh_keyword, '产品代号')">刷新</el-button>
                     </el-space>
                   </el-form-item>
                   <div style="border:1px solid #eee; width:100%; height: 400px; overflow-y: auto">
-                    <el-tree :data="cpdhDataList" :props="{children: 'children',label: 'name', value: '产品编号'}" @node-click="selectGongDanNode($event, '产品代号')" />
+                    <el-tree :data="cpdhDataList"
+                             :props="{children: 'children',label: 'name', value: '产品编号'}"
+                             @node-click="selectGongDanNode($event, '产品代号')" />
                   </div>
                 </div>
               </el-form>
@@ -1931,15 +1933,12 @@ const selectGongDanNode = (node, type) => {
 }
 
 const xzgdzlInput =ref()
+const addgdzlcpdhInput =ref()
 const xzgdzlTree = ref()
 const currentNodeKey = ref('')
 
 //新增工单资料弹窗 键盘 input框跳转
 const add_gdzlent = async (event,id1,id2,id3) => {
-  if (id2 === '产品代号' && event.key==='Tab' || id2 === '产品代号' && event.key=== 'Enter') {
-    await _ProductCodeList()
-    cpdhModal.value = true
-  }
   if(event.keyCode === 40){
     if(id3!=''){
       document.getElementById(id3).focus()
@@ -1984,6 +1983,17 @@ const add_gdzlent = async (event,id1,id2,id3) => {
       }, 200)
     })
   }
+
+  if (id2 === '产品代号' && event.key==='Tab' || id2 === '产品代号' && event.key=== 'Enter') {
+    await _ProductCodeList()
+    cpdhModal.value = true
+    //自动获取光标
+    await nextTick(() => {
+      setTimeout(() => {
+        addgdzlcpdhInput.value.focus()
+      }, 200)
+    })
+  }
 }
 let isdeFun = false
 watch(() => khdhModal.value, async v => {
@@ -2039,7 +2049,6 @@ watch(() => khdhModal.value, async v => {
       }
     }
   })
-
 })
 
 // =========== 新增印件资料 ===========

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

@@ -10,8 +10,8 @@
 			<!-- <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="onDel">删除</el-button>
-			<el-button type="primary" @click="onADD">新增</el-button>
+			<el-button type="primary" @click="onDel"  v-if="DelType === true" >删除</el-button>
+			<el-button type="primary" @click="onADD" v-if="AddType === true">新增</el-button>
 			<!-- <el-button type="primary" @click="onClear2" >换型清场</el-button> -->
 		</header>
     <el-container>
@@ -19,7 +19,7 @@
         <div class="JKWTree-tree">
 
           <h3  >设备运行跟踪</h3>
-          <el-tree :data="treeData"  :props="defaultProps" @node-click="handleNodeClick"></el-tree>
+          <el-tree :data="treeData"  :props="defaultProps" @node-click="handleNodeClick" ></el-tree>
         </div>
 
       </el-aside>
@@ -891,61 +891,7 @@
 		    <div v-if="zhichengstatus" style="flex: 0; margin: 0;">
 		      <el-tabs v-model="activNames" type="card" @tab-click="handleClick">
 		        <el-tab-pane label="指标检验"  @click="showTable('指标检验')"  name="first">
-		          <el-table
-		            tooltip-effect="dark"
-		            :data="zhibiaoselectData"
-		            row-key="ID"
-		            highlight-current-row="true"
-		          				:show-overflow-tooltip="true"
-		            border  @row-click="dianjianhandle"
-		            style="width:100%; height:310px;"
-		            @row-dblclick="handleSelectClick"
-		            :row-class-name="rowClassName"
-		          >
-		            <el-table-column
-		              prop="检验项目"
-		              label="检验项目"
-		              width="270"
-		            />
-					<el-table-column
-					  v-slot="scope"
-					  label="不检测" 
-					  width="70"
-					>
-					   <el-checkbox v-model="scope.row.notjc" @click="notjcClick(scope.row)"></el-checkbox>
-					</el-table-column>
-		            <el-table-column
-		              v-slot="scope"
-		              label="合格"
-		              width="60"
-		            >
-		              
-		             <el-checkbox v-model="scope.row.zc" @click="zcClick(scope.row)"></el-checkbox>
-		            
-		            </el-table-column>
-		            <el-table-column
-		              v-slot="scope"
-		              label="不合格" 
-		              width="70"
-		            >
-		               <el-checkbox v-model="scope.row.yc" @click="ycClick(scope.row)"></el-checkbox>
-		            </el-table-column>
-					<el-table-column
-					  prop="检测方法"
-					  label="检测方法"
-					  width="90"
-					/>
-					<el-table-column
-					  prop="检验频率"
-					  label="检验频率"
-					  width="150"
-					/>
-					<el-table-column
-					  prop="相关标准"
-					  label="相关标准"
-					  width="180"
-					/>
-		          </el-table>
+		          <el-table
		              tooltip-effect="dark"
		              :data="zhibiaoselectData"
		              row-key="ID"
		              highlight-current-row="true"
		              :show-overflow-tooltip="true"
		              border
		              style="width:100%; height:310px;"
		              :row-class-name="rowClassName"
		          >
		              <el-table-column prop="检验项目" label="检验项目" width="270" />
		              
		              <el-table-column label="不检测" width="70">
		                  <template v-slot="scope">
		                      <el-radio v-model="scope.row.selected" label="不检测">
		                          <span style="visibility: hidden;">不检测</span>
		                      </el-radio>
		                  </template>
		              </el-table-column>
		              
		              <el-table-column label="合格" width="60">
		                  <template v-slot="scope">
		                      <el-radio v-model="scope.row.selected" label="合格">
		                          <span style="visibility: hidden;">合格</span>
		                      </el-radio>
		                  </template>
		              </el-table-column>
		              
		              <el-table-column label="不合格" width="70">
		                  <template v-slot="scope">
		                      <el-radio v-model="scope.row.selected" label="不合格">
		                          <span style="visibility: hidden;">不合格</span>
		                      </el-radio>
		                  </template>
		              </el-table-column>
		              
		              <el-table-column prop="检测方法" label="检测方法" width="90" />
		              <el-table-column prop="检验频率" label="检验频率" width="150" />
		              <el-table-column prop="相关标准" label="相关标准" width="180" />
		          </el-table>
 		        </el-tab-pane>
 		      
 		        <el-tab-pane label="附加检验记录"  @click="showTable('附加检验记录')"  name="second">
@@ -1170,6 +1116,7 @@
 		  destroy-on-close
 		  width="145vh"
 		  style="height: 78vh;"
+		  :before-close="closehuanxingVisible"
 		>
 		  <div style="display: flex;">
 		    <div style="flex: 0.1;">
@@ -1759,7 +1706,7 @@
 		  			  <el-input v-model="formdata3.value.组员10['编号']" id="bh10"  @keydown="ent($event, 'bh9', 'bh10', 'bh11')" @keyup.enter.native="GetYg($event, '10')"  placeholder="" />
 		  			</el-col>
 		  			<el-col :span="2">
-		  			  <el-input v-model="formdata3.value.拉料['编号']"  @keydown="ent($event, 'bh10', 'bh11', 'name1')" @keyup.enter.native="GetYg($event, '11')"  placeholder="" />
+		  			  <el-input v-model="formdata3.value.拉料['编号']" id="bh11" @keydown="ent($event, 'bh10', 'bh11', 'rate1')" @keyup.enter.native="GetYg($event, '11')"  placeholder="" />
 		  			</el-col>
 		  		   </el-row>
 		  		
@@ -1809,7 +1756,7 @@
 		  		
 		  		  	 </el-col>
 		  		     <el-col :span="2">
-		  		       <el-input v-model="formdata3.value.组员1['比例']" id="rate1"  @keydown="ent($event, 'name11', 'rate1', 'rate2')"   placeholder="" />
+		  		       <el-input v-model="formdata3.value.组员1['比例']" id="rate1"  @keydown="ent($event, 'bh11', 'rate1', 'rate2')"   placeholder="" />
 		  		     </el-col>
 		  		     <el-col :span="2">
 		  		       <el-input v-model="formdata3.value.组员2['比例']" id="rate2"  @keydown="ent($event, 'rate1', 'rate2', 'rate3')"   placeholder="" />
@@ -1928,7 +1875,8 @@ import {
    ChanliangWorkorder,
    ChanliangPrintDetail,
    ChanliangProcessDetail,
-   EmployeeData
+   EmployeeData,
+   RemodelDetail
 } from '@/api/jixiaoguanli/jitairibaobiao'
 
 import {
@@ -1944,6 +1892,9 @@ import { ref, reactive } from 'vue'
 defineOptions({
     name: 'Company'
 })
+
+const DelType = ref(false)
+const AddType = ref(false)
 const gytableData = ref([])
 const drzcDatas =ref([])
 const detailData = reactive([])
@@ -1972,6 +1923,8 @@ const handleNodeClick = (nodeData,node) => {
 		JTMCOn.value=false
 		dateOn.value=false
 		MachinelList()
+		DelType.value = false
+		AddType.value = false
 		// MachineVisible.value=true
       } else if (nodeData.level === 2) {
         console.log(node.label); // 第二级节点
@@ -1984,6 +1937,8 @@ const handleNodeClick = (nodeData,node) => {
 		// FacilityTeam(JTMC)
 		// console.log('123')
 		// console.log(JTMC)
+		DelType.value = false
+		AddType.value = false
       } else if (nodeData.level === 3) {
 		  JTMC=nodeData.machineName.split("-")[0]
 		  JTMCOn.value=false
@@ -1996,7 +1951,8 @@ const handleNodeClick = (nodeData,node) => {
 		  showbutton.value=false
 		  FacilityInspect()
 		  FacilitychanLiang()
-		  
+		  DelType.value = true
+		  AddType.value = true
 		  // FacilityTeam(JTMC)
 		  // InspectionRecord()
 		  // FacilityDetail()
@@ -2362,7 +2318,7 @@ const Chanliangdel = async() => {
 	FacilitychanLiang()
     }else{
 		ElMessage({
-		  type: 'success',
+		  type: 'error',
 		  message: '失败'
 		})
 	}
@@ -2418,7 +2374,8 @@ const processInspectionRecordsItem = async (value) => {
 		 item.yjno=xunchaData.value.yjno
 		 item.flow=xunchaData.value.lcdh
 		 item.team=BZMC.value
-		 item.machine=JTMC.split("#")[0]
+		 item.machine=JTMC.split("#")[0]
+		 item.selected = '不检测';
 		 return item
 	 })
 	 fujiaselectData.value=response.data.首件.附加.map(item=>{
@@ -2537,6 +2494,11 @@ const RemodelGetTab = async() => {
 		  }
 	  }
 	  huanxingtreeData.value=arr
+  }else{
+	  ElMessage({
+	    type: 'error',
+	    message: '请注意, 工单编号输入空置, 除非有特殊需要!'
+	  })
   }
 }
 
@@ -2552,6 +2514,7 @@ const huanxingNodeClick = (node) => {
   	  console.log('2')
   }
 }
+const huanxingData = ref({})
 const remodelDetail = async (val) => {
   const response = await RemodelDetail({UniqId:val});
   if (response.code === 0) {
@@ -2581,6 +2544,11 @@ const remodelDetail = async (val) => {
 	}else{
 		huanxingData.value.项目5=false
 	}
+  }else{
+	  ElMessage({
+	    type: 'error',
+	    message: '请注意, 工单编号输入空置, 除非有特殊需要!'
+	  })
   }
 }
 const modelChangeRecord = async (val) => {
@@ -2757,40 +2725,52 @@ const dianjianhandle =  (val, row) => {
   }
 };
 const notjcClick =  (val) => {
-  try {
-	if(val.notjc==false){
-		val.zc=true
-	}else{
-		val.zc=false
-		val.yc==false
-	}
-  } catch (error) {
-    console.error('An error occurred:', error);
-  }
+	console.log("不检测")
+	val.notjc==true
+	val.zc=false
+	val.yc==false
+ //  try {
+	// if(val.notjc==false){
+	// 	val.zc=true
+	// }else{
+	// 	val.zc=false
+	// 	val.yc==false
+	// }
+ //  } catch (error) {
+ //    console.error('An error occurred:', error);
+ //  }
 };
 const zcClick =  (val) => {
-  try {
-	if(val.zc==false){
-		val.zc=true
-	}else{
-		val.zc=false
-		val.yc==false
-	}
-  } catch (error) {
-    console.error('An error occurred:', error);
-  }
+	console.log("合格")
+	val.notjc==false
+	val.zc=true
+	val.yc==false
+ //  try {
+	// if(val.zc==false){
+	// 	val.zc=true
+	// }else{
+	// 	val.zc=false
+	// 	val.yc==false
+	// }
+ //  } catch (error) {
+ //    console.error('An error occurred:', error);
+ //  }
 };
 const ycClick =  (val) => {
-  try {
-	if(val.yc==false){
-		val.zc=true
-	}else{
-		val.zc=false
-		val.notjc==false
-	}
-  } catch (error) {
-    console.error('An error occurred:', error);
-  }
+	console.log("不合格")
+	val.notjc==false
+	val.zc=false
+	val.yc==true
+ //  try {
+	// if(val.yc==false){
+	// 	val.zc=true
+	// }else{
+	// 	val.zc=false
+	// 	val.notjc==false
+	// }
+ //  } catch (error) {
+ //    console.error('An error occurred:', error);
+ //  }
 };
 
 const rowClassName = (row, column) => {
@@ -3449,16 +3429,26 @@ const MachineChanliang = async(value) => {
    const currentIndex = Array.from(inputs).indexOf(event.target);
    
    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();
- 		  })
-         break;
+       let nextIndex = currentIndex + 1;
+       while (nextIndex < inputs.length) {
+           if (inputs[nextIndex].disabled) {
+               console.log("当前输入框为disabled,跳过");
+               nextIndex++; // 跳过disabled的输入框
+               continue;
+           }
+   
+           if (!inputs[nextIndex].readOnly) {
+               nextTick(() => {
+                   inputs[nextIndex].focus();
+                   inputs[nextIndex].select();
+               });
+               break;
+           }
+   
+           nextIndex++;
        }
-     }
-   } else if (event.keyCode === 38) { // 向上箭头
+   }
+ else if (event.keyCode === 38) { // 向上箭头
      for (let i = currentIndex - 1; i >= 0; i--) {
        if (!inputs[i].readOnly) {
          nextTick(()=>{
@@ -3610,7 +3600,30 @@ const deleteCompanyFunc = async (row) => {
         getTableData()
     }
 }
-
+//键盘 input框跳转
+const ent = (event,id1,id2,id3) => {
+  if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
+	if(id3!=''){
+      document.getElementById(id3).focus()
+    }
+  } else if (event.keyCode === 38) { // 向上箭头
+    if(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 dialogFormVisible = ref(false)
 const dianjianVisible = ref(false)