|  |  | 
 |  |  |         <view class="flex" style="justify-content: center; margin-top: 150px;">
 | 
 |  |  |             <u--image :showLoading="true" v-if="false"
 | 
 |  |  |                 src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/6e/6e74997e6d4c4a29be3903b35bc1f38fwechat.png"
 | 
 |  |  |                 width="40rpx" height="40rpx" @click="handleWechatClick">
 | 
 |  |  |                 width="40rpx" height="40rpx">
 | 
 |  |  |             </u--image>
 | 
 |  |  |             <u-grid :border="false" :col="1">
 | 
 |  |  |                 <u-grid-item @click="handleWechatClick">
 | 
 |  |  |                 <u-grid-item v-if="wxUser.user" @click="handleWechatClick">
 | 
 |  |  |                     <u--image :showLoading="true"
 | 
 |  |  |                         src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/6e/6e74997e6d4c4a29be3903b35bc1f38fwechat.png"
 | 
 |  |  |                         width="40rpx" height="40rpx" @click="handleWechatClick">
 | 
 |  |  |                         width="60rpx" height="60rpx" >
 | 
 |  |  |                     </u--image>
 | 
 |  |  |                     <text class="third-login-text" @click="handleWechatClick">微信登录</text>
 | 
 |  |  | 					 | 
 |  |  | 					 | 
 |  |  |                 </u-grid-item>
 | 
 |  |  | 				 | 
 |  |  |                     <u-grid-item v-else>
 | 
 |  |  | 						 | 
 |  |  |                         <button class="component-button-contact" style="font-size: 18rpx; margin: auto;" open-type="getPhoneNumber" @getphonenumber="handleGetPhoneNumber" >
 | 
 |  |  |                             <view style="display: flex; align-items: center;">
 | 
 |  |  |                                 <u--image :showLoading="true"
 | 
 |  |  |                                     src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/6e/6e74997e6d4c4a29be3903b35bc1f38fwechat.png"
 | 
 |  |  |                                     width="60rpx" height="60rpx" >
 | 
 |  |  |                                 </u--image>
 | 
 |  |  | 							 | 
 |  |  |                             </view>
 | 
 |  |  |                         </button>
 | 
 |  |  | 						 | 
 |  |  |                     </u-grid-item>
 | 
 |  |  | 				 | 
 |  |  |             </u-grid>
 | 
 |  |  |         </view>
 | 
 |  |  |         <!-- #endif -->
 | 
 |  |  | 
 |  |  | <script>
 | 
 |  |  | export default {
 | 
 |  |  |     async onLoad(options) {
 | 
 |  |  | 
 | 
 |  |  |         // this.getOpenId();
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  |         this.source = options.source || ''
 | 
 |  |  |         this.sharePartnerUserId = options.sharePartnerUserId || ''
 | 
 |  |  |         // #ifdef PUB_CUSTOMER
 | 
 |  |  | 
 |  |  |         // #endif
 | 
 |  |  | 
 | 
 |  |  |     },
 | 
 |  |  | 
 | 
 |  |  |     onShow() {
 | 
 |  |  |         this.getOpenId();
 | 
 |  |  |     },
 | 
 |  |  |     onShareAppMessage() {
 | 
 |  |  |         let that = this;
 | 
 |  |  |         var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO &&
 | 
 |  |  | 
 |  |  |             apitype: 'loginCustomer',
 | 
 |  |  |             // #endif
 | 
 |  |  |             // return 'loginPartner'
 | 
 |  |  | 			 | 
 |  |  | 
 | 
 |  |  |             wxUser:{
 | 
 |  |  |                 openId:'',
 | 
 |  |  |                 sessionKey:'',
 | 
 |  |  |                 unionId:'',
 | 
 |  |  |                 user:{},
 | 
 |  |  |                 phoneNumber:'',
 | 
 |  |  |                 purePhoneNumber:'',
 | 
 |  |  |             },
 | 
 |  |  | 
 | 
 |  |  |         };
 | 
 |  |  |     },
 | 
 |  |  |     methods: {
 | 
 |  |  | 
 | 
 |  |  |         getOpenId(){
 | 
 |  |  |             let that=this
 | 
 |  |  |             uni.login({
 | 
 |  |  |                 "provider": "weixin",
 | 
 |  |  |                 "onlyAuthorize": true, // 微信登录仅请求授权认证
 | 
 |  |  |                 success: async function (event) {
 | 
 |  |  |                     console.log("aaaa")
 | 
 |  |  |                     console.log(event)
 | 
 |  |  |                     const { code } = event
 | 
 |  |  |                     await that.getExistUserByOpenId(code);
 | 
 |  |  |                     that.wxLoginCode=code
 | 
 |  |  |                     console.log("wxUser")
 | 
 |  |  |                     console.log(that.wxUser)
 | 
 |  |  | 
 | 
 |  |  |                 },
 | 
 |  |  |                 fail: function (err) {
 | 
 |  |  |                     // 登录授权失败
 | 
 |  |  |                     // err.code是错误码
 | 
 |  |  |                 }
 | 
 |  |  |             })
 | 
 |  |  |         },
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  |         async handleGetPhoneNumber(e){
 | 
 |  |  |             let that = this
 | 
 |  |  |             console.log(e)
 | 
 |  |  |             console.log(e.detail.code)  // 动态令牌
 | 
 |  |  |             console.log(e.detail.errMsg) // 回调信息(成功失败都会返回)
 | 
 |  |  |             console.log(e.detail.errno)  // 错误码(失败时返回)
 | 
 |  |  |             if (e.detail.errMsg == 'getPhoneNumber:ok') {
 | 
 |  |  |                 console.log('获取成功')
 | 
 |  |  |                 const {
 | 
 |  |  |                     code,data
 | 
 |  |  |                 } = await that.$http.request('post', '/api/wx/getuserphonenumber', {
 | 
 |  |  |                     data: {
 | 
 |  |  |                         code: e.detail.code,
 | 
 |  |  |                         userType: that.apitype.replace("login", "").toLowerCase()
 | 
 |  |  |                     }
 | 
 |  |  |                 })
 | 
 |  |  |                 if (code == 0) {
 | 
 |  |  |                     // 获取手机号码后,实现微信登录
 | 
 |  |  |                     console.log(data)
 | 
 |  |  |                     const phoneNumber=data.phone_info.phoneNumber;
 | 
 |  |  |                     const purePhoneNumber=data.phone_info.purePhoneNumber;
 | 
 |  |  |                     that.wxUser.phoneNumber=phoneNumber
 | 
 |  |  |                     that.wxUser.purePhoneNumber=purePhoneNumber
 | 
 |  |  |                     that.handleWechatClick()
 | 
 |  |  |                 } else {
 | 
 |  |  | 					 | 
 |  |  |                 }
 | 
 |  |  |             }else{
 | 
 |  |  |                 this.$message.showToast('获取授权失败,无法登录!')
 | 
 |  |  |             }
 | 
 |  |  |         },
 | 
 |  |  | 
 | 
 |  |  |         async getExistUserByOpenId(accessCode){
 | 
 |  |  |             let that=this;
 | 
 |  |  |             const {
 | 
 |  |  |                     code,data
 | 
 |  |  |                 } = await that.$http.request('post', '/api/wx/getExistUserByOpenId', {
 | 
 |  |  |                     data: {
 | 
 |  |  |                         code: accessCode,
 | 
 |  |  |                         userType: that.apitype.replace("login", "").toLowerCase()
 | 
 |  |  |                     }
 | 
 |  |  |                 })
 | 
 |  |  |                 if (code == 0) {
 | 
 |  |  |                     console.log("查看当前用户是否已经绑定过")
 | 
 |  |  |                     console.log(data)
 | 
 |  |  |                     that.wxUser=data
 | 
 |  |  |                     if(that.wxUser&&that.wxUser.user){
 | 
 |  |  |                         return true
 | 
 |  |  |                     }
 | 
 |  |  |                     return false
 | 
 |  |  |                 } else {
 | 
 |  |  |                     this.$message.showToast('系统异常,无法获取当前微信是否已经绑定过账号')
 | 
 |  |  |                 }
 | 
 |  |  |         },
 | 
 |  |  | 
 | 
 |  |  |         handleWechatClick22() {
 | 
 |  |  |             uni.login({
 | 
 |  |  |                 provider: 'univerify',
 | 
 |  |  |                 univerifyStyle: {
 | 
 |  |  |                     fullScreen: true
 | 
 |  |  |                 }
 | 
 |  |  |             })
 | 
 |  |  |         },
 | 
 |  |  | 
 | 
 |  |  |         handleWechatClick_new() {
 | 
 |  |  |             let that = this
 | 
 |  |  |             // 微信登录
 | 
 |  |  |             uni.login({
 | 
 |  |  |                 "provider": "weixin",
 | 
 |  |  |                 "onlyAuthorize": true, // 微信登录仅请求授权认证
 | 
 |  |  |                 success: async function (event) {
 | 
 |  |  |                     const { code } = event
 | 
 |  |  |                     that.$message.showLoading();
 | 
 |  |  |                     // 1.解析当前code,查看当前的openid是否已经绑定过用户,
 | 
 |  |  |                     // 2.如果没有的话,则获取当前手机号,并注册信息用户绑定再登录
 | 
 |  |  |                     // 3.如果已经绑定过用户,则直接登录
 | 
 |  |  |                     console.log("查看当前用户是否已经绑定过")
 | 
 |  |  |                     const resp = await that.getExistUserByOpenId(code)
 | 
 |  |  |                     if(resp){
 | 
 |  |  |                         // 已经绑定过用户,则直接登录
 | 
 |  |  |                         const resp = await that.$store.dispatch('loginwx', { code })
 | 
 |  |  |                         if (resp && resp.data) {
 | 
 |  |  |                             that.$forceUpdate()
 | 
 |  |  |                             uni.reLaunch({
 | 
 |  |  |                                 url: '/pages/home/home'
 | 
 |  |  |                             })
 | 
 |  |  |                         }
 | 
 |  |  |                     }else{
 | 
 |  |  |                         // 没有绑定过用户,则获取当前手机号,并注册信息用户绑定再登录
 | 
 |  |  |                         // let el = uni.createSelectorQuery().in(this).select('#phoneButton');
 | 
 |  |  |                         // console.log(el)
 | 
 |  |  |                         // 使用 uni.createSelectorQuery 获取按钮元素
 | 
 |  |  |                         uni.createSelectorQuery().select('#phoneButton').boundingClientRect((rect) => {
 | 
 |  |  |                             if (rect) {
 | 
 |  |  |                             // 获取到按钮后,模拟点击
 | 
 |  |  |                             uni.createSelectorQuery().select('#phoneButton').node((res) => {
 | 
 |  |  |                                 if (res.node) {
 | 
 |  |  |                                 res.node.click(); // 模拟点击
 | 
 |  |  |                                 }
 | 
 |  |  |                             }).exec();
 | 
 |  |  |                             }
 | 
 |  |  |                         }).exec();
 | 
 |  |  |                     }
 | 
 |  |  | 					 | 
 |  |  | 
 | 
 |  |  |                     // const resp = await that.$store.dispatch('loginwx', { code })
 | 
 |  |  |                     // if (resp && resp.data) {
 | 
 |  |  |                     //     that.$forceUpdate()
 | 
 |  |  |                     //     uni.reLaunch({
 | 
 |  |  |                     //         url: '/pages/home/home'
 | 
 |  |  |                     //     })
 | 
 |  |  |                     // }
 | 
 |  |  |                     that.$message.hideLoading();
 | 
 |  |  |                 },
 | 
 |  |  |                 fail: function (err) {
 | 
 |  |  |                     // 登录授权失败
 | 
 |  |  |                     // err.code是错误码
 | 
 |  |  |                 }
 | 
 |  |  |             })
 | 
 |  |  | 
 | 
 |  |  |         },
 | 
 |  |  | 
 | 
 |  |  | 		 | 
 |  |  |         handleWechatClick() {
 | 
 |  |  |             let that = this
 | 
 |  |  |             // 微信登录
 | 
 |  |  | 
 |  |  |                 "provider": "weixin",
 | 
 |  |  |                 "onlyAuthorize": true, // 微信登录仅请求授权认证
 | 
 |  |  |                 success: async function (event) {
 | 
 |  |  |                     console.log("客户端成功获取授权临时票据(code),向业务服务器发起登录请求。")
 | 
 |  |  |                     console.log(event)
 | 
 |  |  |                     const { code } = event
 | 
 |  |  |                     console.log('code', code)
 | 
 |  |  |                     that.$message.showLoading();
 | 
 |  |  |                     const resp = await that.$store.dispatch('loginwx', { code })
 | 
 |  |  |                     const resp = await that.$store.dispatch('loginwx', { code,phoneNumber:that.wxUser.phoneNumber,purePhoneNumber:that.wxUser.purePhoneNumber })
 | 
 |  |  |                     if (resp && resp.data) {
 | 
 |  |  |                         that.$forceUpdate()
 | 
 |  |  |                         uni.reLaunch({
 | 
 |  |  |                             url: '/pages/home/home'
 | 
 |  |  |                         })
 | 
 |  |  |                     }
 | 
 |  |  |                     // const resp = await that.$http.request('get', '/api/wx/jscode2session', {
 | 
 |  |  |                     //     params: {
 | 
 |  |  |                     //         jsCode: code,
 | 
 |  |  |                     //         userType: that.apitype.replace("login", "").toLowerCase()
 | 
 |  |  |                     //     }
 | 
 |  |  |                     // });
 | 
 |  |  |                     that.$message.hideLoading();
 | 
 |  |  |                     // console.log('resp', resp)
 | 
 |  |  |                     // if (resp && resp.data) {
 | 
 |  |  |                     //     var cts = resp.data;
 | 
 |  |  |                     //     var openid = cts.openid; //openid 用户唯一标识
 | 
 |  |  |                     //     if (cts && cts.openid) {
 | 
 |  |  |                     //         that.$storage.setItem('openid', cts.openid);
 | 
 |  |  |                     //     }
 | 
 |  |  | 
 | 
 |  |  |                     //     var session_key = cts.session_key; //session_key  会话密钥
 | 
 |  |  | 
 | 
 |  |  |                     //     if (true) {
 | 
 |  |  |                     //         if (!!cts.errmsg) {
 | 
 |  |  |                     //             that.$message.showToast('获取失败' + cts.errmsg);
 | 
 |  |  |                     //         } else {
 | 
 |  |  |                     //             //成功了,再调用
 | 
 |  |  |                     //             uni.getUserInfo({
 | 
 |  |  |                     //             provider: 'weixin',
 | 
 |  |  |                     //             success: function (infoRes) {
 | 
 |  |  |                     //                 console.log("uni.getUserInfo")
 | 
 |  |  |                     //                 console.log(infoRes)
 | 
 |  |  |                     //                 console.log('用户信息:', infoRes.userInfo);
 | 
 |  |  |                     //             },
 | 
 |  |  |                     //             fail: function (err) {
 | 
 |  |  |                     //                 console.error('获取用户信息失败:', err);
 | 
 |  |  |                     //             },
 | 
 |  |  |                     //             });
 | 
 |  |  | 
 | 
 |  |  |                     //         }
 | 
 |  |  |                     //     }
 | 
 |  |  |                     // }
 | 
 |  |  |                 },
 | 
 |  |  |                 fail: function (err) {
 | 
 |  |  |                     // 登录授权失败
 | 
 |  |  | 
 |  |  |     font-size: 18rpx;
 | 
 |  |  |     margin-top:5rpx;
 | 
 |  |  | }
 | 
 |  |  | 
 | 
 |  |  | </style> |