index.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <script setup>
  2. import { ref } from "vue";
  3. import {
  4. Menu as IconMenu,
  5. House,
  6. Monitor,
  7. Bell,
  8. Location,
  9. Setting,
  10. } from "@element-plus/icons-vue";
  11. import HomeIndex from "./home/home-index.vue";
  12. //资产管理
  13. import znzdgl from "./zcgl/znzdgl.vue";
  14. import qxda from "./zcgl/qxda.vue";
  15. import jgzcgl from "./zcgl/jgzcgl.vue";
  16. //联动指挥
  17. import jgkl from "./ldzh/jgkl.vue";
  18. import bjgl from "./ldzh/bjgl.vue";
  19. import angz from "./ldzh/ajgz.vue";
  20. import sgpb from "./ldzh/sgpb.vue";
  21. //案件办理
  22. import ajlzgl from "./ajbl/ajlzgl.vue";
  23. import gdczgl from "./ajbl/gdczgl.vue";
  24. import jbgd from "./ajbl/jbgd.vue";
  25. import bjgd from "./ajbl/bjgd.vue";
  26. //终端运维
  27. import ywrwgl from "./zdyw/ywrwgl.vue";
  28. import gzgl from "./zdyw/gzgl.vue";
  29. import sjtj from "./zdyw/sjtj.vue";
  30. //数据分析
  31. import tjfx from "./sjfx/tjfx.vue";
  32. const componentsMap = {
  33. HomeIndex,
  34. znzdgl,
  35. qxda,
  36. jgzcgl,
  37. jgkl,
  38. bjgl,
  39. angz,
  40. sgpb,
  41. ajlzgl,
  42. gdczgl,
  43. jbgd,
  44. bjgd,
  45. ywrwgl,
  46. gzgl,
  47. sjtj,
  48. tjfx,
  49. };
  50. const isCollapse = ref(false);
  51. const currentComponent = ref(HomeIndex);
  52. const componentMapping = {
  53. 1: "HomeIndex",
  54. "2-1": "znzdgl",
  55. "2-2": "qxda",
  56. "2-3": "jgzcgl",
  57. "3-1": "jgkl",
  58. "3-2": "bjgl",
  59. "3-3": "angz",
  60. "3-4": "sgpb",
  61. "4-1": "ajlzgl",
  62. "4-2": "gdczgl",
  63. "4-3": "jbgd",
  64. "4-4": "bjgd",
  65. "5-1": "ywrwgl",
  66. "5-2": "gzgl",
  67. "5-3": "sjtj",
  68. "6-1": "tjfx",
  69. };
  70. const handleSelect = (key) => {
  71. const componentName = componentMapping[key];
  72. if (componentName) {
  73. currentComponent.value = componentsMap[componentName];
  74. }
  75. };
  76. </script>
  77. <template>
  78. <div class="flex h-screen bg-gray-100">
  79. <!-- Sidebar -->
  80. <div
  81. class="bg-dark transition-all duration-300 text-white"
  82. :class="isCollapse ? 'w-16' : 'w-64'"
  83. >
  84. <div class="p-4 flex items-center justify-between border-b border-gray-700">
  85. <h1 v-if="!isCollapse" class="text-xl font-bold">智能井盖管理</h1>
  86. <el-button type="text" @click="isCollapse = !isCollapse" class="text-white">
  87. <el-icon>
  88. <IconMenu />
  89. </el-icon>
  90. </el-button>
  91. </div>
  92. <el-menu
  93. default-active="0"
  94. class="border-none"
  95. :collapse="isCollapse"
  96. background-color="#1f2937"
  97. text-color="#fff"
  98. active-text-color="#409EFF"
  99. @select="handleSelect"
  100. >
  101. <el-menu-item index="1">
  102. <el-icon>
  103. <location />
  104. </el-icon>
  105. <template #title>首页</template>
  106. </el-menu-item>
  107. <!-- <el-sub-menu index="2">
  108. <template #title>
  109. <el-icon>
  110. <location />
  111. </el-icon>
  112. <span>资产管理</span>
  113. </template>
  114. <el-menu-item index="2-1">智能终端管理</el-menu-item>
  115. <el-menu-item index="2-2">全息档案</el-menu-item>
  116. <el-menu-item index="2-3">井盖资产管理</el-menu-item>
  117. </el-sub-menu> -->
  118. <el-sub-menu index="3">
  119. <template #title
  120. ><el-icon>
  121. <location />
  122. </el-icon>
  123. <span>联动指挥</span>
  124. </template>
  125. <el-menu-item index="3-1">井盖概览</el-menu-item>
  126. <el-menu-item index="3-2">报警管理</el-menu-item>
  127. <el-menu-item index="3-3">案件跟踪</el-menu-item>
  128. <el-menu-item index="3-4">施工屏蔽</el-menu-item>
  129. </el-sub-menu>
  130. <!-- <el-sub-menu index="4">
  131. <template #title
  132. ><el-icon>
  133. <location />
  134. </el-icon>
  135. <span>案件办理</span>
  136. </template>
  137. <el-menu-item index="4-1">案件流转管理</el-menu-item>
  138. <el-menu-item index="4-2">工单处置管理</el-menu-item>
  139. <el-menu-item index="4-3">经办工单</el-menu-item>
  140. <el-menu-item index="4-4">办结工单</el-menu-item>
  141. </el-sub-menu>
  142. <el-sub-menu index="5">
  143. <template #title
  144. ><el-icon>
  145. <location />
  146. </el-icon>
  147. <span>终端运维</span>
  148. </template>
  149. <el-menu-item index="5-1">运维任务管理</el-menu-item>
  150. <el-menu-item index="5-2">故障管理</el-menu-item>
  151. <el-menu-item index="5-3">数据统计</el-menu-item>
  152. </el-sub-menu>
  153. <el-sub-menu index="6">
  154. <template #title
  155. ><el-icon>
  156. <location />
  157. </el-icon>
  158. <span>数据分析</span>
  159. </template>
  160. <el-menu-item index="6-1">统计分析</el-menu-item>
  161. </el-sub-menu> -->
  162. </el-menu>
  163. </div>
  164. <!-- Main Content -->
  165. <div class="flex-1 overflow-auto">
  166. <div class="">
  167. <component :is="currentComponent"></component>
  168. </div>
  169. </div>
  170. </div>
  171. </template>