From b100c4f560f62a40e14f45db6861f2e96cc2e16b Mon Sep 17 00:00:00 2001
From: liulingling.177216 <liulingling@halosee.com>
Date: 星期二, 21 一月 2025 10:14:39 +0800
Subject: [PATCH] 完善了知识库相关的功能

---
 zhitan-vue/src/views/login.vue |  245 ++++++++++++++++++++++++-------------------------
 1 files changed, 120 insertions(+), 125 deletions(-)

diff --git a/zhitan-vue/src/views/login.vue b/zhitan-vue/src/views/login.vue
index c89c954..86d243f 100644
--- a/zhitan-vue/src/views/login.vue
+++ b/zhitan-vue/src/views/login.vue
@@ -1,9 +1,12 @@
 <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-bg"
+      v-if="systemInfo && systemInfo.homeLogo"
+      :style="{ backgroundImage: 'url(' + systemInfo.homeLogo + ')', backgroundSize: '100% 100%' }"
+    ></div> -->
+    <img v-if="systemInfo && systemInfo.homeLogo" :src="systemInfo.homeLogo" alt="" class="login-logo-img" />
+    <div class="login-font" v-else>{{ systemInfo.systemName || "鑳芥簮绠$悊绯荤粺" }}</div>
     <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
       <!-- <h3 class="title">鍏呯數妗╁悗鍙扮鐞嗙郴缁�</h3> -->
       <el-form-item prop="username">
@@ -12,24 +15,44 @@
         </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="瀵嗙爜"
+          show-password
+          @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>
@@ -37,144 +60,120 @@
     </el-form>
     <!--  搴曢儴  -->
     <div class="el-login-footer">
-      <span>Copyright 漏 2021-2024 ZhiTanCloud All Rights Reserved.</span>
+      <!-- <span>Copyright 漏 2021-2024 ZhiTanCloud All Rights Reserved.</span> -->
+      <span>{{ systemInfo.copyRight || "Copyright 漏 2017-2024 ZhiTanCloud 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 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;
@@ -253,7 +252,7 @@
   padding-left: 12px;
 }
 
-.login-logo {
+.login-logo-bg {
   width: 514px;
   height: 177px;
   // background-image: url('@/assets/images/login-logo.png');
@@ -262,6 +261,15 @@
   left: 50%;
   top: 22%;
   transform: translate(-50%, -50%);
+}
+.login-logo-img {
+  // width: 100%;
+  // height: 100%;
+  // transform: translate(-50%, -50%);
+  max-height: 200px;
+  margin: 0 auto;
+  position: absolute;
+  top: 17%;
 }
 
 .login-font {
@@ -274,17 +282,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