vue的探索---echarts初步使用

给老师做一个项目,接触到了vue,根本不知道怎么用,虽然有些地方跟js和css很像,但是之前学的web前端也不怎么样啊(苦笑.jpg),通过这次机会提高能力!!!

从前台传日期到后台,从后台返回数据,然后再echarts里面显示数据(这里只用了折线图)

记得 npm install --save echarts 首先要安装这个包
并在main.js里面调用

import echarts from 'echarts'
Vue.config.productionTip = false
Vue.prototype.echarts = echarts;
大体示意图如下:

在这里插入图片描述
好吧 ,这里只有前端代码(因为我只写前台啊~~~)
先贴代码

template代码

    <div class="type-main" style="height: 465.6px;">
      <div align="center" class="type-main-banner">
        注意:请务必认真填写!
      </div>
      <br/>
      起始日期:
      <input type="date" v-model="beginTime" id="time1" name="time" required="required" style="height: 22px;width: 145px;"/>
      <br/>
      截至日期:
      <input  type="date" v-model="endTime" id="time2" name="time" required="required" style="height: 22px;width: 145px;"/>

      <button @click="gettest" class="Button">查询</button>
      <div align="center">

        <div class="content">
          <h2 class="prompt_p"> {{this.name}}变化趋势图</h2>
          <div class="seven_echarts"  id="seven">
          </div>
        </div>
      </div>
    </div>

script代码

这一段是把折线图的数据给写死,是固定值

export default {

    name: 'HelloWorld',
    data(){
      return{
        seven_chart:null,
        month_chart:null,
        seven_option : {
          title : {
            x: 'left',
            align: 'center'
          },
          tooltip: {
            trigger: 'axis'
          },
          legend: {
            data:['最高值',]
          },
          grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
          },
          toolbox: {
            feature: {
              magicType: {type: ['line', 'bar']},//柱状图和西和折线图切换
              restore: {},//刷新
              saveAsImage: {},//将图表以折线图的形式展现
            }
          },
          xAxis: {
            type: 'category',
            boundaryGap: false,
            data: []
          },
          yAxis: {
            name:"含量",
            nameLocation: 'end',
            type: 'value',
            axisLabel: {
              formatter: '{value} '
            }
          },
          series: [
            {
              name:'最高值',
              type:'line',
              data:[],
              lineStyle:{//设置折线色颜色
                color:'black'
              },
              itemStyle:{//设置折线折点的颜色
                normal : {
                  color:'black'
                }
              }
            },
            /*{
              name:'平行于y轴的趋势线',
              type:'line',
              markLine: {
                name:'aa',
                data: [
                  {
                    name: '0标准线',
                    yAxis: 0,
                    lineStyle:{//设置折线色颜色
                      color:'red'
                    },
                  },
                ],
                symbol: ['arrow', 'none'],//将箭头向左  默认值是向右的
                label:{
                  show:true,
                  position:'middle',//markline描述位于中间   right,left,middle
                  formatter: '{b}: {c}',//显示name中的描述
                }*/

              //}
           // }

          ],
        },

      }
    },
    mounted:function (){
      this.get_echarts();
    },
    getTypeMain(item) {
      for (var i = 0; i < this.typeList1.length; i++) {
        this.typeList[i].active = false;
      }
      item.active = !item.active;
      //console.log(item.name.substring(0, 1));
      this.hwdata.hwindex = item.name.substring(0, 1);

    },

    methods:{
      get_echarts:function(){
        this.seven_chart = this.echarts.init(document.getElementById("seven"));
        //把配置和数据放这里
        this.seven_option.series[0].data = [3,6,8,4,2,1,0,3]
        this.seven_option.xAxis.data=[1,2,3,4,5,6,7,8]
        this.seven_chart.setOption(this.seven_option)
      },
      fn (event) {
        alert(event.currentTarget.id); // event.currentTarget获取当前点击元素DOM
      }
    },

  beforeDestroy() {
      if (!this.seven_chart) { return }
      this.seven_chart.dispose();
      this.seven_chart = null;
    },

    props: {
      msg: String
    }
  }

