<template> <view class="container"> <view v-if="!token"> <!-- 小程序 --> <view v-if="$deviceType == 'routine'&&authorize"> <view class="getUserInfo"> <text>您还未允许微信登录授权,请点击下方按钮允许微信授权登录。</text> <button type="primary" open-type="getUserInfo" @getuserinfo="getUserInfo">允许微信登录授权</button> <view style="height:20rpx"></view> <button @click="back">取消微信登录授权</button> </view> </view> <!-- app --> <view v-if="$deviceType == 'app'&&authorize"> <view class="getUserInfo"> <text>请先登录</text> <button type="primary" @click="this.toLogin">去登录</button> </view> </view> <view v-if="!authorize"> <view class="getUserInfo"> <text>登录中</text> </view> </view> </view> </view> </template> <script> import { mapState, mapMutations, mapActions } from "vuex"; // 组件 // import request from "@//api/request"; import { wxappAuth, getUser } from "@/api/user"; import dayjs from "dayjs"; import cookie from "@/utils/store/cookie"; import { login, authorize } from "@/utils"; export default { data() { return { authorize: false }; }, computed: { ...mapState(["isAuthorization", "$deviceType", "token"]) }, onShow() { // // 先校验用户是否授权,如果没有授权,显示授权按钮 console.log("onShow 先校验用户是否授权,如果没有授权,显示授权按钮"); authorize("userInfo") .then(res => { console.log(res); }) .catch(error => { console.log(error); // 用户未授权,显示授权按钮 this.authorize = true; }); }, onHide() { console.log("离开授权页面,11111"); this.updateAuthorizationPage(false); this.changeAuthorization(false); }, onUnload() { console.log("离开授权页面,11111"); this.updateAuthorizationPage(false); this.changeAuthorization(false); }, methods: { ...mapActions(["changeAuthorization", "setUserInfo"]), ...mapMutations(["updateAuthorizationPage",]), back() { this.$yrouter.switchTab({ path: "/pages/home/index", query: {} }); }, getUserInfo(data) { if (data.detail.errMsg == "getUserInfo:fail auth deny") { uni.showToast({ title: "取消授权", icon: "none", duration: 2000 }); return; } uni.showLoading({ title: "登录中" }); login() .then(res => { this.$yrouter.replace({ path: cookie.get("redirect") }); }) .catch(error => { console.log(error); uni.showToast({ title: error, icon: "none", duration: 2000 }); }); }, toLogin() { this.$yrouter.push({ path: "/pages/user/Login/index", query: {} }); } }, onUnload() { console.log("离开授权页面,11111"); this.updateAuthorizationPage(false); this.changeAuthorization(false); }, mounted() { // // 先校验用户是否授权,如果没有授权,显示授权按钮 console.log("mounted 先校验用户是否授权,如果没有授权,显示授权按钮"); authorize("userInfo") .then(res => { console.log(res); }) .catch(error => { console.log(error); // 用户未授权,显示授权按钮 this.authorize = true; }); } }; </script> <style lang="less"> .sp-cell { height: 20rpx; } .getUserInfo { display: flex; align-items: center; flex-direction: column; padding: 30px; text { font-size: 30rpx; text-align: center; margin-bottom: 20px; } } .container { flex: 1; display: flex; flex-direction: column; justify-content: flex-start; position: relative; } .tab-bar { font-size: 0; display: flex; align-items: center; background: rgba(255, 255, 255, 0.9); position: fixed; bottom: 0; left: 0; right: 0; z-index: 99; border-top: 1px solid rgba(248, 248, 248, 1); .tab-bar-item { flex: 1; height: 49px; display: flex; justify-content: center; align-items: center; flex-direction: column; &.active { text { color: #ee7559; } .tab-bar-pic { display: none; background: #f9f9f9; &.active { display: block; } } } .tab-bar-pic { display: block; background: #f9f9f9; &.active { display: none; } } } .tab-bar-pic { width: 25px; height: 25px; background: #f9f9f9; image { width: 25px; height: 25px; } } .tab-bar-pic-active { } text { font-size: 10px; color: rgb(160, 160, 160); line-height: 10px; margin-top: 5px; } } .tab-bar-bg { padding-top: 46px; width: 100%; } .view-item { display: none; width: 100%; } .view-item-active { display: block; } .getUserInfo { display: flex; align-items: center; flex-direction: column; padding: 30px; p { margin-bottom: 20px; } } ._van-dialog { z-index: 99999999999; } </style>