index.vue 3.6 KB

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