Browse Source

手机号登录

shish 1 year ago
parent
commit
943d083c29
2 changed files with 57 additions and 9 deletions
  1. 53 5
      mallApp/src/components/wangCg.vue
  2. 4 4
      mallApp/src/pages/member/recharge.vue

+ 53 - 5
mallApp/src/components/wangCg.vue

@@ -24,9 +24,9 @@
         
         <!-- 按钮区域 -->
         <view class="button-section">
-          <view class="login-btn" @click="login">
+          <button class="login-btn" open-type="getPhoneNumber" @getphonenumber="getWxMobile">
             <text class="btn-text">手机号一键登录</text>
-          </view>
+          </button>
         </view>
         
         <!-- 说明文字 -->
@@ -41,6 +41,10 @@
 </template>
 
 <script>
+import { getWxPhone } from "@/api/mini"
+import { create } from "@/api/user"
+import store from '@/store'
+
 export default {
   props: {
     loginStyle: {
@@ -50,12 +54,50 @@ export default {
   },
   data() {
     return {
-      
+      form: {
+        mobile: ""
+      }
     };
   },
   methods: {
-    login() {
-        this.$emit('goToLogin')
+    getWxMobile(e) {
+      let that = this
+      if (e.detail.errMsg === "getPhoneNumber:ok") {
+        let currentMiniOpenId = uni.getStorageSync('miniOpenId')
+        getWxPhone({ iv: e.detail.iv, encryptedData: e.detail.encryptedData, miniOpenId: currentMiniOpenId }).then(subRes => {
+            if(subRes.data && subRes.data.hasNoOpenId && subRes.data.hasNoOpenId == 1){
+              uni.showModal({
+                title: '提示',
+                content: '网络异常,请重试一次',
+                success: function (res) {
+                  if (res.confirm) {
+                    console.log('用户点击确定')
+                  }
+                }
+              })
+              return false
+            }
+            this.form.mobile = subRes.data.mobile
+            that.confirmFn()
+        })
+      } else {
+        this.$msg("获取手机失败");
+      }
+    },
+    confirmFn() {
+      let currentMiniOpenId = uni.getStorageSync('miniOpenId')
+      let that = this
+      create({miniOpenId: currentMiniOpenId, ...this.form}).then(res => {
+        if(res.code == 1){
+          uni.setStorageSync('token', res.data.token)
+          if(res.data.user && !that.$util.isEmpty(res.data.user)){
+            store.commit('setLoginInfo', res.data.user)
+            that.$msg('登录成功')
+            // 登录成功后触发事件通知父组件
+            this.$emit('loginSuccess', res.data.user)
+          }
+        }
+      })
     }
   },
 };
@@ -205,12 +247,18 @@ export default {
     transition: all 0.3s ease;
     border: none;
     cursor: pointer;
+    padding: 0;
+    margin: 0;
     
     &:active {
       transform: translateY(2upx);
       box-shadow: 0 4upx 12upx rgba(238, 90, 36, 0.4);
     }
     
+    &::after {
+      border: none;
+    }
+    
     .btn-icon {
       font-size: 32upx;
       margin-right: 12upx;

+ 4 - 4
mallApp/src/pages/member/recharge.vue

@@ -100,7 +100,7 @@
 			</view>
 		</ModalModule>
 
-		<wangCg :loginStyle.sync="globalLoginStyle" @goToLogin="loginTo()"></wangCg>
+		<wangCg :loginStyle.sync="globalLoginStyle" @loginSuccess="loginSuccess()"></wangCg>
 
 	</view>
 </template>
@@ -178,11 +178,11 @@ export default {
 		getRecharge(amount){
 			this.amount = amount
 		},
-		loginTo() {
-			this.$util.pageTo({url:"/pages/login/index?needBack=1"})
+		loginSuccess(user) {
+			this.beginInit()
 		},
 		init(){
-			this.beginInit();
+			this.beginInit()
 		},
 		beginInit() {
 			if(this.option.hdId){