zhangjie 1 рік тому
батько
коміт
05cb7d456f

+ 19 - 15
src/constants/app.js

@@ -4,25 +4,29 @@ const MD5 = require("js-md5");
 export const APP_TITLE = "试卷电子化";
 
 // domain
-let domain;
-if (process.env.VUE_APP_SELF_DEFINE_DOMAIN === "true") {
+export function getOrgCode() {
+  let domain;
+  const paramCode =
+    parseHrefParam(window.location.href, "code") ||
+    window.sessionStorage.getItem("paramDomainCode");
+  if (paramCode) {
+    domain = paramCode;
+    window.sessionStorage.setItem("paramDomainCode", domain);
+    return domain;
+  }
+
   domain = window.localStorage.getItem("domain_in_url");
-}
-if (!domain) {
+  if (domain) return domain;
+
   const ipFormat = new RegExp(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/);
   const hostname = window.location.hostname;
-  if (ipFormat.test(hostname)) {
-    domain =
-      parseHrefParam(window.location.href, "code") ||
-      window.sessionStorage.getItem("ipDomainCode");
-    if (domain) {
-      window.sessionStorage.setItem("ipDomainCode", domain);
-    }
-  } else {
-    domain = hostname.split(".")[0];
-  }
+  if (ipFormat.test(hostname) || hostname.includes("localhost")) return "";
+
+  domain = hostname.split(".")[0];
+  return domain;
 }
-export const ORG_CODE = domain;
+
+export const ORG_CODE = getOrgCode();
 
 const ADMIN_CODE = "admin";
 

+ 9 - 1
src/modules/admin/views/Admin.vue

@@ -204,7 +204,15 @@ export default {
     async logoutAction() {
       await logout();
       this.$ls.clear();
-      this.$router.push({ name: "Login" });
+      const paramDomainCode = window.sessionStorage.getItem("paramDomainCode");
+      const routeDomainCode = window.sessionStorage.getItem("routeDomainCode");
+      if (paramDomainCode) {
+        this.$router.push({ name: "Login", query: { code: paramDomainCode } });
+      } else if (routeDomainCode) {
+        this.$router.push({ name: "Login", params: { code: routeDomainCode } });
+      } else {
+        this.$router.push({ name: "Login" });
+      }
     },
     toSelectSchool() {
       this.$router.push({ name: "SelectSchool" });

+ 1 - 1
src/modules/login/router.js

@@ -8,7 +8,7 @@ export default {
   component: LoginHome,
   children: [
     {
-      path: "/login",
+      path: "/login/:code?",
       name: "Login",
       component: Login,
       meta: {

+ 14 - 3
src/modules/login/views/Login.vue

@@ -119,7 +119,7 @@ import { password, phone, smscode } from "@/plugins/formRules";
 import { login, getSmsCode, getSchoolInfo } from "../api";
 import { Base64 } from "@/plugins/crypto";
 import ResetPwd from "@/modules/base/components/ResetPwd";
-import { ORG_CODE, APP_TITLE } from "@/constants/app";
+import { getOrgCode, APP_TITLE } from "@/constants/app";
 import fetchSmsMixins from "../fetchSmsMixins";
 
 export default {
@@ -132,7 +132,7 @@ export default {
       smsCodeRequired: false,
       APP_TITLE,
       loginModel: {
-        schoolCode: ORG_CODE,
+        schoolCode: "",
         loginName: "",
         password: "",
         code: "",
@@ -165,6 +165,8 @@ export default {
     };
   },
   mounted() {
+    window.sessionStorage.removeItem("routeDomainCode");
+    window.sessionStorage.removeItem("paramDomainCode");
     this.$ls.clear();
     this.setWaitingTime();
     this.getSchool();
@@ -179,7 +181,16 @@ export default {
   },
   methods: {
     async getSchool() {
-      const data = await getSchoolInfo(ORG_CODE);
+      if (this.$route.params.code) {
+        this.loginModel.schoolCode = this.$route.params.code;
+        window.sessionStorage.setItem(
+          "routeDomainCode",
+          this.$route.params.code
+        );
+      } else {
+        this.loginModel.schoolCode = getOrgCode();
+      }
+      const data = await getSchoolInfo(this.loginModel.schoolCode);
       this.$ls.set("schoolLogo", data.logo);
       this.$ls.set("schoolName", data.name);
       this.schoolLogo = data.logo;

+ 8 - 3
src/plugins/axios.js

@@ -176,9 +176,14 @@ const errorDataCallback = (response) => {
         }
 
         Vue.ls.clear();
-        const ipDomainCode = window.sessionStorage.getItem("ipDomainCode");
-        if (ipDomainCode) {
-          router.push({ name: "Login", query: { code: ipDomainCode } });
+        const paramDomainCode =
+          window.sessionStorage.getItem("paramDomainCode");
+        const routeDomainCode =
+          window.sessionStorage.getItem("routeDomainCode");
+        if (paramDomainCode) {
+          router.push({ name: "Login", query: { code: paramDomainCode } });
+        } else if (routeDomainCode) {
+          router.push({ name: "Login", params: { code: routeDomainCode } });
         } else {
           router.push({ name: "Login" });
         }

+ 6 - 3
src/router.js

@@ -77,9 +77,12 @@ router.beforeEach((to, from, next) => {
     }
 
     Vue.ls.clear();
-    const ipDomainCode = window.sessionStorage.getItem("ipDomainCode");
-    if (ipDomainCode) {
-      next({ name: "Login", query: { code: ipDomainCode } });
+    const paramDomainCode = window.sessionStorage.getItem("paramDomainCode");
+    const routeDomainCode = window.sessionStorage.getItem("routeDomainCode");
+    if (paramDomainCode) {
+      next({ name: "Login", query: { code: paramDomainCode } });
+    } else if (routeDomainCode) {
+      next({ name: "Login", params: { code: routeDomainCode } });
     } else {
       next({ name: "Login" });
     }

+ 6 - 3
src/views/Home.vue

@@ -351,9 +351,12 @@ export default {
       }
 
       this.$ls.clear();
-      const ipDomainCode = window.sessionStorage.getItem("ipDomainCode");
-      if (ipDomainCode) {
-        this.$router.push({ name: "Login", query: { code: ipDomainCode } });
+      const paramDomainCode = window.sessionStorage.getItem("paramDomainCode");
+      const routeDomainCode = window.sessionStorage.getItem("routeDomainCode");
+      if (paramDomainCode) {
+        this.$router.push({ name: "Login", query: { code: paramDomainCode } });
+      } else if (routeDomainCode) {
+        this.$router.push({ name: "Login", params: { code: routeDomainCode } });
       } else {
         this.$router.push({ name: "Login" });
       }

+ 8 - 4
vue.config.js

@@ -8,8 +8,12 @@ module.exports = defineConfig({
     proxy: {
       "/api/": {
         target: process.env.VUE_APP_DEV_PROXY,
-        changeOrigin: true
-      }
-    }
-  }
+        changeOrigin: true,
+      },
+    },
+    // https://webpack.js.org/configuration/dev-server/#overlay
+    client: {
+      overlay: false,
+    },
+  },
 });