huminmin
3 天以前 9cecea613e29bb152bb6ea69a3cca94aa537c621
src/views/productionManagement/processRoute/processRouteItem/index.vue
@@ -1166,15 +1166,15 @@
    row.processId = value || "";
    syncProcessOperationFields(row);
    
    // 同一层级只能选一样的工序
    // 检查同一层级是否已经有其他不同的工序被选中
    const siblings = findSiblings(bomDataValue.value.dataList, row.tempId);
    if (siblings && value) {
      siblings.forEach(sibling => {
        if (sibling.tempId !== row.tempId) {
          sibling.processId = value;
          syncProcessOperationFields(sibling);
        }
      const hasDifferentProcess = siblings.some(sibling => {
        return sibling.tempId !== row.tempId && sibling.processId && sibling.processId !== value;
      });
      if (hasDifferentProcess) {
        ElMessage.warning("同一层级已存在不同的工序,请先统一工序后再进行修改");
      }
    }
  };
@@ -1391,10 +1391,35 @@
      }
    };
    // 校验同一层级的工序是否一致
    const validateProcessConsistency = (items) => {
      if (!items || items.length === 0) return;
      // 检查当前层级
      const processes = items.filter(item => item.processId).map(item => item.processId);
      if (processes.length > 1) {
        const uniqueProcesses = [...new Set(processes)];
        if (uniqueProcesses.length > 1) {
          ElMessage.error("同一层级的工序必须一致");
          isValid = false;
          return;
        }
      }
      // 递归检查子级
      items.forEach(item => {
        if (item.children && item.children.length > 0) {
          validateProcessConsistency(item.children);
        }
      });
    };
    bomDataValue.value.dataList.forEach(item => {
      validateItem(item, true);
    });
    validateProcessConsistency(bomDataValue.value.dataList);
    return isValid;
  };