自动化设置校验
parent
5c8ef01682
commit
866a91e3cd
|
|
@ -220,12 +220,13 @@
|
||||||
// 优化:抽离魔法值常量
|
// 优化:抽离魔法值常量
|
||||||
import UniPopup from "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.vue"; // 引入弹窗组件
|
import UniPopup from "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.vue"; // 引入弹窗组件
|
||||||
import mqttUtil from '@/utils/mqtt';
|
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 store from "../../../store";
|
||||||
import {addRemark, updateRemark} from "../../../api/system/assets/remark";
|
import {addRemark, updateRemark} from "../../../api/system/assets/remark";
|
||||||
import {generateUniqueId} from "../../../utils/agri";
|
import {generateUniqueId} from "../../../utils/agri";
|
||||||
import UniSection from "../../../components/uni-section/uni-section.vue";
|
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 UniFormsItem from "../../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
|
||||||
|
import { checkTimeConflict } from "@/utils/agri"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
dicts: ['sys_data_map'],
|
dicts: ['sys_data_map'],
|
||||||
|
|
@ -810,18 +811,34 @@ export default {
|
||||||
tip: '温度控制未设置,请设置后重新尝试!',
|
tip: '温度控制未设置,请设置后重新尝试!',
|
||||||
validate: (rollerParam, term) => !(term && term.length > 0)
|
validate: (rollerParam, term) => !(term && term.length > 0)
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
tip: '温度控制设置条数超过上限!请调整后重试',
|
||||||
|
validate: (rollerParam, term) => term && term.length > 5
|
||||||
|
},
|
||||||
{
|
{
|
||||||
tip: '温度控制运行时间填写不完整,请检查填写后重新尝试!',
|
tip: '温度控制运行时间填写不完整,请检查填写后重新尝试!',
|
||||||
validate: (rollerParam, term) => term.filter(item => !((item.startTime && item.startTime!=='请选择时间') ||
|
validate: (rollerParam, term) => term.some(item => !(item.startTime && item.startTime!=='请选择时间' &&
|
||||||
(item.endTime && item.endTime !== '请选择时间')))
|
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: '温度控制适宜温度填写不完整,请填写后重新尝试!',
|
tip: '温度控制适宜温度填写不完整,请填写后重新尝试!',
|
||||||
validate: (rollerParam, term) => term.filter(item => !(item.temp && item.temp!=='选择'))
|
validate: (rollerParam, term) => term.some(item => !(item.temp && item.temp!=='选择'))
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
tip: '温度控制风口开合大小填写不完整,请填写后重新尝试!',
|
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 校验、后端保存
|
// todo 校验、后端保存
|
||||||
}
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -233,4 +233,36 @@ export function generateUniqueId() {
|
||||||
const timestamp = Date.now();
|
const timestamp = Date.now();
|
||||||
const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
|
const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
|
||||||
return (timestamp + random).toString(); // 转成字符串,避免数字精度丢失
|
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