Files
cashier-web/src/App.vue
2026-04-23 14:19:04 +08:00

40 lines
1.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<el-config-provider :locale="locale" :size="size">
<!-- 开启水印 -->
<el-watermark :font="{ color: fontColor }" :content="watermarkEnabled ? defaultSettings.watermarkContent : ''"
:z-index="9999" class="wh-full">
<!-- 🔴 修改开始使用 v-slot 处理路由组件 -->
<router-view v-slot="{ Component, route }">
<!--
1. 使用 <transition> 包裹防止渲染冲突
2. 加上 :key="route.path" 强制 Vue 在路由变化时重新渲染避免复用导致的空白
-->
<transition name="fade" mode="out-in">
<component :is="Component" :key="route.path" />
</transition>
</router-view>
<!-- 🟢 修改结束 -->
</el-watermark>
</el-config-provider>
</template>
<script setup lang="ts">
// test 11
import { useAppStore, useSettingsStore } from "@/store";
import defaultSettings from "@/settings";
import { ThemeEnum } from "@/enums/ThemeEnum";
import { SizeEnum } from "@/enums/SizeEnum";
const appStore = useAppStore();
const settingsStore = useSettingsStore();
const locale = computed(() => appStore.locale);
const size = computed(() => appStore.size as SizeEnum);
const watermarkEnabled = computed(() => settingsStore.watermarkEnabled);
// 明亮/暗黑主题水印字体颜色适配
const fontColor = computed(() => {
return settingsStore.theme === ThemeEnum.DARK ? "rgba(255, 255, 255, .15)" : "rgba(0, 0, 0, .15)";
});
</script>