index.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <el-row :gutter="12" style="padding: 12px; row-gap: 12px;">
  3. <el-col :xs="24" :sm="10" :md="8" :lg="6" :xl="5">
  4. <userInfo />
  5. </el-col>
  6. <el-col :xs="24" :sm="24" :md="16" :lg="10" :xl="10">
  7. <custom-panel :title="'访客趋势图'">
  8. <visitor-trend />
  9. </custom-panel>
  10. </el-col>
  11. <el-col :xs="24" :sm="24" :md="24" :lg="8" :xl="9">
  12. <custom-panel :title="'引用域'">
  13. <traffic-sources />
  14. </custom-panel>
  15. </el-col>
  16. <el-col :xs="24" :sm="24" :md="24" :lg="10" :xl="10">
  17. <custom-panel :title="'访客地图'">
  18. <visitor-overview />
  19. </custom-panel>
  20. </el-col>
  21. <el-col :xs="24" :sm="24" :md="10" :lg="6" :xl="6">
  22. <custom-panel :title="'访客概览'">
  23. <visitor-overview />
  24. </custom-panel>
  25. </el-col>
  26. <el-col :xs="24" :sm="24" :md="14" :lg="8" :xl="8">
  27. <custom-panel :title="'关键词频率'">
  28. <keyword-frequency />
  29. </custom-panel>
  30. </el-col>
  31. </el-row>
  32. </template>
  33. <script setup lang="ts" name="home">
  34. import { defineAsyncComponent,ref } from 'vue';
  35. const customPanel = defineAsyncComponent(() => import('./custom-panel.vue'));
  36. const userInfo = defineAsyncComponent(() => import('./user-info.vue'));
  37. const visitorTrend = defineAsyncComponent(() => import('./visitor-trend.vue'));
  38. const trafficSources = defineAsyncComponent(() => import('./traffic-sources.vue'));
  39. const VisitorOverview = defineAsyncComponent(() => import('./visitor-overview.vue'));
  40. const keywordFrequency = defineAsyncComponent(() => import('./echarts/keyword-frequency.vue'));
  41. </script>