js
复制代码
// 单次校验
column: [
{
label: "标题",
prop: "字段名", //对应数据库
type: "input", //类型:input、select、number...
span: 12, // 占位
// rules:校验规则,如果不生效 就用searchRules
rules: [{
required: true, // 是否必填
message: "错误提示",
trigger: "blur" //触发类型 blur失焦、change选择、click点击...
}],
// searchRules:校验规则,如果不生效 就用rules
searchRules: [
{
max: 50,
message: "最多输入50个字符",
},
],
},
]
// 多次校验 {一个{}代表一个校验规则,按顺序执行}
rules: [
{ required:true, message:"",trigger:"blur" },
{ required:false, message:"",trigger:"click"}
]
js
复制代码
// 正则等类型校验
column: [
{
label: "标题",
prop: "字段名", // 对应数据库
type: "input", // 类型:input、select、number...
span: 12, // 占位
// rules:校验规则,如果不生效 就用searchRules
rules: [
// 基本校验
{
type: 'string', // 输入类型
max: 50, // 最大字符长度50
required: true, // 是否必填
message: "错误提示",
trigger: "blur" //触发类型 blur失焦、change选择、click点击...
},
{
pattern: /^[+]{0,1}(\d+)$/, //正则校验 必须为正整数
message: "必须为正整数",
trigger: "blur" // 触发类型 blur失焦、change选择、click点击...
}
],
},
]
js
复制代码
// 插槽
// ref: 嵌入表单模块
// v-model: 绑定数据
// :option="name" 插入模块
<div v-show="div">
<avue-form ref="refForm" v-model="form" :option="data"></avue-form>
<el-divider></el-divider>
</div>
data() {
//通用校验规则
// rule 所在规则
// value 当前触发值
// callback 返回值
// checkRule 规则名称
// 注意生命周期 const、let、var
const checkRule=(rule,value,callback) => {
// 例:触发位于表单中,存在多行数据时
// 取得所在行数据
let rowIndex = rule.field.replace(/[^0-9]/ig,"");
// 例:通用判断是否为正整数
if(!/^[+]{0,1}(\d+)$/.test(value)) {
// 返回值设定
callback(new Error("当前值不是正整数!"));
return;
}
// 例:多个Input框进行值对比
// prop1(prop命名) = value 当前所在Input输入值
let prop1 = value;
// prop2(prop命名) 其他Input值获取 refForm 当前Input所在单元模块(对应开头)
let prop2 = this.refForm.prop2;
if(Number(prop1) < Number(prop2))
{
// 返回值设定
callback(new Error(" prop1 小于 prop2 "));
return;
}
}
return {
// 通用属性...
// 搜索项配置
column:[
// 调用公共方法
{
label: "标题",
prop: "prop1", //对应数据库的字段
type: "input", //类型:input、select、number...
span: 12, //占位
// rules:校验规则,如果不生效 就用searchRules
rules: [
// 基本规则
{
required: true, // 是否必填
message: "错误提示",
trigger: "blur"
},
// 自定义规则
{
validator:checkRule, // 调用通用校验规则,checkRule代码在上面
// message: "异常提示", // 在此处写提示后,通用规则返回值将不显示
trigger: "blur",// 触发类型 blur失焦、change选择、click点击...
}
],
// searchRules:校验规则,如果不生效 就用rules
searchRules: [
// 基本规则
{
required: true, // 是否必填
message: "错误提示",
trigger: "blur"
},
// 自定义规则
{
validator:checkRule, // 调用通用校验规则,checkRule代码在上面
// message: "异常提示", // 在此处写提示后,通用规则返回值将不显示
trigger: "blur",// 触发类型 blur失焦、change选择、click点击...
}
],
},
{
label: "标题",
prop: "prop2", //对应数据库的字段
type: "input", //类型:input、select、number...
span: 12, //占位
// rules:校验规则,如果不生效 就用searchRules
rules: [
{
required: true, //是否必填
message: "错误提示",
trigger: "blur" // 触发类型 blur失焦、change选择、click点击...
},
{
validator:checkRule, // 调用通用校验规则
// message: "异常提示", // 在此处写提示后,通用规则返回值将不显示
trigger: "blur",// 触发类型 blur失焦、change选择、click点击...
}
],
// searchRules:校验规则,如果不生效 就用rules
searchRules: [
{
required: true, //是否必填
message: "错误提示",
trigger: "blur" // 触发类型 blur失焦、change选择、click点击...
},
{
validator:checkRule, // 调用通用校验规则
// message: "异常提示", // 在此处写提示后,通用规则返回值将不显示
trigger: "blur",// 触发类型 blur失焦、change选择、click点击...
}
],
},
// 私有方法
{
label: "标题",
prop: "prop1", // 对应数据库
type: "input", // 类型:input、select、number...
span: 12, // 占位
// rules:校验规则,如果不生效 就用searchRules
rules: [{
required: true, // 是否必填
// 私有方法使用 仅自己可用
validator:(rule,value,callback)=> {
// 方法编写...
// 可获取同一表单中其他Input的值 获取方法同上
// 返回值方法同上
},
trigger: "blur"
}],
// searchRules:校验规则,如果不生效 就用rules
searchRules: [
{
required: true, // 是否必填
// 私有方法使用 仅自己可用
validator:(rule,value,callback)=> {
// 方法编写...
// 可获取同一表单中其他Input的值 获取方法同上
// 返回值方法同上
},
trigger: "blur"
},
],
}
]
}
}