严飞永 1 month ago
commit 30d814b47d

@ -48,6 +48,8 @@
"js-beautify": "1.13.0",
"js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1",
"leaflet": "^1.9.4",
"mars2d": "^3.3.1",
"nprogress": "0.2.0",
"quill": "2.0.2",
"screenfull": "5.0.2",

@ -0,0 +1,153 @@
{
"zoom": 13,
"center": { "lng": 117.240601, "lat": 31.827107 },
"minZoom": 2,
"maxZoom": 18,
"centerAutoLevel": 15,
"control": {
"scale": true,
"locationBar": {
"crs": "CGCS2000_GK_Zone_3",
"template": "<div>经度:{lng}</div> <div>纬度:{lat}</div> <div class='hide700'>横{crsx} 纵{crsy}</div> <div>层级:{level}</div>"
},
"zoom": { "position": "bottomleft" },
"toolBar": { "position": "bottomleft" }
},
"basemaps": [
{
"id": 10,
"name": "地图底图",
"type": "group"
},
{
"pid": 10,
"name": "天地图电子",
"icon": "img/basemaps/tdt_vec.png",
"type": "group",
"layers": [
{
"name": "底图",
"type": "tdt",
"layer": "vec_d"
},
{
"name": "注记",
"type": "tdt",
"layer": "vec_z"
}
]
},
{
"pid": 10,
"name": "天地图卫星",
"icon": "img/basemaps/tdt_img.png",
"type": "group",
"layers": [
{
"name": "底图",
"type": "tdt",
"layer": "img_d"
},
{
"name": "注记",
"type": "tdt",
"layer": "img_z"
}
]
},
{
"pid": 10,
"name": "天地图地形",
"icon": "img/basemaps/tdt_ter.png",
"type": "tdt",
"layer": "ter",
"maxNativeZoom": 14,
"errorTileUrl": "img/tile/errortile.png"
},
{
"id": 2021,
"pid": 10,
"name": "高德电子",
"icon": "img/basemaps/gaode_vec.png",
"type": "gaode",
"layer": "vec",
"show": true
},
{
"pid": 10,
"name": "高德卫星",
"icon": "img/basemaps/gaode_img.png",
"type": "group",
"layers": [
{
"name": "底图",
"type": "gaode",
"layer": "img_d"
},
{
"name": "注记",
"type": "gaode",
"layer": "img_z"
}
]
},
{
"pid": 10,
"name": "腾讯电子",
"icon": "/img/basemaps/tencent_vec.png",
"type": "tencent",
"layer": "vec"
},
{
"pid": 10,
"name": "腾讯影像",
"icon": "/img/basemaps/tencent_img.png",
"type": "group",
"layers": [
{ "name": "底图", "type": "tencent", "layer": "img_d" },
{ "name": "注记", "type": "tencent", "layer": "img_z" }
]
},
{
"pid": 10,
"name": "ArcGIS电子",
"icon": "img/basemaps/esriNationalGeographic.png",
"type": "tile",
"url": "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}",
"chinaCRS": "GCJ02"
},
{
"pid": 10,
"name": "ArcGIS影像",
"icon": "img/basemaps/esriWorldImagery.png",
"type": "arcgis",
"url": "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
},
{
"id": 2017,
"pid": 10,
"name": "蓝色地图",
"icon": "img/basemaps/bd-c-midnight.png",
"type": "gaode",
"layer": "vec",
"customColor": "#11243C"
},
{
"pid": 10,
"name": "灰色地图",
"icon": "img/basemaps/bd-c-grayscale.png",
"type": "gaode",
"layer": "vec",
"customColor": "#575757"
},
{
"pid": 10,
"name": "离线影像(供参考)",
"icon": "/img/basemaps/google_img.png",
"type": "xyz",
"url": "//data.mars3d.cn/tile/img/{z}/{x}/{y}.jpg",
"chinaCRS": "GCJ02",
"maxZoom": 13
}
]
}

