eharts横向柱状图每个类别三个柱状图属性带百分比,柱状图颜色设置为边框+背景色,值通过父传子props传值

文章描述了一个Vue.js应用中父组件向子组件传递数据以渲染Echarts图表的过程。父组件通过接口获取任务流程数据,然后传递给子组件,子组件监听到数据变化后,初始化Echarts实例并绘制不同状态(完成、逾期、提醒)的任务条形图。
摘要由CSDN通过智能技术生成

父组件

 <Status:statusAndFlow="this.statusAndFlow"/>
   //SCRIPT
<script>
import * as API_TaskOverview from "@/api/TaskOverview";
export default {
  components: {
    Status,
  },
 data() {
	return {
		statusAndFlow: [], // 任务流程
	 };
}
  },
  methods:{
 // 请求接口
   async getTaskOverview(val1, val2) {
     let { success, entity } = await  	API_Task.getTask(query);
       if (success) {
         this.statusAndFlow = entity.statusAndFlow;
       }
   }
  }
  
  </script>
**

## 子组件

**
<template>
 <div
        id="effecEcharts"
        ref="Echartscolumn"
        style="display: flex; height: 100%; width: 100%"
      ></div>
      </template>
      <script>
import * as echarts from "echarts";
export default {
  props: {
    statusAndFlow: {
      type: Array,
    },
  },
  data() {
    return {
      statusAndFlowData: [],
    };
  },
  watch: {
    statusAndFlow: {
      handler(val) {
        this.statusAndFlowData = val;
        val.map((item) => console.log(item.minorMajor, "111"));
        console.log(val, "state");
        this.getStatus();
      },
    },
  },
  mounted() {},
  methods: {
    getStatus() {
      // 初始化 echarts 实例
      let myChart = echarts.init(document.getElementById("effecEcharts"));

      // 配置项和数据
      let option = {
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "shadow",
          },
        },
        responsive: true,
        // legend: [
        //   {
        //     data: ["上周"],
        //     top: "3%",
        //     left: "0%",
        //     textStyle: {
        //       color: "#35C6A4",
        //     },
        //   },
        //   {
        //     data: ["本周"],
        //     top: "3%",
        //     left: "17%",
        //     textStyle: {
        //       color: "#23B9FF",
        //     },
        //   },
        // ],
        grid: {
          left: "0%",
          right: "5%",
          bottom: "0%",
          top: "0%",
          containLabel: true,
        },
        xAxis: {
          type: "value",
          axisLine: { show: false },
          splitLine: { show: false },
          axisLabel: { show: false },
          axisTick: { show: false },
          splitArea: { show: false },
        },
        yAxis: {
          type: "category",
          data: this.statusAndFlowData.map((item) => item.minorMajor),
          axisLine: { show: false },
          splitLine: { show: false },
          axisTick: { show: false },
          splitArea: { show: false },
          inverse: true, //正序显示
          axisLabel: {
            textStyle: {
              color: "#DFF0FF",
              fontSize: "14px",
            },
          },
        },
        series: [
          {
            name: "完成", //完成超过一周
            type: "bar",
            data: this.statusAndFlowData.map((item) => item.outWeek),
            large: true,
            itemStyle: {
              color: "rgba(61, 252, 205, 0.32)",
              borderColor: "rgba(101, 232, 216, 1)",
              borderWidth: 1,
            },
            barWidth: 12,
            label: {
              show: true,
              position: "right",
              formatter: "{c}",
              textStyle: {
                fontWeight: 600,
                color: "rgba(101, 232, 216, 1)",
              },
            },
            barCategoryGap: "30%",
            barGap: "80%",
          },
          {
            name: "逾期", //未完成
            type: "bar",
            data: this.statusAndFlowData.map((item) => item.undone),
            large: true,
            itemStyle: {
              color: "rgba(179, 8, 19, 0.32)",
              borderColor: "rgba(179, 8, 19, 1)",
              borderWidth: 1,
            },
            barWidth: 12,
            label: {
              show: true,
              position: "right",
              formatter: "{c}",
              textStyle: {
                fontWeight: 600,
                color: "rgba(179, 8, 19, 1)",
              },
            },
            barCategoryGap: "30%",
            barGap: "80%",
          },
          {
            name: "提醒", //完成一周内
            type: "bar",
            data: this.statusAndFlowData.map((item) => item.inWeek),
            large: true,
            itemStyle: {
              color: "rgba(231, 179, 77, 0.32)",
              borderColor: "rgba(231, 179, 77, 1)",
              borderWidth: 1,
            },
            barWidth: 12,
            label: {
              show: true,
              position: "right",
              formatter: "{c}",
              textStyle: {
                fontWeight: 600,
                color: "rgba(231, 179, 77, 1)",
              },
            },
            barCategoryGap: "30%",//每个属性内的柱状图间隙
            barGap: "80%",//不同柱状图不同属性的间隙
          },
        ],
      };
      // 使用配置项显示图表
      myChart.setOption(option);
    },
  },
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值