From c88c3d6c69abfad8f6efd23024fc9ce6783b31fc Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期三, 30 四月 2025 08:25:06 +0800 Subject: [PATCH] 外链加载时遮罩信息提示 --- src/views/login.vue | 86 +++++++++++++++++++++++++------------------ 1 files changed, 50 insertions(+), 36 deletions(-) diff --git a/src/views/login.vue b/src/views/login.vue index c2a91ef..4ac6e3e 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -1,7 +1,7 @@ <template> <div class="login"> <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> - <h3 class="title">鑻ヤ緷鍚庡彴绠$悊绯荤粺</h3> + <h3 class="title">{{ title }}</h3> <el-form-item prop="username"> <el-input v-model="loginForm.username" @@ -59,20 +59,22 @@ </el-form> <!-- 搴曢儴 --> <div class="el-login-footer"> - <span>Copyright 漏 2018-2023 ruoyi.vip All Rights Reserved.</span> + <span>Copyright 漏 2018-2025 ruoyi.vip All Rights Reserved.</span> </div> </div> </template> <script setup> -import { getCodeImg } from "@/api/login"; -import Cookies from "js-cookie"; -import { encrypt, decrypt } from "@/utils/jsencrypt"; +import { getCodeImg } from "@/api/login" +import Cookies from "js-cookie" +import { encrypt, decrypt } from "@/utils/jsencrypt" import useUserStore from '@/store/modules/user' +const title = import.meta.env.VITE_APP_TITLE const userStore = useUserStore() -const router = useRouter(); -const { proxy } = getCurrentInstance(); +const route = useRoute() +const router = useRouter() +const { proxy } = getCurrentInstance() const loginForm = ref({ username: "admin", @@ -80,74 +82,85 @@ rememberMe: false, code: "", uuid: "" -}); +}) const loginRules = { username: [{ required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" }], password: [{ required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" }], code: [{ required: true, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }] -}; +} -const codeUrl = ref(""); -const loading = ref(false); +const codeUrl = ref("") +const loading = ref(false) // 楠岃瘉鐮佸紑鍏� -const captchaEnabled = ref(true); +const captchaEnabled = ref(true) // 娉ㄥ唽寮�鍏� -const register = ref(false); -const redirect = ref(undefined); +const register = ref(false) +const redirect = ref(undefined) + +watch(route, (newRoute) => { + redirect.value = newRoute.query && newRoute.query.redirect +}, { immediate: true }) function handleLogin() { proxy.$refs.loginRef.validate(valid => { if (valid) { - loading.value = true; + loading.value = true // 鍕鹃�変簡闇�瑕佽浣忓瘑鐮佽缃湪 cookie 涓缃浣忕敤鎴峰悕鍜屽瘑鐮� if (loginForm.value.rememberMe) { - Cookies.set("username", loginForm.value.username, { expires: 30 }); - Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 }); - Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 }); + Cookies.set("username", loginForm.value.username, { expires: 30 }) + Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 }) + Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 }) } else { // 鍚﹀垯绉婚櫎 - Cookies.remove("username"); - Cookies.remove("password"); - Cookies.remove("rememberMe"); + Cookies.remove("username") + Cookies.remove("password") + Cookies.remove("rememberMe") } // 璋冪敤action鐨勭櫥褰曟柟娉� userStore.login(loginForm.value).then(() => { - router.push({ path: redirect.value || "/" }); + const query = route.query + const otherQueryParams = Object.keys(query).reduce((acc, cur) => { + if (cur !== "redirect") { + acc[cur] = query[cur] + } + return acc + }, {}) + router.push({ path: redirect.value || "/", query: otherQueryParams }) }).catch(() => { - loading.value = false; + loading.value = false // 閲嶆柊鑾峰彇楠岃瘉鐮� if (captchaEnabled.value) { - getCode(); + getCode() } - }); + }) } - }); + }) } function getCode() { getCodeImg().then(res => { - captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled; + captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled if (captchaEnabled.value) { - codeUrl.value = "data:image/gif;base64," + res.img; - loginForm.value.uuid = res.uuid; + codeUrl.value = "data:image/gif;base64," + res.img + loginForm.value.uuid = res.uuid } - }); + }) } function getCookie() { - const username = Cookies.get("username"); - const password = Cookies.get("password"); - const rememberMe = Cookies.get("rememberMe"); + const username = Cookies.get("username") + const password = Cookies.get("password") + const rememberMe = Cookies.get("rememberMe") loginForm.value = { username: username === undefined ? loginForm.value.username : username, password: password === undefined ? loginForm.value.password : decrypt(password), rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) - }; + } } -getCode(); -getCookie(); +getCode() +getCookie() </script> <style lang='scss' scoped> @@ -170,6 +183,7 @@ background: #ffffff; width: 400px; padding: 25px 25px 5px 25px; + z-index: 1; .el-input { height: 40px; input { -- Gitblit v1.9.3