@ -0,0 +1,68 @@
<template>
<div :id="'map' + withKeyId" class="mars2d-container"></div>
</template>
<script>
import * as mars2d from "mars2d";
export default {
props: {
url: {
type: String,
default: "",
},
withKeyId: {
type: String,
default: "mars2dMap",
},
options: {
type: Object,
default: () => {},
},
},
data() {
return {};
},
mounted() {
this.initMap();
},
beforeDestroy() {
const map = this[`map${this.withKeyId}`];
if (map) {
map.destroy();
delete this[`map${this.withKeyId}`];
}
console.log(">>>>> 地图卸载完成 >>>>");
},
methods: {
async initMap() {
//
let mapOptions;
if (this.url) {
// url
mapOptions = await mars2d.Util.fetchJson({ url: this.url });
if (mapOptions.map3d) {
mapOptions = mapOptions.map3d;
}
if (this.options) {
mapOptions = mars2d.Util.merge(mapOptions, this.options); //
}
} else if (this.options) {
mapOptions = this.options;
}
this[`map${this.withKeyId}`] = new mars2d.Map(
"map" + this.withKeyId,
mapOptions
);
this.$emit("onload", this[`map${this.withKeyId}`]);
console.log("Map二维地图构造参数", mapOptions);
},
},
};
</script>
<style>
.mars2d-container {
height: 100%;
overflow: hidden;
}
</style>

@ -1,72 +1,83 @@
import Vue from 'vue'
import Vue from "vue";
import Cookies from 'js-cookie'
import Cookies from "js-cookie";
import Element from 'element-ui'
import './assets/styles/element-variables.scss'
import Element from "element-ui";
import "./assets/styles/element-variables.scss";
import '@/assets/styles/index.scss' // global css
import '@/assets/styles/ruoyi.scss' // ruoyi css
import App from './App'
import store from './store'
import router from './router'
import directive from './directive' // directive
import plugins from './plugins' // plugins
import { download } from '@/utils/request'
import "@/assets/styles/index.scss"; // global css
import "@/assets/styles/ruoyi.scss"; // ruoyi css
import './assets/icons' // icon
import './permission' // permission control
import "leaflet/dist/leaflet.css";
import "leaflet";
import "mars2d/mars2d.css";
import App from "./App";
import store from "./store";
import router from "./router";
import directive from "./directive"; // directive
import plugins from "./plugins"; // plugins
import { download } from "@/utils/request";
import "./assets/icons"; // icon
import "./permission"; // permission control
import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
import {
parseTime,
resetForm,
addDateRange,
selectDictLabel,
selectDictLabels,
handleTree,
} from "@/utils/ruoyi";
// 分页组件
import Pagination from "@/components/Pagination";
// 自定义表格工具组件
import RightToolbar from "@/components/RightToolbar"
import RightToolbar from "@/components/RightToolbar";
// 富文本组件
import Editor from "@/components/Editor"
import Editor from "@/components/Editor";
// 文件上传组件
import FileUpload from "@/components/FileUpload"
import FileUpload from "@/components/FileUpload";
// 图片上传组件
import ImageUpload from "@/components/ImageUpload"
import ImageUpload from "@/components/ImageUpload";
// 图片预览组件
import ImagePreview from "@/components/ImagePreview"
import ImagePreview from "@/components/ImagePreview";
// 字典标签组件
import DictTag from '@/components/DictTag'
import DictTag from "@/components/DictTag";
// 头部标签组件
import VueMeta from 'vue-meta'
import VueMeta from "vue-meta";
// 字典数据组件
import DictData from '@/components/DictData'
import DictData from "@/components/DictData";
//echarts
import * as echarts from 'echarts'
import * as echarts from "echarts";
// 全局方法挂载
Vue.prototype.getDicts = getDicts
Vue.prototype.getConfigKey = getConfigKey
Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.getDicts = getDicts;
Vue.prototype.getConfigKey = getConfigKey;
Vue.prototype.parseTime = parseTime;
Vue.prototype.resetForm = resetForm;
Vue.prototype.addDateRange = addDateRange;
Vue.prototype.selectDictLabel = selectDictLabel;
Vue.prototype.selectDictLabels = selectDictLabels;
Vue.prototype.download = download;
Vue.prototype.handleTree = handleTree;
Vue.prototype.$echarts = echarts;
// 全局组件挂载
Vue.component('DictTag', DictTag)
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('Editor', Editor)
Vue.component('FileUpload', FileUpload)
Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview)
Vue.component("DictTag", DictTag);
Vue.component("Pagination", Pagination);
Vue.component("RightToolbar", RightToolbar);
Vue.component("Editor", Editor);
Vue.component("FileUpload", FileUpload);
Vue.component("ImageUpload", ImageUpload);
Vue.component("ImagePreview", ImagePreview);
Vue.use(directive)
Vue.use(plugins)
Vue.use(VueMeta)
DictData.install()
Vue.use(directive);
Vue.use(plugins);
Vue.use(VueMeta);
DictData.install();
/**
* If you don't want to use mock-server
@ -78,14 +89,14 @@ DictData.install()
*/
Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size
})
size: Cookies.get("size") || "medium", // set element-ui default size
});
Vue.config.productionTip = false
Vue.config.productionTip = false;
new Vue({
el: '#app',
el: "#app",
router,
store,
render: h => h(App)
})
render: (h) => h(App),
});

