|
@@ -1,133 +1,116 @@
|
|
<template>
|
|
<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">
|
|
|
|
- <template v-if="loginModel.schoolCode === 'admin'">
|
|
|
|
- <img src="@/assets/images/admin-logo.png" alt="admin logo" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else>
|
|
|
|
- <img v-if="schoolLogo" :src="schoolLogo" alt="学校logo" />
|
|
|
|
- </template>
|
|
|
|
- </div>
|
|
|
|
- <div class="login-form">
|
|
|
|
- <el-form
|
|
|
|
- v-if="IS_USERNAME_TYPE"
|
|
|
|
- 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 v-if="schoolInfo.accountSmsVerify" prop="code">
|
|
|
|
- <div class="vlcode">
|
|
|
|
- <div class="vlcode-right">
|
|
|
|
- <el-button
|
|
|
|
- style="width: 100%"
|
|
|
|
- type="text"
|
|
|
|
- @click="fetchAccountSmsCode"
|
|
|
|
- :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>
|
|
|
|
- <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>
|
|
|
|
- </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 v-if="schoolInfo.phoneLogin" 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 class="login login-box" @keyup.enter="submit('loginForm')">
|
|
|
|
+ <el-tabs class="login-menu" v-model="loginType">
|
|
|
|
+ <el-tab-pane label="密码登录" name="ACCOUNT"></el-tab-pane>
|
|
|
|
+ <el-tab-pane
|
|
|
|
+ v-if="schoolInfo.phoneLogin"
|
|
|
|
+ label="短信登录"
|
|
|
|
+ name="PHONE"
|
|
|
|
+ ></el-tab-pane>
|
|
|
|
+ </el-tabs>
|
|
|
|
+ <div class="login-form">
|
|
|
|
+ <el-form
|
|
|
|
+ v-if="IS_USERNAME_TYPE"
|
|
|
|
+ ref="loginForm"
|
|
|
|
+ size="large"
|
|
|
|
+ :model="loginModel"
|
|
|
|
+ :rules="loginRules"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item prop="loginName">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="loginModel.loginName"
|
|
|
|
+ placeholder="请输入你的账号"
|
|
|
|
+ name="username"
|
|
|
|
+ clearable
|
|
|
|
+ >
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item prop="password">
|
|
|
|
+ <el-input
|
|
|
|
+ type="password"
|
|
|
|
+ v-model.trim="loginModel.password"
|
|
|
|
+ placeholder="请输入你的密码"
|
|
|
|
+ name="password"
|
|
|
|
+ clearable
|
|
|
|
+ >
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item v-if="schoolInfo.accountSmsVerify" prop="code">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="loginModel.code"
|
|
|
|
+ placeholder="请输入手机验证码"
|
|
|
|
+ name="code"
|
|
|
|
+ clearable
|
|
|
|
+ class="code-input"
|
|
|
|
+ >
|
|
|
|
+ <template slot="suffix">
|
|
|
|
+ <el-button
|
|
|
|
+ class="code-btn"
|
|
|
|
+ type="text"
|
|
|
|
+ size="medium"
|
|
|
|
+ :disabled="isFetchingCode"
|
|
|
|
+ @click="fetchAccountSmsCode"
|
|
|
|
+ >{{ codeContent }}</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <el-button
|
|
|
|
+ class="login-submit-btn"
|
|
|
|
+ type="info"
|
|
|
|
+ :disabled="isSubmit"
|
|
|
|
+ @click="submit('loginForm')"
|
|
|
|
+ >登录</el-button
|
|
|
|
+ >
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <el-form
|
|
|
|
+ v-else
|
|
|
|
+ ref="loginForm"
|
|
|
|
+ size="large"
|
|
|
|
+ :model="loginModel"
|
|
|
|
+ :rules="loginRules"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item prop="mobileNumber">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="loginModel.mobileNumber"
|
|
|
|
+ placeholder="请输入你的手机号"
|
|
|
|
+ name="mobileNumber"
|
|
|
|
+ clearable
|
|
|
|
+ >
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item prop="code">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="loginModel.code"
|
|
|
|
+ placeholder="请输入你的验证码"
|
|
|
|
+ name="code"
|
|
|
|
+ clearable
|
|
|
|
+ class="code-input"
|
|
|
|
+ >
|
|
|
|
+ <template slot="suffix">
|
|
|
|
+ <el-button
|
|
|
|
+ class="code-btn"
|
|
|
|
+ type="text"
|
|
|
|
+ size="medium"
|
|
|
|
+ :disabled="isFetchingCode"
|
|
|
|
+ @click.stop="fetchSmsCode"
|
|
|
|
+ >{{ codeContent }}</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <el-button
|
|
|
|
+ class="login-submit-btn"
|
|
|
|
+ type="info"
|
|
|
|
+ :disabled="isSubmit"
|
|
|
|
+ @click="submit('loginForm')"
|
|
|
|
+ >登录</el-button
|
|
|
|
+ >
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- 修改密码 -->
|
|
<!-- 修改密码 -->
|
|
@@ -191,7 +174,6 @@ export default {
|
|
userInfo: {},
|
|
userInfo: {},
|
|
roles: [],
|
|
roles: [],
|
|
isSubmit: false,
|
|
isSubmit: false,
|
|
- schoolLogo: "",
|
|
|
|
loginType: "ACCOUNT",
|
|
loginType: "ACCOUNT",
|
|
schoolInfo: {
|
|
schoolInfo: {
|
|
accountSmsVerify: false,
|
|
accountSmsVerify: false,
|
|
@@ -229,15 +211,11 @@ export default {
|
|
this.$ls.set("schoolLogo", data.logo);
|
|
this.$ls.set("schoolLogo", data.logo);
|
|
this.$ls.set("schoolName", data.name);
|
|
this.$ls.set("schoolName", data.name);
|
|
this.$parent.version = data.version || "";
|
|
this.$parent.version = data.version || "";
|
|
- this.schoolLogo = data.logo;
|
|
|
|
|
|
+ this.$parent.schoolInfo = data;
|
|
this.schoolInfo = data;
|
|
this.schoolInfo = data;
|
|
this.loginModel.schoolCode = data.schoolCode;
|
|
this.loginModel.schoolCode = data.schoolCode;
|
|
this.$ls.set("schoolInfo", data);
|
|
this.$ls.set("schoolInfo", data);
|
|
},
|
|
},
|
|
- switchLoginType() {
|
|
|
|
- if (!this.schoolInfo.phoneLogin) return;
|
|
|
|
- this.loginType = this.loginType === "ACCOUNT" ? "PHONE" : "ACCOUNT";
|
|
|
|
- },
|
|
|
|
async submit(name) {
|
|
async submit(name) {
|
|
const valid = await this.$refs[name].validate().catch(() => {});
|
|
const valid = await this.$refs[name].validate().catch(() => {});
|
|
if (!valid) return;
|
|
if (!valid) return;
|
|
@@ -353,16 +331,10 @@ export default {
|
|
});
|
|
});
|
|
},
|
|
},
|
|
async fetchSmsCode() {
|
|
async fetchSmsCode() {
|
|
- const validAll = [
|
|
|
|
- this.checkField("mobileNumber"),
|
|
|
|
- this.checkField("schoolCode"),
|
|
|
|
- ];
|
|
|
|
-
|
|
|
|
let result = true;
|
|
let result = true;
|
|
- await Promise.all(validAll).catch(() => {
|
|
|
|
|
|
+ await this.checkField("mobileNumber").catch(() => {
|
|
result = false;
|
|
result = false;
|
|
});
|
|
});
|
|
-
|
|
|
|
if (!result) return;
|
|
if (!result) return;
|
|
|
|
|
|
this.isFetchingCode = true;
|
|
this.isFetchingCode = true;
|
|
@@ -396,7 +368,6 @@ export default {
|
|
async fetchAccountSmsCode() {
|
|
async fetchAccountSmsCode() {
|
|
const validAll = [
|
|
const validAll = [
|
|
this.checkField("loginName"),
|
|
this.checkField("loginName"),
|
|
- this.checkField("schoolCode"),
|
|
|
|
this.checkField("password"),
|
|
this.checkField("password"),
|
|
];
|
|
];
|
|
|
|
|