You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.vue 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <!-- :sources="[bgVideo]" -->
  3. <video-bg :sources="[]">
  4. <div class="as-layout-horizontal" style="width: 100%; height: 100%;opacity: 0.9;">
  5. <!-- 此处先划出布局形式(按左右布局划分,左边菜单,右边内容) -->
  6. <!-- 菜单部分 -->
  7. <div class="bg-theme" style="height: 100%;">
  8. <!-- 菜单头部部分 -->
  9. <div class="as-gravity-center-start" style="height: 70px;">
  10. <img rel="icon" src="/logo2.png" style="width: 60px;height: 60px;" />
  11. <!-- D-UI框架模板 -->
  12. <span class="as-bold" style="font-size:18px;color: #FFFFFF" v-show="menuStart.menuIsExpansion">黔通智联</span>
  13. </div>
  14. <!-- 菜单主体部分 -->
  15. <div style="height: 100%;background-color: #FFFFFF;">
  16. <el-scrollbar height="100%">
  17. <el-menu :default-active="menuIndex.menuIndex" width="280" mode="vertical" :router="false" @select="select"
  18. :collapse="!menuStart.menuIsExpansion" class="el-menu-vertical-demo">
  19. <SidebarItem :list="list" />
  20. </el-menu>
  21. </el-scrollbar>
  22. </div>
  23. </div>
  24. <div class="as-weight as-layout-vertical">
  25. <!-- 头部选项 -->
  26. <div class="bg-theme" style="padding: 0px 10px 0px 10px; height: 70px;">
  27. <Head style="height: 70px;"></Head>
  28. </div>
  29. <el-scrollbar>
  30. <div class="as-layout-vertical">
  31. <!-- 头部 height: 8%;-->
  32. <div style=" background-color: #ffffff; padding: 10px 0px 10px 0px">
  33. <!-- 选项卡 -->
  34. <TabContainer>
  35. </TabContainer>
  36. <!-- 主体内容页面 -->
  37. <router-view name="key"></router-view>
  38. <!-- 路由缓存 https://blog.csdn.net/kDevelop/article/details/122036896 -->
  39. <!-- <router-view name="key" v-slot="{ Component }">
  40. <keep-alive style="height:100vh">
  41. <component :is="Component" />
  42. </keep-alive>
  43. </router-view> -->
  44. </div>
  45. </div>
  46. </el-scrollbar>
  47. </div>
  48. </div>
  49. </video-bg>
  50. </template>
  51. <script setup lang="ts">
  52. import SidebarItem from './components/SidebarItem.vue' //选项菜单
  53. import Head from './components/Head.vue' //选项头部
  54. import TabContainer from './components/TabControl.vue' //Tab选项
  55. import VideoBg from '@/components/VideoBackround/VideoBackground.vue' //视频背景组件
  56. import BgTwo from '@/assets/video/homeBg.mp4' //视频资源
  57. import $store from "@/store/index" // 引入vuex
  58. import $storeTab from '@/store/tabValue' //引入tab vuex
  59. import {
  60. list
  61. } from '@/data/menuData.ts'
  62. import {
  63. ref,
  64. reactive,
  65. onMounted
  66. } from 'vue'
  67. import {
  68. useRouter
  69. } from 'vue-router'
  70. const bgVideo = BgTwo
  71. const router = useRouter()
  72. //默认菜单为打开状态
  73. let menuStart = ref($store.state.data)
  74. let menuIndex = ref($storeTab.state.editableTabsValue)
  75. //处理刷新页面重置问题
  76. onMounted(() => {
  77. const newTab = sessionStorage.getItem('newTab')
  78. if (newTab) {
  79. let dataTabs = JSON.parse(newTab)
  80. dataTabs.name = '1'
  81. let value = {
  82. type: 1,
  83. data: dataTabs
  84. }
  85. $storeTab.dispatch('addTab', value)
  86. $storeTab.dispatch('updateETV', dataTabs.name)
  87. } else {
  88. router.replace({
  89. name: 'home'
  90. })
  91. }
  92. sessionStorage.removeItem('newTab')
  93. })
  94. //菜单选择监听(添加选项卡成功则添加,有就进行跳转)
  95. //data(菜单名称,菜单路径)
  96. function select(data) { //这里只负责tab,不负责跳转
  97. let value = {
  98. type: 2,
  99. data: data
  100. }
  101. $storeTab.dispatch('addTab', value)
  102. }
  103. </script>
  104. <style lang="scss" scoped>
  105. .el-menu-vertical-demo:not(.el-menu--collapse) {
  106. width: 200px;
  107. min-height: 400px;
  108. }
  109. .bg-theme {
  110. background-color: $test-color;
  111. }
  112. </style>