@ -1,10 +1,10 @@
import Vue from 'vue'
import Router from 'vue-router'
import Vue from "vue";
import Router from "vue-router";
Vue.use(Router)
Vue.use(Router);
/* Layout */
import Layout from '@/layout'
import Layout from "@/layout";
/**
* Note: 路由配置项
@ -31,153 +31,158 @@ import Layout from '@/layout'
// 公共路由
export const constantRoutes = [
{
path: '/redirect',
path: "/redirect",
component: Layout,
hidden: true,
children: [
{
path: '/redirect/:path(.*)',
component: () => import('@/views/redirect')
}
]
path: "/redirect/:path(.*)",
component: () => import("@/views/redirect"),
},
],
},
{
path: '/login',
component: () => import('@/views/login'),
hidden: true
path: "/login",
component: () => import("@/views/login"),
hidden: true,
},
{
path: '/register',
component: () => import('@/views/register'),
hidden: true
path: "/register",
component: () => import("@/views/register"),
hidden: true,
},
{
path: '/404',
component: () => import('@/views/error/404'),
hidden: true
path: "/404",
component: () => import("@/views/error/404"),
hidden: true,
},
{
path: '/401',
component: () => import('@/views/error/401'),
hidden: true
path: "/401",
component: () => import("@/views/error/401"),
hidden: true,
},
{
path: '',
path: "/map",
component: () => import("@/views/map/index"),
hidden: true,
},
{
path: "",
component: Layout,
redirect: 'index',
redirect: "index",
children: [
{
path: 'index',
component: () => import('@/views/index'),
name: 'Index',
meta: { title: '统计分析', icon: 'dashboard', affix: true }
}
]
path: "index",
component: () => import("@/views/index"),
name: "Index",
meta: { title: "统计分析", icon: "dashboard", affix: true },
},
],
},
{
path: '/user',
path: "/user",
component: Layout,
hidden: true,
redirect: 'noredirect',
redirect: "noredirect",
children: [
{
path: 'profile',
component: () => import('@/views/system/user/profile/index'),
name: 'Profile',
meta: { title: '个人中心', icon: 'user' }
}
]
}
]
path: "profile",
component: () => import("@/views/system/user/profile/index"),
name: "Profile",
meta: { title: "个人中心", icon: "user" },
},
],
},
];
// 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [
{
path: '/system/user-auth',
path: "/system/user-auth",
component: Layout,
hidden: true,
permissions: ['system:user:edit'],
permissions: ["system:user:edit"],
children: [
{
path: 'role/:userId(\\d+)',
component: () => import('@/views/system/user/authRole'),
name: 'AuthRole',
meta: { title: '分配角色', activeMenu: '/system/user' }
}
]
path: "role/:userId(\\d+)",
component: () => import("@/views/system/user/authRole"),
name: "AuthRole",
meta: { title: "分配角色", activeMenu: "/system/user" },
},
],
},
{
path: '/system/role-auth',
path: "/system/role-auth",
component: Layout,
hidden: true,
permissions: ['system:role:edit'],
permissions: ["system:role:edit"],
children: [
{
path: 'user/:roleId(\\d+)',
component: () => import('@/views/system/role/authUser'),
name: 'AuthUser',
meta: { title: '分配用户', activeMenu: '/system/role' }
}
]
path: "user/:roleId(\\d+)",
component: () => import("@/views/system/role/authUser"),
name: "AuthUser",
meta: { title: "分配用户", activeMenu: "/system/role" },
},
],
},
{
path: '/system/dict-data',
path: "/system/dict-data",
component: Layout,
hidden: true,
permissions: ['system:dict:list'],
permissions: ["system:dict:list"],
children: [
{
path: 'index/:dictId(\\d+)',
component: () => import('@/views/system/dict/data'),
name: 'Data',
meta: { title: '字典数据', activeMenu: '/system/dict' }
}
]
path: "index/:dictId(\\d+)",
component: () => import("@/views/system/dict/data"),
name: "Data",
meta: { title: "字典数据", activeMenu: "/system/dict" },
},
],
},
{
path: '/monitor/job-log',
path: "/monitor/job-log",
component: Layout,
hidden: true,
permissions: ['monitor:job:list'],
permissions: ["monitor:job:list"],
children: [
{
path: 'index/:jobId(\\d+)',
component: () => import('@/views/monitor/job/log'),
name: 'JobLog',
meta: { title: '调度日志', activeMenu: '/monitor/job' }
}
]
path: "index/:jobId(\\d+)",
component: () => import("@/views/monitor/job/log"),
name: "JobLog",
meta: { title: "调度日志", activeMenu: "/monitor/job" },
},
],
},
{
path: '/tool/gen-edit',
path: "/tool/gen-edit",
component: Layout,
hidden: true,
permissions: ['tool:gen:edit'],
permissions: ["tool:gen:edit"],
children: [
{
path: 'index/:tableId(\\d+)',
component: () => import('@/views/tool/gen/editTable'),
name: 'GenEdit',
meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
}
]
}
]
path: "index/:tableId(\\d+)",
component: () => import("@/views/tool/gen/editTable"),
name: "GenEdit",
meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
},
],
},
];
// 防止连续点击多次路由报错
let routerPush = Router.prototype.push;
let routerReplace = Router.prototype.replace;
// push
Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(err => err)
}
return routerPush.call(this, location).catch((err) => err);
};
// replace
Router.prototype.replace = function push(location) {
return routerReplace.call(this, location).catch(err => err)
}
return routerReplace.call(this, location).catch((err) => err);
};
export default new Router({
mode: 'history', // 去掉url中的#
mode: "history", // 去掉url中的#
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes
})
routes: constantRoutes,
});

@ -72,9 +72,81 @@
<!-- <el-backtop target=".backtop"></el-backtop> -->
</div>
</div>
<div class="containerbody">
<!-- 目录 -->
<div class="containerhead">
<el-menu
:default-active="activeSection"
mode="horizontal"
@select="scrollToSection"
class="custom-menu"
>
<el-menu-item
v-for="(item, index) in sections"
:key="index"
:index="item.id"
class="custom-menu-item"
>
{{ item.label }}
</el-menu-item>
</el-menu>
</div>
<!-- 基本信息 -->
<div id="basic">
<Basic :id="projectId"></Basic>
</div>
<!-- 规划信息 -->
<div id="programme">
<Programme :id="projectId"></Programme>
</div>
<!-- 建筑信息 -->
<div id="buildings">
<Buildings></Buildings>
</div>
<!-- 要素模型信息 -->
<div id="models">
<Models></Models>
</div>
<!-- 月度进展信息 -->
<div id="months">
<Months></Months>
</div>
<!-- 企业入驻信息 -->
<div id="companyenter">
<Companyenter></Companyenter>
</div>
<!-- 项目画像 -->
<div id="projectpicture">
<Projectpicture></Projectpicture>
</div>
<!-- 项目图例 -->
<div id="projectpicturetwo">
<Projectpicturetwo></Projectpicturetwo>
</div>
<!-- 项目巡礼 -->
<div id="projectgift">
<Projectgift></Projectgift>
</div>
<!-- 现场实况 -->
<div id="liver">
<Liver></Liver>
</div>
<!-- 项目备忘录 -->
<div id="memo">
<Memo></Memo>
</div>
<!-- 其他信息 -->
<div id="others">
<Memo></Memo>
</div>
<!-- 返回顶部 -->
<!-- <el-backtop target=".backtop"></el-backtop> -->
</div>
</div>
</template>
<script>
<<<<<<< HEAD
import Title from '../components/ProjectDetails/Title.vue';
import Basic from '../components/ProjectDetails/Basic.vue';
import Buildings from '../components/ProjectDetails/Buildings.vue';
@ -104,124 +176,157 @@ export default {
Projectpicture,
Projectpicturetwo,
Others
=======
import Title from "../components/ProjectDetails/Title.vue";
import Basic from "../components/ProjectDetails/Basic.vue";
import Buildings from "../components/ProjectDetails/Buildings.vue";
import Companyenter from "@/views/components/ProjectDetails/Companyenter.vue";
import Liver from "../components/ProjectDetails/Liver.vue";
import Memo from "../components/ProjectDetails/Memo.vue";
import Models from "../components/ProjectDetails/Models.vue";
import Months from "../components/ProjectDetails/Months.vue";
import Programme from "../components/ProjectDetails/Programme.vue";
import Projectgift from "../components/ProjectDetails/Projectgift.vue";
import Projectpicture from "../components/ProjectDetails/Projectpicture.vue";
import Projectpicturetwo from "../components/ProjectDetails/Projectpicturetwo.vue";
export default {
components: {
Title,
Basic,
Buildings,
Companyenter,
Liver,
Memo,
Models,
Months,
Programme,
Projectgift,
Projectpicture,
Projectpicturetwo,
},
data() {
return {
activeSection: "basic",
sections: [
{ id: "basic", label: "基本信息" },
{ id: "programme", label: "规划信息" },
{ id: "buildings", label: "建筑信息" },
{ id: "models", label: "要素模型信息" },
{ id: "months", label: "月度进展信息" },
{ id: "companyenter", label: "企业入驻信息" },
{ id: "projectpicture", label: "项目画像" },
{ id: "projectpicturetwo", label: "项目图例" },
{ id: "projectgift", label: "项目巡礼" },
{ id: "liver", label: "现场实况" },
{ id: "memo", label: "项目备忘录" },
{ id: "others", label: "其他信息" },
],
projectId: null,
};
},
created() {
this.projectId = this.$route.params.id;
this.loadData();
},
methods: {
loadData() {
// projectId
console.log("Loading data for project ID:", this.projectId);
// API
// getProjectDetail(this.projectId).then(response => {
// this.projectDetail = response.data;
// });
>>>>>>> d52b2ef1097bb2a46437bfad1ac2fb21ed4ffd25
},
scrollToSection(id) {
this.activeSection = id;
const element = document.getElementById(id);
if (element) {
element.scrollIntoView({ behavior: "smooth" });
}
},
data() {
return {
activeSection: 'basic',
sections: [
{ id: 'basic', label: '基本信息' },
{ id: 'programme', label: '规划信息' },
{ id: 'buildings', label: '建筑信息' },
{ id: 'models', label: '要素模型信息' },
{ id: 'months', label: '月度进展信息' },
{ id: 'companyenter', label: '企业入驻信息' },
{ id: 'projectpicture', label: '项目画像' },
{ id: 'projectpicturetwo', label: '项目图例' },
{ id: 'projectgift', label: '项目巡礼' },
{ id: 'liver', label: '现场实况' },
{ id: 'memo', label: '项目备忘录' },
{ id: 'others', label: '其他信息' }
],
projectId: null
};
scrollToTop() {
window.scrollTo({ top: 0, behavior: "smooth" });
},
created() {
this.projectId = this.$route.params.id;
this.loadData();
goBack() {
this.$router.go(-1); //
},
methods: {
loadData() {
// projectId
console.log('Loading data for project ID:', this.projectId);
// API
// getProjectDetail(this.projectId).then(response => {
// this.projectDetail = response.data;
// });
},
scrollToSection(id) {
this.activeSection = id;
const element = document.getElementById(id);
if (element) {
element.scrollIntoView({ behavior: 'smooth' });
}
},
scrollToTop() {
window.scrollTo({ top: 0, behavior: 'smooth' });
},
goBack() {
this.$router.go(-1); //
}
}
},
};
</script>
<style scoped>
.containerbody {
height: auto;
padding: .3rem .5rem;
display: flex;
flex-direction: column;
gap: 1rem;
position: relative;
overflow: auto;
height: auto;
padding: 0.3rem 0.5rem;
display: flex;
flex-direction: column;
gap: 1rem;
position: relative;
overflow: auto;
}
.containerheadone {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
padding: 0 1rem 0 .7rem;
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
padding: 0 1rem 0 0.7rem;
}
.containerhead {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
background-color: #ffffff;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
}
.custom-menu {
margin: 1rem;
display: flex;
gap: 1rem;
border: none;
margin: 1rem;
display: flex;
gap: 1rem;
border: none;
}
.custom-menu-item {
color: #3D424C;
width: 7.25rem;
height: 2rem;
background: #F4F7FE;
border-radius: 0.25rem 0.25rem 0.25rem 0.25rem;
display: flex;
align-items: center;
justify-content: center;
color: #3d424c;
width: 7.25rem;
height: 2rem;
background: #f4f7fe;
border-radius: 0.25rem 0.25rem 0.25rem 0.25rem;
display: flex;
align-items: center;
justify-content: center;
}
/* 高亮 */
.custom-menu-item.is-active {
background-color: #2B62F1;
color: #fff !important;
background-color: #2b62f1;
color: #fff !important;
}
/* 悬停 */
.custom-menu-item:hover {
background-color: #2B62F1;
color: #fff !important;
background-color: #2b62f1;
color: #fff !important;
}
/* 默认的下划线 */
.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,
.el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
background-color: #2B62F1;
border-bottom: none;
background-color: #2b62f1;
border-bottom: none;
}
<<<<<<< HEAD
.bottombox{
margin-bottom: 1rem;
}
</style>
</style>
=======
</style>
>>>>>>> d52b2ef1097bb2a46437bfad1ac2fb21ed4ffd25

@ -0,0 +1,31 @@
<template>
<mars2d-map
:options="mapOptions"
:url="configUrl"
@onload="onload"
></mars2d-map>
</template>
<script>
import Mars2dMap from "@/components/Mars2dMap/index";
export default {
data() {
const basePathUrl = window.basePathUrl || "";
return {
configUrl: basePathUrl + "config/config.json",
mapOptions: {
// http://mars2d.cn/apidoc.html#Map
copyright: false, //logo
},
};
},
components: { Mars2dMap },
methods: {
onload(map) {
//
},
},
};
</script>
<style></style>
Loading…
Cancel
Save