这一段代码是从后台获取数据

  var echarts = require('echarts');
  export default {

    name: 'Shopcar',
    data() {
      return {
	  
	    name:'',
        id11:'',
        seven_chart: null,
        month_chart: null,
        seven_option: {
          title: {
            x: 'left',
            align: 'center'
          },
          tooltip: {
            trigger: 'axis'
          },
          legend: {
            data: ['最高值',]
          },
          grid: {
            left: '20%',
            right: '2%',
            bottom: '3%',
            containLabel: true
          },
          toolbox: {
            feature: {
              //magicType: {type: ['line', 'bar']},//柱状图和西和折线图切换
              restore: {},//刷新
              //saveAsImage: {},//将图表以折线图的形式展现
            }
          },
          xAxis: {
            type: 'category',
            boundaryGap: false,
            data: []
          },
          yAxis: {
            name: "含量",
            nameLocation: 'end',
            type: 'value',
            axisLabel: {
              formatter: '{value} '
            }
          },
          series: [
            {
              name: '最高值',
              type: 'line',
              data: [],
              lineStyle: {//设置折线色颜色
                color: 'green'
              },
              itemStyle: {//设置折线折点的颜色
                normal: {
                  color: 'green'
                }
              }
            },

          ],
        },

      }
    },
    mounted: function () {
      this.get_echarts();
    },
    getTypeMain(item) {
      for (var i = 0; i < this.typeList1.length; i++) {
        this.typeList[i].active = false;
      }
      item.active = !item.active;
      //console.log(item.name.substring(0, 1));
      this.hwdata.hwindex = item.name.substring(0, 1);

    },

    methods: {
      get_echarts: function () {
        
		this.seven_chart = this.echarts.init(document.getElementById("seven"));

        //把配置和数据放这里
        this.seven_option.series[0].data =[]
        this.seven_option.xAxis.data = []
        this.seven_chart.setOption(this.seven_option)
		

      },
      gettest() {
        var b = this.beginTime.toString().replace(/-/g,"/")
        var e = this.endTime.toString().replace(/-/g,"/")
        if (this.id11==='' ) {
          alert('请将选项补全')
        } else if(b>=e){
          alert("请输入正确的日期")
        }else if(parseInt((new Date(e).getTime() - new Date(b).getTime()) / 1000 / 60 / 60 /24)>90){
          alert("查询日期范围为三个月!")
        }else {
          const path = 'xxxxxxxx##这里是自己后台的地址'
		//这里的dat是存储的往后台传输的数据,开始日期和结束日期
          var dat = { 'beginTime': this.beginTime, 'endTime': this.endTime}
		  this.$axios.post(path, dat).then(res => {
			this.name=this.name11;
			var flag=0;
              for (var i=0;i<res.data.data.length;i++)
              {
                this.seven_option.series[0].data[i] = res.data.data[i].num;
				if(res.data.data[i].num=='null'){
					flag=1;
				}
                this.seven_option.xAxis.data[i] = res.data.data[i].time;
              }
              this.seven_chart.setOption(this.seven_option)
			  if(flag==1){
				alert("您查询的时间段内无历史记录~")
			  }
            })
            .catch(error => {
              alert(error)
            })
        }
      }
    },

    beforeDestroy() {
      if (!this.seven_chart) { return }
      this.seven_chart.dispose();
      this.seven_chart = null;
    },

    props: {
      msg: String
    }
  }

css的代码:

 .type-main .type-main-banner {
    width: 80%;
    height: 40px;
    margin-top: 13px;
    border-radius: 6px;
    overflow: hidden;
    color: #fff;
    background: green;
  }
  .seven_echarts{
    height: 11rem;
    width: 80%;
  }
   .content{
    width: 60%;
  }
  .content p{
    margin-top: 1rem;
    font-size: 0.4rem;
    color: #666666;
  }
 .type-main {
    width: 80%;
    float: left;
    box-sizing: border-box;
    padding: 0 20px;
    overflow-y: scroll;
    overflow-x: hidden;
  }
当时在调用echars的时候。犯的一个最大的错误就是调用对象的调用混了,this.seven_option和 this.seven_chart 就是这两兄弟

(太久之前写的echarts,都快忘的差不多了。。。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值