From 19a4741002f4208bf7fc951cbf3219897af5699a Mon Sep 17 00:00:00 2001 From: surprise <15810472099@163.com> Date: 星期四, 26 十月 2023 16:41:22 +0800 Subject: [PATCH] 标绘查询修改 --- src/components/BarGraph.vue | 254 ++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 193 insertions(+), 61 deletions(-) diff --git a/src/components/BarGraph.vue b/src/components/BarGraph.vue index 65fb06a..b1d5c64 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,154 @@ 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 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 +167,82 @@ }, 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: { + 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