vent-Green.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <div class="company-home">
  3. <!-- 如果是有 deviceType、type 等 query,认为是详情页,不需要展示普通模块,只需要模型 -->
  4. <template v-if="!route.query.deviceType">
  5. <div v-if="!route.query.embed" class="top-bg">
  6. <greenNav :Title="mainTitle" :activeIndex="activeIndex" @menuToggle="menuToggle" />
  7. </div>
  8. <div class="main-container">
  9. <component :is="currentComponent" />
  10. </div>
  11. </template>
  12. </div>
  13. </template>
  14. <script lang="ts" setup>
  15. import { onMounted, onUnmounted, ref } from 'vue';
  16. import { useInitPage } from '../hooks/useInit';
  17. import fireGreen from './fire-green.vue';
  18. import dustGreen from './dust-green.vue';
  19. import fusionWarnGreen from './fusion-warn-green.vue'
  20. import commonGreen from './common-green.vue';
  21. import greenNav from './components/green-nav.vue';
  22. import { useRoute } from 'vue-router';
  23. import { useGlobSetting } from '/@/hooks/setting';
  24. //当前激活menu索引
  25. let activeIndex = ref(0);
  26. //当前加载menu组件
  27. let currentComponent = ref<any>(commonGreen);
  28. const { title = '智能通风管控系统' } = useGlobSetting();
  29. const route = useRoute();
  30. const { mainTitle } = useInitPage(title);
  31. //menu切换,界面跳转
  32. function menuToggle(item, index) {
  33. activeIndex.value = index;
  34. switch (item.name) {
  35. case '灾害预警':
  36. currentComponent.value = commonGreen;
  37. break;
  38. case '火灾监控':
  39. currentComponent.value = fireGreen;
  40. break;
  41. case '粉尘监控':
  42. currentComponent.value = dustGreen;
  43. break;
  44. case '多灾融合预警':
  45. currentComponent.value = fusionWarnGreen;
  46. break;
  47. }
  48. }
  49. onMounted(() => { });
  50. onUnmounted(() => { });
  51. </script>
  52. <style lang="less" scoped>
  53. @import '/@/design/theme.less';
  54. @font-face {
  55. font-family: 'douyuFont';
  56. src: url('/@/assets/font/douyuFont.otf');
  57. }
  58. @{theme-deepblue} {
  59. .company-home {
  60. --image-modal-top: url('/@/assets/images/themify/deepblue/vent/home/modal-top.png');
  61. }
  62. }
  63. .company-home {
  64. --image-modal-top: url('/@/assets/images/vent/home/modal-top.png');
  65. --image-monitor-realtime: url('/@/assets/images/company/monitor-realtime.png');
  66. --image-monitor-doc: url('/@/assets/images/company/monitor-doc.png');
  67. --image-monitor-goto: url('/@/assets/images/company/monitor-goto.png');
  68. width: 100%;
  69. // height: calc(100% - 52px);
  70. height: 100%;
  71. color: @white;
  72. position: relative;
  73. background: #181b24;
  74. .top-bg {
  75. width: 100%;
  76. height: 96px;
  77. // background: var(--image-modal-top) no-repeat center;
  78. position: absolute;
  79. z-index: 1;
  80. }
  81. .main-container {
  82. position: absolute;
  83. top: 96px;
  84. width: calc(100% - 30px);
  85. height: calc(100% - 96px);
  86. margin: 0px 15px;
  87. box-sizing: border-box;
  88. }
  89. }
  90. :deep(.loading-box) {
  91. position: unset;
  92. }
  93. </style>