<template>
<div>
<pl-content-box>
<pl-page-nav :show-previous=true></pl-page-nav>
<pl-content-box-block>
<pl-content-box-card>
<el-form :model="baseForm" ref="baseForm" label-width="150px">
<el-row>
<el-col :span="20">
<el-form-item label="报名编号" prop="memName">
<pl-content-item-text>{{baseForm.applyCode}}</pl-content-item-text>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="申贷金额(元)" prop="applyAmt"
:rules="[
{ required: true, message: '融资金额必填'},
{ type: 'number', message: '融资金额必须为数字'}]">
<pl-input-number v-model="baseForm.applyAmt" placeholder="¥" :min="0" :valueEmpty="false" :numeric-precision="2">
</pl-input-number>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="授信机构" prop="creditFin"
:rules="[{required: true, message: '授信机构必选'}]">
<pl-dictionary-select type="bank_brand" v-model="baseForm.creditFin"
style="width: 100px;" :showEmpty="false"></pl-dictionary-select>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="申请人姓名" prop="applicantName"
:rules="[{required: true, message: '请填写申请人姓名'}]">
<el-input v-model="baseForm.applicantName" placeholder="请填写申请人姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="手机号码" prop="applicantPhone"
:rules="[
{required: true, message: '请输入手机号码', trigger: 'change'},
{validator: checkPhone, trigger: 'change'}]">
<el-input v-model="baseForm.applicantPhone" placeholder="请填写申请人手机号码"></el-input>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="固定电话" prop="applicantTel"
:rules="[{required: true, message: '请输入固定电话', trigger: 'change'},
{validator: checkTel, trigger: 'change'}]">
<el-input v-model="baseForm.applicantTel" placeholder="请填写申请人固定电话"></el-input>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="申请日期" prop="applyDate" >
<pl-content-item-text>{{baseForm.applyDate}}</pl-content-item-text>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="备注" prop="remark">
<el-input v-model="baseForm.remark" placeholder="请填写备注"></el-input>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="证件类型" prop="certType" :rules="[
{required: true, message: '请输入证件类型', trigger: 'change'}
]">
<pl-dictionary-select type="id_type" v-model="form.certType" :showEmpty="false"></pl-dictionary-select>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="证件号码" prop="certNo" :rules="[
{required: true, message: '请填写证件号码', trigger: 'blur' },
{pattern: /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/, message: '证件号码格式有误!', trigger: 'blur'}
]">
<el-input v-model="form.certNo" placeholder="输入证件号码"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</pl-content-box-card>
</pl-content-box-block>
</pl-content-box>
<pl-affix :offset-bottom="0">
<pl-content-box-toolbar class="text-center" :border="false">
<el-button icon=" anticon icon-arrowleft" @click="callback">返回</el-button>
<el-button type="primary" icon=" anticon icon-clockcircleo" @click="submitAgain">提交</el-button>
</pl-content-box-toolbar>
</pl-affix>
</div>
</template>
<script>
import {MsgType} from 'core/constants';
export default {
data () {
return {
nextLoading: false,
type: 'add',
baseForm: {
applyId: '',
applyCode: '',
applyAmt: '',
applyDate: '',
applyState: '',
creditFin: '',
applicantName: '',
applicantPhone: '',
applicantTel: '',
remark: ''
}
};
},
methods: {
callback () {
this.$router.push({name: 'cfin.biz.my-registration'});
},
checkTel (rule, value, callback) {
if (!(/^((0\d{2,3})-)?(\d{7,8})(-(\d{3,4}))?$/.test(value))) {
callback(new Error('请输入正确的电话号码!'));
} else {
} callback();
},
checkPhone (rule, value, callback) {
if (!(/^1[34578]\d{9}$/.test(value))) {
callback(new Error('请输入正确的手机号码!'));
}
// else {
// this.$api.bsp.member.checkPhoneNo(this.form.userPhone, this.form.memId).then(ret => {
// if (ret) {
// callback(new Error('该手机号码已存在,请修改手机号码。'));
// } else {
// callback();
// }
// });
// }
},
submitAgain () {
console.log('提交');
this.$refs['baseForm'].validate((valid) => {
if (valid) {
console.log('通过');
if (this.type === 'add') {
this.$api.cfin.quota.saveApply(this.baseForm).then(ret => {
if (ret.type === MsgType.SUCCESS) {
this.$confirm(ret.msg, '提示', {
confirmButtonText: '确定',
type: ret.type
});
this.callback();
} else {
this.$confirm(ret.msg, '提示', {
confirmButtonText: '确定',
type: ret.type
});
}
});
} else {
this.$api.cfin.quota.againApply(this.baseForm).then(ret => {
if (ret.type === MsgType.SUCCESS) {
this.$confirm(ret.msg, '提示', {
confirmButtonText: '确定',
type: ret.type
});
this.callback();
} else {
this.$confirm(ret.msg, '提示', {
confirmButtonText: '确定',
type: ret.type
});
}
});
}
}
});
}
},
created () {
console.log(this.$route.params);
if (this.$route.params.applyId === undefined) {
this.type = 'add';
console.log('add');
this.$api.cfin.quota.getApplySequence().then(ret => {
this.baseForm.applyCode = ret.code;
});
} else {
this.type = 'edit';
let params = this.$route.params;
this.baseForm.applyId = params.applyId;
this.$api.cfin.quota.getCreditApply(params).then(ret => {
this.baseForm = ret;
this.baseForm.applicantPhone = Number(ret.applicantPhone);
});
}
this.$api.cfin.quota.getSystemDate().then(ret => {
this.baseForm.applyDate = ret;
});
}
}
;
</script>

