From e03866f401ea60dd770dbd52159b62a9f28c6920 Mon Sep 17 00:00:00 2001
From: ali <ali9696@163.com>
Date: 星期四, 09 一月 2025 17:21:57 +0800
Subject: [PATCH] 修改登录页获取自定义配置

---
 zhitan-vue/src/App.vue                            |   24 ++--
 zhitan-vue/src/views/login.vue                    |  229 +++++++++++++++++++++------------------------
 zhitan-vue/src/layout/components/Sidebar/Logo.vue |   45 +++++----
 3 files changed, 142 insertions(+), 156 deletions(-)

diff --git a/zhitan-vue/src/App.vue b/zhitan-vue/src/App.vue
index 59e8fa6..2eff331 100644
--- a/zhitan-vue/src/App.vue
+++ b/zhitan-vue/src/App.vue
@@ -3,23 +3,21 @@
 </template>
 
 <script setup>
-// import Cookies from 'js-cookie'
-import useSettingsStore from '@/store/modules/settings'
-import { handleThemeStyle } from '@/utils/theme'
-// import { systemName } from '@/api/system/name'
+import Cookies from "js-cookie"
+import useSettingsStore from "@/store/modules/settings"
+import { handleThemeStyle } from "@/utils/theme"
+import { systemName } from "@/api/system/name"
 onMounted(() => {
   nextTick(() => {
     // 鍒濆鍖栦富棰樻牱寮�
     handleThemeStyle(useSettingsStore().theme)
-    document.querySelector('body').className = 'themeDark';
+    document.querySelector("body").className = "themeDark"
   })
-  // systemName().then(res => {
-  //   if (res.code == 200) {
-  //     sessionStorage.setItem('SystemInfo', JSON.stringify(res.data))
-  //     // sessionStorage.removeItem('SystemInfo')
-  //   }
-  // })
-
-
+  systemName().then((res) => {
+    if (res.code == 200) {
+      Cookies.set("SystemInfo", JSON.stringify(res.data))
+      // Cookies.remove('SystemInfo')
+    }
+  })
 })
 </script>
diff --git a/zhitan-vue/src/layout/components/Sidebar/Logo.vue b/zhitan-vue/src/layout/components/Sidebar/Logo.vue
index 86a54a6..9fe31c0 100644
--- a/zhitan-vue/src/layout/components/Sidebar/Logo.vue
+++ b/zhitan-vue/src/layout/components/Sidebar/Logo.vue
@@ -1,6 +1,9 @@
 <template>
-  <div class="sidebar-logo-container" :class="{ 'collapse': collapse }"
-       :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
+  <div
+    class="sidebar-logo-container"
+    :class="{ collapse: collapse }"
+    :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }"
+  >
     <!-- <transition name="sidebarLogoFade">
       <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
         <img v-if="logo" :src="logo" class="sidebar-logo" />
@@ -11,33 +14,35 @@
         <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1>
       </router-link>
     </transition> -->
-    <!-- <div class="logo">
-      <img v-if=" sideTheme === 'theme-dark'" :src="logo" class="sidebar-logo" />
+    <div class="logo">
+      <img v-if="sideTheme === 'theme-dark'" :src="logo" class="sidebar-logo" />
       <img v-else :src="logo2" class="sidebar-logo" />
-    </div> -->
+    </div>
 
-    <div class="name" v-if="!collapse" :style="{color: sideTheme === 'theme-dark' ? '#fff' : '#487FEE'}">{{ title }}</div>
+    <div class="name" v-if="!collapse" :style="{ color: sideTheme === 'theme-dark' ? '#fff' : '#487FEE' }">
+      {{ title }}
+    </div>
   </div>
 </template>
 
 <script setup>
