Chart.vue 1.99 KB
<template>
  <Echart
    :options="options"
    id="centreLeft1Chart"
    :key="key"
    height="1.0417rem"
    width="80%"
  ></Echart>
</template>
<script>
import Echart from "@/common/echart";
export default {
  components: {
    Echart,
  },
  data() {
    return {
      key: 0,
    };
  },
  props: {
    cdata: {
      type: Object,
      default: () => ({}),
    },
  },
  watch: {
    cdata: {
      handler(newData) {
        let pieColors = ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de"];
        let richColor = {};
        pieColors.forEach((item, idx) => {
          richColor[`color${idx}`] = {
            fontSize: 10,
            color: item,
          };
        });

        let chartData = [
          { value: 1048, name: "Search Engine" },
          { value: 735, name: "Direct" },
          { value: 580, name: "Email" },
          { value: 484, name: "Union Ads" },
          { value: 300, name: "Video Ads" },
        ];
        this.options = {
          color: [
            "#37a2da",
            "#32c5e9",
            "#9fe6b8",
            "#ffdb5c",
            "#ff9f7f",
            "#8378ea",
            "#fb7293",
            "#e7bcf3",

          ],
          series: [
            {
              name: "Access From",
              type: "pie",
              radius: ["54%", "70%"],
              avoidLabelOverlap: true,
              label: {
                formatter: (params) => {
                  // console.log(params)
                  return `{color${params.dataIndex}|${params.name}(${params.value})}`;
                },
                rich: richColor,
              },
              labelLine: {
                lineStyle: {
                  width: 3,
                },
              },
              data: newData.seriesData,
            }
          ],
        };
        this.key++;
      },
      immediate: true,
      deep: true,
    },
  },
};
</script>

<style lang="scss" scoped>
#centreLeft1Chart {
  margin-bottom: 0.0521rem;
  margin-left: .3125rem;
}
</style>