index.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div v-loading="loading" class="social-callback"></div>
  3. </template>
  4. <script setup lang="ts">
  5. import { login, callback } from '@/api/login';
  6. import { setToken } from '@/utils/auth';
  7. import Cookies from 'js-cookie';
  8. import { getToken } from '@/utils/auth';
  9. import { LoginData } from '@/api/types';
  10. const route = useRoute();
  11. const loading = ref(true);
  12. /**
  13. * 接收Route传递的参数
  14. * @param {Object} route.query.
  15. */
  16. const code = route.query.code as string;
  17. const state = route.query.state as string;
  18. const source = route.query.source as string;
  19. const tenantId = Cookies.get("tenantId") ? Cookies.get("tenantId") as string : '000000';
  20. const processResponse = async (res: any) => {
  21. if (res.code !== 200) {
  22. throw new Error(res.msg);
  23. }
  24. ElMessage.success(res.msg);
  25. location.href = import.meta.env.VITE_APP_CONTEXT_PATH + 'index';
  26. };
  27. const handleError = (error: any) => {
  28. ElMessage.error(error.message);
  29. location.href = import.meta.env.VITE_APP_CONTEXT_PATH + 'index';
  30. };
  31. const callbackByCode = async (data: LoginData) => {
  32. try {
  33. const res = await callback(data);
  34. await processResponse(res);
  35. loading.value = false;
  36. } catch (error) {
  37. handleError(error);
  38. }
  39. };
  40. const loginByCode = async (data: LoginData) => {
  41. console.log(2)
  42. try {
  43. const res = await login(data);
  44. await processResponse(res);
  45. loading.value = false;
  46. } catch (error) {
  47. handleError(error);
  48. }
  49. };
  50. const init = async () => {
  51. const data: LoginData = {
  52. socialCode: code,
  53. socialState: state,
  54. tenantId: tenantId,
  55. source: source,
  56. clientId: 'e5cd7e4891bf95d1d19206ce24a7b32e',
  57. grantType: 'social'
  58. };
  59. if (!getToken()) {
  60. await loginByCode(data);
  61. } else {
  62. await callbackByCode(data);
  63. }
  64. };
  65. onMounted(() => {
  66. nextTick(() => {
  67. init();
  68. });
  69. });
  70. </script>