-// import Cookies from 'js-cookie'
-import variables from '@/assets/styles/variables.module.scss'
-import logo from '@/assets/logo/logo-2.png'
-import logo2 from '@/assets/logo/logo-3.png'
-import useSettingsStore from '@/store/modules/settings'
-import { color } from 'echarts';
-// const systemInfo = JSON.parse(sessionStorage.getItem('SystemInfo'))
+import Cookies from "js-cookie"
+import variables from "@/assets/styles/variables.module.scss"
+import logo from "@/assets/logo/logo-2.png"
+import logo2 from "@/assets/logo/logo-3.png"
+import useSettingsStore from "@/store/modules/settings"
+import { color } from "echarts"
+const systemInfo = JSON.parse(Cookies.get("SystemInfo"))
 defineProps({
   collapse: {
     type: Boolean,
-    required: true
-  }
+    required: true,
+  },
 })
 
-const title = import.meta.env.VITE_APP_TITLE;
-const settingsStore = useSettingsStore();
-const sideTheme = computed(() => settingsStore.sideTheme);
+const title = import.meta.env.VITE_APP_TITLE
+const settingsStore = useSettingsStore()
+const sideTheme = computed(() => settingsStore.sideTheme)
 </script>
 
 <style lang="scss" scoped>
@@ -72,7 +77,7 @@
     }
   }
   .name {
-    width: 100%;
+    width: 150px;
     margin-top: 2px;
     margin-left: 6px;
     font-family: OPPOSans, OPPOSans;
@@ -133,4 +138,4 @@
     }
   }
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/zhitan-vue/src/views/login.vue b/zhitan-vue/src/views/login.vue
index c89c954..955060f 100644
--- a/zhitan-vue/src/views/login.vue
+++ b/zhitan-vue/src/views/login.vue
@@ -1,9 +1,11 @@
 <template>
   <div class="login">
-    <!-- <div class="login-logo" v-if="systemInfo && systemInfo.homeLogo"
-      :style="{ backgroundImage: 'url(' + systemInfo.homeLogo + ')', backgroundSize: '100% 100%' }"></div>
-    <div class="login-font" v-else>鑳芥簮绯荤粺</div> -->
-    <h1 class="logo">灞变笢鎭掗偊鍐剁偧鑲′唤鏈夐檺鍏徃</h1>
+    <div
+      class="login-logo"
+      v-if="systemInfo && systemInfo.homeLogo"
+      :style="{ backgroundImage: 'url(' + systemInfo.homeLogo + ')', backgroundSize: '100% 100%' }"
+    ></div>
+    <div class="login-font" v-else>鑳芥簮绯荤粺</div>
     <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
       <!-- <h3 class="title">鍏呯數妗╁悗鍙扮鐞嗙郴缁�</h3> -->
       <el-form-item prop="username">
@@ -12,24 +14,43 @@
         </el-input>
       </el-form-item>
       <el-form-item prop="password">
-        <el-input v-model="loginForm.password" type="password" size="large" auto-complete="off" placeholder="瀵嗙爜"
-          @keyup.enter="handleLogin">
+        <el-input
+          v-model="loginForm.password"
+          type="password"
+          size="large"
+          auto-complete="off"
+          placeholder="瀵嗙爜"
+          @keyup.enter="handleLogin"
+        >
           <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
         </el-input>
       </el-form-item>
       <el-form-item prop="code" v-if="captchaEnabled">
-        <el-input v-model="loginForm.code" size="large" auto-complete="off" placeholder="楠岃瘉鐮�" style="width: 63%"
-          @keyup.enter="handleLogin">
+        <el-input
+          v-model="loginForm.code"
+          size="large"
+          auto-complete="off"
+          placeholder="楠岃瘉鐮�"
+          style="width: 63%"
+          @keyup.enter="handleLogin"
+        >
           <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
         </el-input>
         <div class="login-code">
           <img :src="codeUrl" @click="getCode" class="login-code-img" />
         </div>
       </el-form-item>
-      <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">璁颁綇瀵嗙爜</el-checkbox>
-      <el-form-item style="width:100%;">
-        <el-button :loading="loading" size="large" type="primary" style="width:100%;" color="#626aef" :dark="isDark"
-          @click.prevent="handleLogin">
+      <el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">璁颁綇瀵嗙爜</el-checkbox>
+      <el-form-item style="width: 100%">
+        <el-button
+          :loading="loading"
+          size="large"
+          type="primary"
+          style="width: 100%"
+          color="#626aef"
+          :dark="isDark"
+          @click.prevent="handleLogin"
+        >
           <span v-if="!loading">鐧� 褰�</span>
           <span v-else>鐧� 褰� 涓�...</span>
         </el-button>
