From 2f2b09869423f7e98c64f79dc96c62d9a1696f24 Mon Sep 17 00:00:00 2001 From: ali <ali9696@163.com> Date: 星期一, 13 一月 2025 18:08:42 +0800 Subject: [PATCH] 修改整体样式偏大问题 --- zhitan-vue/src/layout/components/TagsView/index.vue | 172 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 85 insertions(+), 87 deletions(-) diff --git a/zhitan-vue/src/layout/components/TagsView/index.vue b/zhitan-vue/src/layout/components/TagsView/index.vue index 02baf0f..926a7b1 100644 --- a/zhitan-vue/src/layout/components/TagsView/index.vue +++ b/zhitan-vue/src/layout/components/TagsView/index.vue @@ -1,59 +1,57 @@ <template> <div id="tags-view-container" class="tags-view-container"> <scroll-pane ref="scrollPaneRef" class="tags-view-wrapper" @scroll="handleScroll"> - <router-link v-for="tag in visitedViews" :key="tag.path" :data-path="tag.path" :class="isActive(tag) ? 'active' : ''" - :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" class="tags-view-item" :style="activeStyle(tag)" - @click.middle="!isAffix(tag) ? closeSelectedTag(tag) : ''" @contextmenu.prevent="openMenu(tag, $event)"> + <router-link + v-for="tag in visitedViews" + :key="tag.path" + :data-path="tag.path" + :class="isActive(tag) ? 'active' : ''" + :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" + class="tags-view-item" + :style="activeStyle(tag)" + @click.middle="!isAffix(tag) ? closeSelectedTag(tag) : ''" + @contextmenu.prevent="openMenu(tag, $event)" + > {{ 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;" /> + <close class="el-icon-close" style="width: 1em; height: 1em; vertical-align: middle" /> </span> </router-link> </scroll-pane> <ul v-show="visible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu"> - <li @click="refreshSelectedTag(selectedTag)"> - <refresh-right style="width: 1em; height: 1em;" /> 鍒锋柊椤甸潰 - </li> + <li @click="refreshSelectedTag(selectedTag)"><refresh-right style="width: 1em; height: 1em" /> 鍒锋柊椤甸潰</li> <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"> - <close style="width: 1em; height: 1em;" /> 鍏抽棴褰撳墠 + <close style="width: 1em; height: 1em" /> 鍏抽棴褰撳墠 </li> - <li @click="closeOthersTags"> - <circle-close style="width: 1em; height: 1em;" /> 鍏抽棴鍏朵粬 - </li> - <li v-if="!isFirstView()" @click="closeLeftTags"> - <back style="width: 1em; height: 1em;" /> 鍏抽棴宸︿晶 - </li> - <li v-if="!isLastView()" @click="closeRightTags"> - <right style="width: 1em; height: 1em;" /> 鍏抽棴鍙充晶 - </li> - <li @click="closeAllTags(selectedTag)"> - <circle-close style="width: 1em; height: 1em;" /> 鍏ㄩ儴鍏抽棴 - </li> + <li @click="closeOthersTags"><circle-close style="width: 1em; height: 1em" /> 鍏抽棴鍏朵粬</li> + <li v-if="!isFirstView()" @click="closeLeftTags"><back style="width: 1em; height: 1em" /> 鍏抽棴宸︿晶</li> + <li v-if="!isLastView()" @click="closeRightTags"><right style="width: 1em; height: 1em" /> 鍏抽棴鍙充晶</li> + <li @click="closeAllTags(selectedTag)"><circle-close style="width: 1em; height: 1em" /> 鍏ㄩ儴鍏抽棴</li> </ul> </div> </template> <script setup> -import ScrollPane from './ScrollPane' -import { getNormalPath } from '@/utils/ruoyi' -import useTagsViewStore from '@/store/modules/tagsView' -import useSettingsStore from '@/store/modules/settings' -import usePermissionStore from '@/store/modules/permission' +import ScrollPane from "./ScrollPane" +import { getNormalPath } from "@/utils/ruoyi" +import useTagsViewStore from "@/store/modules/tagsView" +import useSettingsStore from "@/store/modules/settings" +import usePermissionStore from "@/store/modules/permission" -const visible = ref(false); -const top = ref(0); -const left = ref(0); -const selectedTag = ref({}); -const affixTags = ref([]); -const scrollPaneRef = ref(null); +const visible = ref(false) +const top = ref(0) +const left = ref(0) +const selectedTag = ref({}) +const affixTags = ref([]) +const scrollPaneRef = ref(null) -const { proxy } = getCurrentInstance(); -const route = useRoute(); -const router = useRouter(); +const { proxy } = getCurrentInstance() +const route = useRoute() +const router = useRouter() -const visitedViews = computed(() => useTagsViewStore().visitedViews); -const routes = computed(() => usePermissionStore().routes); -const theme = computed(() => useSettingsStore().theme); +const visitedViews = computed(() => useTagsViewStore().visitedViews) +const routes = computed(() => usePermissionStore().routes) +const theme = computed(() => useSettingsStore().theme) watch(route, () => { addTags() @@ -61,9 +59,9 @@ }) watch(visible, (value) => { if (value) { - document.body.addEventListener('click', closeMenu) + document.body.addEventListener("click", closeMenu) } else { - document.body.removeEventListener('click', closeMenu) + document.body.removeEventListener("click", closeMenu) } }) onMounted(() => { @@ -75,18 +73,18 @@ return r.path === route.path } function activeStyle(tag) { - if (!isActive(tag)) return {}; + if (!isActive(tag)) return {} return { "background-color": theme.value, - "border-color": theme.value - }; + "border-color": theme.value, + } } function isAffix(tag) { return tag.meta && tag.meta.affix } function isFirstView() { try { - return selectedTag.value.fullPath === '/index' || selectedTag.value.fullPath === visitedViews.value[1].fullPath + return selectedTag.value.fullPath === "/index" || selectedTag.value.fullPath === visitedViews.value[1].fullPath } catch (err) { return false } @@ -98,16 +96,16 @@ return false } } -function filterAffixTags(routes, basePath = '') { +function filterAffixTags(routes, basePath = "") { let tags = [] - routes.forEach(route => { + routes.forEach((route) => { if (route.meta && route.meta.affix) { - const tagPath = getNormalPath(basePath + '/' + route.path) + const tagPath = getNormalPath(basePath + "/" + route.path) tags.push({ fullPath: tagPath, path: tagPath, name: route.name, - meta: { ...route.meta } + meta: { ...route.meta }, }) } if (route.children) { @@ -120,8 +118,8 @@ return tags } function initTags() { - const res = filterAffixTags(routes.value); - affixTags.value = res; + const res = filterAffixTags(routes.value) + affixTags.value = res for (const tag of res) { // Must have tag name if (tag.name) { @@ -134,7 +132,7 @@ if (name) { useTagsViewStore().addView(route) if (route.meta.link) { - useTagsViewStore().addIframeView(route); + useTagsViewStore().addIframeView(route) } } return false @@ -143,7 +141,7 @@ nextTick(() => { for (const r of visitedViews.value) { if (r.path === route.path) { - scrollPaneRef.value.moveToTarget(r); + scrollPaneRef.value.moveToTarget(r) // when query is different then update if (r.fullPath !== route.fullPath) { useTagsViewStore().updateVisitedView(route) @@ -153,9 +151,9 @@ }) } function refreshSelectedTag(view) { - proxy.$tab.refreshPage(view); + proxy.$tab.refreshPage(view) if (route.meta.link) { - useTagsViewStore().delIframeView(route); + useTagsViewStore().delIframeView(route) } } function closeSelectedTag(view) { @@ -166,28 +164,28 @@ }) } function closeRightTags() { - proxy.$tab.closeRightPage(selectedTag.value).then(visitedViews => { - if (!visitedViews.find(i => i.fullPath === route.fullPath)) { + proxy.$tab.closeRightPage(selectedTag.value).then((visitedViews) => { + if (!visitedViews.find((i) => i.fullPath === route.fullPath)) { toLastView(visitedViews) } }) } function closeLeftTags() { - proxy.$tab.closeLeftPage(selectedTag.value).then(visitedViews => { - if (!visitedViews.find(i => i.fullPath === route.fullPath)) { + proxy.$tab.closeLeftPage(selectedTag.value).then((visitedViews) => { + if (!visitedViews.find((i) => i.fullPath === route.fullPath)) { toLastView(visitedViews) } }) } function closeOthersTags() { - router.push(selectedTag.value).catch(() => { }); + router.push(selectedTag.value).catch(() => {}) proxy.$tab.closeOtherPage(selectedTag.value).then(() => { moveToCurrentTag() }) } function closeAllTags(view) { proxy.$tab.closeAllPage().then(({ visitedViews }) => { - if (affixTags.value.some(tag => tag.path === route.path)) { + if (affixTags.value.some((tag) => tag.path === route.path)) { return } toLastView(visitedViews, view) @@ -200,11 +198,11 @@ } else { // now the default is to redirect to the home page if there is no tags-view, // you can adjust it according to your needs. - if (view.name === 'Dashboard') { + if (view.name === "Dashboard") { // to reload home page - router.replace({ path: '/redirect' + view.fullPath }) + router.replace({ path: "/redirect" + view.fullPath }) } else { - router.push('/') + router.push("/") } } } @@ -233,10 +231,10 @@ } </script> -<style lang='scss' scoped> +<style lang="scss" scoped> .themeDark { .tags-view-container { - height: 50px; + height: 56px; width: 100%; background: #1a235d; // border-bottom: 1px solid #d8dce5; @@ -246,27 +244,27 @@ display: inline-block; position: relative; cursor: pointer; - height: 34px; - line-height: 34px; - border: 1px solid #203a81; - color: #c1c1c1; - background: #3271eb; - padding: 0 8px; - font-size: 15px; - margin-left: 5px; - margin-top: 6px; - border-radius: 5px; + height: 36px; + line-height: 36px; + border: 1px solid #5278f5; + color: #fff; + // background: #3271eb; + padding: 0 14px; + font-size: 14px; + margin-left: 6px; + margin-top: 10px; + border-radius: 4px; font-family: OPPOSans, OPPOSans; &:first-of-type { - margin-left: 15px; + margin-left: 16px; } &:last-of-type { margin-right: 15px; } &.active { - background-color: #42b983; + background-color: #4e77f8 !important; color: #fff; - border-color: #42b983; + border-color: #4e77f8 !important; &::before { content: ""; background: #fff; @@ -306,7 +304,7 @@ .themeLight { .tags-view-container { - height: 50px; + height: 56px; width: 100%; background: #fff; // border-bottom: 1px solid #d8dce5; @@ -316,19 +314,19 @@ display: inline-block; position: relative; cursor: pointer; - height: 34px; - line-height: 34px; + height: 36px; + line-height: 36px; border: 1px solid #d8dce5; color: #495060; background: #fff; - padding: 0 8px; - font-size: 15px; - margin-left: 5px; - margin-top: 6px; - border-radius: 5px; + padding: 0 14px; + font-size: 14px; + margin-left: 6px; + margin-top: 10px; + border-radius: 4px; font-family: OPPOSans, OPPOSans; &:first-of-type { - margin-left: 15px; + margin-left: 16px; } &:last-of-type { margin-right: 15px; @@ -405,4 +403,4 @@ .scroll-container .el-scrollbar__wrap { height: 50px !important; } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3