地图筛选按钮联动

master
许宏杰 3 weeks ago
parent 6645e98de9
commit 6328052a3a

@ -5,4 +5,6 @@ VUE_APP_TITLE = 人口数据管理系统
ENV = 'production'
# 人口数据管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_API_HTML = "http://122.193.93.182:19002"
VUE_APP_BASE_API = 'http://122.193.93.182:19002'

@ -9,12 +9,14 @@
import MarsMap from "@/components/mars-work/mars-map.vue";
export default {
// http://39.101.188.84:9999/demo/tc-community/lib/geoJson/xiaoqu.json
data() {
const basePathUrl = window.basePathUrl || "";
return {
configUrl: basePathUrl + "lib/config/config.json",
tiles3dLayer: null,
map: null,
baseUrl: basePathUrl + "lib/geoJson",
};
},
props: {
@ -32,6 +34,14 @@ export default {
methods: {
onMapload(map) {
this.map = map;
// const OfflineCache = CesiumNetworkPlug.OfflineCacheController;
// console.log(this.baseUrl, "sssss");
// //
// // OfflineCache.ruleList.add("*")
// //
// OfflineCache.ruleList.add("https://services.arcgisonline.com/");
this.$emit("mapLoad", map);
},
},

@ -183,7 +183,7 @@ Router.prototype.replace = function push(location) {
};
export default new Router({
mode: "history", // 去掉url中的#
// mode: "history", // 去掉url中的#
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes,
});

@ -26,5 +26,6 @@ const getters = {
pie: (state) => state.taicang.pie,
queryParamsIndex: (state) => state.taicang.queryParams,
queryParamsXiaoqu: (state) => state.xiaoqu.queryParmas,
mapParmas: (state) => state.xiaoqu.mapParmas,
};
export default getters;

@ -2,6 +2,10 @@ const xiaoqu = {
state: {
//页面接口参数
queryParmas: {},
mapParmas: {
sd: false,
networkName: undefined,
},
},
mutations: {
//参数变化
@ -10,6 +14,11 @@ const xiaoqu = {
state.queryParmas[key] = query[key];
}
},
CHANGE_QUERY_MAP: (state, query) => {
for (let key in query) {
state.mapParmas[key] = query[key];
}
},
//重置参数
RESET_QUERY: (state, query) => {
state.queryParmas = {

@ -8,3 +8,5 @@ export { default as IndexModelRight } from "./IndexModel/right.vue";
export { default as xiaoquInfo } from "./xiaoqu/leftData/xiaoquInfo";
export { default as networkInfo } from "./xiaoqu/leftData/networkInfo";
export { default as buildingStatistics } from "./xiaoqu/leftData/buildingStatistics";
export { default as mapSearchBox } from "./xiaoqu/mapSearchBox.vue";

@ -6,6 +6,7 @@
<script>
import configJson from "./map-config.json";
import { mapGetters } from "vuex";
import garden from "./garden.json";
import MarsMap from "@/components/mars-map";
import { listDept } from "@/api/system/dept.js";
@ -17,6 +18,9 @@ export default {
default: 0,
},
},
computed: {
...mapGetters(["mapParmas"]),
},
data() {
const basePathUrl = window.basePathUrl || "";
return {
@ -51,6 +55,16 @@ export default {
components: {
MarsMap,
},
watch: {
mapParmas: {
handler(newValue, oldValue) {
this.add3DXiaoqu(newValue.sd);
this.addNetworkLayer(newValue.networkName);
// console.log("Object changed:", newValue);
},
deep: true, // Deeply watch all nested properties
},
},
created() {
this.config = configJson[JSON.parse(this.xiaoquId)];
},
@ -82,7 +96,7 @@ export default {
this.mapLayer.planePoint = new mars3d.layer.GraphicLayer();
this.map.addLayer(this.mapLayer.planePoint);
this.mapLayer.network = new mars3d.layer.GraphicLayer({ show: false });
this.mapLayer.network = new mars3d.layer.GraphicLayer({ show: true });
this.map.addLayer(this.mapLayer.network);
},
addMapLayer() {
@ -99,9 +113,7 @@ export default {
this.addGardenLayer();
}
// this.addNetworkLayer();
this.addbuildingLayer();
// this.add3DXiaoqu();
// this.addDTH();
},
@ -302,10 +314,10 @@ export default {
this.mapLayer.plane.addGraphic(polygon);
polygon.on(mars3d.EventType.highlightClose, function (e) {
_this.$store.commit("CHANGE_QUERY", {
buildingid: undefined,
deptId: undefined,
}); //
// _this.$store.commit("CHANGE_QUERY", {
// buildingid: undefined,
//deptId: undefined,
//}); //
});
const point = new mars3d.graphic.BillboardEntity({
@ -387,13 +399,16 @@ export default {
},
//
addNetworkLayer() {
mars3d.Util.fetchJson({
url: this.configUrl + `lib/geoJson/xiaoqu/network${this.xiaoquId}.json`,
}).then((res) => {
async addNetworkLayer(show) {
if (show && this.mapLayer.network.length == 0) {
let res = await mars3d.Util.fetchJson({
url:
this.configUrl + `lib/geoJson/xiaoqu/network${this.xiaoquId}.json`,
});
const arr = mars3d.Util.geoJsonToGraphics(res);
arr.map((item, index) => {
let polygon = new mars3d.graphic.PolygonEntity({
id: item.attr["名称"],
positions: item.positions,
style: {
color: "#005AFF",
@ -404,40 +419,55 @@ export default {
outline: true,
outlineWidth: 3,
outlineColor: "#32FF85",
highlight: {
type: "click",
color: "#FF3992",
opacity: 0.5,
outline: true,
outlineColor: "#FF129D",
outlineWidth: 5,
},
},
});
this.mapLayer.network.addGraphic(polygon);
});
}
this.$nextTick(() => {
if (show && this.mapLayer.network.length > 0) {
this.mapLayer.network.show = true;
let networkItem = this.mapLayer.network.getGraphicById(show);
networkItem.openHighlight({
type: "click",
color: "#FF3992",
opacity: 0.5,
outline: true,
outlineColor: "#FF129D",
outlineWidth: 5,
});
}
if (!show && this.mapLayer.network.length > 0)
this.mapLayer.network.show = false;
});
},
//3D
add3DXiaoqu() {
//4D -
let maximumMemoryUsage =
process.env.NODE_ENV === "production" ? (1024 * 4) / 2 : 1024 / 2;
//
this.mapLayer.tiles3dLayer = new mars3d.layer.TilesetLayer({
show: false,
name: "太仓测试",
url: this.config.qingxie.url,
maximumScreenSpaceError: 16,
maximumMemoryUsage: maximumMemoryUsage,
dynamicScreenSpaceError: false,
skipLevelOfDetail: true,
preferLeaves: true,
flyTo: false,
center: this.config.viewHome,
});
this.map.addLayer(this.mapLayer.tiles3dLayer);
add3DXiaoqu(show) {
if (show && this.mapLayer.tiles3dLayer != "undefined") {
//2D -
let maximumMemoryUsage =
process.env.NODE_ENV === "production" ? (1024 * 2) / 2 : 1024 / 2;
//
this.mapLayer.tiles3dLayer = new mars3d.layer.TilesetLayer({
show: false,
name: "太仓测试",
url: this.config.qingxie.url,
maximumScreenSpaceError: 16,
maximumMemoryUsage: maximumMemoryUsage,
dynamicScreenSpaceError: false,
skipLevelOfDetail: true,
preferLeaves: true,
flyTo: false,
center: this.config.viewHome,
});
this.map.addLayer(this.mapLayer.tiles3dLayer);
}
if (show && this.mapLayer.tiles3dLayer)
this.mapLayer.tiles3dLayer.show = true;
if (!show && this.mapLayer.tiles3dLayer)
this.mapLayer.tiles3dLayer.show = false;
},
//2D - 3D
handle3dPoint() {

@ -0,0 +1,191 @@
<template>
<div class="search-box">
<div class="select-search">
<el-select
v-model="queryParmas.color"
placeholder="分色"
clearable
multiple
collapse-tags
:popper-append-to-body="false"
>
<el-option
v-for="dict in dict.type.b_color_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
<el-select
v-model="queryParmas.parentid"
placeholder="网格"
clearable
:popper-append-to-body="false"
@change="handleNetwork"
>
<el-option
v-for="dict in networkOption"
:key="dict.dept_id"
:label="dict.dept_name"
:value="dict.dept_id"
></el-option>
</el-select>
</div>
<el-checkbox-group v-model="checkList" @change="change">
<el-checkbox
:label="item.label"
v-for="(item, index) in multipleList"
:key="index"
:disabled="filterDisabled(item.label)"
></el-checkbox>
<!-- disabled -->
</el-checkbox-group>
<el-checkbox label="三维图层" @change="handleMapLayer"></el-checkbox>
</div>
</template>
<script>
import { getNetWorkId } from "@/api/home/index.js";
import { mapGetters } from "vuex";
export default {
dicts: ["b_color_type"],
computed: {
...mapGetters(["mapParmas", "queryParamsXiaoqu"]),
},
data() {
return {
checkList: [],
networkOption: [],
multipleList: [
{ key: "type", label: "户籍", value: 1 },
{ key: "type", label: "流动", value: 2 },
{ key: "isd", label: "中共党员", value: 1 },
{ key: "isk", label: "帮扶对象", value: 1 },
{ key: "isx", label: "重点人群", value: 1 },
{ key: "isj", label: "退伍军人", value: 1 },
],
queryParmas: {
parentid: undefined,
color: undefined,
type: undefined,
isd: undefined,
isk: undefined,
isx: undefined,
isj: undefined,
},
};
},
created() {
this.getNetworkList();
},
methods: {
async getNetworkList() {
let res = await getNetWorkId({
xiaoquId: this.queryParamsXiaoqu.xiaoquId,
});
this.networkOption = res.data["网格list"];
},
handleNetwork(e) {
let networkName = "";
if (e) {
networkName = this.networkOption.filter((item) => item.dept_id == e)[0]
.dept_name;
console.log(networkName);
}
this.$store.commit("CHANGE_QUERY_MAP", { networkName: networkName });
},
handleMapLayer(e) {
this.$store.commit("CHANGE_QUERY_MAP", { sd: e });
},
change(e) {
this.reset();
e.map((item) => {
let itemData = this.multipleList.filter((it) => it.label == item)[0];
this.queryParmas[itemData.key] = itemData.value;
});
},
filterDisabled(label) {
if (label == "户籍" || label == "流动") {
let letisTrue = this.checkList.some((item) => {
let text = label == "户籍" ? "流动" : "户籍";
return item == text;
});
return letisTrue;
} else {
return false;
}
},
reset() {
this.queryParmas.type = undefined;
this.queryParmas.isd = undefined;
this.queryParmas.isk = undefined;
this.queryParmas.isx = undefined;
this.queryParmas.isj = undefined;
},
},
};
</script>
<style lang="scss" scoped>
.search-box {
position: absolute;
z-index: 20;
left: 400px;
top: 115px;
display: flex;
align-items: center;
}
::v-deep .el-checkbox {
margin-right: 4px;
font-size: 14px;
color: #cdfbff;
background: url("~@/assets/images/ui/btn_bg.png");
background-size: 100% 100%;
padding: 9px 15px 10px 15px;
.el-checkbox__label {
padding-left: 3px;
}
}
::v-deep .el-checkbox__input.is-checked + .el-checkbox__label {
color: #cdfbff;
}
::v-deep .el-checkbox__input.is-checked .el-checkbox__inner {
background: #fff;
}
::v-deep .el-checkbox__inner::after {
border-color: #16aa2d;
}
::v-deep .select-search {
.el-select {
width: 130px;
.el-input {
background: transparent;
}
.el-input__inner {
height: 38px;
line-height: 30px;
color: #fff;
background: url("~@/assets/images/ui/img_btn_search.png");
background-size: 100% 100%;
border: 0px !important;
}
.el-input__inner::placeholder,
.el-select__caret {
color: #fff;
}
}
}
::v-deep .el-select__tags {
padding-left: 6px;
.el-tag--small {
height: 18px;
line-height: 18px;
padding: 0 5px;
}
}
</style>

@ -4,7 +4,11 @@
:mainTitle="xiaoquIntroduce.deptName + '人口数据管理系统'"
:showStreet="false"
></NavigationBar>
<mapSearchBox />
<mars-map ref="map" :xiaoquId="queryParamsXiaoqu.xiaoquId"></mars-map>
<foldpanelLeft :title="filterTitle()">
<!-- 左侧显示逻辑 1.小区简介 < 2.网格简介 < 3.楼栋统计分析 -->
<xiaoquInfo
@ -38,6 +42,7 @@ import {
xiaoquInfo,
networkInfo,
buildingStatistics,
mapSearchBox,
} from "@/views/components/index.js";
export default {
data() {
@ -52,6 +57,7 @@ export default {
xiaoquInfo,
networkInfo,
buildingStatistics,
mapSearchBox,
},
computed: {
...mapGetters(["xiaoquIntroduce", "queryParamsXiaoqu"]),

@ -18,7 +18,8 @@ module.exports = {
// 部署生产环境和开发环境下的URL。
// 默认情况下Vue CLI 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
publicPath:
process.env.NODE_ENV === "production" ? "/demo/tc-community" : "/",
// 在npm run build 或 yarn build 时 生成文件的目录名称要和baseUrl的生产环境路径一致默认dist
outputDir: "dist",
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)

Loading…
Cancel
Save