export const getParamsByObj = (params, paramsConfig, obj) => { if (paramsConfig !== undefined && paramsConfig.length > 0 && obj !== null) { for (let i in paramsConfig) { let paramsItem = paramsConfig[i]; if (paramsItem.value !== undefined) { params[paramsItem.label] = paramsItem.value; } if (obj && paramsItem.field !== undefined) { params[paramsItem.label] = obj[paramsItem.field] === undefined ? "" : obj[paramsItem.field]; params[paramsItem.label] = paramsItem.type === "Array" ? [params[paramsItem.label]] : params[paramsItem.label]; } } } return params; }; export const getLabelByOptions = (val, options) => { let label = ""; let valOpt = {}; for (let i in options) { if (options[i].value === val) { valOpt = options[i]; break; } } if (valOpt.class || valOpt.style) { return `
${valOpt.label}
`; } return valOpt.label; }; export const getFormObj = (formConfig) => { let data = {}; formConfig.forEach((item) => { if (item.field) { data[item.field] = item.value; } }); return data; }; export const setFormObj = (formConfig, data) => { formConfig.forEach((item) => { if (item.field && data[item.field] !== undefined) { item.value = data[item.field]; } }); }; export const clearFormObj = (formConfig) => { formConfig.forEach((item) => { if (item.field) { item.value = Array.isArray(item.value) ? [] : !isNaN(item.value) ? null : ""; } }); }; export const visibleFormItem = (itemshow, formObj = {}) => { let flag = true; if (Object.prototype.toString.call(itemshow) === "[object Boolean]") { return itemshow; } let mathArr = [ "+", "-", "/", "*", ">", ">=", "<", "<=", "==", "===", "!==", "||", "&&", ]; if (itemshow && Object.keys(formObj).length > 0) { let expression = itemshow .replace(/\[%=/g, "") .replace(/%\]/g, "") .replace(/'/g, ""); let cs = expression.split(/(\/|%|\*|\+|-|&&|\|\||>|<|>=|<=|\(|\)|===|!==)/); for (let idx in cs) { let csItem = cs[idx]; // 右边为'' if (formObj[csItem] === "") { cs[idx] = "'" + formObj[csItem] + "'"; // 左边可转为数值计算 } else if ( formObj[csItem] !== undefined && Object.prototype.toString.call(formObj[csItem]) === "object String" ) { cs[idx] = formObj[csItem]; } else if ( formObj[csItem] !== undefined && Object.prototype.toString.call(formObj[csItem]) === "object Number" ) { cs[idx] = "'" + formObj[csItem] + "'"; // 左边字段不存在 右边字段值字符串化 } else if (!mathArr.includes(csItem) && formObj[csItem] === undefined) { cs[idx] = "'" + csItem + "'"; // 计算公式 } else if (mathArr.includes(csItem)) { cs[idx] = csItem; } else { // 左边 在obj中存在 字符串化 cs[idx] = "'" + formObj[csItem] + "'"; } } cs = cs.join(""); flag = flag && window.eval(cs); } return flag; }; export const validateItem = (item, itemValue) => { let validate = item.validate; let noErr = true; let message = ""; switch (validate) { case "required": { // ADD input type is number is empty is null And dropdowntable,userDropdowntable,dropdownbox is empty is [] if (itemValue === null || itemValue.length === 0) { noErr = false; message = "请输入内容"; } break; } case "": { // ADD input type is number is empty is null And dropdowntable,userDropdowntable,dropdownbox is empty is [] if (itemValue === null || itemValue.length === 0) { noErr = false; message = "请输入内容"; } break; } case "email": { const regEmail = /^[a-zA-Z0-9_-]+([._\\-]*[a-zA-Z0-9_-])*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; if (regEmail.test(itemValue) === false) { noErr = false; message = "请输入正确邮箱"; } break; } case "chinese": { const regChinese = /^[^\u4e00-\u9fa5]{0,}$/; if (regChinese.test(itemValue) === false) { noErr = false; message = "请输入中文字符"; } break; } case "maxDecimals4": { // let regDecimals2 = /^\d+(\.\d{2})?$/ const regDecimals4 = /^\d+(?:\.\d{1,4})?$/; if ( itemValue !== null && itemValue !== "" && regDecimals4.test(itemValue) === false ) { noErr = false; message = "最多四位小数"; } break; } case "english": { // 添加英文支持- const regEnglish = /^[a-zA-Z0-9_@-]{1,}$/; if (regEnglish.test(itemValue) === false) { noErr = false; message = "请输入英文字符"; } break; } case "datetime": { const regDatetime = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/; if (regDatetime.test(itemValue) === false) { noErr = false; message = "请输入正确时间"; } break; } case "date": { const regDate = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/; if (regDate.test(itemValue) === false) { noErr = false; message = "请输入正确日期"; } break; } case "time": { const regTime = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/; if (regTime.test(itemValue) === false) { noErr = false; message = "请输入正确时间"; } break; } case "interger": { const regInterger = /^[1-9]\d*$/; if (regInterger.test(itemValue) === false) { noErr = false; message = "请输入整数"; } break; } case "positiveNumber": { // 包括0的正数 if (itemValue < 0) { noErr = false; message = "请输入非负数"; } break; } case "gt0Number": { // 不包括0的正数 if (itemValue <= 0) { noErr = false; message = "请输入非零正数"; } break; } case "telephone": { const telephoneNumber = /^1(3|4|5|6|7|8|9)\d{9}$/; if (telephoneNumber.test(itemValue) === false) { noErr = false; message = "请输入正确手机号码"; } break; } case "pwdstrong": { const forceRegex = new RegExp("(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{6,20}"); if (forceRegex.test(itemValue) === false) { noErr = false; message = "请输入符合格式的密码"; } break; } default: noErr = true; } if (!noErr) { item.errorMessage = message; } else { item.errorMessage = ""; } }; export const validataForm = (formConfig) => { if (formConfig) { let formHasErr = false; formConfig.forEach((item) => { if (item.validate !== undefined) { validateItem(item, item.value); } if (item.errorMessage) { formHasErr = true; } }); return formHasErr; } }; export function isEmpty (val) { if (val === null || val === "" || val === undefined) { return true; } return false; } export function calcRouteParams (obj) { if (obj && JSON.stringify(obj) !== '{}') { let str = '?' for (let key in obj) { str += key + '=' + obj[key] + '&' } return str.slice(0, -1) } return '' }