App.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { computed, defineComponent, onBeforeMount, onMounted } 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 { GlobalThemeOverrides, NConfigProvider, NDialogProvider, NMessageProvider, NNotificationProvider, darkTheme } from "naive-ui";
  8. import { browser, lighten, setToken } from "../utils";
  9. import { showToast } from "vant";
  10. export default defineComponent({
  11. name: "App",
  12. setup() {
  13. const appTheme = "#198CFE";
  14. const lightenStr = lighten(appTheme, 6);
  15. const themeOverrides: GlobalThemeOverrides = {
  16. common: {
  17. primaryColor: appTheme,
  18. primaryColorHover: lightenStr,
  19. primaryColorPressed: lightenStr,
  20. },
  21. LoadingBar: {
  22. colorLoading: appTheme,
  23. },
  24. };
  25. const query: any = getQuery();
  26. /** 获取用户信息 */
  27. const getUserInfo = async () => {
  28. if (storeData.platformType === "TEACHER") {
  29. return await teacherQueryUserInfo();
  30. }
  31. return await studentQueryUserInfo();
  32. };
  33. const setUser = async () => {
  34. const res = await getUserInfo();
  35. const info = res?.data || {};
  36. setUserInfo(info);
  37. // console.log("🚀 ~ res:", res);
  38. };
  39. onBeforeMount(() => {
  40. if (query.Authorization) {
  41. setToken(query.Authorization);
  42. }
  43. setUser();
  44. sessionStorage.setItem("SCRIPT_ERROR", "0");
  45. });
  46. onMounted(() => {
  47. // 禁用右键菜单
  48. document.addEventListener("contextmenu", function (event) {
  49. event.preventDefault();
  50. });
  51. // 禁用浏览器快捷键
  52. document.addEventListener("keydown", function (event) {
  53. // 屏蔽 F12 和 Ctrl+Shift+I
  54. if (event.key === "F12" || (event.ctrlKey && event.shiftKey && event.key === "I") || (event.metaKey && event.altKey && event.key === "I")) {
  55. event.preventDefault();
  56. }
  57. });
  58. });
  59. const inited = computed(() => {
  60. return storeData.status === "login" || query.dev;
  61. });
  62. return () => (
  63. <NConfigProvider inlineThemeDisabled themeOverrides={themeOverrides} abstract>
  64. <NDialogProvider>
  65. <NNotificationProvider>
  66. <NMessageProvider max={1} theme={darkTheme.Message}>
  67. {storeData.status === "error" ? <TheError /> : inited.value ? <RouterView /> : null}
  68. </NMessageProvider>
  69. </NNotificationProvider>
  70. </NDialogProvider>
  71. </NConfigProvider>
  72. );
  73. },
  74. });