Merge remote-tracking branch 'origin/master'

This commit is contained in:
2025-09-29 18:26:47 +08:00
6 changed files with 52 additions and 47 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -17,7 +17,7 @@
</div>
</el-tooltip>
</template>
<div class="avatar-container">
<!-- <div class="avatar-container">
<el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
<img :src="userStore.avatar" class="user-avatar" />
@@ -37,7 +37,7 @@
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div> -->
</div>
</div>
</template>
@@ -48,10 +48,7 @@ import Breadcrumb from '@/components/Breadcrumb'
import TopNav from '@/components/TopNav'
import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect'
import HeaderSearch from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
import useAppStore from '@/store/modules/app'
import useUserStore from '@/store/modules/user'
import useSettingsStore from '@/store/modules/settings'

View File

@@ -1,5 +1,5 @@
import axios from 'axios'
import { ElNotification , ElMessageBox, ElMessage, ElLoading } from 'element-plus'
import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus'
import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import { tansParams, blobValidate } from '@/utils/ruoyi'
@@ -67,46 +67,53 @@ service.interceptors.request.use(config => {
}
return config
}, error => {
console.log(error)
Promise.reject(error)
console.log(error)
Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(res => {
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
// 二进制数据则直接返回
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
return res.data
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
// 二进制数据则直接返回
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
return res.data
}
if (code === 401) {
if (!isRelogin.show) {
// isRelogin.show = true;
// ElMessageBox.confirm(
// '登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示',
// { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }
// ).then(() => {
// isRelogin.show = false;
// useUserStore().logOut().then(() => {
// location.href = '/index';
// })
// }).catch(() => {
// isRelogin.show = false;
// });
// 直接重新登录
useUserStore().login({ username: 'admin', password: 'admin123' }).then(() => {
location.href = '/index';
})
}
if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true;
ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
isRelogin.show = false;
useUserStore().logOut().then(() => {
location.href = '/index';
})
}).catch(() => {
isRelogin.show = false;
});
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
ElMessage({ message: msg, type: 'error' })
return Promise.reject(new Error(msg))
} else if (code === 601) {
ElMessage({ message: msg, type: 'warning' })
return Promise.reject(new Error(msg))
} else if (code !== 200) {
ElNotification.error({ title: msg })
return Promise.reject('error')
} else {
return Promise.resolve(res.data)
}
},
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
ElMessage({ message: msg, type: 'error' })
return Promise.reject(new Error(msg))
} else if (code === 601) {
ElMessage({ message: msg, type: 'warning' })
return Promise.reject(new Error(msg))
} else if (code !== 200) {
ElNotification.error({ title: msg })
return Promise.reject('error')
} else {
return Promise.resolve(res.data)
}
},
error => {
console.log('err' + error)
let { message } = error;

View File

@@ -18,10 +18,10 @@
<input type="password" v-model="loginForm.password" placeholder="密码" class="form-input" />
<p class="error-tip" v-if="loginForm.password === ''">密码不能为空</p>
</div>
<div class="form-group captcha-group">
<!-- <div class="form-group captcha-group">
<input type="text" v-model="loginForm.code" placeholder="验证码" class="form-input captcha-input" />
<img :src="codeUrl" @click="getCode" alt="验证码" class="captcha-img" />
</div>
</div> -->
<div class="remember-group">
<input type="checkbox" id="remember" v-model="loginForm.rememberMe" class="remember-checkbox" />
<label for="remember" class="remember-label">记住密码</label>
@@ -49,14 +49,14 @@ const loginForm = ref({
username: "admin",
password: "admin123",
rememberMe: false,
code: "",
uuid: ""
// code: "",
// uuid: ""
});
const loginRules = {
username: [{ required: true, trigger: "blur", message: "请输入您的账号" }],
password: [{ required: true, trigger: "blur", message: "请输入您的密码" }],
code: [{ required: true, trigger: "change", message: "请输入验证码" }]
// code: [{ required: true, trigger: "change", message: "请输入验证码" }]
};
const codeUrl = ref("");
@@ -130,6 +130,7 @@ function getCookie() {
getCode();
getCookie();
handleLogin();
</script>
<style lang="scss" scoped>

View File

@@ -64,7 +64,7 @@ public class SysLoginService
public String login(String username, String password, String code, String uuid)
{
// 验证码校验
validateCaptcha(username, code, uuid);
// validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证