3575 lines
95 KiB
Vue
3575 lines
95 KiB
Vue
<template>
|
||
<div class="module">
|
||
<teleport to="body">
|
||
<div id="map" style="width: 100vw; height: 100vh" v-show="openD"></div>
|
||
<div class="left" style="width: 517px">
|
||
<div class="lyx">
|
||
<div class="title">
|
||
<div class="title_name">
|
||
<span @click="csh()">龙游县</span>
|
||
<span v-if="title_jd" @click="to_jd(title_jd)"
|
||
>>{{ title_jd }}</span
|
||
>
|
||
<span v-if="title_cs">>{{ title_cs }}</span>
|
||
</div>
|
||
</div>
|
||
<div
|
||
class="content_item2"
|
||
v-for="(item, index) in personTotal.slice(0, 1)"
|
||
:class="{ choose: item.age == choose.person }"
|
||
@click="buten(item)"
|
||
:key="index"
|
||
>
|
||
<div class="content_item_name">{{ ageLess0(item.ages) }}</div>
|
||
<div class="content_item_value">{{ item.rksl }}人</div>
|
||
</div>
|
||
<div class="age-container">
|
||
<div class="progress-wrapper">
|
||
<div
|
||
v-for="(item, index) in PopulationRatio"
|
||
:class="[
|
||
'progress-container',
|
||
{
|
||
'above-line': index % 2 !== 0,
|
||
'below-line': index % 2 === 0,
|
||
},
|
||
]"
|
||
:style="{
|
||
width: item.progress + '%',
|
||
backgroundColor: item.bgColor,
|
||
}"
|
||
>
|
||
<span
|
||
:style="{ color: item.bgColor }"
|
||
:class="[
|
||
{
|
||
'above-line2': index % 2 !== 0,
|
||
'below-line2': index % 2 === 0,
|
||
},
|
||
]"
|
||
>{{ item.progress.toFixed(2) + "%" }}</span
|
||
>
|
||
<span
|
||
style="color: #fff; white-space: nowrap"
|
||
:class="[
|
||
{
|
||
'above-line1': index % 2 !== 0,
|
||
'below-line1': index % 2 === 0,
|
||
},
|
||
]"
|
||
>{{ item.age }}</span
|
||
>
|
||
<div
|
||
class="age-line"
|
||
:style="{
|
||
backgroundColor: item.bgColor,
|
||
}"
|
||
></div>
|
||
<div
|
||
class="dot"
|
||
:style="{ backgroundColor: item.bgColor }"
|
||
></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="content">
|
||
<div
|
||
class="content_item"
|
||
v-for="(item, index) in personTotal.slice(1)"
|
||
:class="{ choose: item.age == choose.person }"
|
||
@click="buten(item)"
|
||
:key="index"
|
||
>
|
||
<div class="content_item_name">{{ ageLess0(item.ages) }}</div>
|
||
<div class="content_item_value">
|
||
{{ item.rksl }}人
|
||
<div class="content_item_percent">({{ item.percent }}%)</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tsbq">
|
||
<div class="title">
|
||
<div class="title_name">
|
||
<span>特殊标签</span>
|
||
</div>
|
||
</div>
|
||
<div class="content">
|
||
<div
|
||
class="content_item"
|
||
v-for="(item, index) in tsbqTotal"
|
||
:class="{ choose: item.id == choose.person }"
|
||
@click="buten2(item)"
|
||
:key="index"
|
||
>
|
||
<div class="content_item_name">{{ item.name }}</div>
|
||
<div class="content_item_value">{{ item.rksl }}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="right" style="width: 517px">
|
||
<div class="jbggfwq">
|
||
<div class="title">
|
||
<div class="title_name"><span> 基本公共服务圈</span></div>
|
||
</div>
|
||
<div class="jbggfwq_content">
|
||
<div
|
||
class="jbggfwq_content_item"
|
||
v-for="(item, index) in jbfwqTotal"
|
||
:key="index"
|
||
>
|
||
<div class="jbggfwq_content_item_left">{{ item.name }}</div>
|
||
<div class="jbggfwq_content_item_right">
|
||
<div
|
||
class="jbggfwq_content_item_right_item"
|
||
v-for="itemm in item.child"
|
||
:class="{ choose: itemm.jc == choose.fwq }"
|
||
@click="changeFwq(itemm.jc, item.name, itemm.jc)"
|
||
>
|
||
{{ itemm.jc }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="zyys">
|
||
<div class="title">
|
||
<div class="title_name"><span> 资源要素</span></div>
|
||
</div>
|
||
<div class="zyys_content">
|
||
<div
|
||
class="zyys_content_item"
|
||
v-for="(item, index) in yaosuTotal"
|
||
:class="{
|
||
choose: yaosuList.includes(item.name),
|
||
wz: item.wz == true,
|
||
}"
|
||
@click="changeys(item.name)"
|
||
:key="index"
|
||
>
|
||
<img :src="item.img" class="zyys_content_item_left" />
|
||
<div class="zyys_content_item_right">{{ item.name }}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<Dialog
|
||
:dialogShow="dialogShow"
|
||
:columns="tableType.columns"
|
||
:title="tableType.title"
|
||
:tableData="tableType.data"
|
||
:pagination="pagination"
|
||
@close="close"
|
||
@handle="handlePagination"
|
||
@openMessage="openMessage"
|
||
>
|
||
<template #jzzt="{ currentCol, currentData }">
|
||
<div v-if="currentData.jzzt == 1">居住</div>
|
||
<div v-else>未居住</div>
|
||
</template>
|
||
</Dialog>
|
||
<personDetail
|
||
class="detail"
|
||
style="width: 1920px; height: 1080px"
|
||
v-show="!openD"
|
||
:message="message"
|
||
@closeDetail="closeDetail"
|
||
></personDetail>
|
||
</teleport>
|
||
</div>
|
||
</template>
|
||
<script setup>
|
||
import {
|
||
ref,
|
||
reactive,
|
||
onMounted,
|
||
onBeforeMount,
|
||
onBeforeUnmount,
|
||
computed,
|
||
defineProps,
|
||
watch,
|
||
nextTick,
|
||
} from "vue";
|
||
import { ElMessage } from "element-plus";
|
||
import tools from "@/utils/tools";
|
||
import initializeMap from "@/utils/mapInitializer.js";
|
||
import http from "@/utils/request.js";
|
||
import mapTown from "@/assets/json/ly.json";
|
||
// import xkz from "@/assets/json/xkz.json";
|
||
import cssj from "@/assets/json/cssj.json";
|
||
import j0 from "@/assets/images/map/j0.png";
|
||
import j1 from "@/assets/images/map/j1.png";
|
||
import j2 from "@/assets/images/map/j2.png";
|
||
import j3 from "@/assets/images/map/j3.png";
|
||
import j4 from "@/assets/images/map/j4.png";
|
||
import j5 from "@/assets/images/map/j5.png";
|
||
import j6 from "@/assets/images/map/j6.png";
|
||
import j7 from "@/assets/images/map/j7.png";
|
||
import j8 from "@/assets/images/map/j8.png";
|
||
import j9 from "@/assets/images/map/j9.png";
|
||
import j10 from "@/assets/images/map/j10.png";
|
||
import dwd from "@/assets/images/map/dwd.png";
|
||
import fwqbg1 from "@/assets/images/map/qlv.png";
|
||
import fwqbg2 from "@/assets/images/map/qlan.png";
|
||
import fwqbg3 from "@/assets/images/map/slan.png";
|
||
import fwqbg4 from "@/assets/images/map/slv.png";
|
||
import fwqbg5 from "@/assets/images/map/shuang.png";
|
||
import fwqbg6 from "@/assets/images/map/qqlv.png";
|
||
import b1 from "@/assets/images/map/bb1.png";
|
||
import b2 from "@/assets/images/map/b2.png";
|
||
import b3 from "@/assets/images/map/b3.png";
|
||
import b4 from "@/assets/images/map/b4.png";
|
||
import b5 from "@/assets/images/map/b5.png";
|
||
import b6 from "@/assets/images/map/b6.png";
|
||
import xcbg from "@/assets/images/map/xcbg.png";
|
||
import AED from "@/assets/images/map/AED.png";
|
||
import Dialog from "./dialog/dialogMapDp.vue";
|
||
import personDetail from "./person/index.vue";
|
||
//--------定义参数-------
|
||
//是否打开人物详情
|
||
const openD = ref(true);
|
||
const message = ref({});
|
||
//存放渲染的地块及图标的数组
|
||
const jdm_arr = ref([]); //街道名
|
||
const jdm_number_arr = ref([]); //街道名(+数量)
|
||
const fwq_list_arr = ref([]); //基本公共服务圈
|
||
const cs_qk_arr = ref([]); //社区彩色区块
|
||
const cs_name_arr = ref([]); //社区名
|
||
const cs_number_name_arr = ref([]); //社区名(+数量)
|
||
const cs_choose_arr = ref([]); //单点社区对应的区块(蓝色)
|
||
const cs_un_choose_arr = ref([]); //单点社区其他区块(灰色)
|
||
const cs_dd_arr = ref([]); //单点社区名
|
||
//存放村社区块
|
||
const csqk = ref({});
|
||
//头部标题
|
||
const title_choose = ref("");
|
||
const title_jd = ref("");
|
||
const title_cs = ref("");
|
||
//是否单点社区
|
||
const sfdd = ref(false);
|
||
const xuanzhongCs = ref([]);
|
||
//存放街道
|
||
const cfJd = ref("");
|
||
//存放村社
|
||
const cfCs = ref("");
|
||
//点击存放村社暂时
|
||
const cfCsZs = ref("");
|
||
//地图
|
||
var map = null;
|
||
//默认龙游县灰色地块
|
||
const mapTownDataDK = reactive([]);
|
||
//社区地块
|
||
const xkzDk = reactive([]);
|
||
//社区中心点
|
||
const xkzCenter = reactive([
|
||
{
|
||
name: "溪口村",
|
||
center: [119.2002156322304, 28.83866363229786],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "扁石村",
|
||
center: [119.18143177857742, 28.858795781247416],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "大垄村",
|
||
center: [119.15947390269743, 28.856881986353613],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "枫林村",
|
||
center: [119.2244601402551, 28.874916936765324],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "双港口村",
|
||
center: [119.2112370831526, 28.873145674638753],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "灵上村",
|
||
center: [119.18997199384468, 28.871170115155575],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "灵下村",
|
||
center: [119.19215588030731, 28.890692457149832],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "下徐村",
|
||
center: [119.13517530022014, 28.877528537725134],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "大沃口村",
|
||
center: [119.17629950196843, 28.895987778606404],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "寺下村",
|
||
center: [119.15115841066512, 28.913624042836545],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "大阳家村",
|
||
center: [119.165141274073, 28.89860048623702],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "石角村",
|
||
center: [119.12327500764461, 28.911094612057784],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "红罗村",
|
||
center: [119.18884846618927, 28.911017362099795],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "冷水村",
|
||
center: [119.19787638778016, 28.934598743672993],
|
||
number: "50",
|
||
},
|
||
{
|
||
name: "新溪社区",
|
||
center: [119.184555, 28.853068],
|
||
number: "50",
|
||
},
|
||
]);
|
||
//村社颜色列表
|
||
const colorList = [
|
||
{
|
||
bg: "RGBA(52, 231, 134, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(255, 206, 0, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(186, 232, 128, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(35, 146, 223, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(60, 144, 252, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(255, 142, 0, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(137, 128, 0, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(0, 207, 249, 1)",
|
||
},
|
||
{
|
||
bg: "RGBA(27, 91, 55, 1)",
|
||
},
|
||
];
|
||
//存放特殊标签中文对应的简写
|
||
const tsbq_id_total = ref([
|
||
{
|
||
name: "残疾人",
|
||
id: "cjr",
|
||
},
|
||
{
|
||
name: "低边",
|
||
id: "dibian",
|
||
},
|
||
{
|
||
name: "低保",
|
||
id: "db",
|
||
},
|
||
{
|
||
name: "高血压",
|
||
id: "gxy",
|
||
},
|
||
{
|
||
name: "糖尿病",
|
||
id: "tnb",
|
||
},
|
||
{
|
||
name: "退役军人",
|
||
id: "tyjr",
|
||
},
|
||
{
|
||
name: "困境儿童",
|
||
id: "kjer",
|
||
},
|
||
]);
|
||
//单选中社区区块
|
||
const chooseCsList = ref([]);
|
||
//单选未中社区区块
|
||
const unChooseList = ref([]);
|
||
const sqname = ref();
|
||
// const townName = ref();
|
||
//地图街道设置(存放数量)
|
||
const mapTownCount = reactive([
|
||
{
|
||
name: "龙洲街道",
|
||
center: [119.1573083, 28.9799445],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "东华街道",
|
||
center: [119.209592, 28.9799445],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "小南海镇",
|
||
center: [119.119616, 29.07309],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "湖镇镇",
|
||
center: [119.2906892, 29.0386151],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "溪口镇",
|
||
center: [119.1859408, 28.8879474],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "詹家镇",
|
||
center: [119.1201732, 29.005175],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "塔石镇",
|
||
center: [119.1256669, 29.1373072],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "横山镇",
|
||
center: [119.1876111, 29.1903275],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "模环乡",
|
||
center: [119.237015, 29.120862],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "石佛乡",
|
||
center: [119.1002998, 29.2018674],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "沐尘畲族乡",
|
||
center: [119.1837169, 28.8014116],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "罗家乡",
|
||
center: [119.2453273, 28.9130851],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "庙下乡",
|
||
center: [119.1037175, 28.8089885],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "大街乡",
|
||
center: [119.2664362, 28.8432149],
|
||
number: "1000",
|
||
},
|
||
{
|
||
name: "社阳乡",
|
||
center: [119.3109367, 28.9074754],
|
||
number: "1000",
|
||
},
|
||
]);
|
||
//选中
|
||
const choose = ref({
|
||
person: "",
|
||
fwq: 9999,
|
||
yaosu: 9999,
|
||
});
|
||
//人口数
|
||
const personTotal = ref([
|
||
{
|
||
id: 0,
|
||
name: "总人口",
|
||
value: "1724114",
|
||
ages: "总人口",
|
||
age: "1000",
|
||
},
|
||
]);
|
||
//人口数比例
|
||
const PopulationRatio = ref([
|
||
{
|
||
id: 0,
|
||
age: "1-10岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(246, 214, 120, 1)",
|
||
},
|
||
{
|
||
id: 1,
|
||
age: "11-20岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(243, 254, 128, 1)",
|
||
},
|
||
{
|
||
id: 2,
|
||
age: "21-30岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(164, 241, 119, 1)",
|
||
},
|
||
{
|
||
id: 3,
|
||
age: "31-40岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(110, 255, 201, 1)",
|
||
},
|
||
{
|
||
id: 4,
|
||
age: "41-50岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(105, 201, 241, 1)",
|
||
},
|
||
{
|
||
id: 5,
|
||
age: "51-60岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(107, 138, 244, 1)",
|
||
},
|
||
{
|
||
id: 6,
|
||
age: "61-70岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(161, 128, 255, 1)",
|
||
},
|
||
{
|
||
id: 7,
|
||
age: "71-80岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(179, 238, 147, 1)",
|
||
},
|
||
{
|
||
id: 8,
|
||
age: "81-90岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(190, 255, 246, 1)",
|
||
},
|
||
{
|
||
id: 9,
|
||
age: "91-100岁",
|
||
progress: 10, //进度条占比
|
||
bgColor: "rgba(222, 173, 98, 1)",
|
||
},
|
||
]);
|
||
//特殊标签
|
||
const tsbqTotal = ref([
|
||
{
|
||
id: 10,
|
||
name: "退役军人",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 20,
|
||
name: "留守",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 30,
|
||
name: "困境儿童",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 40,
|
||
name: "特困",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 0,
|
||
name: "低边",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 1,
|
||
name: "低保",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 2,
|
||
name: "高血压",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 3,
|
||
name: "糖尿病",
|
||
value: "26737",
|
||
},
|
||
{
|
||
id: 4,
|
||
name: "残疾人",
|
||
value: "26737",
|
||
},
|
||
]);
|
||
const data = reactive({
|
||
serviceCircleList: [],
|
||
fwqCoordinates: [], //服务圈经度
|
||
fwqCoordinates1: [], //服务圈经度
|
||
fwqCoordinates2: [], //服务圈纬度
|
||
zoomLevel: null, //服务圈缩放级别
|
||
});
|
||
//基本公共服务圈
|
||
const jbfwqTotal = ref([]);
|
||
const jbfwqPx = reactive([
|
||
"龙洲街道",
|
||
"东华街道",
|
||
"小南海镇",
|
||
"湖镇镇",
|
||
"溪口镇",
|
||
"詹家镇",
|
||
"塔石镇",
|
||
"横山镇",
|
||
"模环乡",
|
||
"石佛乡",
|
||
"沐尘畲族乡",
|
||
"罗家乡",
|
||
"庙下乡",
|
||
"大街乡",
|
||
"社阳乡",
|
||
]);
|
||
//存放地图上服务圈数据
|
||
|
||
var circle;
|
||
const fwqList = ref([]);
|
||
|
||
//资源要素
|
||
const yaosuTotal = ref([
|
||
{
|
||
id: 0,
|
||
name: "体育场所",
|
||
img: j0,
|
||
wz: false,
|
||
},
|
||
|
||
{
|
||
id: 1,
|
||
name: "幼儿园",
|
||
img: j1,
|
||
wz: false,
|
||
},
|
||
{
|
||
id: 2,
|
||
name: "小学",
|
||
img: j2,
|
||
wz: false,
|
||
},
|
||
{
|
||
id: 3,
|
||
name: "初中",
|
||
img: j3,
|
||
wz: false,
|
||
},
|
||
{
|
||
id: 4,
|
||
name: "高中",
|
||
img: j4,
|
||
wz: false,
|
||
},
|
||
{
|
||
id: 5,
|
||
name: "医院",
|
||
img: j5,
|
||
wz: false,
|
||
},
|
||
{
|
||
id: 6,
|
||
name: "南孔书院",
|
||
img: j6,
|
||
wz: false,
|
||
},
|
||
{
|
||
id: 7,
|
||
name: "养老机构",
|
||
img: j7,
|
||
wz: false,
|
||
},
|
||
{
|
||
id: 8,
|
||
name: "汽车充电桩",
|
||
img: j8,
|
||
wz: true,
|
||
},
|
||
{
|
||
id: 9,
|
||
name: "卫生服务中心",
|
||
img: j9,
|
||
wz: true,
|
||
},
|
||
{
|
||
id: 10,
|
||
name: "AED",
|
||
img: j10,
|
||
wz: true,
|
||
},
|
||
]);
|
||
//选中的资源要素
|
||
const yaosuList = ref([]);
|
||
//选中资源要素坐标
|
||
const yaosuIcon = ref({
|
||
体育场所: {
|
||
sj: [],
|
||
},
|
||
幼儿园: { sj: [] },
|
||
小学: { sj: [] },
|
||
初中: { sj: [] },
|
||
高中: { sj: [] },
|
||
医院: { sj: [] },
|
||
南孔书院: { sj: [] },
|
||
养老机构: { sj: [] },
|
||
汽车充电桩: { sj: [] },
|
||
卫生服务中心: { sj: [] },
|
||
AED: { sj: [] },
|
||
});
|
||
// 鼠标点击添加点位
|
||
let currentMarker = null; // 用于保存当前标记的引用
|
||
// 详情弹框
|
||
const dialogShow = ref(false);
|
||
const tableType = reactive({
|
||
url: "",
|
||
title: "人员列表",
|
||
columns: [
|
||
{
|
||
label: "姓名",
|
||
property: "nm",
|
||
},
|
||
{
|
||
label: "手机号",
|
||
property: "contactTel",
|
||
},
|
||
{
|
||
label: "政治面貌",
|
||
property: "zzmm",
|
||
},
|
||
{
|
||
label: "居住状态",
|
||
property: "jzzt",
|
||
type: "slot",
|
||
},
|
||
{
|
||
label: "民族",
|
||
property: "ethnic",
|
||
},
|
||
{
|
||
label: "性别",
|
||
property: "gender",
|
||
},
|
||
{
|
||
label: "户口登记地",
|
||
property: "domicAddr",
|
||
width: "300px",
|
||
},
|
||
],
|
||
data: [],
|
||
});
|
||
// 表格分页
|
||
const pagination = reactive({
|
||
total: 100,
|
||
pageSize: 10,
|
||
currentPage: 1,
|
||
});
|
||
//--------定义方法----------------------------------------
|
||
//地图初始化
|
||
const initMap = () => {
|
||
map = new BMapGL.Map("map", { minZoom: 8, maxZoom: 20 });
|
||
map.setMapType(BMAP_SATELLITE_MAP);
|
||
map.enableScrollWheelZoom(true);
|
||
goMapCenter([119.178783, 29.034583], 11);
|
||
|
||
//加载乡镇信息
|
||
loadTown();
|
||
//渲染地块
|
||
addPolygonCounty();
|
||
//添加街道名
|
||
addJd();
|
||
};
|
||
//点击龙游县初始化
|
||
const csh = () => {
|
||
clear();
|
||
xkzDk.length = 0;
|
||
map.removeEventListener("click", markera);
|
||
if (currentMarker !== null) {
|
||
map.removeOverlay(currentMarker);
|
||
}
|
||
goMapCenter([119.178783, 29.034583], 11);
|
||
getData();
|
||
getDataBq();
|
||
};
|
||
//清空村社的数据
|
||
const clear = () => {
|
||
xuanzhongCs.value = [];
|
||
sfdd.value = false;
|
||
title_choose.value = "";
|
||
title_jd.value = "";
|
||
title_cs.value = "";
|
||
cfJd.value = "";
|
||
cfCs.value = "";
|
||
cfCsZs.value = "";
|
||
cs_un_choose_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_un_choose_arr.value[index]);
|
||
});
|
||
cs_choose_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_choose_arr.value[index]);
|
||
});
|
||
cs_number_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_number_name_arr.value[index]);
|
||
});
|
||
cs_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_name_arr.value[index]);
|
||
});
|
||
cs_qk_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_qk_arr.value[index]);
|
||
});
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
cs_qk_arr.value = [];
|
||
cs_name_arr.value = [];
|
||
cs_number_name_arr.value = [];
|
||
cs_choose_arr.value = [];
|
||
cs_un_choose_arr.value = [];
|
||
cs_dd_arr.value = [];
|
||
};
|
||
//定义地图中点
|
||
const goMapCenter = (point, zoom) => {
|
||
map.centerAndZoom(new BMapGL.Point(point[0], point[1]), zoom);
|
||
};
|
||
//0岁时,改为小于1岁
|
||
const ageLess0 = computed(() => {
|
||
return function (item) {
|
||
if (item == "0岁") {
|
||
return "小于1岁";
|
||
} else {
|
||
return item;
|
||
}
|
||
};
|
||
});
|
||
//鼠标点击添加点位
|
||
const BMAP = () => {
|
||
// 添加鼠标点击事件监听器
|
||
map.addEventListener("click", markera);
|
||
};
|
||
const markera = (e) => {
|
||
console.log(`"center":[${e.latlng.lng},${e.latlng.lat}],`);
|
||
// 检查并移除当前标记
|
||
if (currentMarker !== null) {
|
||
map.removeOverlay(currentMarker);
|
||
}
|
||
// 创建新标记
|
||
let icons = new BMapGL.Icon(AED, new BMapGL.Size(24, 62));
|
||
var marker = new BMapGL.Marker(new BMapGL.Point(e.latlng.lng, e.latlng.lat), {
|
||
icon: icons,
|
||
});
|
||
// 将新标记添加到地图中并更新当前标记引用
|
||
map.addOverlay(marker);
|
||
currentMarker = marker;
|
||
};
|
||
//点击人口数
|
||
const buten = async (item) => {
|
||
getData(item.age);
|
||
getDatas(cfJd.value, item.age);
|
||
};
|
||
//点击特殊标签
|
||
const buten2 = async (item) => {
|
||
getDataBqs(cfJd.value, cfCs.value, item.id);
|
||
};
|
||
//人口
|
||
const getData = async (e) => {
|
||
let e1 = e;
|
||
if (e == "9999") {
|
||
e = "";
|
||
}
|
||
try {
|
||
const res = await http.get(`/api/ggfwyth/ysyzt/getXzjdrksl?age=${e || ""}`);
|
||
if (res.code == 200) {
|
||
if (cfJd.value == "") {
|
||
personTotal.value = [
|
||
{
|
||
id: "9999",
|
||
ages: "总人口",
|
||
age: "9999",
|
||
value: "res.data.total",
|
||
},
|
||
{
|
||
id: "6666",
|
||
name: "近一年死亡",
|
||
value: "5650",
|
||
ages: "近一年死亡",
|
||
age: "6666",
|
||
percent: "",
|
||
},
|
||
];
|
||
personTotal.value[0].rksl = res.data.total;
|
||
personTotal.value[0].ages = "总人口";
|
||
personTotal.value[1].rksl = res.data.swrs;
|
||
personTotal.value[1].ages = "近一年死亡";
|
||
personTotal.value[1].percent = res.data.swrsPercent;
|
||
res.data.age.forEach((item, index) => {
|
||
personTotal.value.push({
|
||
id: index + 1,
|
||
rksl: item.rksl,
|
||
age: item.age + "",
|
||
ages: item.age + "岁",
|
||
percent: item.percent,
|
||
});
|
||
});
|
||
// 年龄百分比
|
||
const agename = [
|
||
"09Percent",
|
||
"1019Percent",
|
||
"2029Percent",
|
||
"3039Percent",
|
||
"4049Percent",
|
||
"5059Percent",
|
||
"6069Percent",
|
||
"7079Percent",
|
||
"8089Percent",
|
||
"9099Percent",
|
||
"100nlPercent",
|
||
];
|
||
if (res.data.ageGroupsPercent) {
|
||
// console.log(PopulationRatio.value[0].progress);
|
||
agename.forEach((key, index) => {
|
||
if (PopulationRatio.value[index]) {
|
||
PopulationRatio.value[index].progress =
|
||
res.data.ageGroupsPercent[key];
|
||
}
|
||
});
|
||
}
|
||
}
|
||
mapTownCount.map((item) => {
|
||
item.swrs = 0;
|
||
res.data.townWwrs.map((items) => {
|
||
if (items.xzjd == item.name) {
|
||
item.swrs = items.swrs;
|
||
}
|
||
});
|
||
});
|
||
mapTownCount.map((item) => {
|
||
item.number = 0;
|
||
res.data.town.map((items) => {
|
||
if (items.town == item.name) {
|
||
item.number = items.rksl;
|
||
}
|
||
});
|
||
});
|
||
}
|
||
} catch (error) {
|
||
console.error("Error fetching data:", error);
|
||
}
|
||
if (e1) {
|
||
changeRs(e1);
|
||
}
|
||
};
|
||
const getDatas = async (e, i) => {
|
||
if (i == "9999") {
|
||
i = "";
|
||
}
|
||
await http
|
||
.get(`/api/ggfwyth/ysyzt/getCssrksl?town=${e}&age=${i || ""}`)
|
||
.then((res) => {
|
||
if (res.code == 200) {
|
||
if (cfCs.value != "") {
|
||
} else if (cfJd.value !== "") {
|
||
personTotal.value = [
|
||
{
|
||
// id: "9999",
|
||
ages: "总人口",
|
||
age: "9999",
|
||
value: "res.data.total",
|
||
},
|
||
{
|
||
// id: "6666",
|
||
name: "近一年死亡",
|
||
value: "5650",
|
||
ages: "近一年死亡",
|
||
age: "6666",
|
||
percent: "",
|
||
},
|
||
];
|
||
let before_age = "";
|
||
personTotal.value[0].rksl = res.data.total;
|
||
personTotal.value[0].ages = "总人口";
|
||
personTotal.value[1].rksl = res.data.swrs;
|
||
personTotal.value[1].ages = "近一年死亡";
|
||
personTotal.value[1].percent = res.data.swrsPercent;
|
||
res.data.age.forEach((item, index) => {
|
||
if (index == 0 && item.age == 0) {
|
||
personTotal.value.push({
|
||
rksl: item.rksl,
|
||
age: item.age + "",
|
||
ages: item.age + "岁",
|
||
percent: item.percent,
|
||
});
|
||
before_age = item.age;
|
||
} else {
|
||
if (item.age - before_age == 1) {
|
||
personTotal.value.push({
|
||
rksl: item.rksl,
|
||
age: item.age + "",
|
||
ages: item.age + "岁",
|
||
percent: item.percent,
|
||
});
|
||
before_age = item.age;
|
||
} else {
|
||
for (let k = before_age; k < item.age - 1; k++) {
|
||
before_age = before_age + 1;
|
||
personTotal.value.push({
|
||
rksl: 0,
|
||
age: before_age + "",
|
||
ages: before_age + "岁",
|
||
percent: 0.0,
|
||
});
|
||
}
|
||
personTotal.value.push({
|
||
rksl: item.rksl,
|
||
age: item.age + "",
|
||
ages: item.age + "岁",
|
||
percent: item.percent,
|
||
});
|
||
before_age = item.age;
|
||
}
|
||
}
|
||
});
|
||
}
|
||
if (cfJd.value != "") {
|
||
xkzCenter.map((item) => {
|
||
item.swrs = 0;
|
||
res.data.committeeSwrs.map((items) => {
|
||
if (items.csq == item.name) {
|
||
item.swrs = items.swrs;
|
||
}
|
||
});
|
||
});
|
||
|
||
xkzCenter.map((item) => {
|
||
item.number = 0;
|
||
res.data.committee.map((items) => {
|
||
if (items.committee == item.name) {
|
||
item.number = items.rksl;
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
cs_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_name_arr.value[index]);
|
||
});
|
||
cs_number_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_number_name_arr.value[index]);
|
||
});
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
|
||
if (title_jd.value == "") {
|
||
} else {
|
||
if (sfdd.value) {
|
||
if (choose.value.person == "") {
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
cs_dd_arr.value = [...xuanzhongCs.value];
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs(item, index);
|
||
});
|
||
} else {
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
|
||
cs_dd_arr.value = [...xuanzhongCs.value];
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs2(item, index);
|
||
});
|
||
}
|
||
} else {
|
||
if (choose.value.person == "") {
|
||
addCs();
|
||
} else {
|
||
addCs2();
|
||
}
|
||
}
|
||
}
|
||
|
||
// 年龄百分比
|
||
const agename = [
|
||
"09Percent",
|
||
"1019Percent",
|
||
"2029Percent",
|
||
"3039Percent",
|
||
"4049Percent",
|
||
"5059Percent",
|
||
"6069Percent",
|
||
"7079Percent",
|
||
"8089Percent",
|
||
"9099Percent",
|
||
"100nlPercent",
|
||
];
|
||
if (res.data.ageGroupsPercent) {
|
||
agename.forEach((key, index) => {
|
||
if (PopulationRatio.value[index]) {
|
||
PopulationRatio.value[index].progress =
|
||
res.data.ageGroupsPercent[key];
|
||
}
|
||
});
|
||
}
|
||
}
|
||
});
|
||
};
|
||
const getDatas2 = async (e, i, cs) => {
|
||
let i1 = i;
|
||
if (
|
||
i == "cjr" ||
|
||
i == "dibian" ||
|
||
i == "db" ||
|
||
i == "gxy" ||
|
||
i == "tnb" ||
|
||
i == "tyjr" ||
|
||
i == "kjer"
|
||
) {
|
||
i = "";
|
||
}
|
||
await http
|
||
.get(
|
||
`/api/ggfwyth/ysyzt/getCssrksl?town=${e}&age=${i || ""}&committee=${cs}`
|
||
)
|
||
.then((res) => {
|
||
if (res.code == 200) {
|
||
personTotal.value = [
|
||
{
|
||
// id: "9999",
|
||
name: "总人口",
|
||
ages: "总人口",
|
||
age: "9999",
|
||
value: "res.data.total",
|
||
},
|
||
{
|
||
// id: "6666",
|
||
name: "近一年死亡",
|
||
value: "5650",
|
||
ages: "近一年死亡",
|
||
age: "6666",
|
||
},
|
||
];
|
||
personTotal.value[0].rksl = res.data.total;
|
||
personTotal.value[0].ages = "总人口";
|
||
personTotal.value[1].rksl = res.data.swrs;
|
||
personTotal.value[1].ages = "近一年死亡";
|
||
personTotal.value[1].percent = res.data.swrsPercent;
|
||
// res.data.age.forEach((item, index) => {
|
||
// personTotal.value.push({
|
||
// id: index + 1,
|
||
// rksl: item.rksl,
|
||
// age: item.age + "",
|
||
// ages: item.age + "岁",
|
||
// percent: item.percent,
|
||
// });
|
||
// });
|
||
let before_age = "";
|
||
res.data.age.forEach((item, index) => {
|
||
// if (index == 0) {
|
||
// personTotal.value.push({
|
||
// rksl: item.rksl,
|
||
// age: item.age + "",
|
||
// ages: item.age + "岁",
|
||
// percent: item.percent,
|
||
// });
|
||
// before_age = item.age;
|
||
// console.log("执行111", before_age);
|
||
// } else {
|
||
// if (item.age - before_age == 1) {
|
||
// personTotal.value.push({
|
||
// rksl: item.rksl,
|
||
// age: item.age + "",
|
||
// ages: item.age + "岁",
|
||
// percent: item.percent,
|
||
// });
|
||
// before_age = item.age;
|
||
// } else {
|
||
// for (let i = 0; i < item.age - before_age - 1; i++) {
|
||
// ++before_age;
|
||
// personTotal.value.push({
|
||
// rksl: 0,
|
||
// age: before_age + "",
|
||
// ages: before_age + "岁",
|
||
// percent: 0.0,
|
||
// });
|
||
// }
|
||
// personTotal.value.push({
|
||
// rksl: item.rksl,
|
||
// age: item.age + "",
|
||
// ages: item.age + "岁",
|
||
// percent: item.percent,
|
||
// });
|
||
// before_age = item.age;
|
||
// }
|
||
// }
|
||
if (index == 0 && item.age == 0) {
|
||
personTotal.value.push({
|
||
rksl: item.rksl,
|
||
age: item.age + "",
|
||
ages: item.age + "岁",
|
||
percent: item.percent,
|
||
});
|
||
before_age = item.age;
|
||
} else {
|
||
if (item.age - before_age == 1) {
|
||
personTotal.value.push({
|
||
rksl: item.rksl,
|
||
age: item.age + "",
|
||
ages: item.age + "岁",
|
||
percent: item.percent,
|
||
});
|
||
before_age = item.age;
|
||
} else {
|
||
for (let k = before_age; k < item.age - 1; k++) {
|
||
before_age = before_age + 1;
|
||
personTotal.value.push({
|
||
rksl: 0,
|
||
age: before_age + "",
|
||
ages: before_age + "岁",
|
||
percent: 0.0,
|
||
});
|
||
}
|
||
personTotal.value.push({
|
||
rksl: item.rksl,
|
||
age: item.age + "",
|
||
ages: item.age + "岁",
|
||
percent: item.percent,
|
||
});
|
||
before_age = item.age;
|
||
}
|
||
}
|
||
});
|
||
xkzCenter.map((item) => {
|
||
item.swrs = 0;
|
||
res.data.committeeSwrs.map((items) => {
|
||
if (items.csq == item.name) {
|
||
item.swrs = items.swrs;
|
||
}
|
||
});
|
||
});
|
||
// 年龄百分比
|
||
const agename = [
|
||
"09Percent",
|
||
"1019Percent",
|
||
"2029Percent",
|
||
"3039Percent",
|
||
"4049Percent",
|
||
"5059Percent",
|
||
"6069Percent",
|
||
"7079Percent",
|
||
"8089Percent",
|
||
"9099Percent",
|
||
"100nlPercent",
|
||
];
|
||
if (res.data.ageGroupsPercent) {
|
||
agename.forEach((key, index) => {
|
||
if (PopulationRatio.value[index]) {
|
||
PopulationRatio.value[index].progress =
|
||
res.data.ageGroupsPercent[key];
|
||
}
|
||
});
|
||
}
|
||
}
|
||
});
|
||
if (
|
||
i1 == "cjr" ||
|
||
i1 == "dibian" ||
|
||
i1 == "db" ||
|
||
i1 == "gxy" ||
|
||
i1 == "tnb" ||
|
||
i1 == "tyjr" ||
|
||
i1 == "kjer"
|
||
) {
|
||
} else {
|
||
if (choose.value.person == "") {
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs(item, index);
|
||
});
|
||
} else {
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs2(item, index);
|
||
});
|
||
}
|
||
}
|
||
};
|
||
//特殊标签
|
||
//获取特殊标签
|
||
//特殊标签列表数据请求
|
||
const getDataBq = async (jd, cs) => {
|
||
await http
|
||
.get(`/api/ggfwyth/ysyzt/getTsbq?csq=${cs || ""}&xzjd=${jd || ""}`)
|
||
.then((res) => {
|
||
if (res.code == 200) {
|
||
tsbqTotal.value.length = 0;
|
||
for (let name in res.data) {
|
||
let idd = "";
|
||
for (let v = 0; v < tsbq_id_total.value.length; v++) {
|
||
if (tsbq_id_total.value[v].name == name) {
|
||
idd = tsbq_id_total.value[v].id;
|
||
}
|
||
}
|
||
tsbqTotal.value.push({
|
||
id: idd,
|
||
name: name,
|
||
rksl: res.data[name] || 0,
|
||
});
|
||
}
|
||
}
|
||
});
|
||
};
|
||
const getDataBqs = async (jd, cs, bq) => {
|
||
await getDataBqJD(bq);
|
||
getDataBqs2(cfJd.value, cfCs.value, bq);
|
||
// await http.get(`/api/ggfwyth/ysyzt/getTsbqByXzjdOrCsq`, data).then((res) => {
|
||
// if (res.code == 200) {
|
||
// mapTownCount.map((item) => {
|
||
// item.numbers = 0;
|
||
// res.data.map((items) => {
|
||
// if (items.xzjd == item.name) {
|
||
// item.numbers = items.rs;
|
||
// }
|
||
// });
|
||
// });
|
||
// }
|
||
// });
|
||
};
|
||
//特殊标签获取街道内部人数
|
||
const getDataBqs2 = async (jd, cs, bq, f = true) => {
|
||
//f用来判断执不执行changeRs2
|
||
let data = {};
|
||
let vv = 0;
|
||
if (cs == "" && jd == "") {
|
||
data = {
|
||
tsbq: bq,
|
||
};
|
||
vv = 1;
|
||
} else if (cs == "") {
|
||
data = {
|
||
xzjd: jd,
|
||
tsbq: bq,
|
||
};
|
||
vv = 2;
|
||
} else {
|
||
data = {
|
||
xzjd: jd,
|
||
tsbq: bq,
|
||
csq: cs,
|
||
};
|
||
vv = 3;
|
||
}
|
||
await http.get(`/api/ggfwyth/ysyzt/getTsbqByXzjdOrCsq`, data).then((res) => {
|
||
if (res.code == 200) {
|
||
if (cfJd.value != "") {
|
||
xkzCenter.map((item) => {
|
||
item.numbers = 0;
|
||
res.data.map((items) => {
|
||
if (items.csq == item.name) {
|
||
item.numbers = items.rs;
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
if (f) {
|
||
changeRs2(bq);
|
||
}
|
||
|
||
cs_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_name_arr.value[index]);
|
||
});
|
||
cs_number_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_number_name_arr.value[index]);
|
||
});
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
if (title_jd.value == "") {
|
||
} else {
|
||
if (sfdd.value) {
|
||
if (choose.value.person == "") {
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
cs_dd_arr.value = [...xuanzhongCs.value];
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs(item, index);
|
||
});
|
||
} else {
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
cs_dd_arr.value = [...xuanzhongCs.value];
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs2(item, index);
|
||
});
|
||
}
|
||
} else {
|
||
if (choose.value.person == "") {
|
||
addCs();
|
||
} else {
|
||
addCs2();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|
||
};
|
||
//单点选择区域获取特殊标签
|
||
const getDataBqs3 = async (jd, cs, bq) => {
|
||
//f用来判断执不执行changeRs2
|
||
let data = {};
|
||
let vv = 0;
|
||
if (cs == "" && jd == "") {
|
||
data = {
|
||
tsbq: bq,
|
||
};
|
||
vv = 1;
|
||
} else if (cs == "") {
|
||
data = {
|
||
xzjd: jd,
|
||
tsbq: bq,
|
||
};
|
||
vv = 2;
|
||
} else {
|
||
data = {
|
||
xzjd: jd,
|
||
tsbq: bq,
|
||
csq: cs,
|
||
};
|
||
vv = 3;
|
||
}
|
||
await http.get(`/api/ggfwyth/ysyzt/getTsbqByXzjdOrCsq`, data).then((res) => {
|
||
if (res.code == 200) {
|
||
// if (cfJd.value != "") {
|
||
xkzCenter.map((item) => {
|
||
item.numbers = 0;
|
||
res.data.map((items) => {
|
||
if (items.csq == item.name) {
|
||
item.numbers = items.rs;
|
||
}
|
||
});
|
||
});
|
||
// }
|
||
// cs_name_arr.value.forEach((item, index) => {
|
||
// map.removeOverlay(cs_name_arr.value[index]);
|
||
// });
|
||
// cs_number_name_arr.value.forEach((item, index) => {
|
||
// map.removeOverlay(cs_number_name_arr.value[index]);
|
||
// });
|
||
// cs_dd_arr.value.forEach((item, index) => {
|
||
// map.removeOverlay(cs_dd_arr.value[index]);
|
||
// });
|
||
// if (title_jd.value == "") {
|
||
// } else {
|
||
// if (sfdd.value) {
|
||
cs_dd_arr.value = [...xuanzhongCs.value];
|
||
if (choose.value.person == "") {
|
||
// cs_dd_arr.value.forEach((item, index) => {
|
||
// map.removeOverlay(cs_dd_arr.value[index]);
|
||
// });
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs(item, index);
|
||
});
|
||
} else {
|
||
// cs_dd_arr.value = [...xuanzhongCs.value];
|
||
console.log(cs_dd_arr.value);
|
||
cs_dd_arr.value.map((item, index) => {
|
||
DGcreateCs2(item, index);
|
||
});
|
||
}
|
||
// }
|
||
// else {
|
||
// if (choose.value.person == "") {
|
||
// addCs();
|
||
// } else {
|
||
// addCs2();
|
||
// }
|
||
// }
|
||
// }
|
||
}
|
||
});
|
||
};
|
||
//特殊标签单独获取各个街道人数
|
||
const getDataBqJD = async (bq) => {
|
||
let data = {};
|
||
data = {
|
||
tsbq: bq,
|
||
};
|
||
|
||
await http.get(`/api/ggfwyth/ysyzt/getTsbqByXzjdOrCsq`, data).then((res) => {
|
||
if (res.code == 200) {
|
||
if (res?.data) {
|
||
mapTownCount.map((item) => {
|
||
item.numbers = 0;
|
||
res.data.map((items) => {
|
||
if (items.xzjd == item.name) {
|
||
item.numbers = items.rs;
|
||
}
|
||
});
|
||
});
|
||
}
|
||
}
|
||
});
|
||
};
|
||
//人口,标签切换执行
|
||
const changeRs = (id) => {
|
||
if (choose.value.person == id) {
|
||
choose.value.person = "";
|
||
jdm_number_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(jdm_number_arr.value[index]);
|
||
});
|
||
addJd();
|
||
} else {
|
||
choose.value.person = id;
|
||
jdm_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(jdm_arr.value[index]);
|
||
});
|
||
jdm_number_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(jdm_number_arr.value[index]);
|
||
});
|
||
addJd2();
|
||
}
|
||
};
|
||
const changeRs2 = (id) => {
|
||
if (choose.value.person == id) {
|
||
choose.value.person = "";
|
||
jdm_number_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(jdm_number_arr.value[index]);
|
||
});
|
||
addJd();
|
||
} else {
|
||
choose.value.person = id;
|
||
jdm_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(jdm_arr.value[index]);
|
||
});
|
||
jdm_number_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(jdm_number_arr.value[index]);
|
||
});
|
||
addJd2();
|
||
}
|
||
};
|
||
//----------资源要素------------
|
||
//判断数组中是否包含某个字符
|
||
const removeCharFromArray = (arr, charToRemove) => {
|
||
// 如果数组包含该字符,则过滤掉它
|
||
if (arr.includes(charToRemove)) {
|
||
return arr.filter((ch) => ch !== charToRemove);
|
||
} else {
|
||
arr.push(charToRemove);
|
||
return arr;
|
||
}
|
||
};
|
||
const changeys = (name) => {
|
||
if (yaosuList.value.includes(name)) {
|
||
yaosuList.value = yaosuList.value.filter((ch) => ch !== name);
|
||
// yaosuIcon.value[name].sj.forEach((item, index) => {
|
||
// map.removeOverlay( yaosuIcon.value[name].sj[index]);
|
||
// });
|
||
} else {
|
||
yaosuList.value.push(name);
|
||
// getZyys(name);
|
||
}
|
||
};
|
||
const getZyys = (name) => {
|
||
http.get(``).then((res) => {
|
||
if (res.code == 200) {
|
||
res.data.map((item, index) => {
|
||
createZyys(item, index, name);
|
||
});
|
||
}
|
||
});
|
||
};
|
||
// 添加资源要素的图标
|
||
const createZyys = (polygon, indexx, name) => {
|
||
// data.fwqCoordinates = polygon.point;
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.height = "40px";
|
||
content.style.width = "40px";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
let img2 = document.createElement("img");
|
||
img2.style.width = "20px";
|
||
img2.style.height = "20px";
|
||
img2.src = this.properties.imgSrc2;
|
||
content.appendChild(img2);
|
||
return content;
|
||
}
|
||
yaosuIcon.value[name].sj[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.point),
|
||
opacity: 0.5,
|
||
offsetY: -10,
|
||
properties: {
|
||
imgSrc2: polygon.img2,
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
map.addOverlay(yaosuIcon.value[name].sj[indexx]);
|
||
};
|
||
//----------资源要素------------
|
||
//点击街道,回到街道
|
||
const to_jd = (item_name) => {
|
||
clear();
|
||
title_jd.value = item_name;
|
||
map.removeEventListener("click", markera);
|
||
if (currentMarker !== null) {
|
||
map.removeOverlay(currentMarker);
|
||
}
|
||
|
||
// townName.value = item_name;
|
||
// if (item_name == cfJd.value) {
|
||
// } else {
|
||
// console.log(111, choose.value.person);
|
||
cfJd.value = item_name;
|
||
let jdCenter = [];
|
||
BMAP();
|
||
loadCs(item_name);
|
||
addPolygonCountyCs();
|
||
getDataBq(cfJd.value, "");
|
||
if (choose.value.person == "") {
|
||
getDatas(cfJd.value, "");
|
||
}
|
||
if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
getDataBqs2(cfJd.value, cfCs.value, choose.value.person, false);
|
||
getDatas(cfJd.value, "");
|
||
} else if (choose.value.person != "") {
|
||
if (choose.value.person == "9999") {
|
||
getDatas(cfJd.value, "");
|
||
} else {
|
||
// if (choose.value.person == 1) {
|
||
// getDatas(cfJd.value, "0"); //0岁传字符串
|
||
// } else {
|
||
// getDatas(cfJd.value, choose.value.person);
|
||
// }
|
||
getDatas(cfJd.value, choose.value.person);
|
||
}
|
||
}
|
||
// if (title_jd.value == item.name) {
|
||
// } else {
|
||
// title_jd.value = item.name;
|
||
// }
|
||
|
||
mapTownCount.map((itemm) => {
|
||
if (itemm.name == item_name) {
|
||
jdCenter = itemm.center;
|
||
}
|
||
});
|
||
goMapCenter(jdCenter, 13);
|
||
|
||
// }
|
||
};
|
||
//详情
|
||
const open_detail = () => {
|
||
let age = "";
|
||
// if (choose.value.person == "9999") {
|
||
// age = "";
|
||
// person_detail(age);
|
||
// dialogShow.value = true;
|
||
// } else if (choose.value.person == "6666") {
|
||
// age = "";
|
||
// } else if (choose.value.person == 1) {
|
||
// age = "0";
|
||
// person_detail(age);
|
||
// dialogShow.value = true;
|
||
// } else {
|
||
// age = choose.value.person - 1;
|
||
// person_detail(age);
|
||
// dialogShow.value = true;
|
||
// }
|
||
if (choose.value.person == "9999") {
|
||
age = "";
|
||
person_detail(age);
|
||
dialogShow.value = true;
|
||
} else if (choose.value.person == "6666") {
|
||
age = "";
|
||
} else {
|
||
age = choose.value.person;
|
||
person_detail(age);
|
||
dialogShow.value = true;
|
||
}
|
||
};
|
||
const close = () => {
|
||
dialogShow.value = false;
|
||
pagination.total = 100;
|
||
};
|
||
//表格分页
|
||
const handlePagination = (current) => {
|
||
pagination.currentPage = current;
|
||
let age = "";
|
||
// if (choose.value.person == "9999") {
|
||
// age = "";
|
||
// } else if (choose.value.person == "6666") {
|
||
// age = "";
|
||
// } else if (choose.value.person == 1) {
|
||
// age = "0";
|
||
// } else {
|
||
// age = choose.value.person - 1;
|
||
// }
|
||
if (choose.value.person == "9999") {
|
||
age = "";
|
||
} else if (choose.value.person == "6666") {
|
||
age = "";
|
||
} else {
|
||
age = choose.value.person;
|
||
}
|
||
person_detail(age);
|
||
};
|
||
//打开人物详情页面
|
||
const openMessage = (e) => {
|
||
message.value = e;
|
||
openD.value = false;
|
||
reset_font2();
|
||
//监听实现人物详情动态缩放
|
||
window.addEventListener("resize", reset_font2);
|
||
};
|
||
//关闭人物详情页面
|
||
const closeDetail = () => {
|
||
openD.value = true;
|
||
window.removeEventListener("resize", reset_font2);
|
||
};
|
||
//获取人口列表接口
|
||
const person_detail = (age) => {
|
||
http
|
||
.get(
|
||
`/api/ggfwyth/ysyzt/getRysmzq?page=${pagination.currentPage}&size=${
|
||
pagination.pageSize
|
||
}&age=${age || ""}&committee=${cfCsZs.value || ""}&town=${
|
||
cfJd.value || ""
|
||
}`
|
||
)
|
||
.then((res) => {
|
||
if (res.code == 200) {
|
||
tableType.data = res.data;
|
||
pagination.total = res.count;
|
||
}
|
||
});
|
||
};
|
||
//--------公共服务圈-----------
|
||
//获取服务圈村社数据
|
||
const getFwq = () => {
|
||
http.get(`/api/ggfwyth/ysyzt/listXzjdAndCsq`).then((res) => {
|
||
if (res.code == 200) {
|
||
res.data.forEach((item, index) => {
|
||
jbfwqTotal.value.push({
|
||
name: item.xzjd,
|
||
child: [],
|
||
});
|
||
item.jcs.forEach((item2) => {
|
||
// console.log(item2.jc,6666);
|
||
jbfwqTotal.value[index].child.push({
|
||
name: item2.jc,
|
||
jc: item2.jc,
|
||
});
|
||
});
|
||
});
|
||
let arr=[]
|
||
jbfwqPx.forEach((item,index)=>{
|
||
jbfwqTotal.value.forEach((item2,index2)=>{
|
||
if(item==item2.name){
|
||
arr.push(item2)
|
||
}
|
||
})
|
||
})
|
||
jbfwqTotal.value=arr;
|
||
}
|
||
});
|
||
};
|
||
//点击服务圈村
|
||
const changeFwq = async (id, name, names) => {
|
||
if (choose.value.fwq == id) {
|
||
choose.value.fwq = null;
|
||
csh(); //地图初始化
|
||
addPolygonCounty(); //添加地区
|
||
fwq_list_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(fwq_list_arr.value[index]); // 清空服务圈 图标
|
||
});
|
||
fwq_list_arr.value = [];
|
||
map.removeOverlay(circle); // 清空服务圈 圆
|
||
circle = null;
|
||
} else {
|
||
csh();
|
||
await getServiceCircle(names, name);
|
||
if (fwqList.value.length !== 0) {
|
||
fwq_list_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(fwq_list_arr.value[index]); // 清空服务圈 图标
|
||
});
|
||
map.removeOverlay(circle); // 清空服务圈 圆
|
||
circle = null;
|
||
fwq_list_arr.value = [];
|
||
choose.value.fwq = id;
|
||
map.clearOverlays(); //清空地图上所有的覆盖物
|
||
addggfwq(); //创建公共服务圈
|
||
setTimeout(() => {
|
||
goMapCenter(
|
||
[data.fwqCoordinates1, data.fwqCoordinates2],
|
||
data.zoomLevel
|
||
); //中心点缩放
|
||
}, 500);
|
||
} else {
|
||
ElMessage.warning({
|
||
message: "无数据",
|
||
offset: 100, // 距离窗口顶部的偏移量
|
||
});
|
||
}
|
||
}
|
||
};
|
||
// 服务圈数据
|
||
const getServiceCircle = async (communityName, townName) => {
|
||
try {
|
||
const response = await http.get(
|
||
`/api/ggfwyth/ysyzt/zyysxx?jc=${communityName}&xzjd=${townName}`
|
||
);
|
||
if (response.code === 200) {
|
||
updateFwqList(response.data, townName, communityName);
|
||
}
|
||
} catch (error) {
|
||
console.error("Error fetching data:", error);
|
||
}
|
||
};
|
||
// 计算中心点
|
||
const calculateCenterPoint = (coordinates) => {
|
||
if (coordinates.length === 0) {
|
||
return null;
|
||
}
|
||
|
||
let x = 0.0;
|
||
let y = 0.0;
|
||
let z = 0.0;
|
||
|
||
coordinates.forEach((coord) => {
|
||
const lat = (parseFloat(coord[1]) * Math.PI) / 180;
|
||
const lon = (parseFloat(coord[0]) * Math.PI) / 180;
|
||
|
||
x += Math.cos(lat) * Math.cos(lon);
|
||
y += Math.cos(lat) * Math.sin(lon);
|
||
z += Math.sin(lat);
|
||
});
|
||
|
||
const total = coordinates.length;
|
||
x /= total;
|
||
y /= total;
|
||
z /= total;
|
||
|
||
const centralLon = Math.atan2(y, x);
|
||
const centralSquareRoot = Math.sqrt(x * x + y * y);
|
||
const centralLat = Math.atan2(z, centralSquareRoot);
|
||
|
||
return [
|
||
((centralLon * 180) / Math.PI).toFixed(6), // 经度
|
||
((centralLat * 180) / Math.PI).toFixed(6), // 纬度
|
||
];
|
||
};
|
||
const calculateAverage = (coordinates) => {
|
||
// const numericCoordinates = coordinates.map(Number); // 将字符串转换为数字
|
||
const numericCoordinates = coordinates.map((coord) => {
|
||
// 使用正则表达式去除非数字字符(保留小数点和负号)
|
||
const cleanedCoord = coord.replace(/[^0-9.-]/g, "");
|
||
return Number(cleanedCoord); // 将清理后的字符串转换为数字
|
||
});
|
||
const sum = numericCoordinates.reduce((acc, val) => acc + val, 0); // 计算总和
|
||
const average = sum / numericCoordinates.length; // 计算平均值
|
||
// console.log(average, "计算平均值");
|
||
|
||
return parseFloat(average.toFixed(5)); // 保留5位小数并转换为数字
|
||
};
|
||
// 根据最大距离计算合适的缩放级别
|
||
const calculateZoomLevel = (maxDistance) => {
|
||
if (maxDistance < 151) return 18;
|
||
if (maxDistance < 400) return 17;
|
||
if (maxDistance < 600) return 17.5;
|
||
if (maxDistance < 1000) return 16;
|
||
if (maxDistance < 2000) return 15;
|
||
if (maxDistance < 3000) return 14;
|
||
if (maxDistance < 5000) return 13;
|
||
return 13;
|
||
};
|
||
//创建公共服务圈
|
||
const addggfwq = () => {
|
||
if (fwqList.value.length !== 0) {
|
||
data.fwqCoordinates = [];
|
||
// data.fwqCoordinates1 = [];
|
||
// data.fwqCoordinates2 = [];
|
||
fwqList.value.map((item, index) => {
|
||
data.fwqCoordinates.push(item.point);
|
||
// data.fwqCoordinates1.push(item.point[0]);
|
||
// data.fwqCoordinates2.push(item.point[1]);
|
||
createCustomOverlay(item, index);
|
||
});
|
||
|
||
const centerPoint = calculateCenterPoint(data.fwqCoordinates);
|
||
data.fwqCoordinates1 = centerPoint[0];
|
||
data.fwqCoordinates2 = centerPoint[1];
|
||
|
||
// data.fwqCoordinates1 = calculateAverage(data.fwqCoordinates1);
|
||
// data.fwqCoordinates2 = calculateAverage(data.fwqCoordinates2);
|
||
console.log(centerPoint); // 输出中心点的经纬度
|
||
// console.log("经纬度", data.fwqCoordinates1, data.fwqCoordinates2 );
|
||
|
||
let distances = []; // 初始化距离数组
|
||
fwqList.value.forEach((item) => {
|
||
// let distance = algorithm(
|
||
// (item.point[0] = Number(item.point[0].replace(/[^0-9.-]/g, ""))),
|
||
// (item.point[1] = Number(item.point[1].replace(/[^0-9.-]/g, ""))),
|
||
// data.fwqCoordinates1,
|
||
// data.fwqCoordinates2
|
||
// );
|
||
let distance = algorithm(
|
||
Number(item.point[0].replace(/[^0-9.-]/g, "")),
|
||
Number(item.point[1].replace(/[^0-9.-]/g, "")),
|
||
Number(centerPoint[0]),
|
||
Number(centerPoint[1])
|
||
);
|
||
distances.push(distance); // 将距离存入数组
|
||
});
|
||
let maxDistance = Math.max(...distances); // 找到最大距离
|
||
maxDistance = Math.ceil(maxDistance * 1.8); // 向上取整
|
||
if (maxDistance < 100) {
|
||
maxDistance = 150; // 如果小于 100,则赋值为 150
|
||
}
|
||
data.zoomLevel = calculateZoomLevel(maxDistance);
|
||
console.log("最大距离:", maxDistance, data.zoomLevel);
|
||
drawACircle(maxDistance);
|
||
} else {
|
||
ElMessage.warning({
|
||
message: "无数据",
|
||
offset: 100, // 距离窗口顶部的偏移量
|
||
});
|
||
}
|
||
};
|
||
//计算两点之间直线距离
|
||
const algorithm = (point1, point2, point3, point4) => {
|
||
// console.log(point1, point2, point3, point4, 5555);
|
||
let [x1, y1] = [point1, point2];
|
||
let [x2, y2] = [point3, point4];
|
||
let Lat1 = rad(x1); // 纬度
|
||
let Lat2 = rad(x2);
|
||
let a = Lat1 - Lat2; // 两点纬度之差
|
||
let b = rad(y1) - rad(y2); // 经度之差
|
||
let s =
|
||
2 *
|
||
Math.asin(
|
||
Math.sqrt(
|
||
Math.pow(Math.sin(a / 2), 2) +
|
||
Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2)
|
||
)
|
||
);
|
||
// 计算两点距离的公式
|
||
s = s * 6378137.0; // 弧长等于弧度乘地球半径(半径为米)
|
||
s = Math.round(s * 10000) / 10000; // 精确距离的数值
|
||
return s;
|
||
};
|
||
|
||
// 角度转换成弧度
|
||
const rad = (d) => {
|
||
return (d * Math.PI) / 180.0;
|
||
};
|
||
|
||
// 添加服务圈
|
||
const drawACircle = (maxDistance) => {
|
||
// console.log("经纬度1", data.fwqCoordinates1, data.fwqCoordinates2);
|
||
if (!circle) {
|
||
var point = new BMapGL.Point(data.fwqCoordinates1, data.fwqCoordinates2);
|
||
circle = new BMapGL.Circle(point, maxDistance, {
|
||
strokeColor: "yellow",
|
||
strokeWeight: 2,
|
||
strokeOpacity: 0.8,
|
||
fillOpacity: 0.1,
|
||
strokeStyle: "dashed",
|
||
zIndex: 99,
|
||
// fillColor: "yellow",
|
||
});
|
||
map.addOverlay(circle);
|
||
}
|
||
};
|
||
// 添加公共服务圈的图标
|
||
const createCustomOverlay = (polygon, indexx) => {
|
||
// data.fwqCoordinates = polygon.point;
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.height = "40px";
|
||
content.style.width = "40px";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
|
||
var div = document.createElement("div");
|
||
div.style.color = "#ddd";
|
||
div.style.padding = `${polygon.padding}`;
|
||
div.style.whiteSpace = "nowrap";
|
||
div.style.MozUserSelect = "none";
|
||
div.style.fontSize = "12px";
|
||
div.style.borderRadius = "10px";
|
||
div.style.display = "flex";
|
||
div.style.justifyContent = "center";
|
||
div.style.alignItems = "center";
|
||
div.style.background = `url(${polygon.img}) no-repeat 0/100% 100%`;
|
||
div.style.cursor = "pointer";
|
||
div.style.transform = `translate(${polygon.x}px,${polygon.y}px)`;
|
||
div.setAttribute("name", this.properties.title);
|
||
|
||
var title = document.createElement("div");
|
||
title.style.fontSize = "14px";
|
||
title.style.fontWeight = "700";
|
||
title.style.marginLeft = "0px";
|
||
title.style.color = `${polygon.textColor}`;
|
||
div.appendChild(title);
|
||
title.appendChild(document.createTextNode(this.properties.title));
|
||
|
||
let img2 = document.createElement("img");
|
||
img2.style.width = "20px";
|
||
img2.style.height = "20px";
|
||
img2.src = this.properties.imgSrc2;
|
||
|
||
content.appendChild(div);
|
||
content.appendChild(img2);
|
||
|
||
// div.onclick = function () {
|
||
// addPolygonTown(this.getAttribute('name'))
|
||
// removeCustomOverlay()
|
||
// addStage(this.getAttribute('name'))
|
||
// state.mapStatus = 1
|
||
// }
|
||
|
||
return content;
|
||
}
|
||
fwq_list_arr.value[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.point),
|
||
opacity: 0.5,
|
||
offsetY: 0,
|
||
properties: {
|
||
title: polygon.name,
|
||
imgSrc2: polygon.img2,
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
// var labelopts = {
|
||
// position: new BMapGL.Point(polygon.point[0], polygon.point[1]), // 指定文本标注所在的地理位置
|
||
// offset: new BMapGL.Size(0, -97), // 设置文本偏移量
|
||
// };
|
||
// var label = new BMapGL.Label(polygon.name, labelopts);
|
||
// label.setStyle({
|
||
// color: "#fff",
|
||
// borderRadius: "1px",
|
||
// padding: "5px 13px",
|
||
// // background: `url(${b1s}) no-repeat 0/100% 100%`,
|
||
// fontSize: "15px",
|
||
// lineHeight: "20px",
|
||
// border: "0",
|
||
// transform: "translateX(-50%)",
|
||
// });
|
||
map.addOverlay(fwq_list_arr.value[indexx]);
|
||
};
|
||
const updateFwqList = (data, townName, communityName) => {
|
||
// console.log(data, townName, communityName,'服务器数据');
|
||
let updatedFwqList = [];
|
||
jbfwqTotal.value.forEach((town) => {
|
||
if (town.name === townName) {
|
||
town.child.forEach((community, index) => {
|
||
if (community.name === communityName) {
|
||
updatedFwqList = data
|
||
.filter(
|
||
(item) => item.xzjd === townName && item.jc === communityName
|
||
)
|
||
.map((item) => ({
|
||
x: 53,
|
||
y: 0,
|
||
img: fwqbg1,
|
||
img2: b2,
|
||
name: item.zyysmc,
|
||
point: [item.jd, item.wd],
|
||
padding: "4px 8px 10px",
|
||
textColor: "#fff",
|
||
bgColor: "#00b050",
|
||
}));
|
||
community.fwqList = updatedFwqList;
|
||
}
|
||
});
|
||
}
|
||
});
|
||
fwqList.value = updatedFwqList;
|
||
// console.log(jbfwqTotal.value[4].child[0], "乡镇");
|
||
};
|
||
//------------------------------
|
||
//-------乡镇街道级别---------
|
||
//加载乡镇信息
|
||
const loadTown = () => {
|
||
for (let v of mapTown.features) {
|
||
if (v.geometry.coordinates.length > 1) {
|
||
for (let w in v.geometry.coordinates) {
|
||
if (v.geometry.coordinates[w][0].length < 60) continue;
|
||
mapTownDataDK.push({
|
||
name: v.properties.name,
|
||
point: v.geometry.coordinates[w][0],
|
||
});
|
||
}
|
||
} else {
|
||
mapTownDataDK.push({
|
||
name: v.properties.name,
|
||
point: v.geometry.coordinates[0],
|
||
});
|
||
}
|
||
}
|
||
};
|
||
//添加地图区块
|
||
const addPolygonCounty = () => {
|
||
map.clearOverlays();
|
||
let fillColor = "#ffffff";
|
||
mapTownDataDK.map((item) => {
|
||
item.leg = 0;
|
||
//地区的坐标范围
|
||
let points = [];
|
||
item.point.map((p) => points.push(new BMapGL.Point(...p)));
|
||
if (points.length) {
|
||
//创建面
|
||
let polygon = new BMapGL.Polygon(points, {
|
||
strokeColor: "#5E9AD2",
|
||
strokeWeight: 2,
|
||
strokeOpacity: 0.8,
|
||
fillColor: fillColor,
|
||
fillOpacity: 0.7,
|
||
name: item.name,
|
||
zIndex: 92,
|
||
});
|
||
|
||
map.addOverlay(polygon);
|
||
polygon.addEventListener("click", () => {
|
||
// townName.value = item.name;
|
||
if (item.name == cfJd.value) {
|
||
} else {
|
||
clear();
|
||
xkzDk.length = 0;
|
||
cfJd.value = item.name;
|
||
let jdCenter = [];
|
||
// if (item.name == "溪口镇") {
|
||
BMAP();
|
||
loadCs(item.name);
|
||
addPolygonCountyCs();
|
||
getDataBq(cfJd.value, "");
|
||
if (choose.value.person == "") {
|
||
getDatas(cfJd.value, "");
|
||
}
|
||
if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
getDataBqs2(cfJd.value, cfCs.value, choose.value.person, false);
|
||
getDatas(cfJd.value, "");
|
||
} else if (choose.value.person != "") {
|
||
if (choose.value.person == "9999") {
|
||
getDatas(cfJd.value, "");
|
||
} else {
|
||
// if (choose.value.person == 1) {
|
||
// getDatas(cfJd.value, "0"); //0岁传字符串
|
||
// } else {
|
||
// getDatas(cfJd.value, choose.value.person - 1);
|
||
// }
|
||
|
||
getDatas(cfJd.value, choose.value.person);
|
||
}
|
||
}
|
||
if (title_jd.value == item.name) {
|
||
} else {
|
||
title_jd.value = item.name;
|
||
}
|
||
|
||
mapTownCount.map((itemm) => {
|
||
if (itemm.name == item.name) {
|
||
jdCenter = itemm.center;
|
||
}
|
||
});
|
||
goMapCenter(jdCenter, 13);
|
||
// }
|
||
// else {
|
||
// loadCs(item.name);
|
||
// addPolygonCountyCs();
|
||
// // map.removeEventListener("click", markera);
|
||
// // if (currentMarker !== null) {
|
||
// // map.removeOverlay(currentMarker);
|
||
// // }
|
||
// // clear();
|
||
// // getData();
|
||
// // getDataBq();
|
||
// }
|
||
}
|
||
});
|
||
}
|
||
});
|
||
};
|
||
//添加街道名
|
||
const addJd = () => {
|
||
mapTownCount.map((item, index) => {
|
||
createCustomOverlayJd(item, index);
|
||
});
|
||
};
|
||
//添加街道名2含数量
|
||
const addJd2 = () => {
|
||
nextTick(() => {
|
||
mapTownCount.map((item, index) => {
|
||
createCustomOverlayJd2(item, index);
|
||
});
|
||
});
|
||
|
||
// if (center_now.value[0] == 119.178783) {
|
||
// goMapCenter([119.178783, 29.034581], 11);
|
||
// }
|
||
};
|
||
// 添加地图上的街道名
|
||
const createCustomOverlayJd = (polygon, indexx) => {
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
content.style.height = "20px";
|
||
content.style.width = "20px";
|
||
var div = document.createElement("div");
|
||
div.style.color = "#333";
|
||
div.style.whiteSpace = "nowrap";
|
||
div.style.MozUserSelect = "none";
|
||
div.style.display = "flex";
|
||
div.style.justifyContent = "center";
|
||
div.style.alignItems = "center";
|
||
div.style.cursor = "pointer";
|
||
div.setAttribute("name", this.properties.title);
|
||
|
||
var title = document.createElement("div");
|
||
title.style.fontSize = "12px";
|
||
title.style.fontWeight = "600";
|
||
title.style.color = "#000000";
|
||
div.appendChild(title);
|
||
title.appendChild(document.createTextNode(this.properties.title));
|
||
content.appendChild(div);
|
||
return content;
|
||
}
|
||
jdm_arr.value[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.center),
|
||
opacity: 0.5,
|
||
offsetY: -10,
|
||
properties: {
|
||
title: polygon.name,
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
map.addOverlay(jdm_arr.value[indexx]);
|
||
};
|
||
// 添加地图上的街道名+(人数,标签)
|
||
const createCustomOverlayJd2 = (polygon, indexx) => {
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
content.style.height = "20px";
|
||
content.style.width = "20px";
|
||
var div = document.createElement("div");
|
||
div.style.color = "#333";
|
||
div.style.whiteSpace = "nowrap";
|
||
div.style.MozUserSelect = "none";
|
||
div.style.display = "flex";
|
||
div.style.flexDirection = "column";
|
||
div.style.justifyContent = "center";
|
||
div.style.alignItems = "center";
|
||
div.style.cursor = "pointer";
|
||
div.setAttribute("name", this.properties.title);
|
||
|
||
var title = document.createElement("div");
|
||
title.style.fontSize = "12px";
|
||
title.style.fontWeight = "600";
|
||
title.style.color = "#000000";
|
||
div.appendChild(title);
|
||
title.appendChild(document.createTextNode(this.properties.title));
|
||
content.appendChild(div);
|
||
var number = document.createElement("div");
|
||
number.style.fontSize = "13px";
|
||
number.style.fontWeight = "600";
|
||
number.style.color = "#FEFF6C";
|
||
number.style.textShadow = "0px 2px 4px rgba(0,0,0,0.5)";
|
||
div.appendChild(number);
|
||
number.appendChild(document.createTextNode(this.properties.number));
|
||
content.appendChild(div);
|
||
// div.onclick = function () {
|
||
// let jdCenter = [];
|
||
// if (polygon.name == "溪口镇") {
|
||
// title_choose.value = title_choose.value + `>${polygon.name}`;
|
||
// loadCs();
|
||
// addPolygonCountyCs();
|
||
// mapTownCount.map((item) => {
|
||
// if (item.name == "溪口镇") {
|
||
// jdCenter = item.center;
|
||
// }
|
||
// });
|
||
// addCs2();
|
||
// goMapCenter(jdCenter, 14);
|
||
// }
|
||
// };
|
||
return content;
|
||
}
|
||
let num = "";
|
||
if (choose.value.person == "6666") {
|
||
num = "swrs";
|
||
} else if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
num = "numbers";
|
||
} else {
|
||
num = "number";
|
||
}
|
||
jdm_number_arr.value[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.center),
|
||
opacity: 0.5,
|
||
offsetY: -10,
|
||
properties: {
|
||
title: polygon.name,
|
||
number: polygon[`${num}`],
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
map.addOverlay(jdm_number_arr.value[indexx]);
|
||
};
|
||
//------------------------------
|
||
//---------村社级别------------
|
||
//加载村社信息
|
||
const loadCs = (name) => {
|
||
xkzCenter.length = 0;
|
||
cssj.forEach((item, index) => {
|
||
if (item.name == name) {
|
||
csqk.value = item.sj;
|
||
}
|
||
});
|
||
for (let v of csqk.value.features) {
|
||
if (v.geometry.coordinates.length > 1) {
|
||
for (let w in v.geometry.coordinates) {
|
||
if (v.geometry.coordinates[w][0].length < 60) continue;
|
||
xkzDk.push({
|
||
name: v.properties.name,
|
||
point: v.geometry.coordinates[w],
|
||
});
|
||
}
|
||
xkzCenter.push({
|
||
name: v.properties.name,
|
||
center: v.properties.center,
|
||
});
|
||
} else {
|
||
xkzDk.push({
|
||
name: v.properties.name,
|
||
point: v.geometry.coordinates[0],
|
||
});
|
||
xkzCenter.push({
|
||
name: v.properties.name,
|
||
center: v.properties.center,
|
||
});
|
||
}
|
||
}
|
||
};
|
||
//添加村社区块
|
||
const addPolygonCountyCs = () => {
|
||
// console.log(11111111111111, xkzDk);
|
||
xkzDk.map((item, index) => {
|
||
let num = index % 9;
|
||
let fillColor = colorList[num].bg;
|
||
//地区的坐标范围
|
||
let points = [];
|
||
item.point[0].map((p) => points.push(new BMapGL.Point(...p)));
|
||
if (points.length) {
|
||
//创建面
|
||
cs_qk_arr.value[index] = new BMapGL.Polygon(points, {
|
||
strokeColor: fillColor,
|
||
strokeWeight: 2,
|
||
strokeOpacity: 0.8,
|
||
fillColor: fillColor,
|
||
fillOpacity: 0.7,
|
||
name: item.name,
|
||
zIndex: 99,
|
||
});
|
||
map.addOverlay(cs_qk_arr.value[index]);
|
||
cs_qk_arr.value[index].addEventListener("click", () => {
|
||
// console.log("名字", item.name);
|
||
cs_dd_arr.value = [];
|
||
cfCs.value = item.name;
|
||
title_cs.value = item.name;
|
||
sfdd.value = true;
|
||
xkzCenter.forEach((a, b) => {
|
||
if (a.name == item.name) {
|
||
cs_dd_arr.value.push(a);
|
||
xuanzhongCs.value.push(a);
|
||
}
|
||
});
|
||
chooseCsList.value.length = 0;
|
||
unChooseList.value.length = 0;
|
||
xkzDk.forEach((itemm, indexx) => {
|
||
if (itemm.name == item.name) {
|
||
chooseCsList.value.push(itemm);
|
||
} else {
|
||
unChooseList.value.push(itemm);
|
||
}
|
||
});
|
||
cs_qk_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_qk_arr.value[index]);
|
||
});
|
||
cs_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_name_arr.value[index]);
|
||
});
|
||
cs_number_name_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_number_name_arr.value[index]);
|
||
});
|
||
getDataBq(cfJd.value, cfCs.value);
|
||
if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
getDataBqs3(cfJd.value, cfCs.value, choose.value.person);
|
||
} else {
|
||
// getDataBqs(cfJd.value, cfCs.value);
|
||
}
|
||
//这段注意
|
||
// if (choose.value.person == 1) {
|
||
// getDatas2(cfJd.value, "0", cfCs.value); //0岁传字符串
|
||
// } else {
|
||
// getDatas2(cfJd.value, choose.value.person - 1, cfCs.value);
|
||
// }
|
||
getDatas2(cfJd.value, choose.value.person, cfCs.value);
|
||
// getDatas2(cfJd.value, choose.value.person, cfCs.value);
|
||
addCsChoose();
|
||
addCsUnChoose();
|
||
// if (choose.value.person == "") {
|
||
// cs_dd_arr.value.map((item, index) => {
|
||
// DGcreateCs(item, index);
|
||
// });
|
||
// } else {
|
||
// cs_dd_arr.value.map((item, index) => {
|
||
// DGcreateCs2(item, index);
|
||
// });
|
||
// }
|
||
});
|
||
}
|
||
});
|
||
};
|
||
//添加选中社区
|
||
const addCsChoose = () => {
|
||
chooseCsList.value.map((item, index) => {
|
||
sqname.value = item.name;
|
||
let fillColor = "blue";
|
||
//地区的坐标范围
|
||
let points = [];
|
||
item.point[0].map((p) => points.push(new BMapGL.Point(...p)));
|
||
if (points.length) {
|
||
//创建面
|
||
cs_choose_arr.value[index] = new BMapGL.Polygon(points, {
|
||
strokeColor: fillColor,
|
||
strokeWeight: 2,
|
||
strokeOpacity: 0.8,
|
||
fillColor: fillColor,
|
||
fillOpacity: 0.4,
|
||
name: item.name,
|
||
zIndex: 99,
|
||
});
|
||
map.addOverlay(cs_choose_arr.value[index]);
|
||
}
|
||
});
|
||
};
|
||
//添加未选中社区
|
||
const addCsUnChoose = () => {
|
||
unChooseList.value.map((item, index) => {
|
||
let fillColor = "RGBA(125, 140, 154, 1)";
|
||
//地区的坐标范围
|
||
let points = [];
|
||
item.point[0].map((p) => points.push(new BMapGL.Point(...p)));
|
||
if (points.length) {
|
||
//创建面
|
||
cs_un_choose_arr.value[index] = new BMapGL.Polygon(points, {
|
||
strokeColor: fillColor,
|
||
strokeWeight: 2,
|
||
strokeOpacity: 0.8,
|
||
fillColor: fillColor,
|
||
fillOpacity: 0.5,
|
||
name: item.name,
|
||
zIndex: 99,
|
||
});
|
||
map.addOverlay(cs_un_choose_arr.value[index]);
|
||
cs_un_choose_arr.value[index].addEventListener("click", () => {
|
||
cfCs.value = item.name;
|
||
title_cs.value = cfCs.value;
|
||
sfdd.value = true;
|
||
cs_dd_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_dd_arr.value[index]);
|
||
});
|
||
cs_un_choose_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_un_choose_arr.value[index]);
|
||
});
|
||
cs_choose_arr.value.forEach((item, index) => {
|
||
map.removeOverlay(cs_choose_arr.value[index]);
|
||
});
|
||
chooseCsList.value.length = 0;
|
||
unChooseList.value.length = 0;
|
||
cs_dd_arr.value = [];
|
||
xuanzhongCs.value = [];
|
||
xkzCenter.forEach((a, b) => {
|
||
if (a.name == item.name) {
|
||
cs_dd_arr.value.push(a);
|
||
xuanzhongCs.value.push(a);
|
||
}
|
||
});
|
||
xkzDk.forEach((itemm, indexx) => {
|
||
if (itemm.name == item.name) {
|
||
chooseCsList.value.push(itemm);
|
||
} else {
|
||
unChooseList.value.push(itemm);
|
||
}
|
||
});
|
||
// cs_un_choose_arr.value.forEach((item, index) => {
|
||
// map.removeOverlay(cs_qk_arr.value[index]);
|
||
// });
|
||
// getDataBqs(cfJd.value, cfCs.value);
|
||
getDataBq(cfJd.value, cfCs.value);
|
||
// if (choose.value.person == 1) {
|
||
// getDatas2(cfJd.value, "0", cfCs.value); //0岁传字符串
|
||
// } else {
|
||
// getDatas2(cfJd.value, choose.value.person - 1, cfCs.value);
|
||
// }
|
||
getDatas2(cfJd.value, choose.value.person, cfCs.value);
|
||
// getDatas2(cfJd.value, choose.value.person, cfCs.value);
|
||
// if (
|
||
// choose.value.person == "cjr" ||
|
||
// choose.value.person == "dibian" ||
|
||
// choose.value.person == "db" ||
|
||
// choose.value.person == "gxy" ||
|
||
// choose.value.person == "tnb" ||
|
||
// choose.value.person == "tyjr" ||
|
||
// choose.value.person == "kjer"
|
||
// ) {
|
||
// getDataBqs2(cfJd.value, cfCs.value, choose.value.person, false);
|
||
// }
|
||
// if (choose.value.person == "") {
|
||
// cs_dd_arr.value.map((item, index) => {
|
||
// DGcreateCs(item, index);
|
||
// });
|
||
// } else
|
||
if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
getDataBqs3(cfJd.value, cfCs.value, choose.value.person);
|
||
}
|
||
// if (choose.value.person == "") {
|
||
// cs_dd_arr.value.map((item, index) => {
|
||
// DGcreateCs(item, index);
|
||
// });
|
||
// } else {
|
||
// cs_dd_arr.value.map((item, index) => {
|
||
// DGcreateCs2(item, index);
|
||
// });
|
||
// }
|
||
addCsChoose();
|
||
addCsUnChoose();
|
||
});
|
||
}
|
||
});
|
||
};
|
||
//创建村社
|
||
const addCs = () => {
|
||
xkzCenter.map((item, index) => {
|
||
createCs(item, index);
|
||
});
|
||
};
|
||
//创建村社(人数,标签)
|
||
const addCs2 = () => {
|
||
xkzCenter.map((item, index) => {
|
||
createCs2(item, index);
|
||
});
|
||
};
|
||
//添加村社
|
||
const createCs = (polygon, indexx) => {
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.height = "60px";
|
||
content.style.width = "60px";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
|
||
var div = document.createElement("div");
|
||
div.style.color = "#333";
|
||
div.style.whiteSpace = "nowrap";
|
||
div.style.MozUserSelect = "none";
|
||
div.style.display = "flex";
|
||
div.style.justifyContent = "center";
|
||
div.style.alignItems = "center";
|
||
div.style.cursor = "pointer";
|
||
div.style.padding = "5px";
|
||
div.style.minWidth = "60px";
|
||
div.style.background = `url(${xcbg}) no-repeat 0/100% 100%`;
|
||
div.style.transform = "translateY(50px)";
|
||
div.setAttribute("name", this.properties.title);
|
||
|
||
var title = document.createElement("div");
|
||
title.style.fontSize = "10px";
|
||
title.style.fontWeight = "600";
|
||
title.style.color = "#000000";
|
||
div.appendChild(title);
|
||
title.appendChild(document.createTextNode(this.properties.title));
|
||
content.appendChild(div);
|
||
let img2 = document.createElement("img");
|
||
img2.style.width = "20px";
|
||
img2.style.height = "26px";
|
||
img2.src = this.properties.imgSrc2;
|
||
|
||
content.appendChild(div);
|
||
content.appendChild(img2);
|
||
return content;
|
||
}
|
||
cs_name_arr.value[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.center),
|
||
opacity: 0.5,
|
||
offsetY: -10,
|
||
properties: {
|
||
title: polygon.name,
|
||
imgSrc2: dwd,
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
map.addOverlay(cs_name_arr.value[indexx]);
|
||
};
|
||
//添加村社+(人数,标签)
|
||
const createCs2 = (polygon, indexx) => {
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
content.style.height = "60px";
|
||
content.style.width = "60px";
|
||
var div = document.createElement("div");
|
||
div.style.color = "#333";
|
||
div.style.whiteSpace = "nowrap";
|
||
div.style.MozUserSelect = "none";
|
||
div.style.display = "flex";
|
||
div.style.justifyContent = "space-between";
|
||
div.style.alignItems = "center";
|
||
div.style.cursor = "pointer";
|
||
div.style.padding = "5px";
|
||
div.style.minWidth = "60px";
|
||
div.style.background = `url(${xcbg}) no-repeat 0/100% 100%`;
|
||
div.style.transform = "translateY(50px)";
|
||
div.setAttribute("name", this.properties.title);
|
||
|
||
var title = document.createElement("div");
|
||
title.style.fontSize = "10px";
|
||
title.style.fontWeight = "600";
|
||
title.style.color = "#000000";
|
||
div.appendChild(title);
|
||
title.appendChild(document.createTextNode(this.properties.title));
|
||
content.appendChild(div);
|
||
|
||
var number = document.createElement("div");
|
||
number.style.fontSize = "10px";
|
||
number.style.fontWeight = "600";
|
||
number.style.color = "black";
|
||
div.appendChild(number);
|
||
number.appendChild(document.createTextNode(this.properties.number));
|
||
// content.appendChild(div);
|
||
let img2 = document.createElement("img");
|
||
img2.style.width = "20px";
|
||
img2.style.height = "26px";
|
||
img2.src = this.properties.imgSrc2;
|
||
|
||
content.appendChild(div);
|
||
content.appendChild(img2);
|
||
return content;
|
||
}
|
||
let num = "";
|
||
if (choose.value.person == "6666") {
|
||
num = "swrs";
|
||
} else if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
num = "numbers";
|
||
} else {
|
||
num = "number";
|
||
}
|
||
cs_number_name_arr.value[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.center),
|
||
opacity: 0.5,
|
||
offsetY: -10,
|
||
properties: {
|
||
title: polygon.name,
|
||
number: polygon[`${num}`],
|
||
imgSrc2: dwd,
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
map.addOverlay(cs_number_name_arr.value[indexx]);
|
||
cs_number_name_arr.value[indexx].addEventListener("click", () => {
|
||
cfCsZs.value = polygon.name;
|
||
if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
} else {
|
||
open_detail();
|
||
}
|
||
});
|
||
};
|
||
//添加单个村社
|
||
const DGcreateCs = (polygon, indexx) => {
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.height = "60px";
|
||
content.style.width = "60px";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
|
||
var div = document.createElement("div");
|
||
div.style.color = "#333";
|
||
div.style.whiteSpace = "nowrap";
|
||
div.style.MozUserSelect = "none";
|
||
div.style.display = "flex";
|
||
div.style.justifyContent = "center";
|
||
div.style.alignItems = "center";
|
||
div.style.cursor = "pointer";
|
||
div.style.padding = "5px";
|
||
div.style.minWidth = "60px";
|
||
div.style.background = `url(${xcbg}) no-repeat 0/100% 100%`;
|
||
div.style.transform = "translateY(50px)";
|
||
div.setAttribute("name", this.properties.title);
|
||
|
||
var title = document.createElement("div");
|
||
title.style.fontSize = "10px";
|
||
title.style.fontWeight = "600";
|
||
title.style.color = "#000000";
|
||
div.appendChild(title);
|
||
title.appendChild(document.createTextNode(this.properties.title));
|
||
content.appendChild(div);
|
||
let img2 = document.createElement("img");
|
||
img2.style.width = "20px";
|
||
img2.style.height = "26px";
|
||
img2.src = this.properties.imgSrc2;
|
||
|
||
content.appendChild(div);
|
||
content.appendChild(img2);
|
||
return content;
|
||
}
|
||
cs_dd_arr.value[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.center),
|
||
opacity: 0.5,
|
||
offsetY: -10,
|
||
properties: {
|
||
title: polygon.name,
|
||
imgSrc2: dwd,
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
map.addOverlay(cs_dd_arr.value[indexx]);
|
||
};
|
||
//添加单个村社(+数量)
|
||
const DGcreateCs2 = (polygon, indexx) => {
|
||
// console.log(choose.value.person, "单个村社", polygon);
|
||
// console.log("单个村社", polygon.name);
|
||
// console.log("单个村社", polygon.number);
|
||
// console.log("单个村社", polygon.swrs);
|
||
function createLabelDOM() {
|
||
var content = document.createElement("div");
|
||
content.style.display = "flex";
|
||
content.style.flexDirection = "column";
|
||
content.style.alignItems = "center";
|
||
content.style.height = "60px";
|
||
content.style.width = "60px";
|
||
content.style.zIndex = BMapGL.Overlay.getZIndex(this.point.lat);
|
||
|
||
var div = document.createElement("div");
|
||
div.style.color = "#333";
|
||
div.style.whiteSpace = "nowrap";
|
||
div.style.MozUserSelect = "none";
|
||
div.style.display = "flex";
|
||
div.style.justifyContent = "space-between";
|
||
div.style.alignItems = "center";
|
||
div.style.cursor = "pointer";
|
||
div.style.padding = "5px";
|
||
div.style.minWidth = "60px";
|
||
div.style.background = `url(${xcbg}) no-repeat 0/100% 100%`;
|
||
div.style.transform = "translateY(50px)";
|
||
div.setAttribute("name", this.properties.title);
|
||
|
||
var title = document.createElement("div");
|
||
title.style.fontSize = "10px";
|
||
title.style.fontWeight = "600";
|
||
title.style.color = "#000000";
|
||
div.appendChild(title);
|
||
title.appendChild(document.createTextNode(this.properties.title));
|
||
content.appendChild(div);
|
||
|
||
var number = document.createElement("div");
|
||
number.style.fontSize = "10px";
|
||
number.style.fontWeight = "600";
|
||
number.style.color = "black";
|
||
div.appendChild(number);
|
||
number.appendChild(document.createTextNode(this.properties.number));
|
||
content.appendChild(div);
|
||
let img2 = document.createElement("img");
|
||
img2.style.width = "20px";
|
||
img2.style.height = "26px";
|
||
img2.src = this.properties.imgSrc2;
|
||
|
||
content.appendChild(div);
|
||
content.appendChild(img2);
|
||
return content;
|
||
}
|
||
let num = "";
|
||
if (choose.value.person == "6666") {
|
||
num = "swrs";
|
||
} else if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
num = "numbers";
|
||
} else {
|
||
num = "number";
|
||
}
|
||
cs_dd_arr.value[indexx] = new BMapGL.CustomOverlay(createLabelDOM, {
|
||
point: new BMapGL.Point(...polygon.center),
|
||
opacity: 0.5,
|
||
offsetY: -10,
|
||
properties: {
|
||
title: polygon.name,
|
||
number: polygon[`${num}`],
|
||
imgSrc2: dwd,
|
||
type: "customOverlay",
|
||
},
|
||
});
|
||
map.addOverlay(cs_dd_arr.value[indexx]);
|
||
cs_dd_arr.value[indexx].addEventListener("click", () => {
|
||
console.log(cfJd.value, polygon.name);
|
||
cfCsZs.value = polygon.name;
|
||
if (
|
||
choose.value.person == "cjr" ||
|
||
choose.value.person == "dibian" ||
|
||
choose.value.person == "db" ||
|
||
choose.value.person == "gxy" ||
|
||
choose.value.person == "tnb" ||
|
||
choose.value.person == "tyjr" ||
|
||
choose.value.person == "kjer"
|
||
) {
|
||
} else {
|
||
open_detail();
|
||
}
|
||
// open_detail();
|
||
});
|
||
};
|
||
//适配
|
||
const reset_font = () => {
|
||
let width = document.documentElement.clientWidth || document.body.clientWidth;
|
||
let height =
|
||
document.documentElement.clientHeight || document.body.clientHeight;
|
||
document.querySelector(".header_content").style.transformOrigin = "top left";
|
||
document.querySelector(".header_content").style.transform =
|
||
"scale(" + width / 1920 + "," + height / 1080 + ")";
|
||
if (document.querySelector(".left")) {
|
||
document.querySelector(".left").style.transformOrigin = "bottom left";
|
||
document.querySelector(".left").style.transform =
|
||
"scale(" + width / 1920 + "," + height / 1080 + ")";
|
||
document.querySelector(".right").style.transformOrigin = "bottom right";
|
||
document.querySelector(".right").style.transform =
|
||
"scale(" + width / 1920 + "," + height / 1080 + ")";
|
||
}
|
||
};
|
||
const reset_font2 = () => {
|
||
let width = document.documentElement.clientWidth || document.body.clientWidth;
|
||
let height =
|
||
document.documentElement.clientHeight || document.body.clientHeight;
|
||
|
||
document.querySelector(".detail").style.transformOrigin = "top left";
|
||
document.querySelector(".detail").style.transform =
|
||
"scale(" + width / 1920 + "," + height / 1080 + ")";
|
||
};
|
||
onMounted(() => {
|
||
// tools.data.set("token", "6b0e380b4a8f46baae4923f83faf670d");
|
||
reset_font();
|
||
initMap();
|
||
getData();
|
||
getDataBq();
|
||
BMAP();
|
||
getFwq();
|
||
});
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
::v-deep .anchorBL {
|
||
display: none;
|
||
}
|
||
|
||
.module {
|
||
display: flex;
|
||
width: 100%;
|
||
height: 100%;
|
||
position: relative;
|
||
margin-top: 112px;
|
||
}
|
||
|
||
#id {
|
||
z-index: 10;
|
||
}
|
||
|
||
//左侧弹框
|
||
.left {
|
||
box-sizing: border-box;
|
||
position: absolute;
|
||
left: 0;
|
||
bottom: 0;
|
||
width: 520px;
|
||
height: 960px;
|
||
background: linear-gradient(
|
||
270deg,
|
||
rgba(0, 52, 131, 0.69) 0%,
|
||
rgba(0, 32, 83, 0.77) 50%,
|
||
rgba(0, 60, 131, 0.74) 100%
|
||
),
|
||
radial-gradient(
|
||
128% 99% at 100% 46%,
|
||
rgba(0, 48, 125, 0.29) 0%,
|
||
rgba(0, 61, 134, 0.42) 100%
|
||
);
|
||
box-shadow: inset 0px 0px 56px 0px rgba(173, 221, 255, 0.5);
|
||
backdrop-filter: blur(3px);
|
||
padding: 30px 15px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
z-index: 12;
|
||
overflow: hidden;
|
||
|
||
//人口数
|
||
.lyx {
|
||
.content_item2 {
|
||
color: #ffffff;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 18px;
|
||
padding-left: 24px;
|
||
width: 100%;
|
||
// height: 57px;
|
||
background-image: url(@/assets/images/map/unchoose.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
margin-bottom: 12px;
|
||
}
|
||
.content_item_name {
|
||
position: relative;
|
||
}
|
||
|
||
.content_item_name::before {
|
||
content: "";
|
||
position: absolute;
|
||
width: 3px;
|
||
height: 3px;
|
||
background: #29ffc1;
|
||
border: 3px solid rgba(0, 255, 189, 0.31);
|
||
border-radius: 6px;
|
||
top: 7.5px;
|
||
left: -13px;
|
||
}
|
||
|
||
.content_item_value {
|
||
display: flex;
|
||
.content_item_percent {
|
||
margin-left: 2px;
|
||
color: #6bfeff;
|
||
text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5);
|
||
}
|
||
}
|
||
|
||
.content {
|
||
box-sizing: border-box;
|
||
margin-top: 20px;
|
||
display: flex;
|
||
flex-flow: row wrap;
|
||
justify-content: space-between;
|
||
color: #ffffff;
|
||
height: 300px;
|
||
overflow: auto;
|
||
|
||
.content_item {
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 18px;
|
||
padding-left: 24px;
|
||
padding-right: 5px;
|
||
width: 48%;
|
||
position: relative;
|
||
// height: 57px;
|
||
background-image: url(@/assets/images/map/unchoose.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
margin-bottom: 12px;
|
||
font-size: 18px;
|
||
}
|
||
|
||
.content_item:first-child {
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 18px;
|
||
padding-left: 24px;
|
||
width: 100%;
|
||
// height: 57px;
|
||
background-image: url(@/assets/images/map/unchoose.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
// .content_item:nth-child(2) {
|
||
// box-sizing: border-box;
|
||
// display: flex;
|
||
// align-items: center;
|
||
// justify-content: space-between;
|
||
// padding: 18px;
|
||
// padding-left: 24px;
|
||
// width: 100%;
|
||
// // height: 57px;
|
||
// background-image: url(@/assets/images/map/unchoose.png);
|
||
// background-repeat: no-repeat;
|
||
// background-size: 100% 100%;
|
||
// margin-bottom: 12px;
|
||
// }
|
||
|
||
// .content_item_name {
|
||
// position: relative;
|
||
// }
|
||
|
||
// .content_item_name::before {
|
||
// content: "";
|
||
// position: absolute;
|
||
// width: 3px;
|
||
// height: 3px;
|
||
// background: #29ffc1;
|
||
// border: 3px solid rgba(0, 255, 189, 0.31);
|
||
// border-radius: 6px;
|
||
// top: 7.5px;
|
||
// left: -13px;
|
||
// }
|
||
|
||
// .content_item_value {
|
||
// display: flex;
|
||
// .content_item_percent {
|
||
// margin-left: 2px;
|
||
// color: #6bfeff;
|
||
// text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5);
|
||
// }
|
||
// }
|
||
|
||
// .choose {
|
||
// background-image: url(@/assets/images/map/choose.png) !important;
|
||
// background-repeat: no-repeat !important;
|
||
// background-size: 100% 100% !important;
|
||
// }
|
||
}
|
||
.choose {
|
||
background-image: url(@/assets/images/map/choose.png) !important;
|
||
background-repeat: no-repeat !important;
|
||
background-size: 100% 100% !important;
|
||
}
|
||
.content::-webkit-scrollbar {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
//特殊标签
|
||
.tsbq {
|
||
margin-top: 30px;
|
||
|
||
.content {
|
||
box-sizing: border-box;
|
||
margin-top: 20px;
|
||
display: flex;
|
||
flex-flow: row wrap;
|
||
justify-content: space-between;
|
||
color: #ffffff;
|
||
height: 220px;
|
||
overflow: auto;
|
||
|
||
.content_item {
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 18px;
|
||
padding-left: 24px;
|
||
width: 48%;
|
||
// height: 57px;
|
||
background-image: url(@/assets/images/map/unchoose.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
margin-bottom: 12px;
|
||
font-size: 18px;
|
||
}
|
||
|
||
// .content_item:last-child {
|
||
// box-sizing: border-box;
|
||
// display: flex;
|
||
// align-items: center;
|
||
// justify-content: space-between;
|
||
// padding: 24px;
|
||
// width: 100%;
|
||
// height: 57px;
|
||
// background-image: url(@/assets/images/map/unchoose.png);
|
||
// background-repeat: no-repeat;
|
||
// background-size: 100% 100%;
|
||
// margin-bottom: 12px;
|
||
// }
|
||
|
||
.content_item_name {
|
||
position: relative;
|
||
}
|
||
|
||
.content_item_name::before {
|
||
content: "";
|
||
position: absolute;
|
||
width: 3px;
|
||
height: 3px;
|
||
background: rgb(255, 226, 41);
|
||
border: 3px solid rgba(255, 226, 41, 0.31);
|
||
border-radius: 6px;
|
||
top: 7.5px;
|
||
left: -13px;
|
||
}
|
||
|
||
.choose {
|
||
background-image: url(@/assets/images/map/choose.png) !important;
|
||
background-repeat: no-repeat !important;
|
||
background-size: 100% 100% !important;
|
||
}
|
||
}
|
||
|
||
.content::-webkit-scrollbar {
|
||
display: none;
|
||
}
|
||
}
|
||
}
|
||
|
||
//右侧弹框
|
||
.right {
|
||
box-sizing: border-box;
|
||
position: absolute;
|
||
right: 0;
|
||
bottom: 0;
|
||
width: 520px;
|
||
height: 960px;
|
||
background: linear-gradient(
|
||
270deg,
|
||
rgba(0, 52, 131, 0.69) 0%,
|
||
rgba(0, 32, 83, 0.77) 50%,
|
||
rgba(0, 60, 131, 0.74) 100%
|
||
),
|
||
radial-gradient(
|
||
128% 99% at 100% 46%,
|
||
rgba(0, 48, 125, 0.29) 0%,
|
||
rgba(0, 61, 134, 0.42) 100%
|
||
);
|
||
box-shadow: inset 0px 0px 56px 0px rgba(173, 221, 255, 0.5);
|
||
backdrop-filter: blur(3px);
|
||
padding: 30px 15px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
z-index: 12;
|
||
overflow: hidden;
|
||
|
||
.jbggfwq {
|
||
.jbggfwq_content {
|
||
height: 500px;
|
||
overflow: auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-top: 15px;
|
||
margin-bottom: 34px;
|
||
|
||
.jbggfwq_content_item {
|
||
margin-bottom: 5px;
|
||
display: flex;
|
||
// align-items: center;
|
||
color: #ffffff;
|
||
|
||
.jbggfwq_content_item_left {
|
||
margin-right: 10px;
|
||
width: 80px;
|
||
height: 48px;
|
||
line-height: 48px;
|
||
}
|
||
|
||
.jbggfwq_content_item_right {
|
||
width: 370px;
|
||
display: flex;
|
||
flex-flow: row wrap;
|
||
overflow: hidden;
|
||
// border-radius: 6px;
|
||
|
||
.jbggfwq_content_item_right_item {
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
box-sizing: border-box;
|
||
width: 92px;
|
||
height: 48px;
|
||
font-weight: 500;
|
||
text-align: center;
|
||
font-size: 16px;
|
||
line-height: 28px;
|
||
background: rgba(124, 151, 180, 0.8);
|
||
// padding: 10px;
|
||
margin-bottom: 4px;
|
||
position: relative;
|
||
/* 必须设置 position 属性以便伪元素定位 */
|
||
}
|
||
|
||
.jbggfwq_content_item_right_item::after {
|
||
content: "";
|
||
display: block;
|
||
width: 1px;
|
||
height: 18px;
|
||
background-color: #fff;
|
||
position: absolute;
|
||
top: 14px;
|
||
right: 0px;
|
||
}
|
||
|
||
:nth-child(4n).jbggfwq_content_item_right_item::after {
|
||
opacity: 0;
|
||
}
|
||
|
||
:last-child.jbggfwq_content_item_right_item::after {
|
||
opacity: 0;
|
||
}
|
||
|
||
.choose {
|
||
background-image: url(@/assets/images/map/choose.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.jbggfwq_content::-webkit-scrollbar {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
.zyys {
|
||
.zyys_content {
|
||
margin-top: 20px;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex-flow: row wrap;
|
||
|
||
.zyys_content_item {
|
||
width: 110px;
|
||
height: 54px;
|
||
cursor: pointer;
|
||
margin-bottom: 20px;
|
||
color: #ffffff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background: rgba(124, 151, 180, 0.8);
|
||
|
||
.zyys_content_item_left {
|
||
width: 18px;
|
||
height: 18px;
|
||
margin-right: 3px;
|
||
}
|
||
|
||
.zyys_content_item_right {
|
||
font-weight: 500;
|
||
font-size: 16px;
|
||
}
|
||
}
|
||
|
||
.wz {
|
||
width: 150px;
|
||
}
|
||
|
||
.choose {
|
||
background-image: url(@/assets/images/map/choose.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.title {
|
||
background-image: url(@/assets/images/map/map_title_bg.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
.title_name {
|
||
cursor: pointer;
|
||
display: flex;
|
||
font-family: YouSheBiaoTiHei;
|
||
font-size: 30px;
|
||
font-weight: 900;
|
||
// line-height: 44px;
|
||
letter-spacing: 4px;
|
||
margin-bottom: 15px;
|
||
background: linear-gradient(180deg, #ffffff 0%, #ffffff 40%, #00ffff 100%);
|
||
/* 使文字没有背景颜色的背景 */
|
||
background-clip: text;
|
||
/* 为了兼容性,添加渐变背景到IE */
|
||
-webkit-background-clip: text;
|
||
-webkit-text-fill-color: transparent;
|
||
padding-left: 23px;
|
||
span {
|
||
display: block;
|
||
font-family: YouSheBiaoTiHei;
|
||
font-size: 30px;
|
||
font-weight: 900;
|
||
// line-height: 44px;
|
||
letter-spacing: 4px;
|
||
margin-bottom: 18px;
|
||
background: linear-gradient(
|
||
180deg,
|
||
#ffffff 0%,
|
||
#ffffff 40%,
|
||
#00ffff 100%
|
||
);
|
||
/* 使文字没有背景颜色的背景 */
|
||
background-clip: text;
|
||
/* 为了兼容性,添加渐变背景到IE */
|
||
-webkit-background-clip: text;
|
||
-webkit-text-fill-color: transparent;
|
||
}
|
||
}
|
||
|
||
// .title_line {
|
||
// height: 4px;
|
||
// width: 100%;
|
||
// border-top: 1px solid #ffffff;
|
||
// border-bottom: 2px dashed #ffffff;
|
||
// }
|
||
}
|
||
|
||
.age-container {
|
||
position: relative;
|
||
left: 10px;
|
||
width: 450px;
|
||
height: 120px;
|
||
display: flex;
|
||
align-items: center;
|
||
margin-top: 4px;
|
||
|
||
.progress-wrapper {
|
||
display: flex;
|
||
align-items: center;
|
||
position: relative;
|
||
width: 100%;
|
||
}
|
||
|
||
.progress-container {
|
||
position: relative;
|
||
transition: width 0.3s ease;
|
||
height: 10px;
|
||
background-color: rgba(255, 255, 255, 0.2);
|
||
|
||
&.above-line {
|
||
.dot {
|
||
top: -20px;
|
||
}
|
||
|
||
.age-line {
|
||
top: -30px;
|
||
}
|
||
|
||
span {
|
||
&.above-line1 {
|
||
top: -55px;
|
||
}
|
||
}
|
||
|
||
&:nth-child(even) {
|
||
.dot {
|
||
top: -20px;
|
||
}
|
||
|
||
.age-line {
|
||
top: -18px;
|
||
}
|
||
|
||
span {
|
||
top: -40px;
|
||
}
|
||
}
|
||
}
|
||
|
||
&.below-line {
|
||
.dot {
|
||
top: 20px;
|
||
}
|
||
|
||
.age-line {
|
||
top: 5px;
|
||
}
|
||
|
||
span {
|
||
&.below-line1 {
|
||
top: 40px;
|
||
}
|
||
}
|
||
|
||
&:nth-child(odd) {
|
||
.dot {
|
||
top: 20px;
|
||
}
|
||
|
||
.age-line {
|
||
top: 5px;
|
||
}
|
||
|
||
span {
|
||
top: 30px;
|
||
}
|
||
}
|
||
}
|
||
|
||
.dot {
|
||
width: 10px;
|
||
height: 10px;
|
||
border-radius: 50%;
|
||
position: absolute;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.age-line {
|
||
position: absolute;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
width: 1px;
|
||
height: 20px;
|
||
}
|
||
|
||
span {
|
||
position: absolute;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
font-size: 14px;
|
||
|
||
&.above-line1 {
|
||
top: -50px;
|
||
}
|
||
|
||
&.below-line1 {
|
||
top: 50px;
|
||
}
|
||
&.above-line2 {
|
||
top: -55px !important; //上面百分比
|
||
}
|
||
|
||
&.below-line2 {
|
||
top: 45px !important ; //下面百分比
|
||
}
|
||
}
|
||
}
|
||
|
||
.progress-container:first-child {
|
||
border-radius: 5px 0 0 5px;
|
||
}
|
||
|
||
.progress-container:last-child {
|
||
border-radius: 0 5px 5px 0;
|
||
}
|
||
}
|
||
:deep(.el-table) {
|
||
background: rgba(32, 64, 115, 1);
|
||
|
||
--el-table-border-color: none;
|
||
border: 1px solid #7aceff;
|
||
}
|
||
|
||
:deep(.el-table--enable-row-hover .el-table__body tr:hover > td) {
|
||
background-color: #2f4b74;
|
||
}
|
||
|
||
:deep(.el-table__empty-block) {
|
||
background-color: #122560;
|
||
}
|
||
|
||
:deep(.el-table .el-table__row) {
|
||
border-bottom: none;
|
||
}
|
||
.detail {
|
||
z-index: 9998;
|
||
}
|
||
</style>
|