callback.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div class="login_background">
  3. <div class="login_background_front"></div>
  4. <div class="login_main">
  5. <div class="login-form">
  6. <a-card>
  7. <div class="login-header">
  8. <h2>三方登录</h2>
  9. </div>
  10. <a-spin tip="正在登录中...">
  11. <div class="h-[300px]">
  12. <a-skeleton />
  13. </div>
  14. </a-spin>
  15. </a-card>
  16. </div>
  17. </div>
  18. </div>
  19. </template>
  20. <script setup name="loginCallback">
  21. import { message } from 'ant-design-vue'
  22. import tool from '@/utils/tool'
  23. import router from '@/router'
  24. import thirdApi from '@/api/auth/thirdApi'
  25. import loginApi from '@/api/auth/loginApi'
  26. import userCenterApi from '@/api/sys/userCenterApi'
  27. import dictApi from '@/api/dev/dictApi'
  28. import { onMounted } from 'vue'
  29. onMounted(() => {
  30. // 获取当前url
  31. const url = new URL(window.location.href)
  32. let argLength = 0
  33. const params = {}
  34. url.searchParams.forEach((value, key) => {
  35. argLength += 1
  36. params[key] = value
  37. })
  38. // 当然了,不可能只有一个参数
  39. if (argLength < 2) {
  40. window.location.href = '/login'
  41. return
  42. }
  43. thirdApi
  44. .thirdCallback(params)
  45. .then((data) => {
  46. tool.data.set('TOKEN', data)
  47. // 获取登录的用户信息
  48. loginApi.getLoginUser().then((loginUser) => {
  49. tool.data.set('USER_INFO', loginUser)
  50. })
  51. userCenterApi.userLoginMenu().then((menu) => {
  52. const indexMenu = menu[0].children[0].path
  53. tool.data.set('MENU', menu)
  54. // 重置系统默认应用
  55. tool.data.set('SNOWY_MENU_MODULE_ID', menu[0].id)
  56. router.replace({
  57. path: indexMenu
  58. })
  59. message.success('登录成功')
  60. dictApi.dictTree().then((dictData) => {
  61. // 设置字典到store中
  62. tool.data.set('DICT_TYPE_TREE_DATA', dictData)
  63. })
  64. })
  65. })
  66. .catch(() => {
  67. window.location.href = '/login'
  68. })
  69. })
  70. </script>
  71. <style lang="less" scoped>
  72. @import 'login';
  73. </style>