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 | 754 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 377 insertions(+), 377 deletions(-) diff --git a/src/components/layouts/TabLayout.vue b/src/components/layouts/TabLayout.vue index b70473d..a9ddfdb 100644 --- a/src/components/layouts/TabLayout.vue +++ b/src/components/layouts/TabLayout.vue @@ -35,427 +35,427 @@ </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' +import registerApps from "@/qiankun"; - 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椤碉紝渚涘瓙椤甸潰璋冪敤 ->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ + provide(){ + return{ + closeCurrent:this.closeCurrent, + changeTitle: this.changeTitle, + changeTabTitle: this.changeTabTitle, + } + }, + /* update_end author:wuxianquan date:20190828 for: 鍏抽棴褰撳墠tab椤碉紝渚涘瓙椤甸潰璋冪敤->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ + computed: { + multipage() { + //鍒ゆ柇濡傛灉鏄墜鏈烘ā寮忥紝鑷姩鍒囨崲涓哄崟椤甸潰妯″紡 + if (this.isMobile()) { + return false + } else { + return this.$store.state.app.multipage + } + } + }, + created() { + if (this.$route.path != indexKey) { + this.addIndexToFirst() + } + // 澶嶅埗涓�涓猺oute瀵硅薄鍑烘潵锛屼笉鑳藉奖鍝嶅師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:zyf date:20211129 for:qiankun 娉ㄥ唽瀛愬簲鐢� + } + }, + 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椤碉紝渚涘瓙椤甸潰璋冪敤 ->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #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] + // 銆怲ESTA-523銆戜慨澶嶏細涓嶅厑璁搁噸澶嶈烦杞矾鐢卞紓甯� + if (waitRouter.fullPath !== this.$route.fullPath) { + this.$router.push(Object.assign({}, waitRouter)) } + this.changeTitle(waitRouter.meta.title) }, - /* update_end author:wuxianquan date:20190828 for: 鍏抽棴褰撳墠tab椤碉紝渚涘瓙椤甸潰璋冪敤->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #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() } - // 澶嶅埗涓�涓猺oute瀵硅薄鍑烘潵锛屼笉鑳藉奖鍝嶅師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: 鍔ㄦ�佹洿鏀归〉闈㈡爣棰� + /** + * 淇敼褰撳墠椤甸潰鐨勭獥鍙f爣棰� + * @param title 瑕佷慨鏀圭殑鏂版爣棰� + */ + 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})) + /** + * 淇敼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} } - }, - 'activePage': function(key) { - let index = this.linkList.lastIndexOf(key) - let waitRouter = this.pageList[index] - // 銆怲ESTA-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 + } }, - 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 + // update-end-author:sunjianlei date:20200120 for: 鍔ㄦ�佹洿鏀归〉闈㈡爣棰� - // update-begin-author:sunjianlei date:20200120 for: 鍔ㄦ�佹洿鏀归〉闈㈡爣棰� - /** - * 淇敼褰撳墠椤甸潰鐨勭獥鍙f爣棰� - * @param title 瑕佷慨鏀圭殑鏂版爣棰� - */ - changeTitle(title) { - 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: 鍔ㄦ�佹洿鏀归〉闈㈡爣棰� + changePage(key) { + this.activePage = key + }, + tabCallBack() { + this.$nextTick(() => { + //update-begin-author:taoyan date: 20201211 for:銆愭柊鐗堛�憃nline鎶ラ敊 JT-100 + setTimeout(()=>{ + //鐪佸競鍖虹粍浠堕噷闈㈢粰window缁戝畾浜嗕釜resize浜嬩欢 瀵艰嚧鍒囨崲椤甸潰鐨勬椂鍊欒Е鍙戜簡浠栫殑resize锛屼絾鏄垏鎹㈤〉闈紝鐪佸競鍖虹粍浠惰繕娌¤閿�姣佸墠灏辫Е鍙戜簡璇ヤ簨浠讹紝瀵艰嚧鎺у埗鍙版姤閿欙紝鍔犱釜寤惰繜 + triggerWindowResizeEvent() + },20) + //update-end-author:taoyan date: 20201211 for:銆愭柊鐗堛�憃nline鎶ラ敊 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] - changePage(key) { - this.activePage = key - }, - tabCallBack() { - this.$nextTick(() => { - //update-begin-author:taoyan date: 20201211 for:銆愭柊鐗堛�憃nline鎶ラ敊 JT-100 - setTimeout(()=>{ - //鐪佸競鍖虹粍浠堕噷闈㈢粰window缁戝畾浜嗕釜resize浜嬩欢 瀵艰嚧鍒囨崲椤甸潰鐨勬椂鍊欒Е鍙戜簡浠栫殑resize锛屼絾鏄垏鎹㈤〉闈紝鐪佸競鍖虹粍浠惰繕娌¤閿�姣佸墠灏辫Е鍙戜簡璇ヤ簨浠讹紝瀵艰嚧鎺у埗鍙版姤閿欙紝鍔犱釜寤惰繜 - triggerWindowResizeEvent() - },20) - //update-end-author:taoyan date: 20201211 for:銆愭柊鐗堛�憃nline鎶ラ敊 JT-100 - }) - }, - editPage(key, action) { - this[action](key) - }, - remove(key) { - if (key == indexKey) { - this.$message.warning('棣栭〉涓嶈兘鍏抽棴!') - return + //update-begin--Author:scott Date:20201015 for锛氳矾鐢辩紦瀛橀棶棰橈紝鍏抽棴浜唗ab椤垫椂鍐嶆墦寮�灏变笉鍒锋柊 #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) } - 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] + this.emitPageClosed(removeRoute[0]) + } + //update-end--Author:scott Date:20201015 for锛氳矾鐢辩紦瀛橀棶棰橈紝鍏抽棴浜唗ab椤垫椂鍐嶆墦寮�灏变笉鍒锋柊 #842 - //update-begin--Author:scott Date:20201015 for锛氳矾鐢辩紦瀛橀棶棰橈紝鍏抽棴浜唗ab椤垫椂鍐嶆墦寮�灏变笉鍒锋柊 #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锛氳矾鐢辩紦瀛橀棶棰橈紝鍏抽棴浜唗ab椤垫椂鍐嶆墦寮�灏变笉鍒锋柊 #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椤碉紝渚涘瓙椤甸潰璋冪敤->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ - 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) { - 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) + }, + // 瑙﹀彂 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椤碉紝渚涘瓙椤甸潰璋冪敤->鏈涜彍鍗曡兘閰嶇疆澶栭摼锛岀洿鎺ュ脊鍑烘柊椤甸潰鑰屼笉鏄祵鍏frame #428 */ + 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) { + 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) - 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.fullPath) + this.pageList.unshift(indexContent) + if (this.linkList.indexOf(this.activePage) < 0) { + 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)) { + this.activePage = this.linkList[this.linkList.length - 1] + } + }, + //update-begin-author:taoyan date:20190430 for:鍔ㄦ�佽矾鐢眛itle鏄剧ず閰嶇疆鐨勮彍鍗晅itle鑰屼笉鏄叾瀵瑰簲璺敱鐨則itle + 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:鍔ㄦ�佽矾鐢眛itle鏄剧ず閰嶇疆鐨勮彍鍗晅itle鑰屼笉鏄叾瀵瑰簲璺敱鐨則itle - 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:鍔ㄦ�佽矾鐢眛itle鏄剧ず閰嶇疆鐨勮彍鍗晅itle鑰屼笉鏄叾瀵瑰簲璺敱鐨則itle + } + }, + //update-end-author:taoyan date:20190430 for:鍔ㄦ�佽矾鐢眛itle鏄剧ず閰嶇疆鐨勮彍鍗晅itle鑰屼笉鏄叾瀵瑰簲璺敱鐨則itle - //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() + }, } +} </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; + padding: 0 24px !important; + background-color: white !important; + margin-right: 10px !important; - .ant-tabs-bar { - margin: 4px 0 0; - border: none; + .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; } } - .tab-layout-tabs.ant-tabs { +} - &.ant-tabs-card .ant-tabs-tab { - - padding: 0 24px !important; - background-color: white !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; - } - - &: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; } - - .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; - } + .ant-tabs-tab-active { + border-color: @primary-color!important; } +} </style> -- Gitblit v1.9.3