yangfeng
2023-12-11 14101bd42ce17dfb9d951d0738abe9d303fb3fe5
src/views/cockpitPage/components/MachineStartupRate.vue
@@ -5,10 +5,10 @@
        <img src="/cockpitPage/machine-top.png" alt="" />
        <div class="top-title">
          <span>机器开机率</span>
          <span class="top-rate">{{ "60%" }}</span>
          <span class="top-rate">{{ startupRate + "%" }}</span>
        </div>
      </div>
      <div class="chart" ref="chart"></div>
      <div id="main" class="chart" ref="chart"></div>
    </div>
  </div>
</template>
@@ -16,72 +16,94 @@
<script>
//引入echart
import * as echarts from "echarts";
let myChart;
export default {
  components: {},
  props: {},
  props: {
    startupRate: {
      type: String,
      default: "",
    },
  },
  data() {
    return {};
  },
  mounted() {
    let chartData = [
      { value: 20, name: "闲置" },
      { value: 20, name: "维修" },
      { value: 60, name: "工作" },
    ];
    this.pieChart("chart", chartData);
  },
  mounted() {},
  watch: {},
  methods: {
    //在职
    pieChart(chartName, data) {
      let chartDom = this.$refs[chartName];
      let myChart = echarts.init(chartDom);
      if (myChart != null && myChart != "" && myChart != undefined) {
        myChart.dispose(); //销毁
      }
      myChart = echarts.init(chartDom);
      let img = "/cockpitPage/machine-chart-bg.png";
      let height = myChart.getHeight() / 1;
      let width = height + 5;
      let option;
      if (data) {
        option = {
          color: ["#065a6f", "#067687", "#00ffff"],
          tooltip: {
            trigger: "item",
            textStyle: {
              color: "#00FFFF",
            },
            borderColor: "#00FFFF",
            backgroundColor: "#238d8d6b",
            valueFormatter: function (value) {
              return value + "%";
            },
          },
          graphic: {
            elements: [
              {
                type: "image",
                z: 5,
                right: 25,
                // z: 5,
                style: {
                  image: img,
                  width: 240,
                  height: 245,
                  width: width,
                  height: height,
                  opacity: 0.55,
                },
                left: "center",
                top: "center",
                position: [5, 5],
                position: [10, 10],
              },
            ],
          },
          series: [
            {
              name: "Access From",
              name: "",
              type: "pie",
              radius: ["58%", "70%"],
              avoidLabelOverlap: false,
              label: {
                color: "#01f7fd",
                fontSize: 14,
                formatter: function (params) {
                  return `{a|${params.name}} {b|${params.value + "%"}}`;
                },
                rich: {
                  a: {
                    color: "#00ffff",
                    fontSize: 14,
                normal: {
                  position: "outer",
                  padding: [0, -62],
                  color: "#01f7fd",
                  fontSize: 12,
                  borderWidth: 5,
                  borderRadius: 4,
                  formatter: function (params) {
                    let label =
                      params.name.length > 4
                        ? `${params.name.slice(0, 3)}...`
                        : params.name;
                    return `{a|${label}} {b|${params.value + "%"}}`;
                  },
                  b: {
                    color: "#fccd1d",
                    fontSize: 14,
                  rich: {
                    a: {
                      color: "#00ffff",
                      fontSize: 14,
                    },
                    b: {
                      color: "#fccd1d",
                      fontSize: 14,
                    },
                  },
                },
              },
@@ -94,8 +116,13 @@
              },
              labelLine: {
                show: true,
                length: 50,
                length: 15,
                color: "blue",
                length2: 80,
              },
              labelLayout: {
                verticalAlign: "bottom",
                dy: -5,
              },
              data: data,
            },