fix: 修改TagsView样式问题
This commit is contained in:
parent
6fff76e3f8
commit
58337f771e
@ -2,8 +2,8 @@
|
|||||||
<div
|
<div
|
||||||
class="box-border tabs-view"
|
class="box-border tabs-view"
|
||||||
:class="{
|
:class="{
|
||||||
'tabs-view-fix': state.multiTabsSetting.fixed,
|
'tabs-view-fix': multiTabsSetting.fixed,
|
||||||
'tabs-view-fixed-header': state.isMultiHeaderFixed,
|
'tabs-view-fixed-header': isMultiHeaderFixed,
|
||||||
'tabs-view-default-background': getDarkTheme === false,
|
'tabs-view-default-background': getDarkTheme === false,
|
||||||
'tabs-view-dark-background': getDarkTheme === true,
|
'tabs-view-dark-background': getDarkTheme === true,
|
||||||
}"
|
}"
|
||||||
@ -13,11 +13,11 @@
|
|||||||
<div
|
<div
|
||||||
ref="navWrap"
|
ref="navWrap"
|
||||||
class="tabs-card"
|
class="tabs-card"
|
||||||
:class="{ 'tabs-card-scrollable': state.scrollable }"
|
:class="{ 'tabs-card-scrollable': scrollable }"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="tabs-card-prev"
|
class="tabs-card-prev"
|
||||||
:class="{ 'tabs-card-prev-hide': !state.scrollable }"
|
:class="{ 'tabs-card-prev-hide': !scrollable }"
|
||||||
@click="scrollPrev"
|
@click="scrollPrev"
|
||||||
>
|
>
|
||||||
<n-icon size="16" color="#515a6e">
|
<n-icon size="16" color="#515a6e">
|
||||||
@ -26,7 +26,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
class="tabs-card-next"
|
class="tabs-card-next"
|
||||||
:class="{ 'tabs-card-next-hide': !state.scrollable }"
|
:class="{ 'tabs-card-next-hide': !scrollable }"
|
||||||
@click="scrollNext"
|
@click="scrollNext"
|
||||||
>
|
>
|
||||||
<n-icon size="16" color="#515a6e">
|
<n-icon size="16" color="#515a6e">
|
||||||
@ -44,7 +44,7 @@
|
|||||||
<div
|
<div
|
||||||
:id="`tag${element.fullPath.split('/').join('\/')}`"
|
:id="`tag${element.fullPath.split('/').join('\/')}`"
|
||||||
class="tabs-card-scroll-item"
|
class="tabs-card-scroll-item"
|
||||||
:class="{ 'active-item': state.activeKey === element.fullPath }"
|
:class="{ 'active-item': activeKey === element.fullPath }"
|
||||||
@click.stop="goPage(element)"
|
@click.stop="goPage(element)"
|
||||||
@contextmenu="handleContextMenu($event, element)"
|
@contextmenu="handleContextMenu($event, element)"
|
||||||
>
|
>
|
||||||
@ -76,9 +76,9 @@
|
|||||||
</n-dropdown>
|
</n-dropdown>
|
||||||
</div>
|
</div>
|
||||||
<n-dropdown
|
<n-dropdown
|
||||||
:show="state.showDropdown"
|
:show="showDropdown"
|
||||||
:x="state.dropdownX"
|
:x="dropdownX"
|
||||||
:y="state.dropdownY"
|
:y="dropdownY"
|
||||||
@clickoutside="onClickOutside"
|
@clickoutside="onClickOutside"
|
||||||
placement="bottom-start"
|
placement="bottom-start"
|
||||||
@select="closeHandleSelect"
|
@select="closeHandleSelect"
|
||||||
@ -88,13 +88,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts">
|
||||||
|
import {
|
||||||
|
defineComponent,
|
||||||
|
reactive,
|
||||||
|
computed,
|
||||||
|
ref,
|
||||||
|
toRefs,
|
||||||
|
provide,
|
||||||
|
watch,
|
||||||
|
onMounted,
|
||||||
|
nextTick,
|
||||||
|
} from 'vue';
|
||||||
import { useRoute, useRouter } from 'vue-router';
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
|
import { StorageEnum } from '@/enums/storageEnum';
|
||||||
import { useTabsViewStore } from '@/store/modules/tabsView';
|
import { useTabsViewStore } from '@/store/modules/tabsView';
|
||||||
import { useAsyncRouteStore } from '@/store/modules/asyncRoute';
|
import { useAsyncRouteStore } from '@/store/modules/asyncRoute';
|
||||||
import { RouteItem } from '@/store/modules/tabsView';
|
import { RouteItem } from '@/store/modules/tabsView';
|
||||||
import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
|
import { useProjectSetting } from '@/hooks/setting/useProjectSetting';
|
||||||
|
import { useMessage } from 'naive-ui';
|
||||||
import Draggable from 'vuedraggable';
|
import Draggable from 'vuedraggable';
|
||||||
import { PageEnum } from '@/enums/pageEnum';
|
import { PageEnum } from '@/enums/pageEnum';
|
||||||
import {
|
import {
|
||||||
@ -107,22 +120,33 @@ import {
|
|||||||
RightOutlined,
|
RightOutlined,
|
||||||
} from '@vicons/antd';
|
} from '@vicons/antd';
|
||||||
import { renderIcon } from '@/utils';
|
import { renderIcon } from '@/utils';
|
||||||
// import elementResizeDetectorMaker from "element-resize-detector";
|
// import elementResizeDetectorMaker from 'element-resize-detector';
|
||||||
import { useDesignSetting } from '@/hooks/setting/useDesignSetting';
|
import { useDesignSetting } from '@/hooks/setting/useDesignSetting';
|
||||||
import { useProjectSettingStore } from '@/store/modules/projectSetting';
|
import { useProjectSettingStore } from '@/store/modules/projectSetting';
|
||||||
import { useThemeVars } from 'naive-ui';
|
import { useThemeVars } from 'naive-ui';
|
||||||
import { useGo } from '@/hooks/web/usePage';
|
import { useGo } from '@/hooks/web/usePage';
|
||||||
import { StorageEnum } from '@/enums/storageEnum';
|
|
||||||
const props = defineProps({
|
export default defineComponent({
|
||||||
|
name: 'TabsView',
|
||||||
|
components: {
|
||||||
|
DownOutlined,
|
||||||
|
CloseOutlined,
|
||||||
|
LeftOutlined,
|
||||||
|
RightOutlined,
|
||||||
|
Draggable,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
collapsed: {
|
collapsed: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
},
|
},
|
||||||
});
|
},
|
||||||
|
setup(props) {
|
||||||
const { getDarkTheme, getAppTheme } = useDesignSetting();
|
const { getDarkTheme, getAppTheme } = useDesignSetting();
|
||||||
const { navMode, headerSetting, menuSetting, multiTabsSetting, isMobile } =
|
const { navMode, headerSetting, menuSetting, multiTabsSetting, isMobile } =
|
||||||
useProjectSetting();
|
useProjectSetting();
|
||||||
const settingStore = useProjectSettingStore();
|
const settingStore = useProjectSettingStore();
|
||||||
|
|
||||||
|
const message = useMessage();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const tabsViewStore = useTabsViewStore();
|
const tabsViewStore = useTabsViewStore();
|
||||||
@ -134,11 +158,11 @@ const go = useGo();
|
|||||||
|
|
||||||
const themeVars = useThemeVars();
|
const themeVars = useThemeVars();
|
||||||
|
|
||||||
const getCardColor = computed(() => {
|
const getcardcolor = computed(() => {
|
||||||
return themeVars.value.cardColor;
|
return themeVars.value.cardColor;
|
||||||
});
|
});
|
||||||
|
|
||||||
const getBaseColor = computed(() => {
|
const getbasecolor = computed(() => {
|
||||||
return themeVars.value.textColor1;
|
return themeVars.value.textColor1;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -304,13 +328,14 @@ window.addEventListener('beforeunload', () => {
|
|||||||
// 关闭当前页面
|
// 关闭当前页面
|
||||||
const removeTab = (route) => {
|
const removeTab = (route) => {
|
||||||
if (tabsList.value.length === 1) {
|
if (tabsList.value.length === 1) {
|
||||||
return window['$message'].warning('这已经是最后一页,不能再关闭了!');
|
return message.warning('这已经是最后一页,不能再关闭了!');
|
||||||
}
|
}
|
||||||
delKeepAliveCompName();
|
delKeepAliveCompName();
|
||||||
tabsViewStore.closeCurrentTab(route);
|
tabsViewStore.closeCurrentTab(route);
|
||||||
// 如果关闭的是当前页
|
// 如果关闭的是当前页
|
||||||
if (state.activeKey === route.fullPath) {
|
if (state.activeKey === route.fullPath) {
|
||||||
const currentRoute = tabsList.value[Math.max(0, tabsList.value.length - 1)];
|
const currentRoute =
|
||||||
|
tabsList.value[Math.max(0, tabsList.value.length - 1)];
|
||||||
state.activeKey = currentRoute.fullPath;
|
state.activeKey = currentRoute.fullPath;
|
||||||
router.push(currentRoute);
|
router.push(currentRoute);
|
||||||
}
|
}
|
||||||
@ -478,7 +503,9 @@ function goPage(e) {
|
|||||||
//删除tab
|
//删除tab
|
||||||
function closeTabItem(e) {
|
function closeTabItem(e) {
|
||||||
const { fullPath } = e;
|
const { fullPath } = e;
|
||||||
const routeInfo = tabsList.value.find((item) => item.fullPath == fullPath);
|
const routeInfo = tabsList.value.find(
|
||||||
|
(item) => item.fullPath == fullPath
|
||||||
|
);
|
||||||
removeTab(routeInfo);
|
removeTab(routeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,6 +518,34 @@ onMounted(() => {
|
|||||||
// observer = elementResizeDetectorMaker();
|
// observer = elementResizeDetectorMaker();
|
||||||
// observer.listenTo(navWrap.value, handleResize);
|
// observer.listenTo(navWrap.value, handleResize);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
return {
|
||||||
|
...toRefs(state),
|
||||||
|
navWrap,
|
||||||
|
navScroll,
|
||||||
|
route,
|
||||||
|
tabsList,
|
||||||
|
goPage,
|
||||||
|
closeTabItem,
|
||||||
|
closeLeft,
|
||||||
|
closeRight,
|
||||||
|
closeOther,
|
||||||
|
closeAll,
|
||||||
|
reloadPage,
|
||||||
|
getChangeStyle,
|
||||||
|
TabsMenuOptions,
|
||||||
|
closeHandleSelect,
|
||||||
|
scrollNext,
|
||||||
|
scrollPrev,
|
||||||
|
handleContextMenu,
|
||||||
|
onClickOutside,
|
||||||
|
getDarkTheme,
|
||||||
|
getAppTheme,
|
||||||
|
getcardcolor,
|
||||||
|
getbasecolor,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user