月球大数据地理空间分析展示平台-【前端】-月球2期前端
surprise
2023-11-29 36fbd1e5a40e319e6ac5f43d11c99ba4b66e93a3
src/components/BarGraphAxisLine.vue
@@ -1,6 +1,6 @@
<template>
  <div class="Echarts_box" :style="{ width: width, height: height }">
    <div id="myEcharts1" style="width: 100%; height: 100%"></div>
    <div id="myEchartsBIG" style="width: 100%; height: 100%"></div>
  </div>
</template>
<script lang="ts" setup>
@@ -13,6 +13,7 @@
  defineEmits,
  watch,
  onUnmounted,
  nextTick,
} from "vue";
import * as echarts from "echarts";
@@ -20,21 +21,78 @@
const props = defineProps({
  width: String,
  height: String,
  layerData: Object,
});
let myEcharts = echarts;
let seriesData = ref([]);
let xAxisData = ref([]);
let dataLength;
let data = [];
onMounted(() => {
  initChart();
  props.layerData.points.forEach((e, i) => {
    xAxisData.value.push(returnFloat1(e.len));
  });
  data = trans(props.layerData.points);
  seriesData.value = [];
  data.forEach((e) => {
    seriesData.value.push({
      data: e,
      type: "line",
      smooth: true,
      symbol: "none", //取消折点圆圈
      label: {
        label: {
          show: false,
          position: "top",
          formatter: "{c}",
        },
      },
    });
  });
  nextTick(() => {
    initChart();
  });
});
onUnmounted(() => {
  myEcharts.dispose;
});
function returnFloat1(value) {
  if (value == 0) {
    return value;
  }
  value = Math.round(parseFloat(value) * 10) / 10;
  if (value.toString().indexOf(".") < 0) {
    value = value.toString() + ".0";
  }
  return value;
}
function trans(arr) {
  let result = [];
  arr.forEach((item) => {
    item.vals.forEach((d, i) => {
      let a = (result[i] = result[i] || []);
      a.push(d);
    });
  });
  return result;
}
function initChart() {
  let chart = myEcharts.init(
    document.getElementById("myEcharts1"),
    document.getElementById("myEchartsBIG"),
    "purple-passion"
  );
  var unit = props.layerData.unit ? props.layerData.unit : '';
  var val = [];
  xAxisData.value.filter(res => {
    val.push((res / 1000).toFixed(3));
  })
  chart.setOption({
    title: {
      text: "",
@@ -99,48 +157,54 @@
    },
    legend: {
      data: [],
      // data: xAxisData.value,
    },
    xAxis: {
      type: "category",
      data: [
        "一月",
        "二月",
        "三月",
        "四月",
        "五月",
        "六月",
        "七月",
        "八月",
        "九月",
        "十月",
        "十一月",
        "十二月",
      ],
      data: val,
      name: "千米",
      axisLabel: {
        //x轴文字的配置
        showMinLabel: true, // 强制显示最小值标签
        showMaxLabel: true, // 强制显示最大值标签
        //interval: 0, //使x轴文字显示全
        // textStyle: {
        //   color: "rgba(219, 225, 255, 1)",
        // },
        // formatter: function (params) {
        //   var newParamsName = "";
        //   var paramsNameNumber = params.length;
        //   var provideNumber = 3; //一行显示几个字
        //   var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
        //   if (paramsNameNumber > provideNumber) {
        //     for (var p = 0; p < rowNumber; p++) {
        //       var tempStr = "";
        //       var start = p * provideNumber;
        //       var end = start + provideNumber;
        //       if (p == rowNumber - 1) {
        //         tempStr = params.substring(start, paramsNameNumber);
        //       } else {
        //         tempStr = params.substring(start, end) + "\n";
        //       }
        //       newParamsName += tempStr;
        //     }
        //   } else {
        //     newParamsName = params;
        //   }
        //   return newParamsName;
        // },
      },
    },
    tooltip: {
      trigger: "axis",
    },
    yAxis: {
      name:unit,
      type: "value",
    },
    series: [
      {
        data: [606, 542, 985, 687, 501, 787, 339, 706, 383, 684, 669, 737],
        type: "line",
        smooth: true,
        symbol: "none", //取消折点圆圈
        itemStyle: {
          normal: {
            label: {
              show: false,
              position: "top",
              formatter: "{c}",
            },
          },
        },
      },
    ],
    series: seriesData.value,
  });
  window.onresize = function () {
    chart.resize();