@@ -43,138 +64,113 @@
 </template>
 
 <script setup>
-import { getCodeImg } from "@/api/login";
-import Cookies from "js-cookie";
-import { encrypt, decrypt } from "@/utils/jsencrypt";
-import useUserStore from "@/store/modules/user";
-const userStore = useUserStore();
-import { useRoute } from "vue-router";
-const route = useRoute();
-const router = useRouter();
-const { proxy } = getCurrentInstance();
-// if(Cookies.get('SystemInfo')){
-// const systemInfo = JSON.parse(Cookies.get('SystemInfo'))
-// }
+import { getCodeImg } from "@/api/login"
+import Cookies from "js-cookie"
+import { encrypt, decrypt } from "@/utils/jsencrypt"
+import useUserStore from "@/store/modules/user"
+
+const userStore = useUserStore()
+const route = useRoute()
+const router = useRouter()
+const { proxy } = getCurrentInstance()
+const systemInfo = JSON.parse(Cookies.get("SystemInfo"))
+
+console.log(systemInfo)
 const loginForm = ref({
   username: "admin",
   password: "admin123",
   rememberMe: false,
   code: "",
-  uuid: ""
-});
+  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("");
-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);
-watch(route, (newRoute) => {
-  redirect.value = newRoute.query && newRoute.query.redirect;
-}, { immediate: true });
-if (!!useRoute().query.token) {
-  //骞冲彴鍗曠嫭鐨勭櫥褰�
-  getLoginByNameAndTokenJ();
-} else {
-  getCode();
-  getCookie();
-}
-/**
- * 涓夋柟骞冲彴鍗曠偣鐧婚檰
- * 鍙紶閫抰oken
- */
-function getLoginByNameAndTokenJ() {
-  //鑾峰彇鍦板潃鏍忎腑鐨則oken
-  var token = useRoute().query.token;
-  //璋冪敤鐧诲綍鐨勬帴鍙�
-  console.log('token2', token);
-  //杞湀鍦堬紝涓嶈鐪嬪埌鐧婚檰椤甸潰锛屾棤鎰熶綋楠�
-  loading.value = true;
-  // 璋冪敤action鐨勭櫥褰曟柟娉�
-  userStore
-    .LoginJHaveToken({
-      "token": token
-    })
-    .then(() => {
-      loading.value = true;
-      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 = true;
-    });
-}
+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 => {
+  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(() => {
-        const query = route.query;
-        const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
-          if (cur !== "redirect") {
-            acc[cur] = query[cur];
+      userStore
+        .login(loginForm.value)
+        .then(() => {
+          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
+          // 閲嶆柊鑾峰彇楠岃瘉鐮�
+          if (captchaEnabled.value) {
+            getCode()
           }
-          return acc;
-        }, {});
-        router.push({ path: redirect.value || "/", query: otherQueryParams });
-      }).catch(() => {
-        loading.value = false;
-        // 閲嶆柊鑾峰彇楠岃瘉鐮�
-        if (captchaEnabled.value) {
-          getCode();
-        }
-      });
+        })
     }
-  });
+  })
 }
+
 function getCode() {
-  getCodeImg().then(res => {
-    captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+  getCodeImg().then((res) => {
+    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)
-  };
+    rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
+  }
 }
+
+getCode()
+getCookie()
 </script>
 
-<style lang='scss' scoped>
+<style lang="scss" scoped>
 .login {
   display: flex;
   align-items: center;
@@ -274,17 +270,4 @@
   text-align: center;
   transform: translate(-50%, -50%);
 }
-
-
-.logo {
-  color: #fff;
-  width: 514px;
-  height: 177px;
-  line-height: 177px;
-  position: absolute;
-  left: 50%;
-  top: 22%;
-  transform: translate(-50%, -50%);
-  text-align: center;
-}
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3