diff --git a/frontend/src/views/plan/planList/components/planPopup.vue b/frontend/src/views/plan/planList/components/planPopup.vue index 1945aec..4608d1d 100644 --- a/frontend/src/views/plan/planList/components/planPopup.vue +++ b/frontend/src/views/plan/planList/components/planPopup.vue @@ -41,17 +41,18 @@ /> - + - + @@ -173,7 +177,7 @@ > @@ -188,7 +192,7 @@ ([]) //指定模式下所有未 const boundPqDevList = ref([]) //根据检测计划id查询出所有已绑定的设备 const devData = ref([]) const isSelectDisabled = ref(false) +const canEdited = ref(true) const planType = ref(0) const subPlanBindStandardDev = ref([]) //哪些标准设备已经被子计划绑定 const activeNames = ref(['1']) @@ -611,7 +616,7 @@ const baseRules: Record> = { errorSysId: [{ required: true, message: '误差体系必选!', trigger: 'change' }], dataRule: [{ required: true, message: '数据处理原则必选!', trigger: 'change' }], standardDevIds: [{ required: true, message: '标准设备必选!', trigger: 'change' }], - testItems: [{ required: true, message: '测试项必选!', trigger: 'change' }], + testItems: [{ required: true, message: '检测项必选!', trigger: 'change' }], 'testConfig.maxTime': [{ required: true, message: '检测最大次数必填!', trigger: 'blur' }], 'testConfig.waveRecord': [{ required: true, message: '录波数据有效组数必填!', trigger: 'blur' }], 'testConfig.realTime': [{ required: true, message: '实时数据有效组数必填!', trigger: 'blur' }], @@ -721,6 +726,7 @@ const save = () => { // 打开弹窗,可能是新增,也可能是编辑 const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan: number) => { + canEdited.value = true unboundPqDevList.value = [] boundPqDevList.value = [] //处理异步调用 @@ -834,6 +840,9 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan: user_Result: any if (mode.value === '比对式') { + if (data.children && data.children.length > 0) { + canEdited.value = false + } if (data.importFlag === 1 || (data.testState !== 0 && plan === 0)) { allDisabled.value = true formContent.leader = data.leader @@ -932,6 +941,14 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan: if (planType.value === 0) { unboundPqDevList.value = unboundData as Device.ResPqDev[] boundPqDevList.value = boundData as Device.ResPqDev[] + if (data.children && data.children.length > 0) { + // 子计划已选成员不可移除 + const childrenMembers = [...new Set(data.children.map((item: any) => item.members))] + memberData.value = user_Result.data.map((user: any) => ({ + ...user, + disabled: childrenMembers.includes(user.id) || formContent.leader === user.id + })) + } } else if (planType.value === 1) { unboundPqDevList.value = boundData.filter((i: any) => !i.boundPlanName) as Device.ResPqDev[] memberData.value = user_Result.data @@ -955,11 +972,14 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan: pqToArray() //将对象转为数组 - //比对式测试项下拉框 + //比对式检测项下拉框 if (mode.value == '比对式') { - // 如果是编辑模式且已有误差体系ID,则加载对应的测试项 + // 如果是编辑模式且已有误差体系ID,则加载对应的检测项 if (formContent.errorSysId) { await loadTestItemsForErrorSys(formContent.errorSysId) + if (data.testItems) { + formContent.testItems = data.testItems + } } } @@ -994,11 +1014,19 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan: dialogVisible.value = true } +// 检测项选择变化时的处理函数 +const handleTestItemChange = () => { + if (formContent.testItems.length > 0) { + const hasShanBian = secondLevelOptions + .filter(option => formContent.testItems.includes(option.value)) + .find(option => option.label === '闪变') + if (hasShanBian) { + ElMessage.warning('闪变耗时较长,不推荐批量被检设备在检测过程中采集该指标') + } + } +} // 误差体系选择变化时的处理函数 const handleErrorSysChange = async (value: string) => { - // 清空测试项选择 - formContent.testItems = [] - // 如果是比对式模式且选择了误差体系 if (mode.value === '比对式' && value) { try { @@ -1015,18 +1043,21 @@ const handleErrorSysChange = async (value: string) => { }) }) } + formContent.testItems = secondLevelOptions.map(option => option.value) } catch (error) { - console.error('获取测试项失败:', error) + formContent.testItems = [] + console.error('获取检测项失败:', error) // 发生错误时清空选项 secondLevelOptions.length = 0 } } else { - // 如果没有选择误差体系,清空测试项选项 + formContent.testItems = [] + // 如果没有选择误差体系,清空检测项选项 secondLevelOptions.length = 0 } } -// 根据误差体系ID加载测试项(用于初始化) +// 根据误差体系ID加载检测项(用于初始化) const loadTestItemsForErrorSys = async (errorSysId: string) => { if (!errorSysId) return @@ -1043,9 +1074,10 @@ const loadTestItemsForErrorSys = async (errorSysId: string) => { label: (res.data as Record)[key] }) }) + formContent.testItems = secondLevelOptions.map(option => option.value) } } catch (error) { - console.error('获取测试项失败:', error) + console.error('获取检测项失败:', error) secondLevelOptions.length = 0 } } diff --git a/frontend/src/views/plan/planList/index.vue b/frontend/src/views/plan/planList/index.vue index 313ce1e..7001916 100644 --- a/frontend/src/views/plan/planList/index.vue +++ b/frontend/src/views/plan/planList/index.vue @@ -27,9 +27,9 @@ > 导出 - + + 新增 + 导入检测计划 - - 新增 - []>([ }, { prop: 'testItemNameStr', - label: '测试项', + label: '检测项', minWidth: 300, isShow: modeStore.currentMode == '比对式' },