地图筛选按钮联动

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

@ -5,4 +5,6 @@ VUE_APP_TITLE = 人口数据管理系统
ENV = 'production' 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"; import MarsMap from "@/components/mars-work/mars-map.vue";
export default { export default {
// http://39.101.188.84:9999/demo/tc-community/lib/geoJson/xiaoqu.json
data() { data() {
const basePathUrl = window.basePathUrl || ""; const basePathUrl = window.basePathUrl || "";
return { return {
configUrl: basePathUrl + "lib/config/config.json", configUrl: basePathUrl + "lib/config/config.json",
tiles3dLayer: null, tiles3dLayer: null,
map: null, map: null,
baseUrl: basePathUrl + "lib/geoJson",
}; };
}, },
props: { props: {
@ -32,6 +34,14 @@ export default {
methods: { methods: {
onMapload(map) { onMapload(map) {
this.map = 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); this.$emit("mapLoad", map);
}, },
}, },

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

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

@ -2,6 +2,10 @@ const xiaoqu = {
state: { state: {
//页面接口参数 //页面接口参数
queryParmas: {}, queryParmas: {},
mapParmas: {
sd: false,
networkName: undefined,
},
}, },
mutations: { mutations: {
//参数变化 //参数变化
@ -10,6 +14,11 @@ const xiaoqu = {
state.queryParmas[key] = query[key]; state.queryParmas[key] = query[key];
} }
}, },
CHANGE_QUERY_MAP: (state, query) => {
for (let key in query) {
state.mapParmas[key] = query[key];
}
},
//重置参数 //重置参数
RESET_QUERY: (state, query) => { RESET_QUERY: (state, query) => {
state.queryParmas = { 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 xiaoquInfo } from "./xiaoqu/leftData/xiaoquInfo";
export { default as networkInfo } from "./xiaoqu/leftData/networkInfo"; export { default as networkInfo } from "./xiaoqu/leftData/networkInfo";
export { default as buildingStatistics } from "./xiaoqu/leftData/buildingStatistics"; export { default as buildingStatistics } from "./xiaoqu/leftData/buildingStatistics";
export { default as mapSearchBox } from "./xiaoqu/mapSearchBox.vue";

@ -6,6 +6,7 @@
<script> <script>
import configJson from "./map-config.json"; import configJson from "./map-config.json";
import { mapGetters } from "vuex";
import garden from "./garden.json"; import garden from "./garden.json";
import MarsMap from "@/components/mars-map"; import MarsMap from "@/components/mars-map";
import { listDept } from "@/api/system/dept.js"; import { listDept } from "@/api/system/dept.js";
@ -17,6 +18,9 @@ export default {
default: 0, default: 0,
}, },
}, },
computed: {
...mapGetters(["mapParmas"]),
},
data() { data() {
const basePathUrl = window.basePathUrl || ""; const basePathUrl = window.basePathUrl || "";
return { return {
@ -51,6 +55,16 @@ export default {
components: { components: {
MarsMap, 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() { created() {
this.config = configJson[JSON.parse(this.xiaoquId)]; this.config = configJson[JSON.parse(this.xiaoquId)];
}, },
@ -82,7 +96,7 @@ export default {
this.mapLayer.planePoint = new mars3d.layer.GraphicLayer(); this.mapLayer.planePoint = new mars3d.layer.GraphicLayer();
this.map.addLayer(this.mapLayer.planePoint); 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); this.map.addLayer(this.mapLayer.network);
}, },
addMapLayer() { addMapLayer() {
@ -99,9 +113,7 @@ export default {
this.addGardenLayer(); this.addGardenLayer();
} }
// this.addNetworkLayer();
this.addbuildingLayer(); this.addbuildingLayer();
// this.add3DXiaoqu();
// this.addDTH(); // this.addDTH();
}, },
@ -302,10 +314,10 @@ export default {
this.mapLayer.plane.addGraphic(polygon); this.mapLayer.plane.addGraphic(polygon);
polygon.on(mars3d.EventType.highlightClose, function (e) { polygon.on(mars3d.EventType.highlightClose, function (e) {
_this.$store.commit("CHANGE_QUERY", { // _this.$store.commit("CHANGE_QUERY", {
buildingid: undefined, // buildingid: undefined,
deptId: undefined, //deptId: undefined,
}); // //}); //
}); });
const point = new mars3d.graphic.BillboardEntity({ const point = new mars3d.graphic.BillboardEntity({
@ -387,13 +399,16 @@ export default {
}, },
// //
addNetworkLayer() { async addNetworkLayer(show) {
mars3d.Util.fetchJson({ if (show && this.mapLayer.network.length == 0) {
url: this.configUrl + `lib/geoJson/xiaoqu/network${this.xiaoquId}.json`, let res = await mars3d.Util.fetchJson({
}).then((res) => { url:
this.configUrl + `lib/geoJson/xiaoqu/network${this.xiaoquId}.json`,
});
const arr = mars3d.Util.geoJsonToGraphics(res); const arr = mars3d.Util.geoJsonToGraphics(res);
arr.map((item, index) => { arr.map((item, index) => {
let polygon = new mars3d.graphic.PolygonEntity({ let polygon = new mars3d.graphic.PolygonEntity({
id: item.attr["名称"],
positions: item.positions, positions: item.positions,
style: { style: {
color: "#005AFF", color: "#005AFF",
@ -404,40 +419,55 @@ export default {
outline: true, outline: true,
outlineWidth: 3, outlineWidth: 3,
outlineColor: "#32FF85", outlineColor: "#32FF85",
highlight: {
type: "click",
color: "#FF3992",
opacity: 0.5,
outline: true,
outlineColor: "#FF129D",
outlineWidth: 5,
},
}, },
}); });
this.mapLayer.network.addGraphic(polygon); 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 //3D
add3DXiaoqu() { add3DXiaoqu(show) {
//4D - if (show && this.mapLayer.tiles3dLayer != "undefined") {
let maximumMemoryUsage = //2D -
process.env.NODE_ENV === "production" ? (1024 * 4) / 2 : 1024 / 2; let maximumMemoryUsage =
// process.env.NODE_ENV === "production" ? (1024 * 2) / 2 : 1024 / 2;
this.mapLayer.tiles3dLayer = new mars3d.layer.TilesetLayer({ //
show: false, this.mapLayer.tiles3dLayer = new mars3d.layer.TilesetLayer({
name: "太仓测试", show: false,
url: this.config.qingxie.url, name: "太仓测试",
maximumScreenSpaceError: 16, url: this.config.qingxie.url,
maximumMemoryUsage: maximumMemoryUsage, maximumScreenSpaceError: 16,
dynamicScreenSpaceError: false, maximumMemoryUsage: maximumMemoryUsage,
skipLevelOfDetail: true, dynamicScreenSpaceError: false,
preferLeaves: true, skipLevelOfDetail: true,
flyTo: false, preferLeaves: true,
center: this.config.viewHome, flyTo: false,
}); center: this.config.viewHome,
this.map.addLayer(this.mapLayer.tiles3dLayer); });
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 //2D - 3D
handle3dPoint() { 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 + '人口数据管理系统'" :mainTitle="xiaoquIntroduce.deptName + '人口数据管理系统'"
:showStreet="false" :showStreet="false"
></NavigationBar> ></NavigationBar>
<mapSearchBox />
<mars-map ref="map" :xiaoquId="queryParamsXiaoqu.xiaoquId"></mars-map> <mars-map ref="map" :xiaoquId="queryParamsXiaoqu.xiaoquId"></mars-map>
<foldpanelLeft :title="filterTitle()"> <foldpanelLeft :title="filterTitle()">
<!-- 左侧显示逻辑 1.小区简介 < 2.网格简介 < 3.楼栋统计分析 --> <!-- 左侧显示逻辑 1.小区简介 < 2.网格简介 < 3.楼栋统计分析 -->
<xiaoquInfo <xiaoquInfo
@ -38,6 +42,7 @@ import {
xiaoquInfo, xiaoquInfo,
networkInfo, networkInfo,
buildingStatistics, buildingStatistics,
mapSearchBox,
} from "@/views/components/index.js"; } from "@/views/components/index.js";
export default { export default {
data() { data() {
@ -52,6 +57,7 @@ export default {
xiaoquInfo, xiaoquInfo,
networkInfo, networkInfo,
buildingStatistics, buildingStatistics,
mapSearchBox,
}, },
computed: { computed: {
...mapGetters(["xiaoquIntroduce", "queryParamsXiaoqu"]), ...mapGetters(["xiaoquIntroduce", "queryParamsXiaoqu"]),

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

Loading…
Cancel
Save