Blame view

src/components/charts/lineChart.vue 2.35 KB
77ebf04d   梁保满   个人版
1
2
3
4
5
6
7
8
9
10
11
  <template>
    <div class="chart" :id="id"></div>
  </template>
  
  <script>
  export default {
    name: "lineChart",
    props: {
      id: String,
      params: Array,
      xAxis: Array,
079cb4cf   梁保满   即时测导出
12
      colors: Array
77ebf04d   梁保满   个人版
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    },
    watch: {
      params: {
        handler: function (val) {
          if (val.length) {
            this.initData();
          }
        },
        deep: true,
      },
    },
    data() {
      return {
        chart: null,
      };
    },
079cb4cf   梁保满   即时测导出
29
    created() { },
77ebf04d   梁保满   个人版
30
31
32
33
34
35
36
    mounted() {
      this.initData();
    },
    methods: {
      setOption() {
        const that = this;
        const options = {
079cb4cf   梁保满   即时测导出
37
          color: this.colors || ["#9772ff", "#79cd91", "#72b8ff"],
77ebf04d   梁保满   个人版
38
39
40
41
42
43
44
          backgroundColor: "#fff",
          tooltip: {
            trigger: "item",
            confine: true,
          },
          legend: {
            show: true,
079cb4cf   梁保满   即时测导出
45
46
47
48
            top: 0,
            right: 20,
            itemHeight: 15,
            icon: "circle"
77ebf04d   梁保满   个人版
49
50
51
52
53
54
55
56
57
          },
          xAxis: {
            type: "category",
            data: this.xAxis,
            axisLine: { show: true, lineStyle: { color: "#e2e2e2" } },
            axisTick: {
              show: false,
            },
            axisLabel: {
079cb4cf   梁保满   即时测导出
58
              color: "#333",
77ebf04d   梁保满   个人版
59
60
61
62
63
64
65
66
67
68
            },
          },
          yAxis: {
            type: "value",
            axisLine: { show: false },
            splitLine: {
              show: true,
            },
            axisLabel: {
              color: "#666",
079cb4cf   梁保满   即时测导出
69
70
71
              formatter: function (name) {
                return name + "%"
              },
77ebf04d   梁保满   个人版
72
73
74
            },
          },
          grid: {
079cb4cf   梁保满   即时测导出
75
76
77
78
            top: 36,
            left: 20,
            right: 20,
            bottom: 20,
77ebf04d   梁保满   个人版
79
80
81
82
83
84
85
            containLabel: true,
          },
          series: that.params.map((item) => {
            return {
              name: item.name,
              type: "line",
              symbol: "circle",
079cb4cf   梁保满   即时测导出
86
              symbolSize: "6",
77ebf04d   梁保满   个人版
87
              lineStyle: {
079cb4cf   梁保满   即时测导出
88
                width: 1,
77ebf04d   梁保满   个人版
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
              },
              data: item.value,
            };
          }),
        };
        return options;
      },
      initData() {
        if (!this.chart) {
          const div = document.getElementById(this.id);
          this.chart = this.$echarts.init(div);
        }
        const options = this.setOption();
        this.chart?.clear();
        this.chart.setOption(options, true);
        this.chart.off("click");
        this.chart.on("click", "series", (params) => {
          // this.$emit("clickPieChart", params);
        });
      },
    },
  };
  </script>
  
  <style lang="scss" scoped>
  .chart {
    height: 100%;
  }
  </style>