auth.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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">抱歉,token授权登录异常,请重新进入</div>
  8. <div class="actions">
  9. <el-button type="primary" block size="large" @click="toLoginTap">手动登录</el-button>
  10. </div>
  11. </div>
  12. </div>
  13. </div>
  14. </template>
  15. <script setup>
  16. import { onMounted, ref } from 'vue'
  17. import { useAppStore } from '~src/store'
  18. import { setUserTenantInfo, useAppLogin } from '~sto/user'
  19. import { useRoute, useRouter } from 'vue-router'
  20. import { getObjValue, isNullES } from 'js-fast-way'
  21. import svg403 from '~src/assets/view/403.svg'
  22. import userApi from '~api/userInfo'
  23. //初始变量
  24. const router = useRouter()
  25. const useRoutes = useRoute()
  26. const store = useAppStore()
  27. //变量
  28. const loading = ref(true)
  29. const isErrorShow = ref(false)
  30. //渲染完成
  31. onMounted(() => {
  32. //先清理下缓存
  33. store.clearStoreData()
  34. // 域名后加 /#/auth?token=xxxxxxx&tenantid=xxxxxxx
  35. const { token, tenantid } = getObjValue(useRoutes.query)
  36. if (token) {
  37. isErrorShow.value = false
  38. store.setTokenVal(token)
  39. queryCurrentUserData(tenantid ?? '000000')
  40. } else {
  41. loading.value = false
  42. isErrorShow.value = true
  43. }
  44. })
  45. //获取用户信息
  46. const queryCurrentUserData = async (tenantId) => {
  47. await setUserTenantInfo()
  48. const { error, code, data } = await userApi.queryCurrentUserData()
  49. if (!error && code === 200) {
  50. await useAppLoginApi({
  51. tenantId: tenantId,
  52. username: data.account,
  53. password: data.plaintextPassword,
  54. type: 'account',
  55. })
  56. } else {
  57. window.$message?.error('授权信息异常')
  58. isErrorShow.value = true
  59. loading.value = false
  60. }
  61. }
  62. //请求授权登录
  63. const useAppLoginApi = async (form) => {
  64. loading.value = true
  65. const { error, msg } = await useAppLogin(form)
  66. if (error && !isNullES(msg)) {
  67. window.$message?.error('授权登录失败')
  68. isErrorShow.value = true
  69. loading.value = false
  70. return false
  71. }
  72. //授权登录成功
  73. setTimeout(() => {
  74. loading.value = false
  75. isErrorShow.value = false
  76. window?.$message?.success('授权登录成功')
  77. router.push({
  78. name: store.homeUrl ?? 'home',
  79. })
  80. }, 1500)
  81. }
  82. //跳转登陆
  83. const toLoginTap = () => {
  84. router.push({ path: '/login' })
  85. }
  86. </script>
  87. <style lang="scss" scoped>
  88. @import "../../styles/error/style.scss";
  89. .hc-body-loading {
  90. position: relative;
  91. height: 100%;
  92. width: 100%;
  93. }
  94. </style>