App.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { computed, defineComponent, onBeforeMount } from "vue";
  2. import { RouterView, useRoute } from "vue-router";
  3. import TheError from "../components/The-error";
  4. import { setUserInfo, storeData } from "../store";
  5. import { getQuery } from "../utils/queryString";
  6. import { studentQueryUserInfo, teacherQueryUserInfo } from "./api";
  7. import {
  8. GlobalThemeOverrides,
  9. NConfigProvider,
  10. NDialogProvider,
  11. NMessageProvider,
  12. NNotificationProvider,
  13. darkTheme,
  14. } from "naive-ui";
  15. import { browser, lighten, setToken } from "../utils";
  16. import { showToast } from "vant";
  17. export default defineComponent({
  18. name: "App",
  19. setup() {
  20. const appTheme = "#198CFE";
  21. const lightenStr = lighten(appTheme, 6);
  22. const themeOverrides: GlobalThemeOverrides = {
  23. common: {
  24. primaryColor: appTheme,
  25. primaryColorHover: lightenStr,
  26. primaryColorPressed: lightenStr,
  27. },
  28. LoadingBar: {
  29. colorLoading: appTheme,
  30. },
  31. };
  32. const query: any = getQuery();
  33. /** 获取用户信息 */
  34. const getUserInfo = async () => {
  35. if (storeData.platformType === "TEACHER") {
  36. return await teacherQueryUserInfo();
  37. }
  38. return await studentQueryUserInfo();
  39. };
  40. const setUser = async () => {
  41. const res = await getUserInfo();
  42. // 重新登录
  43. if (res.code === 5000) {
  44. const browserInfo = browser();
  45. showToast(res.message);
  46. if (browserInfo.isApp) {
  47. postMessage({ api: "login" });
  48. } else {
  49. window.location.href = `${
  50. /(192|localhost)/.test(location.origin) ? "https://test.lexiaoya.cn" : location.origin
  51. }/classroom`;
  52. }
  53. return;
  54. }
  55. const info = res?.data || {};
  56. setUserInfo(info);
  57. // console.log("🚀 ~ res:", res);
  58. };
  59. onBeforeMount(() => {
  60. if (query.Authorization) {
  61. setToken(query.Authorization);
  62. }
  63. setUser();
  64. });
  65. const inited = computed(() => {
  66. return storeData.status === "login" || query.dev;
  67. });
  68. return () => (
  69. <NConfigProvider inlineThemeDisabled themeOverrides={themeOverrides} abstract>
  70. <NDialogProvider>
  71. <NNotificationProvider>
  72. <NMessageProvider max={1} theme={darkTheme.Message}>
  73. {storeData.status === "error" ? <TheError /> : inited.value ? <RouterView /> : null}
  74. </NMessageProvider>
  75. </NNotificationProvider>
  76. </NDialogProvider>
  77. </NConfigProvider>
  78. );
  79. },
  80. });