Browse Source

包装计件单据冲突解决

曹鹤洋 1 year ago
parent
commit
1ff7474bfe
1 changed files with 247 additions and 150 deletions
  1. 247 150
      src/view/performance/06-packingDocuments/index.vue

+ 247 - 150
src/view/performance/06-packingDocuments/index.vue

@@ -39,7 +39,22 @@
 								:total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
 						</div>
 					</div>
-
+						<el-dialog v-model="BzVisible" title="选择" destroy-on-close width="200px"
+							@keydown="selectBZ($event)">
+							<el-table tooltip-effect="dark" :data="selectDataBz" row-key="ID"
+								highlight-current-row="true" border style="width:100%" @row-dblclick="SelectClickBz"
+								ref="table">
+								<el-table-column prop="sczl_bzdh" label="班组" width="150" />
+							</el-table>
+						</el-dialog>
+						<el-dialog v-model="BzVisible2" title="冲月定额" destroy-on-close width="200px"
+							@keydown="selectCY($event)">
+							<el-table tooltip-effect="dark" :data="selectDataCY" row-key="ID"
+								highlight-current-row="true" border style="width:100%"
+								ref="table">
+								<el-table-column prop="sczl_冲定额" label="冲月定额" width="150" />
+							</el-table>
+						</el-dialog>
 					<!-- 弹出框 -->
 					<div>
 						<el-dialog v-model="dialogFormVisible" :title="type" destroy-on-close width="1200px">
@@ -52,30 +67,32 @@
 
 								<el-form-item label="员工编号">
 									<el-input v-model="detailData.sczl_bh" style="width: 100px;"
-										placeholder="Enter回车" />
+										placeholder="Enter回车" 
+										@blur="getBzsubmit()" />
 									<el-input v-model="detailData.name" style="width: 100px; padding-left: 5px;"
 										@click="selectvalue($event)" readonly />
 								</el-form-item>
 
 								<el-form-item label="组别">
-									<el-select v-model="detailData.sczl_bzdh" placeholder=" " style="width: 80px" >
+									<!-- <el-select v-model="detailData.sczl_bzdh" placeholder=" " style="width: 80px" >
 									  <el-option  label="A班" value="A班" />
 									  <el-option label="B班" value="B班" />
-									</el-select>
-									<!-- <el-input v-model="detailData.sczl_bzdh" style="width: 80px;" /> -->
+									</el-select> -->
+									<el-input v-model="detailData.sczl_bzdh" style="width: 80px;" />
 								</el-form-item>
 								<br>
 
 								<el-form-item label="计时时数" style="padding-left: 195px;">
 									<el-input v-model="detailData.sczl_jsss" style="width: 100px;"
-										@click="selectvalue($event)" />
+										@click="selectvalue($event)" @blur="getBzsubmit2"/>
 								</el-form-item>
 
 								<el-form-item label="冲月定额">
-									<el-select v-model="detailData.sczl_冲定额" placeholder=" " style="width: 100px">
+									<!-- <el-select v-model="detailData.sczl_冲定额" placeholder=" " style="width: 100px">
 										<el-option label="" value="" />
 										<el-option label="是" value="是" />
-									</el-select>
+									</el-select> -->
+									<el-input v-model="detailData.sczl_冲定额" style="width: 80px;" />
 								</el-form-item>
 
 								<el-table :data="detailData.table" border tooltip-effect="dark"
@@ -163,17 +180,17 @@
 
 
 						<!-- 新增定额代号 -->
-						<el-dialog v-model="dedhsearchModel" :before-close="() => dedhsearchModel = false">
+						<el-dialog v-model="dedhsearchModel" :before-close="() => dedhsearchModel = false" @opened="focusFirstNode">
 							<el-form>
 								<div>
 									<el-form-item label="定额代号 :" class="mab" prop="keyOrder">
 									</el-form-item>
 
 									<div style="border:1px solid #eee; width:100%; height: 400px; overflow-y: auto">
-										<el-tree :data="dedhtreeData" :props="{
+										<el-tree ref="table_dedh" node-key="id" :data="dedhtreeData" :props="{
 		            children: 'children',
-		            label: 'label'
-		          }" @node-click="dedhhandleNodeClick"></el-tree>
+		            label: 'label',
+		          }"   @node-click="dedhhandleNodeClick"></el-tree>
 									</div>
 
 
@@ -219,6 +236,31 @@
 	</div>
 </template>
 
