NavMenu.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <template>
  2. <a-menu
  3. theme="dark"
  4. mode="inline"
  5. :defaultSelectedKeys="['1']">
  6. <template v-for="menu in menus">
  7. <a-menu-item :key="menu.id" :name="menu.id" v-if="!menu.children && $router.matcher.match({ name: menu.permission }).matched.length">
  8. <router-link :to="{ name: menu.name, params: { pageNo: '1' } }">
  9. <a-icon v-if="menu.meta.icon" :type="menu.meta.icon"></a-icon>
  10. <span>{{ menu.meta.title }}</span>
  11. </router-link>
  12. </a-menu-item>
  13. <a-sub-menu :key="menu.id" :name="menu.id" v-else>
  14. <span slot="title"><a-icon :type="menu.meta.icon" v-if="menu.meta.icon" /><span>{{ menu.meta.title }}</span></span>
  15. <template v-for="(submenu, index) in menu.children">
  16. <a-menu-item :key="submenu.id" :name="submenu.id">
  17. <router-link :to="{ name: submenu.name, params: { pageNo: '1' } }">
  18. <a-icon v-if="submenu.meta.icon" :type="submenu.meta.icon"></a-icon>
  19. <span>{{ submenu.meta.title }}</span>
  20. </router-link>
  21. </a-menu-item>
  22. </template>
  23. </a-sub-menu>
  24. </template>
  25. <!--
  26. <a-sub-menu key="1">
  27. <span slot="title"><a-icon type="dashboard" /><span>dashboard</span></span>
  28. <a-menu-item key="11">分析页</a-menu-item>
  29. <a-menu-item key="12">监控页</a-menu-item>
  30. <a-menu-item key="13">工作台</a-menu-item>
  31. </a-sub-menu>
  32. <a-sub-menu key="2">
  33. <span slot="title"><a-icon type="form" /><span>表单页</span></span>
  34. <a-menu-item key="21">基础表单</a-menu-item>
  35. <a-menu-item key="22">分步表单</a-menu-item>
  36. <a-menu-item key="23">高级表单</a-menu-item>
  37. </a-sub-menu>
  38. <a-sub-menu key="3">
  39. <span slot="title"><a-icon type="table" /><span>列表页</span></span>
  40. <a-menu-item key="31">查询表单</a-menu-item>
  41. <a-menu-item key="32">表单列表</a-menu-item>
  42. <a-menu-item key="33">卡片列表</a-menu-item>
  43. <a-sub-menu key="34">
  44. <span slot="title"><span>搜索列表</span></span>
  45. <a-menu-item key="341">搜索列表(文章)</a-menu-item>
  46. <a-menu-item key="342">表单列表(项目)</a-menu-item>
  47. <a-menu-item key="343">卡片列表(应用)</a-menu-item>
  48. </a-sub-menu>
  49. </a-sub-menu>
  50. <a-sub-menu key="4">
  51. <span slot="title"><a-icon type="profile" /><span>详细页</span></span>
  52. <a-menu-item key="41">基础详情页</a-menu-item>
  53. <a-menu-item key="42">高级详情页</a-menu-item>
  54. </a-sub-menu>
  55. <a-sub-menu key="5">
  56. <span slot="title"><a-icon type="check-circle-o" /><span>结果页</span></span>
  57. <a-menu-item key="51">成功</a-menu-item>
  58. <a-menu-item key="52">失败</a-menu-item>
  59. </a-sub-menu>
  60. <a-sub-menu key="6">
  61. <span slot="title"><a-icon type="warning" /><span>异常页</span></span>
  62. <a-menu-item key="61">成功</a-menu-item>
  63. <a-menu-item key="62">失败</a-menu-item>
  64. </a-sub-menu>
  65. -->
  66. </a-menu>
  67. </template>
  68. <script>
  69. import SubMenu from './SubMenu'
  70. import { asyncRouterMap } from '../router/'
  71. export default {
  72. name: "Navmenu",
  73. components: {
  74. "s-submenu": SubMenu
  75. },
  76. data() {
  77. return {
  78. menus: []
  79. }
  80. },
  81. created() {
  82. this.menus = asyncRouterMap
  83. }
  84. }
  85. </script>
  86. <style scoped>
  87. </style>