From 64e1db9d04bd4e2dd8ee4e61f2ec1de922c2f84d Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期二, 28 十一月 2023 10:53:06 +0800
Subject: [PATCH] 标绘查询点,多边形添加最大最小值,线查询添加单位

---
 src/components/BarGraph.vue |  257 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 196 insertions(+), 61 deletions(-)

diff --git a/src/components/BarGraph.vue b/src/components/BarGraph.vue
index 65fb06a..d057e8c 100644
--- a/src/components/BarGraph.vue
+++ b/src/components/BarGraph.vue
@@ -1,4 +1,5 @@
 <template>
+  <div class="title">{{ layerData.layerName }}</div>
   <div id="myEcharts" :style="{ width: width, height: height }"></div>
 </template>
 <script lang="ts" setup>
@@ -11,61 +12,156 @@
   defineEmits,
   watch,
   onUnmounted,
+  nextTick,
 } from "vue";
 import * as echarts from "echarts";
+import { fa } from "element-plus/es/locale";
 
 //defineProps 鏉ユ帴鏀剁粍浠剁殑浼犲��
 const props = defineProps({
   width: String,
   height: String,
+  layerData: Object,
 });
 let myEcharts = echarts;
+let seriesData = ref([]);
+let xAxisData = ref([]);
+let dataLength;
+let data = [];
+let isshow = ref(true);
+let myChart = null;
+let optionData = [];
+watch(
+  () => props.layerData,
+  (nVal, oVal) => {
+    xAxisData.value = [];
+    props.layerData.points.forEach((e, i) => {
+      xAxisData.value.push(e.len);
+    });
+    data = trans(props.layerData.points);
+    optionData = 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();
+    });
+  },
+  { deep: true }
+);
 onMounted(() => {
-  initChart();
+  // console.log(props.layerData);
+  xAxisData.value = [];
+  if (props.layerData && props.layerData.points) {
+    props.layerData.points.forEach((e, i) => {
+      xAxisData.value.push(e.len);
+    });
+   
+    data = trans(props.layerData.points);
+    optionData = props.layerData.points;
+    seriesData.value = [];
+    data.forEach((e) => {
+      seriesData.value.push({
+        data: e,
+        type: "line",
+        smooth: true,
+
+        label: {
+          label: {
+            show: false,
+            position: "top",
+            formatter: "{c}",
+          },
+        },
+      });
+    });
+
+    nextTick(() => {
+      initChart();
+    });
+  }
 });
 
 onUnmounted(() => {
   myEcharts.dispose;
 });
+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("myEcharts"),
+  if (myChart) {
+    myChart.clear();
+  }
+  var unit = props.layerData.unit ? props.layerData.unit : '';
+  var valXData = [];
+  xAxisData.value.filter((rs) => {
+    valXData.push((parseFloat(rs) / 1000).toFixed(3));
+  });
+  myChart = myEcharts.init(
+    document.getElementById(`myEcharts`),
     "purple-passion"
   );
