feat: 接口对接

This commit is contained in:
kun 2023-10-30 18:58:22 +08:00
parent b7c1c22615
commit e9feecbf95
7 changed files with 1439 additions and 3 deletions

View File

@ -0,0 +1,20 @@
import { ResPage, User } from "@/api/types/common";
// import { BASEURL } from "@/api/config/servicePort";
import http from "@/api";
import axios from "axios";
const BASEURL = import.meta.env.VITE_API_URL;
// const BASEURL1 = import.meta.env.VITE_API_URL + "6868";
/**
* @name api
*/
// 查询系统配置
export const getSystemConfig = (params: any) => {
return http.post(BASEURL + `/xmgl/systemConfig/queryByKey`, params);
};
// 修改系统配置
export const updateSystemConfig = (params: any) => {
return http.post(BASEURL + `/xmgl/systemConfig/edit`, params);
};

View File

@ -18,7 +18,7 @@
{
"path": "/config",
"name": "config",
"component": "/goverment/unmannedVideo/accessSituation/index",
"component": "/jxjview/configManagement/index",
"meta": {
"icon": "leftGover",
"title": "配置中心",

View File

@ -13,7 +13,7 @@
</div>
<ToolBarRight />
</el-header>
<el-container class="classic-content" v-waterMarker>
<el-container class="classic-content">
<el-aside>
<!-- <div class="menu" :style="{ width: isCollapse ? '65px' : '210px' }"> 根据屏幕自动收缩 -->
<div class="menu">

View File

@ -17,7 +17,7 @@
<ToolBarRight />
</el-header>
<div class="contain-section" v-waterMarker>
<div class="contain-section">
<div class="contain-header">
<div class="header-important" v-for="item in data['important']" :key="item.moduleId">
<div class="header-item" @click="onChange(item)">

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
.protable {
// flex: 1;
padding: 20px;
height: calc(100% - 60px);
min-height: 415px;
border-radius: 8px;
background-color: white;
.operate-btn {
display: flex;
align-items: center;
}
}
.tab-card {
:deep() {
.el-card {
margin-bottom: 20px;
border: none;
border-radius: 8px;
height: 56px;
}
.el-button {
font-size: 14px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #333333;
}
}
}

View File

@ -0,0 +1,171 @@
<template>
<div class="main-box">
<div class="table-box">
<div class="tab-card">
<el-card shadow="never">
<el-button :class="showPage == false ? 'blueText' : ''" @click="showPage = false" link>地图初始化控件配置</el-button>
<el-button :class="showPage == true ? 'blueText' : ''" @click="showPage = true" link>地图初始视角</el-button>
</el-card>
</div>
<div class="protable" v-show="!showPage">
<el-table
:data="controlsTable"
height="calc(100% - 40px)"
class="el-table"
:header-cell-style="{ backgroundColor: '#F5F7FA' }"
>
<el-table-column type="index" label="序号" width="120" align="center" />
<el-table-column prop="title" label="变量标题" align="left" width="150" />
<el-table-column prop="value" label="变量值" align="left">
<template #default="{ row }">
<el-switch v-model="configJson.control[row.key]" style="--el-switch-on-color: #13ce66" />
</template>
</el-table-column>
<el-table-column prop="key" label="变量名" align="left" width="200">
<template #default="{ row }">
<span>{{ "${" + row.key + "}" }}</span>
</template>
</el-table-column>
<!-- <el-table-column align="center" fixed="right" width="180" label="操作">
<template #default="scope">
<el-button type="danger" link :icon="Delete">删除</el-button>
</template>
</el-table-column> -->
<template #empty>
<div class="table-empty">
<slot name="empty">
<img src="@/assets/images/notData.png" alt="notData" />
<div>暂无数据</div>
</slot>
</div>
</template>
</el-table>
<div class="operate-btn">
<el-button type="primary" @click="saveConfig('control')">确定</el-button>
</div>
</div>
<div class="protable" v-show="showPage">
<el-table
:data="viewsTable"
height="calc(100% - 40px)"
class="el-table"
:header-cell-style="{ backgroundColor: '#F5F7FA' }"
>
<el-table-column type="index" label="序号" width="120" align="center" />
<el-table-column prop="title" label="变量标题" align="left" width="150" />
<el-table-column prop="value" label="变量值" align="left">
<template #default="{ row }"><el-input v-model="row.value" placeholder="请输入" style="width: 70%" /></template>
</el-table-column>
<el-table-column prop="key" label="变量名" align="left" width="200">
<template #default="{ row }">
<span>{{ "${" + row.key + "}" }}</span>
</template>
</el-table-column>
<!-- <el-table-column align="center" fixed="right" width="180" label="操作">
<template #default="scope">
<el-button type="danger" link :icon="Delete">删除</el-button>
</template>
</el-table-column> -->
<template #empty>
<div class="table-empty">
<slot name="empty">
<img src="@/assets/images/notData.png" alt="notData" />
<div>暂无数据</div>
</slot>
</div>
</template>
</el-table>
<div class="operate-btn">
<el-button type="primary" @click="saveConfig('center')">确定</el-button>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts" name="configManagement">
import { ref, reactive, onMounted, onBeforeMount, watch } from "vue";
import { ElMessage } from "element-plus";
import { useRouter } from "vue-router";
import { getSystemConfig, updateSystemConfig } from "@/api/modules/mapCommon";
import configData from "./config.json";
import { config } from "process";
const configId = ref("");
const configJson = ref<any>({
control: {}
});
const viewsTable = ref([
{ title: "初始化经度", value: "", key: "lng" }, // 180-180
{ title: "初始化纬度", value: "", key: "lat" }, // 90-90
{ title: "初始化高度", value: "", key: "alt" },
{ title: "相机方向角", value: "", key: "heading" }, // 0-360
{ title: "相机俯仰角", value: "", key: "pitch" }, // -90-90
{ title: "相机翻滚角", value: "", key: "roll" } // -90-90
]);
const controlsTable = ref([
{ title: "POI搜索", value: false, key: "geocoder" },
{ title: "视角复位", value: false, key: "homeButton" },
{ title: "二三维切换", value: false, key: "sceneModePicker" },
{ title: "地图切换", value: false, key: "baseLayerPicker" },
{ title: "全屏切换", value: false, key: "fullscreenButton" },
{ title: "VR", value: false, key: "vrButton" },
{ title: "帮助按钮", value: false, key: "navigationHelpButton" },
{ title: "地图缩放", value: false, key: "zoom" },
{ title: "信息状态栏", value: false, key: "locationBar" },
{ title: "时钟面板", value: false, key: "clockAnimate" },
{ title: "导航球", value: false, key: "compass" },
{ title: "时间刻度线", value: false, key: "timeline" },
{ title: "比例尺", value: false, key: "distanceLegend" }
]);
const router = useRouter();
const showPage = ref(false);
//
const saveConfig = async (label: any) => {
console.log(controlsTable.value);
if (label == "control") {
controlsTable.value.map((item: any) => {
configJson.value.control[item.key] = item.value;
});
} else {
controlsTable.value.map((item: any) => {
configJson.value.center[item.key] = item.value;
});
}
let requestData: any = { configKey: "mapConfig", configValue: JSON.stringify(configJson.value) };
if (configJson.value) {
requestData.configId = configId.value;
}
console.log(configJson.value);
const res = await updateSystemConfig(requestData);
console.log(res);
if (res.code == 200) {
ElMessage.success("操作成功");
}
};
//
const getConfig = async () => {
let requestData = {
configKey: "mapConfig"
};
const { result } = await getSystemConfig(requestData);
console.log(result, "6666666");
if (result) {
configId.value = result.configId;
configJson.value = JSON.parse(result.configValue);
console.log(configJson.value);
} else {
// const configUrl = "http://182.90.224.147:6080/file/config/config.json";
configJson.value = configData.map3d;
console.log(configData);
}
};
onBeforeMount(async () => {
await getConfig();
});
</script>
<style lang="scss" scoped>
.blueText {
color: #008bff !important;
}
@import "./index.scss";
</style>