yangfeng
2023-12-11 14101bd42ce17dfb9d951d0738abe9d303fb3fe5
src/views/cockpitPage/components/PerSonnelProductivity.vue
@@ -17,6 +17,7 @@
//引入echart
import * as echarts from "echarts";
let myChart;
let myRightChart;
export default {
  components: {
    ChartTitle,
@@ -61,6 +62,7 @@
      myChart = echarts.init(chartDom);
      let option;
      let lineColor = "#35ddc74d";
      let spirit = "/cockpitPage/order-bg.png";
      if (data) {
        option = {
          color: ["#00FFFF", "#dcb018"],
@@ -68,6 +70,14 @@
            trigger: "axis",
            axisPointer: {
              type: "none",
            },
            textStyle: {
              color: "#00FFFF",
            },
            borderColor: "#00FFFF",
            backgroundColor: "#238d8d6b",
            valueFormatter: function (value) {
              return value + "%";
            },
          },
          grid: {
@@ -83,6 +93,9 @@
              show: false,
              startValue: this.startValue, // 从头开始
              endValue: this.endValue, // 一次性展示几个
              zoomOnMouseWheel: false,
              moveOnMouseWheel: true,
              moveOnMouseMove: true,
            },
          ],
          legend: {
@@ -108,10 +121,10 @@
                // rotate:45,
                margin: 10,
                show: true,
                fontSize:12,
                fontSize: 12,
                textStyle: {
                  color: function (params, index) {
                    let colorList = ["#dcb018", "#00FFFF"];
                    let colorList = ["#fec718", "#00FFFF"];
                    if (index % 2 == 0) {
                      return colorList[0];
                    } else {
@@ -132,7 +145,7 @@
          xAxis: [
            {
              type: "value",
              name: "单位:件",
              // name: "单位:件",
              // min: data.yAxis[0].min?data.yAxis.min:0,
              minInterval: 1, //坐标轴是整数
              max: Math.ceil(eval(`Math.max(${data.datay})`) / 5) * 5, //数据最大值加3
@@ -162,25 +175,47 @@
                textStyle: {
                  color: "#00FFFF",
                },
                formatter: function (value) {
                  return `${value}%`;
                },
              },
            },
          ],
          series: [
            {
              type: "bar",
              type: "pictorialBar",
              name: "",
              barWidth: "15",
              symbol: spirit,
              symbolRepeat: true,
              symbolMargin: "25%",
              symbolClip: true,
              symbolSize: [4, 11],
              barCategoryGap: "40%",
              label: {
                show: true,
                position: "right",
                color: "#00FFFF",
                formatter: function (params) {
                  if (params.dataIndex % 2 == 0) {
                    return `{a|${params.value}%}`;
                  } else {
                    return `{b|${params.value}%}`;
                  }
                },
                rich: {
                  a: {
                    color: "#00FFFF",
                  },
                  b: {
                    color: "#fccd1d",
                  },
                },
              },
              itemStyle: {
                normal: {
                  //柱形图圆角,初始化效果
                  barBorderRadius: [4, 4, 0, 0],
                  color: function (params) {
                    let colorList = ["#dcb018", "#00FFFF"];
                    let colorList = ["#fccd1d", "#00FFFF"];
                    if (params.dataIndex % 2 == 0) {
                      return colorList[0];
                    } else {
@@ -215,24 +250,41 @@
    },
    getChartRight(chartName, data) {
      let chartDom = this.$refs[chartName];
      let myChart = echarts.init(chartDom);
      if (
        myRightChart != null &&
        myRightChart != "" &&
        myRightChart != undefined
      ) {
        myRightChart.dispose(); //销毁
      }
      myRightChart = echarts.init(chartDom);
      let img = "/cockpitPage/dotted-circle.png";
      let height = myRightChart.getHeight() / 1;
      let width = height + 5;
      let option;
      if (data) {
        option = {
          color: ["#dcb018", "#735b09", "#ebd68e", "#c7b36e"],
          tooltip: {
            trigger: "item",
            textStyle: {
              color: "#00FFFF",
            },
            borderColor: "#00FFFF",
            backgroundColor: "#238d8d6b",
            valueFormatter: function (value) {
              return value + "%";
            },
          },
          graphic: {
            elements: [
              {
                type: "image",
                z: 3,
                // z: 3,
                style: {
                  image: img,
                  width: 240,
                  height: 240,
                  width: width,
                  height: height,
                },
                left: "center",
                top: "center",
@@ -242,11 +294,10 @@
          },
          series: [
            {
              name: "Access From",
              name: "人员技能比",
              type: "pie",
              radius: ["52%", "62%"],
              avoidLabelOverlap: false,
              label: {
                normal: {
                  position: "outer",
@@ -256,7 +307,11 @@
                  borderWidth: 5,
                  borderRadius: 4,
                  formatter: function (params) {
                    return `{a|${params.name}} {b|${params.value + "%"}}`;
                    let label =
                      params.name.length > 4
                        ? `${params.name.slice(0, 3)}...`
                        : params.name;
                    return `{a|${label}} {b|${params.value + "%"}}`;
                  },
                  rich: {
                    a: {
@@ -281,7 +336,7 @@
              labelLine: {
                show: true,
                length: 4,
                length2: 80,
                length2: 70,
                lineStyle: {
                  color: "#dcb018",
                },
@@ -295,10 +350,10 @@
          ],
        };
        option && myChart.setOption(option);
        option && myRightChart.setOption(option);
      } else {
        option = {};
        myChart.setOption(option, true);
        myRightChart.setOption(option, true);
      }
    },
  },
@@ -308,7 +363,7 @@
<style scoped lang="scss">
.bar-chart {
  width: 100%;
  height: calc(100% - 20px);
  height: calc(100% - 10px);
  padding: 20px 0 0;
  .bar-contents {
@@ -317,7 +372,7 @@
    .chart-left {
      width: calc(60% - 20px);
      height: 100%;
      height: calc(100% - 20px);
      margin-right: 20px;
      float: left;
      border: 1px solid #00ffff;
@@ -327,7 +382,7 @@
    .chart-right {
      width: 40%;
      float: left;
      height: 100%;
      height: calc(100% - 20px);
      position: relative;
      .chart-bg {
        width: 100%;