123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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" ? <TheError /> : inited.value ? <RouterView /> : null}</>;
- },
- });
|