yaolonglong
3 天以前 b5f084460e9e639358fbf91056a86be8d0a5c4b2
获取验证码功能
3个文件已修改
768 ■■■■ 已修改文件
manifest.json 194 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/companyLogin/companyLogin.vue 570 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qiye/record/compositeDetails.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json
@@ -1,103 +1,103 @@
{
  "name": "惠企执法",
  "appid": "__UNI__B034821",
  "description": "惠企执法",
  "versionName": "1.0.0",
  "versionCode": "100",
  "transformPx": false,
  /* 5+App特有相关 */
  "app-plus": {
    "usingComponents": true,
    "nvueStyleCompiler": "uni-app",
    "compilerVersion": 3,
    "splashscreen": {
      "alwaysShowBeforeRender": true,
      "waiting": true,
      "autoclose": true,
      "delay": 0
    },
    /* 模块配置 */
    "modules": {},
    /* 应用发布信息 */
    "distribute": {
      /* android打包配置 */
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
          "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
          "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
          "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
          "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
          "<uses-permission android:name=\"android.permission.CAMERA\"/>",
          "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
          "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
          "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
          "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
          "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
          "<uses-feature android:name=\"android.hardware.camera\"/>",
          "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
        ]
      },
      /* ios打包配置 */
      "ios": {},
      /* SDK配置 */
      "sdkConfigs": {}
    }
  },
  /* 快应用特有相关 */
  "quickapp": {},
  /* 小程序特有相关 */
  "mp-weixin": {
    "appid": "wxec87cd0359014ce3",
    "setting": {
      "urlCheck": false,
      "minified": true
    },
    "usingComponents": true,
    "permission": {
      "scope.userLocation": {
        "desc": "您的位置将用于匹配最近门店或优惠券"
      }
    },
    "requiredPrivateInfos": ["getLocation", "chooseAddress"]
  },
  "mp-alipay": {
    "usingComponents": true
  },
  "mp-baidu": {
    "usingComponents": true
  },
  "mp-toutiao": {
    "usingComponents": true
  },
  "uniStatistics": {
    "enable": false
  },
  "vueVersion": "2",
  "h5": {
    "sdkConfigs": {
      "maps": {
        "qqmap": {
          "key": "2BUBZ-QGL33-2GO3Y-OLJDS-ZSUQZ-QCBTS"
    "name" : "惠企执法",
    "appid" : "__UNI__B034821",
    "description" : "惠企执法",
    "versionName" : "1.0.0",
    "versionCode" : "100",
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
        "usingComponents" : true,
        "nvueStyleCompiler" : "uni-app",
        "compilerVersion" : 3,
        "splashscreen" : {
            "alwaysShowBeforeRender" : true,
            "waiting" : true,
            "autoclose" : true,
            "delay" : 0
        },
        /* 模块配置 */
        "modules" : {},
        /* 应用发布信息 */
        "distribute" : {
            /* android打包配置 */
            "android" : {
                "permissions" : [
                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                    "<uses-feature android:name=\"android.hardware.camera\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
                ]
            },
            /* ios打包配置 */
            "ios" : {},
            /* SDK配置 */
            "sdkConfigs" : {}
        }
      }
    },
    "title": "数字化生态圈",
    "router": {
      "mode": "history",
      "base": "/ecosphere-user/"
    /* 快应用特有相关 */
    "quickapp" : {},
    /* 小程序特有相关 */
    "mp-weixin" : {
        "appid" : "wxec87cd0359014ce3",
        "setting" : {
            "urlCheck" : false,
            "minified" : true
        },
        "usingComponents" : true,
        "permission" : {
            "scope.userLocation" : {
                "desc" : "您的位置将用于匹配最近门店或优惠券"
            }
        },
        "requiredPrivateInfos" : [ "getLocation", "chooseAddress" ]
    },
    "optimization": {
      "treeShaking": {
        "enable": true
      }
    "mp-alipay" : {
        "usingComponents" : true
    },
    "devServer": {
      "port": "",
      "https": false
    "mp-baidu" : {
        "usingComponents" : true
    },
    "template": "index.html"
  }
}
    "mp-toutiao" : {
        "usingComponents" : true
    },
    "uniStatistics" : {
        "enable" : false
    },
    "vueVersion" : "2",
    "h5" : {
        "sdkConfigs" : {
            "maps" : {
                "qqmap" : {
                    "key" : "2BUBZ-QGL33-2GO3Y-OLJDS-ZSUQZ-QCBTS"
                }
            }
        },
        "title" : "数字化生态圈",
        "router" : {
            "mode" : "history",
            "base" : "/ecosphere-user/"
        },
        "optimization" : {
            "treeShaking" : {
                "enable" : true
            }
        },
        "devServer" : {
            "port" : "",
            "https" : false
        },
        "template" : "index.html"
    }
}
pages/companyLogin/companyLogin.vue
@@ -1,16 +1,16 @@
<!-- 企业登录 -->
<template>
  <view class="companylogin">
    <u-navbar :autoBack="true" bgColor="transparent">
      <template slot="center">
      </template>
    </u-navbar>
    <view class="image-box">
      <image src="/static/policy/loginHeader.png" mode="widthFix"></image>
    </view>
    <view class="content-box">
      <!-- <u-form label-width="60" labelAlign="right" >
    <view class="companylogin">
        <u-navbar :autoBack="true" bgColor="transparent">
            <template slot="center">
            </template>
        </u-navbar>
        <view class="image-box">
            <image src="/static/policy/loginHeader.png" mode="widthFix" ></image>
        </view>
        <view class="content-box">
            <!-- <u-form label-width="60" labelAlign="right" >
                <u-form-item label="手机号">
                    <u-input style="width: 80%;" v-model="form.phone" placeholder="请输入"></u-input>
                </u-form-item>
@@ -23,294 +23,274 @@
                    </u-input>
                </u-form-item>
            </u-form> -->
      <view class="form">
        <view class="form-item margin-bottom">
          <view class="form-label">
            手机号
          </view>
          <view class="form-input">
            <input type="number" v-model="form.phone" placeholder="请输入11位手机号" />
          </view>
        </view>
        <view class="form-item">
          <view class="form-label">
            验证码
          </view>
          <view class="form-input set-flex set-flex-content-between">
            <input type="number" v-model="form.code" placeholder="请输入验证码" />
            <view>
              <text class="driver"></text>
              <text class="getcode">{{tips}}</text>
            </view>
          </view>
        </view>
      </view>
      <view style="margin-top: 56rpx;">
        <view class="per-button" @click="loging">登录</view>
      </view>
      <view @click="goRegister" class="company-register" v-if="form.userType == '02'">
        企业注册
      </view>
      <!-- <u--text text="企业注册" type="primary" @click="goRegister"></u--text> -->
    </view>
    <selectVue ref="selectVue" @select="select"></selectVue>
  </view>
            <view class="form">
                <view class="form-item margin-bottom">
                    <view class="form-label">
                        手机号
                    </view>
                    <view class="form-input">
                        <input type="number"  v-model="form.phone"  placeholder="请输入11位手机号"/>
                    </view>
                </view>
                <view class="form-item">
                    <view class="form-label">
                        验证码
                    </view>
                    <view class="form-input set-flex set-flex-content-between">
                        <input type="number" v-model="form.code"  placeholder="请输入验证码"/>
                        <view @tap='toGetCode'>
                            <text class="driver"></text>
                            <text class="getcode">{{tips}}</text>
                        </view>
                    </view>
                </view>
            </view>
            <view style="margin-top: 56rpx;">
                <view class="per-button" @click="loging">登录</view>
            </view>
             <view @click="goRegister" class="company-register" v-if="form.userType == '02'">
                 企业注册
             </view>
            <!-- <u--text text="企业注册" type="primary" @click="goRegister"></u--text> -->
        </view>
        <selectVue ref="selectVue" @select="select"></selectVue>
    </view>
</template>
<script>
  // 00营商办,01执法,02企业 区分不同的登陆页面
  import {
    getCode,
    codeLogin,
    getInfo,
    getCompanyList
  } from '@/api/auth.js'
  import selectVue from '@/components/select.vue'
  export default {
    components: {
      selectVue
    },
    data() {
      return {
        tips: '获取验证码',
        form: {
          phone: '',
          code: '',
          userType: '01'
        },
        loginToken: '',
        isSendCode: false,
        countdownTime: 20,
        timer: '',
        sessionToken: "",
        userInfo: {}
      }
    },
    onLoad(options) {
      if (options.code) {
        this.form.userType = options.code
      }
    },
    onUnload() {
      if (this.timer) {
        clearTimeout(this.timer)
        this.timer = null
      }
    },
    methods: {
      getCode() {
        if (!this.form.phone) {
          uni.showToast({
            title: '请输入手机号',
            icon: 'none'
          })
          return
        }
        if (!this.$u.test.mobile(this.form.phone)) {
          uni.showToast({
            title: '请输入正确的手机号',
            icon: 'none'
          })
          return
        }
        if (!this.isSendCode) {
          this.isSendCode = true
          uni.showLoading({
            title: '正在获取验证码'
          })
          getCode({
            phone: this.form.phone
          }).then(val => {
            if (val.data.code == 200) {
              this.startCountdown()
              uni.hideLoading();
              this.tips = `${this.countdownTime}s后重新获取`
              uni.$u.toast('验证码已发送');
            }
          }).catch(err => {
            this.isSendCode = false
          })
        } else {
          uni.$u.toast('倒计时结束后再发送');
        }
      },
      startCountdown() {
        if (this.timer) {
          clearTimeout(this.timer)
          this.timer = null
        }
        if (this.countdownTime <= 0) {
          this.tips = "重新获取"
          this.isSendCode = false
          this.countdownTime = 20
          return
        }
        this.timer = setTimeout(() => {
          this.countdownTime--
          this.tips = `${this.countdownTime}s后重新获取`
          this.startCountdown()
        }, 1000)
      },
      loging() {
        if (!this.form.phone) {
          uni.showToast({
            title: '请输入手机号',
            icon: 'none'
          })
          return
        }
        // if(!this.form.code){
        //     uni.showToast({
        //         title: '请输入验证码',
        //         icon: 'none'
        //     })
        //     return
        // }
        codeLogin(this.form).then(val => {
          if (val.data.token) {
            this.loginToken = val.data.token
            uni.setStorageSync('sessionToken', this.loginToken)
            this.getInfo()
          }
        })
      },
      getInfo() {
        getInfo().then(val => {
          // uni.setStorageSync('userInfo',  val.data.data)
          if (val.data.code === 200) {
            this.userInfo = val.data.data
            if (this.form.userType == '02') {
              // 获取企业
              this.getCompanyList(val.data.data.phonenumber)
            } else if (this.form.userType == '01') {
              uni.setStorageSync('userInfo', val.data.data)
              // uni.setStorageSync('sessionToken', this.loginToken)
              uni.reLaunch({
                url: `/policy/policyIndex/policyIndex`
              })
            } else {
              uni.setStorageSync('userInfo', val.data.data)
              // uni.setStorageSync('sessionToken', this.loginToken)
              uni.reLaunch({
                url: `/policy/policyIndex/policyIndex`
              })
            }
          } else {
            uni.removeStorageSync('sessionToken')
            uni.showToast({
              title: val.data.msg,
              icon: 'none'
            })
          }
        }).catch(err => {
          uni.removeStorageSync('sessionToken')
        })
      },
      goRegister() {
        uni.navigateTo({
          url: `/pages/registerCompany/registerCompany`
        })
      },
      getCompanyList(companyPhone) {
        getCompanyList({
          companyPhone,
          companyStatus: 0,
          checkStatus: 2
        }).then(val => {
          if (val.data.rows.length > 1) {
            this.$refs.selectVue.open(val.data.rows)
          } else {
            uni.setStorageSync('userInfo', this.userInfo)
            uni.reLaunch({
              url: `/qiye/qiyeIndex/qiyeIndex?id=${this.userInfo.deptId}`
            })
          }
        })
      },
      select(event) {
        uni.setStorageSync('userInfo', this.userInfo)
        uni.reLaunch({
          url: `/qiye/qiyeIndex/qiyeIndex?id=${event}`
        })
      }
    }
  }
    // 00营商办,01执法,02企业 区分不同的登陆页面
    import { getCode, codeLogin, getInfo, getCompanyList } from '@/api/auth.js'
    import selectVue from '@/components/select.vue'
    export default {
        components: {
            selectVue
        },
        data() {
            return {
                tips: '获取验证码',
                form: {
                    phone: '',
                    code: '',
                    userType: '01'
                },
                loginToken: '',
                isSendCode: false,
                countdownTime: 20,
                timer: '',
                sessionToken: "",
                userInfo: {}
            }
        },
        onLoad(options) {
            if(options.code) {
                this.form.userType = options.code
            }
        },
        onUnload() {
            if(this.timer) {
                clearTimeout(this.timer)
                this.timer = null
            }
        },
        methods: {
            toGetCode() {
                if(!this.form.phone){
                    uni.showToast({
                        title: '请输入手机号',
                        icon: 'none'
                    })
                    return
                }
                if(!this.$u.test.mobile(this.form.phone)){
                    uni.showToast({
                        title: '请输入正确的手机号',
                        icon: 'none'
                    })
                    return
                }
                if (!this.isSendCode) {
                    this.isSendCode = true
                    uni.showLoading({
                        title: '正在获取验证码'
                    })
                    getCode({phone: this.form.phone }).then(val => {
                            if(val.data.code == 200) {
                                this.startCountdown()
                                uni.hideLoading();
                                this.tips = `${this.countdownTime}s后重新获取`
                                uni.$u.toast('验证码已发送');
                            }
                    }).catch(err => {
                        this.isSendCode = false
                    })
                } else {
                    uni.$u.toast('倒计时结束后再发送');
                }
            },
            startCountdown() {
                if(this.timer) {
                    clearTimeout(this.timer)
                    this.timer = null
                }
                if(this.countdownTime <= 0) {
                    this.tips = "重新获取"
                    this.isSendCode = false
                    this.countdownTime = 20
                    return
                }
                this.timer = setTimeout(() => {
                    this.countdownTime--
                    this.tips = `${this.countdownTime}s后重新获取`
                    this.startCountdown()
                }, 1000)
            },
            loging() {
                if(!this.form.phone){
                    uni.showToast({
                        title: '请输入手机号',
                        icon: 'none'
                    })
                    return
                }
                if(!this.form.code){
                    uni.showToast({
                        title: '请输入验证码',
                        icon: 'none'
                    })
                    return
                }
                codeLogin(this.form).then(val => {
                    if(val.data.token) {
                        this.loginToken = val.data.token
                        uni.setStorageSync('sessionToken', this.loginToken)
                        this.getInfo()
                    }
                })
            },
            getInfo() {
                getInfo().then(val => {
                    // uni.setStorageSync('userInfo',  val.data.data)
                    if(val.data.code === 200) {
                        this.userInfo = val.data.data
                        if(this.form.userType == '02') {
                            // 获取企业
                            this.getCompanyList(val.data.data.phonenumber)
                        } else if(this.form.userType == '01'){
                            uni.setStorageSync('userInfo',  val.data.data)
                            // uni.setStorageSync('sessionToken', this.loginToken)
                            uni.reLaunch({
                                url:`/policy/policyIndex/policyIndex`
                            })
                        } else {
                            uni.setStorageSync('userInfo',  val.data.data)
                            // uni.setStorageSync('sessionToken', this.loginToken)
                            uni.reLaunch({
                                url:`/policy/policyIndex/policyIndex`
                            })
                        }
                    } else {
                        uni.removeStorageSync('sessionToken')
                        uni.showToast({
                            title: val.data.msg,
                            icon: 'none'
                        })
                    }
                }).catch(err => {
                    uni.removeStorageSync('sessionToken')
                })
            },
            goRegister() {
                uni.navigateTo({
                    url: `/pages/registerCompany/registerCompany`
                })
            },
            getCompanyList(companyPhone) {
                getCompanyList({companyPhone, companyStatus: 0, checkStatus: 2}).then(val => {
                    if(val.data.rows.length > 1){
                        this.$refs.selectVue.open(val.data.rows)
                    } else {
                        uni.setStorageSync('userInfo',  this.userInfo)
                        uni.reLaunch({
                            url:`/qiye/qiyeIndex/qiyeIndex?id=${this.userInfo.deptId}`
                        })
                    }
                })
            },
            select(event){
                uni.setStorageSync('userInfo',  this.userInfo)
                uni.reLaunch({
                    url:`/qiye/qiyeIndex/qiyeIndex?id=${event}`
                })
            }
        }
    }
</script>
<style scoped lang="scss">
  .companylogin {
    &>.image-box {
      width: 100%;
      height: 345rpx;
      text-align: center;
      background-color: #111;
      &>image {
        width: 100%;
        height: 345rpx;
      }
    }
    .content-box {
      border-radius: 40rpx 40rpx 0 0;
      padding: 40rpx 32rpx;
      position: relative;
      top: 80rpx;
      background-color: white;
      .form {
        .form-item {
          .form-label {
            font-size: 34rpx;
            margin: 0 0 24rpx 16rpx;
          }
          .form-input {
            background-color: #F7F7F7;
            padding: 20rpx;
            border-radius: 20rpx;
          }
        }
      }
      .margin-bottom {
        margin-bottom: 36rpx;
      }
      .getcode {
        color: #1171E0;
        font-size: 34rpx;
        font-weight: 500;
        width: 20%;
      }
      .driver {
        display: inline-block;
        vertical-align: middle;
        margin-right: 20rpx;
        width: 2rpx;
        height: 48rpx;
        background-color: #C3C6CD;
      }
    }
    .company-register {
      position: fixed;
      bottom: 32rpx;
      left: 50%;
      transform: translateX(-50%);
      padding: 16rpx 46rpx;
      color: #1171E0;
      display: inline-block;
      border-radius: 12rpx;
      border: 2rpx solid #ABD2FF;
      background: #F0F8FF;
    }
  }
  ::v-deep .u-radio {
    margin-bottom: 20rpx;
  }
    .companylogin {
        &>.image-box {
            width: 100%;
            height: 345rpx;
            text-align: center;
            background-color: #111;
            &>image{
                width: 100%;
                height: 345rpx;
            }
        }
        .content-box{
            border-radius: 40rpx 40rpx 0 0;
            padding: 40rpx 32rpx;
            position: relative;
            top: 80rpx;
            background-color: white;
            .form {
                .form-item{
                    .form-label{
                        font-size: 34rpx;
                        margin: 0 0 24rpx 16rpx;
                    }
                    .form-input{
                        background-color: #F7F7F7;
                        padding: 20rpx;
                        border-radius: 20rpx;
                    }
                }
            }
            .margin-bottom{
                margin-bottom: 36rpx;
            }
            .getcode{
                color: #1171E0;
                font-size: 34rpx;
                font-weight: 500;
                width: 20%;
            }
            .driver{
                display: inline-block;
                vertical-align: middle;
                margin-right: 20rpx;
                width: 2rpx;
                height: 48rpx;
                background-color: #C3C6CD;
            }
        }
        .company-register{
            position: fixed;
            bottom: 32rpx;
            left: 50%;
            transform: translateX(-50%);
            padding: 16rpx 46rpx;
            color: #1171E0;
            display: inline-block;
            border-radius: 12rpx;
            border: 2rpx solid #ABD2FF;
            background: #F0F8FF;
        }
    }
    ::v-deep .u-radio {
        margin-bottom: 20rpx;
    }
</style>
qiye/record/compositeDetails.vue
@@ -482,12 +482,12 @@
    }
  }
  /deep/.u-radio {
  ::v-deep .u-radio {
    margin-bottom: 20rpx;
    margin-right: 20rpx !important;
  }
  /deep/.u-radio-group {
  ::v-deep .u-radio-group {
    margin-top: 10rpx !important;
    flex-wrap: wrap !important;
  }