Просмотр исходного кода

update 优化 添加页签图标显示开关功能

疯狂的狮子Li 10 месяцев назад
Родитель
Сommit
592fb84aa7

+ 8 - 0
src/layout/components/Settings/index.vue

@@ -59,6 +59,13 @@
       </span>
     </div>
 
+    <div class="drawer-item">
+      <span>显示页签图标</span>
+      <span class="comp-style">
+        <el-switch v-model="settingsStore.tagsIcon" :disabled="!settingsStore.tagsView" class="drawer-switch" />
+      </span>
+    </div>
+
     <div class="drawer-item">
       <span>固定 Header</span>
       <span class="comp-style">
@@ -153,6 +160,7 @@ const saveSetting = () => {
   const settings = useStorage<LayoutSetting>('layout-setting', defaultSettings);
   settings.value.topNav = storeSettings.value.topNav;
   settings.value.tagsView = storeSettings.value.tagsView;
+  settings.value.tagsIcon = storeSettings.value.tagsIcon;
   settings.value.fixedHeader = storeSettings.value.fixedHeader;
   settings.value.sidebarLogo = storeSettings.value.sidebarLogo;
   settings.value.dynamicTitle = storeSettings.value.dynamicTitle;

+ 6 - 1
src/layout/components/TagsView/index.vue

@@ -5,13 +5,14 @@
         v-for="tag in visitedViews"
         :key="tag.path"
         :data-path="tag.path"
-        :class="isActive(tag) ? 'active' : ''"
+        :class="{ 'active': isActive(tag), 'has-icon': tagsIcon }"
         :to="{ path: tag.path ? tag.path : '', query: tag.query, fullPath: tag.fullPath ? tag.fullPath : '' }"
         class="tags-view-item"
         :style="activeStyle(tag)"
         @click.middle="!isAffix(tag) ? closeSelectedTag(tag) : ''"
         @contextmenu.prevent="openMenu(tag, $event)"
       >
+        <svg-icon v-if="tagsIcon && tag.meta && tag.meta.icon && tag.meta.icon !== '#'" :icon-class="tag.meta.icon"/>
         {{ tag.title }}
         <span v-if="!isAffix(tag)" @click.prevent.stop="closeSelectedTag(tag)">
           <close class="el-icon-close" style="width: 1em; height: 1em; vertical-align: middle" />
@@ -51,6 +52,7 @@ const router = useRouter();
 const visitedViews = computed(() => useTagsViewStore().getVisitedViews());
 const routes = computed(() => usePermissionStore().getRoutes());
 const theme = computed(() => useSettingsStore().theme);
+const tagsIcon = computed(() => useSettingsStore().tagsIcon)
 
 watch(route, () => {
   addTags();
@@ -285,6 +287,9 @@ onMounted(() => {
       }
     }
   }
+  .tags-view-item.active.has-icon::before {
+    content: none !important;
+  }
   .contextmenu {
     margin: 0;
     background: var(--el-bg-color);

+ 5 - 8
src/settings.ts

@@ -27,6 +27,11 @@ const setting: DefaultSettings = {
    */
   tagsView: true,
 
+  /**
+   * 显示页签图标
+   */
+  tagsIcon: false,
+
   /**
    * 是否固定头部
    */
@@ -42,14 +47,6 @@ const setting: DefaultSettings = {
    */
   dynamicTitle: false,
 
-  /**
-   * @type {string | array} 'production' | ['production', 'development']
-   * @description Need show err logs component.
-   * The default is only used in the production env
-   * If you want to also use it in dev, you can pass ['production', 'development']
-   */
-  errorLog: 'production',
-
   /**
    * 是否开启动画 开启随机 关闭渐进渐出
    */

+ 3 - 0
src/store/modules/settings.ts

@@ -8,6 +8,7 @@ export const useSettingsStore = defineStore('setting', () => {
   const storageSetting = useStorage<LayoutSetting>('layout-setting', {
     topNav: defaultSettings.topNav,
     tagsView: defaultSettings.tagsView,
+    tagsIcon: defaultSettings.tagsIcon,
     fixedHeader: defaultSettings.fixedHeader,
     sidebarLogo: defaultSettings.sidebarLogo,
     dynamicTitle: defaultSettings.dynamicTitle,
@@ -20,6 +21,7 @@ export const useSettingsStore = defineStore('setting', () => {
   const showSettings = ref<boolean>(defaultSettings.showSettings);
   const topNav = ref<boolean>(storageSetting.value.topNav);
   const tagsView = ref<boolean>(storageSetting.value.tagsView);
+  const tagsIcon = ref<boolean>(storageSetting.value.tagsIcon);
   const fixedHeader = ref<boolean>(storageSetting.value.fixedHeader);
   const sidebarLogo = ref<boolean>(storageSetting.value.sidebarLogo);
   const dynamicTitle = ref<boolean>(storageSetting.value.dynamicTitle);
@@ -37,6 +39,7 @@ export const useSettingsStore = defineStore('setting', () => {
     showSettings,
     topNav,
     tagsView,
+    tagsIcon,
     fixedHeader,
     sidebarLogo,
     dynamicTitle,

+ 4 - 2
src/types/global.d.ts

@@ -98,6 +98,10 @@ declare global {
      * 是否显示多标签导航
      */
     tagsView: boolean;
+    /**
+     * 显示页签图标
+     */
+    tagsIcon: boolean;
     /**
      * 是否固定头部
      */
@@ -157,8 +161,6 @@ declare global {
      * false: 明亮模式
      */
     dark: boolean;
-
-    errorLog: string;
   }
 }
 export {};