| | |
| | | <!-- update-end- author:sunjianlei --- date:20191009 --- for: æåå³é®èåçå±çº§ --> |
| | | <a-tabs |
| | | @contextmenu.native="e => onContextmenu(e)" |
| | | v-if="multipage" |
| | | v-if="$route.meta.title!=='é¦é¡µ'&&multipage" |
| | | :active-key="activePage" |
| | | class="tab-layout-tabs" |
| | | style="height:52px" |
| | |
| | | @change="changePage" |
| | | @tabClick="tabCallBack" |
| | | @edit="editPage"> |
| | | <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 :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> |
| | | </a-tabs> |
| | | <div style="margin: 12px 12px 0;"> |
| | | <div :style="{padding: $route.meta.title=='é¦é¡µ'?'0':'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"/> |
| | |
| | | </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> |
| | | |
| | | <script> |
| | | import GlobalLayout from '@/components/page/GlobalLayout' |
| | | import Contextmenu from '@/components/menu/Contextmenu' |
| | | import { mixin, mixinDevice } from '@/utils/mixin.js' |
| | | import { triggerWindowResizeEvent } from '@/utils/util' |
| | | import Vue from 'vue' |
| | | import { CACHE_INCLUDED_ROUTES } from '@/store/mutation-types' |
| | | import registerApps from "@/qiankun"; |
| | | import GlobalLayout from '@/components/page/GlobalLayout' |
| | | import Contextmenu from '@/components/menu/Contextmenu' |
| | | import { mixin, mixinDevice } from '@/utils/mixin.js' |
| | | import { triggerWindowResizeEvent } from '@/utils/util' |
| | | import Vue from 'vue' |
| | | import { CACHE_INCLUDED_ROUTES } from '@/store/mutation-types' |
| | | |
| | | const indexKey = '/dashboard/analysis' |
| | | const indexKey = '/dashboard/analysis' |
| | | |
| | | export default { |
| | | name: 'TabLayout', |
| | | components: { |
| | | GlobalLayout, |
| | | Contextmenu |
| | | }, |
| | | mixins: [mixin, mixinDevice], |
| | | data() { |
| | | return { |
| | | pageList: [], |
| | | linkList: [], |
| | | activePage: '', |
| | | menuVisible: false, |
| | | menuItemList: [ |
| | | { key: '4', icon: 'reload', text: 'å· æ°' }, |
| | | { key: '1', icon: 'arrow-left', text: 'å
³é左侧' }, |
| | | { key: '2', icon: 'arrow-right', text: 'å
³éå³ä¾§' }, |
| | | { key: '3', icon: 'close', text: 'å
³éå
¶å®' } |
| | | ], |
| | | reloadFlag:true |
| | | export default { |
| | | name: 'TabLayout', |
| | | components: { |
| | | GlobalLayout, |
| | | Contextmenu |
| | | }, |
| | | mixins: [mixin, mixinDevice], |
| | | data() { |
| | | return { |
| | | pageList: [], |
| | | linkList: [], |
| | | activePage: '', |
| | | menuVisible: false, |
| | | menuItemList: [ |
| | | { key: '4', icon: 'reload', text: 'å· æ°' }, |
| | | { key: '1', icon: 'arrow-left', text: 'å
³é左侧' }, |
| | | { key: '2', icon: 'arrow-right', text: 'å
³éå³ä¾§' }, |
| | | { key: '3', icon: 'close', text: 'å
³éå
¶å®' } |
| | | ], |
| | | reloadFlag: true |
| | | } |
| | | }, |
| | | /* update_begin author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨ ->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | provide() { |
| | | return { |
| | | closeCurrent: this.closeCurrent |
| | | } |
| | | }, |
| | | /* update_end author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | computed: { |
| | | multipage() { |
| | | //å¤æå¦ææ¯ææºæ¨¡å¼ï¼èªå¨åæ¢ä¸ºå页颿¨¡å¼ |
| | | if (this.isMobile()) { |
| | | return false |
| | | } else { |
| | | return this.$store.state.app.multipage |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.$route.path != indexKey) { |
| | | this.addIndexToFirst() |
| | | } |
| | | // å¤å¶ä¸ä¸ªrouteå¯¹è±¡åºæ¥ï¼ä¸è½å½±ååroute |
| | | let currentRoute = Object.assign({}, this.$route) |
| | | currentRoute.meta = Object.assign({}, currentRoute.meta) |
| | | this.pageList.push(currentRoute) |
| | | this.linkList.push(currentRoute.fullPath) |
| | | this.activePage = currentRoute.fullPath |
| | | this.$bus.$on('clickMenuTitleSelected', this.clickMenuTitleSelected) |
| | | }, |
| | | mounted() { |
| | | }, |
| | | watch: { |
| | | '$route': function(newRoute) { |
| | | //console.log("æ°çè·¯ç±",newRoute) |
| | | this.activePage = newRoute.fullPath |
| | | if (!this.multipage) { |
| | | this.linkList = [newRoute.fullPath] |
| | | this.pageList = [Object.assign({}, newRoute)] |
| | | // update-begin-author:taoyan date:20200211 for: TASK #3368 ãè·¯ç±ç¼åãé¦é¡µçç¼å设置æé®é¢ï¼éè¦æ ¹æ®åå°çè·¯ç±é
ç½®æ¥å®ç°æ¯å¦ç¼å |
| | | } 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) { |
| | | this.linkList.push(newRoute.fullPath) |
| | | this.pageList.push(Object.assign({}, newRoute)) |
| | | //// update-begin-author:sunjianlei date:20200103 for: 妿æ°å¢ç页é¢é
ç½®äºç¼åè·¯ç±ï¼é£ä¹å°±å¼ºå¶å·æ°ä¸é #842 |
| | | // if (newRoute.meta.keepAlive) { |
| | | // this.routeReload() |
| | | // } |
| | | //// update-end-author:sunjianlei date:20200103 for: 妿æ°å¢ç页é¢é
ç½®äºç¼åè·¯ç±ï¼é£ä¹å°±å¼ºå¶å·æ°ä¸é #842 |
| | | } 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 })) |
| | | } |
| | | }, |
| | | /* update_begin author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨ ->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | provide(){ |
| | | return{ |
| | | closeCurrent:this.closeCurrent, |
| | | changeTitle: this.changeTitle, |
| | | changeTabTitle: this.changeTabTitle, |
| | | 'activePage': function(key) { |
| | | let index = this.linkList.lastIndexOf(key) |
| | | let waitRouter = this.pageList[index] |
| | | // ãTESTA-523ãä¿®å¤ï¼ä¸å
许éå¤è·³è½¬è·¯ç±å¼å¸¸ |
| | | if (waitRouter.path !== this.$route.fullPath) { |
| | | this.$router.push(Object.assign({}, waitRouter)) |
| | | } |
| | | this.changeTitle(waitRouter.meta.title) |
| | | }, |
| | | /* update_end author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | computed: { |
| | | multipage() { |
| | | //å¤æå¦ææ¯ææºæ¨¡å¼ï¼èªå¨åæ¢ä¸ºå页颿¨¡å¼ |
| | | if (this.isMobile()) { |
| | | return false |
| | | } else { |
| | | return this.$store.state.app.multipage |
| | | 'multipage': function(newVal) { |
| | | if (this.reloadFlag) { |
| | | if (!newVal) { |
| | | this.linkList = [this.$route.fullPath] |
| | | this.pageList = [this.$route] |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.$route.path != indexKey) { |
| | | // update-begin-author:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | device() { |
| | | if (this.multipage && this.linkList.indexOf(indexKey) === -1) { |
| | | this.addIndexToFirst() |
| | | } |
| | | // å¤å¶ä¸ä¸ªrouteå¯¹è±¡åºæ¥ï¼ä¸è½å½±ååroute |
| | | let currentRoute = Object.assign({}, this.$route) |
| | | currentRoute.meta = Object.assign({}, currentRoute.meta) |
| | | this.pageList.push(currentRoute) |
| | | this.linkList.push(currentRoute.fullPath) |
| | | this.activePage = currentRoute.fullPath |
| | | }, |
| | | 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:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | }, |
| | | methods: { |
| | | // update-begin-author:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | // å°é¦é¡µæ·»å å°ç¬¬ä¸ä½ |
| | | addIndexToFirst() { |
| | | this.pageList.splice(0, 0, { |
| | | name: 'dashboard-analysis', |
| | | path: indexKey, |
| | | fullPath: indexKey, |
| | | meta: { |
| | | icon: 'dashboard', |
| | | title: 'é¦é¡µ' |
| | | } |
| | | //update-end-author:zyf date:20211129 for:qiankun 注åååºç¨ |
| | | }) |
| | | this.linkList.splice(0, 0, indexKey) |
| | | }, |
| | | // update-end-author:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | |
| | | // update-begin-author:sunjianlei date:20200120 for: å¨ææ´æ¹é¡µé¢æ é¢ |
| | | changeTitle(title) { |
| | | let projectTitle = 'MDCæºæ
§è½¦é´' |
| | | // é¦é¡µç¹æ®å¤ç |
| | | if (this.$route.path === indexKey) { |
| | | document.title = projectTitle |
| | | } else { |
| | | document.title = title + ' · ' + projectTitle |
| | | } |
| | | }, |
| | | watch: { |
| | | '$route': function(newRoute) { |
| | | //console.log("æ°çè·¯ç±",newRoute) |
| | | this.activePage = newRoute.fullPath |
| | | if (!this.multipage) { |
| | | this.linkList = [newRoute.fullPath] |
| | | this.pageList = [Object.assign({},newRoute)] |
| | | // update-begin-author:taoyan date:20200211 for: TASK #3368 ãè·¯ç±ç¼åãé¦é¡µçç¼å设置æé®é¢ï¼éè¦æ ¹æ®åå°çè·¯ç±é
ç½®æ¥å®ç°æ¯å¦ç¼å |
| | | } 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) { |
| | | this.linkList.push(newRoute.fullPath) |
| | | this.pageList.push(Object.assign({},newRoute)) |
| | | //// update-begin-author:sunjianlei date:20200103 for: 妿æ°å¢ç页é¢é
ç½®äºç¼åè·¯ç±ï¼é£ä¹å°±å¼ºå¶å·æ°ä¸é #842 |
| | | // if (newRoute.meta.keepAlive) { |
| | | // this.routeReload() |
| | | // } |
| | | //// update-end-author:sunjianlei date:20200103 for: 妿æ°å¢ç页é¢é
ç½®äºç¼åè·¯ç±ï¼é£ä¹å°±å¼ºå¶å·æ°ä¸é #842 |
| | | } 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})) |
| | | } |
| | | }, |
| | | 'activePage': function(key) { |
| | | let index = this.linkList.lastIndexOf(key) |
| | | let waitRouter = this.pageList[index] |
| | | // ãTESTA-523ãä¿®å¤ï¼ä¸å
许éå¤è·³è½¬è·¯ç±å¼å¸¸ |
| | | if (waitRouter.fullPath !== this.$route.fullPath) { |
| | | this.$router.push(Object.assign({}, waitRouter)) |
| | | } |
| | | this.changeTitle(waitRouter.meta.title) |
| | | }, |
| | | 'multipage': function(newVal) { |
| | | if(this.reloadFlag){ |
| | | if (!newVal) { |
| | | this.linkList = [this.$route.fullPath] |
| | | this.pageList = [this.$route] |
| | | } |
| | | } |
| | | }, |
| | | // update-begin-author:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | device() { |
| | | if (this.multipage && this.linkList.indexOf(indexKey) === -1) { |
| | | this.addIndexToFirst() |
| | | } |
| | | }, |
| | | // update-end-author:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | // update-end-author:sunjianlei date:20200120 for: å¨ææ´æ¹é¡µé¢æ é¢ |
| | | |
| | | changePage(key) { |
| | | this.activePage = key |
| | | }, |
| | | methods: { |
| | | // update-begin-author:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | // å°é¦é¡µæ·»å å°ç¬¬ä¸ä½ |
| | | addIndexToFirst() { |
| | | this.pageList.splice(0, 0, { |
| | | name: 'dashboard-analysis', |
| | | path: indexKey, |
| | | fullPath: indexKey, |
| | | meta: { |
| | | icon: 'dashboard', |
| | | title: 'é¦é¡µ' |
| | | } |
| | | }) |
| | | this.linkList.splice(0, 0, indexKey) |
| | | }, |
| | | // update-end-author:sunjianlei date:20191223 for: ä¿®å¤ä»å页模å¼åæ¢åå¤é¡µæ¨¡å¼åé¦é¡µä¸å±
第ä¸ä½ç BUG |
| | | tabCallBack() { |
| | | this.$nextTick(() => { |
| | | //update-begin-author:taoyan date: 20201211 for:ãæ°çãonlineæ¥é JT-100 |
| | | setTimeout(() => { |
| | | //çå¸åºç»ä»¶éé¢ç»windowç»å®äºä¸ªresizeäºä»¶ 导è´åæ¢é¡µé¢çæ¶å触åäºä»çresizeï¼ä½æ¯åæ¢é¡µé¢ï¼çå¸åºç»ä»¶è¿æ²¡è¢«éæ¯å就触åäºè¯¥äºä»¶ï¼å¯¼è´æ§å¶å°æ¥éï¼å ä¸ªå»¶è¿ |
| | | triggerWindowResizeEvent() |
| | | }, 20) |
| | | //update-end-author:taoyan date: 20201211 for:ãæ°çãonlineæ¥é JT-100 |
| | | }) |
| | | }, |
| | | editPage(key, action) { |
| | | this[action](key) |
| | | }, |
| | | remove(key) { |
| | | if (key == indexKey) { |
| | | this.$message.warning('é¦é¡µä¸è½å
³é!') |
| | | return |
| | | } |
| | | if (this.pageList.length === 1) { |
| | | this.$message.warning('è¿æ¯æåä¸é¡µï¼ä¸è½åå
³éäºå¦') |
| | | return |
| | | } |
| | | let removeRoute = this.pageList.filter(item => item.path == key) |
| | | this.pageList = this.pageList.filter(item => item.path !== 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 |
| | | this.activePage = this.linkList[index] |
| | | |
| | | // update-begin-author:sunjianlei date:20200120 for: å¨ææ´æ¹é¡µé¢æ é¢ |
| | | /** |
| | | * ä¿®æ¹å½å页é¢ççªå£æ é¢ |
| | | * @param title è¦ä¿®æ¹çæ°æ é¢ |
| | | */ |
| | | changeTitle(title) { |
| | | let projectTitle = "MDCæºæ
§è½¦é´" |
| | | // é¦é¡µç¹æ®å¤ç |
| | | if (this.$route.path === indexKey) { |
| | | document.title = projectTitle |
| | | } else { |
| | | document.title = title + ' · ' + projectTitle |
| | | //update-begin--Author:scott Date:20201015 forï¼è·¯ç±ç¼åé®é¢ï¼å
³éäºtab页æ¶åæå¼å°±ä¸å·æ° #842 |
| | | //å
³é页é¢åä»ç¼åcache_included_routesä¸å é¤è·¯ç±ï¼ä¸æ¬¡ç¹å»èåä¼éæ°å è½½é¡µé¢ |
| | | let cacheRouterArray = Vue.ls.get(CACHE_INCLUDED_ROUTES) || [] |
| | | if (removeRoute && removeRoute[0]) { |
| | | let componentName = removeRoute[0].meta.componentName |
| | | if (cacheRouterArray.includes(componentName)) { |
| | | cacheRouterArray.splice(cacheRouterArray.findIndex(item => item === componentName), 1) |
| | | Vue.ls.set(CACHE_INCLUDED_ROUTES, cacheRouterArray) |
| | | } |
| | | }, |
| | | /** |
| | | * ä¿®æ¹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: å¨ææ´æ¹é¡µé¢æ é¢ |
| | | |
| | | changePage(key) { |
| | | this.activePage = key |
| | | }, |
| | | tabCallBack() { |
| | | this.$nextTick(() => { |
| | | //update-begin-author:taoyan date: 20201211 for:ãæ°çãonlineæ¥é JT-100 |
| | | setTimeout(()=>{ |
| | | //çå¸åºç»ä»¶éé¢ç»windowç»å®äºä¸ªresizeäºä»¶ 导è´åæ¢é¡µé¢çæ¶å触åäºä»çresizeï¼ä½æ¯åæ¢é¡µé¢ï¼çå¸åºç»ä»¶è¿æ²¡è¢«éæ¯å就触åäºè¯¥äºä»¶ï¼å¯¼è´æ§å¶å°æ¥éï¼å ä¸ªå»¶è¿ |
| | | triggerWindowResizeEvent() |
| | | },20) |
| | | //update-end-author:taoyan date: 20201211 for:ãæ°çãonlineæ¥é JT-100 |
| | | }) |
| | | }, |
| | | editPage(key, action) { |
| | | this[action](key) |
| | | }, |
| | | remove(key) { |
| | | if (key == indexKey) { |
| | | this.$message.warning('é¦é¡µä¸è½å
³é!') |
| | | return |
| | | } |
| | | if (this.pageList.length === 1) { |
| | | this.$message.warning('è¿æ¯æåä¸é¡µï¼ä¸è½åå
³éäºå¦') |
| | | return |
| | | } |
| | | 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 |
| | | this.activePage = this.linkList[index] |
| | | |
| | | //update-begin--Author:scott Date:20201015 forï¼è·¯ç±ç¼åé®é¢ï¼å
³éäºtab页æ¶åæå¼å°±ä¸å·æ° #842 |
| | | //å
³é页é¢åä»ç¼åcache_included_routesä¸å é¤è·¯ç±ï¼ä¸æ¬¡ç¹å»èåä¼éæ°å è½½é¡µé¢ |
| | | let cacheRouterArray = Vue.ls.get(CACHE_INCLUDED_ROUTES) || [] |
| | | if (removeRoute && removeRoute[0]) { |
| | | let componentName = removeRoute[0].meta.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ï¼è·¯ç±ç¼åé®é¢ï¼å
³éäºtab页æ¶åæå¼å°±ä¸å·æ° #842 |
| | | |
| | | }, |
| | | // 触å page-closed ï¼é¡µé¢å
³éï¼å
¨å±äºä»¶ |
| | | emitPageClosed(closedRoute) { |
| | | this.$root.$emit('page-closed', { |
| | | closedRoute, |
| | | pageList: this.pageList, |
| | | linkList: this.linkList, |
| | | activePage: this.activePage |
| | | }) |
| | | }, |
| | | onContextmenu(e) { |
| | | const pagekey = this.getPageKey(e.target) |
| | | if (pagekey !== null) { |
| | | e.preventDefault() |
| | | this.menuVisible = true |
| | | } |
| | | }, |
| | | getPageKey(target, depth) { |
| | | depth = depth || 0 |
| | | if (depth > 2) { |
| | | return null |
| | | } |
| | | let pageKey = target.getAttribute('pagekey') |
| | | pageKey = pageKey || (target.previousElementSibling ? target.previousElementSibling.getAttribute('pagekey') : null) |
| | | return pageKey || (target.firstElementChild ? this.getPageKey(target.firstElementChild, ++depth) : null) |
| | | }, |
| | | onMenuSelect(key, target) { |
| | | let pageKey = this.getPageKey(target) |
| | | switch (key) { |
| | | case '1': |
| | | this.closeLeft(pageKey) |
| | | break |
| | | case '2': |
| | | this.closeRight(pageKey) |
| | | break |
| | | case '3': |
| | | this.closeOthers(pageKey) |
| | | break |
| | | case '4': |
| | | this.routeReload() |
| | | break |
| | | default: |
| | | break |
| | | } |
| | | }, |
| | | /* update_begin author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | closeCurrent(){ |
| | | this.remove(this.activePage); |
| | | }, |
| | | /* update_end author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | closeOthers(pageKey) { |
| | | let index = this.linkList.indexOf(pageKey) |
| | | 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] |
| | | } else { |
| | | 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.fullPath) |
| | | this.pageList.unshift(indexContent) |
| | | this.activePage = this.linkList[1] |
| | | } |
| | | }, |
| | | closeLeft(pageKey) { |
| | | if (pageKey == indexKey) { |
| | | return |
| | | } |
| | | let tempList = [...this.pageList] |
| | | let indexContent = tempList.slice(0, 1)[0] |
| | | let index = this.linkList.indexOf(pageKey) |
| | | this.linkList = this.linkList.slice(index) |
| | | this.pageList = this.pageList.slice(index) |
| | | this.linkList.unshift(indexContent.fullPath) |
| | | this.emitPageClosed(removeRoute[0]) |
| | | } |
| | | //update-end--Author:scott Date:20201015 forï¼è·¯ç±ç¼åé®é¢ï¼å
³éäºtab页æ¶åæå¼å°±ä¸å·æ° #842 |
| | | this.tabCallBack() |
| | | }, |
| | | // 触å page-closed ï¼é¡µé¢å
³éï¼å
¨å±äºä»¶ |
| | | emitPageClosed(closedRoute) { |
| | | this.$root.$emit('page-closed', { |
| | | closedRoute, |
| | | pageList: this.pageList, |
| | | linkList: this.linkList, |
| | | activePage: this.activePage |
| | | }) |
| | | }, |
| | | onContextmenu(e) { |
| | | const pagekey = this.getPageKey(e.target) |
| | | if (pagekey !== null) { |
| | | e.preventDefault() |
| | | this.menuVisible = true |
| | | } |
| | | }, |
| | | getPageKey(target, depth) { |
| | | depth = depth || 0 |
| | | if (depth > 2) { |
| | | return null |
| | | } |
| | | let pageKey = target.getAttribute('pagekey') |
| | | pageKey = pageKey || (target.previousElementSibling ? target.previousElementSibling.getAttribute('pagekey') : null) |
| | | return pageKey || (target.firstElementChild ? this.getPageKey(target.firstElementChild, ++depth) : null) |
| | | }, |
| | | onMenuSelect(key, target) { |
| | | let pageKey = this.getPageKey(target) |
| | | switch (key) { |
| | | case '1': |
| | | this.closeLeft(pageKey) |
| | | break |
| | | case '2': |
| | | this.closeRight(pageKey) |
| | | break |
| | | case '3': |
| | | this.closeOthers(pageKey) |
| | | break |
| | | case '4': |
| | | this.routeReload() |
| | | break |
| | | default: |
| | | break |
| | | } |
| | | }, |
| | | /* update_begin author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | closeCurrent() { |
| | | this.remove(this.activePage) |
| | | }, |
| | | /* update_end author:wuxianquan date:20190828 for: å
³éå½åtab页ï¼ä¾å页é¢è°ç¨->æèåè½é
ç½®å¤é¾ï¼ç´æ¥å¼¹åºæ°é¡µé¢è䏿¯åµå
¥iframe #428 */ |
| | | closeOthers(pageKey) { |
| | | let index = this.linkList.indexOf(pageKey) |
| | | 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] |
| | | } else { |
| | | 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.pageList.unshift(indexContent) |
| | | if (this.linkList.indexOf(this.activePage) < 0) { |
| | | this.activePage = this.linkList[0] |
| | | this.activePage = this.linkList[1] |
| | | } |
| | | }, |
| | | closeLeft(pageKey) { |
| | | if (pageKey == indexKey) { |
| | | return |
| | | } |
| | | let tempList = [...this.pageList] |
| | | let indexContent = tempList.slice(0, 1)[0] |
| | | let index = this.linkList.indexOf(pageKey) |
| | | this.linkList = this.linkList.slice(index) |
| | | this.pageList = this.pageList.slice(index) |
| | | this.linkList.unshift(indexContent.path) |
| | | this.pageList.unshift(indexContent) |
| | | // è¥å°æ¿æ´»é¡µä¸å¹¶å
³éåæ¾ç¤ºå¯¼èªæ é¤é¦é¡µç¬¬ä¸ä¸ªé¡µé¢ |
| | | if (this.linkList.indexOf(this.activePage) < 0) { |
| | | this.activePage = this.linkList[1] |
| | | } |
| | | }, |
| | | 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) { |
| | | this.activePage = this.linkList[this.linkList.length - 1] |
| | | } |
| | | }, |
| | | //update-begin-author:taoyan date:20190430 for:å¨æè·¯ç±titleæ¾ç¤ºé
ç½®çèåtitleè䏿¯å
¶å¯¹åºè·¯ç±çtitle |
| | | dynamicRouterShow(key, title) { |
| | | let keyIndex = this.linkList.indexOf(key) |
| | | 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 })) |
| | | if (key === this.activePage) { |
| | | this.changeTitle(title) |
| | | } |
| | | }, |
| | | 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)) { |
| | | this.activePage = this.linkList[this.linkList.length - 1] |
| | | } |
| | | }, |
| | | //update-begin-author:taoyan date:20190430 for:å¨æè·¯ç±titleæ¾ç¤ºé
ç½®çèåtitleè䏿¯å
¶å¯¹åºè·¯ç±çtitle |
| | | dynamicRouterShow(key,title){ |
| | | let keyIndex = this.linkList.indexOf(key) |
| | | 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})) |
| | | if (key === this.activePage) { |
| | | this.changeTitle(title) |
| | | } |
| | | } |
| | | }, |
| | | //update-end-author:taoyan date:20190430 for:å¨æè·¯ç±titleæ¾ç¤ºé
ç½®çèåtitleè䏿¯å
¶å¯¹åºè·¯ç±çtitle |
| | | } |
| | | }, |
| | | //update-end-author:taoyan date:20190430 for:å¨æè·¯ç±titleæ¾ç¤ºé
ç½®çèåtitleè䏿¯å
¶å¯¹åºè·¯ç±çtitle |
| | | |
| | | //update-begin-author:taoyan date:20191008 for:è·¯ç±å·æ° |
| | | routeReload(){ |
| | | this.reloadFlag = false |
| | | 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){ |
| | | callback() |
| | | }, |
| | | //update-begin-author:taoyan date:20191008 for:è·¯ç±å·æ° |
| | | routeReload() { |
| | | this.reloadFlag = false |
| | | 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) { |
| | | 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"> |
| | |
| | | |
| | | &.ant-tabs-card .ant-tabs-tab { |
| | | |
| | | padding: 0 24px !important; |
| | | background-color: white !important; |
| | | margin-right: 10px !important; |
| | | padding: 0 20px 0 2px !important; |
| | | background-color: white !important; |
| | | /*margin-right: 10px !important;*/ |
| | | |
| | | .ant-tabs-close-x { |
| | | width: 12px !important; |