在项目做表格编辑的时候,选择弹框里面的类型,会出现大于、等于、小于三种情况,在点击确定的时候,不能让输入的分数大于分-max,并且输入的类型数值不能有交集的情况
思路:两个区间,两者的最小值中的最大值 <= 两者最大值的最小值时 就存在交集
有了思路剩下的就是代码实现的过程,这个时候可不得不想到gpt这个伟大的发明啊,下面贴图gpt给我的代码实现过程,嘻嘻嘻😁
下面是我根据项目改的代码,废话不多说,直接上代码!
// 对比是否有交集 没有交集返回true
function checkintersection(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (i !== j) {
if (arr[i].min < arr[j].max && arr[i].max > arr[j].min) {
return '区间规则第' + (i + 1) + '行和' + (j + 1) + '行数值有冲突' // 有交集
}
}
}
}
}
//checkObj.value.intervalList 为区间规则的表格 numberValue:输入框的起初值 endNumberValue:输入框的末值
const submitcheckForm = (formEl) => {
formEl.validate((valid, fields) => {
if (valid) {
// 先判断为区间类型时
if (checkObj.value.Type === 2) {
const checklist = []
checkObj.value.intervalList.forEach((item) => {
//判断表格类型为大于
if (item.intervalType === 1) {
// 当为大于时
checklist.push({ min: item.numberValue, max: checkObj.value.maxScore })
} else if (item.intervalType === 2) {
// 当为区间时
checklist.push({ min: item.numberValue, max: item.endNumberValue })
} else {
// 当为小于时
checklist.push({ min: 0, max: item.numberValue })
}
})
let checkintersectionFlag = checkintersection(list)
if (checkintersectionFlag) {
ElMessage.error(checkintersectionFlag)
return false
}
}
} else {
console.log('error submit!', fields)
}
})
}