轨迹地图修改
This commit is contained in:
parent
ac5f95d248
commit
e61cc4aea9
@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="" />
|
||||
<meta name="keywords" content="" />
|
||||
<script type="text/javascript" type="module" src="./webconfig.js"></script>
|
||||
<script type="text/javascript" type="module" src="/webconfig.js"></script>
|
||||
<title>文档与数据管理系统</title>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -3,7 +3,7 @@
|
||||
"version": "1.2.0",
|
||||
"scripts": {
|
||||
"dev": "vite serve --mode development",
|
||||
"prod": "vue-tsc --noEmit && vite build --mode production",
|
||||
"prod": " vite build --mode production",
|
||||
"serve": "vite preview",
|
||||
"lint": "eslint src/**/*.{ts,js,vue} --fix",
|
||||
"prepare": "husky install",
|
||||
|
@ -43,13 +43,13 @@
|
||||
|
||||
<script setup>
|
||||
import {computed, reactive, ref} from "vue";
|
||||
import common from "~/common";
|
||||
import common from "@/components/file/common";
|
||||
|
||||
import 'lazysizes';
|
||||
import useGlobalConfigStore from "~/stores/global-config";
|
||||
// import 'lazysizes';
|
||||
import useGlobalConfigStore from "@/components/file/stores/global-config";
|
||||
let globalConfigStore = useGlobalConfigStore();
|
||||
|
||||
import useFileDataStore from "~/stores/file-data";
|
||||
import useFileDataStore from "@/components/file/stores/file-data";
|
||||
let fileDataStore = useFileDataStore();
|
||||
|
||||
// 计算图片二维列表, 多行 * 多列
|
||||
@ -109,7 +109,7 @@ let galleryRowWidth = computed(() => {
|
||||
|
||||
|
||||
// 引入文件预览组件
|
||||
import useFilePreview from '~/composables/file/useFilePreview';
|
||||
import useFilePreview from '@/components/file/file/useFilePreview';
|
||||
const { openImage } = useFilePreview();
|
||||
const openGalleryImage = (item) => {
|
||||
if (!globalConfigStore.zfileConfig.imagePreview.gallery) {
|
||||
|
@ -22,16 +22,13 @@ import { vue3dLoader } from "vue-3d-loader";
|
||||
import useFilePwd from "@/components/file/file/useFilePwd";
|
||||
let { getPathPwd } = useFilePwd();
|
||||
|
||||
import useFilePreview from "@/components/file/file/useFilePreview";
|
||||
const { dialogVideoVisible, dialogTextVisible, dialogPdfVisible, dialogOfficeVisible, dialog3dVisible } = useFilePreview();
|
||||
|
||||
import useRouterData from "@/components/file/useRouterData";
|
||||
let { currentPath, storageKey } = useRouterData();
|
||||
|
||||
import useStorageConfigStore from "@/components/file/stores/storage-config";
|
||||
let storageConfigStore = useStorageConfigStore();
|
||||
|
||||
import { loadFileItemReq } from "@/components/file/api/home";
|
||||
import { loadFileItemReq } from "@/api/home";
|
||||
import common from "@/components/file/common";
|
||||
|
||||
const loadFinish = ref(false);
|
||||
|
@ -12,40 +12,11 @@ import { ref, onMounted, nextTick, defineAsyncComponent } from "vue";
|
||||
import { useStorage } from '@vueuse/core';
|
||||
let common = useCommon();
|
||||
let route = useRoute();
|
||||
|
||||
|
||||
import useFilePwd from "@/components/file/file/useFilePwd";
|
||||
let { getPathPwd } = useFilePwd();
|
||||
|
||||
|
||||
import useRouterData from "@/components/file/useRouterData";
|
||||
let { currentPath, storageKey } = useRouterData();
|
||||
|
||||
import { loadFileItemReq } from "@/api/home";
|
||||
|
||||
// import IconPrev from '~icons/custom/prev';
|
||||
// import IconNext from '~icons/custom/next';
|
||||
|
||||
|
||||
import useFileDataStore from "@/components/file/stores/file-data";
|
||||
let fileDataStore = useFileDataStore();
|
||||
|
||||
import useStorageConfigStore from "@/components/file/stores/storage-config";
|
||||
let storageConfigStore = useStorageConfigStore();
|
||||
|
||||
// 获取视频列表, 如果是当前视频, 则设置为默认勾选.
|
||||
const getVideoList = (currentName) => {
|
||||
let result = [];
|
||||
fileDataStore.filterFileByType('video').forEach(file => {
|
||||
result.push({
|
||||
default: file.name === currentName,
|
||||
html: file.name,
|
||||
url: file.url
|
||||
});
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
let currentVideo = ref(null);
|
||||
|
||||
@ -186,11 +157,6 @@ const initArtPlayer = async (name, url) => {
|
||||
let originPathAndName = common.removeDuplicateSeparator(`${localStorage.getItem('filepath')}/${name}`);
|
||||
let m3u8PathAndName = common.removeDuplicateSeparator(`${localStorage.getItem('filepath')}/__${name}__/video.m3u8`);
|
||||
|
||||
let m3u8FileItemParam = {
|
||||
storageKey: 'minio',
|
||||
path: m3u8PathAndName,
|
||||
password: getPathPwd()
|
||||
}
|
||||
|
||||
let h5aiDplayerMode = false;
|
||||
|
||||
|
@ -55,6 +55,17 @@
|
||||
.attr('fill', 'none')
|
||||
.attr('stroke', 'steelblue')
|
||||
.attr('stroke-width', 2);
|
||||
svg.append("text")
|
||||
.attr("class", "x-axis-label") // 修改为独立class
|
||||
.attr("transform", "translate(400,440)")
|
||||
.style("text-anchor", "middle")
|
||||
.text("时间 (s)");
|
||||
|
||||
svg.append("text")
|
||||
.attr("class", "y-axis-label")
|
||||
.attr("transform", "rotate(-90) translate(-220, 15)") // 调整定位参数
|
||||
.style("text-anchor", "middle")
|
||||
.text("高度 (m)");
|
||||
|
||||
// 首次绘制
|
||||
updateChart();
|
||||
@ -94,5 +105,13 @@
|
||||
height: 600px;
|
||||
border: 1px solid #eee;
|
||||
margin: 20px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.x-axis-label,
|
||||
.y-axis-label {
|
||||
font-size: 12px;
|
||||
fill: #666;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
</style>
|
@ -3,7 +3,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted, watch } from 'vue'
|
||||
import { ref, onMounted, watch,defineEmits } from 'vue'
|
||||
import * as d3 from 'd3'
|
||||
import chinaData from './newJson.json'
|
||||
|
||||
@ -14,9 +14,13 @@ const props = defineProps({
|
||||
[116.405285, 39.904989], // 北京
|
||||
[121.472644, 31.231706] // 上海
|
||||
]
|
||||
},
|
||||
qvehuan: {
|
||||
type: Boolean,
|
||||
default: () => false
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['qvehuan1']);
|
||||
const mapContainer = ref(null)
|
||||
let svg, mapGroup, markersGroup, zoom
|
||||
|
||||
@ -51,7 +55,26 @@ const initMap = () => {
|
||||
.attr('d', path)
|
||||
.attr('fill', '#e7e7e7')
|
||||
.attr('stroke', '#fff')
|
||||
|
||||
mapGroup.append('g')
|
||||
.selectAll('text')
|
||||
.data(chinaData.features)
|
||||
.enter()
|
||||
.append('text')
|
||||
.attr('x', d => {
|
||||
const centroid = path.centroid(d)
|
||||
return centroid[0]
|
||||
})
|
||||
.attr('y', d => {
|
||||
const centroid = path.centroid(d)
|
||||
return centroid[1]
|
||||
})
|
||||
.text(d => d.properties.name || '') // 确保JSON数据包含properties.name
|
||||
.attr('text-anchor', 'middle')
|
||||
.attr('dominant-baseline', 'central')
|
||||
.attr('fill', '#333')
|
||||
.style('font-size', '12px')
|
||||
.style('font-family', 'Arial')
|
||||
.style('pointer-events', 'none') // 防止干扰交互
|
||||
zoom = d3.zoom()
|
||||
.scaleExtent([0.2, 8])
|
||||
.on('zoom', (event) => {
|
||||
@ -65,9 +88,14 @@ const updateRoute = () => {
|
||||
.center([104, 37])
|
||||
.scale(600)
|
||||
.translate([1000 / 2, 800 / 2])
|
||||
if (initqie.value) {
|
||||
// debugger
|
||||
mapGroup.selectAll('.route-path').remove()
|
||||
markersGroup.selectAll('*').remove()
|
||||
initqie.value = false
|
||||
emit('qvehuan1', initqie.value);
|
||||
}
|
||||
|
||||
mapGroup.selectAll('.route-path').remove()
|
||||
markersGroup.selectAll('*').remove()
|
||||
|
||||
const routeData = {
|
||||
type: "LineString",
|
||||
@ -80,11 +108,11 @@ const updateRoute = () => {
|
||||
.attr('d', d3.geoPath().projection(projection))
|
||||
.attr('fill', 'none')
|
||||
.attr('stroke', '#f00')
|
||||
.attr('stroke-width', 2)
|
||||
.attr('stroke-dasharray', function() {
|
||||
.attr('stroke-width', 1)
|
||||
.attr('stroke-dasharray', function () {
|
||||
return this.getTotalLength()
|
||||
})
|
||||
.attr('stroke-dashoffset', function() {
|
||||
.attr('stroke-dashoffset', function () {
|
||||
return this.getTotalLength()
|
||||
})
|
||||
.transition()
|
||||
@ -94,7 +122,6 @@ const updateRoute = () => {
|
||||
// 修改标记点绘制逻辑
|
||||
props.coordinates.forEach((coord, i) => {
|
||||
if (!Array.isArray(coord) || coord.length !== 2) return
|
||||
|
||||
const lon = Number(coord[0])
|
||||
const lat = Number(coord[1])
|
||||
|
||||
@ -102,29 +129,29 @@ const updateRoute = () => {
|
||||
|
||||
const [x, y] = projection([lon, lat])
|
||||
|
||||
// 添加缩放补偿逻辑
|
||||
const currentTransform = d3.zoomTransform(svg.node())
|
||||
const baseRadius = 8
|
||||
|
||||
// 添加缩放补偿逻
|
||||
markersGroup.append('circle')
|
||||
.attr('cx', x)
|
||||
.attr('cy', y)
|
||||
.attr('r', baseRadius / currentTransform.k) // 根据缩放级别调整半径
|
||||
.attr('r', 1) // 根据缩放级别调整半径
|
||||
.attr('fill', '#ff4757')
|
||||
.attr('stroke', 'white')
|
||||
.attr('stroke-width', 2 / currentTransform.k) // 同步调整描边宽度
|
||||
.attr('stroke-width', 0.1) // 同步调整描边宽度
|
||||
})
|
||||
}
|
||||
|
||||
const initqie = ref(false)
|
||||
onMounted(() => {
|
||||
if(props.coordinates){
|
||||
if (props.coordinates) {
|
||||
initMap()
|
||||
updateRoute()
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
watch(() => props.coordinates, () => {
|
||||
watch(() => props.qvehuan, (newVal) => {
|
||||
initqie.value = newVal
|
||||
updateRoute()
|
||||
}, { deep: true })
|
||||
watch(() => props.coordinates, (newVal) => {
|
||||
updateRoute()
|
||||
}, { deep: true })
|
||||
</script>
|
||||
|
@ -555,7 +555,7 @@
|
||||
<script setup lang="ts">
|
||||
import {ref, onMounted} from 'vue'
|
||||
import * as echarts from 'echarts'
|
||||
import { getSchoolCheckReportData } from "@/api/planscreening";
|
||||
// import { getSchoolCheckReportData } from "@/api/planscreening";
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
const userStore = useUserStore();
|
||||
@ -1119,53 +1119,53 @@ const hyperopiaGradeListlabel3 = ref('')
|
||||
const hyperopiasum:any = ref({})
|
||||
const hyperopiasumlist = ref([])
|
||||
function init(){
|
||||
getSchoolCheckReportData(querylist.value).then((res) => {
|
||||
summaryData.value = res.data.summaryData
|
||||
popTitle.value = summaryData.value.school_name + '_' + summaryData.value.plan_name + '_'+summaryData.value.report_date
|
||||
schoolData.value = res.data.school_data
|
||||
schoolInsighted.value = res.data.school_insighted[0]
|
||||
insightedGradeGexList.value = res.data.school_insighted_grade_sex_list
|
||||
insightedGradeGexLevelList.value = res.data.school_insighted_grade_sex_level_list
|
||||
eyedataVisionGroupList.value = res.data.school_eyedata_vision_group_list
|
||||
eyedataSphSeList.value = res.data.school_eyedata_sph_se_list
|
||||
avgStdList.value = res.data.school_avg_std_list
|
||||
hyperopiaGradeList.value = res.data.school_hyperopia_grade_list
|
||||
poorGradeList.value = res.data.school_poor_grade_list
|
||||
insightedGradeList.value = res.data.school_insighted_grade_list
|
||||
hyperopiasum.value = hyperopiaGradeList.value[hyperopiaGradeList.value.length - 1]
|
||||
let labelval = ''
|
||||
for(let i = 0;i<insightedGradeList.value.length;i++){
|
||||
if(i !== insightedGradeList.value.length - 1){
|
||||
labelval = labelval + insightedGradeList.value[i].avg_js_rate+'%,'
|
||||
}else{
|
||||
labelval = labelval + insightedGradeList.value[i].avg_js_rate+'%'
|
||||
}
|
||||
}
|
||||
insightedGradeListlabel.value = insightedGradeList.value[0].grade_name +'至'+insightedGradeList.value[insightedGradeList.value.length - 1].grade_name+'近视率分别为' + labelval
|
||||
let labelval2 = ''
|
||||
let labelval3 = ''
|
||||
let labelval4 = ''
|
||||
hyperopiasumlist.value = []
|
||||
for(let j = 0;j<hyperopiaGradeList.value.length - 1;j++){
|
||||
hyperopiasumlist.value.push(hyperopiaGradeList.value[j])
|
||||
if(j !== hyperopiaGradeList.value.length - 2){
|
||||
labelval2 = labelval2 + hyperopiaGradeList.value[j].sufficient_percentage+'%,'
|
||||
labelval3 = labelval3 + hyperopiaGradeList.value[j].hyperopia_percentage+'%,'
|
||||
labelval4 = labelval2 + hyperopiaGradeList.value[j].insufficient_percentage+'%,'
|
||||
}else{
|
||||
labelval2 = labelval2 + hyperopiaGradeList.value[j].sufficient_percentage+'%'
|
||||
labelval3 = labelval3 + hyperopiaGradeList.value[j].hyperopia_percentage+'%'
|
||||
labelval4 = labelval4 + hyperopiaGradeList.value[j].insufficient_percentage+'%'
|
||||
}
|
||||
}
|
||||
hyperopiaGradeListlabel.value = hyperopiaGradeList.value[0].grade_name +'至'+hyperopiaGradeList.value[hyperopiaGradeList.value.length - 2].grade_name+'远视储备率分别为' + labelval
|
||||
hyperopiaGradeListlabel2.value = hyperopiaGradeList.value[0].grade_name +'至'+hyperopiaGradeList.value[hyperopiaGradeList.value.length - 2].grade_name+'远视率分别为' + labelval
|
||||
hyperopiaGradeListlabel3.value = hyperopiaGradeList.value[0].grade_name +'至'+hyperopiaGradeList.value[hyperopiaGradeList.value.length - 2].grade_name+'远视储备不足率分别为' + labelval
|
||||
// getSchoolCheckReportData(querylist.value).then((res) => {
|
||||
// summaryData.value = res.data.summaryData
|
||||
// popTitle.value = summaryData.value.school_name + '_' + summaryData.value.plan_name + '_'+summaryData.value.report_date
|
||||
// schoolData.value = res.data.school_data
|
||||
// schoolInsighted.value = res.data.school_insighted[0]
|
||||
// insightedGradeGexList.value = res.data.school_insighted_grade_sex_list
|
||||
// insightedGradeGexLevelList.value = res.data.school_insighted_grade_sex_level_list
|
||||
// eyedataVisionGroupList.value = res.data.school_eyedata_vision_group_list
|
||||
// eyedataSphSeList.value = res.data.school_eyedata_sph_se_list
|
||||
// avgStdList.value = res.data.school_avg_std_list
|
||||
// hyperopiaGradeList.value = res.data.school_hyperopia_grade_list
|
||||
// poorGradeList.value = res.data.school_poor_grade_list
|
||||
// insightedGradeList.value = res.data.school_insighted_grade_list
|
||||
// hyperopiasum.value = hyperopiaGradeList.value[hyperopiaGradeList.value.length - 1]
|
||||
// let labelval = ''
|
||||
// for(let i = 0;i<insightedGradeList.value.length;i++){
|
||||
// if(i !== insightedGradeList.value.length - 1){
|
||||
// labelval = labelval + insightedGradeList.value[i].avg_js_rate+'%,'
|
||||
// }else{
|
||||
// labelval = labelval + insightedGradeList.value[i].avg_js_rate+'%'
|
||||
// }
|
||||
// }
|
||||
// insightedGradeListlabel.value = insightedGradeList.value[0].grade_name +'至'+insightedGradeList.value[insightedGradeList.value.length - 1].grade_name+'近视率分别为' + labelval
|
||||
// let labelval2 = ''
|
||||
// let labelval3 = ''
|
||||
// let labelval4 = ''
|
||||
// hyperopiasumlist.value = []
|
||||
// for(let j = 0;j<hyperopiaGradeList.value.length - 1;j++){
|
||||
// hyperopiasumlist.value.push(hyperopiaGradeList.value[j])
|
||||
// if(j !== hyperopiaGradeList.value.length - 2){
|
||||
// labelval2 = labelval2 + hyperopiaGradeList.value[j].sufficient_percentage+'%,'
|
||||
// labelval3 = labelval3 + hyperopiaGradeList.value[j].hyperopia_percentage+'%,'
|
||||
// labelval4 = labelval2 + hyperopiaGradeList.value[j].insufficient_percentage+'%,'
|
||||
// }else{
|
||||
// labelval2 = labelval2 + hyperopiaGradeList.value[j].sufficient_percentage+'%'
|
||||
// labelval3 = labelval3 + hyperopiaGradeList.value[j].hyperopia_percentage+'%'
|
||||
// labelval4 = labelval4 + hyperopiaGradeList.value[j].insufficient_percentage+'%'
|
||||
// }
|
||||
// }
|
||||
// hyperopiaGradeListlabel.value = hyperopiaGradeList.value[0].grade_name +'至'+hyperopiaGradeList.value[hyperopiaGradeList.value.length - 2].grade_name+'远视储备率分别为' + labelval
|
||||
// hyperopiaGradeListlabel2.value = hyperopiaGradeList.value[0].grade_name +'至'+hyperopiaGradeList.value[hyperopiaGradeList.value.length - 2].grade_name+'远视率分别为' + labelval
|
||||
// hyperopiaGradeListlabel3.value = hyperopiaGradeList.value[0].grade_name +'至'+hyperopiaGradeList.value[hyperopiaGradeList.value.length - 2].grade_name+'远视储备不足率分别为' + labelval
|
||||
|
||||
insightedAllList.value = splitarr(res.data.school_insighted_grade_class_sex_level_list)
|
||||
poorAllList.value = splitarr(res.data.school_poor_grade_class_list)
|
||||
initchart()
|
||||
})
|
||||
// insightedAllList.value = splitarr(res.data.school_insighted_grade_class_sex_level_list)
|
||||
// poorAllList.value = splitarr(res.data.school_poor_grade_class_list)
|
||||
// initchart()
|
||||
// })
|
||||
}
|
||||
function splitarr(dataval:any){
|
||||
const groupedItems = dataval.reduce((acc, item) => {
|
||||
|
@ -553,7 +553,7 @@
|
||||
<script setup lang="ts">
|
||||
import {ref, nextTick, onMounted} from 'vue'
|
||||
import * as echarts from 'echarts'
|
||||
import { getRegionCheckReportData } from "@/api/planscreening";
|
||||
// import { getRegionCheckReportData } from "@/api/planscreening";
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
const route = useRoute();
|
||||
@ -1166,138 +1166,138 @@ const poorAllList = ref([])
|
||||
const insightedGradeList = ref([])
|
||||
const hyperopiasum:any = ref({})
|
||||
function init(){
|
||||
getRegionCheckReportData(querylist.value).then((res) => {
|
||||
summaryData.value = res.data.summaryData
|
||||
popTitle.value = summaryData.value.plan_name + '_'+summaryData.value.report_date
|
||||
regionData.value = res.data.region_data
|
||||
const schoolnametotal = []
|
||||
schoollist.value = {
|
||||
schoolCount:0,
|
||||
schoolCount2:0,
|
||||
schoolCount3:0,
|
||||
schoolCount4:0,
|
||||
schoolCount5:0,
|
||||
schoolCount6:0,
|
||||
studentCount:regionData.value[regionData.value.length - 1].student_count,
|
||||
classCount:regionData.value[regionData.value.length - 1].class_count
|
||||
}
|
||||
for(let i = 0 ;i<regionData.value.length - 1;i++){
|
||||
schoolnametotal.push(regionData.value[i].name)
|
||||
if(regionData.value[i].type === '高中'){
|
||||
schoollist.value.schoolCount = schoollist.value.schoolCount + 1
|
||||
}
|
||||
if(regionData.value[i].type === '高中/初中'){
|
||||
schoollist.value.schoolCount2 = schoollist.value.schoolCount2 + 1
|
||||
}
|
||||
if(regionData.value[i].type === '初中'){
|
||||
schoollist.value.schoolCount3 = schoollist.value.schoolCount3 + 1
|
||||
}
|
||||
if(regionData.value[i].type === '初中/小学'){
|
||||
schoollist.value.schoolCount4 = schoollist.value.schoolCount4 + 1
|
||||
}
|
||||
if(regionData.value[i].type === '小学'){
|
||||
schoollist.value.schoolCount5 = schoollist.value.schoolCount5 + 1
|
||||
}
|
||||
if(regionData.value[i].type === '幼儿园'){
|
||||
schoollist.value.schoolCount6 = schoollist.value.schoolCount6 + 1
|
||||
}
|
||||
}
|
||||
schoollabel.value = schoolnametotal.join()
|
||||
regionInsighted.value = res.data.region_insighted
|
||||
let rankdata = []
|
||||
let rankdata2 = []
|
||||
let rankdata3 = []
|
||||
let rankdata4 = []
|
||||
let rankdata5 = []
|
||||
let rankdata6 = []
|
||||
for(let j = 0 ;j<res.data.region_school_rank.length - 1;j++){
|
||||
if(res.data.region_school_rank[j].school_type === '1-幼儿园'){
|
||||
rankdata.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +' %,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
}else if(res.data.region_school_rank[j].school_type === '2-小学'){
|
||||
rankdata2.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
}else if(res.data.region_school_rank[j].school_type === '3-小学/初中'){
|
||||
rankdata3.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
}else if(res.data.region_school_rank[j].school_type === '4-初中'){
|
||||
rankdata4.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
}else if(res.data.region_school_rank[j].school_type === '5-初中/高中'){
|
||||
rankdata5.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
}else if(res.data.region_school_rank[j].school_type === '6-高中'){
|
||||
rankdata6.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
}
|
||||
}
|
||||
schoolrank.value.ranklabel = rankdata.join()
|
||||
schoolrank.value.ranklabel2 = rankdata2.join()
|
||||
schoolrank.value.ranklabel3 = rankdata3.join()
|
||||
schoolrank.value.ranklabel4 = rankdata4.join()
|
||||
schoolrank.value.ranklabel5 = rankdata5.join()
|
||||
schoolrank.value.ranklabel6 = rankdata6.join()
|
||||
insightedSchoolGexList.value = res.data.region_school_sex_list
|
||||
insightedSchoolGexLevelList.value = res.data.region_school_sex_sightedlevel_list
|
||||
eyedataVisionGroupList.value = res.data.region_eyedata_vision_group_list
|
||||
eyedataSphSeList.value = res.data.region_eyedata_sph_se_list
|
||||
avgStdList.value = res.data.region_avg_std_list
|
||||
hyperopiaSchoolList.value = res.data.region_hyperopia_school_list
|
||||
// getRegionCheckReportData(querylist.value).then((res) => {
|
||||
// summaryData.value = res.data.summaryData
|
||||
// popTitle.value = summaryData.value.plan_name + '_'+summaryData.value.report_date
|
||||
// regionData.value = res.data.region_data
|
||||
// const schoolnametotal = []
|
||||
// schoollist.value = {
|
||||
// schoolCount:0,
|
||||
// schoolCount2:0,
|
||||
// schoolCount3:0,
|
||||
// schoolCount4:0,
|
||||
// schoolCount5:0,
|
||||
// schoolCount6:0,
|
||||
// studentCount:regionData.value[regionData.value.length - 1].student_count,
|
||||
// classCount:regionData.value[regionData.value.length - 1].class_count
|
||||
// }
|
||||
// for(let i = 0 ;i<regionData.value.length - 1;i++){
|
||||
// schoolnametotal.push(regionData.value[i].name)
|
||||
// if(regionData.value[i].type === '高中'){
|
||||
// schoollist.value.schoolCount = schoollist.value.schoolCount + 1
|
||||
// }
|
||||
// if(regionData.value[i].type === '高中/初中'){
|
||||
// schoollist.value.schoolCount2 = schoollist.value.schoolCount2 + 1
|
||||
// }
|
||||
// if(regionData.value[i].type === '初中'){
|
||||
// schoollist.value.schoolCount3 = schoollist.value.schoolCount3 + 1
|
||||
// }
|
||||
// if(regionData.value[i].type === '初中/小学'){
|
||||
// schoollist.value.schoolCount4 = schoollist.value.schoolCount4 + 1
|
||||
// }
|
||||
// if(regionData.value[i].type === '小学'){
|
||||
// schoollist.value.schoolCount5 = schoollist.value.schoolCount5 + 1
|
||||
// }
|
||||
// if(regionData.value[i].type === '幼儿园'){
|
||||
// schoollist.value.schoolCount6 = schoollist.value.schoolCount6 + 1
|
||||
// }
|
||||
// }
|
||||
// schoollabel.value = schoolnametotal.join()
|
||||
// regionInsighted.value = res.data.region_insighted
|
||||
// let rankdata = []
|
||||
// let rankdata2 = []
|
||||
// let rankdata3 = []
|
||||
// let rankdata4 = []
|
||||
// let rankdata5 = []
|
||||
// let rankdata6 = []
|
||||
// for(let j = 0 ;j<res.data.region_school_rank.length - 1;j++){
|
||||
// if(res.data.region_school_rank[j].school_type === '1-幼儿园'){
|
||||
// rankdata.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +' %,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
// }else if(res.data.region_school_rank[j].school_type === '2-小学'){
|
||||
// rankdata2.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
// }else if(res.data.region_school_rank[j].school_type === '3-小学/初中'){
|
||||
// rankdata3.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
// }else if(res.data.region_school_rank[j].school_type === '4-初中'){
|
||||
// rankdata4.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
// }else if(res.data.region_school_rank[j].school_type === '5-初中/高中'){
|
||||
// rankdata5.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
// }else if(res.data.region_school_rank[j].school_type === '6-高中'){
|
||||
// rankdata6.push(res.data.region_school_rank[j].school_name + res.data.region_school_rank[j].js_rate +'%,排名:'+ res.data.region_school_rank[j].js_rate_rank)
|
||||
// }
|
||||
// }
|
||||
// schoolrank.value.ranklabel = rankdata.join()
|
||||
// schoolrank.value.ranklabel2 = rankdata2.join()
|
||||
// schoolrank.value.ranklabel3 = rankdata3.join()
|
||||
// schoolrank.value.ranklabel4 = rankdata4.join()
|
||||
// schoolrank.value.ranklabel5 = rankdata5.join()
|
||||
// schoolrank.value.ranklabel6 = rankdata6.join()
|
||||
// insightedSchoolGexList.value = res.data.region_school_sex_list
|
||||
// insightedSchoolGexLevelList.value = res.data.region_school_sex_sightedlevel_list
|
||||
// eyedataVisionGroupList.value = res.data.region_eyedata_vision_group_list
|
||||
// eyedataSphSeList.value = res.data.region_eyedata_sph_se_list
|
||||
// avgStdList.value = res.data.region_avg_std_list
|
||||
// hyperopiaSchoolList.value = res.data.region_hyperopia_school_list
|
||||
|
||||
let hyperopiarankdata = []
|
||||
let hyperopiarankdata2 = []
|
||||
let hyperopiarankdata3 = []
|
||||
let hyperopiarankdata4 = []
|
||||
let hyperopiarankdata5 = []
|
||||
let hyperopiarankdata6 = []
|
||||
for(let k = 0 ;k<res.data.region_hyperopia_school_rank.length - 1;k++){
|
||||
if(res.data.region_hyperopia_school_rank[k].school_type === '1-幼儿园'){
|
||||
hyperopiarankdata.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +' %,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
}else if(res.data.region_hyperopia_school_rank[k].school_type === '2-小学'){
|
||||
hyperopiarankdata2.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
}else if(res.data.region_hyperopia_school_rank[k].school_type === '3-小学/初中'){
|
||||
hyperopiarankdata3.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
}else if(res.data.region_hyperopia_school_rank[k].school_type === '4-初中'){
|
||||
hyperopiarankdata4.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
}else if(res.data.region_hyperopia_school_rank[k].school_type === '5-初中/高中'){
|
||||
hyperopiarankdata5.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
}else if(res.data.region_hyperopia_school_rank[k].school_type === '6-高中'){
|
||||
hyperopiarankdata6.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
}
|
||||
}
|
||||
hyperopiarank.value.ranklabel = hyperopiarankdata.join()
|
||||
hyperopiarank.value.ranklabel2 = hyperopiarankdata2.join()
|
||||
hyperopiarank.value.ranklabel3 = hyperopiarankdata3.join()
|
||||
hyperopiarank.value.ranklabel4 = hyperopiarankdata4.join()
|
||||
hyperopiarank.value.ranklabel5 = hyperopiarankdata5.join()
|
||||
hyperopiarank.value.ranklabel6 = hyperopiarankdata6.join()
|
||||
let sufficientdata = []
|
||||
let sufficientdata2 = []
|
||||
let sufficientdata3 = []
|
||||
let sufficientdata4 = []
|
||||
let sufficientdata5 = []
|
||||
let sufficientdata6 = []
|
||||
for(let g = 0 ;g<res.data.region_sufficient_school_rank.length - 1;g++){
|
||||
if(res.data.region_sufficient_school_rank[g].school_type === '1-幼儿园'){
|
||||
sufficientdata.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +' %,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
}else if(res.data.region_sufficient_school_rank[g].school_type === '2-小学'){
|
||||
sufficientdata2.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
}else if(res.data.region_sufficient_school_rank[g].school_type === '3-小学/初中'){
|
||||
sufficientdata3.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
}else if(res.data.region_sufficient_school_rank[g].school_type === '4-初中'){
|
||||
sufficientdata4.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
}else if(res.data.region_sufficient_school_rank[g].school_type === '5-初中/高中'){
|
||||
sufficientdata5.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
}else if(res.data.region_sufficient_school_rank[g].school_type === '6-高中'){
|
||||
sufficientdata6.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
}
|
||||
}
|
||||
sufficientrank.value.ranklabel = sufficientdata.join()
|
||||
sufficientrank.value.ranklabel2 = sufficientdata2.join()
|
||||
sufficientrank.value.ranklabel3 = sufficientdata3.join()
|
||||
sufficientrank.value.ranklabel4 = sufficientdata4.join()
|
||||
sufficientrank.value.ranklabel5 = sufficientdata5.join()
|
||||
sufficientrank.value.ranklabel6 = sufficientdata6.join()
|
||||
poorSchoolList.value = res.data.region_poor_school_list
|
||||
hyperopiasum.value = hyperopiaSchoolList.value[hyperopiaSchoolList.value.length - 1]
|
||||
insightedAllList.value = splitarr(res.data.region_school_grade_sex_sightedlevel_list)
|
||||
poorAllList.value = splitarr(res.data.region_poor_school_grade_list)
|
||||
initchart()
|
||||
})
|
||||
// let hyperopiarankdata = []
|
||||
// let hyperopiarankdata2 = []
|
||||
// let hyperopiarankdata3 = []
|
||||
// let hyperopiarankdata4 = []
|
||||
// let hyperopiarankdata5 = []
|
||||
// let hyperopiarankdata6 = []
|
||||
// for(let k = 0 ;k<res.data.region_hyperopia_school_rank.length - 1;k++){
|
||||
// if(res.data.region_hyperopia_school_rank[k].school_type === '1-幼儿园'){
|
||||
// hyperopiarankdata.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +' %,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
// }else if(res.data.region_hyperopia_school_rank[k].school_type === '2-小学'){
|
||||
// hyperopiarankdata2.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
// }else if(res.data.region_hyperopia_school_rank[k].school_type === '3-小学/初中'){
|
||||
// hyperopiarankdata3.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
// }else if(res.data.region_hyperopia_school_rank[k].school_type === '4-初中'){
|
||||
// hyperopiarankdata4.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
// }else if(res.data.region_hyperopia_school_rank[k].school_type === '5-初中/高中'){
|
||||
// hyperopiarankdata5.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
// }else if(res.data.region_hyperopia_school_rank[k].school_type === '6-高中'){
|
||||
// hyperopiarankdata6.push(res.data.region_hyperopia_school_rank[k].school_name + res.data.region_hyperopia_school_rank[k].hyperopia_percentage +'%,排名:'+ res.data.region_hyperopia_school_rank[k].hyperopia_percentage_rate_rank)
|
||||
// }
|
||||
// }
|
||||
// hyperopiarank.value.ranklabel = hyperopiarankdata.join()
|
||||
// hyperopiarank.value.ranklabel2 = hyperopiarankdata2.join()
|
||||
// hyperopiarank.value.ranklabel3 = hyperopiarankdata3.join()
|
||||
// hyperopiarank.value.ranklabel4 = hyperopiarankdata4.join()
|
||||
// hyperopiarank.value.ranklabel5 = hyperopiarankdata5.join()
|
||||
// hyperopiarank.value.ranklabel6 = hyperopiarankdata6.join()
|
||||
// let sufficientdata = []
|
||||
// let sufficientdata2 = []
|
||||
// let sufficientdata3 = []
|
||||
// let sufficientdata4 = []
|
||||
// let sufficientdata5 = []
|
||||
// let sufficientdata6 = []
|
||||
// for(let g = 0 ;g<res.data.region_sufficient_school_rank.length - 1;g++){
|
||||
// if(res.data.region_sufficient_school_rank[g].school_type === '1-幼儿园'){
|
||||
// sufficientdata.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +' %,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
// }else if(res.data.region_sufficient_school_rank[g].school_type === '2-小学'){
|
||||
// sufficientdata2.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
// }else if(res.data.region_sufficient_school_rank[g].school_type === '3-小学/初中'){
|
||||
// sufficientdata3.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
// }else if(res.data.region_sufficient_school_rank[g].school_type === '4-初中'){
|
||||
// sufficientdata4.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
// }else if(res.data.region_sufficient_school_rank[g].school_type === '5-初中/高中'){
|
||||
// sufficientdata5.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
// }else if(res.data.region_sufficient_school_rank[g].school_type === '6-高中'){
|
||||
// sufficientdata6.push(res.data.region_sufficient_school_rank[g].school_name + res.data.region_sufficient_school_rank[g].sufficient_percentage +'%,排名:'+ res.data.region_sufficient_school_rank[g].sufficient_percentage_rate_rank)
|
||||
// }
|
||||
// }
|
||||
// sufficientrank.value.ranklabel = sufficientdata.join()
|
||||
// sufficientrank.value.ranklabel2 = sufficientdata2.join()
|
||||
// sufficientrank.value.ranklabel3 = sufficientdata3.join()
|
||||
// sufficientrank.value.ranklabel4 = sufficientdata4.join()
|
||||
// sufficientrank.value.ranklabel5 = sufficientdata5.join()
|
||||
// sufficientrank.value.ranklabel6 = sufficientdata6.join()
|
||||
// poorSchoolList.value = res.data.region_poor_school_list
|
||||
// hyperopiasum.value = hyperopiaSchoolList.value[hyperopiaSchoolList.value.length - 1]
|
||||
// insightedAllList.value = splitarr(res.data.region_school_grade_sex_sightedlevel_list)
|
||||
// poorAllList.value = splitarr(res.data.region_poor_school_grade_list)
|
||||
// initchart()
|
||||
// })
|
||||
}
|
||||
function splitarr(dataval:any){
|
||||
const groupedItems = dataval.reduce((acc, item) => {
|
||||
|
46
web/src/views/testdata/datamanagement/index.vue
vendored
46
web/src/views/testdata/datamanagement/index.vue
vendored
@ -5,7 +5,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, nextTick, defineAsyncComponent } from "vue";
|
||||
import { ref, onMounted, nextTick, defineAsyncComponent,onUnmounted } from "vue";
|
||||
import { Search } from '@element-plus/icons-vue'
|
||||
import { useAppStore } from '@/store/modules/app';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
@ -48,6 +48,9 @@ const userStore = useUserStore();
|
||||
onMounted(() => {
|
||||
getProject()
|
||||
});
|
||||
onUnmounted(()=>{
|
||||
closeSSE()
|
||||
})
|
||||
//拖动条
|
||||
const vMove = {
|
||||
mounted(el: any) {
|
||||
@ -1395,10 +1398,13 @@ function openMap(row: any) {
|
||||
// }));
|
||||
// }, 2000);
|
||||
mapTrajectory.value = true
|
||||
maptime.value = 1
|
||||
}
|
||||
function mapClose() {
|
||||
mapTrajectory.value = false
|
||||
eventSource.value?.close()
|
||||
|
||||
closeSSE()
|
||||
// index = 0
|
||||
}
|
||||
// 1s/10s/30s/1m/2m/5m
|
||||
const options = ref([
|
||||
@ -1427,23 +1433,31 @@ const options = ref([
|
||||
, id: 300
|
||||
},
|
||||
])
|
||||
const maptime: any = ref(300)
|
||||
const maptime: any = ref(1)
|
||||
//频率
|
||||
const qvehuan = ref(false)
|
||||
function frequency(row: any) {
|
||||
startSimpleNavi({ samTimes: maptime.value, id: fredid.value, token: userStore.Token }).then((res: any) => {
|
||||
startSimpleNavi({ samTimes: maptime.value, id: fredid.value, token: userStore.userId }).then((res: any) => {
|
||||
if (res.code == '0' && row) {
|
||||
ElMessage.success("切换成功")
|
||||
getSSELink()
|
||||
qvehuan.value = true
|
||||
}
|
||||
})
|
||||
}
|
||||
//sse处理
|
||||
const eventSource = ref(null)
|
||||
let index = 0
|
||||
const dynamicCoordinates = ref([])
|
||||
function closeSSE(){
|
||||
dynamicCoordinates.value.length = 0
|
||||
// SSEclose :any
|
||||
let SSEclose = new EventSource(userStore.webApiBaseUrl + '/sse/disconnect/' + userStore.userId)
|
||||
eventSource.value?.close()
|
||||
}
|
||||
function getSSELink() {
|
||||
if (eventSource.value) {
|
||||
eventSource.value?.close()
|
||||
}
|
||||
eventSource.value = new EventSource(userStore.webApiBaseUrl + '/sse/connect/' + userStore.Token)
|
||||
closeSSE()
|
||||
eventSource.value = new EventSource(userStore.webApiBaseUrl + '/sse/connect/' + userStore.userId)
|
||||
eventSource.value.addEventListener('open', () => {
|
||||
frequency(false)
|
||||
console.log('链接成功')
|
||||
@ -1454,13 +1468,12 @@ function getSSELink() {
|
||||
const data = JSON.parse(e.data)
|
||||
console.log('SSE消息:', data)
|
||||
if(data){
|
||||
data.forEach((item: any) => {
|
||||
dynamicCoordinates.value.push([item.lon, item.lat])
|
||||
lineData.value.push({x:item.UtcTime,y:item.alt})
|
||||
})
|
||||
dynamicCoordinates.value.push([data.lon, data.lat])
|
||||
if(dynamicCoordinates.value.length>2){
|
||||
dynamicCoordinates.value.shift()
|
||||
}
|
||||
lineData.value.push({x:data.UtcTime,y:data.alt})
|
||||
}
|
||||
|
||||
|
||||
} catch (err) {
|
||||
console.error('消息解析失败:', err)
|
||||
}
|
||||
@ -1474,6 +1487,9 @@ function getSSELink() {
|
||||
// 示例数据格式
|
||||
const lineData:any = ref([])
|
||||
const tabbas = ref('1')
|
||||
function handleCustomEvent(row:any){
|
||||
qvehuan.value = row
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -1863,7 +1879,7 @@ const tabbas = ref('1')
|
||||
<div @click="tabbas = '2'" :class="tabbas == '2' ? 'mapbox_border' : 'mapbox_border1'">高程变化动态图</div>
|
||||
</div>
|
||||
<div v-show="tabbas == '1'" style="width: 800px;height:600px;overflow: hidden;">
|
||||
<MapChart :coordinates="dynamicCoordinates" />
|
||||
<MapChart :coordinates="dynamicCoordinates" :qvehuan="qvehuan" @qvehuan1="handleCustomEvent" />
|
||||
</div>
|
||||
<div v-show="tabbas == '2'" style="width: 800px;height:600px;overflow: hidden;">
|
||||
<Echart :chart-data="lineData" />
|
||||
|
Loading…
Reference in New Issue
Block a user