App.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <script lang="ts" setup>
  2. import { isDark } from '@/utils/is'
  3. import { useAppStore } from '@/store/modules/app'
  4. import { useDesign } from '@/hooks/web/useDesign'
  5. import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
  6. import routerSearch from '@/components/RouterSearch/index.vue'
  7. defineOptions({ name: 'APP' })
  8. const { getPrefixCls } = useDesign()
  9. const prefixCls = getPrefixCls('app')
  10. const appStore = useAppStore()
  11. const currentSize = computed(() => appStore.getCurrentSize)
  12. const greyMode = computed(() => appStore.getGreyMode)
  13. const { wsCache } = useCache()
  14. // 根据浏览器当前主题设置系统主题色
  15. const setDefaultTheme = () => {
  16. let isDarkTheme = wsCache.get(CACHE_KEY.IS_DARK)
  17. if (isDarkTheme === null) {
  18. isDarkTheme = isDark()
  19. }
  20. appStore.setIsDark(isDarkTheme)
  21. }
  22. setDefaultTheme()
  23. </script>
  24. <template>
  25. <ConfigGlobal :size="currentSize">
  26. <RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" />
  27. <routerSearch />
  28. </ConfigGlobal>
  29. </template>
  30. <style lang="scss">
  31. $prefix-cls: #{$namespace}-app;
  32. .size {
  33. width: 100%;
  34. height: 100%;
  35. }
  36. html,
  37. body {
  38. @extend .size;
  39. padding: 0 !important;
  40. margin: 0;
  41. overflow: hidden;
  42. --left-menu-bg-active-color:#dcb86b;
  43. --left-menu-text-active-color:#fff;
  44. --left-menu-bg-color:#333;
  45. --left-menu-bg-light-color:#333;
  46. --left-menu-text-color:#fff;
  47. // --top-header-bg-color:#f1ead8;
  48. --logo-title-text-color:#dcb86b;
  49. --el-tag-border-color:rgba(220,184,107,0.5);
  50. --el-menu-base-level-padding:6px;
  51. --el-button-hover-bg-color:#dcb86b !important;
  52. --el-button-hover-border-color:#dcb86b !important;
  53. --el-button-active-color:#cfaa5a !important;
  54. --el-button-hover-bg-color:#faf6ef !important;
  55. --el-tag-border-color:#dcb86b !important;
  56. --el-color-primary-light-8:#faf6ef !important;
  57. --el-color-primary-light-9:#faf6ef !important;
  58. --el-button-hover-link-text-color:#cfaa5a !important;
  59. --el-color-primary-light-5:#dcb86b !important;
  60. --el-color-primary-light-7:#dcb86b !important;
  61. --el-color-primary-light-3:#f0d293 !important;
  62. --el-color-primary-dark-2:#f0d293 !important;
  63. --el-color-primary-light-8:#f0dcb0 !important;
  64. // --left-menu-bg-active-color:RGBA(195,127,64,0.1);
  65. // --left-menu-text-active-color:#dcb86b;
  66. // --left-menu-bg-color:#333;
  67. // --left-menu-bg-light-color:#464646;
  68. // --left-menu-text-color:#fff;
  69. // --top-header-bg-color:#f1ead8;
  70. // --app-content-bg-color:#fdf5e1;
  71. #app {
  72. @extend .size;
  73. }
  74. }
  75. .#{$prefix-cls}-grey-mode {
  76. filter: grayscale(100%);
  77. }
  78. .bg-\[var\(--app-content-bg-color\)\]{
  79. background-color: unset;
  80. // background-image: ;
  81. }
  82. .w-\[calc\(var\(--logo-height\)-10px\)\]{
  83. width:calc(var(--logo-height) - -300px);
  84. // color: #333;
  85. }
  86. :root{
  87. --logo-height:70px;
  88. }
  89. .v-menu[data-v-c3357e93] .el-menu .el-menu-item.is-active{
  90. color:#dcb86b !important;
  91. }
  92. .el-dropdown{
  93. // border: none !important;
  94. // margin: 0 !important;
  95. }
  96. .el-tag, .el-tag.el-tag--primary{
  97. // --el-tag-border-color:rgba(220,184,107,1) !important;
  98. // --el-tag-bg-color:rgba(220,184,107,0.1) !important;
  99. }
  100. // --left-menu-bg-active-color{
  101. // RGBA(195,127,64,0.1)
  102. // }
  103. .v-menu[data-v-c3357e93]{
  104. // margin: 10px;
  105. padding: 15px;
  106. }
  107. @media (min-width: 100px) {
  108. .v-menu[data-v-c3357e93]{
  109. padding: 0;
  110. }
  111. }
  112. @media (min-width: 768px) {
  113. .v-menu[data-v-c3357e93]{
  114. padding: 15px;
  115. }
  116. }
  117. .el-menu-item{
  118. // padding: 15px !important;
  119. border-radius: 15px !important;
  120. }
  121. #v-tool-header{
  122. padding: 10px 15px;
  123. // background-color: #fff;
  124. }
  125. .el-scrollbar__view{}
  126. // .el-scrollbar__wrap--hidden-default{
  127. // background-color: #dcb86b !important;
  128. // }
  129. .mt-\[calc\(var\(--top-tool-height\)\+var\(--tags-view-height\)\)\]{
  130. margin-top: 70px;
  131. }
  132. .v-tags-view__item[data-v-a7799cdb]{
  133. border-radius: 4px !important;
  134. margin-left: 10px !important;
  135. top: 0 !important;
  136. height: calc(100% - 0px) !important;
  137. }
  138. .v-tags-view__tool[data-v-a7799cdb]::before{
  139. border-left: none !important;
  140. }
  141. .el-button:hover{
  142. // background-color:#dcb86b;
  143. // border-color: #dcb86b !important;
  144. }
  145. </style>