import { computed, defineComponent, onBeforeMount, onMounted, onUnmounted } from "vue"; import { RouterView } from "vue-router"; import TheError from "../components/The-error"; import { setUserInfo, storeData } from "../store"; import { browser, getRandomKey, getToken, setBehaviorId, setToken } from "../utils"; import { getQuery } from "../utils/queryString"; import { studentQueryUserInfo } from "./api"; import { api_cloudLoading, api_getToken } from "../helpers/communication"; import { showToast } from "vant"; export default defineComponent({ name: "App", setup() { const query: any = getQuery(); /** 获取用户信息 */ const getUserInfo = async () => { return await studentQueryUserInfo(); }; const setUser = async () => { try { const res = await getUserInfo(); if (res?.code === 5000) { const browserInfo = browser(); showToast(res.message); if (browserInfo.isApp) { postMessage({ api: "login" }); } else { if (/(192|localhost)/.test(location.origin)) { return; } // 判断是否在应用中 window.parent.postMessage( { api: "onLogin", }, "*" ); } return; } const student = res?.data || {}; setUserInfo(student); storeData.platformType = student.clientType === "STUDENT" ? "STUDENT" : ""; } catch (error) { storeData.status = "error"; api_cloudLoading(); console.log("🚀 ~ error:", error); } }; onBeforeMount(async () => { if (query.Authorization) { setToken(query.Authorization); } if (!getToken()) { const res = await api_getToken(); if (res?.content) { const content = res.content; const token = content.tokenType + " " + content.accessToken; setToken(token); } } if (query.productXmlImg) { storeData.status = "login"; return; } setUser(); setBehaviorId(getRandomKey()); }); const onKeyBoard = (e: KeyboardEvent) => { if (e.code === "ArrowLeft") { window.parent.postMessage( { api: "documentBodyKeyup", code: "ArrowLeft", }, "*" ); } else if (e.code === "ArrowRight") { window.parent.postMessage( { api: "documentBodyKeyup", code: "ArrowRight", }, "*" ); } }; onMounted(() => { const _loading = document.getElementById("loading"); _loading && document.body.removeChild(_loading); // console.log(query); if (query.platform == "pc") document.body.addEventListener("keyup", (e: KeyboardEvent) => onKeyBoard(e)); }); onUnmounted(() => { if (query.platform == "pc") document.body.removeEventListener("keyup", onKeyBoard); }); const inited = computed(() => { return storeData.status === "login"; }); return () => <>{storeData.status === "error" ? : inited.value ? : null}; }, });