index.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <view>
  3. <view class="card_wrap">
  4. <view class="header_wrap">
  5. <view class="header_left">巨量消耗数据</view>
  6. <view class="haeder_right" @click="handleShowFilterQuery">
  7. <text>更多筛选</text>
  8. <u-icon name="arrow-down-fill" color="#aaa" size="10" ></u-icon>
  9. </view>
  10. </view>
  11. <view class="main_warp">
  12. <view class="promotion_stats_wrap">
  13. <view class="promotion_stats">
  14. <view class="stats_label">总消耗</view>
  15. <view class="stats_value">{{sumStatData.statCost}}</view>
  16. </view>
  17. <view class="promotion_stats">
  18. <view class="stats_label">广告线索量</view>
  19. <view class="stats_value">{{sumStatData.attributionConvertCnt}}</view>
  20. </view>
  21. <view class="promotion_stats">
  22. <view class="stats_label">广告线索成本</view>
  23. <view class="stats_value">{{sumStatData.conversionCost}}</view>
  24. </view>
  25. <view class="promotion_stats">
  26. <view class="stats_label">商机线索成本</view>
  27. <view class="stats_value">{{sumStatData.tboCost}}</view>
  28. </view>
  29. <view class="promotion_stats">
  30. <view class="stats_label">商机线索量</view>
  31. <view class="stats_value">{{sumStatData.tboCnt}}</view>
  32. </view>
  33. <view class="promotion_stats">
  34. <view class="stats_label">转商机率</view>
  35. <view class="stats_value">{{sumStatData.tboRate}}%</view>
  36. </view>
  37. <view class="promotion_stats">
  38. <view class="stats_label">无效线索量</view>
  39. <view class="stats_value">{{sumStatData.invalidCnt}}</view>
  40. </view>
  41. <view class="promotion_stats">
  42. <view class="stats_label">无效率</view>
  43. <view class="stats_value">{{sumStatData.invalidRate}}%</view>
  44. </view>
  45. </view>
  46. </view>
  47. </view>
  48. <working-achievement type="1" ref="workingAchievementRef"></working-achievement>
  49. <briefReport type="1" ref="teamReport"></briefReport>
  50. <filterQuery ref="filter" v-model="promotionStatsQueryParams" @getList="selectPromotionStats"></filterQuery>
  51. </view>
  52. </template>
  53. <script>
  54. import workingAchievement from "../components/workingAchievement/index.vue";
  55. import briefReport from "../components/briefReport/index.vue";
  56. import filterQuery from "../components/filterQuery/index.vue";
  57. import dayjs from "dayjs";
  58. import { cloneDeep } from "lodash";
  59. export default {
  60. components : {
  61. workingAchievement,
  62. briefReport,
  63. filterQuery
  64. },
  65. data() {
  66. return {
  67. promotionStatsQueryParams : {
  68. createTimeStart : dayjs().format("YYYY-MM-DD"),
  69. createTimeEnd : dayjs().format("YYYY-MM-DD"),
  70. orgId : undefined,
  71. orgName : undefined,
  72. clueOperationId : undefined,
  73. },
  74. sumStatData: {
  75. statCost: "-",
  76. attributionConvertCnt: "-",
  77. conversionCost: "-",
  78. tboCost: "-",
  79. tboCnt: "-",
  80. tboRate: "-",
  81. invalidCnt: "-",
  82. invalidRate: "-"
  83. },
  84. clueStateList : [],
  85. }
  86. },
  87. methods: {
  88. handleShowFilterQuery(){
  89. this.$refs.filter.show();
  90. },
  91. async selectPromotionStats() {
  92. const {
  93. data
  94. } = await uni.$u.api.selectPromotionStats(this.promotionStatsQueryParams);
  95. this.sumStatData = data ? data : this.$options.data().sumStatData;
  96. },
  97. async teamReportInit(){
  98. this.$refs.teamReport.handleInit();
  99. },
  100. handleInit(){
  101. this.selectPromotionStats();
  102. },
  103. refresh(){
  104. this.handleInit();
  105. this.$refs.workingAchievementRef.dateSelectChange({type : "1"});
  106. this.$refs.teamReport.dateSelectChange({type : "1"});
  107. }
  108. },
  109. mounted() {
  110. this.handleInit();
  111. }
  112. }
  113. </script>
  114. <style scoped lang="scss">
  115. .main_warp {
  116. .promotion_stats_wrap {
  117. display: flex;
  118. flex-wrap: wrap;
  119. .promotion_stats {
  120. box-sizing: border-box;
  121. width: 33%;
  122. text-align: left;
  123. padding: 20rpx;
  124. .stats_label {
  125. font-size: 26rpx;
  126. color: #666666;
  127. }
  128. .stats_value {
  129. font-size: 30rpx;
  130. font-weight: bold;
  131. }
  132. }
  133. }
  134. }
  135. </style>