vue加载echarts图表显示loading

一、用el-tabs展示三个曲线,直接在el-tab-pane后加v-loading 

<el-tabs type="border-card" style="width: 1500px;height: 740px;">
  <el-tab-pane label="温度曲线">
     <div v-loading="isLoading">
         <div ref="tempEchart" style="width: 1500px;height: 650px;"></div>
     </div></el-tab-pane>
  <el-tab-pane label="湿度曲线">
     <div v-loading="isLoading">
        <div ref="humEchart" style="width: 1450px;height: 650px;"></div>
     </div></el-tab-pane>
  <el-tab-pane label="气压曲线">
     <div v-loading="isLoading">
        <div ref="preEchart" style="width: 1450px;height: 650px;"></div>
     </div></el-tab-pane>
</el-tabs>
        

 二、返回数据,初始loading为true

 export default {
    name: "index",
    data() {
      return {
        isLoading: true,
      }
    }
  }

三、设置loading显示,获取数据后isLoading=false

  created() {
    this.getList();
  },
  methods: {
    getList() {
      this.isLoading = true;
      this.queryParams.params = {};
      listDevice(this.queryParams).then((response) => {
        this.deviceData = response.data;
        this.dateTime = response.data.date;
        this.tempCurve();
        this.humCurve();
        this.preCurve();
      }).catch((error) => {
        console.error('获取数据时出错:', error);
        this.isLoading = false;
      }).finally(() => {
        this.isLoading = false;
      });
    },

四、echarts的数据,不需要对loading进行操作

  humCurve() {
      const chart = echarts.init(this.$refs.humEchart);
      const defaultOption = {
        title: {
          text: "湿度曲线",
          top: 0,
          left: "left",
        },
        tooltip: {
            trigger: "axis",
        },
        legend: {},
        // backgroundColor: '#30333C',
        grid: {
            left: "5%",
            right: "5%",
            bottom: "5%",
            top: 90,
            // 是否包含文本
            containLabel: true
        },
        xAxis: {
            type: "category",
            data: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul"],
            axisTick: { // 隐藏 X 轴的刻度线
                show: false
            },
            axisLabel: { // 自定义 X 轴的标签
                show: true,
            },
            interval: 250,
            boundaryGap: false// 设置 X 轴从最左边开始
        },
        yAxis: {
            name: "湿度(%RH)",
            nameTextStyle: {
                fontSize: 10, // 单位文本字体大小
                padding: [0, 0, 0, 5], // 单位与轴线之间的距离
            },
            type: "value",
            splitLine: {
                lineStyle: {
                    color: "#e6effc",
                },
            },
            axisLabel: { // 自定义 X 轴的标签
                show: true,
            },
            axisTick: { // 隐藏 X 轴的刻度线
                show: false
            },
        },
        series: [
            {
            'type': 'line',
            'data': [89,48,70,36,50,80,58],
            smooth: true,
            lineStyle: {
                color: '#38F0B4',
                width: 3
            },
            showSymbol: false,
            areaStyle: {
                opacity: 0.8,
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                { offset: 0, color: '#00314F' },
                { offset: 0.8, color: '#01676C' }
                ])
            },
            itemStyle: {
            color: '#38F0B4'
        }
        }
        ]};

      chart.setOption(defaultOption);
    },

Vue3中使用ECharts设置占位图片的方法如下: 1. 首先,你需要安装EChartsVue-ECharts插件。可以通过npm或yarn来安装它们: ``` npm install echarts vue-echarts ``` 2.Vue组件中引入EChartsVue-ECharts插件: ```javascript import * as echarts from 'echarts'; import { use } from 'echarts/core'; import { CanvasRenderer } from 'echarts/renderers'; import { BarChart } from 'echarts/charts'; import { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'; use([CanvasRenderer, BarChart, GridComponent, TooltipComponent, LegendComponent]); export default { // ... } ``` 3.Vue组件的模板中,使用`vue-echarts`组件来渲染ECharts图表,并设置占位图片: ```html <template> <div> <vue-echarts :options="chartOptions" :loading="loading" :initOptions="initOptions"></vue-echarts> </div> </template> ``` 4.Vue组件的`data`选项中定义图表的配置项和数据: ```javascript export default { data() { return { chartOptions: { // 设置占位图片 graphic: { type: 'image', id: 'placeholder', left: 'center', top: 'middle', z: 10, bounding: 'raw', style: { image: '占位图片的URL', width: 200, height: 200, }, }, // 其他ECharts配置项 // ... }, loading: true, initOptions: { renderer: 'canvas', }, }; }, // ... } ``` 5.Vue组件的`mounted`生命周期钩子中,使用`echarts`对象初始化图表,并在数据加载完成后隐藏占位图片: ```javascript export default { // ... mounted() { const chart = echarts.init(this.$el); chart.setOption(this.chartOptions); // 模拟数据加载完成后隐藏占位图片 setTimeout(() => { this.loading = false; chart.hideGraphic('placeholder'); }, 2000); }, // ... } ``` 这样,当图表数据加载完成后,占位图片将被隐藏,显示真实的ECharts图表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值