zhangjie vor 3 Jahren
Ursprung
Commit
93749908a9

+ 6 - 25
src/assets/styles/login.scss

@@ -30,8 +30,7 @@
 
 .login-box {
   position: absolute;
-  width: 860px;
-  height: 514px;
+  width: 440px;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
@@ -39,31 +38,10 @@
   background-color: #fff;
   overflow: hidden;
 }
-.login-theme {
-  width: 420px;
-  height: 100%;
-  border-radius: 20px;
-  background-color: #3858e0;
-  background-image: url(../images/login-theme.png);
-  background-size: 100% 100%;
-  float: left;
-  position: relative;
-
-  > h2 {
-    position: absolute;
-    width: 100%;
-    top: 60px;
-    left: 0;
-    text-align: center;
-    font-size: 25px;
-    color: #fff;
-  }
-}
 .login-body {
-  margin-left: 420px;
   height: 100%;
   overflow: hidden;
-  padding: 80px 75px;
+  padding: 80px 50px;
 }
 .login-title {
   text-align: center;
@@ -113,6 +91,9 @@
     border-radius: 0 !important;
   }
   .el-input__prefix {
-    left: 9px;
+    left: 5px;
   }
 }
+.login-link {
+  text-align: right;
+}

+ 0 - 1
src/main.js

@@ -12,7 +12,6 @@ import VueLocalStorage from "vue-ls";
 import ElementUI from "element-ui";
 import "element-ui/lib/theme-chalk/index.css";
 import "./assets/styles/index.scss";
-import "../card/assets/styles/module.scss";
 
 Vue.use(ElementUI, { size: "small" });
 

+ 0 - 116
src/modules/base/router.js

@@ -2,27 +2,6 @@
 import OrganizationManage from "./views/OrganizationManage.vue";
 import RoleManage from "./views/RoleManage.vue";
 import UserManage from "./views/UserManage.vue";
