Forráskód Böngészése

修改domain的输入方式

Michael Wang 6 éve
szülő
commit
493ff9c96d

+ 1 - 1
src/components/MainLayout/MainLayout.vue

@@ -58,7 +58,7 @@ export default {
       this.$router.push("/password");
     },
     logout() {
-      this.$router.push("/login");
+      this.$router.push("/login/" + localStorage.getItem("domain"));
     }
   },
   computed: {

+ 12 - 9
src/features/Login/Login.vue

@@ -2,7 +2,7 @@
   <div class="home">
 
     <header class="header">
-      <div class="school-logo"><img :src="this.logoPath" alt="school logo" />
+      <div class="school-logo"><img class="logo-size" :src="this.logoPath" alt="school logo" />
       </div>
       <a class="close" style="border-bottom-left-radius: 6px;">关闭</a>
     </header>
@@ -51,14 +51,13 @@
 /**
  * 在任何组件需要强制退出,做以下步骤
  * 1. this.$Message.info()
- * 2. this.$router.push("/login");
+ * 2. this.$router.push("/login"+domain);
  * 因为在/login里会删除localStorage的token,而在router.beforeEach会检查是否有token,达到退出的目的。
  */
 export default {
   data() {
     return {
-      logoPath:
-        "/api/ecs_core/org/logo?domain=" + process.env.VUE_APP_LOGIN_DOMAIN,
+      logoPath: "/api/ecs_core/org/logo?domain=" + this.$route.params.domain,
       productName: "远程教育网络考试",
       loginType: "STUDENT_CODE",
       errorInfo: "",
@@ -87,8 +86,7 @@ export default {
   async created() {
     try {
       const res = await this.$http.get(
-        "/api/ecs_core/org/getRootOrgByCode?code=" +
-          process.env.VUE_APP_LOGIN_DOMAIN
+        "/api/ecs_core/org/getRootOrgByCode?code=" + this.$route.params.domain
       );
       const productName = res.data.examSysName;
       this.productName = productName || "远程教育网络考试";
@@ -106,14 +104,12 @@ export default {
       } else {
         return;
       }
-      this.loginForm["domain"] = this.$route.query.domain || "";
       let repPara = this.loginForm;
       try {
         const response = await this.$http.post("/api/ecs_core/auth/login", {
           ...repPara,
           accountType: this.loginType,
-          // FIXME: 根据域名来确定domain
-          domain: process.env.VUE_APP_LOGIN_DOMAIN
+          domain: this.$route.params.domain
         });
         let data = response.data;
         if (data.token) {
@@ -121,6 +117,7 @@ export default {
           //缓存用户信息
           window.localStorage.setItem("token", data.token);
           window.localStorage.setItem("key", data.key);
+          window.localStorage.setItem("domain", this.$route.params.domain);
 
           const student = (await this.$http.get(
             "/api/ecs_core/student/getStudentInfoBySession"
@@ -149,6 +146,12 @@ export default {
   margin-left: -300px;
 }
 
+.logo-size {
+  height: 100px;
+  width: 300px;
+  object-fit: cover;
+}
+
 .header {
   min-height: 120px;
   display: grid;

+ 6 - 3
src/features/OnlineExam/Examing/FaceId.vue

@@ -100,6 +100,9 @@ export default {
         --this.timeCount;
       }, 1000);
 
+      this.logout = () => {
+        this.$router.push("/login/" + localStorage.getItem("domain"));
+      };
       //定时事件,如果1分钟内未完成人脸检测,执行内部程序
       var faceIdTime = setTimeout(() => {
         this.$Modal.remove();
@@ -130,7 +133,7 @@ export default {
           )
           .then(() => {
             if (result != "SUCCESS") {
-              this.$router.push("/login");
+              this.logout();
             }
           });
       };
@@ -146,7 +149,7 @@ export default {
             this.$Message.info("第一次人脸检测失败,系统退出,请重新登录", {
               time: 5000
             });
-            this.$router.push("/login");
+            this.logout();
           } else if (receivedMsg.verifyResult == "NOT_ONESELF") {
             this.$Message.info("人脸检测不合格,结束考试", { time: 5000 });
             this.faceTestEndHandle("FAILED");
@@ -174,7 +177,7 @@ export default {
         if (response.data.indexOf("verifyResult") > -1) {
           var receivedMsg = JSON.parse(response.data);
           clearTimeout(faceIdTime);
-          this.$router.push("/login");
+          this.logout();
           ws.close();
           this.faceTestEnd(receivedMsg);
         }

+ 12 - 9
src/features/login/Login.vue

@@ -2,7 +2,7 @@
   <div class="home">
 
     <header class="header">
-      <div class="school-logo"><img :src="this.logoPath" alt="school logo" />
+      <div class="school-logo"><img class="logo-size" :src="this.logoPath" alt="school logo" />
       </div>
       <a class="close" style="border-bottom-left-radius: 6px;">关闭</a>
     </header>
@@ -51,14 +51,13 @@
 /**
  * 在任何组件需要强制退出,做以下步骤
  * 1. this.$Message.info()
- * 2. this.$router.push("/login");
+ * 2. this.$router.push("/login"+domain);
  * 因为在/login里会删除localStorage的token,而在router.beforeEach会检查是否有token,达到退出的目的。
  */
 export default {
   data() {
     return {
-      logoPath:
-        "/api/ecs_core/org/logo?domain=" + process.env.VUE_APP_LOGIN_DOMAIN,
+      logoPath: "/api/ecs_core/org/logo?domain=" + this.$route.params.domain,
       productName: "远程教育网络考试",
       loginType: "STUDENT_CODE",
       errorInfo: "",
@@ -87,8 +86,7 @@ export default {
   async created() {
     try {
       const res = await this.$http.get(
-        "/api/ecs_core/org/getRootOrgByCode?code=" +
-          process.env.VUE_APP_LOGIN_DOMAIN
+        "/api/ecs_core/org/getRootOrgByCode?code=" + this.$route.params.domain
       );
       const productName = res.data.examSysName;
       this.productName = productName || "远程教育网络考试";
@@ -106,14 +104,12 @@ export default {
       } else {
         return;
       }
-      this.loginForm["domain"] = this.$route.query.domain || "";
       let repPara = this.loginForm;
       try {
         const response = await this.$http.post("/api/ecs_core/auth/login", {
           ...repPara,
           accountType: this.loginType,
-          // FIXME: 根据域名来确定domain
-          domain: process.env.VUE_APP_LOGIN_DOMAIN
+          domain: this.$route.params.domain
         });
         let data = response.data;
         if (data.token) {
@@ -121,6 +117,7 @@ export default {
           //缓存用户信息
           window.localStorage.setItem("token", data.token);
           window.localStorage.setItem("key", data.key);
+          window.localStorage.setItem("domain", this.$route.params.domain);
 
           const student = (await this.$http.get(
             "/api/ecs_core/student/getStudentInfoBySession"
@@ -149,6 +146,12 @@ export default {
   margin-left: -300px;
 }
 
+.logo-size {
+  height: 100px;
+  width: 300px;
+  object-fit: cover;
+}
+
 .header {
   min-height: 120px;
   display: grid;

+ 1 - 0
src/main.js

@@ -50,6 +50,7 @@ if (process.env.NODE_ENV === "development") {
     if (data.token) {
       window.localStorage.setItem("token", data.token);
       window.localStorage.setItem("key", data.key);
+      window.localStorage.setItem("domain", process.env.VUE_APP_LOGIN_DOMAIN);
 
       window.localStorage.setItem("user", JSON.stringify(data));
     } else {

+ 4 - 3
src/router.js

@@ -21,7 +21,7 @@ let router = new Router({
       component: OnlineExamHome
     },
     {
-      path: "/login",
+      path: "/login/:domain",
       name: "Login",
       component: Login
     },
@@ -69,11 +69,12 @@ let router = new Router({
 });
 
 router.beforeEach((to, from, next) => {
-  if (to.path === "/login") {
+  const loginPath = "/login/" + localStorage.getItem("domain");
+  if (to.path === loginPath) {
     next();
   } else {
     if (!window.localStorage.getItem("token")) {
-      next({ path: "/login" });
+      next({ path: loginPath });
     } else {
       next();
     }