kyoyue 7 місяців тому
батько
коміт
0005dfe432

+ 23 - 2
index.html

@@ -8,7 +8,9 @@
       name="viewport"
       content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
     />
-    <title><%= VITE_GLOB_APP_TITLE %></title>
+    <!-- <title><%= VITE_GLOB_APP_TITLE %></title> -->
+    <!-- <link rel="icon" href="./src/assets/images/gooki.ico" /> -->
+    <title>{{title}}</title>
     <link rel="icon" href="./src/assets/images/gooki.ico" />
   </head>
   <body>
@@ -133,7 +135,7 @@
       </style>
       <div class="app-loading">
         <div class="app-loading-wrap">
-          <img src="/resource/img/gooki.ico" class="app-loading-logo" alt="Logo" />
+          <img src="/resource/img/gooki.ico" id="loadingImage" class="app-loading-logo" alt="Logo" />
           <div class="app-loading-dots">
             <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
           </div>
@@ -142,5 +144,24 @@
       </div>
     </div>
     <script type="module" src="/src/main.ts"></script>
+    <script>
+     document.addEventListener('DOMContentLoaded', () => {
+        const title = localStorage.getItem('departmentName') || 'Default Title';
+        const avatar = localStorage.getItem('avatar') || '/src/assets/images/gooki.ico';
+
+        // 设置文档标题
+        document.title = title;
+
+        // 设置图标
+        const link = document.querySelector("link[rel~='icon']");
+        if (link) {
+          link.href = avatar;
+        }
+        const loadingImage = document.getElementById('loadingImage');
+        if (loadingImage) {
+          loadingImage.src = avatar;
+        }
+      });
+    </script>
   </body>
 </html>

+ 1 - 0
src/api/model/baseModel.ts

@@ -47,6 +47,7 @@ export interface BaseNodeReq{
 export interface BaseIDsReq {
   ids: number[];
   departmentName: string;
+  avatar: string;
 }
 
 export interface BaseUUIDReq {

+ 7 - 7
src/components/Application/src/AppLogo.vue

@@ -4,7 +4,8 @@
 -->
 <template>
   <div class="anticon" :class="getAppLogoClass" @click="goHome">
-    <img src="../../../assets/images/gooki.ico" />
+    <!-- <img src="/src/assets/images/gooki.ico" /> -->
+    <img :src="avatar" />
     <div
       class="ml-2 truncate md:opacity-100"
       style="color: rgb(38, 151, 251)"
@@ -23,7 +24,6 @@
   import { useDesign } from '@/hooks/web/useDesign';
   import { PageEnum } from '@/enums/pageEnum';
   import { useUserStore } from '@/store/modules/user';
-  import {getSysInfo} from '@/api/wechat/wx'
   
   const props = defineProps({
     /**
@@ -39,12 +39,12 @@
      */
     alwaysShowTitle: { type: Boolean },
   });
-  const title = ref('');
+const title = ref('');
+  const avatar = ref('');
   onMounted(async () => {
-    let res = await getSysInfo();
-    title.value = res.data.departmentName;
-    localStorage.setItem('departmentName', res.data.departmentName);
-     document.title = title.value;
+    title.value = localStorage.getItem('departmentName');
+    avatar.value = localStorage.getItem('avatar') || '/src/assets/images/gooki.ico';
+    document.title = title.value;
   }) 
   const { prefixCls } = useDesign('app-logo');
   const { getCollapsedShowTitle } = useMenuSetting();

+ 9 - 1
src/store/modules/user.ts

@@ -10,7 +10,8 @@ import {
   LoginBySmsReq,
   LoginReq,
 } from '@/api/sys/model/userModel';
-import { doLogout, getUserInfo, login, loginByEmail, loginBySms } from '@/api/sys/user';
+import { doLogout, getUserInfo, login, loginByEmail, loginBySms, } from '@/api/sys/user';
+import { getSysInfo } from '@/api/wechat/wx'
 import { useI18n } from '@/hooks/web/useI18n';
 import { useMessage } from '@/hooks/web/useMessage';
 import { router } from '@/router';
@@ -124,6 +125,9 @@ export const useUserStore = defineStore({
 
         // save token
         this.setToken(token);
+        const userInfo = await getSysInfo();
+        localStorage.setItem('departmentName', userInfo.data.departmentName);
+        localStorage.setItem('avatar', userInfo.data.avatar);
         return this.afterLoginAction(goHome);
       } catch (error) {
         return Promise.reject(error);
@@ -222,6 +226,8 @@ export const useUserStore = defineStore({
         try {
           // in the future the server may need to log out, and we can uncomment this
           await doLogout();
+          localStorage.removeItem('departmentName');
+          localStorage.removeItem('avatar');
           console.log('logout successful');
         } catch {
           console.log('注销Token失败');
@@ -252,6 +258,8 @@ export const useUserStore = defineStore({
         content: () => h('span', t('sys.app.logoutMessage')),
         onOk: async () => {
           await this.logout(true);
+          localStorage.removeItem('departmentName');
+          localStorage.removeItem('avatar');
         },
       });
     },

+ 11 - 10
src/views/dashboard/workbench/components/ProjectCard.vue

@@ -7,17 +7,18 @@
     </List>
   </Card>
 </template>
-<script lang="ts">
-  import { defineComponent } from 'vue';
+<script lang="ts" setup>
+  import {  ref } from 'vue';
   import { Card, List, ListItem } from 'ant-design-vue';
-  import { systemInfoData } from './data';
+  // import { systemInfoData } from './data';
   import { useI18n } from '@/hooks/web/useI18n';
 
-  export default defineComponent({
-    components: { Card, List, ListItem },
-    setup() {
-      const { t } = useI18n();
-      return { systemInfoData: systemInfoData, t };
-    },
-  });
+  
+  const { t } = useI18n();
+  const systemInfoData = ref<[string, string][]>([]);
+  systemInfoData.value = [
+    ['sys.sys.Name', localStorage.getItem('departmentName') || 'Default Name'],
+  ['sys.sys.version', 'V 0.0.1'],
+  ];
+  
 </script>

+ 1 - 4
src/views/dashboard/workbench/components/WorkbenchHeader.vue

@@ -28,16 +28,13 @@
   import { useUserStore } from '@/store/modules/user';
   import headerImg from '@/assets/images/header.jpg';
   import { useI18n } from 'vue-i18n';
-  import {getSysInfo} from '@/api/wechat/wx'
 
   const { t } = useI18n();
   const userStore = useUserStore();
   const userinfo = computed(() => userStore.getUserInfo);
   const title = ref('')
   onMounted(async () => {
-    //  let res = await getSysInfo()
-    //  title.value = res.data.departmentName
-   title.value = localStorage.getItem('departmentName');
+    title.value = localStorage.getItem('departmentName');
   }) 
 </script>
 

+ 4 - 5
src/views/dashboard/workbench/components/data.ts

@@ -49,9 +49,8 @@ export const navItems: NavItem[] = [
   //   redirect: '/file',
   // },
 ];
-const title = document.title;
 
-export const systemInfoData = [
-  ['sys.sys.Name', title],
-  ['sys.sys.version', 'V 0.0.1'],
-];
+// export const systemInfoData = [
+//   ['sys.sys.Name', document.title],
+//   ['sys.sys.version', 'V 0.0.1'],
+// ];