<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. [Algorithm] JavaScript Graph Data Structure

    A graph is a data structure comprised of a set of nodes, also known as vertices, and a set of edges. ...

  2. OTN 交换&amp; P-OTN有效减少100G 网络成本 (三)

    OTN 交换& P-OTN有效减少100G 网络成本 (三) 城域网面临的挑战在于不仅须要支持和管理旧有的传送业务,还要支持新兴的分组业务.在城域网中,以太网业务是规模最大.增长最迅速的业务种 ...

  3. css3 - 基本选择器

    有人说类选择器最好不要超过三层,其实我也是这样认为的,不是吗? 选择器分为四大类 标签.全选(相对于子类继承了0.1).类.ID 权值分别是:1->0.1->10->100(权值可叠 ...

  4. 可在 html5 游戏中使用的 js 工具库

    可在 html5 游戏中使用的 js 工具库 作者: 木頭 时间: September 21, 2014 分类: Utilities,Game 使用 cocos2d-js 3.0 开发游戏项目两三个月 ...

  5. mysqldump导入导出详解

    mysqldump可以指定路径的,如果没指定路径,而只写了文件名的话,那么就在当前进入mysql命令行所在的目录,也就是mysql安装目录下 mysqldump  --default-characte ...

  6. MyEclipse的实体关系设计

    原文地址:http://www.myeclipsecn.com/learningcenter/database-development/myeclipse-entity-relation-design ...

  7. MyEclipse的html/JSP编辑器添加代码自动提示

    http://lusterfly.iteye.com/blog/1872627 在myeclipse 9以前的版本中,我们如果要为html编辑器添加自动的代码提示可以这样操作: windows--&g ...

  8. tree related problems (update continuously)

    leetcode Binary Tree Level Order Traversal 这道题是要进行二叉树的层次遍历.对于层次遍历,最简单直观的办法就是进行BFS.于是我们仅仅须要维护一个队列就能够了 ...

  9. h5的复制功能

    js+html5实现复制文字按钮 <div> <input type="text" name="guanfangaddress" id=&qu ...

  10. git 下载与Linux源码安装最新版

    win: https://git-for-windows.github.io/ 或 https://git-scm.com/downloads   官网!   源码安装git Git 的工作需要调用  ...