vue + elementUI导航组件NavMenu + vue-router实现点击在新的选项卡打开界面

系统文件构成目录:

其中Index.vue是主页。核心源码如下:

      <!--左侧导航栏-->
      <div class="menu">
        <slider-menu></slider-menu>
      </div>
      <!--主体内容部分-->
      <div class="main">
        <router-view></router-view>
      </div>
import sliderMenu from '../components/common/sliderMenu'

sliderMenu.vue 组件核心源码:

<template>
  <div>
    <el-menu
      :default-openeds="['1', '2']"
      :default-active="onRoutes"
      collapse-transition>
      <el-submenu index="1">
        <template slot="title">
          <i class="iconfont icon-add_light"></i>
          <a>新建</a>
        </template>
        <el-menu-item index="New">
          <router-link to="New" target="_blank">出入库单</router-link>
        </el-menu-item>
        <el-menu-item index="NewLending">
          <router-link to="NewLending" target="_blank">产品借出单</router-link>
        </el-menu-item>
        <el-menu-item index="NewReturn">
          <router-link to="NewReturn" target="_blank">产品返回单</router-link>
        </el-menu-item>
        <el-menu-item index="PriceAdjustmentList">
          <router-link to="PriceAdjustmentList" target="_blank">存货调价单</router-link>
        </el-menu-item>
      </el-submenu>
      <el-submenu index="2">
        <template slot="title">
          <i class="iconfont icon-search"></i>
          <span>查询</span>
        </template>
        <el-menu-item index="InOrOutList">
          <router-link to="InOrOutList" target="_blank">出入库单</router-link>
        </el-menu-item>
        <el-menu-item index="InvoicingSummary">
          <router-link to="InvoicingSummary" target="_blank">进销存汇总表</router-link>
        </el-menu-item>
        <el-menu-item index="ProductInventory">
          <router-link to="ProductInventory" target="_blank">产品出入库记录</router-link>
        </el-menu-item>
        <el-menu-item index="CompanyAssets">
          <router-link to="CompanyAssets" target="_blank">公司资产表</router-link>
        </el-menu-item>
        <el-menu-item index="LendingTable">
          <router-link to="LendingTable" target="_blank">产品借出表</router-link>
        </el-menu-item>
        <el-menu-item index="ReturnTable">
          <router-link to="ReturnTable" target="_blank">产品返回表</router-link>
        </el-menu-item>
        <el-menu-item index="NewPriceAdjustment">
          <router-link to="NewPriceAdjustment" target="_blank">存货调价单</router-link>
        </el-menu-item>
      </el-submenu>
      <el-menu-item index="Review">
        <i class="iconfont icon-profilefill"></i>
        <router-link to="Review" target="_blank">审核出入库单</router-link>
        <!--<router-link to=''>审核出入库单</router-link>-->
      </el-menu-item>
      <el-menu-item index="ManagementMaterialBoard">
        <i class="iconfont icon-form_light"></i>
        <router-link to="ManagementMaterialBoard" target="_blank">管理材料板信息</router-link>
      </el-menu-item>
      <el-menu-item index="OperationLog">
        <i class="iconfont icon-repair"></i>
        <router-link to="OperationLog" target="_blank">查看操作日志</router-link>
      </el-menu-item>
    </el-menu>
  </div>
</template>

<script>
export default {
  name: 'sliderMenu',
  data () {
    return {}
  },
  mounted () {},
  computed: {
    onRoutes () {
      // 当前激活菜单的 index
      let index = this.$route.path.replace('/', '')
      let title = this.$route.meta.title
      // 改变浏览器title
      document.title = title
      return index
    }
  },
  methods: {}
}
</script>

<style scoped>
  /*改变router-link样式*/
  a {
    text-decoration: none;
    color: inherit;
  }
  .el-submenu .el-menu-item a {
    position: absolute;
    height: 100%;
    width: calc(100% - 50px);
    left: 0;
    padding-left: 50px;
  }
  .el-menu-item a {
    position: absolute;
    height: 100%;
    width: calc(100% - 60px);
    left: 0;
    padding-left: 60px;
  }
</style>

路由配置文件(router文件夹下index.js)源码如下:

import Vue from 'vue'
import Router from 'vue-router'
import Login from '../components/Login'
import Index from '../components/Index'

Vue.use(Router)

export default new Router({
  // mode: 'history',
  routes: [
    // 定义的初始路由路径
    {
      path: '/',
      name: 'Login',
      component: Login,
      meta: {title: '登录'}
    },
    {
      path: '/Index',
      name: 'Index',
      component: Index,
      meta: {title: '主页'},
      children: [
        {
          path: '/New',
          component: resolve => require(['../components/new/New.vue'], resolve),
          meta: {title: '新建__出入库单'}
        },
        {
          path: '/NewLending',
          component: resolve => require(['../components/new/NewLending.vue'], resolve),
          meta: {title: '新建__产品借出单'}
        },
        {
          path: '/NewReturn',
          component: resolve => require(['../components/new/NewReturn.vue'], resolve),
          meta: {title: '新建__产品返回单'}
        },
        {
          path: '/PriceAdjustmentList',
          component: resolve => require(['../components/new/NewPriceAdjustment.vue'], resolve),
          meta: {title: '新建__存货调价单'}
        },
        {
          path: '/InOrOutList',
          component: resolve => require(['../components/open/InOrOutList.vue'], resolve),
          meta: {title: '查询__出入库单'}
        },
        {
          path: '/InvoicingSummary',
          component: resolve => require(['../components/open/InvoicingSummary.vue'], resolve),
          meta: {title: '查询__进销存汇总表'}
        },
        {
          path: '/ProductInventory',
          component: resolve => require(['../components/open/ProductInventory.vue'], resolve),
          meta: {title: '查询__产品出入库记录'}
        },
        {
          path: '/CompanyAssets',
          component: resolve => require(['../components/open/CompanyAssets.vue'], resolve),
          meta: {title: '查询__公司资产表'}
        },
        {
          path: '/LendingTable',
          component: resolve => require(['../components/open/LendingTable.vue'], resolve),
          meta: {title: '查询__产品借出表'}
        },
        {
          path: '/ReturnTable',
          component: resolve => require(['../components/open/ReturnTable.vue'], resolve),
          meta: {title: '查询__产品返回表'}
        },
        {
          path: '/NewPriceAdjustment',
          component: resolve => require(['../components/open/PriceAdjustmentList.vue'], resolve),
          meta: {title: '查询__存货调价单'}
        },
        {
          path: '/Review',
          component: resolve => require(['../components/Review.vue'], resolve),
          meta: {title: '审核出入库单'}
        },
        {
          path: '/ManagementMaterialBoard',
          component: resolve => require(['../components/ManagementMaterialBoard.vue'], resolve),
          meta: {title: '管理材料板信息'}
        },
        {
          path: '/OperationLog',
          component: resolve => require(['../components/OperationLog.vue'], resolve),
          meta: {title: '查看操作日志'}
        }
      ]
    }
  ]
})

猜你喜欢

转载自blog.csdn.net/u011295864/article/details/86488985