<style> @import "../assets/css/Details.css"; </style> <template> <div class="flexDiv"> <div class="secondMenu" :class="{'big':!isCollapse}"> <div class="secondMenu_l"> <div class="menuItem"> <el-menu default-active="1" :background-color="!isRed?'#282733':'#FBFBFB'" :text-color="!isRed?'#a3ace0':'#787A7D'" :active-text-color="!isRed?'#FFFFFF':'#33B3FF'" :collapse="isCollapse"> <el-submenu v-for="(item,index) in items" :index="String(index+1)" :key='index'> <template slot="title" class="left-nav"> <i :class="[fontPub,item.MenuStyleIcon]" class="big-icon"></i> {{item.MenuName}} </template> <el-menu-item-group class="my_maxheight" :class="{'red':isRed}"> <span slot="title" v-if="isCollapse">{{item.MenuName}}</span> <el-menu-item class="thridMenu" :class="{'red-theme':isRed}" v-for="(subItem,sindex) in item.childerns" :index="String(index+1)+'-'+String(sindex+1)" @click="goUrl(subItem.MenuUrl)" :key='sindex'> <i :class="[fontPub,subItem.MenuStyleIcon]"></i> {{subItem.MenuName}}</el-menu-item> </el-menu-item-group> </el-submenu> </el-menu> </div> </div> <div class="extender" v-if="isRed" @click="changeMenuShowType"> <img src="../assets/img/extends.png" :class="{'close-extend':isCollapse}" /> </div> </div> <div class="flexParent" v-if="openMode==1"> <div class="nav-tabs-box" @contextmenu.prevent="showRightMenu" :style="{width:`${navWidth}px`}"> <el-tabs v-if='tabs && tabs.length>0' v-model="currentTabName" style="margin-left: 120px;" :closable="tabs.length>1" type="card" @edit="handleTabsEdit"> <el-tab-pane :key="i" v-for="(item,i) in tabs" :label="item.title" :name="item.name+'_'+i"> </el-tab-pane> </el-tabs> <div class="browner-opera-box" v-if="currentTag.history&¤tTag.history.length>0" style="border-bottom: 1px solid #e4e7ed;"> <i class="iconfont icon-houtui" @click="goback(0)" :class="{'active':this.currentTag && this.currentTag.hisIndex>0}" title="后退"></i> <i class="iconfont icon-qianjin" @click="goback(1)" :class="{'active':this.currentTag && this.currentTag.hisIndex<this.currentTag.history.length-1}" title="前进"></i> <i class="iconfont icon-shuaxin1 active" @click="reloadpage" title="刷新"></i> </div> </div> <analogIFrame :key="i" :type='item.type' v-model="item.history" :curIndex='i' :refer='item.refer' v-show="tabs.indexOf(currentTag)==i" :componentTemp='item.comp' v-for="(item,i) in tabs" v-if='item.comp' :path='item.path' :name='item.name'></analogIFrame> </div> <div class="flexParent" v-if="openMode==0"> <a :href='blankUrl' id='blankLink' target="_blank" style="display:none">1</a> <div class="resource-ttop" style="font-family:PingFangSC-Semibold" v-if="rootName!=''"> {{rootName}}<i class="iconfont icon-weibiaoti102"></i>{{parentName}}<i class="iconfont icon-weibiaoti102"></i><span class="active">{{currentName}}</span> </div> <div class="frame-box" ref="frameBox" name="frameBox"> <router-view></router-view> </div> </div> <ul class="right-menu" @contextmenu.prevent="nullMethod" v-if='currentRightIndex>-1' :style="{top:mouserY+'px',left:mouseX+'px'}"> <li @click="referPage">重新加载当前页</li> <li class="split"></li> <li @click="closeCurrent" :class="{'disable':tabs.length==1}">关闭标签</li> <li @click="closeOther" :class="{'disable':tabs.length<2}">关闭其它标签</li> <li @click="closeRight" :class="{'disable':currentRightIndex==tabs.length-1}">关闭右侧标签</li> </ul> </div> </template> <script type="text/javascript"> import routerConfig from '../router/config'; import analogIFrame from './analogIFrame'; import MsgBus from '../assets/utils/msgBus.js'; import { ALPN_ENABLED } from 'constants'; export default { data() { return { msg: { ParentId: "", MenuStatus: "0", MenuName: "" }, fontPub: "iconfont", num: -1, items: [], openId: 0, rootName: "", parentName: "", currentName: "", isCollapse: true, tabs: [], currentTabName: '', currentTag: {}, type: 'd', currentRightIndex: -1, mouseX: 0, mouserY: 0, ctrlDown: false, openMode: 0, blankUrl: '', navWidth: 0, //加密id EnCodeWord: '', isRed: true }; }, components: { analogIFrame }, watch: { $route: "getMenu", currentTabName: function (val, oldval) { this.tabs.forEach((x, i) => { if ((x.name + "_" + i) == val) { this.currentTag = x if (!x.comp) { x.comp = this.mapObj(x.path, x.name).comp } this.$router.push({ path: x.path }) } }) }, tabs: { handler(newValue, oldValue) { window.localStorage.navTabs = JSON.stringify(newValue) }, deep: true }, currentTag: { handler(newValue, oldValue) { setTimeout(() => { document.querySelectorAll('.frame-box').forEach(x => { if (x.style.display != 'none') { let opContents = x.querySelectorAll(".query-box ul li"); if (opContents && opContents.length > 0) { this.navWidth = document.querySelector(".flexParent").offsetWidth - opContents[opContents .length - 1].offsetWidth - 160 } else { this.navWidth = document.querySelector(".flexParent").offsetWidth - 20; } } }) }, 300); }, deep: true } }, mounted() { this.openMode = 0 if (localStorage.navsot) { this.isCollapse = localStorage.navsot == 'a' } if (localStorage.openMode && localStorage.openMode == 1) this.openMode = 1 this.MsgBus.$on('msg', () => { this.handleTabsEdit(this.currentTabName, 'remove') }); this.MsgBus.$on('refresh', () => { this.reloadpage() }); this.navWidth = document.querySelector(".flexParent").offsetWidth; if (this.openMode == 1) { if (localStorage['navTabs']) { this.tabs = JSON.parse(localStorage['navTabs']) } } this.getMenu() this.filterRouter() let hrefs = window.location.href.split('/') if (this.openMode == 1) { let hrefs = window.location.href.split('/') this.goUrl('/' + hrefs[hrefs.length - 1]) this.propF5() } else { this.goUrl('/' + hrefs[hrefs.length - 1]) } this.isRed = (this.getLocalStorage().ThemeType ? this.getLocalStorage().ThemeType : 0) == 1 }, methods: { nullMethod() { }, changeMenuShowType() { this.isCollapse = !this.isCollapse; localStorage.navsot = this.isCollapse ? 'a' : 'b' }, referPage() { this.currentTabName = this.tabs[this.currentRightIndex].name + '_' + this.currentRightIndex this.tabs[this.currentRightIndex].refer += 1 }, closeOther() { if (this.tabs.length > 1) { let temp = this.tabs.filter((x, i) => { return i == this.currentRightIndex }) if (temp.length == 1) { this.tabs = [] this.tabs.push(temp[0]) this.currentTabName = temp[0].name + '_0' } } }, closeRight() { if (this.currentRightIndex < this.tabs.length - 1) { let temp = this.tabs.filter((x, i) => { return i <= this.currentRightIndex }) if (temp.length > 0) { this.tabs = [] this.tabs = temp this.currentTabName = temp[this.currentRightIndex].name + "_" + this.currentRightIndex } } }, closeCurrent() { if (this.tabs.length > 1) { this.handleTabsEdit(this.tabs[this.currentRightIndex].name, 'remove') } }, showRightMenu(e) { if (e.button == 2) { let id = '' if (e.path) { e.path.forEach(x => { if (x.className && x.className.indexOf('el-tabs__item') != -1) { id = x.id.split('-')[1] return false } }) this.tabs.forEach((x, i) => { if ((x.name + "_" + i) == id) { this.mouseX = e.clientX this.mouserY = e.offsetY this.currentRightIndex = i } }) } else if (id == '' && e.target && e.target.id) { var tempArray = e.target.id.split('-'); if (tempArray && tempArray.length > 1) { id = tempArray[1]; } this.tabs.forEach((x, i) => { var newName = x.name + "_" + i; if (newName == id) { this.mouseX = e.clientX this.mouserY = e.offsetY this.currentRightIndex = i } }) } } }, goback(t) { if (t == 0 && this.currentTag.hisIndex > 0) { this.type = 'b' this.currentTag.type = 'b' this.currentTag.hisIndex -= 1 this.$router.push({ path: this.currentTag.history[this.currentTag.hisIndex] }) } else if (t == 1 && this.currentTag.hisIndex < this.currentTag.history.length - 1) { this.type = 'f' this.currentTag.type = 'f' this.currentTag.hisIndex += 1 this.$router.push({ path: this.currentTag.history[this.currentTag.hisIndex] }) } }, propF5() { let that = this //注册JS屏蔽F5事件 document.onkeydown = function (event) { if (event.keyCode == 17) { // ctrlDown 用来判断是否按下ctrl键 ctrl + F5 that.ctrlDown = true; } if (event.keyCode == 116 && !that.ctrlDown) { // 只有在单独使用F5 的时候 阻止刷新 that.reloadpage(); return false } }; document.onkeyup = function (e) { //ctrl放开后改变状态 if (e.keyCode == 17) { that.ctrlDown = false; } }; //不想写checkout方法了,直接JS原生,那位义士把这里搞成checkout一下 document.onclick = function (e) { if (e.button != 2) { that.currentRightIndex = -1 } } }, reloadpage() { this.tabs.forEach((x, i) => { if (x.name == this.currentTabName.split('_')[0]) { x.refer += 1 return false } }) }, handleTabsEdit(targetName, action) { if (action === 'remove') { let index = 0 this.tabs.forEach((x, i) => { if (x.name == targetName.split('_')[0] && i == targetName.split('_')[1]) { index = i return false } }) if (this.currentTabName == targetName) { if (index < this.tabs.length - 1) this.currentTabName = this.tabs[index + 1].name + "_" + index else if (index > 0) { this.currentTabName = this.tabs[index - 1].name + "_" + (index - 1) } } this.tabs.splice(index, 1) } }, mapObj(path, name) { let obj = {} obj = this.getTitleByRouter(name) if (obj.title == '') obj.title = this.getMenuV2(path) obj.title == '' ? '未命名' : obj.title return obj }, goUrl(path) { if (this.openMode == 1) { let pathArray = path.split('/') let isExsit = false let newName = pathArray[1].split('?')[0]; let temp = this.mapObj(path, newName) if (path === "/TravelManager3") { this.$router.push({ name: 'TravelManager3', query: { flag: true, blank: 'y' } }); return } if (path === "/TravelControlList3") { this.$router.push({ name: 'TravelControlList3', query: { flag: true, blank: 'y' } }); return } this.tabs.forEach((x, i) => { if (pathArray[1] == x.name || path == x.path || x.history.indexOf(path) != -1) { this.tabs[i].hisIndex = this.tabs[i].history.length this.tabs[i].path = path isExsit = true this.currentTabName = x.name + "_" + i this.comp = temp.comp this.tabs[i].type = 'd' return false } }) if (!isExsit) { let obj = {} obj.path = path obj.title = temp.title obj.name = newName obj.comp = temp.comp obj.refer = 0 obj.history = [] obj.type = 'd' obj.hisIndex = 0 this.currentTabName = obj.name + '_' + this.tabs.length this.tabs.push(obj) } this.type = 'd' } else if (this.openMode == 0 && path != "") { this.$router.push({ path }); } }, showToggle(id) { if (this.openId != id) { this.openId = id; } else { this.openId = 0; } }, getMenu() { this.menuList = this.getLocalStorage().UserMenu; let path = this.$route.path.split("?")[0]; let root = 0; let temprootName = ""; //根节点名称 let tempparentName = ""; //二级节点名称 let tempcurrentName = ""; //当前名称 let itemsTemp = []; let that = this; //三级下面的子页面 switch (path) { case "/leaderChedule": //领队档期 path = "/leaderManagement"; break; case "/leaderStateDetails": //领队绩效 path = "/leaderManagement"; break; case "/HotelInfo": //酒店基本信息新增修改 path = "/HotelManagement"; break; case "/GnHotelInfo": //国内酒店 path = "/GnHotelManagement"; break; case "/HotelProductManage": //酒店房型 path = "/HotelManagement"; break; case "/HotelPrice": //酒店报价 path = "/HotelManagement"; break; case "/HotelOrder": //酒店销量看板详情 path = "/HotelSalesBoard"; break; case "/detailsInventory": //酒店总库存看板详情 path = "/HotelTotalStock"; break; case "/HotelSinglePrice": //酒店总库存看板(报价)详情 path = "/HotelTotalStock"; break; case "/HotelAccountInfo": //酒店核算详情 path = "/HotelAccounting"; break; case "/restaurantInfoManage": //餐厅新增修改 path = "/restaurantList"; break; case "/RestaurantPackage": //餐厅套餐新增修改 path = "/restaurantList"; break; case "/RestaurantPrice": //餐厅套餐报价新增修改 path = "/restaurantList"; break; case "/RestauranAccountingDetail": //餐厅内部核算详情 path = "/RestauranAccounting"; break; case "/scenicSpotInfoManage": //票劵新增修改 path = "/scenicSpotList"; break; case "/ticketManagement": //票劵门票新增修改 path = "/scenicSpotList"; break; case "/scenicSpotPackagePrice": //票劵门票报价新增修改 path = "/scenicSpotList"; break; case "/scenicSpotDetails": //票劵内部核算详情 path = "/scenicSpotAccounting"; break; case "/TicketAccountingDetails": //机票核算详情 path = "/TicketAccounting"; break; case "/TicketPlanInfo": //机票计划详情 path = "/TicketPlan"; break; case "/BusInfo": //新增修改车辆信息 path = "/busManage"; break; case "/BusAccountInfo": //车辆内部核算详情 path = "/busManage"; break; case "/MakeQuotation": //制作报价单 path = "/quoTation"; break; case "/TravelManager": //团控详情-开团 path = "/quoTation"; break; case "/ThroughSetting": //机票联运设置 path = "/TicketManager"; break; case "/QuotationPrice": //报价单 path = "/quoTation"; break; case "/DistributionTransport": //分销联运 path = "/TravelControlList"; break; case "/RegistrationList": //报名清单 path = "/TravelControlList"; break; case "/addPassenger": //报名清单 path = "/groupTourOrder"; break; case "/passengerListSale": //报名清单 path = "/groupTourOrder"; break; case "/passengerList": //旅客名单 path = "/TravelControlList"; break; case "/salesApprovalDetail": //计划审批 path = "/salesApproval"; break; case "/MyCustomerDetail": //计划审批 path = "/MyCustomer"; break; case "/saleDepartmentMap": //销售地图区域划分 path = "/saleDepartmet"; break; case "/QuotationDetails": //报价单详情 path = "/AuditDan"; break; case "/DirectQuotation": //报价单 path = "/MakeQuotation"; break; case "/VisaProductOrder": //报价单 path = "/VisaProduct"; break; case "/CombinedOrderList": //查看联运订单 path = "/TicketManager"; break; case "/groupTourOrderByTuan": //查看联运订单 path = "/groupTourOrder"; break; case "/empBankAccount": //查看联运订单 path = "/userManagement"; break; case "/BasicOpenGroup": //基础班开团 path = "/BasicTravelControlList"; break; case "/askPriceTotal": //工作汇总 询价 path = "/workTotal"; break; case "/worksalesApproval": //工作汇总 询价 path = "/workTotal"; break; case "/TeamBalancePayment": //团队收支明细 path = "/TravelControlList"; break; case "/saleReceivablesTotal": //工作汇总 询价 path = "/workTotal"; break; case "/PassengerList": //机票名单 path = "/TicketManager"; break; case "/roomReservationsDetails": //机票名单 path = "/roomReservations"; break; case "/bookDinnerStatisticsDetails": //餐厅 path = "/bookDinnerStatistics"; break; case "/OrderDetails": //国内机票历史订单详情 path = "/SettlementOrder"; break; case "/AccountPageList": //财务 下属账号页面 path = "/institutionsManagement"; break; case "/SalesFinancialDetail": //销售 path = "/groupTourOrder"; break; case "/addCapitalAllocation": //资金调拨 path = "/CapitalAllocation"; break; case "/CapitalAllocationDetail": //资金调拨 path = "/CapitalAllocation"; break; case "/addIntegralMall": //新增商品 path = "/IntegralMall"; break; case "/VoucherInquiryAdd": //新增调查 path = "/VoucherInquiry"; break; case "/LianMengManagementList": //客户联盟客户列表 path = "/LianMengManagement"; break; case "/happyMoneyDetails": // 红包结算 path = "/LianMengManagement"; break; case "/happyMoney": // 红包结算 path = "/LianMengManagement"; break; case "/OpHotelOrderDetail": // 酒店订单详情 path = "/OpHotelOrder"; break; } //找到Root this.menuList.forEach(rootItem => { rootItem.ChildMenu.forEach(secondItem => { secondItem.ChildMenu.forEach(thirdItem => { if (thirdItem.MenuUrl == path) { root = rootItem.MenuId; return false; } }); }); }); this.menuList.forEach(rootItem => { if (rootItem.MenuId == root) { temprootName = rootItem.MenuName; rootItem.ChildMenu.forEach(secondItem => { secondItem.childerns = []; let style = JSON.parse(secondItem.MenuStyle); secondItem.MenuStyleIcon = style.icon; secondItem.MenuStyleColor = style.color; secondItem.ChildMenu.forEach(thirdItem => { if (thirdItem.MenuUrl == path) { this.openId = secondItem.MenuId; tempparentName = secondItem.MenuName; tempcurrentName = thirdItem.MenuName; } secondItem.childerns.push(thirdItem); let style2 = JSON.parse(thirdItem.MenuStyle); thirdItem.MenuStyleIcon = style2.icon; thirdItem.MenuStyleColor = style2.color; }); itemsTemp.push(secondItem); }); } }); if (itemsTemp.length > 0) { this.items = itemsTemp; this.rootName = temprootName; this.parentName = tempparentName; this.currentName = tempcurrentName; } }, getMenuV2(path) { this.menuList = this.getLocalStorage().UserMenu; let root = 0; let temprootName = ""; //根节点名称 let tempparentName = ""; //二级节点名称 let tempcurrentName = ""; //当前名称 let itemsTemp = []; let that = this; //三级下面的子页面 switch (path) { case "/leaderChedule": //领队档期 path = "/leaderManagement"; break; case "/leaderStateDetails": //领队绩效 path = "/leaderManagement"; break; case "/HotelInfo": //酒店基本信息新增修改 path = "/HotelManagement"; break; case "/HotelProductManage": //酒店房型 path = "/HotelManagement"; break; case "/HotelPrice": //酒店报价 path = "/HotelManagement"; break; case "/HotelOrder": //酒店销量看板详情 path = "/HotelSalesBoard"; break; case "/detailsInventory": //酒店总库存看板详情 path = "/HotelTotalStock"; break; case "/HotelSinglePrice": //酒店总库存看板(报价)详情 path = "/HotelTotalStock"; break; case "/HotelAccountInfo": //酒店核算详情 path = "/HotelAccounting"; break; case "/restaurantInfoManage": //餐厅新增修改 path = "/restaurantList"; break; case "/RestaurantPackage": //餐厅套餐新增修改 path = "/restaurantList"; break; case "/RestaurantPrice": //餐厅套餐报价新增修改 path = "/restaurantList"; break; case "/RestauranAccountingDetail": //餐厅内部核算详情 path = "/RestauranAccounting"; break; case "/scenicSpotInfoManage": //票劵新增修改 path = "/scenicSpotList"; break; case "/ticketManagement": //票劵门票新增修改 path = "/scenicSpotList"; break; case "/scenicSpotPackagePrice": //票劵门票报价新增修改 path = "/scenicSpotList"; break; case "/scenicSpotDetails": //票劵内部核算详情 path = "/scenicSpotAccounting"; break; case "/TicketAccountingDetails": //机票核算详情 path = "/TicketAccounting"; break; case "/TicketPlanInfo": //机票计划详情 path = "/TicketPlan"; break; case "/BusInfo": //新增修改车辆信息 path = "/busManage"; break; case "/BusAccountInfo": //车辆内部核算详情 path = "/busManage"; break; case "/MakeQuotation": //制作报价单 path = "/quoTation"; break; case "/TravelManager": //团控详情-开团 path = "/quoTation"; break; case "/ThroughSetting": //机票联运设置 path = "/TicketManager"; break; case "/QuotationPrice": //报价单 path = "/quoTation"; break; case "/DistributionTransport": //分销联运 path = "/TravelControlList"; break; case "/RegistrationList": //报名清单 path = "/TravelControlList"; break; case "/addPassenger": //报名清单 path = "/groupTourOrder"; break; case "/passengerListSale": //报名清单 path = "/groupTourOrder"; break; case "/passengerList": //旅客名单 path = "/TravelControlList"; break; case "/salesApprovalDetail": //计划审批 path = "/salesApproval"; break; case "/MyCustomerDetail": //计划审批 path = "/MyCustomer"; break; case "/saleDepartmentMap": //销售地图区域划分 path = "/saleDepartmet"; break; case "/QuotationDetails": //报价单详情 path = "/AuditDan"; break; case "/DirectQuotation": //报价单 path = "/MakeQuotation"; break; case "/VisaProductOrder": //报价单 path = "/VisaProduct"; break; case "/CombinedOrderList": //查看联运订单 path = "/TicketManager"; break; case "/groupTourOrderByTuan": //查看联运订单 path = "/groupTourOrder"; break; case "/empBankAccount": //查看联运订单 path = "/userManagement"; break; case "/BasicOpenGroup": //基础班开团 path = "/BasicTravelControlList"; break; case "/askPriceTotal": //工作汇总 询价 path = "/workTotal"; break; case "/worksalesApproval": //工作汇总 询价 path = "/workTotal"; break; case "/TeamBalancePayment": //团队收支明细 path = "/TravelControlList"; break; case "/airplaneList": //包机管理 path = "/TravelControlList"; break; case "/saleReceivablesTotal": //工作汇总 询价 path = "/workTotal"; break; case "/PassengerList": //机票名单 path = "/TicketManager"; break; case "/roomReservationsDetails": //机票名单 path = "/roomReservations"; break; case "/bookDinnerStatisticsDetails": //餐厅 path = "/bookDinnerStatistics"; break; case "/OrderDetails": //国内机票历史订单详情 path = "/SettlementOrder"; break; case "/AccountPageList": //财务 下属账号页面 path = "/institutionsManagement"; break; case "/SalesFinancialDetail": //销售 path = "/groupTourOrder"; break; case "/addCapitalAllocation": //资金调拨 path = "/CapitalAllocation"; break; case "/CapitalAllocationDetail": //资金调拨 path = "/CapitalAllocation"; break; case "/addIntegralMall": //新增商品 path = "/IntegralMall"; break; case "/VoucherInquiryAdd": //新增调查 path = "/VoucherInquiry"; break; case "/LianMengManagementList": //客户联盟客户列表 path = "/LianMengManagement"; break; case "/happyMoneyDetails": // 红包结算 path = "/LianMengManagement"; break; case "/happyMoney": // 红包结算 path = "/LianMengManagement"; break; case "/OpHotelOrderDetail": // 酒店订单详情 path = "/OpHotelOrder"; break; } //找到Root this.menuList.forEach(rootItem => { rootItem.ChildMenu.forEach(secondItem => { secondItem.ChildMenu.forEach(thirdItem => { if (thirdItem.MenuUrl == path) { root = rootItem.MenuId; return false; } }); }); }); this.menuList.forEach(rootItem => { if (rootItem.MenuId == root) { temprootName = rootItem.MenuName; rootItem.ChildMenu.forEach(secondItem => { secondItem.childerns = []; let style = JSON.parse(secondItem.MenuStyle); secondItem.MenuStyleIcon = style.icon; secondItem.MenuStyleColor = style.color; secondItem.ChildMenu.forEach(thirdItem => { if (thirdItem.MenuUrl == path) { this.openId = secondItem.MenuId; tempparentName = secondItem.MenuName; tempcurrentName = thirdItem.MenuName; } secondItem.childerns.push(thirdItem); let style2 = JSON.parse(thirdItem.MenuStyle); thirdItem.MenuStyleIcon = style2.icon; thirdItem.MenuStyleColor = style2.color; }); itemsTemp.push(secondItem); }); } }); if (itemsTemp.length > 0) { this.items = itemsTemp; this.rootName = temprootName; this.parentName = tempparentName; this.currentName = tempcurrentName; } return tempcurrentName }, getTitleByRouter(name) { let obj = {} routerConfig.routes[11].children[0].children.forEach(x => { if (x.name == name) { obj.comp = x.component if (x.meta && x.meta.title) obj.title = x.meta.title else obj.title = '' return false } }) return obj }, filterRouter() { let that = this let userInfo = this.getLocalStorage(); this.$router.beforeEach((to, from, next) => { document.title = to.meta.title ? to.meta.title : '' if (to.path == "/ModifyVisaProduct") { this.reloadpage(); } if (that.openMode == 1) { let isThreeNav = false to.matched.forEach(x => { if (x.name == 'Details') { isThreeNav = true return false } }) if (isThreeNav) { if (!to.query.blank || to.query.blank != 'y') { let comp = that.getTitleByRouter(to.name) if (that.tabs.length > 0) { let tabs = that.tabs.filter(x => { let item = x if (x.name == that.currentTabName.split('_')[0] && x.path == that.currentTag.path) { if (that.type == 'd') { x.hisIndex = x.history.length } x.title = comp.title == '' ? x.title : comp.title x.path = to.fullPath x.comp = comp.comp } return item }) that.$set(that.tabs, tabs) that.type = 'd' } } else { let temp = that.mapObj(to.path, to.name) let realPath = to.fullPath.split('?')[1] let newPath = to.path + '?' realPath.split('&').forEach((x, i) => { if (x.indexOf('blank') == -1) { if (i > 0) newPath += '&' newPath += x } }) let isExsit = false let tabs = that.tabs.filter((x, i) => { if (x.path == newPath) { that.currentTabName = x.name + '_' + i isExsit = true } return x }) if (isExsit) that.$set(that.tabs, tabs) else { let obj = {} obj.path = newPath obj.title = to.query.tab ? to.query.tab : temp.title obj.name = to.name obj.comp = temp.comp obj.refer = 0 obj.history = [] obj.type = 'd' obj.hisIndex = 0 that.tabs.push(obj) that.currentTabName = obj.name + "_" + (that.tabs.length - 1) } } } next() } else if (that.openMode == 0 && to.query.blank && to.query.blank == 'y') { // let dom = document.querySelector("#blankLink") // dom.target = '_blank'; // dom.href = `http://${window.location.host}/#${to.fullPath}` // dom.click() var el = document.createElement("a"); document.body.appendChild(el); el.href = `http://${window.location.host}/#${to.fullPath}`; el.target = '_blank'; el.click(); } else { next() } }); this.$nextTick(function () { document.title = this.$route.meta.title ? this.$route.meta.title : '' }) } }, beforeDestroy() { //卸载屏蔽事件 document.onkeydown = null if (this.tabs.length > 0) window.localStorage.navTabs = JSON.stringify(this.tabs) }, created() { } }; </script>