-// rule
-import CommonRule from "./views/CommonRule.vue";
-import CardRuleManage from "./views/CardRuleManage.vue";
-import CommonCardTemplate from "./views/CommonCardTemplate.vue";
-import ParamPrintTemplate from "./views/ParamPrintTemplate.vue";
-import CommonPrintTemplate from "./views/CommonPrintTemplate.vue";
-import PrintPlanPushManage from "./views/PrintPlanPushManage.vue";
-import FlowManage from "./views/FlowManage.vue";
-import ApproveRecordManage from "./views/ApproveRecordManage.vue";
-import SmsManage from "./views/SmsManage.vue";
-import CardManage from "./views/CardManage.vue";
-// dict
-import CampusManage from "./views/CampusManage.vue";
-import StudentManage from "./views/StudentManage.vue";
-import CourseManage from "./views/CourseManage.vue";
-import ClazzManage from "./views/ClazzManage.vue";
-import SemesterManage from "./views/SemesterManage.vue";
-import MajorManage from "./views/MajorManage.vue";
-import ExamManage from "./views/ExamManage.vue";
-import CourseSimpleManage from "./views/CourseSimpleManage.vue";
-import ClazzSimpleManage from "./views/ClazzSimpleManage.vue";
 
 export default [
   {
@@ -39,100 +18,5 @@ export default [
     path: "/base/user-manage",
     name: "UserManage",
     component: UserManage
-  },
-  {
-    path: "/base/common-rule",
-    name: "CommonRule",
-    component: CommonRule
-  },
-  {
-    path: "/base/card-rule-manage",
-    name: "CardRuleManage",
-    component: CardRuleManage
-  },
-  {
-    path: "/base/common-card-template",
-    name: "CommonCardTemplate",
-    component: CommonCardTemplate
-  },
-  {
-    path: "/base/param-print-template",
-    name: "ParamPrintTemplate",
-    component: ParamPrintTemplate
-  },
-  {
-    path: "/base/common-print-template",
-    name: "CommonPrintTemplate",
-    component: CommonPrintTemplate
-  },
-  {
-    path: "/base/print-plan-push-manage",
-    name: "PrintPlanPushManage",
-    component: PrintPlanPushManage
-  },
-  {
-    path: "/base/flow-manage",
-    name: "FlowManage",
-    component: FlowManage
-  },
-  {
-    path: "/base/approve-record-manage",
-    name: "ApproveRecordManage",
-    component: ApproveRecordManage
-  },
-  {
-    path: "/base/course-manage",
-    name: "CourseManage",
-    component: CourseManage
-  },
-  {
-    path: "/base/campus-manage",
-    name: "CampusManage",
-    component: CampusManage
-  },
-  {
-    path: "/base/student-manage",
-    name: "StudentManage",
-    component: StudentManage
-  },
-  {
-    path: "/base/clazz-manage",
-    name: "ClazzManage",
-    component: ClazzManage
-  },
-  {
-    path: "/base/semester-manage",
-    name: "SemesterManage",
-    component: SemesterManage
-  },
-  {
-    path: "/base/major-manage",
-    name: "MajorManage",
-    component: MajorManage
-  },
-  {
-    path: "/base/sms-manage",
-    name: "SmsManage",
-    component: SmsManage
-  },
-  {
-    path: "/base/exam-manage",
-    name: "ExamManage",
-    component: ExamManage
-  },
-  {
-    path: "/base/course-simple-manage",
-    name: "CourseSimpleManage",
-    component: CourseSimpleManage
-  },
-  {
-    path: "/base/clazz-simple-manage/:teachCourseId?",
-    name: "ClazzSimpleManage",
-    component: ClazzSimpleManage
-  },
-  {
-    path: "/base/card-manage",
-    name: "CardManage",
-    component: CardManage
   }
 ];

+ 3 - 8
src/modules/login/api.js

@@ -6,9 +6,10 @@ export const login = datas => {
 export const getSmsCode = datas => {
   return $post("/api/admin/common/get_verify_code", datas);
 };
-export const getSmsCodeForBind = datas => {
-  return $post("/api/admin/common/get_verify_code_for_bind", datas);
+export const modifyPwd = datas => {
+  return $post("/api/admin/common/get_system_time", datas);
 };
+
 export const logout = () => {
   return $post("/api/admin/common/logout", {});
 };
@@ -33,9 +34,3 @@ export const schoolList = () => {
 export const getSchoolInfo = code => {
   return $postParam("/api/admin/common/school/query_by_school_code", { code });
 };
-export const getSysConfig = key => {
-  return $postParam("/api/admin/common/sys_config/get_one", { key });
-};
-export const getSysTime = () => {
-  return $postParam("/api/admin/common/get_system_time", {});
-};

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

@@ -1,6 +1,6 @@
 import LoginHome from "./views/LoginHome";
 import Login from "./views/Login";
-import SelectSchool from "./views/SelectSchool";
+import ForgetPwd from "./views/ForgetPwd";
 
 export default {
   path: "/login-home",
@@ -16,11 +16,11 @@ export default {
       }
     },
     {
-      path: "/select-school",
-      name: "SelectSchool",
-      component: SelectSchool,
+      path: "/forgetPwd",
+      name: "ForgetPwd",
+      component: ForgetPwd,
       meta: {
-        title: "选择学校",
+        title: "忘记密码",
         noRequire: true
       }
     }

+ 163 - 0
src/modules/login/views/ForgetPwd.vue

@@ -0,0 +1,163 @@
+<template>
+  <div class="forget-pswd login-box">
+    <div class="login-body">
+      <div class="login-title">
+        <h1>忘记密码</h1>
+      </div>
+      <div class="login-form">
+        <el-form
+          ref="modalFormComp"
+          :model="modalForm"
+          :rules="forgetPswdRules"
+        >
+          <el-form-item prop="username">
+            <el-input
+              v-model.trim="modalForm.username"
+              prefix-icon="el-icon-user"
+              placeholder="请输入姓名"
+              name="username"
+              clearable
+            >
+            </el-input>
+          </el-form-item>
+          <el-form-item prop="phone">
+            <el-input
+              v-model.trim="modalForm.phone"
+              prefix-icon="el-icon-phone-outline"
+              placeholder="请输入手机号"
+              clearable
+            ></el-input>
+          </el-form-item>
+          <el-form-item prop="code">
+            <div class="vlcode">
+              <div class="vlcode-right">
+                <el-button
+                  long
+                  :type="isFetchingCode ? 'default' : 'info'"
+                  @click="fetchSmsCode"
+                  :disabled="isFetchingCode"
+                  >{{ codeContent }}</el-button
+                >
+              </div>
+              <div class="vlcode-left">
+                <el-input
+                  v-model.trim="modalForm.code"
+                  prefix-icon="el-icon-message"
+                  placeholder="请输入短信验证码"
+                  clearable
+                ></el-input>
+              </div>
+            </div>
+          </el-form-item>
+          <el-form-item prop="password">
+            <el-input
+              type="password"
+              v-model.trim="modalForm.password"
+              prefix-icon="el-icon-lock"
+              placeholder="请输入新密码"
+              clearable
+            ></el-input>
+          </el-form-item>
+          <el-form-item prop="repassword">
+            <el-input
+              type="password"
+              v-model.trim="modalForm.repassword"
+              prefix-icon="el-icon-lock"
+              placeholder="请确认密码"
+              clearable
+            ></el-input>
+          </el-form-item>
+          <el-form-item></el-form-item>
+          <el-form-item>
+            <el-button
+              class="login-submit-btn"
+              size="large"
+              type="info"
+              :disabled="isSubmit"
+              round
+              @click="submit('modalFormComp')"
+              >确认</el-button
+            >
+            <div class="login-link">
+              <router-link :to="{ name: 'Login' }">返回登陆</router-link>
+            </div>
+          </el-form-item>
+        </el-form>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { phone, password, smscode } from "@/plugins/formRules";
+import { modifyPwd } from "../api";
+import fetchSmsMixins from "../fetchSmsMixins";
+
+const nameWaitTime = "forgetPwd";
+
+export default {
+  name: "forget-pswd",
+  mixins: [fetchSmsMixins],
+  data() {
+    const equalToPswd = (rule, value, callback) => {
+      if (value !== this.modalForm.password) {
+        callback(new Error("两次输入的密码不一致"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      nameWaitTime,
+      modalForm: {
+        username: "",
+        phone: "",
+        code: "",
+        password: "",
+        repassword: ""
+      },
+      forgetPswdRules: {
+        username: [
+          {
+            required: true,
+            message: "请输入姓名",
+            trigger: "change"
+          }
+        ],
+        phone,
+        code: smscode,
+        password,
+        repassword: [
+          ...password,
+          {
+            validator: equalToPswd,
+            trigger: "blur"
+          }
+        ]
+      },
+      isSubmit: false
+    };
+  },
+  mounted() {
+    this.setWaitingTime();
+  },
+  methods: {
+    async submit(name) {
+      const valid = await this.$refs[name].validate();
+      if (!valid) return;
+
+      if (this.isSubmit) return;
+      this.isSubmit = true;
+      const data = await modifyPwd(this.modalForm).catch(() => {
+        this.isSubmit = false;
+      });
+
+      if (!data) return;
+      this.isSubmit = false;
+      this.$message.success("重置密码成功!");
+      this.$router.push({
+        name: "Login"
+      });
+    }
+  }
+};
+</script>

+ 16 - 224
src/modules/login/views/Login.vue

@@ -1,22 +1,16 @@
 <template>
   <div class="login login-box">
-    <div class="login-theme"><h2>知学知考</h2></div>
     <div class="login-body" @keyup.enter="submit('loginForm')">
       <div class="login-title">
         <img v-if="schoolLogo" :src="schoolLogo" alt="学校logo" />
-        <h1 v-else>知学知考</h1>
+        <h1 v-else>教务数据对接系统</h1>
       </div>
       <div class="login-form">
-        <el-form
-          v-if="IS_USERNAME_TYPE"
-          ref="loginForm"
-          :model="loginModel"
-          :rules="loginRules"
-        >
+        <el-form ref="loginForm" :model="loginModel" :rules="loginRules">
           <el-form-item prop="loginName">
             <el-input
               v-model.trim="loginModel.loginName"
-              placeholder="请输入号"
+              placeholder="请输入手机号"
               name="username"
               clearable
             >
@@ -33,7 +27,7 @@
               <i class="icon icon-password" slot="prefix"></i>
             </el-input>
           </el-form-item>
-          <el-form-item prop="schoolCode"></el-form-item>
+          <el-form-item></el-form-item>
           <el-form-item>
             <el-button
               class="login-submit-btn"
@@ -44,99 +38,33 @@
               @click="submit('loginForm')"
               >登录</el-button
             >
-          </el-form-item>
-        </el-form>
-        <el-form v-else ref="loginForm" :model="loginModel" :rules="loginRules">
-          <el-form-item prop="mobileNumber">
-            <el-input
-              v-model.trim="loginModel.mobileNumber"
-              placeholder="请输入手机号"
-              name="mobileNumber"
-              clearable
-            >
-              <i class="icon icon-phone" slot="prefix"></i>
-            </el-input>
-          </el-form-item>
-          <el-form-item prop="code">
-            <div class="vlcode">
-              <div class="vlcode-right">
-                <el-button
-                  style="width:100%;"
-                  type="text"
-                  @click="fetchSmsCode"
-                  :disabled="isFetchingCode"
-                  >+{{ codeContent }}</el-button
-                >
-              </div>
-              <div class="vlcode-left">
-                <el-input
-                  v-model.trim="loginModel.code"
-                  placeholder="请输入手机验证码"
-                  name="code"
-                  clearable
-                >
-                  <i class="icon icon-checkcode" slot="prefix"></i>
-                </el-input>
-              </div>
+            <div class="login-link">
+              <router-link :to="{ name: 'ForgetPwd' }">忘记密码</router-link>
             </div>
           </el-form-item>
-          <el-form-item prop="schoolCode"></el-form-item>
-          <el-form-item>
-            <el-button
-              class="login-submit-btn"
-              size="large"
-              type="info"
-              :disabled="isSubmit"
-              round
-              @click="submit('loginForm')"
-              >登录</el-button
-            >
-          </el-form-item>
         </el-form>
       </div>
-      <div class="login-action box-justify">
-        <div></div>
-        <el-button type="text" @click="switchLoginType">
-          <i>{{ switchBtnName }}</i>
-          <i class="el-icon-arrow-right"></i>
-        </el-button>
-      </div>
     </div>
-
-    <!-- 修改密码 -->
-    <reset-pwd
-      :user-info="userInfo"
-      ref="ResetPwd"
-      @modified="resetPwdSuccess"
-    ></reset-pwd>
   </div>
 </template>
 
 <script>
-import { password, phone, smscode } from "@/plugins/formRules";
-import { login, getSmsCode, getSchoolInfo } from "../api";
+import { password } from "@/plugins/formRules";
+import { login } from "../api";
 import { Base64 } from "@/plugins/crypto";
-import ResetPwd from "@/modules/base/components/ResetPwd";
-import { ORG_CODE } from "@/constants/app";
 import fetchSmsMixins from "../fetchSmsMixins";
 
 export default {
   name: "login",
-  components: { ResetPwd },
   mixins: [fetchSmsMixins],
   data() {
     return {
-      nameWaitTime: "login",
-      smsCodeRequired: false,
+      schoolLogo: "",
       loginModel: {
-        schoolCode: ORG_CODE,
         loginName: "",
-        password: "",
-        code: "",
-        mobileNumber: ""
+        password: ""
       },
       loginRules: {
-        code: smscode,
         password,
         loginName: [
           {
@@ -144,46 +72,16 @@ export default {
             message: "请输入用户名",
             trigger: "change"
           }
-        ],
-        schoolCode: [
-          {
-            required: true,
-            message: "学校编码缺失",
-            trigger: "change"
-          }
-        ],
-        mobileNumber: phone
+        ]
       },
       userInfo: {},
-      roles: [],
-      isSubmit: false,
-      schoolLogo: "",
-      loginType: "ACCOUNT"
+      isSubmit: false
     };
   },
   mounted() {
     this.$ls.clear();
-    this.setWaitingTime();
-    this.getSchool();
-  },
-  computed: {
-    IS_USERNAME_TYPE() {
-      return this.loginType === "ACCOUNT";
-    },
-    switchBtnName() {
-      return this.loginType === "ACCOUNT" ? "短信登录" : "账号登录";
-    }
   },
   methods: {
-    async getSchool() {
-      const data = await getSchoolInfo(ORG_CODE);
-      this.$ls.set("schoolLogo", data.logo);
-      this.$ls.set("schoolName", data.name);
-      this.schoolLogo = data.logo;
-    },
-    switchLoginType() {
-      this.loginType = this.loginType === "ACCOUNT" ? "PHONE" : "ACCOUNT";
-    },
     async submit(name) {
       const valid = await this.$refs[name].validate().catch(() => {});
       if (!valid) return;
@@ -191,22 +89,9 @@ export default {
       if (this.isSubmit) return;
       this.isSubmit = true;
       let datas = {
-        schoolCode: this.loginModel.schoolCode,
-        type: this.loginType
+        loginName: this.loginModel.loginName,
+        password: Base64(this.loginModel.password)
       };
-      if (this.IS_USERNAME_TYPE) {
-        datas = {
-          ...datas,
-          loginName: this.loginModel.loginName,
-          password: Base64(this.loginModel.password)
-        };
-      } else {
-        datas = {
-          ...datas,
-          code: this.loginModel.code,
-          mobileNumber: this.loginModel.mobileNumber
-        };
-      }
       const data = await login(datas).catch(() => {});
       this.isSubmit = false;
       if (!data) return;
@@ -216,104 +101,11 @@ export default {
       if (data.schoolInfo)
         this.$ls.set("schoolId", data.schoolInfo.id, this.GLOBAL.authTimeout);
       this.$ls.set("user", data, this.GLOBAL.authTimeout);
-
-      this.$ls.set("token", data.accessToken, this.GLOBAL.authTimeout);
-
-      // 强制修改密码和绑定手机号
-      if (
-        data.userLoginCheckResult &&
-        (!data.userLoginCheckResult.pwdCount ||
-          !data.userLoginCheckResult.mobileNumber)
-      ) {
-        this.userInfo = {
-          ...this.loginModel,
-          ...data.userLoginCheckResult
-        };
-        this.$refs.ResetPwd.open();
-        return;
-      }
-
-      if (data.roleList && data.roleList.includes("ADMIN")) {
-        this.$router.push({
-          name: "SelectSchool"
-        });
-      } else {
-        this.$router.push({
-          name: "Home"
-        });
-      }
-    },
-    resetPwdSuccess(data) {
-      if (data.orgInfo)
-        this.$ls.set("orgId", data.orgInfo.id, this.GLOBAL.authTimeout);
-      if (data.schoolInfo)
-        this.$ls.set("schoolId", data.schoolInfo.id, this.GLOBAL.authTimeout);
-      this.$ls.set("user", data, this.GLOBAL.authTimeout);
-
       this.$ls.set("token", data.accessToken, this.GLOBAL.authTimeout);
 
-      if (data.roleList && data.roleList.includes("ADMIN")) {
-        this.$router.push({
-          name: "SelectSchool"
-        });
-      } else {
-        this.$router.push({
-          name: "Home"
-        });
-      }
-    },
-    // code valid
-    checkField(field) {
-      return new Promise((resolve, reject) => {
-        this.$refs.loginForm.validateField(field, unvalid => {
-          if (unvalid) {
-            reject();
-          } else {
-            resolve();
-          }
-        });
-      });
-    },
-    async fetchSmsCode() {
-      const validAll = [
-        this.checkField("mobileNumber"),
-        this.checkField("schoolCode")
-      ];
-
-      let result = true;
-      await Promise.all(validAll).catch(() => {
-        result = false;
-      });
-
-      if (!result) return;
-
-      this.isFetchingCode = true;
-      const data = await getSmsCode({
-        schoolCode: this.loginModel.schoolCode,
-        mobileNumber: this.loginModel.mobileNumber
-      }).catch(() => {
-        this.isFetchingCode = false;
+      this.$router.push({
+        name: "Home"
       });
-      if (!data) return;
-
-      if (data.mobileNumber) {
-        this.$message.success(
-          `已向手机尾号【${data.mobileNumber.slice(
-            -4
-          )}】成功发送短信,请在2分钟内进行验证!`
-        );
-        this.changeContent();
-      } else {
-        this.isFetchingCode = false;
-        this.$message.error("未绑定手机号,请先绑定!");
-        // this.userInfo = {
-        //   ...data,
-        //   loginName: this.loginModel.loginName,
-        //   schoolCode: this.loginModel.schoolCode,
-        //   password: this.loginModel.password
-        // };
-        // this.$refs.ResetPwd.open();
-      }
     }
   }
 };

+ 0 - 265
src/modules/login/views/Login2.vue

@@ -1,265 +0,0 @@
-<template>
-  <div class="login login-box">
-    <div class="login-theme"></div>
-    <div class="login-body" @keyup.enter="submit('loginForm')">
-      <div class="login-title">
-        <img v-if="schoolLogo" :src="schoolLogo" alt="学校logo" />
-        <h1 v-else>知学知考</h1>
-      </div>
-      <div class="login-form">
-        <el-form ref="loginForm" :model="loginModel" :rules="loginRules">
-          <el-form-item prop="loginName">
-            <el-input
-              v-model.trim="loginModel.loginName"
-              placeholder="请输入账号"
-              name="username"
-              clearable
-            >
-              <i class="icon icon-phone" slot="prefix"></i>
-            </el-input>
-          </el-form-item>
-          <el-form-item prop="password">
-            <el-input
-              type="password"
-              v-model.trim="loginModel.password"
-              placeholder="请输入密码"
-              clearable
-            >
-              <i class="icon icon-password" slot="prefix"></i>
-            </el-input>
-          </el-form-item>
-          <el-form-item prop="code" v-if="smsCodeRequired">
-            <div class="vlcode">
-              <div class="vlcode-right">
-                <el-button
-                  style="width:100%;"
-                  type="text"
-                  @click="fetchSmsCode"
-                  :disabled="isFetchingCode"
-                  >+{{ codeContent }}</el-button
-                >
-              </div>
-              <div class="vlcode-left">
-                <el-input
-                  v-model.trim="loginModel.code"
-                  placeholder="请输入手机验证码"
-                  name="code"
-                  clearable
-                >
-                  <i class="icon icon-checkcode" slot="prefix"></i>
-                </el-input>
-              </div>
-            </div>
-          </el-form-item>
-          <el-form-item prop="schoolCode"></el-form-item>
-          <el-form-item>
-            <el-button
-              class="login-submit-btn"
-              size="large"
-              type="info"
-              :disabled="isSubmit"
-              round
-              @click="submit('loginForm')"
-              >登录</el-button
-            >
-          </el-form-item>
-        </el-form>
-      </div>
-    </div>
-
-    <!-- 修改密码 -->
-    <reset-pwd
-      :user-info="userInfo"
-      ref="ResetPwd"
-      @modified="resetPwdSuccess"
-    ></reset-pwd>
-  </div>
-</template>
-
-<script>
-import { password, smscode } from "@/plugins/formRules";
-import { login, getSmsCode, getSchoolInfo, getSysConfig } from "../api";
-import { Base64 } from "@/plugins/crypto";
-import ResetPwd from "@/modules/base/components/ResetPwd";
-import { ORG_CODE } from "@/constants/app";
-import fetchSmsMixins from "../fetchSmsMixins";
-
-export default {
-  name: "login",
-  components: { ResetPwd },
-  mixins: [fetchSmsMixins],
-  data() {
-    return {
-      nameWaitTime: "login",
-      smsCodeRequired: false,
-      loginModel: {
-        schoolCode: ORG_CODE,
-        loginName: "",
-        code: "",
-        password: ""
-      },
-      loginRules: {
-        code: smscode,
-        password,
-        loginName: [
-          {
-            required: true,
-            message: "请输入用户名",
-            trigger: "change"
-          }
-        ],
-        schoolCode: [
-          {
-            required: true,
-            message: "学校编码缺失",
-            trigger: "change"
-          }
-        ]
-      },
-      userInfo: {},
-      roles: [],
-      isSubmit: false,
-      schoolLogo: ""
-    };
-  },
-  mounted() {
-    this.$ls.clear();
-    this.setWaitingTime();
-    this.getSchool();
-    this.getSmsCodeRequired();
-  },
-  methods: {
-    async getSmsCodeRequired() {
-      const data = await getSysConfig("sys.code.enable");
-      this.smsCodeRequired = data && data.configValue === "true";
-    },
-    async getSchool() {
-      const data = await getSchoolInfo(ORG_CODE);
-      this.$ls.set("schoolLogo", data.logo);
-      this.$ls.set("schoolName", data.name);
-      this.schoolLogo = data.logo;
-    },
-    async submit(name) {
-      const valid = await this.$refs[name].validate().catch(() => {});
-      if (!valid) return;
-
-      if (this.isSubmit) return;
-      this.isSubmit = true;
-      const data = await login({
-        loginName: this.loginModel.loginName,
-        password: Base64(this.loginModel.password),
-        code: this.smsCodeRequired ? this.loginModel.code : null,
-        schoolCode: this.loginModel.schoolCode
-      }).catch(() => {});
-      this.isSubmit = false;
-      if (!data) return;
-
-      if (data.orgInfo)
-        this.$ls.set("orgId", data.orgInfo.id, this.GLOBAL.authTimeout);
-      if (data.schoolInfo)
-        this.$ls.set("schoolId", data.schoolInfo.id, this.GLOBAL.authTimeout);
-      this.$ls.set("user", data, this.GLOBAL.authTimeout);
-
-      this.$ls.set("token", data.accessToken, this.GLOBAL.authTimeout);
-
-      // 强制修改密码和绑定手机号
-      if (
-        data.userLoginCheckResult &&
-        (!data.userLoginCheckResult.pwdCount ||
-          !data.userLoginCheckResult.mobileNumber)
-      ) {
-        this.userInfo = {
-          ...this.loginModel,
-          ...data.userLoginCheckResult
-        };
-        this.$refs.ResetPwd.open();
-        return;
-      }
-
-      if (data.roleList && data.roleList.includes("ADMIN")) {
-        this.$router.push({
-          name: "SelectSchool"
-        });
-      } else {
-        this.$router.push({
-          name: "Home"
-        });
-      }
-    },
-    resetPwdSuccess(data) {
-      if (data.orgInfo)
-        this.$ls.set("orgId", data.orgInfo.id, this.GLOBAL.authTimeout);
-      if (data.schoolInfo)
-        this.$ls.set("schoolId", data.schoolInfo.id, this.GLOBAL.authTimeout);
-      this.$ls.set("user", data, this.GLOBAL.authTimeout);
-
-      this.$ls.set("token", data.accessToken, this.GLOBAL.authTimeout);
-
-      if (data.roleList && data.roleList.includes("ADMIN")) {
-        this.$router.push({
-          name: "SelectSchool"
-        });
-      } else {
-        this.$router.push({
-          name: "Home"
-        });
-      }
-    },
-    // code valid
-    checkField(field) {
-      return new Promise((resolve, reject) => {
-        this.$refs.loginForm.validateField(field, unvalid => {
-          if (unvalid) {
-            reject();
-          } else {
-            resolve();
-          }
-        });
-      });
-    },
-    async fetchSmsCode() {
-      const validAll = [
-        this.checkField("loginName"),
-        this.checkField("password"),
-        this.checkField("schoolCode")
-      ];
-
-      let result = true;
-      await Promise.all(validAll).catch(() => {
-        result = false;
-      });
-
-      if (!result) return;
-
-      this.isFetchingCode = true;
-      const data = await getSmsCode({
-        loginName: this.loginModel.loginName,
-        schoolCode: this.loginModel.schoolCode,
-        password: Base64(this.loginModel.password)
-      }).catch(() => {
-        this.isFetchingCode = false;
-      });
-      if (!data) return;
-
-      if (data.mobileNumber) {
-        this.$message.success(
-          `已向手机尾号【${data.mobileNumber.slice(
-            -4
-          )}】成功发送短信,请在2分钟内进行验证!`
-        );
-        this.changeContent();
-      } else {
-        this.isFetchingCode = false;
-        this.$message.error("未绑定手机号,请先绑定!");
-        this.userInfo = {
-          ...data,
-          loginName: this.loginModel.loginName,
-          schoolCode: this.loginModel.schoolCode,
-          password: this.loginModel.password
-        };
-        this.$refs.ResetPwd.open();
-      }
-    }
-  }
-};
-</script>

+ 0 - 76
src/modules/login/views/SelectSchool.vue

@@ -1,76 +0,0 @@
-<template>
-  <div class="select-school login login-box">
-    <div class="login-theme"></div>
-    <div class="login-body">
-      <div class="login-title">
-        <h1>选择学校</h1>
-      </div>
-      <div class="school-form">
-        <el-form ref="modalFormComp" :model="modalForm" :rules="rules">
-          <el-form-item prop="schoolId">
-            <school-select
-              v-model="modalForm.schoolId"
-              style="width:100%;"
-              @change="schoolChange"
-            ></school-select>
-          </el-form-item>
-          <el-form-item>
-            <el-button style="width:100%;" type="primary" @click="confirm"
-              >进入学校</el-button
-            >
-          </el-form-item>
-          <el-form-item>
-            <el-button style="width:100%;" type="warning" @click="toAdmin"
-              >进入超管中心<i class="el-icon-arrow-right"></i
-            ></el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  name: "select-school",
-  data() {
-    return {
-      schools: [],
-      modalForm: { schoolId: "" },
-      curSchool: {},
-      rules: {
-        schoolId: [{ required: true, message: "请选择学校", trigger: "change" }]
-      }
-    };
-  },
-  created() {
-    this.$ls.remove("schoolId");
-    this.$ls.remove("schoolName");
-    this.$ls.remove("schoolLogo");
-  },
-  methods: {
-    schoolChange(school) {
-      this.curSchool = school;
-    },
-    toAdmin() {
-      this.$router.push({ name: "Admin" });
-    },
-    async confirm() {
-      const valid = await this.$refs.modalFormComp.validate().catch(() => {});
-      if (!valid) return;
-
-      this.$ls.set(
-        "schoolId",
-        this.modalForm.schoolId,
-        this.GLOBAL.authTimeout
-      );
-      this.$ls.set("schoolName", this.curSchool.name, this.GLOBAL.authTimeout);
-      this.$ls.set("schoolLogo", this.curSchool.logo, this.GLOBAL.authTimeout);
-
-      this.$router.push({
-        name: "Home"
-      });
-    }
-  }
-};
-</script>

+ 1 - 41
src/plugins/globalVuePlugins.js

@@ -1,52 +1,13 @@
 import { objAssign, randomCode, tableAction } from "@/plugins/utils";
 // mixins
 import commonMixins from "../mixins/common";
-import privilegeMixins from "../mixins/privilege";
 // components
 import ViewFooter from "@/components/ViewFooter.vue";
 import MoreText from "@/components/MoreText.vue";
-import RoomSelect from "../components/base/RoomSelect.vue";
-import PlaceSelect from "../components/base/PlaceSelect.vue";
-import PrintPlanSelect from "../components/base/PrintPlanSelect.vue";
-import CardRuleSelect from "../components/base/CardRuleSelect.vue";
-import CourseSelect from "../components/base/CourseSelect.vue";
-import PaperNumberSelect from "../components/base/PaperNumberSelect.vue";
-import QuestionTeacherSelect from "../components/base/QuestionTeacherSelect.vue";
-import QuestionTeacherUserSelect from "../components/base/QuestionTeacherUserSelect.vue";
-import SchoolSelect from "../components/base/SchoolSelect.vue";
-import CampusSelect from "../components/base/CampusSelect.vue";
-import PrintRoomSelect from "../components/base/PrintRoomSelect.vue";
-import TeachingRoomSelect from "../components/base/TeachingRoomSelect.vue";
-import FacultySelect from "../components/base/FacultySelect.vue";
-import SemesterSelect from "../components/base/SemesterSelect.vue";
-import CollegeSelect from "../components/base/CollegeSelect.vue";
-import ClazzSelect from "../components/base/ClazzSelect.vue";
-import MajorSelect from "../components/base/MajorSelect.vue";
-import ClassSelect from "../components/base/ClassSelect.vue";
-import ExamSelect from "../components/base/ExamSelect.vue";
 
 const components = {
   ViewFooter,
-  MoreText,
-  RoomSelect,
-  PlaceSelect,
-  PrintPlanSelect,
-  CardRuleSelect,
-  CourseSelect,
-  PaperNumberSelect,
-  QuestionTeacherSelect,
-  QuestionTeacherUserSelect,
-  SchoolSelect,
-  CampusSelect,
-  PrintRoomSelect,
-  TeachingRoomSelect,
-  FacultySelect,
-  SemesterSelect,
-  CollegeSelect,
-  ClazzSelect,
-  MajorSelect,
-  ClassSelect,
-  ExamSelect
+  MoreText
 };
 
 export default {
@@ -63,6 +24,5 @@ export default {
 
     //全局 mixins
     Vue.mixin(commonMixins);
-    Vue.mixin(privilegeMixins);
   }
 };

+ 1 - 17
src/store.js

@@ -3,31 +3,15 @@ import Vuex from "vuex";
 
 Vue.use(Vuex);
 
-// TODO:待完善
-const privilegeMapData = window.sessionStorage.getItem("privilegeMap");
-const privilegeMap = privilegeMapData ? JSON.parse(privilegeMapData).value : {};
-
-// modules
-import { card, free } from "./modules/card/store";
-import exam from "./modules/exam/store";
-
 export default new Vuex.Store({
   state: {
     user: {},
-    privilegeMap
   },
   mutations: {
     setUser(state, user) {
       state.user = user;
-    },
-    setPrivilegeMap(state, privilegeMap) {
-      state.privilegeMap = privilegeMap;
     }
   },
   actions: {},
-  modules: {
-    card,
-    free,
-    exam
-  }
+  modules: {}
 });