App.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <el-config-provider :locale="locale" :size="assemblySize" :button="buttonConfig">
  3. <router-view></router-view>
  4. </el-config-provider>
  5. </template>
  6. <script setup lang="ts">
  7. import {onMounted, reactive, computed, ref} from "vue";
  8. import { useI18n } from "vue-i18n";
  9. import { getBrowserLang } from "@/utils";
  10. import { useTheme } from "@/hooks/useTheme";
  11. import {ElConfigProvider, ElNotification} from "element-plus";
  12. import { LanguageType } from "./stores/interface";
  13. import { useGlobalStore } from "@/stores/modules/global";
  14. import en from "element-plus/es/locale/lang/en";
  15. import zhCn from "element-plus/es/locale/lang/zh-cn";
  16. import {Login, Platform} from "@/api/interface";
  17. import {loginApi} from "@/api/modules/login";
  18. import {initDynamicRouter} from "@/routers/modules/dynamicRouter";
  19. import {HOME_URL} from "@/config";
  20. import {useUserStore} from "@/stores/modules/user";
  21. import {getPlatformList} from "@/api/modules/allData";
  22. const globalStore = useGlobalStore();
  23. // init theme
  24. const { initTheme } = useTheme();
  25. initTheme();
  26. // init language
  27. const i18n = useI18n();
  28. onMounted(() => {
  29. const language = globalStore.language ?? getBrowserLang();
  30. i18n.locale.value = language;
  31. globalStore.setGlobalState("language", language as LanguageType);
  32. });
  33. // element language
  34. const locale = computed(() => {
  35. if (globalStore.language == "zh") return zhCn;
  36. if (globalStore.language == "en") return en;
  37. return getBrowserLang() == "zh" ? zhCn : en;
  38. });
  39. // element assemblySize
  40. const assemblySize = computed(() => globalStore.assemblySize);
  41. // element button config
  42. const buttonConfig = reactive({ autoInsertSpace: false });
  43. const loginForm = reactive<Login.ReqLoginForm>({
  44. rememberMe: false,
  45. username: "",
  46. password: ""
  47. });
  48. const userStore = useUserStore();
  49. const loginStationsList = async () => {
  50. loginForm.username = localStorage.getItem('username2')
  51. loginForm.password = localStorage.getItem('password2')
  52. if(!loginForm.username||!loginForm.password){
  53. return
  54. }
  55. try {
  56. const {data} = await loginApi({...loginForm, password: loginForm.password});
  57. if (!data.user) {
  58. return;
  59. }
  60. userStore.setToken(Date.now().toString());
  61. userStore.setUserInfo(data.user)
  62. userStore.setAsInfo(data.asInfo)
  63. getStationsList();
  64. } finally {
  65. }
  66. };
  67. // 站号列表更新
  68. const getStationsList = async () => {
  69. const userStore = useUserStore();
  70. const user = computed(() => userStore.userInfo);
  71. const Info = computed(() => userStore.asInfo);
  72. // 查询自动站列表
  73. const queryas = ref<Platform>({ pageSize: 20000, pageNum: 1 });
  74. const { data } = await getPlatformList(queryas.value);
  75. const array2 = data.list;
  76. if (user.value.role_id === '管理员') {
  77. userStore.setStations(array2);
  78. } else {
  79. const codesToMatch = Info.value.map(item => item.as_code);
  80. const filteredArray = array2.filter(item => codesToMatch.includes(item.as_code));
  81. userStore.setStations(filteredArray);
  82. }
  83. };
  84. onMounted(() => {
  85. loginStationsList()
  86. })
  87. </script>
  88. <style>
  89. body {
  90. font-family: 'PingFang-Medium', sans-serif;
  91. }
  92. </style>