auth.vue 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <div v-loading="loading" class="hc-body-loading" element-loading-text="授权登录中...">
  3. <div v-if="isErrorShow" class="error-page">
  4. <div class="img" :style="`background-image: url(${svg403});`" />
  5. <div class="content">
  6. <h1>403</h1>
  7. <div class="desc">
  8. 抱歉,token授权登录异常,请重新进入
  9. </div>
  10. <div class="actions">
  11. <el-button type="primary" block size="large" @click="toLoginTap">
  12. 手动登录
  13. </el-button>
  14. </div>
  15. </div>
  16. </div>
  17. </div>
  18. </template>
  19. <script setup>
  20. import { onMounted, ref } from 'vue'
  21. import { useAppStore } from '~src/store'
  22. import { useAppLogin } from '~sto/user'
  23. import userApi from '~api/userInfo'
  24. import { useRoute, useRouter } from 'vue-router'
  25. import svg403 from '~src/assets/view/403.svg'
  26. //初始变量
  27. const router = useRouter()
  28. const useRoutes = useRoute()
  29. const useAppState = useAppStore()
  30. //变量
  31. const loading = ref(true)
  32. const isErrorShow = ref(false)
  33. //渲染完成
  34. onMounted(() => {
  35. // 域名后加 /#/auth?token=xxxxxxx
  36. const { token } = useRoutes.query
  37. console.log(token)
  38. if (token) {
  39. isErrorShow.value = false
  40. useAppState.setTokenVal(token)
  41. queryCurrentUserData()
  42. } else {
  43. loading.value = false
  44. isErrorShow.value = true
  45. }
  46. })
  47. //获取用户信息
  48. const queryCurrentUserData = async () => {
  49. const { error, code, data } = await userApi.queryCurrentUserData()
  50. if (!error && code === 200) {
  51. await useAppLoginApi({
  52. tenantId: '000000',
  53. username: data.account,
  54. password: data.plaintextPassword,
  55. type: 'account',
  56. })
  57. } else {
  58. window.$message?.error('授权信息异常')
  59. isErrorShow.value = true
  60. loading.value = false
  61. }
  62. }
  63. //请求授权登录
  64. const useAppLoginApi = async (form) => {
  65. loading.value = true
  66. useAppLogin(form).then(() => {
  67. loading.value = false
  68. isErrorShow.value = false
  69. window?.$message?.success('授权登录成功')
  70. // router.push({path: '/home/index'});
  71. router.push({ path: '/using/stats' })//跳转到档案统计页面
  72. }).catch(() => {
  73. window.$message?.error('授权登录失败')
  74. isErrorShow.value = true
  75. loading.value = false
  76. })
  77. }
  78. //跳转登陆
  79. const toLoginTap = () => {
  80. router.push({ path: '/login' })
  81. }
  82. </script>
  83. <style lang="scss" scoped>
  84. @import "../../styles/error/style.scss";
  85. .hc-body-loading {
  86. position: relative;
  87. height: 100%;
  88. width: 100%;
  89. }
  90. </style>