index.vue 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. <el-tab-pane label="趋势总览" name="trendOverview">
  18. <TrendOverview @updateList="handleUpdate"></TrendOverview>
  19. <DataTable></DataTable>
  20. </el-tab-pane>
  21. <el-tab-pane label="广告优化" name="adOptimization">广告优化</el-tab-pane>
  22. <el-tab-pane label="销售概览" name="salesOverview" lazy>
  23. <SalesOverview></SalesOverview>
  24. </el-tab-pane>
  25. <el-tab-pane label="竞品推荐" name="cpRecommendations">竞品推荐</el-tab-pane>
  26. </el-tabs>
  27. </div>
  28. </div>
  29. </template>
  30. <script setup lang="ts">
  31. import { storeToRefs } from 'pinia'
  32. import { provide, ref } from 'vue'
  33. import DataTable from './components/DataTable/index.vue'
  34. import TopParentAsin from './components/TopParentAsin/index.vue'
  35. import TrendOverview from './components/TrendOverview/index.vue'
  36. import SalesOverview from './components/SalesOverview/index.vue'
  37. import DateRangePicker from '/@/components/DateRangePicker/index.vue'
  38. import { usePublicData } from '/@/stores/publicData'
  39. import { useShopInfo } from '/@/stores/shopInfo'
  40. // 店铺信息
  41. const shopInfo = useShopInfo()
  42. const { profile } = storeToRefs(shopInfo)
  43. // 公共数据
  44. const publicData = usePublicData()
  45. const { dateRange } = storeToRefs(publicData)
  46. provide('dateRange', dateRange)
  47. provide('profile', profile)
  48. const activeName = ref('trendOverview')
  49. const filter1 = ref('')
  50. const options1 = [
  51. {
  52. value: 'Option1',
  53. label: 'Option1',
  54. },
  55. {
  56. value: 'Option2',
  57. label: 'Option2',
  58. },
  59. ]
  60. const filter2 = ref('')
  61. const options2 = [
  62. {
  63. value: 'Option1',
  64. label: 'Option1',
  65. },
  66. {
  67. value: 'Option2',
  68. label: 'Option2',
  69. },
  70. ]
  71. const updatedData = ref([])
  72. provide('tableData', updatedData)
  73. function handleUpdate(value) {
  74. updatedData.value = value
  75. }
  76. </script>
  77. <style scoped>
  78. .outer-container {
  79. padding: 5px 10px 0 10px;
  80. }
  81. .filters {
  82. display: flex;
  83. gap: 8px;
  84. margin-top: 5px;
  85. }
  86. </style>