index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template>
  2. <div class="outer-container">
  3. <TopParentAsin></TopParentAsin>
  4. <div class="filters">
  5. <DateRangePicker v-model="dateRange"></DateRangePicker>
  6. <div v-show="activeName == 'trendOverview'">
  7. <el-select v-model="filter1" placeholder="Select" style="width: 240px; margin-right: 8px">
  8. <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
  9. </el-select>
  10. <el-select v-model="filter2" placeholder="Select" style="width: 240px">
  11. <el-option v-for="item in options2" :key="item.value" :label="item.label" :value="item.value" />
  12. </el-select>
  13. </div>
  14. </div>
  15. <div>
  16. <el-tabs v-model="activeName" type="border-card" class="chart-tabs">
  17. <!-- <DateRangePicker v-model="dateRange" style="position: absolute; right: 0px; top: -10px;"></DateRangePicker> -->
  18. <el-tab-pane label="趋势总览" name="trendOverview">
  19. <TrendOverview @updateList="handleUpdate"></TrendOverview>
  20. <DataTable></DataTable>
  21. </el-tab-pane>
  22. <el-tab-pane label="广告优化" name="adOptimization">广告优化</el-tab-pane>
  23. <el-tab-pane label="销售概览" name="salesOverview" lazy>
  24. <SalesOverview></SalesOverview>
  25. </el-tab-pane>
  26. <el-tab-pane label="竞品推荐" name="cpRecommendations">
  27. <CpRecommendations></CpRecommendations>
  28. </el-tab-pane>
  29. </el-tabs>
  30. </div>
  31. </div>
  32. </template>
  33. <script setup lang="ts">
  34. import { storeToRefs } from 'pinia'
  35. import { provide, ref } from 'vue'
  36. import DataTable from './components/DataTable/index.vue'
  37. import TopParentAsin from './components/TopParentAsin/index.vue'
  38. import TrendOverview from './components/TrendOverview/index.vue'
  39. import SalesOverview from './components/SalesOverview/index.vue'
  40. import CpRecommendations from './components/CpRecommendations/index.vue'
  41. import DateRangePicker from '/@/components/DateRangePicker/index.vue'
  42. import { usePublicData } from '/@/stores/publicData'
  43. import { useShopInfo } from '/@/stores/shopInfo'
  44. // 店铺信息
  45. const shopInfo = useShopInfo()
  46. const { profile } = storeToRefs(shopInfo)
  47. // 公共数据
  48. const publicData = usePublicData()
  49. const { dateRange } = storeToRefs(publicData)
  50. provide('dateRange', dateRange)
  51. provide('profile', profile)
  52. const activeName = ref('trendOverview')
  53. const filter1 = ref('')
  54. const options1 = [
  55. {
  56. value: 'Option1',
  57. label: 'Option1',
  58. },
  59. {
  60. value: 'Option2',
  61. label: 'Option2',
  62. },
  63. ]
  64. const filter2 = ref('')
  65. const options2 = [
  66. {
  67. value: 'Option1',
  68. label: 'Option1',
  69. },
  70. {
  71. value: 'Option2',
  72. label: 'Option2',
  73. },
  74. ]
  75. const updatedData = ref([])
  76. provide('tableData', updatedData)
  77. function handleUpdate(value) {
  78. updatedData.value = value
  79. }
  80. </script>
  81. <style scoped>
  82. .outer-container {
  83. padding: 5px 10px 0 10px;
  84. }
  85. .filters {
  86. display: flex;
  87. gap: 8px;
  88. margin-top: 5px;
  89. }
  90. </style>