TM
2020-12-15 ee998d76985146af4f78d5eabe4e31500cb35980
修改bug
1 files added
10 files modified
366 ■■■■■ changed files
pages/businessData/businessData.axml 4 ●●●● patch | view | raw | blame | history
pages/businessData/businessData.js 6 ●●●●● patch | view | raw | blame | history
pages/forgetPassword/forgetPassword.axml 10 ●●●● patch | view | raw | blame | history
pages/forgetPassword/forgetPassword.js 15 ●●●●● patch | view | raw | blame | history
pages/hbfqPage/orderInfo/orderInfo.axml 2 ●●● patch | view | raw | blame | history
pages/hbfqPage/orderInfo/orderInfo.js 49 ●●●● patch | view | raw | blame | history
pages/index/index.axml 6 ●●●● patch | view | raw | blame | history
pages/index/index.js 60 ●●●●● patch | view | raw | blame | history
pages/shskPage/orderInfo/orderInfo.axml 4 ●●●● patch | view | raw | blame | history
pages/shskPage/orderInfo/orderInfo.js 3 ●●●● patch | view | raw | blame | history
utils/validator.js 207 ●●●●● patch | view | raw | blame | history
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>
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)
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>
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: '两次密码不一致请确认',
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>
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 })
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>
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',
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>
pages/shskPage/orderInfo/orderInfo.js
@@ -3,8 +3,7 @@
  data: {
    userStyle: {},
    info: {
      payAmt: '',
      goodsName:''
      payAmt: ''
    },
    amtList: [
      { name: '商家到账', number: 0 },
utils/validator.js
New file
@@ -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;
    }
};