自动化设置校验

feasure
lld 2026-02-27 17:21:32 +08:00
parent 5c8ef01682
commit 866a91e3cd
2 changed files with 57 additions and 7 deletions

View File

@ -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
}
},
}
};

View File

@ -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)}` : '无冲突');*/