zhaojs
2023-07-07 55803b1a7b478aade9b6e59ca6675777375e2a92
uniapp/pages/login/wxlogin.vue
@@ -4,13 +4,20 @@
      <view class="pageContent borderBox colCen">
         <image class="applogo" :src="appInfo.logo" mode="aspectFill"></image>
         <view class="wxlogoBtn rowCenCen" @tap="wxlogin()" v-if="haswxlogin">
         <view class="wxlogoBtn rowCenCen" @tap="wxlogin()" v-if="supportWx">
            <image class="logoIcon" src="../../static/images/mine/wxwhite.png" mode=""></image>
            <view>微信一键登录</view>
         </view>
         <view class="goaccount rowCenCen" @tap="goaccount()">
         <view v-if="isSupportMob" class="goaccount rowCenCen" @tap="mobileLogin()">
            <view>本机手机号一键登录/注册</view>
         </view>
         <view v-else class="goaccount rowCenCen" @tap="goaccount()">
            <view>手机号登录/注册</view>
         </view>
         <view style="margin-top: 20px;" v-if="isother"  @tap="goaccount()">
            手机号登录/注册
         </view>
      </view>
      <view class="bottom-fixed colCen">
@@ -28,6 +35,7 @@
      mapMutations
   } from 'vuex';
   import titleBar from '../../components/backTitlebar.vue'
   const univerifyManager = uni.getUniverifyManager();
   export default {
      components: {
         titleBar
@@ -37,18 +45,43 @@
            appInfo: '',
            ifPasslogin: false,
            isread: false,
            haswxlogin: false
            haswxlogin: false,
            isSupportMob:false,
            isother:false,
            supportWx:true
         }
      },
      onLoad() {
         this.appInfo = uni.getStorageSync('appInfo')
         console.log(this.appInfo.iosExamine)
         console.log(getApp().globalData.ifwt)
         //this.haswxlogin = this.appInfo.iosExamine ? false : (getApp().globalData.ifwt == 1 ? true : false)
         this.haswxlogin = getApp().globalData.ifwt == 1 ? true :false;
         this.checkSupportWx();
         this.isSupportMoblie();
      },
      methods: {
         ...mapMutations(['login']),
         checkSupportWx()
         {
            // #ifdef APP-PLUS
             if (plus.os.name == 'iOS') {
               if (plus.runtime.isApplicationExist({
                     action: 'weixin://'
                  }) && plus.runtime.isApplicationExist({
                     action: 'taobao://'
                  })) {
                  this.supportWx = true //是否安装微信和淘宝 1代表安装
               } else {
                  this.supportWx = false
               }
            } else {
               if (plus.runtime.isApplicationExist({pname:'com.tencent.mm',
                     action: 'weixin://'
                  })) {
                  this.supportWx = true //是否安装微信 1代表安装
               } else {
                  this.supportWx = false
               }
            }
            // #endif
         },
         backHome() {
            var pages = getCurrentPages();
            console.log(pages.length);
@@ -61,6 +94,132 @@
                  delta: 1
               })
            }
         },
         isSupportMoblie()
         {
            var that=this;
            uni.preLogin({
               provider: 'univerify',
               success(){  //预登录成功
                  // 显示一键登录选项
                  that.isSupportMob=true;
               },
               fail(res){  // 预登录失败
                  // 不显示一键登录选项(或置灰)
                // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器
                  console.log(res)
               }
            })
         },
         doMobileLogin(mobRes)
         {
            //从缓存获取cid
            let clientInfo = uni.getStorageSync('clientInfo');
            let pushCid='';
            if(clientInfo&&clientInfo.clientid)
            {
               pushCid=clientInfo.clientid
            }
            var that=this;
            uniCloud.callFunction({
              name: 'getPhoneNumber', // 你的云函数名称
              data: {
                'access_token': mobRes.access_token, // 客户端一键登录接口返回的access_token
                'openid': mobRes.openid, // 客户端一键登录接口返回的openid
               'pushCid':pushCid//app推送cid
              }
            }).then(res => {
               console.log(res)
               that.targetToIndex(res.result.data);
              // 登录成功,可以关闭一键登录授权界面了
              univerifyManager.close();
            }).catch(err=>{
               // 处理错误
               console.log(err)
               that.isother=true;
               that.$alert('获取手机号码失败,请使用其他方式登录')
               setTimeout(function(){
                  univerifyManager.close();
               },2000);
            })
         },
         mobileLogin()
         {
            var that=this;
            if (this.isread) {
               univerifyManager.login({
                  provider: 'univerify',
                  univerifyStyle: { // 自定义登录框样式
                   "fullScreen":false,
                  "authButton":
                  {
                     "normalColor":"#F73314",
                     "highlightColor":"#F73314"
                  },
                  "privacyTerms":{
                     "defaultCheckBoxState":false
                  }
                 },
               success(res){ // 登录成功
                  console.log(res.authResult);
                  that.doMobileLogin(res.authResult);
                  },
                  fail(res){  // 登录失败
                  console.log(res)
                     if(res.errCode==30002)
                     {//切换登录方式
                        that.isother=true;
                        univerifyManager.close();
                     }
                     else
                     {
                        that.$alert('获取手机号码失败,请使用其他方式登录')
                        setTimeout(function(){
                           univerifyManager.close();
                        },2000);
                     }
                     that.isother=true;
                  }
               })
               }
               else
               {
                  uni.showToast({
                     title: '请先阅读并同意《用户协议》和《隐私协议》',
                     icon: "none",
                  })
               }
         },
         targetToIndex(e)
         {
            var that = this;
            that.login(e.data.userinfo);
            that.$alert('登录成功')
            setTimeout(function(){
               console.log(e.data.userinfo)
               if(!e.data.userinfo.invitation_code)
               {
                  uni.redirectTo({
                     url: './setInviteCode'
                  })
               }
               /* else if (e.data.userinfo.isPwd == 'N') {
                  uni.redirectTo({
                     url: './setPass'
                  })
               } */ else {
                  uni.switchTab({
                     url: '../index/index'
                  })
               }
            },1000)
         },
         wxlogin() {
            var that = this;
@@ -80,20 +239,7 @@
                                 if (e.code != 0) return that.$alert(e.msg)
                                 var res = e.data;
                                 if(res.type == 'goUser'){
                                    that.login(e.data.userinfo);
                                    that.$alert('登录成功')
                                    setTimeout(function() {
                                       if (res.userinfo.isPwd ==
                                          'N') {
                                          uni.redirectTo({
                                             url: './setPass'
                                          })
                                       } else {
                                          uni.switchTab({
                                             url: '../index/index'
                                          })
                                       }
                                    }, 1000)
                                    this.targetToIndex(e);
                                 }else if(res.type == 'bindMobile'){
                                    uni.navigateTo({
                                       url: "./bindingPhone?wx="+encodeURIComponent(JSON.stringify(res.info))