<template> <view class="container"> <!-- #ifdef MP-WEIXIN --> <view v-if="!token" class="force-login-wrap"> <!-- <image class="logo-bg" src="@/static/images/logo_bg.png" mode="aspectFill"></image> --> <view class="force-login__content y-f"> <open-data class="user-avatar" type="userAvatarUrl"></open-data> <open-data class="user-name" type="userNickName"></open-data> <view class="login-notice">为了提供更优质的服务,需要获取您的头像昵称</view> <button class="cu-btn author-btn" @getuserinfo="getUserInfo" open-type="getUserInfo">授权并查看</button> <button class="cu-btn close-btn" @tap="back">暂不授权</button> </view> </view> <!-- #endif --> <!-- #ifndef MP-WEIXIN --> <view class="force-login-wrap"> <!-- <image class="logo-bg" src="@/static/images/logo_bg.png" mode="aspectFill"></image> --> <view class="force-login__content y-f"> <view class="login-notice">为了提供更优质的服务,请先登录</view> <button class="cu-btn author-btn" @tap="toLogin">去登录</button> </view> </view> <!-- #endif --> </view> </template> <script> import { mapState, mapMutations, mapActions } from "vuex"; 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() { // // 先校验用户是否授权,如果没有授权,显示授权按钮 }, onHide() { this.updateAuthorizationPage(false); this.changeAuthorization(false); }, onUnload() { this.updateAuthorizationPage(false); this.changeAuthorization(false); }, methods: { ...mapActions(["changeAuthorization", "setUserInfo"]), ...mapMutations(["updateAuthorizationPage"]), toLogin() { this.$yrouter.push({ path: "/pages/user/Login/index", query: {}, }); }, 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, }); }); }, }, mounted() {}, }; </script> <style lang="less"> .container { flex: 1; display: flex; flex-direction: column; justify-content: flex-start; position: relative; } .force-login-wrap { width: 100%; height: 100%; overflow: hidden; z-index: 11111; top: 0; .logo-bg { width: 640rpx; height: 300rpx; } .force-login__content { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); .user-avatar { width: 160rpx; height: 160rpx; border-radius: 50%; overflow: hidden; margin-bottom: 40rpx; } .user-name { font-size: 35rpx; font-family: PingFang SC; font-weight: bold; color: #000; margin-bottom: 30rpx; } .login-notice { font-size: 28rpx; font-family: PingFang SC; font-weight: 400; color: #000; line-height: 44rpx; width: 500rpx; text-align: center; margin-bottom: 80rpx; } .author-btn { width: 630rpx; height: 80rpx; background: linear-gradient(to right, #f35447 0%, #ff8e3c 100%); background: -moz-linear-gradient(to right, #f35447 0%, #ff8e3c 100%); // box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22); border-radius: 40rpx; font-size: 30rpx; font-family: PingFang SC; font-weight: 500; color: rgba(255, 255, 255, 1); } .close-btn { width: 630rpx; height: 80rpx; margin-top: 30rpx; border-radius: 40rpx; border: 2rpx solid #eb3729; background: none; font-size: 30rpx; font-family: PingFang SC; font-weight: 500; color: #eb3729; } } } </style>