|  | @@ -364,21 +364,40 @@
 | 
	
		
			
				|  |  |            </el-card>
 | 
	
		
			
				|  |  |          </el-col>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          <el-col :span="12">
 | 
	
		
			
				|  |  |            <el-card shadow="never">
 | 
	
		
			
				|  |  |              <div slot="header" class="chart-header">
 | 
	
		
			
				|  |  | -              <span>经销商会员观看TOP10</span>
 | 
	
		
			
				|  |  | +              <span>经销商看客统计</span>
 | 
	
		
			
				|  |  |                <div class="legend">
 | 
	
		
			
				|  |  | -                <el-radio-group v-model="viewerType" size="small" @change="handleDealerChartData">
 | 
	
		
			
				|  |  | -                  <el-radio-button label="0">按观看人数</el-radio-button>
 | 
	
		
			
				|  |  | -                  <el-radio-button label="1">按完播人数</el-radio-button>
 | 
	
		
			
				|  |  | -                </el-radio-group>
 | 
	
		
			
				|  |  | +                <div class="legend-item">
 | 
	
		
			
				|  |  | +                  <span class="dot viewer-dot"></span>
 | 
	
		
			
				|  |  | +                  <span>观看人数</span>
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +                <div class="legend-item">
 | 
	
		
			
				|  |  | +                  <span class="dot complete-dot"></span>
 | 
	
		
			
				|  |  | +                  <span>完播人数</span>
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  | -              <!--              <el-button size="small" plain class="view-more">经销商统计 <i class="el-icon-arrow-right"></i></el-button>-->
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -            <div ref="dealerChart" class="chart-container"></div>
 | 
	
		
			
				|  |  | +            <div ref="dealerChartNew" class="chart-container"></div>
 | 
	
		
			
				|  |  |            </el-card>
 | 
	
		
			
				|  |  |          </el-col>
 | 
	
		
			
				|  |  | +<!--        <el-col :span="12">-->
 | 
	
		
			
				|  |  | +<!--          <el-card shadow="never">-->
 | 
	
		
			
				|  |  | +<!--            <div slot="header" class="chart-header">-->
 | 
	
		
			
				|  |  | +<!--              <span>经销商会员观看TOP10</span>-->
 | 
	
		
			
				|  |  | +<!--              <div class="legend">-->
 | 
	
		
			
				|  |  | +<!--                <el-radio-group v-model="viewerType" size="small" @change="handleDealerChartData">-->
 | 
	
		
			
				|  |  | +<!--                  <el-radio-button label="0">按观看人数</el-radio-button>-->
 | 
	
		
			
				|  |  | +<!--                  <el-radio-button label="1">按完播人数</el-radio-button>-->
 | 
	
		
			
				|  |  | +<!--                </el-radio-group>-->
 | 
	
		
			
				|  |  | +<!--              </div>-->
 | 
	
		
			
				|  |  | +<!--              <!–              <el-button size="small" plain class="view-more">经销商统计 <i class="el-icon-arrow-right"></i></el-button>–>-->
 | 
	
		
			
				|  |  | +<!--            </div>-->
 | 
	
		
			
				|  |  | +<!--            <div ref="dealerChart" class="chart-container"></div>-->
 | 
	
		
			
				|  |  | +<!--          </el-card>-->
 | 
	
		
			
				|  |  | +<!--        </el-col>-->
 | 
	
		
			
				|  |  |        </el-row>
 | 
	
		
			
				|  |  |      </transition>
 | 
	
		
			
				|  |  |      <transition name="fade">
 | 
	
	
		
			
				|  | @@ -509,7 +528,7 @@ import {
 | 
	
		
			
				|  |  |    authorizationInfo,
 | 
	
		
			
				|  |  |    dealerAggregated, deaMemberTopTen, rechargeComsumption, rewardMoneyTopTen, rewardMoneyTrend,
 | 
	
		
			
				|  |  |    smsBalance, thisMonthOrderCount, thisMonthRecvCount, trafficLog,
 | 
	
		
			
				|  |  | -  watchCourseTopTen, watchEndPlayTrend
 | 
	
		
			
				|  |  | +  watchCourseTopTen, watchEndPlayTrend,getWatchCourseStatisticsData
 | 
	
		
			
				|  |  |  } from "@/api/statistics/statistics";
 | 
	
		
			
				|  |  |  import dayjs from 'dayjs';
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -554,6 +573,56 @@ const viewCharOption = {
 | 
	
		
			
				|  |  |    ]
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +const dealerOptionNew = {
 | 
	
		
			
				|  |  | +  tooltip: {
 | 
	
		
			
				|  |  | +    trigger: 'axis',
 | 
	
		
			
				|  |  | +    axisPointer: {
 | 
	
		
			
				|  |  | +      type: 'shadow'
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  grid: {
 | 
	
		
			
				|  |  | +    left: '3%',
 | 
	
		
			
				|  |  | +    right: '4%',
 | 
	
		
			
				|  |  | +    bottom: '3%',
 | 
	
		
			
				|  |  | +    containLabel: true
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  xAxis: {
 | 
	
		
			
				|  |  | +    type: 'category',
 | 
	
		
			
				|  |  | +    axisLabel: {
 | 
	
		
			
				|  |  | +      rotate: 30, // 设置标签倾斜45度
 | 
	
		
			
				|  |  | +      // fontSize: 12, // 减小字体大小
 | 
	
		
			
				|  |  | +      interval: 0, // 显示所有标签
 | 
	
		
			
				|  |  | +      // 可选:限制标签宽度并截断
 | 
	
		
			
				|  |  | +      width: 80,
 | 
	
		
			
				|  |  | +      overflow: 'truncate',
 | 
	
		
			
				|  |  | +      // 可选:设置标签的对齐方式
 | 
	
		
			
				|  |  | +      margin: 20,
 | 
	
		
			
				|  |  | +      fontWeight: 'bold' // 设置字体加粗
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  yAxis: {
 | 
	
		
			
				|  |  | +    type: 'value'
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  series: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      name: '观看人数',
 | 
	
		
			
				|  |  | +      type: 'bar',
 | 
	
		
			
				|  |  | +      data: [],
 | 
	
		
			
				|  |  | +      itemStyle: {
 | 
	
		
			
				|  |  | +        color: '#409EFF'
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      name: '完播人数',
 | 
	
		
			
				|  |  | +      type: 'bar',
 | 
	
		
			
				|  |  | +      data: [],
 | 
	
		
			
				|  |  | +      itemStyle: {
 | 
	
		
			
				|  |  | +        color: '#67C23A'
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ]
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  const thisMonthOrderCountOption = {
 | 
	
		
			
				|  |  |    tooltip: {
 | 
	
		
			
				|  |  |      trigger: 'axis',
 | 
	
	
		
			
				|  | @@ -858,6 +927,7 @@ export default {
 | 
	
		
			
				|  |  |        smsRemainCount: 0,
 | 
	
		
			
				|  |  |        viewerType: '0',
 | 
	
		
			
				|  |  |        viewerChart: null,
 | 
	
		
			
				|  |  | +      dealerChartNew: null,
 | 
	
		
			
				|  |  |        userTypeText: process.env.VUE_APP_COURSE_DEFAULT==1?"会员":"企微",
 | 
	
		
			
				|  |  |        userType: process.env.VUE_APP_COURSE_DEFAULT,
 | 
	
		
			
				|  |  |        dealerChart: null,
 | 
	
	
		
			
				|  | @@ -925,6 +995,7 @@ export default {
 | 
	
		
			
				|  |  |    mounted() {
 | 
	
		
			
				|  |  |      this.$nextTick(() => {
 | 
	
		
			
				|  |  |        this.initViewerChart()
 | 
	
		
			
				|  |  | +      this.initDealerChartNew();
 | 
	
		
			
				|  |  |        this.initDealerChart()
 | 
	
		
			
				|  |  |        this.initCourseWatchChart();
 | 
	
		
			
				|  |  |        this.initAnswerRedPackViewerChart();
 | 
	
	
		
			
				|  | @@ -936,6 +1007,8 @@ export default {
 | 
	
		
			
				|  |  |        window.addEventListener('resize', () => {
 | 
	
		
			
				|  |  |          this.viewerChart && this.viewerChart.resize()
 | 
	
		
			
				|  |  |          this.dealerChart && this.dealerChart.resize()
 | 
	
		
			
				|  |  | +        this.dealerChartNew && this.dealerChartNew.resize()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        })
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    },
 | 
	
	
		
			
				|  | @@ -1130,6 +1203,7 @@ export default {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        this.handleCourseWatchChart()
 | 
	
		
			
				|  |  |        this.handleViewChartData()
 | 
	
		
			
				|  |  | +      this.handleDealerChartDataNew()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // 经销商会员观看TOP10
 | 
	
		
			
				|  |  |        this.handleDealerChartData()
 | 
	
	
		
			
				|  | @@ -1192,6 +1266,7 @@ export default {
 | 
	
		
			
				|  |  |        if (this.selectedDiv === 0) {
 | 
	
		
			
				|  |  |          this.handleViewChartData()
 | 
	
		
			
				|  |  |          this.handleDealerChartData()
 | 
	
		
			
				|  |  | +        this.handleDealerChartDataNew()
 | 
	
		
			
				|  |  |        } else if (this.selectedDiv === 1) {
 | 
	
		
			
				|  |  |          this.handleCourseWatchChart()
 | 
	
		
			
				|  |  |        } else if (this.selectedDiv === 2) {
 | 
	
	
		
			
				|  | @@ -1267,6 +1342,7 @@ export default {
 | 
	
		
			
				|  |  |        if (this.selectedDiv === 0) {
 | 
	
		
			
				|  |  |          this.handleViewChartData()
 | 
	
		
			
				|  |  |          this.handleDealerChartData()
 | 
	
		
			
				|  |  | +        this.handleDealerChartDataNew()
 | 
	
		
			
				|  |  |        } else if (this.selectedDiv === 1) {
 | 
	
		
			
				|  |  |          this.handleCourseWatchChart()
 | 
	
		
			
				|  |  |        } else if (this.selectedDiv === 2) {
 | 
	
	
		
			
				|  | @@ -1344,6 +1420,35 @@ export default {
 | 
	
		
			
				|  |  |        })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    handleDealerChartDataNew() {
 | 
	
		
			
				|  |  | +      let param = this.getParam();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      getWatchCourseStatisticsData({ ...param }).then(res => {
 | 
	
		
			
				|  |  | +        if (res.code === 200) {
 | 
	
		
			
				|  |  | +          console.log(res.data);
 | 
	
		
			
				|  |  | +          // 根据实际数据结构调整
 | 
	
		
			
				|  |  | +          let data = res.data;
 | 
	
		
			
				|  |  | +          let watchUserCountList = data.map(e => e.watchCount);     // 观看次数
 | 
	
		
			
				|  |  | +          let completedUserCountList = data.map(e => e.finishCount); // 完播次数
 | 
	
		
			
				|  |  | +          let xAxis = data.map(e => e.companyName);                 // X轴使用公司名称
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          // 更新图表配置
 | 
	
		
			
				|  |  | +          dealerOptionNew.series[0].data = watchUserCountList;
 | 
	
		
			
				|  |  | +          dealerOptionNew.series[1].data = completedUserCountList;
 | 
	
		
			
				|  |  | +          dealerOptionNew.xAxis.data = xAxis;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          this.dealerChartNew.setOption(dealerOptionNew);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    initDealerChartNew() {
 | 
	
		
			
				|  |  | +      console.log("初始化 initDealerChartNew");
 | 
	
		
			
				|  |  | +      this.dealerChartNew = echarts.init(this.$refs.dealerChartNew)
 | 
	
		
			
				|  |  | +      this.dealerChartNew.setOption(dealerOptionNew)
 | 
	
		
			
				|  |  | +      console.log("初始化结束 initDealerChartNew");
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      handleThisMonthOrderCount(){
 | 
	
		
			
				|  |  |        thisMonthOrderCount().then(res=>{
 | 
	
		
			
				|  |  |          if(res.code === 200){
 | 
	
	
		
			
				|  | @@ -1434,6 +1539,8 @@ export default {
 | 
	
		
			
				|  |  |      // window.removeEventListener('resize', this.resizeHandler)
 | 
	
		
			
				|  |  |      this.viewerChart && this.viewerChart.dispose()
 | 
	
		
			
				|  |  |      this.dealerChart && this.dealerChart.dispose()
 | 
	
		
			
				|  |  | +    this.dealerChartNew && this.dealerChartNew.dispose()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  </script>
 |