From 1598fac6c5769b061dd02e937fbaf969b5e1c20d Mon Sep 17 00:00:00 2001 From: hyingbo <1363390067@qq.com> Date: 星期一, 18 八月 2025 14:33:52 +0800 Subject: [PATCH] 首页样式调整 --- src/components/layouts/TabLayout.vue | 280 +++++++++++++++++++++++++++---------------------------- 1 files changed, 139 insertions(+), 141 deletions(-) diff --git a/src/components/layouts/TabLayout.vue b/src/components/layouts/TabLayout.vue index 4eb6c7a..a9ddfdb 100644 --- a/src/components/layouts/TabLayout.vue +++ b/src/components/layouts/TabLayout.vue @@ -5,7 +5,7 @@ <!-- update-end- author:sunjianlei --- date:20191009 --- for: 鎻愬崌鍙抽敭鑿滃崟鐨勫眰绾� --> <a-tabs @contextmenu.native="e => onContextmenu(e)" - v-if="$route.meta.title!=='棣栭〉'&&multipage" + v-if="multipage" :active-key="activePage" class="tab-layout-tabs" style="height:52px" @@ -14,12 +14,11 @@ @change="changePage" @tabClick="tabCallBack" @edit="editPage"> - <a-tab-pane :id="page.path" :key="page.path" v-for="page in pageList" - :closable="!(page.meta.title=='棣栭〉')"> - <span slot="tab" :pagekey="page.path">{{ page.meta.title }}</span> + <a-tab-pane :id="page.fullPath" :key="page.fullPath" v-for="page in pageList" :closable="!(page.meta.title=='棣栭〉')"> + <span slot="tab" :pagekey="page.fullPath">{{ page.meta.title }}</span> </a-tab-pane> </a-tabs> - <div :style="{padding: $route.meta.title=='棣栭〉'?'0':'12px 12px 0'}"> + <div style="margin: 12px 12px 0;"> <!-- update-begin-author:taoyan date:20201221 for:姝ゅ鍒犳帀transition鏍囩 涓嶇煡閬撲负浠�涔堝姞涓婂悗 椤甸潰璺敱鍒囨崲鐨勬椂鍊欏嵆1鍙婅彍鍗曞垏鍒�2鍙婅彍鍗曠殑鏃跺�� 涓や釜鑿滃崟椤甸潰浼氬悓鏃跺嚭鐜�300-500绉掑乏鍙� --> <keep-alive v-if="multipage"> <router-view v-if="reloadFlag"/> @@ -29,6 +28,9 @@ </template> <!-- update-end-author:taoyan date:20201221 for:姝ゅ鍒犳帀transition鏍囩 涓嶇煡閬撲负浠�涔堝姞涓婂悗 椤甸潰璺敱鍒囨崲鐨勬椂鍊欏嵆1鍙婅彍鍗曞垏鍒�2鍙婅彍鍗曠殑鏃跺�� 涓や釜鑿滃崟椤甸潰浼氬悓鏃跺嚭鐜�300-500绉掑乏鍙� --> </div> + <!-- update-begin-author:zyf date:20211129 for:qiankun 鎸傝浇瀛愬簲鐢ㄧ洅瀛� --> + <div id="content" class="app-view-box"></div> + <!-- update-end-author:zyf date:20211129 for: qiankun 鎸傝浇瀛愬簲鐢ㄧ洅瀛�--> </global-layout> </template> @@ -39,6 +41,7 @@ import { triggerWindowResizeEvent } from '@/utils/util' import Vue from 'vue' import { CACHE_INCLUDED_ROUTES } from '@/store/mutation-types' +import registerApps from "@/qiankun"; const indexKey = '/dashboard/analysis' @@ -61,13 +64,15 @@ { key: '2', icon: 'arrow-right', text: '鍏抽棴鍙充晶' }, { key: '3', icon: 'close', text: '鍏抽棴鍏跺畠' } ], - reloadFlag: true + reloadFlag:true } }, /* update_begin author:wuxianquan date:20190828 for: 鍏抽棴褰撳墠tab椤碉紝渚涘瓙椤甸潰璋冪敤 ->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ - provide() { - return { - closeCurrent: this.closeCurrent + provide(){ + return{ + closeCurrent:this.closeCurrent, + changeTitle: this.changeTitle, + changeTabTitle: this.changeTabTitle, } }, /* update_end author:wuxianquan date:20190828 for: 鍏抽棴褰撳墠tab椤碉紝渚涘瓙椤甸潰璋冪敤->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ @@ -91,9 +96,16 @@ this.pageList.push(currentRoute) this.linkList.push(currentRoute.fullPath) this.activePage = currentRoute.fullPath - this.$bus.$on('clickMenuTitleSelected', this.clickMenuTitleSelected) }, mounted() { + if (process.env.VUE_APP_QIANKUN == 'true') { + //update-begin-author:zyf date:20211129 for:qiankun 娉ㄥ唽瀛愬簲鐢� + if (!window.qiankunStarted) { + window.qiankunStarted = true; + registerApps(); + } + //update-end-author:zyf date:20211129 for:qiankun 娉ㄥ唽瀛愬簲鐢� + } }, watch: { '$route': function(newRoute) { @@ -101,17 +113,17 @@ this.activePage = newRoute.fullPath if (!this.multipage) { this.linkList = [newRoute.fullPath] - this.pageList = [Object.assign({}, newRoute)] + this.pageList = [Object.assign({},newRoute)] // update-begin-author:taoyan date:20200211 for: TASK #3368 銆愯矾鐢辩紦瀛樸�戦椤电殑缂撳瓨璁剧疆鏈夐棶棰橈紝闇�瑕佹牴鎹悗鍙扮殑璺敱閰嶇疆鏉ュ疄鐜版槸鍚︾紦瀛� - } else if (indexKey == newRoute.fullPath) { + } else if(indexKey==newRoute.fullPath) { //棣栭〉鏃� 鍒ゆ柇鏄惁缂撳瓨 娌℃湁缂撳瓨 鍒锋柊涔� if (newRoute.meta.keepAlive === false) { this.routeReload() } // update-end-author:taoyan date:20200211 for: TASK #3368 銆愯矾鐢辩紦瀛樸�戦椤电殑缂撳瓨璁剧疆鏈夐棶棰橈紝闇�瑕佹牴鎹悗鍙扮殑璺敱閰嶇疆鏉ュ疄鐜版槸鍚︾紦瀛� - } else if (this.linkList.indexOf(newRoute.fullPath) < 0) { + }else if (this.linkList.indexOf(newRoute.fullPath) < 0) { this.linkList.push(newRoute.fullPath) - this.pageList.push(Object.assign({}, newRoute)) + this.pageList.push(Object.assign({},newRoute)) //// update-begin-author:sunjianlei date:20200103 for: 濡傛灉鏂板鐨勯〉闈㈤厤缃簡缂撳瓨璺敱锛岄偅涔堝氨寮哄埗鍒锋柊涓�閬� #842 // if (newRoute.meta.keepAlive) { // this.routeReload() @@ -120,20 +132,20 @@ } else if (this.linkList.indexOf(newRoute.fullPath) >= 0) { let oldIndex = this.linkList.indexOf(newRoute.fullPath) let oldPositionRoute = this.pageList[oldIndex] - this.pageList.splice(oldIndex, 1, Object.assign({}, newRoute, { meta: oldPositionRoute.meta })) + this.pageList.splice(oldIndex, 1, Object.assign({},newRoute,{meta:oldPositionRoute.meta})) } }, 'activePage': function(key) { let index = this.linkList.lastIndexOf(key) let waitRouter = this.pageList[index] // 銆怲ESTA-523銆戜慨澶嶏細涓嶅厑璁搁噸澶嶈烦杞矾鐢卞紓甯� - if (waitRouter.path !== this.$route.fullPath) { + if (waitRouter.fullPath !== this.$route.fullPath) { this.$router.push(Object.assign({}, waitRouter)) } this.changeTitle(waitRouter.meta.title) }, 'multipage': function(newVal) { - if (this.reloadFlag) { + if(this.reloadFlag){ if (!newVal) { this.linkList = [this.$route.fullPath] this.pageList = [this.$route] @@ -145,7 +157,7 @@ if (this.multipage && this.linkList.indexOf(indexKey) === -1) { this.addIndexToFirst() } - } + }, // update-end-author:sunjianlei date:20191223 for: 淇浠庡崟椤垫ā寮忓垏鎹㈠洖澶氶〉妯″紡鍚庨椤典笉灞呯涓�浣嶇殑 BUG }, methods: { @@ -166,13 +178,30 @@ // update-end-author:sunjianlei date:20191223 for: 淇浠庡崟椤垫ā寮忓垏鎹㈠洖澶氶〉妯″紡鍚庨椤典笉灞呯涓�浣嶇殑 BUG // update-begin-author:sunjianlei date:20200120 for: 鍔ㄦ�佹洿鏀归〉闈㈡爣棰� + /** + * 淇敼褰撳墠椤甸潰鐨勭獥鍙f爣棰� + * @param title 瑕佷慨鏀圭殑鏂版爣棰� + */ changeTitle(title) { - let projectTitle = 'MDC鏅烘収杞﹂棿' + let projectTitle = "MDC鏅烘収杞﹂棿" // 棣栭〉鐗规畩澶勭悊 if (this.$route.path === indexKey) { document.title = projectTitle } else { document.title = title + ' 路 ' + projectTitle + } + }, + /** + * 淇敼tab鏍囩鐨勬爣棰� + * @param title 瑕佷慨鏀圭殑鏂版爣棰� + * @param fullPath 瑕佷慨鏀圭殑璺敱鍏ㄨ矾寰勶紝濡傛灉涓嶅~灏辨槸淇敼褰撳墠璺敱 + */ + changeTabTitle(title, fullPath = '') { + if (title) { + let currentRoute = this.pageList.find((r) => r.fullPath === (fullPath ? fullPath : this.$route.fullPath)) + if (currentRoute != null) { + currentRoute.meta = {...currentRoute.meta, title} + } } }, // update-end-author:sunjianlei date:20200120 for: 鍔ㄦ�佹洿鏀归〉闈㈡爣棰� @@ -183,10 +212,10 @@ tabCallBack() { this.$nextTick(() => { //update-begin-author:taoyan date: 20201211 for:銆愭柊鐗堛�憃nline鎶ラ敊 JT-100 - setTimeout(() => { + setTimeout(()=>{ //鐪佸競鍖虹粍浠堕噷闈㈢粰window缁戝畾浜嗕釜resize浜嬩欢 瀵艰嚧鍒囨崲椤甸潰鐨勬椂鍊欒Е鍙戜簡浠栫殑resize锛屼絾鏄垏鎹㈤〉闈紝鐪佸競鍖虹粍浠惰繕娌¤閿�姣佸墠灏辫Е鍙戜簡璇ヤ簨浠讹紝瀵艰嚧鎺у埗鍙版姤閿欙紝鍔犱釜寤惰繜 triggerWindowResizeEvent() - }, 20) + },20) //update-end-author:taoyan date: 20201211 for:銆愭柊鐗堛�憃nline鎶ラ敊 JT-100 }) }, @@ -202,8 +231,9 @@ this.$message.warning('杩欐槸鏈�鍚庝竴椤碉紝涓嶈兘鍐嶅叧闂簡鍟�') return } - let removeRoute = this.pageList.filter(item => item.path == key) - this.pageList = this.pageList.filter(item => item.path !== key) + console.log("this.pageList ",this.pageList ); + let removeRoute = this.pageList.filter(item => item.fullPath == key) + this.pageList = this.pageList.filter(item => item.fullPath !== key) let index = this.linkList.indexOf(key) this.linkList = this.linkList.filter(item => item !== key) index = index >= this.linkList.length ? this.linkList.length - 1 : index @@ -214,14 +244,16 @@ let cacheRouterArray = Vue.ls.get(CACHE_INCLUDED_ROUTES) || [] if (removeRoute && removeRoute[0]) { let componentName = removeRoute[0].meta.componentName - if (cacheRouterArray.includes(componentName)) { + console.log("key: ", key); + console.log("componentName: ", componentName); + if(cacheRouterArray.includes(componentName)){ cacheRouterArray.splice(cacheRouterArray.findIndex(item => item === componentName), 1) Vue.ls.set(CACHE_INCLUDED_ROUTES, cacheRouterArray) } this.emitPageClosed(removeRoute[0]) } //update-end--Author:scott Date:20201015 for锛氳矾鐢辩紦瀛橀棶棰橈紝鍏抽棴浜唗ab椤垫椂鍐嶆墦寮�灏变笉鍒锋柊 #842 - this.tabCallBack() + }, // 瑙﹀彂 page-closed 锛堥〉闈㈠叧闂級鍏ㄥ眬浜嬩欢 emitPageClosed(closedRoute) { @@ -268,13 +300,13 @@ } }, /* update_begin author:wuxianquan date:20190828 for: 鍏抽棴褰撳墠tab椤碉紝渚涘瓙椤甸潰璋冪敤->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ - closeCurrent() { - this.remove(this.activePage) + closeCurrent(){ + this.remove(this.activePage); }, /* update_end author:wuxianquan date:20190828 for: 鍏抽棴褰撳墠tab椤碉紝渚涘瓙椤甸潰璋冪敤->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ closeOthers(pageKey) { let index = this.linkList.indexOf(pageKey) - if (pageKey == indexKey || pageKey.indexOf('?ticke=') >= 0) { + if (pageKey == indexKey || pageKey.indexOf('?ticke=')>=0) { this.linkList = this.linkList.slice(index, index + 1) this.pageList = this.pageList.slice(index, index + 1) this.activePage = this.linkList[0] @@ -282,7 +314,7 @@ let indexContent = this.pageList.slice(0, 1)[0] this.linkList = this.linkList.slice(index, index + 1) this.pageList = this.pageList.slice(index, index + 1) - this.linkList.unshift(indexContent.path) + this.linkList.unshift(indexContent.fullPath) this.pageList.unshift(indexContent) this.activePage = this.linkList[1] } @@ -296,29 +328,27 @@ let index = this.linkList.indexOf(pageKey) this.linkList = this.linkList.slice(index) this.pageList = this.pageList.slice(index) - this.linkList.unshift(indexContent.path) + this.linkList.unshift(indexContent.fullPath) this.pageList.unshift(indexContent) - // 鑻ュ皢婵�娲婚〉涓�骞跺叧闂垯鏄剧ず瀵艰埅鏍忛櫎棣栭〉绗竴涓〉闈� if (this.linkList.indexOf(this.activePage) < 0) { - this.activePage = this.linkList[1] + this.activePage = this.linkList[0] } }, closeRight(pageKey) { let index = this.linkList.indexOf(pageKey) this.linkList = this.linkList.slice(0, index + 1) this.pageList = this.pageList.slice(0, index + 1) - // 鑻ュ皢婵�娲婚〉涓�骞跺叧闂垯鏄剧ず瀵艰埅鏍忔渶鍚庝竴涓〉闈� - if (this.linkList.indexOf(this.activePage) < 0) { + if (this.linkList.indexOf(this.activePage < 0)) { this.activePage = this.linkList[this.linkList.length - 1] } }, //update-begin-author:taoyan date:20190430 for:鍔ㄦ�佽矾鐢眛itle鏄剧ず閰嶇疆鐨勮彍鍗晅itle鑰屼笉鏄叾瀵瑰簲璺敱鐨則itle - dynamicRouterShow(key, title) { + dynamicRouterShow(key,title){ let keyIndex = this.linkList.indexOf(key) - if (keyIndex >= 0) { + if(keyIndex>=0){ let currRouter = this.pageList[keyIndex] - let meta = Object.assign({}, currRouter.meta, { title: title }) - this.pageList.splice(keyIndex, 1, Object.assign({}, currRouter, { meta: meta })) + let meta = Object.assign({},currRouter.meta,{title:title}) + this.pageList.splice(keyIndex, 1, Object.assign({},currRouter,{meta:meta})) if (key === this.activePage) { this.changeTitle(title) } @@ -327,137 +357,105 @@ //update-end-author:taoyan date:20190430 for:鍔ㄦ�佽矾鐢眛itle鏄剧ず閰嶇疆鐨勮彍鍗晅itle鑰屼笉鏄叾瀵瑰簲璺敱鐨則itle //update-begin-author:taoyan date:20191008 for:璺敱鍒锋柊 - routeReload() { + routeReload(){ this.reloadFlag = false - let ToggleMultipage = 'ToggleMultipage' - this.$store.dispatch(ToggleMultipage, false) - this.$nextTick(() => { - this.$store.dispatch(ToggleMultipage, true) + let ToggleMultipage = "ToggleMultipage" + this.$store.dispatch(ToggleMultipage,false) + this.$nextTick(()=>{ + this.$store.dispatch(ToggleMultipage,true) this.reloadFlag = true }) }, //update-end-author:taoyan date:20191008 for:璺敱鍒锋柊 //鏂板涓�涓繑鍥炴柟娉� - excuteCallback(callback) { + excuteCallback(callback){ callback() }, - - clickMenuTitleSelected(selectedMenus) { - //console.log("鏂扮殑璺敱",newRoute) - this.activePage = selectedMenus[0].path - if (!this.multipage) { - this.linkList = [this.linkList[0], selectedMenus[0].path] - this.pageList = [this.pageList[0], Object.assign({}, selectedMenus[0])] - // update-begin-author:taoyan date:20200211 for: TASK #3368 銆愯矾鐢辩紦瀛樸�戦椤电殑缂撳瓨璁剧疆鏈夐棶棰橈紝闇�瑕佹牴鎹悗鍙扮殑璺敱閰嶇疆鏉ュ疄鐜版槸鍚︾紦瀛� - } else if (indexKey == selectedMenus[0].path) { - //棣栭〉鏃� 鍒ゆ柇鏄惁缂撳瓨 娌℃湁缂撳瓨 鍒锋柊涔� - if (selectedMenus[0].meta.keepAlive === false) { - this.routeReload() - } - // update-end-author:taoyan date:20200211 for: TASK #3368 銆愯矾鐢辩紦瀛樸�戦椤电殑缂撳瓨璁剧疆鏈夐棶棰橈紝闇�瑕佹牴鎹悗鍙扮殑璺敱閰嶇疆鏉ュ疄鐜版槸鍚︾紦瀛� - } else { - // selectedMenus.forEach(menuItem => { - // if (!this.linkList.includes(menuItem.path)) { - // console.log('瑙﹀彂澧炲姞') - // this.linkList.push(menuItem.path) - // this.pageList.push(menuItem) - // } else { - // console.log('瑙﹀彂娌℃湁澧炲姞') - // let oldIndex = this.linkList.indexOf(menuItem.path) - // let oldPositionRoute = this.pageList[oldIndex] - // this.pageList.splice(oldIndex, 1, Object.assign({}, menuItem, { meta: oldPositionRoute.meta })) - // } - // }) - // 鐐瑰嚮鏍囬鍚庡湪瀵艰埅鏍忚鐩栧墠涓�涓爣棰樻墍灞曞紑鐨勪笅绾ц彍鍗� - this.linkList = [this.linkList[0], ...selectedMenus.map(item => item.path)] - this.pageList = [this.pageList[0], ...selectedMenus] - } - } } } </script> <style lang="less"> - /* - * The following styles are auto-applied to elements with - * transition="page-transition" when their visibility is toggled - * by Vue.js. - * - * You can easily play with the page transition by editing - * these styles. - */ +/* +* The following styles are auto-applied to elements with +* transition="page-transition" when their visibility is toggled +* by Vue.js. +* +* You can easily play with the page transition by editing +* these styles. +*/ - .page-transition-enter { - opacity: 0; +.page-transition-enter { + opacity: 0; +} + +.page-transition-leave-active { + opacity: 0; +} + +.page-transition-enter .page-transition-container, +.page-transition-leave-active .page-transition-container { + -webkit-transform: scale(1.1); + transform: scale(1.1); +} + +/*缇庡寲寮瑰嚭Tab鏍峰紡*/ +.ant-tabs-nav-container { + margin-top: 4px; +} + +/* 淇敼 ant-tabs 鏍峰紡 */ +.tab-layout-tabs.ant-tabs { + border-bottom: 1px solid #ccc; + border-left: 1px solid #ccc; + background-color: white; + padding: 0 20px; + + .ant-tabs-bar { + margin: 4px 0 0; + border: none; } - .page-transition-leave-active { - opacity: 0; - } +} - .page-transition-enter .page-transition-container, - .page-transition-leave-active .page-transition-container { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } +.tab-layout-tabs.ant-tabs { - /*缇庡寲寮瑰嚭Tab鏍峰紡*/ - .ant-tabs-nav-container { - margin-top: 4px; - } + &.ant-tabs-card .ant-tabs-tab { - /* 淇敼 ant-tabs 鏍峰紡 */ - .tab-layout-tabs.ant-tabs { - border-bottom: 1px solid #ccc; - border-left: 1px solid #ccc; - background-color: white; - padding: 0 20px; - - .ant-tabs-bar { - margin: 4px 0 0; - border: none; - } - - } - - .tab-layout-tabs.ant-tabs { - - &.ant-tabs-card .ant-tabs-tab { - - padding: 0 20px 0 2px !important; + padding: 0 24px !important; background-color: white !important; - /*margin-right: 10px !important;*/ + margin-right: 10px !important; - .ant-tabs-close-x { - width: 12px !important; - height: 12px !important; - opacity: 0 !important; - cursor: pointer !important; - font-size: 12px !important; - margin: 0 !important; - position: absolute; - top: 36%; - right: 6px; - } + .ant-tabs-close-x { + width: 12px !important; + height: 12px !important; + opacity: 0 !important; + cursor: pointer !important; + font-size: 12px !important; + margin: 0 !important; + position: absolute; + top: 36%; + right: 6px; + } - &:hover .ant-tabs-close-x { - opacity: 1 !important; - } - + &:hover .ant-tabs-close-x { + opacity: 1 !important; } } - .tab-layout-tabs.ant-tabs.ant-tabs-card > .ant-tabs-bar { - .ant-tabs-tab { - border: none !important; - border-bottom: 1px solid transparent !important; - } - .ant-tabs-tab-active { - border-color: @primary-color!important; - } +} + +.tab-layout-tabs.ant-tabs.ant-tabs-card > .ant-tabs-bar { + .ant-tabs-tab { + border: none !important; + border-bottom: 1px solid transparent !important; } + .ant-tabs-tab-active { + border-color: @primary-color!important; + } +} </style> -- Gitblit v1.9.3