Commit 38f67391 authored by caobo's avatar caobo

新增表单验证格式

parent 9439301b
...@@ -186,7 +186,6 @@ export default class AddTask extends Vue { ...@@ -186,7 +186,6 @@ export default class AddTask extends Vue {
const form = this.$data.addForm; const form = this.$data.addForm;
this.$refs.ruleForm.validate((valid: any) => { this.$refs.ruleForm.validate((valid: any) => {
if (valid) { if (valid) {
// console.log('验证通过了');
// 提交 // 提交
// this.createPermission(form).then((data: any) => { // this.createPermission(form).then((data: any) => {
// this.closeDialog(); // this.closeDialog();
......
...@@ -38,11 +38,10 @@ ...@@ -38,11 +38,10 @@
class="demo-ruleForm" class="demo-ruleForm"
> >
<el-form-item label="用户组名称:" name="dsgroup" :label-width="formLabelWidth" prop='dsgroup'> <el-form-item label="用户组名称:" name="dsgroup" :label-width="formLabelWidth" prop='dsgroup'>
<el-input v-model="filterForm.dspgroup" <el-input v-model="filterForm.dsgroup"
style='width:80%; margin-left:10px' style='width:80%; margin-left:10px'
placeholder="请输入用户组名称(限20字)" placeholder="请输入用户组名称(限20字)"
name='dspgroup' />
clearable />
</el-form-item> </el-form-item>
<!-- 基础特征 --> <!-- 基础特征 -->
<div class="basic-feature"> <div class="basic-feature">
...@@ -53,28 +52,35 @@ ...@@ -53,28 +52,35 @@
<el-checkbox v-for="sex in sexes" :label="sex" :key="sex">{{ sex }}</el-checkbox> <el-checkbox v-for="sex in sexes" :label="sex" :key="sex">{{ sex }}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item label="年龄" prop="agelist" style="width:50%" :label-width="formLabelWidth">
<div class="flex"> <div class="flex">
<div class="flex-item" > <div class="flex-item" >
<el-input v-model="addForm.everydayAdd" auto-complete="off" width='30%'> <el-form-item
label="年龄"
prop="ageStart"
name='ageStart'
:label-width="formLabelWidth">
<el-input v-model="filterForm.ageStart" auto-complete="off" >
<template slot='suffix'> <template slot='suffix'>
</template> </template>
</el-input> </el-input>
</div> </el-form-item>
<span style="width:20%;text-align:center"> —— </span> </div>
<div class="flex-item" > <span style="width:20%;text-align:center;line-height:35px"> —— </span>
<el-input v-model="addForm.everydayAdd" auto-complete="off" width='30%'> <div class="flex-item" >
<el-form-item style="width:50%" prop="ageEnd" name='ageEnd'>
<el-input v-model="filterForm.ageEnd" auto-complete="off" width='30%'>
<template slot='suffix'> <template slot='suffix'>
</template> </template>
</el-input> </el-input>
</div> </el-form-item>
</div> </div>
</el-form-item> </div>
</div> </div>
<div class="flex"> <div class="flex">
<el-form-item label="省市"> <el-form-item label="省市" prop="province" name='province'>
<div class="flex"> <div class="flex">
<ul class="provincelist"> <ul class="provincelist">
<li v-for='(province, ind) in area.provinceOptions' :key="ind" @click='getProvince(ind)'> <li v-for='(province, ind) in area.provinceOptions' :key="ind" @click='getProvince(ind)'>
...@@ -171,8 +177,8 @@ ...@@ -171,8 +177,8 @@
</el-form-item> </el-form-item>
<div class="flex" style='width:40%;margin-left:40px;line-height:30px'> <div class="flex" style='width:40%;margin-left:40px;line-height:30px'>
<el-form-item prop="flowStart" > <el-form-item prop="consumptionStart" >
<el-input v-model='filterForm.flowStart'> <el-input v-model='filterForm.consumptionStart'>
<template slot='suffix'> <template slot='suffix'>
</template> </template>
...@@ -181,8 +187,8 @@ ...@@ -181,8 +187,8 @@
</el-form-item> </el-form-item>
<span style="width:35%;text-align:center"> —— </span> <span style="width:35%;text-align:center"> —— </span>
<el-form-item prop='flowEnd'> <el-form-item prop='consumptionEnd'>
<el-input v-model='filterForm.flowEnd'> <el-input v-model='filterForm.consumptionEnd'>
<template slot='suffix'> <template slot='suffix'>
</template> </template>
...@@ -282,8 +288,6 @@ export default class FilterNumber extends Vue { ...@@ -282,8 +288,6 @@ export default class FilterNumber extends Vue {
@State('filterNumber') public numberFilterState: any; @State('filterNumber') public numberFilterState: any;
@Action(GET_FILTERLIST) public getFilterlist: any; @Action(GET_FILTERLIST) public getFilterlist: any;
@Action(CREATE_FILTERLIST) public createFilter: any; @Action(CREATE_FILTERLIST) public createFilter: any;
// @Action(UPDATE_PERMISSION) public updatePermission: any;
// @Action(DELETE_PERMISSION) public deletePermission: any;
// 初始化数据 // 初始化数据
// 表格 // 表格
...@@ -444,7 +448,8 @@ export default class FilterNumber extends Vue { ...@@ -444,7 +448,8 @@ export default class FilterNumber extends Vue {
public filterForm = { public filterForm = {
dsgroup: '', dsgroup: '',
agerange: [10, 80], ageStart: '',
ageEnd: '',
sexlist: [], sexlist: [],
flow: [], flow: [],
flowStart: '', flowStart: '',
...@@ -478,13 +483,31 @@ export default class FilterNumber extends Vue { ...@@ -478,13 +483,31 @@ export default class FilterNumber extends Vue {
public addFilterFormRules = { public addFilterFormRules = {
dsgroup: [ dsgroup: [
{ validator: this.validateDsgroup, trigger: 'blur' }, { validator: this.validateDsgroup, trigger: 'change' },
], ],
sexlist: [ sexlist: [
{ validator: this.validateSexList, trigger: 'change' }, { validator: this.validateSexList, trigger: 'change' },
], ],
verificationLanguage: [ ageStart: [
{ validator: this.verificationLanguage, trigger: 'blur' }, { validator: this.validateAgeStart, trigger: 'blur' },
],
ageEnd: [
{ validator: this.validateAgeEnd, trigger: 'blur' },
],
province: [
{ validator: this.validateProvince, trigger: 'change' },
],
flowStart: [
{ validator: this.validateFlowStart, trigger: 'change' },
],
flowEnd: [
{ validator: this.validateFlowEnd, trigger: 'change' },
],
consumptionStart: [
{ validator: this.validateConsumptionStart, trigger: 'change' },
],
consumptionEnd: [
{ validator: this.validateConsumptionEnd, trigger: 'change' },
], ],
}; };
...@@ -584,11 +607,19 @@ export default class FilterNumber extends Vue { ...@@ -584,11 +607,19 @@ export default class FilterNumber extends Vue {
}, 3000); }, 3000);
} }
public compareNumber(val1: string, val2: string) {
const num1 = Number(val1);
const num2 = Number(val2);
if (num1 >= num2 || num1 < 0) {
return false;
}
return true;
}
public sumbitAddFilter() { public sumbitAddFilter() {
const form = this.$data.filterForm; const form = this.$data.filterForm;
this.$refs.filterForm.validate((valid: any) => { this.$refs.filterForm.validate((valid: any) => {
if (valid) { if (valid) {
// console.log('验证通过了');
// 提交 // 提交
// this.createPermission(form).then((data: any) => { // this.createPermission(form).then((data: any) => {
// this.closeDialog(); // this.closeDialog();
...@@ -602,7 +633,6 @@ export default class FilterNumber extends Vue { ...@@ -602,7 +633,6 @@ export default class FilterNumber extends Vue {
const form = this.$data.addForm; const form = this.$data.addForm;
this.$refs.addForm.validate((valid: any) => { this.$refs.addForm.validate((valid: any) => {
if (valid) { if (valid) {
// console.log('验证通过了');
// 提交 // 提交
// this.createPermission(form).then((data: any) => { // this.createPermission(form).then((data: any) => {
// this.closeDialog(); // this.closeDialog();
...@@ -659,11 +689,11 @@ export default class FilterNumber extends Vue { ...@@ -659,11 +689,11 @@ export default class FilterNumber extends Vue {
// 筛选部分验证 // 筛选部分验证
public validateDsgroup(rule: any, value: any, callback: any) { public validateDsgroup(rule: any, value: any, callback: any) {
if(!value) { if (!value) {
callback(new Error('名称不可为空')); callback(new Error('名称不可为空'));
return false; return false;
} }
if(value.length >=20) { if (value.length >= 20) {
callback(new Error('字符长度不可超过20字')); callback(new Error('字符长度不可超过20字'));
return false; return false;
} }
...@@ -671,21 +701,121 @@ export default class FilterNumber extends Vue { ...@@ -671,21 +701,121 @@ export default class FilterNumber extends Vue {
} }
public validateSexList(rule: any, value: any, callback: any) { public validateSexList(rule: any, value: any, callback: any) {
if(value.length === 0) { if (value.length === 0) {
callback(new Error('至少选中一位')); callback(new Error('至少选中一位'));
return false; return false;
} }
callback(); callback();
} }
public validateAgeList(rule: any, value: any, callback: any) { public validateAgeStart(rule: any, value: any, callback: any) {
if(value.length === 0) { const reg = new RegExp('^[0-9]*$', 'i');
if (value === '') {
callback(new Error('请输入数字'));
return false;
}
if (!reg.test(value)) {
callback(new Error('仅能输入数字'));
return false;
}
callback();
}
public validateAgeEnd(rule: any, value: any, callback: any) {
const reg = new RegExp('^[0-9]*$', 'i');
if (value === '') {
callback(new Error('请输入数字'));
return false;
}
if (!reg.test(value)) {
callback(new Error('仅能输入数字'));
return false;
}
if (!this.compareNumber(this.filterForm.ageStart, value)) {
callback(new Error('您所输入数字不合法'));
return false;
}
callback();
}
public validateProvince(rule: any, value: any, callback: any) {
const provincelist = this.area.checkedProvinces;
const provinceOptions = this.area.provinceOptions;
let IsSelectedCity = false;
provinceOptions.map((val) => {
if (val.isIndeterminate) {
IsSelectedCity = true;
}
});
if (provincelist.length === 0 && !IsSelectedCity) {
callback(new Error('至少选中一位')); callback(new Error('至少选中一位'));
return false; return false;
} }
callback(); callback();
} }
public validateFlowStart(rule: any, value: any, callback: any) {
const reg = new RegExp('^[0-9]*$', 'i');
if (value === '') {
callback(new Error('请输入数字'));
return false;
}
if (!reg.test(value)) {
callback(new Error('仅能输入数字'));
return false;
}
callback();
}
public validateFlowEnd(rule: any, value: any, callback: any) {
const reg = new RegExp('^[0-9]*$', 'i');
if (value === '') {
callback(new Error('请输入数字'));
return false;
}
if (!reg.test(value)) {
callback(new Error('仅能输入数字'));
return false;
}
if (!this.compareNumber(this.filterForm.flowStart, value)) {
callback(new Error('您所输入数字不合法'));
return false;
}
callback();
}
public validateConsumptionStart(rule: any, value: any, callback: any) {
const reg = new RegExp('^[0-9]*$', 'i');
if (value === '') {
callback(new Error('请输入数字'));
return false;
}
if (!reg.test(value)) {
callback(new Error('仅能输入数字'));
return false;
}
callback();
}
public validateConsumptionEnd(rule: any, value: any, callback: any) {
const reg = new RegExp('^[0-9]*$', 'i');
if (value === '') {
callback(new Error('请输入数字'));
return false;
}
if (!reg.test(value)) {
callback(new Error('仅能输入数字'));
return false;
}
if (!this.compareNumber(this.filterForm.consumptionStart, value)) {
callback(new Error('您所输入数字不合法'));
return false;
}
callback();
}
// // 生命周期 // // 生命周期
// public mounted() { // public mounted() {
// // this.getPermission({ size: this.size, page: this.page }); // // this.getPermission({ size: this.size, page: this.page });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment