feat 页面标题和页面的favicon.ico动态修复
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# 页面标题
|
# 页面标题
|
||||||
VITE_APP_TITLE = 可视化电子围栏管理系统
|
VITE_APP_TITLE = 可视化电子围栏管理系统11111
|
||||||
VITE_APP_LOGO_TITLE = RuoYi-Vue-Plus
|
VITE_APP_LOGO_TITLE = RuoYi-Vue-Plus
|
||||||
|
|
||||||
# 生产环境配置
|
# 生产环境配置
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
<div class="sidebar-logo-container" :class="{ collapse: collapse }">
|
<div class="sidebar-logo-container" :class="{ collapse: collapse }">
|
||||||
<transition :enter-active-class="proxy?.animate.logoAnimate.enter" mode="out-in">
|
<transition :enter-active-class="proxy?.animate.logoAnimate.enter" mode="out-in">
|
||||||
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
|
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
|
||||||
<img v-if="logo" :src="logoUrl" class="sidebar-logo" />
|
<img v-if="showLogoImage" :src="logoUrl" class="sidebar-logo" />
|
||||||
<h1 v-else class="sidebar-title">{{ logoName }}</h1>
|
<h1 v-else class="sidebar-title">{{ logoName }}</h1>
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
|
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
|
||||||
<img v-if="logo" :src="logoUrl" class="sidebar-logo" />
|
<img v-if="showLogoImage" :src="logoUrl" class="sidebar-logo" />
|
||||||
<h1 class="sidebar-title">{{ logoName }}</h1>
|
<h1 class="sidebar-title">{{ logoName }}</h1>
|
||||||
</router-link>
|
</router-link>
|
||||||
</transition>
|
</transition>
|
||||||
@@ -15,11 +15,9 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import variables from '@/assets/styles/variables.module.scss';
|
import variables from '@/assets/styles/variables.module.scss';
|
||||||
import logo from '@/assets/logo/logo.png';
|
|
||||||
import { useSettingsStore } from '@/store/modules/settings';
|
import { useSettingsStore } from '@/store/modules/settings';
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
import { NavTypeEnum } from '@/enums/NavTypeEnum';
|
import { NavTypeEnum } from '@/enums/NavTypeEnum';
|
||||||
import { getDemo } from '@/api/systemList/index';
|
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
collapse: {
|
collapse: {
|
||||||
@@ -28,13 +26,15 @@ defineProps({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const title = import.meta.env.VITE_APP_LOGO_TITLE;
|
|
||||||
const settingsStore = useSettingsStore();
|
const settingsStore = useSettingsStore();
|
||||||
const sideTheme = computed(() => settingsStore.sideTheme);
|
const sideTheme = computed(() => settingsStore.sideTheme);
|
||||||
|
const logoUrl = computed(() => settingsStore.appLogoUrl || '');
|
||||||
|
const logoName = computed(() => settingsStore.appTitle || import.meta.env.VITE_APP_LOGO_TITLE || 'RuoYi-Vue-Plus');
|
||||||
|
const showLogoImage = computed(() => Boolean(logoUrl.value));
|
||||||
|
|
||||||
// 获取Logo背景色
|
// 获取Logo背景色
|
||||||
const getLogoBackground = computed(() => {
|
const getLogoBackground = computed(() => {
|
||||||
if (settingsStore.isDark) {
|
if (settingsStore.dark) {
|
||||||
return 'var(--sidebar-bg)';
|
return 'var(--sidebar-bg)';
|
||||||
}
|
}
|
||||||
if (settingsStore.navType == NavTypeEnum.TOP) {
|
if (settingsStore.navType == NavTypeEnum.TOP) {
|
||||||
@@ -45,7 +45,7 @@ const getLogoBackground = computed(() => {
|
|||||||
|
|
||||||
// 获取Logo文字颜色
|
// 获取Logo文字颜色
|
||||||
const getLogoTextColor = computed(() => {
|
const getLogoTextColor = computed(() => {
|
||||||
if (settingsStore.isDark) {
|
if (settingsStore.dark) {
|
||||||
return 'var(--sidebar-text)';
|
return 'var(--sidebar-text)';
|
||||||
}
|
}
|
||||||
if (settingsStore.navType == NavTypeEnum.TOP) {
|
if (settingsStore.navType == NavTypeEnum.TOP) {
|
||||||
@@ -53,18 +53,6 @@ const getLogoTextColor = computed(() => {
|
|||||||
}
|
}
|
||||||
return sideTheme.value === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor;
|
return sideTheme.value === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 获取Logo图片
|
|
||||||
const logoUrl = ref();
|
|
||||||
const logoName = ref();
|
|
||||||
onMounted(() => {
|
|
||||||
getDemo().then((res) => {
|
|
||||||
console.log('系统11111111111', res);
|
|
||||||
|
|
||||||
logoName.value = res.data.name;
|
|
||||||
logoUrl.value = res.data.url;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
22
src/main.ts
22
src/main.ts
@@ -30,6 +30,8 @@ import './permission';
|
|||||||
|
|
||||||
// 国际化
|
// 国际化
|
||||||
import i18n from '@/lang/index';
|
import i18n from '@/lang/index';
|
||||||
|
import { useSettingsStore } from '@/store/modules/settings';
|
||||||
|
import { getDemo } from '@/api/systemList/index';
|
||||||
|
|
||||||
// vxeTable
|
// vxeTable
|
||||||
import VXETable from 'vxe-table';
|
import VXETable from 'vxe-table';
|
||||||
@@ -54,4 +56,24 @@ app.use(plugins);
|
|||||||
// 自定义指令
|
// 自定义指令
|
||||||
directive(app);
|
directive(app);
|
||||||
|
|
||||||
|
const settingsStore = useSettingsStore();
|
||||||
|
getDemo()
|
||||||
|
.then((res) => {
|
||||||
|
const name = res?.data?.name;
|
||||||
|
const url = res?.data?.url;
|
||||||
|
if (name || url) {
|
||||||
|
settingsStore.setSystemInfo(name || '', url || '');
|
||||||
|
|
||||||
|
if (url) {
|
||||||
|
const link = document.querySelector("link[rel='icon']") as HTMLLinkElement | null;
|
||||||
|
if (link) {
|
||||||
|
link.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// ignore
|
||||||
|
});
|
||||||
|
|
||||||
app.mount('#app');
|
app.mount('#app');
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ export const useSettingsStore = defineStore('setting', () => {
|
|||||||
radiusBase: defaultSettings.radiusBase
|
radiusBase: defaultSettings.radiusBase
|
||||||
});
|
});
|
||||||
const title = ref<string>(defaultSettings.title);
|
const title = ref<string>(defaultSettings.title);
|
||||||
|
const appTitle = ref<string>(defaultSettings.title);
|
||||||
|
const appLogoUrl = ref<string>('');
|
||||||
const theme = ref<string>(storageSetting.value.theme);
|
const theme = ref<string>(storageSetting.value.theme);
|
||||||
const sideTheme = ref<string>(storageSetting.value.sideTheme);
|
const sideTheme = ref<string>(storageSetting.value.sideTheme);
|
||||||
const showSettings = ref<boolean>(defaultSettings.showSettings);
|
const showSettings = ref<boolean>(defaultSettings.showSettings);
|
||||||
@@ -36,8 +38,17 @@ export const useSettingsStore = defineStore('setting', () => {
|
|||||||
title.value = value;
|
title.value = value;
|
||||||
useDynamicTitle();
|
useDynamicTitle();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const setSystemInfo = (name: string, url: string) => {
|
||||||
|
appTitle.value = name || defaultSettings.title;
|
||||||
|
appLogoUrl.value = url || '';
|
||||||
|
useDynamicTitle();
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title,
|
title,
|
||||||
|
appTitle,
|
||||||
|
appLogoUrl,
|
||||||
theme,
|
theme,
|
||||||
sideTheme,
|
sideTheme,
|
||||||
showSettings,
|
showSettings,
|
||||||
@@ -50,6 +61,7 @@ export const useSettingsStore = defineStore('setting', () => {
|
|||||||
dark,
|
dark,
|
||||||
navType,
|
navType,
|
||||||
radiusBase,
|
radiusBase,
|
||||||
setTitle
|
setTitle,
|
||||||
|
setSystemInfo
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,9 +6,12 @@ import { useSettingsStore } from '@/store/modules/settings';
|
|||||||
*/
|
*/
|
||||||
export const useDynamicTitle = () => {
|
export const useDynamicTitle = () => {
|
||||||
const settingsStore = useSettingsStore();
|
const settingsStore = useSettingsStore();
|
||||||
|
const pageTitle = settingsStore.title || (defaultSettings.title as string);
|
||||||
|
const appTitle = settingsStore.appTitle || (defaultSettings.title as string);
|
||||||
|
|
||||||
if (settingsStore.dynamicTitle) {
|
if (settingsStore.dynamicTitle) {
|
||||||
document.title = settingsStore.title + ' - ' + import.meta.env.VITE_APP_TITLE;
|
document.title = `${pageTitle} - ${appTitle}`;
|
||||||
} else {
|
} else {
|
||||||
document.title = defaultSettings.title as string;
|
document.title = appTitle;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user