From ee998d76985146af4f78d5eabe4e31500cb35980 Mon Sep 17 00:00:00 2001 From: TM <923727421@qq.com> Date: Tue, 15 Dec 2020 14:47:28 +0800 Subject: [PATCH] 修改bug --- pages/hbfqPage/orderInfo/orderInfo.axml | 2 pages/businessData/businessData.axml | 4 pages/shskPage/orderInfo/orderInfo.js | 3 pages/shskPage/orderInfo/orderInfo.axml | 4 utils/validator.js | 207 +++++++++++++++++++++++++++++ pages/forgetPassword/forgetPassword.axml | 10 pages/index/index.js | 60 ++++++++ pages/businessData/businessData.js | 6 pages/forgetPassword/forgetPassword.js | 15 ++ pages/hbfqPage/orderInfo/orderInfo.js | 49 +++++- pages/index/index.axml | 6 11 files changed, 341 insertions(+), 25 deletions(-) diff --git a/pages/businessData/businessData.axml b/pages/businessData/businessData.axml index 61716c0..7b48f43 100644 --- a/pages/businessData/businessData.axml +++ b/pages/businessData/businessData.axml @@ -4,7 +4,7 @@ <tab-content key="{{index}}" tabId="{{index}}" activeTab="{{activeTab2}}" a:if="{{index === 0}}"> <view class="tab-item"> <view class="search-box"> - <search-bar value="{{value}}" borderColor="#EDEDF2" onSubmit="searchMation" onInput="onhandInput" focus="{{false}}" maxLength="{{20}}" showCancelButton="{{false}}" placeholder="请输入用户名称" /> + <search-bar value="{{value}}" onClear="onClear" borderColor="#EDEDF2" onSubmit="searchMation" onInput="onhandInput" focus="{{false}}" maxLength="{{20}}" showCancelButton="{{false}}" placeholder="请输入用户名称" /> <view class="filer"> <text class="iconfont iconshaixuan" style="font-size:20px"></text> <text class="filer-tit" onTap="showFilter">筛选</text> @@ -73,7 +73,7 @@ <tab-content key="{{index}}" tabId="{{index}}" activeTab="{{activeTab2}}" a:elif="{{index === 1}}"> <view class="tab-item"> <view class="search-box"> - <search-bar value="{{value}}" borderColor="#EDEDF2" onSubmit="searchMation" onInput="onhandInput" focus="{{false}}" maxLength="{{20}}" showCancelButton="{{false}}" placeholder="请输入用户名称" /> + <search-bar value="{{value}}" onClear="onClear" borderColor="#EDEDF2" onSubmit="searchMation" onInput="onhandInput" focus="{{false}}" maxLength="{{20}}" showCancelButton="{{false}}" placeholder="请输入用户名称" /> <view class="filer"> <text class="iconfont iconshaixuan" style="font-size:20px"></text> <text class="filer-tit" onTap="showFilter">筛选</text> diff --git a/pages/businessData/businessData.js b/pages/businessData/businessData.js index 47dec63..a1bf07c 100644 --- a/pages/businessData/businessData.js +++ b/pages/businessData/businessData.js @@ -69,6 +69,7 @@ url: '/sib/xcx/order/hbListInit', queryObj: { prodType: 200015 }, value: '', + list: [], isgoOut:false, }) }, @@ -104,6 +105,11 @@ value: value }) }, + onClear(){ + this.setData({ + value:'' + }) + }, // 搜索框事件 searchMation(value) { console.log(value) diff --git a/pages/forgetPassword/forgetPassword.axml b/pages/forgetPassword/forgetPassword.axml index e2221ad..4a4ddf8 100644 --- a/pages/forgetPassword/forgetPassword.axml +++ b/pages/forgetPassword/forgetPassword.axml @@ -1,13 +1,13 @@ <view> <view class="forgetpass-view"> - <input-item type="number" labelCls="phone-label label" className="phone-ipt" maxlength="11" data-code="{{1}}" onInput="oninput" placeholder="请输入手机号" clear="{{true}}"> + <input-item type="number" labelCls="phone-label label" className="phone-ipt" maxlength="11" data-code="{{1}}" onInput="oninput" placeholder="请输入手机号"> </input-item> - <verify-code maxlength="4" last="{{false}}" label="{{''}}" inputCls="code-ipt" labelCls="code-label" countDown="{{60}}" initActive="{{false}}" onSend="onSend" onInput="inputVerCode" value="{{info.verCode}}"> + <verify-code maxlength="6" last="{{false}}" a:if="{{info.mblNo && info.mblNo.length == 11}}" label="{{''}}" inputCls="code-ipt" labelCls="code-label" countDown="{{60}}" initActive="{{false}}" onSend="onSend" onInput="inputVerCode" value="{{info.verCode}}"> </verify-code> - <input-item type="text" labelCls="password-label label" className="password-ipt" maxlength="12" data-code="{{2}}" onInput="oninput" password="{{true}}" placeholder="请输入新密码" clear="{{true}}"> + <input-item type="text" labelCls="password-label label" className="password-ipt" maxlength="12" data-code="{{2}}" onInput="oninput" password="{{true}}" placeholder="请输入新密码"> </input-item> - <input-item type="text" labelCls="respassword-label label" className="password-ipt" maxlength="12" data-code="{{3}}" onInput="oninput" password="{{true}}" placeholder="请再次输入密码" clear="{{true}}"> + <input-item type="text" labelCls="respassword-label label" className="password-ipt" maxlength="12" data-code="{{3}}" onInput="oninput" password="{{true}}" placeholder="请再次输入密码"> </input-item> </view> - <button type="primary" onTap="save" class="login-btn" style="{{background:userStyle.gradientColor}}">提交并登录</button> + <button type="primary" onTap="save" class="login-btn" style="{{background:userStyle.gradientColor}}">前往登录</button> </view> \ No newline at end of file diff --git a/pages/forgetPassword/forgetPassword.js b/pages/forgetPassword/forgetPassword.js index 17c41b4..1c9b612 100644 --- a/pages/forgetPassword/forgetPassword.js +++ b/pages/forgetPassword/forgetPassword.js @@ -1,5 +1,6 @@ let $api = require('../../utils/ajaxFn.js') let md5 = require('../../utils/md5.js') +let validator = require('../../utils/validator') Page({ data: { userStyle:{},//用户样式 @@ -65,6 +66,13 @@ }) return } + if(!validator.checkPhone(this.data.info.mblNo)){ + my.showToast({ + content: '请输入正确的电话号码', + duration: 2000 + }) + return + } if(!this.data.info.verCode){ my.showToast({ content: '请输入验证码', @@ -79,6 +87,13 @@ }) return } + if(!validator.checkPassword(this.data.info.newPwd)){ + my.showToast({ + content: '密码为8-16数字字母组合', + duration: 2000 + }) + return + } if(this.data.info.newPwd != this.data.newPwdTwo){ my.showToast({ content: '两次密码不一致请确认', diff --git a/pages/hbfqPage/orderInfo/orderInfo.axml b/pages/hbfqPage/orderInfo/orderInfo.axml index db05c98..a4cc9b8 100644 --- a/pages/hbfqPage/orderInfo/orderInfo.axml +++ b/pages/hbfqPage/orderInfo/orderInfo.axml @@ -4,7 +4,7 @@ </view> <view class="fenqi-info-view"> <text class="title">分期信息</text> - <input-item labelCls="label-class" value="{{info.amt}}" data-code="{{1}}" onInput="confirm" inputCls="ipt-class" placeholder="请输入分期本金">分期本金</input-item> + <input-item labelCls="label-class" value="{{info.amt}}" type="digit" data-code="{{1}}" onInput="confirm" inputCls="ipt-class" placeholder="请输入分期本金">分期本金</input-item> <input-item labelCls="label-class" value="{{info.goodsName}}" data-code="{{2}}" onInput="confirm" inputCls="ipt-class" placeholder="请输入商品名称">商品名称</input-item> <picker title="选择付息方式" onChange="bindObjPickerChangeProd" value="{{arrIndex}}" range="{{prodsList}}" range-key="name"> <view> diff --git a/pages/hbfqPage/orderInfo/orderInfo.js b/pages/hbfqPage/orderInfo/orderInfo.js index 7510ba0..662e490 100644 --- a/pages/hbfqPage/orderInfo/orderInfo.js +++ b/pages/hbfqPage/orderInfo/orderInfo.js @@ -11,12 +11,12 @@ verName: '', info: { prodId: '', - amt:'', - goodsName:'', - term:'', - zfbVersion:'', - userName:'', - userMblNo:'' + amt: '', + goodsName: '', + term: '', + zfbVersion: '', + userName: '', + userMblNo: '' }, amtList: [ { name: '商家到账', number: 0 }, @@ -91,23 +91,40 @@ this.setData({ info: { ...this.data.info, ...obj } }) + console.log(this.data.info) if (code == 1) { if (!this.data.info.amt || !this.data.info.prodId || !this.data.info.term || !this.data.info.zfbVersion) { this.setData({ isBoss: false + }) + } else { + this.setData({ + isBoss: true }) } if (this.data.isBoss) { this.orderhbTrial() } } - }, bindObjPickerChangeProd(e) { - this.setData({ prodName: this.data.prodsList[e.detail.value].name, - 'info.prodId': this.data.prodsList[e.detail.value].code + 'info.prodId': this.data.prodsList[e.detail.value].code, + 'info.term': '', + 'info.zfbVersion': '', + termName: '', + zfbVersionName: '', + amtList: [ + { name: '商家到账', number: 0 }, + { name: '客户还款总额', number: 0 }, + { name: '客户月还款额', number: 0 } + ], + rateList: [ + { name: '智享服务费率', rate: 0 }, + { name: '花呗利率', rate: 0 }, + { name: '支付利率', rate: 0 } + ] }) this.getList({ prodId: this.data.info.prodId }) console.log(this.data.info.amt, this.data.info.prodId, this.data.info.term, this.data.info.zfbVersion) @@ -146,7 +163,19 @@ bindObjPickerChangeVer(e) { this.setData({ zfbVersionName: this.data.zfbVersionsList[e.detail.value].name, - 'info.zfbVersion': this.data.zfbVersionsList[e.detail.value].code + 'info.zfbVersion': this.data.zfbVersionsList[e.detail.value].code, + 'info.term': '', + termName: '', + amtList: [ + { name: '商家到账', number: 0 }, + { name: '客户还款总额', number: 0 }, + { name: '客户月还款额', number: 0 } + ], + rateList: [ + { name: '智享服务费率', rate: 0 }, + { name: '花呗利率', rate: 0 }, + { name: '支付利率', rate: 0 } + ] }) console.log(this.data.info.amt, this.data.info.prodId, this.data.info.term, this.data.info.zfbVersion) this.getList({ prodId: this.data.info.prodId, zfbVersion: this.data.info.zfbVersion }) diff --git a/pages/index/index.axml b/pages/index/index.axml index 1cb2249..a4426a0 100644 --- a/pages/index/index.axml +++ b/pages/index/index.axml @@ -5,11 +5,11 @@ <text class="modeText">{{modeText}}</text> </view> <view class="login-info-view"> - <input-item type="number" onInput="setUserNo" value="{{userNo}}" labelCls="phone-label" className="phone-ipt" maxlength="11" placeholder="请输入手机号" clear="{{true}}"> + <input-item type="number" onInput="setUserNo" value="{{userNo}}" labelCls="phone-label" className="phone-ipt" maxlength="11" placeholder="请输入手机号" clear="{{false}}"> </input-item> - <input-item a:if="{{!showCode}}" onInput="setPassword" value="{{password}}" type="text" labelCls="password-label" className="password-ipt" maxlength="12" password="{{true}}" placeholder="请输入密码" clear="{{true}}"> + <input-item a:if="{{!showCode}}" onInput="setPassword" value="{{password}}" type="text" labelCls="password-label" className="password-ipt" maxlength="12" password="{{true}}" placeholder="请输入密码" clear="{{false}}"> </input-item> - <verify-code a:if="{{showCode}}" label="{{''}}" inputCls="code-ipt" labelCls="code-label" maxlength="4" countDown="{{60}}" initActive="{{false}}" onSend="onSend" onInput="inputVerCode" value="{{verCode}}"> + <verify-code a:if="{{showCode && userNo && userNo.length == 11}}" label="{{''}}" inputCls="code-ipt" labelCls="code-label" maxlength="4" countDown="{{60}}" initActive="{{false}}" onSend="onSend" onInput="inputVerCode" value="{{verCode}}"> </verify-code> </view> <button type="primary" class="login-btn" style="{{background:userStyle.gradientColor}}" onTap="login">登录</button> diff --git a/pages/index/index.js b/pages/index/index.js index 108106d..a922582 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -1,8 +1,10 @@ let md5 = require('../../utils/md5.js'); let $api = require('../../utils/ajaxFn.js'); +let validator = require('../../utils/validator.js') const app = getApp() Page({ data: { + txt:'请输入手机号', password:'', userNo:'', verCode:'', @@ -68,11 +70,53 @@ obj.password = md5.hex_md5(this.data.userNo+this.data.password) obj.userNo = this.data.userNo obj.zfbUserId = app.userId + if(!obj.userNo){ + my.showToast({ + content:'请输入手机号', + duration:2000 + }); + return + } + if(!validator.checkPhone(obj.userNo)){ + my.showToast({ + content:'请输入正确手机号', + duration:2000 + }); + return + } + if(!this.data.password){ + my.showToast({ + content:'请输入密码', + duration:2000 + }); + return + } }else{ url = '/sib/xcx/login/loginByCode' obj.mblNo = this.data.userNo obj.verCode = this.data.verCode obj.zfbUserId = app.userId + if(!obj.mblNo){ + my.showToast({ + content:'请输入手机号', + duration:3000 + }); + return + } + if(!validator.checkPhone(obj.mblNo)){ + my.showToast({ + content:'请输入正确手机号', + duration:2000 + }); + return + } + if(!obj.verCode){ + my.showToast({ + content:'请输入验证码', + duration:2000 + }); + return + } } $api.ajax( url, @@ -126,6 +170,15 @@ this.setData({ userNo:e.detail.value }) + if(this.data.userNo&&this.data.userNo.length == 11){ + this.setData({ + txt:'获取验证码' + }) + }else{ + this.setData({ + txt:'请输入手机号' + }) + } }, setPassword(e){ this.setData({ @@ -146,6 +199,13 @@ }); return } + // if(!validator.checkPhone(this.data.userNo)){ + // my.showToast({ + // content:'请输入正确手机号', + // duration:2000 + // }); + // return + // } $api.ajax( '/sib/user/sendMsg', 'POST', diff --git a/pages/shskPage/orderInfo/orderInfo.axml b/pages/shskPage/orderInfo/orderInfo.axml index 3c9b1f2..ef912d3 100644 --- a/pages/shskPage/orderInfo/orderInfo.axml +++ b/pages/shskPage/orderInfo/orderInfo.axml @@ -4,8 +4,8 @@ </view> <view class="fenqi-info-view"> <text class="title">分期信息</text> - <input-item labelCls="label-class" onInput="confirm" data-code="{{1}}" type="number" inputCls="ipt-class" placeholder="请输入商品金额">商品金额</input-item> - <input-item labelCls="label-class" onInput="confirm" data-code="{{2}}" last="{{true}}" inputCls="ipt-class" placeholder="请输入商品名称">商品名称</input-item> + <input-item labelCls="label-class" onInput="confirm" data-code="{{1}}" last="{{true}}" type="digit" inputCls="ipt-class" placeholder="请输入商品金额">商品金额</input-item> + <!-- <input-item labelCls="label-class" onInput="confirm" data-code="{{2}}" last="{{true}}" inputCls="ipt-class" placeholder="请输入商品名称">商品名称</input-item> --> </view> <!-- <view class="user-info-view"> <text class="title">用户信息</text> diff --git a/pages/shskPage/orderInfo/orderInfo.js b/pages/shskPage/orderInfo/orderInfo.js index a69e142..67da88b 100644 --- a/pages/shskPage/orderInfo/orderInfo.js +++ b/pages/shskPage/orderInfo/orderInfo.js @@ -3,8 +3,7 @@ data: { userStyle: {}, info: { - payAmt: '', - goodsName:'' + payAmt: '' }, amtList: [ { name: '商家到账', number: 0 }, diff --git a/utils/validator.js b/utils/validator.js new file mode 100644 index 0000000..8db1577 --- /dev/null +++ b/utils/validator.js @@ -0,0 +1,207 @@ +/** + * TANGIMING 2018-3-9 + * 这是一个用于存放正则表达式和一些验证方法的插件 + * 除了存放了目前常用的正则之外,还根据这些正则封装了对应的验证方法 + */ + +export default { + // 金额格式化 + formatMoney(str = 0) { + str = str + ''; + let newStr = ''; + let count = 0; + if (str.indexOf('.') === -1) { + for (let i = str.length - 1; i >= 0; i--) { + if (count % 3 === 0 && count !== 0) { + newStr = str.charAt(i) + ',' + newStr; + } else { + newStr = str.charAt(i) + newStr; + } + count++; + } + str = newStr + '.00'; // 自动补小数点后两位 + return str; + } else { + for (let i = str.indexOf('.') - 1; i >= 0; i--) { + if (count % 3 === 0 && count !== 0) { + newStr = str.charAt(i) + ',' + newStr; + } else { + newStr = str.charAt(i) + newStr; // 逐个字符相接起来 + } + count++; + } + str = newStr + (str + '00').substr((str + '00').indexOf('.'), 3); + return str; + } + }, + // 身份证 中间用* 显示 + cardIDHide(cardid) { + if (cardid) { + return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2'); + } else { + return ''; + } + }, + //手机号,中间四位*显示 + formatPhone(phone) { + return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); + }, + // 电话号码格式 + checkPhone(phone) { + let reg = /^1([35789][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/; + return reg.test(phone); + }, + checkEmail(email) { + // 验证邮箱格式 + let reg = /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/; + // let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/; + return reg.test(email); + }, + checkVerifyCode(code) { + // 验证验证码格式 + let reg = /^\d{6}$/; + return reg.test(code); + }, + checkDynamicCode(code) { + // 验证邀请码格式 + let reg = /^[A-Za-z0-9]{4}$/; + return reg.test(code); + }, + // password check + checkPassword(password) { + // 验证密码格式 + let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/; + return reg.test(password); + }, + // name check + checkName(name) { + // 验证用户名格式 + let reg = /^[\u4E00-\u9FA5]{2,10}$/; + return reg.test(name); + }, + // 账户名称的正则表达式 + checkUsername(name) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/; + return reg.test(name); + }, + // 统一验证 + checkCommonField(name) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/; + return reg.test(name); + }, + isIdcard(val) { + let result = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(val); + return result; + }, + checkValEmpty(str) { + // 验证是否为空 + if ( + str === undefined || + str === null || + str.length <= 0 || + str === 'undefined' + ) { + return true; + } else { + return false; + } + }, + // 验证佣金输入金额 + checkCommission(commission) { + // 小于100且后面可以带4个小数点 + let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/; + //一亿以内,保留四位小数 + // /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/ + // 如果通过的话,那么判断小数点的前几位数字 + return reg.test(commission); + }, + // 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写 + checkChannelNo(channelNo) { + let reg = /^[\w\d]{4,8}$/; + return reg.test(channelNo); + }, + //验证是否包含空格 + checkSpace(val) { + let reg = /^\s+$/; + if (reg.test(val)) { + return true; + } else { + return false; + } + }, + //将发送请求中的参数格式化,如果为空则转为null + formatReq(obj) { + for (let i in obj) { + let item = obj[i]; + if (item === null) continue; + if ( + item === undefined || + item === '' || + item === 'undefined' || + item.length <= 0 || + JSON.stringify(item) == '{}' + ) { + obj[i] = null; + } + } + return obj; + }, + // 只能输入数字与小数点正则判断 + checkIntegerAndDot(checkVal) { + let dotReg = /\./g; + let IntegerReg = /^[1-9]{1}\d{0,5}$/; + // 如果输入了多个点,直接不符合要求 + if (checkVal.match(dotReg) && checkVal.match(dotReg).length > 1) { + return false; + // 输入了一个点 + } else if ( + checkVal.match(dotReg) && + checkVal.match(dotReg).length === 1 + ) { + // 开头与结尾都不能出现点,点的前面与后面必须是数字 + let strLen = checkVal.length; + if ( + checkVal.indexOf('.') === 0 || + checkVal.indexOf('.') === strLen - 1 + ) { + return false; + // 超过个数的限制的话 + } else { + return strLen <= 6; + } + // 没有小数点的话,那么就是全部数字进行匹配 + } else if (!checkVal.match(dotReg)) { + return IntegerReg.test(checkVal); + } + }, + //银行卡验证 + bankCard(iccid) { + let initCard = iccid; + var s1 = 0, + s2 = 0; + iccid = iccid.substring(0, iccid.length - 1); + var reverse = ''; + for (var i = iccid.length; i > 0; i--) { + reverse += iccid.charAt(i - 1); + } + for (i = 0; i < reverse.length; i++) { + var digit = parseInt(reverse.charAt(i), 10); + if (i % 2 != 0) { + // this is for odd digits, they are 1-indexed in the + // algorithm + s1 += digit; + } else { + // add 2 * digit for 0-4, add 2 * digit - 9 for 5-9 + s2 += 2 * digit; + if (digit >= 5) { + s2 -= 9; + } + } + } + var sum = 10 - ((s1 + s2) % 10); + if (sum === 10) { + sum = 0; + } + return iccid + sum == initCard; + } +}; -- Gitblit v1.8.0