-  chart.setOption({
-    title: {
-      text: "",
-      left: "center",
-    },
+  myChart.setOption({
+    // title: {
+    //   text: props.layerData.layerName,
+    //   left: "center",
+    //   textStyle: {
+    //     //鏂囧瓧棰滆壊
+    //     color: "#fff",
+    //     // //瀛椾綋椋庢牸,'normal','italic','oblique'
+    //     // fontStyle: "normal",
+    //     // //瀛椾綋绮楃粏 'normal','bold','bolder','lighter',100 | 200 | 300 | 400...
+    //     // fontWeight: "bold",
+    //     // //瀛椾綋绯诲垪
+    //     // fontFamily: "sans-serif",
+    //     // //瀛椾綋澶у皬
+    //     fontSize: 14,
+    //   },
+    // },
     legend: {
-      data: [],
+      // data: xAxisData.value,
     },
     xAxis: {
+      name: "鍗冪背",
       type: "category",
-      data: [
-        "涓�鏈�",
-        "浜屾湀",
-        "涓夋湀",
-        "鍥涙湀",
-        "浜旀湀",
-        "鍏湀",
-        "涓冩湀",
-        "鍏湀",
-        "涔濇湀",
-        "鍗佹湀",
-        "鍗佷竴鏈�",
-        "鍗佷簩鏈�",
-      ],
-      show: false, // 涓嶆樉绀哄潗鏍囪酱绾裤�佸潗鏍囪酱鍒诲害绾垮拰鍧愭爣杞翠笂鐨勬枃瀛�
+      data: valXData,
+      show: true, // 涓嶆樉绀哄潗鏍囪酱绾裤�佸潗鏍囪酱鍒诲害绾垮拰鍧愭爣杞翠笂鐨勬枃瀛�
       axisTick: {
-        show: false, // 涓嶆樉绀哄潗鏍囪酱鍒诲害绾�
+        show: true, // 涓嶆樉绀哄潗鏍囪酱鍒诲害绾�
       },
+
       axisLine: {
-        show: false, // 涓嶆樉绀哄潗鏍囪酱绾�
+        show: true, // 涓嶆樉绀哄潗鏍囪酱绾�
       },
       axisLabel: {
-        show: false, // 涓嶆樉绀哄潗鏍囪酱涓婄殑鏂囧瓧
+        show: true, // 涓嶆樉绀哄潗鏍囪酱涓婄殑鏂囧瓧
+        showMinLabel: true, // 寮哄埗鏄剧ず鏈�灏忓�兼爣绛�
+        showMaxLabel: true, // 寮哄埗鏄剧ず鏈�澶у�兼爣绛�
       },
       splitLine: {
         show: false, // 涓嶆樉绀虹綉鏍肩嚎
@@ -73,44 +169,83 @@
     },
     tooltip: {
       trigger: "axis",
-    },
-    yAxis: {
-      type: "value",
-      show: false, // 涓嶆樉绀哄潗鏍囪酱绾裤�佸潗鏍囪酱鍒诲害绾垮拰鍧愭爣杞翠笂鐨勬枃瀛�
-      axisTick: {
-        show: false, // 涓嶆樉绀哄潗鏍囪酱鍒诲害绾�
-      },
-      axisLine: {
-        show: false, // 涓嶆樉绀哄潗鏍囪酱绾�
-      },
-      axisLabel: {
-        show: false, // 涓嶆樉绀哄潗鏍囪酱涓婄殑鏂囧瓧
-      },
-      splitLine: {
-        show: false, // 涓嶆樉绀虹綉鏍肩嚎
-      },
-    },
-    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}",
-            },
-          },
+      axisPointer: {
+        type: "cross",
+        label: {
+          backgroundColor: "#6a7985",
         },
       },
-    ],
+
+      // formatter: "鏁板�硷細{c} <br> 璺濈锛歿b}m", //{a}锛堢郴鍒楀悕绉帮級锛寋b}锛堟暟鎹」鍚嶇О锛夛紝{c}锛堟暟鍊硷級, {d}锛堢櫨鍒嗘瘮锛�
+      formatter: (result) => {
+        var val = result[0];
+        if (optionData) {
+          for (var i in optionData) {
+            var res = optionData[i];
+            if (
+              optionData[val.dataIndex].len == res.len &&
+              res.vals[0] == val.data
+            ) {
+              return (
+                "鏁板�硷細 " +
+                res.vals[0] +
+                " <br> 璺濈锛�" +
+                (res.len / 1000).toFixed(3) +
+                "KM<br> 缁忓害锛�" +
+                res.x.toFixed(6) +
+                "<br> 绾害锛�" +
+                res.y.toFixed(6)
+              );
+              break;
+            }
+          }
+          return "鏁板�硷細 " + val.data + " <br> 璺濈锛�" + val.dataIndex + "Km";
+        } else {
+          return "鏁板�硷細 " + val.data + " <br> 璺濈锛�" + val.dataIndex + "m";
+        }
+      },
+    },
+
+    grid: {
+      left: "5%", // 缁勪欢绂诲鍣ㄥ乏渚х殑璺濈,鐧惧垎姣斿瓧绗︿覆鎴栨暣鍨嬫暟瀛�
+
+      right: "23%",
+
+      containLabel: true, //grid 鍖哄煙鏄惁鍖呭惈鍧愭爣杞寸殑鍒诲害鏍囩锛�
+    },
+
+    yAxis: {
+      name: unit,
+      type: "value",
+      show: true, // 涓嶆樉绀哄潗鏍囪酱绾裤�佸潗鏍囪酱鍒诲害绾垮拰鍧愭爣杞翠笂鐨勬枃瀛�
+      axisTick: {
+        show: true, // 涓嶆樉绀哄潗鏍囪酱鍒诲害绾�
+      },
+      axisLine: {
+        show: true, // 涓嶆樉绀哄潗鏍囪酱绾�
+      },
+      axisLabel: {
+        show: true, // 涓嶆樉绀哄潗鏍囪酱涓婄殑鏂囧瓧
+      },
+      splitLine: {
+        show: true, // 涓嶆樉绀虹綉鏍肩嚎
+      },
+    },
+    series: seriesData.value,
   });
   window.onresize = function () {
-    chart.resize();
+    myChart.resize();
   };
 }
 </script>
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.title {
+  width: 100%;
+  word-wrap: break-word;
+  text-align: center;
+  color: #fff;
+  font-size: 14px;
+  padding: 0 20px;
+  box-sizing: border-box;
+}
+</style>

--
Gitblit v1.9.3