• VUE——添加组件模块(图表)


    Vue是由一个个小模块组成的,模块可以让页面简介还可以复用:

    1、不固定数据数量传到子组件

    父组件:

    <chartVue v-for="(item, index) in chartList" :key="index" :dtu-id="item.dtuId" :name="item.name" :dtu-fatcor="item.dtuFatcor" :data="item.data" :data-type="item.dataType" style="1000px;height:400px;" />
    <script>
         import echarts from 'echarts'
         import chartVue from '@/views/history/chart'
         import { flatMap, toArray } from 'rxjs/operators'
       export default{
            components:{ chartVue },
            data(){
                chartList: [],        
            },
            //方法
            methods: {
                 // from方法解析数组
                 from(factor(id)).pipe(
                     flatMap(value=>{
                          this.chartList = []
                          if(value.code == 200){ 
                               return from(value.data)
                           }
                      }),
                      toArray(),
                      map(val =>{
                           this.chartList = val
                           return val
                      })
                  ).subscibe() 
            }
        }
    </script>                                    

    子组件(ref接收的值是不固定的):

    <template>
      <div ref="chart" class="app-container" />
    </template>
    
    <script>
    import echart from 'echarts'
    import moment from 'moment'
    export default {
      name: 'Chart',
      props: [
         'dtuId',
         'dtuFatcor',
         'name',
         'data',
         'dataType'
      ],
        mounted() {
         // 获取历史数据时间
         var that = this
         var chart = echart.init(this.$refs.chart)
         var xdata = []
         var ydata = []
         this.data.forEach(val => {
             xdata.push(moment(val.createdTime).format('YYYY-MM-DD HH:mm:ss'))
             if (this.dataType === '2011') {
                 ydata.push(val.factorData)
             } else {
                 ydata.push(val.factorAvgData)
             }
         })
         chart.setOption({
          title: {
            text: that.name
          },
          tooltip: {
            trigger: 'axis'
          },
          legend: {
            data: that.name
          },
          toolbox: {
            show: true,
            feature: {
              saveAsImage: {}
            }
          },
          xAxis: {
            type: 'category',
            boundaryGap: false,
            data: xdata
          },
          yAxis: {
            type: 'value'
            // axisLabel: {
            //   formatter: "{value} °C"
            // }
          },
          series: [
            {
              name: that.name,
              type: 'line',
              data: ydata,
              markPoint: {
                data: [
                  { type: 'max', name: '最大值' },
                  { type: 'min', name: '最小值' }
                ]
              },
              markLine: {
                data: [{ type: 'average', name: '平均值' }]
              }
            }
          ]
        })
      }
    }
    </script>
  • 相关阅读:
    sprintf使用
    Android ListView保持选中项高亮
    Creational Patterns创建型模式
    C和指针终于看到指针这一章
    C++随笔001
    TCP reset
    开始看设计模式英文版了
    Excel条件求和
    linux中安装软件,查看、卸载已安装软件方法
    linux vi文本编辑器三种模式切换及常用操作
  • 原文地址:https://www.cnblogs.com/acmyun/p/12053584.html
Copyright © 2020-2023  润新知