vue+echarts 暂无数据显示,横坐标可拖拽条添加,可拖拽条动态设置默认显示时间跨度

13 篇文章 0 订阅

对于echarts图表
目标:
1、切换维度日和月,选择筛选条件起始时间和结束时间,筛选的内容,
横坐标添加可拖拽显示的拖拽条,并且根据选择时间的数据量大小来设置默认显示的拖拽条宽度
2、当查询没有数据的时候,显示暂无数据
在这里插入图片描述
在这里插入图片描述

initEchart(){
   const  myCharts = this.$echarts.init(this.$refs.myCharts);//初始化echarts对象
   myCharts.showLoading({text: "数据加载中...",textColor:'#7a7878',color:'#57a2ff',lineWidth: 2});    //加载echarts loading        
   let params={
       date_type:this.formLabelAlign.disvalue ? 'm' : 'd',
       start_time:this.formLabelAlign.disvalue ? this.$moment(this.formLabelAlign.dateStart).format('YYYYMM') : this.$moment(this.formLabelAlign.dateStart).format('YYYYMMDD'),
       end_time:this.formLabelAlign.disvalue ? this.$moment(this.formLabelAlign.dateEnd).format('YYYYMM') : this.$moment(this.formLabelAlign.dateEnd).format('YYYYMMDD'),
       user_type:this.formLabelAlign.sarchType
   }
   let xAxisArr = []
   let yAxisArr = []
   this.$axios.post('/api/busi/product/v1/product/analyse/adduptrend',{},{
       params:params,
       headers:{
           'Content-Type':'application/x-www-formurlencoded',
           'usid':store.state.xaiot_token
       }
   }).then(res => {
       
       if(res.data.msg === 'success'){
           if(res.data.data.length === 0){//没有数据的时候显示暂无数据
               var html = `<span class="echarts-nodate"><i class="fontFamily yybzzanwushuju1"></i>暂无数据</span>`
               document.getElementById('myCharts').innerHTML = html
               document.getElementById('myCharts').removeAttribute('_echarts_instance_')
           }else{
               res.data.data.forEach((item,index) => {
                   xAxisArr.push(item.date)
                   yAxisArr.push(item.product_num)
               })
               let dataZoom=[
                       {
                           type: "slider",
                           realtime: true, //拖动滚动条时是否动态的更新图表数据
                           height: 25, //滚动条高度
                           start: 0, 
                           end: 100 
                       }
                   ]
               //根据维度日和月的切换,横坐标拖拽条的默认显示宽度计算 开始
               if(this.formLabelAlign.disvalue){//维度是月 this.formLabelAlign.disvalue为false是日
                   if(xAxisArr.length > 2){
                       dataZoom=[
                           {
                               type: "slider",
                               realtime: true, //拖动滚动条时是否动态的更新图表数据
                               height: 25, //滚动条高度
                               start: ((xAxisArr.length - 2)/xAxisArr.length).toFixed(2)*100, 
                               end: 100 
                           }
                       ]
                   }
               }else{//维度是日
                   if(xAxisArr.length > 7){
                       dataZoom=[
                           {
                               type: "slider",
                               realtime: true, //拖动滚动条时是否动态的更新图表数据
                               height: 25, //滚动条高度
                               start: ((xAxisArr.length - 7)/xAxisArr.length).toFixed(2)*100, 
                               end: 100 
                           }
                       ]
                   }
               }
               //根据维度日和月的切换,横坐标拖拽条的默认显示宽度计算 结束
               let options = {
                       title:{
                       text:'产品累计数趋势',
                       left:'center',
                       textStyle:{
                           color:'#6B6B6B',
                           fontSize:18
                       }
                       
                   },
                   grid:{
                       height:'auto',
                       left:'80',
                       right:'80'
                       
                   },
                   tooltip: {
                       trigger: 'axis',
                       textStyle:{
                         align:'left'
                   }
                   },
                   legend: {
                       data: ['数量'],
                       right:0,
                       top:60
                   },
                   // x轴拖动
                   dataZoom: dataZoom,
                   xAxis :  
                   {
                       type:"category",
                       name:'日期',
                       // interval:0,
                       nameTextStyle:{
                       color:'#6B6B6B'
                       },
                       data : xAxisArr,
                       axisTick:{
                           show:true,
                           inside:true,
                           lineStyle:{
                               color:'black'
                           }
                       },
                       axisLine:{
                           show:true,
                           lineStyle:{
                               color:'black'
                           }
                       },
                       axisLabel:{
                       
                           color:'#6B6B6B',
                           fontSize:10
                       }
                   },
                   yAxis: {
                       type: 'value',
                       name:'产品数量(个)',
                           nameTextStyle:{
                           color:'#6B6B6B'
                       },
                       axisLabel: {
                           margin: 2,
                           // formatter: function (value, index) {
                           //     if (value >= 10000 && value < 10000000) {
                           //         value = value / 10000 + "万";
                           //     } else if (value >= 10000000) {
                           //         value = value / 10000000 + "千万";
                           //     }
                           //     return value;
                           // }
                       },
                       axisTick:{
                                   show:true,
                                   inside:true,
                                   lineStyle:{
                                       color:'#6B6B6B'
                                   }
                       },
                       axisLine:{
                                   show:true,
                                   lineStyle:{
                                       color:'#6B6B6B'
                                   }
                       },
                       
                   },
                   series: [
                       
                       {
                           name: '数量',
                           type: 'line',
                           data: yAxisArr,
                           symbol:"diamond",
                           // smooth:true,
                           showSymbol:true,
                           symbolSize: 8,
                           lineStyle:{
                               color:'#336699'
                           },
                           itemStyle:{
                               color:'#FF6600',
                               borderWidth:20
                           },
                       }
                   ]
               }
               myCharts.setOption(options);
               window.addEventListener('resize',function(){
                   myCharts.resize()
               })
               
           }
       }
       myCharts.hideLoading();//关闭echarts loading
   }).catch(res => {
       myCharts.hideLoading();
       var html = `<span class="echarts-nodate"><i class="fontFamily yybzzanwushuju1"></i>暂无数据</span>`
       document.getElementById('myCharts').innerHTML = html
       document.getElementById('myCharts').removeAttribute('_echarts_instance_')

       console.log('error!')
   })
   
},
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值