+<script>
+
+
+// export default {
+//   data() {
+//   },
+//   methods: {
+//     focusFirstNode() {
+//       // 在对话框打开时聚焦在第一个节点上
+// 	  const tree = this.$refs.dedhTree;
+// 	  if (this.dedhtreeData && this.dedhtreeData.length > 0) {
+//             // 设置第一个节点为默认选中节点
+//             this.$refs.dedhTree.setCurrentKey(this.dedhtreeData[0].id);
+//         }
+//     },
+//   },
+//   mounted() {
+//     if (this.dedhsearchModel) {
+//       this.focusFirstNode();
+//     }
+//   },
+// };
+</script>
+
+
 <script setup>
 	import {
 		Layout,
@@ -235,7 +277,9 @@
 	// import { Download, Search, Delete } from '@element-plus/icons-vue'
 	import {
 		reactive,
-		ref
+		ref,
+		nextTick,
+		onMounted
 	} from 'vue'
 	import {
 		getGxMc,
@@ -257,7 +301,40 @@
 	defineOptions({
 		name: '06PackingDocuments',
 	})
+	//班组
+	const BzVisible = ref (false)
+	//
+	const BzVisible2 = ref (false)
+	const selectDataBz = reactive([])
+	const selectDataCY = reactive([])
+const SelectClickBz = (row, column, event) => {
+
+		BzVisible.value = false
+	}
+	const selectBZ = (event) => {
+		if (event.keyCode === 40) { // Enter 或向下箭头
+			setCurrent(selectDataBz[1]);
+
+		} else if (event.keyCode === 38) {
+			setCurrent(selectDataBz[0]);
+
+		} else if (event.keyCode === 13) {
+			BzVisible.value = false
+		}
+
+	}
+	const selectCY = (event) => {
+		if (event.keyCode === 40) { // Enter 或向下箭头
+			setCurrent2(selectDataCY[1]);
+
+		} else if (event.keyCode === 38) {
+			setCurrent2(selectDataCY[0]);
 
+		} else if (event.keyCode === 13) {
+			BzVisible2.value = false
+		}
+
+	}
 	// 侧边栏功能
 	const treeData = reactive([])
 	const getSideData = async () => {
@@ -536,8 +613,13 @@
 
 	const setCurrent = (row) => {
 		table.value?.setCurrentRow(row)
+		detailData.sczl_bzdh = row.sczl_bzdh
+		detailData.sczl_冲定额 = row.sczl_冲定额
+	}
+	const setCurrent2 = (row) => {
+		table.value?.setCurrentRow(row)
+		detailData.sczl_冲定额 = row.sczl_冲定额
 	}
-
 	// 获取详细信息
 	const getTableInfo = async (id) => {
 		try {
@@ -582,23 +664,23 @@
 						}
 					})
 
-				if (type.value === '新增') {
-					console.log(detailData)
-					detailData.name = ''
-					detailData.sczl_bh = ''
-					detailData.sczl_bzdh = ''
-					detailData.sczl_desc = ''
-					detailData.sczl_jsss = ''
-					detailData.sczl_rq = ''
-					detailData.table.forEach(row => {
-						for (const key in row) {
-							row[key] = '' // 清空每行的内容
-						}
-					})
-				} else {
-					detailData.UniqId = id
-					dialogFormVisible.value = true
-				}
+				// if (type.value === '新增') {
+				// 	console.log(detailData)
+				// 	detailData.name = ''
+				// 	detailData.sczl_bh = ''
+				// 	detailData.sczl_bzdh = ''
+				// 	detailData.sczl_desc = ''
+				// 	detailData.sczl_jsss = ''
+				// 	detailData.sczl_rq = ''
+				// 	detailData.table.forEach(row => {
+				// 		for (const key in row) {
+				// 			row[key] = '' // 清空每行的内容
+				// 		}
+				// 	})
+				// } else {
+				// 	detailData.UniqId = id
+				// 	dialogFormVisible.value = true
+				// }
 
 				if (type.value === '新增' || type.value === '编辑') {
 					detailData.UniqId = id
@@ -756,7 +838,7 @@
 			getSideData()
 		}
 	}
-
+	//弹出框回车事件
 	const handleGetYg = async () => {
 		if (detailData.sczl_bh == '') {
 			formElements = document.getElementById('detail-form').elements
@@ -770,6 +852,8 @@
 				if (response.data.length == 1) {
 					detailData.name = response.data[0].ygxm
 					detailData.sczl_bh = response.data[0].员工编号
+					detailData.sczl_jsss = "0"
+					// detailData.sczl_冲定额 = "0"
 					formElements = document.getElementById('detail-form').elements
 					formElements[3].focus()
 					formElements[3].select()
@@ -842,12 +926,26 @@
 	//班组回车事件
 	const getBzsubmit = () => {
 		//弹出选择
-		const data = [{'sczl_bzdh':'A班'},{'sczl_bzdh':'B班'}]
-		selectData_Bz.splice(0, selectData_Bz.length, ...data)
-		if(!dialogSelectVisible_Yg.value){
-			dialogSelectVisible_Bz.value=true
-			setGXCurrent_Bz(selectData_Bz[0])
-		}
+		const data = [{
+			'sczl_bzdh': 'A班'
+		}, {
+			'sczl_bzdh': 'B班'
+		}]
+		selectDataBz.splice(0, selectDataBz.length, ...data)
+		BzVisible.value = true
+		setCurrent(data[0])
+	}
+	//冲月定额
+	const getBzsubmit2 = () => {
+		//弹出选择
+		const data = [{
+			'sczl_冲定额': '是'
+		}, {
+			'sczl_冲定额': '否'
+		}]
+		selectDataCY.splice(0, selectDataCY.length, ...data)
+		BzVisible2.value = true
+		setCurrent2(data[0])
 	}
 	const dialogSelectVisible_Bz = ref(false)
 	const selectData_Bz = reactive([])
@@ -929,6 +1027,7 @@
 	const CPIndex = ref(0);
 	const JYCurrent = ref(0);
 	const selectCP = (event) => {
+		// console.log(event);
 		if (event.keyCode === 40) { // 向下箭头
 			if (CPIndex.value < selectData.length - 1) {
 				CPIndex.value++;
@@ -947,6 +1046,7 @@
 			}
 		} else if (event.keyCode === 13) { // 回车键
 			dialogSelectVisible.value = false
+			console.log(event);
 		}
 	}
 	// 弹窗确定
@@ -962,60 +1062,57 @@
 	//新增定额代号
 	const dedhsearchModel = ref(false)
 	const dedhtreeData = ref([])
+	const table_dedh =ref()
 	const _index = ref(null)
 	// 定额代号回车事件
 	const getDedhsubmit = async (index, row) => {
+		// const tree = this.$refs.dedhTree;
+		// console.log(tree);
 		console.log(index)
 		_index.value = index
 		dedhsearchModel.value = true;
 		const getPieceWorks = await getDedh();
 		console.log(getPieceWorks);
-			console.log(22222)
 	if (getPieceWorks.code === 0) {
-	    const transformItems = (items) => {
-	        return items.map(item => ({
-	            label: `${item.sys_mc}【${item.sys_bh}】`,
-	            params: {
-	                code: item.sys_bh
-	            },
-	            children: item.bh_mc ? transformItems(item.bh_mc) : []
-	        }));
-	    };
-	
-	    const transformedData2 = getPieceWorks.data.map(topItem => ({
-	        label: `${topItem.sys_mc}【${topItem.sys_bh}】`,
-	        params: {
-	            code: topItem.sys_bh
-	        },
-	        children: topItem.bh_mc ? transformItems(topItem.bh_mc) : []
-	    }));
-	
+		const transformItems = (items,indexs) => {
+	        return items.map((item,index) => ({
+	            id: `${indexs}-${index}`,
+	            label: `${item.sys_mc}【${item.sys_bh}】`,
+	            params: {
+	                code: item.sys_bh
+	            },
+	            children: item.bh_mc ? transformItems(item.bh_mc) : []
+	        }));
+	    };
+	
+	    const transformedData2 = getPieceWorks.data.map((topItem,indexs) => ({
+			id: indexs,
+	        label: `${topItem.sys_mc}【${topItem.sys_bh}】`,
+	        params: {
+	            code: topItem.sys_bh
+	        },
+	        children: topItem.bh_mc ? transformItems(topItem.bh_mc,indexs) : []
+	    }));
+	
 	    dedhtreeData.value = transformedData2;
+		console.log(transformedData2);
+		  nextTick(() => {
+		    // 手动设置选中节点,如果默认选中不生效,可以使用此方法
+		    if (table_dedh.value) {
+			  const tree = table_dedh.value?.$el; // 访问组件实例的 $el
+			    if (tree) {
+			      // 通过DOM选择器查找节点
+			      const node = tree.querySelector('[data-key="0"]');
+			      if (node) {
+			        node.scrollIntoView();
+			        node.focus(); // 假设节点是可聚焦的
+			      }
+			    }
+		    }
+		  });
 	}
-			
-		
-		// if (getPieceWorks.code === 0) {
-		// 	const transformedData2 = getPieceWorks.data.bh_mc.map(item => ({
-		// 		label: `${item.sys_mc}【${item.sys_bh}】`,
-		// 		params: {
-		// 			code: item.sys_bh
-		// 		},
-		// 		children: item.bh_mc?.map(sysItem => ({
-		// 			label: `${sysItem.sys_mc}【${sysItem.sys_bh}】`,
-		// 			params: {
-		// 				code: sysItem.sys_bh
-		// 			},
-		// 			children: sysItem.bh_mc?.map(syssItem => ({
-		// 				label: `${syssItem.sys_mc}【${syssItem.sys_bh}】`,
-		// 				params: {
-		// 					code: syssItem.sys_bh
-		// 				}
-		// 			})) || []
-		// 		})) || []
-		// 	}));
-		// 	dedhtreeData.value = transformedData2;
-		// }
 	};
+
 	// 点击定额代号
 	const dedhhandleNodeClick = (node, check) => {
 		console.log(node);
@@ -1027,7 +1124,7 @@
 			dedhsearchModel.value = false;
 		}
 		// dedhsearchModel.value = false;
-	}
+	};
 
 
 
@@ -1035,76 +1132,76 @@
 	let flag_Bz = true
 	let formElements
 	const moveFocus = (event) => {
-		const index = Array.from(formElements).indexOf(event.target)
-		const key = event.key
-		event.preventDefault()
-		switch (index) {
-			case 0:
-				if (key === 'ArrowDown') {
-					formElements[1].focus()
-					formElements[1].select()
-				} else if (key === 'ArrowUp') {
-					formElements[formElements.length - 1].focus()
-					formElements[formElements.length - 1].select()
-				} else if (key === 'Enter') {
-					formElements[1].focus()
-					formElements[1].select()
-				}
-				break
-
-			case 1:
-				if (key === 'ArrowDown') {
-					formElements[3].focus()
-					formElements[3].select()
-				} else if (key === 'ArrowUp') {
-					formElements[0].focus()
-					formElements[0].select()
-				} else if (key === 'Enter') {
-					handleGetYg()
-				}
-				break
-
-			case 3:
-				if (key === 'ArrowDown') {
-					formElements[4].focus()
-					formElements[4].select()
-				} else if (key === 'ArrowUp') {
-					formElements[1].focus()
-					formElements[1].select()
-				} else if (key === 'Enter') {
-					// getBzsubmit()
-					formElements[4].focus()
-					formElements[4].select()
-				}
-				break
-
-			case formElements.length - 1:
-				if (key === 'ArrowDown') {
-					formElements[0].focus()
-					formElements[0].select()
-				} else if (key === 'ArrowUp') {
-					formElements[index - 1].focus()
-					formElements[index - 1].select()
-				} else if (key === 'Enter') {
-					formElements[0].focus()
-					formElements[0].select()
-				}
-				break
+    const index = Array.from(formElements).indexOf(event.target);
+    const key = event.key;
+    event.preventDefault();
+    switch (index) {
+        case 0:
+            if (key === 'ArrowRight') {
+                formElements[1].focus();
+                formElements[1].select();
+            } else if (key === 'ArrowLeft') {
+                formElements[formElements.length - 1].focus();
+                formElements[formElements.length - 1].select();
+            } else if (key === 'Enter') {
+                formElements[1].focus();
+                formElements[1].select();
+            }
+            break;
+
+        case 1:
+            if (key === 'ArrowRight') {
+                formElements[3].focus();
+                formElements[3].select();
+            } else if (key === 'ArrowLeft') {
+                formElements[0].focus();
+                formElements[0].select();
+            } else if (key === 'Enter') {
+                handleGetYg();
+            }
+            break;
+
+        case 3:
+            if (key === 'ArrowRight') {
+                formElements[4].focus();
+                formElements[4].select();
+            } else if (key === 'ArrowLeft') {
+                formElements[1].focus();
+                formElements[1].select();
+            } else if (key === 'Enter') {
+                formElements[4].focus();
+                formElements[4].select();
+            }
+            break;
+
+        case formElements.length - 1:
+            if (key === 'ArrowRight') {
+                formElements[0].focus();
+                formElements[0].select();
+            } else if (key === 'ArrowLeft') {
+                formElements[index - 1].focus();
+                formElements[index - 1].select();
+            } else if (key === 'Enter') {
+                formElements[0].focus();
+                formElements[0].select();
+            }
+            break;
+
+        default:
+            if (key === 'ArrowRight') {
+                formElements[index + 1].focus();
+                formElements[index + 1].select();
+            } else if (key === 'ArrowLeft') {
+                formElements[index - 1].focus();
+                formElements[index - 1].select();
+            } else if (key === 'Enter') {
+                formElements[index + 1].focus();
+                formElements[index + 1].select();
+            }
+            break;
+    }
+};
 
-			default:
-				if (key === 'ArrowDown') {
-					formElements[index + 1].focus()
-					formElements[index + 1].select()
-				} else if (key === 'ArrowUp') {
-					formElements[index - 1].focus()
-					formElements[index - 1].select()
-				} else if (key === 'Enter') {
-					formElements[index + 1].focus()
-					formElements[index + 1].select()
-				}
-				break
-		}
-	}
 </script>
 
 <style scoped>