2022-06-10 10:44:44 +08:00
|
|
|
|
import { dateUtil } from '/@/utils/dateUtil';
|
2023-12-17 11:31:14 +08:00
|
|
|
|
import { duplicateCheck } from '/@/views/system/user/user.api';
|
2022-03-10 09:47:29 +08:00
|
|
|
|
|
|
|
|
|
export const rules = {
|
|
|
|
|
rule(type, required) {
|
|
|
|
|
if (type === 'email') {
|
|
|
|
|
return this.email(required);
|
|
|
|
|
}
|
|
|
|
|
if (type === 'phone') {
|
|
|
|
|
return this.phone(required);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
email(required) {
|
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
required: required ? required : false,
|
|
|
|
|
validator: async (_rule, value) => {
|
|
|
|
|
if (required == true && !value) {
|
|
|
|
|
return Promise.reject('请输入邮箱!');
|
|
|
|
|
}
|
2022-06-10 10:44:44 +08:00
|
|
|
|
if (
|
|
|
|
|
value &&
|
2022-09-22 14:05:12 +08:00
|
|
|
|
!new RegExp(
|
|
|
|
|
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
|
|
|
).test(value)
|
2022-06-10 10:44:44 +08:00
|
|
|
|
) {
|
2022-03-10 09:47:29 +08:00
|
|
|
|
return Promise.reject('请输入正确邮箱格式!');
|
|
|
|
|
}
|
|
|
|
|
return Promise.resolve();
|
|
|
|
|
},
|
|
|
|
|
trigger: 'change',
|
|
|
|
|
},
|
|
|
|
|
] as ArrayRule;
|
|
|
|
|
},
|
|
|
|
|
phone(required) {
|
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
required: required,
|
|
|
|
|
validator: async (_, value) => {
|
|
|
|
|
if (required && !value) {
|
|
|
|
|
return Promise.reject('请输入手机号码1!');
|
|
|
|
|
}
|
2023-03-05 11:41:15 +08:00
|
|
|
|
if (!/^1[3456789]\d{9}$/.test(value)) {
|
2022-03-10 09:47:29 +08:00
|
|
|
|
return Promise.reject('手机号码格式有误');
|
|
|
|
|
}
|
|
|
|
|
return Promise.resolve();
|
|
|
|
|
},
|
|
|
|
|
trigger: 'change',
|
|
|
|
|
},
|
2022-06-10 10:44:44 +08:00
|
|
|
|
];
|
2022-03-10 09:47:29 +08:00
|
|
|
|
},
|
|
|
|
|
startTime(endTime, required) {
|
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
required: required ? required : false,
|
|
|
|
|
validator: (_, value) => {
|
|
|
|
|
if (required && !value) {
|
|
|
|
|
return Promise.reject('请选择开始时间');
|
|
|
|
|
}
|
|
|
|
|
if (endTime && value && dateUtil(endTime).isBefore(value)) {
|
|
|
|
|
return Promise.reject('开始时间需小于结束时间');
|
|
|
|
|
}
|
|
|
|
|
return Promise.resolve();
|
|
|
|
|
},
|
|
|
|
|
trigger: 'change',
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
},
|
|
|
|
|
endTime(startTime, required) {
|
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
required: required ? required : false,
|
|
|
|
|
validator: (_, value) => {
|
|
|
|
|
if (required && !value) {
|
|
|
|
|
return Promise.reject('请选择结束时间');
|
|
|
|
|
}
|
|
|
|
|
if (startTime && value && dateUtil(value).isBefore(startTime)) {
|
|
|
|
|
return Promise.reject('结束时间需大于开始时间');
|
|
|
|
|
}
|
|
|
|
|
return Promise.resolve();
|
|
|
|
|
},
|
|
|
|
|
trigger: 'change',
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
},
|
2022-06-10 10:44:44 +08:00
|
|
|
|
confirmPassword(values, required) {
|
2022-03-10 09:47:29 +08:00
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
required: required ? required : false,
|
|
|
|
|
validator: (_, value) => {
|
|
|
|
|
if (!value) {
|
|
|
|
|
return Promise.reject('密码不能为空');
|
|
|
|
|
}
|
|
|
|
|
if (value !== values.password) {
|
|
|
|
|
return Promise.reject('两次输入的密码不一致!');
|
|
|
|
|
}
|
|
|
|
|
return Promise.resolve();
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
},
|
2022-06-21 17:53:49 +08:00
|
|
|
|
duplicateCheckRule(tableName, fieldName, model, schema, required?) {
|
2022-03-10 09:47:29 +08:00
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
validator: (_, value) => {
|
2022-06-21 17:53:49 +08:00
|
|
|
|
if (!value && required) {
|
2022-03-10 09:47:29 +08:00
|
|
|
|
return Promise.reject(`请输入${schema.label}`);
|
|
|
|
|
}
|
|
|
|
|
return new Promise<void>((resolve, reject) => {
|
2023-12-17 11:31:14 +08:00
|
|
|
|
duplicateCheck({
|
2022-03-10 09:47:29 +08:00
|
|
|
|
tableName,
|
|
|
|
|
fieldName,
|
|
|
|
|
fieldVal: value,
|
|
|
|
|
dataId: model.id,
|
|
|
|
|
})
|
|
|
|
|
.then((res) => {
|
|
|
|
|
res.success ? resolve() : reject(res.message || '校验失败');
|
2022-06-10 10:44:44 +08:00
|
|
|
|
})
|
|
|
|
|
.catch((err) => {
|
|
|
|
|
reject(err.message || '验证失败');
|
|
|
|
|
});
|
2022-03-10 09:47:29 +08:00
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
] as ArrayRule;
|
|
|
|
|
},
|
|
|
|
|
};
|
2022-06-21 17:53:49 +08:00
|
|
|
|
|
|
|
|
|
//update-begin-author:taoyan date:2022-6-16 for: 代码生成-原生表单用
|
|
|
|
|
/**
|
|
|
|
|
* 唯一校验函数,给原生<a-form>使用,vben的表单校验建议使用上述rules
|
|
|
|
|
* @param tableName 表名
|
|
|
|
|
* @param fieldName 字段名
|
|
|
|
|
* @param fieldVal 字段值
|
|
|
|
|
* @param dataId 数据ID
|
|
|
|
|
*/
|
|
|
|
|
export async function duplicateValidate(tableName, fieldName, fieldVal, dataId) {
|
|
|
|
|
try {
|
|
|
|
|
let params = {
|
|
|
|
|
tableName,
|
|
|
|
|
fieldName,
|
|
|
|
|
fieldVal,
|
|
|
|
|
dataId: dataId,
|
|
|
|
|
};
|
|
|
|
|
const res = await duplicateCheck(params);
|
|
|
|
|
if (res.success) {
|
|
|
|
|
return Promise.resolve();
|
|
|
|
|
} else {
|
|
|
|
|
return Promise.reject(res.message || '校验失败');
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return Promise.reject('校验失败,可能是断网等问题导致的校验失败');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//update-end-author:taoyan date:2022-6-16 for: 代码生成-原生表单用
|