移动端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

149 lines
3.1 KiB

<template>
<view class="container">
<u--image
src="/static/favicon.png"
width="288rpx"
height="288rpx"
mode="aspectFit"
:fade="true"
duration="450"
></u--image>
<text class="title">智慧生态</text>
</view>
</template>
<script>
import { getAccessToken, setOpenId, getOpenId } from '@/utils/auth'
export default {
name: 'Login',
data() {
return {
inviteId: '',
timer: null
}
},
onLoad(options) {
if (options.inviteId) {
this.inviteId = options.inviteId
}
this.initApp()
},
methods: {
// 初始化应用
async initApp() {
await uni.hideTabBar()
uni.hideTabBar({
animation: false
})
if (!getOpenId()) {
// 如果没有openid则获取
this.getWxOpenId().then(() => {
this.checkLogin()
})
} else {
// 检查用户登录状态
this.checkLogin()
}
},
checkLogin() {
console.log('accessToken', getAccessToken())
if (!getAccessToken()) {
// 如果没有token则获取
this.login()
} else {
this.loginSuccess()
}
},
getWxOpenId() {
return new Promise((resolve, reject) => {
uni.login({
success: res => {
setOpenId(res.code)
resolve()
},
fail: err => {
reject()
}
})
})
},
login() {
const data = {
type: 34,
code: getOpenId(),
state: 'default',
userType: this.getUserType()
}
this.$store.dispatch('Login', data).then(() => {
this.loginSuccess()
})
},
getUserType() {
// 企业邀请
if (this.inviteId) return 2
// if (this.type == 'internal') return 3
// return 1
return 3
},
loginSuccess() {
this.$store.dispatch('GetInfo').then(res => {
this.handlerNavigateTo(res.data.user)
})
},
handlerNavigateTo(user) {
// 邀请企业
if (this.inviteId) {
uni.reLaunch({
url: `/sub/invite/index?inviteId=${this.inviteId}`
})
return
}
if (user.userType == 2) {
uni.reLaunch({
url: `/sub/invite/index`
})
return
}
// 局内用户首次登录
if (user.audit == null || user.audit == 1) {
// 局内用户首次登录
uni.reLaunch({
url: `/sub/owner/edit?audit=${user.audit}`
})
return
}
uni.switchTab({
url: '/pages/index'
})
}
}
}
</script>
<style lang="scss" scoped>
.container {
height: 100vh;
width: 100vw;
display: flex;
justify-content: center;
align-items: center;
flex-flow: column nowrap;
gap: 40rpx;
background: var(--LightMode-Success-Success, #17c653);
.title {
color: var(--LightMode-Light-Light, #fff);
text-align: center;
text-shadow: 0px 2px 2px rgba(255, 255, 255, 0.12);
font-family: ShiShangJianTi;
font-size: 80rpx;
font-style: normal;
font-weight: 400;
line-height: normal;
letter-spacing: 4rpx;
}
}
</style>