1 files added
10 files modified
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | url: '/sib/xcx/order/hbListInit', |
| | | queryObj: { prodType: 200015 }, |
| | | value: '', |
| | | list: [], |
| | | isgoOut:false, |
| | | }) |
| | | }, |
| | |
| | | value: value |
| | | }) |
| | | }, |
| | | onClear(){ |
| | | this.setData({ |
| | | value:'' |
| | | }) |
| | | }, |
| | | // 搜索框事件 |
| | | searchMation(value) { |
| | | console.log(value) |
| | |
| | | <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> |
| | |
| | | let $api = require('../../utils/ajaxFn.js') |
| | | let md5 = require('../../utils/md5.js') |
| | | let validator = require('../../utils/validator') |
| | | Page({ |
| | | data: { |
| | | userStyle:{},//用户样式 |
| | |
| | | }) |
| | | return |
| | | } |
| | | if(!validator.checkPhone(this.data.info.mblNo)){ |
| | | my.showToast({ |
| | | content: '请输入正确的电话号码', |
| | | duration: 2000 |
| | | }) |
| | | return |
| | | } |
| | | if(!this.data.info.verCode){ |
| | | my.showToast({ |
| | | content: '请输入验证码', |
| | |
| | | }) |
| | | 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: '两次密码不一致请确认', |
| | |
| | | </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> |
| | |
| | | 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) |
| | |
| | | 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 }) |
| | |
| | | <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> |
| | |
| | | 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:'', |
| | |
| | | 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, |
| | |
| | | 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({ |
| | |
| | | }); |
| | | return |
| | | } |
| | | // if(!validator.checkPhone(this.data.userNo)){ |
| | | // my.showToast({ |
| | | // content:'请输入正确手机号', |
| | | // duration:2000 |
| | | // }); |
| | | // return |
| | | // } |
| | | $api.ajax( |
| | | '/sib/user/sendMsg', |
| | | 'POST', |
| | |
| | | </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> |
| | |
| | | data: { |
| | | userStyle: {}, |
| | | info: { |
| | | payAmt: '', |
| | | goodsName:'' |
| | | payAmt: '' |
| | | }, |
| | | amtList: [ |
| | | { name: '商家到账', number: 0 }, |
New file |
| | |
| | | /** |
| | | * 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; |
| | | } |
| | | }; |