78 lines
1.9 KiB
Vue

<template>
<div class="login_background">
<div class="login_background_front"></div>
<div class="login_main">
<div class="login-form">
<a-card>
<div class="login-header">
<h2>三方登录</h2>
</div>
<a-spin tip="正在登录中...">
<div class="h-[300px]">
<a-skeleton />
</div>
</a-spin>
</a-card>
</div>
</div>
</div>
</template>
<script setup name="loginCallback">
import { message } from 'ant-design-vue'
import tool from '@/utils/tool'
import router from '@/router'
import thirdApi from '@/api/auth/thirdApi'
import loginApi from '@/api/auth/loginApi'
import userCenterApi from '@/api/sys/userCenterApi'
import dictApi from '@/api/dev/dictApi'
import { onMounted } from 'vue'
onMounted(() => {
// 获取当前url
const url = new URL(window.location.href)
let argLength = 0
const params = {}
url.searchParams.forEach((value, key) => {
argLength += 1
params[key] = value
})
// 当然了,不可能只有一个参数
if (argLength < 2) {
window.location.href = '/login'
return
}
thirdApi
.thirdCallback(params)
.then((data) => {
tool.data.set('TOKEN', data)
// 获取登录的用户信息
loginApi.getLoginUser().then((loginUser) => {
tool.data.set('USER_INFO', loginUser)
})
userCenterApi.userLoginMenu().then((menu) => {
const indexMenu = menu[0].children[0].path
tool.data.set('MENU', menu)
// 重置系统默认应用
tool.data.set('SNOWY_MENU_MODULE_ID', menu[0].id)
router.replace({
path: indexMenu
})
message.success('登录成功')
dictApi.dictTree().then((dictData) => {
// 设置字典到store中
tool.data.set('DICT_TYPE_TREE_DATA', dictData)
})
})
})
.catch(() => {
window.location.href = '/login'
})
})
</script>
<style lang="less" scoped>
@import 'login';
</style>