update
init
This commit is contained in:
@@ -0,0 +1,279 @@
|
||||
import { dateUtil } from '/@/utils/dateUtil';
|
||||
import { duplicateCheck } from '/@/views/system/user/user.api';
|
||||
import { Rule } from '/@/components/Form';
|
||||
import { message } from 'ant-design-vue';
|
||||
|
||||
export const rules = {
|
||||
rule(type, required): Rule[] {
|
||||
if (type === 'email') {
|
||||
return this.email(required);
|
||||
}
|
||||
if (type === 'phone') {
|
||||
return this.phone(required);
|
||||
}
|
||||
if (type === 'idcard') {
|
||||
return this.idcard(required);
|
||||
}
|
||||
return [];
|
||||
},
|
||||
idcard(required): Rule[] {
|
||||
return [
|
||||
{
|
||||
required: required ? required : false,
|
||||
validator: async (_rule, value) => {
|
||||
if (required == true && !value) {
|
||||
return Promise.reject('请输入身份证号!');
|
||||
}
|
||||
if (value && !new RegExp(/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/).test(value)) {
|
||||
return Promise.reject('请输入正确的身份证号!');
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
trigger: 'change',
|
||||
},
|
||||
];
|
||||
},
|
||||
email(required): Rule[] {
|
||||
return [
|
||||
{
|
||||
required: required ? required : false,
|
||||
validator: async (_rule, value) => {
|
||||
if (required == true && !value) {
|
||||
return Promise.reject('请输入邮箱!');
|
||||
}
|
||||
if (
|
||||
value &&
|
||||
!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)
|
||||
) {
|
||||
return Promise.reject('请输入正确邮箱格式!');
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
trigger: 'change',
|
||||
},
|
||||
];
|
||||
},
|
||||
phone(required): Rule[] {
|
||||
return [
|
||||
{
|
||||
required: required,
|
||||
validator: async (_, value) => {
|
||||
if (!value) {
|
||||
return required ? Promise.reject('请输入手机号码!') : Promise.resolve();
|
||||
}
|
||||
if (!/^1[3456789]\d{9}$/.test(value)) {
|
||||
return Promise.reject('手机号码格式有误');
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
trigger: 'change',
|
||||
},
|
||||
];
|
||||
},
|
||||
telPhone(required: boolean, tip?: string = '电话号码格式有误'): Rule[] {
|
||||
return [
|
||||
{
|
||||
required: required,
|
||||
validator: async (_, value) => {
|
||||
if (!value) {
|
||||
return required ? Promise.reject('请输入电话号码!') : Promise.resolve();
|
||||
}
|
||||
if (!/^(0\d{2,3}-\d{7,8})$|^(0\d{2,3}\d{7,8})|^(\(\d{3,4}\)-\d{7,8})$|^(\(\d{3,4}\)\d{7,8})$/.test(value)) {
|
||||
return Promise.reject(tip);
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
trigger: 'change',
|
||||
},
|
||||
];
|
||||
},
|
||||
phoneAndTelPhone(required: boolean, tip?: string = '电话号码格式有误'): Rule[] {
|
||||
return [
|
||||
{
|
||||
required: required,
|
||||
validator: async (_, value) => {
|
||||
if (!value) {
|
||||
return required ? Promise.reject('请输入号码!') : Promise.resolve();
|
||||
}
|
||||
if (!/^(0\d{2,3}-\d{7,8})$|^(0\d{2,3}\d{7,8})|^(\(\d{3,4}\)-\d{7,8})$|^(\(\d{3,4}\)\d{7,8})$|^1[3456789]\d{9}$/.test(value)) {
|
||||
return Promise.reject(tip);
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
trigger: 'change',
|
||||
},
|
||||
];
|
||||
},
|
||||
// 多个电话号码验证
|
||||
multiplePhone(required: boolean): Rule[] {
|
||||
return [
|
||||
{
|
||||
required: required,
|
||||
validator: async (_, value) => {
|
||||
if (!value) {
|
||||
return required ? Promise.reject('请输入号码!') : Promise.resolve();
|
||||
}
|
||||
const phoneRegex = /^(?:1[3-9]\d{9}(?:,|$))*$/;
|
||||
if (!phoneRegex.test(value)) {
|
||||
return Promise.reject('请检查格式');
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
trigger: 'change',
|
||||
},
|
||||
];
|
||||
},
|
||||
startTime(endTime, required): Rule[] {
|
||||
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): Rule[] {
|
||||
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',
|
||||
},
|
||||
];
|
||||
},
|
||||
confirmPassword(values, required): Rule[] {
|
||||
return [
|
||||
{
|
||||
required: required ? required : false,
|
||||
validator: (_, value) => {
|
||||
if (!value) {
|
||||
return Promise.reject('密码不能为空');
|
||||
}
|
||||
if (value !== values.password) {
|
||||
return Promise.reject('两次输入的密码不一致!');
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
duplicateCheckRule(tableName, fieldName, model, schema, required?): Rule[] {
|
||||
return [
|
||||
{
|
||||
validator: (_, value) => {
|
||||
if (!value && required) {
|
||||
return Promise.reject(`请输入${schema.label}`);
|
||||
}
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
duplicateCheck({
|
||||
tableName,
|
||||
fieldName,
|
||||
fieldVal: value,
|
||||
dataId: model.id,
|
||||
})
|
||||
.then((res) => {
|
||||
res.success ? resolve() : reject(res.message || '校验失败');
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err.message || '验证失败');
|
||||
});
|
||||
});
|
||||
},
|
||||
trigger: 'blur',
|
||||
},
|
||||
];
|
||||
},
|
||||
duplicateCheckRuleAndDelFlag(tableName, fieldName, delFlag, model, schema, required?): Rule[] {
|
||||
return [
|
||||
{
|
||||
validator: (_, value) => {
|
||||
if (!value && required) {
|
||||
return Promise.reject(`请输入${schema.label}`);
|
||||
}
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
duplicateCheck({
|
||||
tableName,
|
||||
fieldName,
|
||||
delFlag,
|
||||
fieldVal: value,
|
||||
dataId: model.id,
|
||||
})
|
||||
.then((res) => {
|
||||
res.success ? resolve() : reject(res.message || '校验失败');
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err.message || '验证失败');
|
||||
});
|
||||
});
|
||||
},
|
||||
trigger: 'blur',
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
//模拟实测中数据验证
|
||||
//数字大于0
|
||||
numberGreaterThanZero(value: number) {
|
||||
const patternNumber = /^\d*(\.\d+)?$/;
|
||||
if (!patternNumber.test(value) || value < 0) {
|
||||
message.warn('请输入大于0的数字');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
//数字大于0的整数
|
||||
numberGreaterThanZeroInt(value: number) {
|
||||
const patternNumber = /^\d+$/;
|
||||
if (!patternNumber.test(value) || value < 0) {
|
||||
message.warn('请输入大于0的整数');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
};
|
||||
|
||||
//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 {
|
||||
const 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: 代码生成-原生表单用
|
||||
Reference in New Issue
Block a user