| | |
| | | }; |
| | | |
| | | const handleProcessChange = (row: any, value: any) => { |
| | | if (value) { |
| | | const siblings = findSiblings(dataValue.dataList, row.tempId); |
| | | if (siblings) { |
| | | const isDuplicate = siblings.some( |
| | | s => s.tempId !== row.tempId && s.processId === value |
| | | ); |
| | | if (isDuplicate) { |
| | | const option = getProcessOptionById(value); |
| | | const processName = option?.name || "该工序"; |
| | | ElMessage.warning(`同一层级下不能选择重复的消耗工序:${processName}`); |
| | | row.processId = ""; |
| | | syncProcessOperationFields(row); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | row.processId = value || ""; |
| | | syncProcessOperationFields(row); |
| | | |
| | | // 同一层级只能选一样的工序 |
| | | const siblings = findSiblings(dataValue.dataList, row.tempId); |
| | | if (siblings && value) { |
| | | siblings.forEach(sibling => { |
| | | if (sibling.tempId !== row.tempId) { |
| | | sibling.processId = value; |
| | | syncProcessOperationFields(sibling); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | const handleUnitQuantityChange = () => { |
| | |
| | | const validateAll = () => { |
| | | let isValid = true; |
| | | |
| | | // 校验一组兄弟节点的工序是否唯一 |
| | | // 校验一组兄弟节点的工序是否都相同 |
| | | const checkProcessUniqueness = (items: any[]) => { |
| | | if (!items || items.length === 0 || !isValid) return; |
| | | |
| | | const processIds = new Set(); |
| | | for (const item of items) { |
| | | if (item.processId) { |
| | | if (processIds.has(item.processId)) { |
| | | const option = getProcessOptionById(item.processId); |
| | | const processName = option?.name || item.processName || "未知工序"; |
| | | // 获取第一个非空的工序ID作为参考 |
| | | const firstProcessId = items.find(item => item.processId)?.processId; |
| | | |
| | | // 如果有工序ID,检查所有项是否都使用相同的工序 |
| | | if (firstProcessId) { |
| | | for (const item of items) { |
| | | if (item.processId && item.processId !== firstProcessId) { |
| | | const option1 = getProcessOptionById(firstProcessId); |
| | | const option2 = getProcessOptionById(item.processId); |
| | | const processName1 = option1?.name || "未知工序"; |
| | | const processName2 = option2?.name || "未知工序"; |
| | | ElMessage.error( |
| | | `产品「${item.productName}」的消耗工序「${processName}」在当前层级已存在,请勿重复设置` |
| | | `当前层级下工序不一致,请使用相同的工序。存在「${processName1}」和「${processName2}」` |
| | | ); |
| | | isValid = false; |
| | | return; |
| | | } |
| | | processIds.add(item.processId); |
| | | } |
| | | } |
| | | |
| | |
| | | await fetchProcessOptions(); |
| | | await fetchData(); |
| | | }); |
| | | </script> |
| | | </script> |