点击保存按钮时,如果form里面的表单验证通过这进入下面代码中的 if(valid) 里面,否者进入else.

  //点击保存按钮
save () {
this.$refs['form'].validate((valid) => {
if (valid) {
console.log('验证通过') ;
this.resetFrom();
});
} else {
console.log('验证不通过') ;
return false;
}
});
},

PS:表单输入长度控制验证

name: [
{required: true, message: '请输入活动名称', trigger: 'blur'},
{min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur'}
],

vue 常用的表单验证,包括手机号码,固定电话和身份证...的更多相关文章

  1. vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象合并到总的对象,再提交

    vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象 ...

  2. vue+element 动态表单验证

    公司最近的项目有个添加动态表单的需求,总结一下我在表单验证上遇到的一些坑. 如图是功能的需求,这个功能挺好实现的,但是表单验证真是耗费了我一些功夫. vue+element在表单验证上有一些限制,必须 ...

  3. js 常用正则表达式表单验证代码

    正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.其作用如下:测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一 ...

  4. js常用正则表达式表单验证代码

    方法一:  var re=/正则表达式/;  re.test($("txtid").val())  方法二:  $("txtid").val.match(/正则 ...

  5. vue elementui form表单验证

    最近我们公司将前端框架由easyui 改为 vue+elementui .自学vue两周 就开始了爬坑之路.业余时间给大家分享一下心得,技术新手加上第一次分享(小激动),有什么不足的地方欢迎大家指正, ...

  6. jQuery基础(常用插件 表单验证,图片放大镜,自定义对象级,jQuery UI,面板折叠)

    1.表单验证插件——validate   该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下:   $(form).validate({o ...

  7. inform表单验证,正则表达式,用户名,身份证,密码,验证码

    最近利用空闲时间写了部分表单验证,包括用户名,身份证,密码,验证码,仅为自己巩固最近所学的知识 表单的样式使用的是table布局,因为觉得DIV布局定位比较麻烦,table有三列,分别为基本信息,输入 ...

  8. js实现表单验证 常用JS表单验证

    CSS代码 @charset "gb2312"; /* CSS Document */ body,dl,dt,dd,div,form {padding:;margin:;} #he ...

  9. Vue中Form表单验证无法消除验证问题

    iView的表单api给出了一个resetFields方法,用于重置整个表单输入的内容并清除验证提示. 但是有时候需要只消除部分的iview的resetFields方法源码是这样的resetField ...

随机推荐

  1. 简化动态MERGE的SQL计算

    MSSQL.ORACLE等数据库支持MERGE语句更新表.但表结构未知时,因为缺乏集合类数据.用存储过程获得表结构再动态拼出SQL很麻烦,代码会有几十行之多:相同原因,用Java等高级语言实现也不简单 ...

  2. Mina、Netty、Twisted一起学(七):公布/订阅(Publish/Subscribe)

    消息传递有非常多种方式.请求/响应(Request/Reply)是最经常使用的.在前面的博文的样例中.非常多都是採用请求/响应的方式.当server接收到消息后,会马上write回写一条消息到clie ...

  3. innerHTML outerHTML innerText

      迁移时间--2017年10月31日14:52:59 Author:Marydon UpdateTime--2017年1月15日20:33:03innerHTML,outerHTML与innerTe ...

  4. mysql 查询表索引的命令详解

    http://hi.baidu.com/wylinux/item/cbc458c2984381300831c651查看索引命令mysql> show index from tblname;mys ...

  5. iOS 插件制作

    概述 我们平时也使用了非常多的xcode插件,尽管官方对于插件制作没有提供不论什么支持,可是载入三方的插件,默认还是被同意的.第三方的插件,须要存放在 ~/Library/Application Su ...

  6. GuozhongCrawler系列教程 (1) 三大PageDownloader

    GuozhongCrawler  QQ群 202568714 教程源代码下载地址:http://pan.baidu.com/s/1pJBmerL GuozhongCrawler内置三大PageDown ...

  7. JavaScript读书笔记(2)--数据类型

    1.  严格模式:在javascript中定义了一种不同的解析与执行模型.在严格模式下,一些不确定的行为将得到处理,对某些不安全的操作也会抛出错误. 用法是在脚本中添加:”use strict”; 这 ...

  8. JavaScript删除确认框

    1〉 <a href="javascript:if(confirm('确实要删除吗?'))location='jb51.php?id='">删除</a>

  9. 02 http协议之方法与状态码

    一:HTTP请求信息和响应信息的格式 请求: ()请求行 ()请求头信息 ()请求主体信息(可以没有) () 头信息结束后和主体信息之间要空一行 请求行又分3部分 请求方法 请求路径 所用的协议 请求 ...

  10. linux的DNS相关介绍(转载)

    1.DNS配置文件 /etc/hosts   这个是最早的 hostname 对应 IP 的档案: /etc/resolv.conf :这个重要!就是 ISP 的 DNS 服务器 IP 记录处: /e ...