自动化设置校验
parent
5c8ef01682
commit
866a91e3cd
|
|
@ -220,12 +220,13 @@
|
|||
// 优化:抽离魔法值常量
|
||||
import UniPopup from "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.vue"; // 引入弹窗组件
|
||||
import mqttUtil from '@/utils/mqtt';
|
||||
import {addLimit, getAgriByImei, updateLimit} from "../../../api/system/assets/limit";
|
||||
import {addLimit, updateLimit} from "../../../api/system/assets/limit";
|
||||
import store from "../../../store";
|
||||
import {addRemark, updateRemark} from "../../../api/system/assets/remark";
|
||||
import {generateUniqueId} from "../../../utils/agri";
|
||||
import UniSection from "../../../components/uni-section/uni-section.vue";
|
||||
import UniFormsItem from "../../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
|
||||
import { checkTimeConflict } from "@/utils/agri"
|
||||
|
||||
export default {
|
||||
dicts: ['sys_data_map'],
|
||||
|
|
@ -810,18 +811,34 @@ export default {
|
|||
tip: '温度控制未设置,请设置后重新尝试!',
|
||||
validate: (rollerParam, term) => !(term && term.length > 0)
|
||||
},
|
||||
{
|
||||
tip: '温度控制设置条数超过上限!请调整后重试',
|
||||
validate: (rollerParam, term) => term && term.length > 5
|
||||
},
|
||||
{
|
||||
tip: '温度控制运行时间填写不完整,请检查填写后重新尝试!',
|
||||
validate: (rollerParam, term) => term.filter(item => !((item.startTime && item.startTime!=='请选择时间') ||
|
||||
(item.endTime && item.endTime !== '请选择时间')))
|
||||
validate: (rollerParam, term) => term.some(item => !(item.startTime && item.startTime!=='请选择时间' &&
|
||||
item.endTime && item.endTime !== '请选择时间'))
|
||||
},
|
||||
{
|
||||
tip: '温度控制运行时间起不能大于止,请检查填写后重新尝试!',
|
||||
validate: (rollerParam, term) => term.some(item => !(item.startTime > item.endTime))
|
||||
},
|
||||
{
|
||||
tip: '温度控制运行时间存在冲突,请检查填写后重新尝试!',
|
||||
validate: (rollerParam, term) => {
|
||||
// 调用时间冲突判断函数
|
||||
const { isConflict } = checkTimeConflict(term);
|
||||
return isConflict; // 有冲突 → 返回true(校验失败)
|
||||
}
|
||||
},
|
||||
{
|
||||
tip: '温度控制适宜温度填写不完整,请填写后重新尝试!',
|
||||
validate: (rollerParam, term) => term.filter(item => !(item.temp && item.temp!=='选择'))
|
||||
validate: (rollerParam, term) => term.some(item => !(item.temp && item.temp!=='选择'))
|
||||
},
|
||||
{
|
||||
tip: '温度控制风口开合大小填写不完整,请填写后重新尝试!',
|
||||
validate: (rollerParam, term) => term.filter(item => !(item.vent && item.vent!=='选择'))
|
||||
validate: (rollerParam, term) => term.some(item => !(item.vent && item.vent!=='选择'))
|
||||
}
|
||||
];
|
||||
|
||||
|
|
@ -845,7 +862,8 @@ export default {
|
|||
}
|
||||
|
||||
// todo 校验、后端保存
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -234,3 +234,35 @@ export function generateUniqueId() {
|
|||
const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
|
||||
return (timestamp + random).toString(); // 转成字符串,避免数字精度丢失
|
||||
}
|
||||
|
||||
// 极简版:判断时间列表是否存在冲突(支持HH:mm/HH:mm:ss)
|
||||
const checkTimeConflict = list => {
|
||||
// 时间转分钟数的极简写法
|
||||
const toMin = t => {
|
||||
const [h, m] = t.split(':').map(Number);
|
||||
return h * 60 + (m || 0);
|
||||
};
|
||||
|
||||
// 过滤有效数据 + 双层循环判断冲突
|
||||
const valid = list.filter(i => i.startTime && i.endTime);
|
||||
for (let i = 0; i < valid.length; i++) {
|
||||
const [aS, aE] = [toMin(valid[i].startTime), toMin(valid[i].endTime)];
|
||||
for (let j = i + 1; j < valid.length; j++) {
|
||||
const [bS, bE] = [toMin(valid[j].startTime), toMin(valid[j].endTime)];
|
||||
if (!(aE <= bS || bE <= aS)) return { isConflict: true, conflict: [valid[i], valid[j]] };
|
||||
}
|
||||
}
|
||||
return { isConflict: false };
|
||||
};
|
||||
|
||||
// ===================== 测试用例 =====================
|
||||
/*
|
||||
const rollerList = [
|
||||
{ imei: '123', roller: 'jm1', startTime: '08:00', endTime: '12:00' },
|
||||
{ imei: '123', roller: 'jm1', startTime: '10:00', endTime: '14:00' },
|
||||
{ imei: '123', roller: 'jm1', startTime: '15:00', endTime: '18:00' }
|
||||
];
|
||||
|
||||
// 调用(一行搞定)
|
||||
const { isConflict, conflict } = checkTimeConflict(rollerList);
|
||||
console.log(isConflict ? `冲突:${JSON.stringify(conflict)}` : '无冲突');*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue