index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <script lang="ts" setup>
  2. import { onMounted, ref, Ref } from 'vue';
  3. import { useRoute } from 'vue-router';
  4. import AdGroups from './adGroups/index.vue';
  5. import Placement from './placement/index.vue';
  6. import Budget from './budget/index.vue';
  7. import Automation from './automation/index.vue';
  8. import { getEnumLabel } from '/@/views/adManage/utils/tools.js';
  9. import { dynBidStrategyEnum } from '/@/views/adManage/utils/enum.js';
  10. import { useShopInfo } from '/@/stores/shopInfo';
  11. // import { usePublicData } from '/@/stores/publicData'
  12. import { storeToRefs } from 'pinia';
  13. import { GetObj } from './api';
  14. const shopInfo = useShopInfo();
  15. const { profile } = storeToRefs(shopInfo);
  16. const route = useRoute();
  17. const campaignInfo: Ref<SpCampaign> = ref({});
  18. const tabActiveName = ref('adGroup');
  19. const campaignId = ref(route.query.campaignId);
  20. onMounted(async () => {
  21. const resp = await GetObj(route.query.campaignId);
  22. campaignInfo.value = resp.data;
  23. });
  24. </script>
  25. <template>
  26. <div class="asj-container">
  27. <div class="asj-detail-header">
  28. <span style="font-size: x-large; font-weight: bold; color: #0f1111;margin: 5px;">
  29. <span> {{ campaignInfo.campaignName }}</span>
  30. </span>
  31. <div class="asj-detail-info">
  32. <div>
  33. <span class="label">状态:</span>
  34. <span class="value">{{ campaignInfo.state }} ({{ campaignInfo.servingStatus }})</span>
  35. </div>
  36. <div>
  37. <span class="label">预算:</span>
  38. <span class="value">{{ profile.currency_symbol + campaignInfo.budget }} | {{ campaignInfo.budgetType }}</span>
  39. </div>
  40. <div>
  41. <span class="label">投放类型:</span>
  42. <span class="value">{{ campaignInfo.targetingType }}</span>
  43. </div>
  44. <div>
  45. <span class="label">投放日期:</span>
  46. <span class="value">{{ campaignInfo.startDate }} ~ {{ campaignInfo.endDate ?? '无结束日期' }}</span>
  47. </div>
  48. <div>
  49. <span class="label">广告组合:</span>
  50. <span class="value">{{ campaignInfo?.portfolioName }}</span>
  51. </div>
  52. <div>
  53. <span class="label">竞价策略:</span>
  54. <span class="value">{{ getEnumLabel(dynBidStrategyEnum, campaignInfo.dynBidStrategy) }}</span>
  55. </div>
  56. </div>
  57. </div>
  58. <el-tabs v-model="tabActiveName" class="asj-detail-tabs" type="border-card">
  59. <el-tab-pane label="广告组" name="adGroup">
  60. <AdGroups v-if="tabActiveName==='adGroup'" :campaignId="campaignId"></AdGroups>
  61. </el-tab-pane>
  62. <el-tab-pane label="预算" name="budget">
  63. <Budget v-if="tabActiveName==='budget'" :campaignId="campaignId"></Budget>
  64. </el-tab-pane>
  65. <el-tab-pane label="自动化" name="automation">
  66. <Automation v-if="tabActiveName==='automation'" :campaignId="campaignId"
  67. :profileId="profile.profile_id"></Automation>
  68. </el-tab-pane>
  69. <el-tab-pane label="广告位" name="placement">
  70. <Placement v-if="tabActiveName==='placement'" :campaignId="campaignId" />
  71. </el-tab-pane>
  72. <!--<el-tab-pane label="否定投放" name="negative">-->
  73. <!-- 否定投放-->
  74. <!--</el-tab-pane>-->
  75. <!-- <el-tab-pane label="操作日志" :lazy="true"></el-tab-pane> -->
  76. </el-tabs>
  77. </div>
  78. </template>
  79. <style>
  80. /* .el-tabs--card {
  81. height: calc(100vh - 80px);
  82. }
  83. .el-tab-pane {
  84. height: calc(100vh - 80px);
  85. overflow-y: auto;
  86. } */
  87. </style>