From d957914c30a70b1b2b9f021945126762fd61470a Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期一, 20 二月 2023 20:45:45 +0800
Subject: [PATCH] fix 修复 LoginHelper 获取 LoginUser 缺失子类扩展数据问题
---
ruoyi-ui/src/views/login.vue | 85 ++++++++++++++++++++++++++++++++----------
1 files changed, 64 insertions(+), 21 deletions(-)
diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue
index 19e45c7..b4e3131 100644
--- a/ruoyi-ui/src/views/login.vue
+++ b/ruoyi-ui/src/views/login.vue
@@ -1,9 +1,25 @@
<template>
<div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
- <h3 class="title">鑻ヤ緷鍚庡彴绠$悊绯荤粺</h3>
+ <h3 class="title">RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺</h3>
+ <el-form-item prop="tenantId">
+ <el-select v-model="loginForm.tenantId" filterable placeholder="璇烽�夋嫨/杈撳叆鍏徃鍚嶇О" style="width: 100%">
+ <el-option
+ v-for="item in tenantList"
+ :key="item.tenantId"
+ :label="item.companyName"
+ :value="item.tenantId">
+ </el-option>
+ <svg-icon slot="prefix" icon-class="company" class="el-input__icon input-icon" />
+ </el-select>
+ </el-form-item>
<el-form-item prop="username">
- <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="璐﹀彿">
+ <el-input
+ v-model="loginForm.username"
+ type="text"
+ auto-complete="off"
+ placeholder="璐﹀彿"
+ >
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
@@ -18,7 +34,7 @@
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
- <el-form-item prop="code">
+ <el-form-item prop="code" v-if="captchaEnabled">
<el-input
v-model="loginForm.code"
auto-complete="off"
@@ -44,17 +60,20 @@
<span v-if="!loading">鐧� 褰�</span>
<span v-else>鐧� 褰� 涓�...</span>
</el-button>
+ <div style="float: right;" v-if="register">
+ <router-link class="link-type" :to="'/register'">绔嬪嵆娉ㄥ唽</router-link>
+ </div>
</el-form-item>
</el-form>
<!-- 搴曢儴 -->
<div class="el-login-footer">
- <span>Copyright 漏 2018-2020 ruoyi.vip All Rights Reserved.</span>
+ <span>Copyright 漏 2018-2022 ruoyi.vip All Rights Reserved.</span>
</div>
</div>
</template>
<script>
-import { getCodeImg } from "@/api/login";
+import { getCodeImg, tenantList } from "@/api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt'
@@ -63,8 +82,8 @@
data() {
return {
codeUrl: "",
- cookiePassword: "",
loginForm: {
+ tenantId: "000000",
username: "admin",
password: "admin123",
rememberMe: false,
@@ -72,16 +91,25 @@
uuid: ""
},
loginRules: {
+ tenantId: [
+ { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勭鎴风紪鍙�" }
+ ],
username: [
- { required: true, trigger: "blur", message: "鐢ㄦ埛鍚嶄笉鑳戒负绌�" }
+ { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" }
],
password: [
- { required: true, trigger: "blur", message: "瀵嗙爜涓嶈兘涓虹┖" }
+ { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" }
],
- code: [{ required: true, trigger: "change", message: "楠岃瘉鐮佷笉鑳戒负绌�" }]
+ code: [{ required: true, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }]
},
loading: false,
- redirect: undefined
+ // 楠岃瘉鐮佸紑鍏�
+ captchaEnabled: true,
+ // 娉ㄥ唽寮�鍏�
+ register: false,
+ redirect: undefined,
+ // 绉熸埛鍒楄〃
+ tenantList:[]
};
},
watch: {
@@ -94,20 +122,34 @@
},
created() {
this.getCode();
+ this.getTenantList();
this.getCookie();
},
methods: {
getCode() {
getCodeImg().then(res => {
- this.codeUrl = "data:image/gif;base64," + res.img;
- this.loginForm.uuid = res.uuid;
+ this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled;
+ if (this.captchaEnabled) {
+ this.codeUrl = "data:image/gif;base64," + res.data.img;
+ this.loginForm.uuid = res.data.uuid;
+ }
+ });
+ },
+ getTenantList() {
+ tenantList().then(res => {
+ this.tenantList = res.data;
+ if (this.tenantList != null && this.tenantList.length !== 0) {
+ this.loginForm.tenantId = this.tenantList[0].tenantId;
+ }
});
},
getCookie() {
+ const tenantId = Cookies.get("tenantId");
const username = Cookies.get("username");
const password = Cookies.get("password");
const rememberMe = Cookies.get('rememberMe')
this.loginForm = {
+ tenantId: tenantId === undefined ? this.loginForm.tenantId : tenantId,
username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
@@ -118,23 +160,24 @@
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
+ Cookies.set("tenantId", this.loginForm.tenantId, { expires: 30 });
Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
} else {
+ Cookies.remove("tenantId");
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove('rememberMe');
}
- this.$store
- .dispatch("Login", this.loginForm)
- .then(() => {
- this.$router.push({ path: this.redirect || "/" });
- })
- .catch(() => {
- this.loading = false;
+ this.$store.dispatch("Login", this.loginForm).then(() => {
+ this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
+ }).catch(() => {
+ this.loading = false;
+ if (this.captchaEnabled) {
this.getCode();
- });
+ }
+ });
}
});
}
@@ -148,7 +191,7 @@
justify-content: center;
align-items: center;
height: 100%;
- background-image: url("../assets/image/login-background.jpg");
+ background-image: url("../assets/images/login-background.jpg");
background-size: cover;
}
.title {
--
Gitblit v1.9.3