index.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. })
  24. const settingsStore = useSettingsStore()
  25. const { theme } = storeToRefs(settingsStore)
  26. </script>
  27. <template>
  28. <div
  29. class="vab-layout-column"
  30. :class="{
  31. fixed: fixedHeader,
  32. 'no-tabs-bar': !showTabs,
  33. }"
  34. >
  35. <vab-column-bar />
  36. <div
  37. class="vab-main"
  38. :class="{
  39. ['vab-main-' + theme.columnStyle]: true,
  40. 'is-collapse-main': collapse,
  41. }"
  42. >
  43. <div
  44. class="vab-layout-header"
  45. :class="{
  46. 'fixed-header': fixedHeader,
  47. }"
  48. >
  49. <vab-nav />
  50. <vab-tabs v-show="showTabs" />
  51. </div>
  52. <vab-app-main />
  53. </div>
  54. </div>
  55. </template>
  56. <style lang="scss" scoped>
  57. .vab-layout-column {
  58. .vab-main {
  59. &.is-collapse-main {
  60. &.vab-main-horizontal {
  61. margin-left: $base-left-menu-width-min * 1.3;
  62. :deep() {
  63. .fixed-header {
  64. width: calc(100% - #{$base-left-menu-width-min} * 1.3);
  65. }
  66. }
  67. }
  68. }
  69. }
  70. }
  71. </style>