index.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <!-- 纵向布局 -->
  2. <script lang="ts" setup>
  3. import { useSettingsStore } from '@/store/modules/settings'
  4. defineProps({
  5. collapse: {
  6. type: Boolean,
  7. default() {
  8. return false
  9. },
  10. },
  11. fixedHeader: {
  12. type: Boolean,
  13. default() {
  14. return true
  15. },
  16. },
  17. showTabs: {
  18. type: Boolean,
  19. default() {
  20. return true
  21. },
  22. },
  23. device: {
  24. type: String,
  25. default() {
  26. return 'desktop'
  27. },
  28. },
  29. })
  30. const settingsStore = useSettingsStore()
  31. const { foldSideBar } = settingsStore
  32. </script>
  33. <template>
  34. <div
  35. class="vab-layout-vertical"
  36. :class="{
  37. fixed: fixedHeader,
  38. 'no-tabs-bar': !showTabs,
  39. }"
  40. >
  41. <vab-side-bar />
  42. <div
  43. v-if="device === 'mobile' && !collapse"
  44. class="v-modal"
  45. @click="foldSideBar"
  46. />
  47. <div
  48. class="vab-main"
  49. :class="{
  50. 'is-collapse-main': collapse,
  51. }"
  52. >
  53. <div
  54. class="vab-layout-header"
  55. :class="{
  56. 'fixed-header': fixedHeader,
  57. }"
  58. >
  59. <vab-nav />
  60. <vab-tabs v-show="showTabs" />
  61. </div>
  62. <vab-app-main />
  63. </div>
  64. </div>
  65. </template>