<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&&currentTag.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>