index.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. <span style="color: rgb(177, 177, 177)">状态:</span> <el-button type="success" round plain size="small" style="margin-top: -3px">{{ dynStatusEnum[campaignInfo.state] }}</el-button><!--({{ campaignInfo.servingStatus }})-->
  9. <span class="head-span">预算:</span> <span>{{ profile.currency_symbol + campaignInfo.budget }} | {{ campaignInfo.budgetType }}</span>
  10. <!-- <span>投放类型:{{ campaignInfo.targetingType }}</span> -->
  11. <span class="head-span">投放日期:</span> <span>{{ campaignInfo.startDate }} ~ {{ campaignInfo.endDate ?? '无结束日期' }}</span>
  12. <span class="head-span">广告组合:</span> <span>{{ campaignInfo?.portfolioName }}</span>
  13. <span class="head-span">竞价:</span> <span>{{ getEnumLabel(dynBidOptimizationEnum, campaignInfo.bidOptimization) }}</span>
  14. </div>
  15. </div>
  16. <el-tabs type="border-card" class="asj-detail-tabs" v-model="tabActiveName">
  17. <el-tab-pane label="广告组" name="adGroup">
  18. <AdGroups :campaignId="route.query.campaignId" v-if="tabActiveName==='adGroup'"></AdGroups>
  19. </el-tab-pane>
  20. <el-tab-pane label="预算" name="budget">
  21. <Budget :campaignId="route.query.campaignId" v-if="tabActiveName==='budget'"></Budget>
  22. </el-tab-pane>
  23. <el-tab-pane label="自动化" name="automation">
  24. 自动化
  25. </el-tab-pane>
  26. <el-tab-pane label="广告位" name="placement">
  27. <Placement :campaignId="route.query.campaignId" v-if="tabActiveName==='placement'"/>
  28. </el-tab-pane>
  29. <el-tab-pane label="否定投放" name="negative">
  30. 否定投放
  31. </el-tab-pane>
  32. <!-- <el-tab-pane label="操作日志" :lazy="true"></el-tab-pane> -->
  33. </el-tabs>
  34. </div>
  35. </template>
  36. <script lang="ts" setup>
  37. import {onMounted, ref, Ref} from 'vue'
  38. import {useRoute} from 'vue-router'
  39. import AdGroups from './adGroups/index.vue'
  40. import Placement from './placement/index.vue'
  41. import Budget from './budget/index.vue'
  42. import {getEnumLabel} from '/@/views/adManage/utils/tools.js'
  43. import {dynBidOptimizationEnum, dynStatusEnum} from '/@/views/adManage/utils/enum.js'
  44. import {useShopInfo} from '/@/stores/shopInfo'
  45. // import { usePublicData } from '/@/stores/publicData'
  46. import {storeToRefs} from 'pinia'
  47. import {GetObj} from './api'
  48. const shopInfo = useShopInfo()
  49. const { profile } = storeToRefs(shopInfo)
  50. const route = useRoute()
  51. const campaignInfo: Ref<SpCampaign> = ref({})
  52. const tabActiveName = ref('adGroup')
  53. onMounted(async () => {
  54. const resp = await GetObj(route.query.campaignId)
  55. campaignInfo.value = resp.data
  56. })
  57. </script>
  58. <style lang="scss" scoped>
  59. .head-span {
  60. color: rgb(177, 177, 177);
  61. margin-left: 40px;
  62. }
  63. :deep(.el-tabs--border-card) {
  64. border: none;
  65. }
  66. </style>