add:新增功能

This commit is contained in:
闫世杰 2025-01-13 17:30:22 +08:00
parent 15cedb056f
commit 4f1c730a88
18 changed files with 701 additions and 167 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
src/assets/images/flow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
src/assets/images/norm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -2,7 +2,7 @@ import axios from "axios";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import tools from "@/utils/tools"; import tools from "@/utils/tools";
import router from "../router"; import router from "../router";
axios.defaults.baseURL = 'https://jzzf.longyou.gov.cn:998/' // axios.defaults.baseURL = 'https://jzzf.longyou.gov.cn:998/'
axios.defaults.timeout = 120000; axios.defaults.timeout = 120000;

View File

@ -7,6 +7,7 @@
:show-close="false" :show-close="false"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
@close="closeDialog"
> >
<template #header="{ close, titleId, titleClass }"> <template #header="{ close, titleId, titleClass }">
<div class="my-header"> <div class="my-header">
@ -22,20 +23,17 @@
<img <img
src="@/assets/images/table_l.png" src="@/assets/images/table_l.png"
alt="" alt=""
style="margin-right: 10px" style="margin-right: 10px" />
/>
<div class="name">{{ data.title }}</div> <div class="name">{{ data.title }}</div>
<img <img
src="@/assets/images/table_r.png" src="@/assets/images/table_r.png"
alt="" alt=""
style="margin-left: 10px" style="margin-left: 10px" />
/>
</div> </div>
<img <img
class="title_botton" class="title_botton"
src="@/assets/images/table_c.png" src="@/assets/images/table_c.png"
alt="" alt="" />
/>
</div> </div>
</div> </div>
<div <div
@ -46,15 +44,13 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
" ">
>
<video <video
id="videoPlayer" id="videoPlayer"
class="video-js vjs-default-skin" class="video-js vjs-default-skin"
controls controls
playsinline playsinline
autoplay="autoplay" autoplay="autoplay">
>
<source :src="attachmentLink" type="application/x-mpegURL" /> <source :src="attachmentLink" type="application/x-mpegURL" />
</video> </video>
</div> </div>
@ -126,7 +122,9 @@ watch(
//dom //dom
if (num.value) { if (num.value) {
// console.log(22222, document.getElementById("videoBox")); // console.log(22222, document.getElementById("videoBox"));
nextTick(() => {
insertVideo(); insertVideo();
});
} }
nextTick(() => { nextTick(() => {
setTimeout(() => { setTimeout(() => {

View File

@ -0,0 +1,219 @@
<template>
<div class="dialogPage">
<el-dialog
v-model="show"
width="80vw"
:show-close="false"
center
:close-on-click-modal="false"
:close-on-press-escape="false">
<template #header="{}">
<div class="my-header">
<el-icon size="26" color="#fff" @click="onClose">
<CircleCloseFilled />
</el-icon>
</div>
</template>
<div class="tabelPart">
<div class="bo">
<div class="title">
<div class="title_top">
<img
src="@/assets/images/table_l.png"
alt=""
style="margin-right: 10px" />
<div class="name">{{ title }}</div>
<img
src="@/assets/images/table_r.png"
alt=""
style="margin-left: 10px" />
</div>
<img
class="title_botton"
src="@/assets/images/table_c.png"
alt="" />
</div>
</div>
<div class="tabel-part-box">
<slot></slot>
</div>
</div>
</el-dialog>
</div>
</template>
<script setup>
import { defineProps, computed } from "vue";
import { CircleCloseFilled } from "@element-plus/icons-vue";
const emit = defineEmits(["update:show"]);
const props = defineProps({
show: {
type: Boolean,
default: () => {
return false;
},
},
title: {
type: String,
default: () => {
return "";
},
},
});
const show = computed({
get() {
return props.show;
},
set(val) {
emit("update:show", val);
},
});
const onClose = () => {
show.value = false;
};
</script>
<style lang="scss" scoped>
:deep(.el-dialog) {
--el-dialog-bg-color: none;
--el-dialog-width: 76% !important;
margin: 11vh auto !important;
}
.my-header {
display: flex;
flex-direction: row-reverse;
}
.tabelPart {
padding: 16px;
padding-bottom: 5px;
background: linear-gradient(
270deg,
rgba(0, 77, 131, 0.69) 0%,
rgba(0, 51, 83, 0.77) 50%,
rgba(0, 77, 131, 0.74) 100%
),
radial-gradient(
66% 40% at 50% 0%,
rgba(1, 150, 243, 0.55) 0%,
rgba(0, 116, 255, 0) 100%
);
box-shadow: inset 0px 0px 56px 0px rgba(100, 191, 255, 0.5);
border: 2px solid;
border-image: linear-gradient(
180deg,
rgba(21, 150, 255, 1),
rgba(0, 157, 227, 0)
)
2 2;
:deep(.el-table) {
--el-table-bg-color: none;
--el-table-tr-bg-color: none;
--el-table-header-bg-color: none;
background: none;
border: none;
--el-table-text-color: #fff;
--el-table-header-text-color: #fff;
}
// :deep(.el-table th) {
// text-align: center;
// }
.tabel-part-box {
margin: 30px 50px 50px;
padding: 26px;
min-height: 300px;
max-height: 56vh;
background: rgba(70, 114, 171, 0.36);
color: #fff;
font-family: PingFangSC, PingFang SC;
font-weight: 500;
font-size: 16px;
color: #ffffff;
line-height: 1.6;
letter-spacing: 3px;
overflow: auto;
&::-webkit-scrollbar {
display: none;
}
}
}
.pagePart {
height: 40px;
display: flex;
align-items: center;
justify-content: center;
:deep(.el-pagination) {
--el-pagination-button-disabled-bg-color: none;
--el-pagination-bg-color: none;
--el-pagination-button-bg-color: none;
--el-pagination-button-color: #fff;
color: #fff;
}
:deep(.el-pagination button:disabled) {
background-color: rgba(0, 116, 255, 0) !important;
}
:deep(.el-pagination > .is-last) {
color: #ffffff;
}
}
.bo {
width: 100%;
display: flex;
}
.title {
margin: 0px auto;
display: flex;
flex-direction: column;
&_top {
display: flex;
align-items: end;
justify-content: center;
img {
height: 33px;
width: 33px;
}
.name {
font-family: PangMenZhengDao, PangMenZhengDao;
font-weight: 600;
font-size: 22px;
color: #ffffff;
line-height: 27px;
text-align: center;
font-style: normal;
letter-spacing: 2px;
background: linear-gradient(180deg, #ffffff 0%, #51ffef 100%);
-webkit-background-clip: text;
/*将设置的背景颜色限制在文字中*/
-webkit-text-fill-color: transparent;
/*给文字设置成透明*/
}
}
&_botton {
margin-top: 5px;
height: 19px;
}
}
.custom-table-font {
font-size: 15px;
}
:deep(.el-table:not(.el-table--border) .el-table__cell) {
padding: 3px 0px;
}
:deep(.el-pagination) {
transform: scale(0.8);
}
:deep(.el-overlay-dialog) {
bottom: 0 !important;
overflow: hidden !important;
}
</style>

View File

@ -40,6 +40,16 @@ import j8_map from "@/assets/images/map/j8_map.png";
import j9_map from "@/assets/images/map/j9_map.png"; import j9_map from "@/assets/images/map/j9_map.png";
import j10_map from "@/assets/images/map/j10_map.png"; import j10_map from "@/assets/images/map/j10_map.png";
import j11_map from "@/assets/images/map/j11_map.png"; import j11_map from "@/assets/images/map/j11_map.png";
import xhyld from "@/assets/images/map/xhyld.png"
import gxjs from "@/assets/images/map/gxjs.png"
import gxst from "@/assets/images/map/gxst.png"
import js_grade_school from "@/assets/images/map/js_grade_school.png"
import js_high_school from "@/assets/images/map/js_high_school.png"
import js_junior_high from "@/assets/images/map/js_junior_high.png"
import js_kindergarten from "@/assets/images/map/js_kindergarten.png"
import js_gx from "@/assets/images/map/js_gx.png"
import zcd_map from "@/assets/images/map/zcd_map.png"
import st_map from "@/assets/images/map/st_map.png"
export { export {
zcd, zcd,
dqfwzx, dqfwzx,
@ -57,6 +67,9 @@ export {
whlt, whlt,
njsw, njsw,
xxg, xxg,
xhyld,
gxjs,
gxst,
j0, j0,
j1, j1,
j2, j2,
@ -83,4 +96,9 @@ export {
xqwy_map, xqwy_map,
cjrzj_map, cjrzj_map,
bmfwzx_map, bmfwzx_map,
js_grade_school,
js_high_school,
js_junior_high,
js_kindergarten, js_gx, zcd_map,
st_map
} }

View File

@ -18,8 +18,7 @@
v-for="(item, index) in personTotal.slice(0, 1)" v-for="(item, index) in personTotal.slice(0, 1)"
:class="{ choose: item.age == choose.person }" :class="{ choose: item.age == choose.person }"
@click="buten(item)" @click="buten(item)"
:key="index" :key="index">
>
<div class="content_item_name">{{ ageLess0(item.ages) }}</div> <div class="content_item_name">{{ ageLess0(item.ages) }}</div>
<div class="content_item_value">{{ item.rksl }}</div> <div class="content_item_value">{{ item.rksl }}</div>
</div> </div>
@ -27,6 +26,7 @@
<div class="progress-wrapper"> <div class="progress-wrapper">
<div <div
v-for="(item, index) in PopulationRatio" v-for="(item, index) in PopulationRatio"
:key="index"
:class="[ :class="[
'progress-container', 'progress-container',
{ {
@ -37,8 +37,7 @@
:style="{ :style="{
width: item.progress + '%', width: item.progress + '%',
backgroundColor: item.bgColor, backgroundColor: item.bgColor,
}" }">
>
<span <span
:style="{ color: item.bgColor }" :style="{ color: item.bgColor }"
:class="[ :class="[
@ -63,12 +62,10 @@
class="age-line" class="age-line"
:style="{ :style="{
backgroundColor: item.bgColor, backgroundColor: item.bgColor,
}" }"></div>
></div>
<div <div
class="dot" class="dot"
:style="{ backgroundColor: item.bgColor }" :style="{ backgroundColor: item.bgColor }"></div>
></div>
</div> </div>
</div> </div>
</div> </div>
@ -78,8 +75,7 @@
v-for="(item, index) in personTotal.slice(1)" v-for="(item, index) in personTotal.slice(1)"
:class="{ choose: item.age == choose.person }" :class="{ choose: item.age == choose.person }"
@click="buten(item)" @click="buten(item)"
:key="index" :key="index">
>
<div class="content_item_name">{{ ageLess0(item.ages) }}</div> <div class="content_item_name">{{ ageLess0(item.ages) }}</div>
<div class="content_item_value"> <div class="content_item_value">
{{ item.rksl }} {{ item.rksl }}
@ -103,8 +99,7 @@
Tsactive: !item.click, Tsactive: !item.click,
}" }"
@click="item.click ? buten2(item) : ''" @click="item.click ? buten2(item) : ''"
:key="index" :key="index">
>
<div class="content_item_name">{{ item.name }}</div> <div class="content_item_name">{{ item.name }}</div>
<div class="content_item_value">{{ item.rksl }}</div> <div class="content_item_value">{{ item.rksl }}</div>
</div> </div>
@ -126,8 +121,7 @@
Tsactive: !item.click, Tsactive: !item.click,
}" }"
@click="item.click ? changeys(item.name, item.img_width) : ''" @click="item.click ? changeys(item.name, item.img_width) : ''"
:key="index" :key="index">
>
<img <img
:src="item.img" :src="item.img"
class="zyys_content_item_left" class="zyys_content_item_left"
@ -136,8 +130,7 @@
item.name == '菜市场' || item.name == '菜市场' ||
item.name == '停车场' || item.name == '停车场' ||
item.name == '文化广场', item.name == '文化广场',
}" }" />
/>
<div class="zyys_content_item_right">{{ item.name }}</div> <div class="zyys_content_item_right">{{ item.name }}</div>
</div> </div>
</div> </div>
@ -152,16 +145,15 @@
<div <div
class="jbggfwq_content_item" class="jbggfwq_content_item"
v-for="(item, index) in jbfwqTotal" v-for="(item, index) in jbfwqTotal"
:key="index" :key="index">
>
<div class="jbggfwq_content_item_left">{{ item.name }}</div> <div class="jbggfwq_content_item_left">{{ item.name }}</div>
<div class="jbggfwq_content_item_right"> <div class="jbggfwq_content_item_right">
<div <div
class="jbggfwq_content_item_right_item" class="jbggfwq_content_item_right_item"
v-for="itemm in item.child" v-for="itemm in item.child"
:key="itemm.jc"
:class="{ choose: itemm.jc == choose.fwq }" :class="{ choose: itemm.jc == choose.fwq }"
@click="changeFwq(itemm.jc, item.name, itemm.jc)" @click="changeFwq(itemm.jc, item.name, itemm.jc)">
>
{{ itemm.jc }} {{ itemm.jc }}
</div> </div>
</div> </div>
@ -173,29 +165,25 @@
<div <div
class="btnopen" class="btnopen"
@click="nameEdit" @click="nameEdit"
v-if="!add_mode && !edit_mode && !move_mode" v-if="!add_mode && !edit_mode && !move_mode">
>
修改村名 修改村名
</div> </div>
<div <div
class="btnsave" class="btnsave"
@click="xzEdit" @click="xzEdit"
v-if="!add_mode && !edit_mode && !move_mode" v-if="!add_mode && !edit_mode && !move_mode">
>
修改所属乡镇 修改所属乡镇
</div> </div>
<div <div
class="btnsave" class="btnsave"
@click="centerEdit" @click="centerEdit"
v-if="!add_mode && !edit_mode && !move_mode" v-if="!add_mode && !edit_mode && !move_mode">
>
修改村社中心点 修改村社中心点
</div> </div>
<div <div
class="btnsave" class="btnsave"
@click="addmode" @click="addmode"
v-if="!edit_mode && !add_mode && !move_mode" v-if="!edit_mode && !add_mode && !move_mode">
>
添加模式 添加模式
</div> </div>
<div style="display: flex" v-if="add_mode"> <div style="display: flex" v-if="add_mode">
@ -208,8 +196,7 @@
<div <div
class="btnsave" class="btnsave"
@click="editmode" @click="editmode"
v-if="!edit_mode && !add_mode && !move_mode" v-if="!edit_mode && !add_mode && !move_mode">
>
编辑模式 编辑模式
</div> </div>
<div style="display: flex" v-if="edit_mode"> <div style="display: flex" v-if="edit_mode">
@ -220,8 +207,7 @@
<div <div
class="btnsave" class="btnsave"
@click="movemode" @click="movemode"
v-if="!edit_mode && !add_mode && !move_mode" v-if="!edit_mode && !add_mode && !move_mode">
>
移动模式 移动模式
</div> </div>
<div style="display: flex" v-if="move_mode"> <div style="display: flex" v-if="move_mode">
@ -233,23 +219,20 @@
<div <div
class="btnsave" class="btnsave"
v-if="!add_mode && !edit_mode && !move_mode" v-if="!add_mode && !edit_mode && !move_mode"
@click="deleteCs" @click="deleteCs">
>
删除地块 删除地块
</div> </div>
<div <div
class="btnclose" class="btnclose"
@click="backEdit" @click="backEdit"
v-if="!add_mode && !edit_mode && !move_mode" v-if="!add_mode && !edit_mode && !move_mode">
>
退出 退出
</div> </div>
</div> </div>
<div <div
class="btnBj" class="btnBj"
:class="{ collapsed: isCollapsed }" :class="{ collapsed: isCollapsed }"
v-if="!showEdit && !dialogShow && !openD" v-if="!showEdit && !dialogShow && !openD">
>
<div class="arrow" @click="toggleCollapse"> <div class="arrow" @click="toggleCollapse">
<span>{{ isCollapsed ? "◀" : "▶" }}</span> <span>{{ isCollapsed ? "◀" : "▶" }}</span>
</div> </div>
@ -257,11 +240,30 @@
<p <p
v-show="!isCollapsed" v-show="!isCollapsed"
@click="openqx()" @click="openqx()"
:style="{ color: jsqx ? 'green' : 'red' }" :style="{ color: jsqx ? 'green' : 'red' }">
>
{{ bjtitle }} {{ bjtitle }}
</p> </p>
</div> </div>
<div class="right-floating-window" v-show="business.show">
<div class="floating_model" @click="onMechanism">
<div class="floating_model_icon">
<img src="@/assets/images/norm.png" alt="" />
</div>
<div class="floating_model_label">机制标准</div>
</div>
<div class="floating_model">
<div class="floating_model_icon">
<img src="@/assets/images/flow.png" alt="" />
</div>
<div class="floating_model_label">业务流程</div>
</div>
<div class="floating_model" @click="onWork">
<div class="floating_model_icon">
<img src="@/assets/images/condition.png" alt="" />
</div>
<div class="floating_model_label">工作情况</div>
</div>
</div>
<Dialog <Dialog
:dialogShow="dialogShow" :dialogShow="dialogShow"
:columns="tableType.columns" :columns="tableType.columns"
@ -272,8 +274,7 @@
@handle="handlePagination" @handle="handlePagination"
@openMessage="openMessage" @openMessage="openMessage"
@openSxt="openCamera" @openSxt="openCamera"
style="z-index: 333" style="z-index: 333">
>
<template #jzzt="{ currentCol, currentData }"> <template #jzzt="{ currentCol, currentData }">
<div v-if="currentData.jzzt == 0">居住</div> <div v-if="currentData.jzzt == 0">居住</div>
<div v-else>未居住</div> <div v-else>未居住</div>
@ -282,8 +283,7 @@
<img <img
src="@/assets/images/sxt_map.png" src="@/assets/images/sxt_map.png"
style="width: 20px; height: 20px" style="width: 20px; height: 20px"
v-if="currentData.camera" v-if="currentData.camera" />
/>
</template> </template>
<template #zxs="{ currentCol, currentData }"> <template #zxs="{ currentCol, currentData }">
<div v-if="currentData.zt > 0" style="font-size: 30px">*</div> <div v-if="currentData.zt > 0" style="font-size: 30px">*</div>
@ -293,8 +293,7 @@
:cameraShow="sxtShow.show" :cameraShow="sxtShow.show"
:hlsUriSsl="sxtShow.hlsUriSsl" :hlsUriSsl="sxtShow.hlsUriSsl"
:sxtname="sxtShow.name" :sxtname="sxtShow.name"
@close="close1" @close="close1">
>
</DialogCamera> </DialogCamera>
<!-- 详情 --> <!-- 详情 -->
<personDetail <personDetail
@ -302,8 +301,7 @@
style="width: 1920px; height: 1080px" style="width: 1920px; height: 1080px"
v-show="openD" v-show="openD"
:message="message" :message="message"
@closeDetail="closeDetail" @closeDetail="closeDetail"></personDetail>
></personDetail>
<!-- 加载动画 --> <!-- 加载动画 -->
<div class="loadBody" v-show="loadingss"> <div class="loadBody" v-show="loadingss">
<div class="load"> <div class="load">
@ -327,8 +325,7 @@
<el-input <el-input
v-model="input1" v-model="input1"
style="width: 240px" style="width: 240px"
placeholder="请输入新村名" placeholder="请输入新村名" />
/>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="csName()"> 确认修改 </el-button> <el-button type="primary" @click="csName()"> 确认修改 </el-button>
@ -349,8 +346,7 @@
<el-form <el-form
:model="add_new_cs" :model="add_new_cs"
label-width="auto" label-width="auto"
style="max-width: 500px" style="max-width: 500px">
>
<el-form-item label="村社名"> <el-form-item label="村社名">
<el-input v-model="add_new_cs.name" /> <el-input v-model="add_new_cs.name" />
</el-form-item> </el-form-item>
@ -374,8 +370,7 @@
<el-input <el-input
v-model="qxvalue" v-model="qxvalue"
style="width: 240px" style="width: 240px"
placeholder="请输入密码" placeholder="请输入密码" />
/>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="saveqx()"> 确认权限 </el-button> <el-button type="primary" @click="saveqx()"> 确认权限 </el-button>
@ -387,14 +382,21 @@
<el-input <el-input
v-model="input3" v-model="input3"
style="width: 240px" style="width: 240px"
placeholder="请输入所属乡镇" placeholder="请输入所属乡镇" />
/>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="ssxzEdit()"> 确认修改 </el-button> <el-button type="primary" @click="ssxzEdit()"> 确认修改 </el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
<!-- 弹框模版 -->
<DialogModel
v-bind="dialogModelConfig"
v-model:show="dialogModelConfig.show">
<component
v-if="dialogModelConfig.render"
:is="dialogModelConfig.render"></component>
</DialogModel>
</teleport> </teleport>
</div> </div>
</template> </template>
@ -409,8 +411,9 @@ import {
defineProps, defineProps,
watch, watch,
nextTick, nextTick,
h,
} from "vue"; } from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox, ElImage } from "element-plus";
import tools from "@/utils/tools"; import tools from "@/utils/tools";
import initializeMap from "@/utils/mapInitializer.js"; import initializeMap from "@/utils/mapInitializer.js";
import http from "@/utils/request.js"; import http from "@/utils/request.js";
@ -427,6 +430,7 @@ import AED from "@/assets/images/map/AED.png";
import Dialog from "./dialog/dialogMapDp.vue"; import Dialog from "./dialog/dialogMapDp.vue";
import DialogCamera from "./dialog/dialogCameras.vue"; import DialogCamera from "./dialog/dialogCameras.vue";
import personDetail from "./person/index.vue"; import personDetail from "./person/index.vue";
import DialogModel from "./dialog/dialogModel.vue";
import { import {
DrawScene, DrawScene,
PolygonDraw, PolygonDraw,
@ -452,6 +456,9 @@ import {
whlt, whlt,
njsw, njsw,
xxg, xxg,
xhyld,
gxjs,
gxst,
j0, j0,
j1, j1,
j2, j2,
@ -478,7 +485,21 @@ import {
xqwy_map, xqwy_map,
cjrzj_map, cjrzj_map,
bmfwzx_map, bmfwzx_map,
js_grade_school,
js_high_school,
js_junior_high,
js_kindergarten,
js_gx,
zcd_map,
st_map,
} from "./img_map/map.js"; } from "./img_map/map.js";
//#region
const dialogModelConfig = reactive({
show: false,
title: "",
render: null,
});
//#endregion
//--------------- //---------------
// //
const drawing = ref(false); //true const drawing = ref(false); //true
@ -1039,9 +1060,69 @@ const jbfwqPx = reactive([
var circle; var circle;
const fwqList = ref([]); const fwqList = ref([]);
//#region
const business = reactive({
show: false,
bj: "",
});
//
const onMechanism = () => {
dialogModelConfig.title = "机制标准";
let bj = business.bj == "gxjs" ? "gxjs" : "lnst";
http.get(`/api/ggfwyth/ysyzt/getJzbz?bj=${bj}`).then((res) => {
if (res.code == 200) {
dialogModelConfig.render = () => {
return h("div", {
innerHTML: res.data.zcnr?.replace(/\n/g, "<br/>") || res.data.zcnr,
});
};
dialogModelConfig.show = true;
}
});
};
//
const onWork = () => {
dialogModelConfig.title = "工作情况";
http.get(`/api/ggfwyth/ysyzt/getGzqk?bj=${business.bj}`).then((res) => {
if (res.code == 200) {
dialogModelConfig.render = () => {
let images = res.data.map((item) => {
return h(ElImage, { src: item });
});
return h("div", {}, images);
};
dialogModelConfig.show = true;
}
});
};
//#endregion
// //
const yaosuTotal = ref([ const yaosuTotal = ref([
{
id: 37,
name: "巡回医疗点",
img: xhyld,
wz: true,
click: true,
},
{
id: 38,
name: "共享教师",
url: "/api/ggfwyth/ysyzt/getGxjsXx",
img: gxjs,
wz: true,
click: true,
},
{
id: 39,
name: "共享食堂",
url: "/api/ggfwyth/ysyzt/getLnstxx",
img: gxst,
wz: true,
click: true,
},
{ {
id: 0, id: 0,
name: "体育场所", name: "体育场所",
@ -1194,7 +1275,7 @@ const yaosuTotal = ref([
name: "停车场", name: "停车场",
img: tcc, img: tcc,
wz: true, wz: true,
click: false, click: true,
}, },
{ {
id: 23, id: 23,
@ -1286,7 +1367,7 @@ const yaosuTotal = ref([
id: 36, id: 36,
name: "菜市场", name: "菜市场",
img: csc, img: csc,
wz: true, wz: false,
click: false, click: false,
}, },
]); ]);
@ -1526,6 +1607,47 @@ const table_column_list = reactive({
property: "xmmc", property: "xmmc",
}, },
], ],
gxjs: [
{
label: "序号",
property: "index",
width: "50",
type: "index",
align: "center",
},
{
label: "学校名称",
property: "xxmc",
},
{
label: "教师姓名",
property: "jsxm",
},
{
label: "共享科目",
property: "gxkm",
},
{
label: "共享原因",
property: "gxyy",
},
],
gxst: [
{
label: "序号",
width: "50",
type: "index",
align: "center",
},
{
label: "姓名",
property: "scustomername",
},
{
label: "菜品信息",
property: "dishesmealnames",
},
],
}); });
// //
@ -1758,7 +1880,7 @@ const moveDK = async () => {
cs_choose_arr.value.forEach((item, index) => { cs_choose_arr.value.forEach((item, index) => {
map.removeOverlay(cs_choose_arr.value[index]); map.removeOverlay(cs_choose_arr.value[index]);
}); });
chooseCsList.value.length = 0; chooseCsList.value = [];
xkzDk.forEach((itemm, indexx) => { xkzDk.forEach((itemm, indexx) => {
if (itemm.name == cfCs.value) { if (itemm.name == cfCs.value) {
chooseCsList.value.push(itemm); chooseCsList.value.push(itemm);
@ -1902,7 +2024,7 @@ const saveDK = async () => {
cs_choose_arr.value.forEach((item, index) => { cs_choose_arr.value.forEach((item, index) => {
map.removeOverlay(cs_choose_arr.value[index]); map.removeOverlay(cs_choose_arr.value[index]);
}); });
chooseCsList.value.length = 0; chooseCsList.value = [];
xkzDk.forEach((itemm, indexx) => { xkzDk.forEach((itemm, indexx) => {
if (itemm.name == cfCs.value) { if (itemm.name == cfCs.value) {
chooseCsList.value.push(itemm); chooseCsList.value.push(itemm);
@ -2164,7 +2286,7 @@ const addNew = async () => {
add_new_cs.center = []; add_new_cs.center = [];
await getCssj(); await getCssj();
await loadCs(cfJd.value); await loadCs(cfJd.value);
unChooseList.value.length = 0; unChooseList.value = [];
xkzDk.forEach((itemm, indexx) => { xkzDk.forEach((itemm, indexx) => {
if (itemm.name != cfCs.value) { if (itemm.name != cfCs.value) {
unChooseList.value.push(itemm); unChooseList.value.push(itemm);
@ -2274,8 +2396,8 @@ const clear = () => {
cs_choose_arr.value = []; cs_choose_arr.value = [];
cs_un_choose_arr.value = []; cs_un_choose_arr.value = [];
cs_dd_arr.value = []; cs_dd_arr.value = [];
xkzCenter.length = 0; xkzCenter = [];
xkzDk.length = 0; xkzDk = [];
}; };
//() //()
const clearPerson = () => { const clearPerson = () => {
@ -2303,9 +2425,9 @@ const clearyaosu = () => {
zyys_center.value.forEach((item, index) => { zyys_center.value.forEach((item, index) => {
map.removeOverlay(item); // map.removeOverlay(item); //
}); });
yaosuList.value.length = 0; yaosuList.value = [];
zyys_dk.value.length = 0; zyys_dk.value = [];
zyys_center.value.length = 0; zyys_center.value = [];
zyys_choose_cs.value = ""; zyys_choose_cs.value = "";
} }
}; };
@ -2885,7 +3007,7 @@ const getDataBq = async (jd, cs) => {
.get(`/api/ggfwyth/ysyzt/getBqRs?committee=${cs || ""}&town=${jd || ""}`) .get(`/api/ggfwyth/ysyzt/getBqRs?committee=${cs || ""}&town=${jd || ""}`)
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
tsbqTotal.value.length = 0; tsbqTotal.value = [];
tsbq_id_total.value.forEach((item, index) => { tsbq_id_total.value.forEach((item, index) => {
let b = 0; let b = 0;
@ -2928,9 +3050,9 @@ const getDataBq = async (jd, cs) => {
const getDataBqFirst = async () => { const getDataBqFirst = async () => {
await http.get(`/api/ggfwyth/ysyzt/getBqRs`).then((res) => { await http.get(`/api/ggfwyth/ysyzt/getBqRs`).then((res) => {
if (res.code == 200) { if (res.code == 200) {
tsbqTotal.value.length = 0; tsbqTotal.value = [];
tsbq_pp.value.lenth = 0; tsbq_pp.value.lenth = 0;
tsbq_id_total.value.length = 0; tsbq_id_total.value = [];
res.data.forEach((item, index) => { res.data.forEach((item, index) => {
tsbq_pp.value.push(item.bq); tsbq_pp.value.push(item.bq);
tsbq_id_total.value.push({ tsbq_id_total.value.push({
@ -3200,8 +3322,11 @@ const changeRs = (id) => {
//---------------------- //----------------------
const zyys_choose_cs = ref(""); const zyys_choose_cs = ref("");
const changeys = (name, img_width) => { //
if (yaosuList.value.includes(name)) { const removeOverlay = (name) => {
if (!yaosuList.value.includes(name)) {
return;
}
yaosuList.value = yaosuList.value.filter((ch) => ch !== name); yaosuList.value = yaosuList.value.filter((ch) => ch !== name);
if (yaosuIcon.value[name]) { if (yaosuIcon.value[name]) {
yaosuIcon.value[name].sj.forEach((item, index) => { yaosuIcon.value[name].sj.forEach((item, index) => {
@ -3216,14 +3341,46 @@ const changeys = (name, img_width) => {
zyys_center.value.forEach((item, index) => { zyys_center.value.forEach((item, index) => {
map.removeOverlay(item); map.removeOverlay(item);
}); });
zyys_dk.value.length = 0; zyys_dk.value = [];
zyys_center.value.length = 0; zyys_center.value = [];
} }
};
const changeys = (name, img_width) => {
//
let businessList = [
{
name: "共享教师",
bj: "gxjs",
},
{
name: "共享食堂",
bj: "gxst",
},
{
name: "巡回医疗点",
bj: "xhyld",
},
];
if (businessList.some((item) => item.name == name)) {
businessList.forEach((item) => {
if (item.name == name) {
business.bj = item.bj;
business.show = true;
} else {
removeOverlay(item.name);
}
});
}
if (yaosuList.value.includes(name)) {
removeOverlay(name);
business.show = false;
} else { } else {
loadingss.value = true; loadingss.value = true;
csh(); csh();
clearPerson(); clearPerson();
yaosuList.value.push(name); yaosuList.value.push(name);
let url; let url;
let img; let img;
let img_map; let img_map;
@ -3236,27 +3393,55 @@ const changeys = (name, img_width) => {
tooltip = item.tooltip; tooltip = item.tooltip;
} }
}); });
if (
name == "摄像头" || switch (name) {
name == "AED" || case "养老机构":
name == "幼儿园" ||
name == "小学" ||
name == "初中" ||
name == "高中" ||
name == "医院" ||
name == "卫生服务中心" ||
name == "残疾人之家" ||
name == "汽车充电桩" ||
name == "便民服务中心"
) {
getZyys(url, name, img, img_map, tooltip, img_width);
} else if (name == "养老机构") {
getZyys2(name, img, img_map, tooltip, img_width); getZyys2(name, img, img_map, tooltip, img_width);
} else if (name == "小区物业") { break;
case "小区物业":
getZyys3(url, name, img, img_map, tooltip, img_width); getZyys3(url, name, img, img_map, tooltip, img_width);
break;
default:
let list = [
"摄像头",
"AED",
"幼儿园",
"小学",
"初中",
"高中",
"医院",
"卫生服务中心",
"残疾人之家",
"汽车充电桩",
"便民服务中心",
"共享教师",
"共享食堂",
];
if (list.includes(name)) {
getZyys(url, name, img, img_map, tooltip, img_width);
} else { } else {
loadingss.value = false; loadingss.value = false;
} }
break;
}
}
};
//
const gxjsIcon = (name) => {
switch (name) {
case "幼儿园":
return js_kindergarten;
case "小学":
return js_grade_school;
case "初中":
return js_junior_high;
case "中职":
return js_high_school;
case "高中":
return js_high_school;
default:
return js_high_school;
} }
}; };
//线 //线
@ -3265,7 +3450,11 @@ const getZyys = (url, name, img, img_map, tooltip, img_width) => {
if (res.code == 200) { if (res.code == 200) {
yaosuIcon.value[name] = {}; yaosuIcon.value[name] = {};
yaosuIcon.value[name]["sj"] = []; yaosuIcon.value[name]["sj"] = [];
if (name == "共享食堂") {
yaosuIcon.value[name]["sj"] = [...res.data.lnst, ...res.data.zcd];
} else {
yaosuIcon.value[name]["sj"] = res.data; yaosuIcon.value[name]["sj"] = res.data;
}
yaosuIcon.value[name]["sj"].forEach((item, index) => { yaosuIcon.value[name]["sj"].forEach((item, index) => {
item.img = img; item.img = img;
item.img_map = img_map; item.img_map = img_map;
@ -3281,6 +3470,14 @@ const getZyys = (url, name, img, img_map, tooltip, img_width) => {
let newStr = item.point.replace("", ","); let newStr = item.point.replace("", ",");
item.center = JSON.parse(newStr); item.center = JSON.parse(newStr);
break; break;
case "共享教师":
item.img_map = item.gxjs == 1 ? js_gx : gxjsIcon(item.lb);
item.center = [Number(item.jd), Number(item.wd)];
break;
case "共享食堂":
item.img_map = item.bj ? st_map : zcd_map;
item.center = [Number(item.jd), Number(item.wd)];
break;
default: default:
item.center = [Number(item.jd), Number(item.wd)]; item.center = [Number(item.jd), Number(item.wd)];
break; break;
@ -3471,9 +3668,25 @@ const createZyys = (polygon, indexx, name, tooltip, img_width) => {
console.log(polygon); console.log(polygon);
open_detail_zyys_xqwy(polygon.ssjd, polygon.sssq); open_detail_zyys_xqwy(polygon.ssjd, polygon.sssq);
break; break;
case "共享教师":
gxjsName.value = polygon.xxmc;
getSharedTeacher();
break;
// case "":
// // console.log(polygon);
// // if (polygon.bj) {
// // gxstName.value = polygon.lnstmc;
// // getSharedCanteen();
// // }
// break;
default: default:
console.log(polygon);
zyys_choose_cs.value = name; zyys_choose_cs.value = name;
if (zyys_dk.value.length) { if (name == "共享食堂") {
gxstName.value = polygon?.lnstmc || ""; //
}
if (zyys_dk.value.length > 0) {
zyys_dk.value.forEach((item, index) => { zyys_dk.value.forEach((item, index) => {
map.removeOverlay(item); // map.removeOverlay(item); //
}); });
@ -3488,15 +3701,46 @@ const createZyys = (polygon, indexx, name, tooltip, img_width) => {
} else { } else {
zyys_total_center[name] = []; zyys_total_center[name] = [];
zyys_total_dk[name] = []; zyys_total_dk[name] = [];
await get_dk_zyys(polygon.fgfwrs, polygon.lb, polygon.ssly, name); await get_dk_zyys(polygon.fgfwrs, polygon.lb, polygon.ssly, name);
xr_dk_center_zyys(); xr_dk_center_zyys();
} }
break; break;
} }
} }
); );
}; };
//
const gxjsName = ref("");
const getSharedTeacher = () => {
tableType.title = "共享教师";
tableType.columns = table_column_list.gxjs;
dialogShow.value = true;
http.get(`/api/ggfwyth/ysyzt/getGxjs?xxmc=${gxjsName.value}`).then((res) => {
if (res.code == 200) {
tableType.data = res.data;
pagination.total = res.data.length;
}
});
};
//
const gxstName = ref("");
const getSharedCanteen = () => {
tableType.title = "共享食堂";
tableType.columns = table_column_list.gxst;
dialogShow.value = true;
http
.get(
`/api/ggfwyth/ysyzt/lnstryxx?sdailyCareCenterName=${gxstName.value}&page=${pagination.currentPage}&size=${pagination.pageSize}`
)
.then((res) => {
if (res.code == 200) {
tableType.data = res.data;
pagination.total = res.count;
}
});
};
//
const open_detail_zyys_xqwy = (xzjd, csq) => { const open_detail_zyys_xqwy = (xzjd, csq) => {
tableType.title = "小区物业"; tableType.title = "小区物业";
tableType.columns = table_column_list.xqwy; tableType.columns = table_column_list.xqwy;
@ -3588,10 +3832,10 @@ const loadCs_zyys2 = async (jdname, name) => {
} }
}; };
const get_dk_zyys = async (sj, xd, ssly, name) => { const get_dk_zyys = async (sj, xd, ssly, name) => {
zyys_dk.value.length = 0; zyys_dk.value = [];
zyys_center.value.length = 0; zyys_center.value = [];
zyys_data.value.point.length = 0; zyys_data.value.point = [];
zyys_data.value.center.length = 0; zyys_data.value.center = [];
let zyys_jd = []; let zyys_jd = [];
sj.forEach((itemN) => { sj.forEach((itemN) => {
if (!zyys_jd.includes(itemN.town)) { if (!zyys_jd.includes(itemN.town)) {
@ -3656,7 +3900,7 @@ const get_dk_zyys = async (sj, xd, ssly, name) => {
if (item.committee == dk.name) { if (item.committee == dk.name) {
let a = { let a = {
...dk, ...dk,
zt: item.zt, zt: item.zt || 0,
}; };
zyys_data.value.point.push(a); zyys_data.value.point.push(a);
} }
@ -3665,7 +3909,7 @@ const get_dk_zyys = async (sj, xd, ssly, name) => {
if (item.committee == center.name) { if (item.committee == center.name) {
let b = { let b = {
...center, ...center,
num: item.num, num: item.num || "",
town: item.town, town: item.town,
committee: item.committee, committee: item.committee,
ssly: ssly, ssly: ssly,
@ -3698,6 +3942,8 @@ const xr_dk_center_zyys = async () => {
map.addOverlay(zyys_dk.value[index]); map.addOverlay(zyys_dk.value[index]);
} }
}); });
console.log(zyys_data.value);
zyys_data.value.center.map((item, index) => { zyys_data.value.center.map((item, index) => {
Xr_zyysNum(item, index); Xr_zyysNum(item, index);
}); });
@ -3790,8 +4036,11 @@ const Xr_zyysNum = (polygon, indexx) => {
} else { } else {
zyys_table.xd = ""; zyys_table.xd = "";
} }
if (zyys_choose_cs.value == "共享食堂") {
getSharedCanteen();
} else {
open_detail_zyys(); open_detail_zyys();
}
}); });
}; };
const open_detail_zyys = () => { const open_detail_zyys = () => {
@ -3927,6 +4176,7 @@ const close = () => {
dialogShow.value = false; dialogShow.value = false;
pagination.total = 100; pagination.total = 100;
pagination.currentPage = 1; pagination.currentPage = 1;
tableType.title = "";
tableType.data = []; tableType.data = [];
}; };
// //
@ -3939,6 +4189,14 @@ const onsxt = () => {
// //
const handlePagination = (current) => { const handlePagination = (current) => {
pagination.currentPage = current; pagination.currentPage = current;
switch (tableType.title) {
case "共享教师":
getSharedTeacher();
break;
case "共享食堂":
getSharedCanteen();
break;
default:
if (tableType.type) { if (tableType.type) {
let age = ""; let age = "";
let tagId; let tagId;
@ -3963,6 +4221,8 @@ const handlePagination = (current) => {
} else { } else {
open_detail_zyys(); open_detail_zyys();
} }
break;
}
}; };
// //
@ -3971,9 +4231,15 @@ const openCamera = () => {
}; };
// //
const openMessage = (e) => { const openMessage = (e) => {
if (tableType.title == "小区物业") { if (
tableType.title == "小区物业" ||
tableType.title == "共享教师" ||
tableType.title == "共享食堂"
) {
return; return;
} }
console.log(e);
message.value = e; message.value = e;
openD.value = true; openD.value = true;
reset_font2(); reset_font2();
@ -4355,7 +4621,7 @@ const createCustomOverlay = (polygon, indexx) => {
}; };
//+ //+
const addFwqCs = () => { const addFwqCs = () => {
fwq_dk.value.length = 0; fwq_dk.value = [];
fwq_jzdk.value.map((item, index) => { fwq_jzdk.value.map((item, index) => {
// let num = index % 9; // let num = index % 9;
let fillColor = "#ffffff"; let fillColor = "#ffffff";
@ -4438,9 +4704,9 @@ const addFwqCsCenter = (polygon, indexx) => {
// //
const updateFwqList = (data, townName, communityName) => { const updateFwqList = (data, townName, communityName) => {
let updatedFwqList = []; let updatedFwqList = [];
fwq_cslist.value.length = 0; fwq_cslist.value = [];
fwq_jzdk.value.length = 0; fwq_jzdk.value = [];
fwq_centerList.value.length = 0; fwq_centerList.value = [];
data.forEach((itemN) => { data.forEach((itemN) => {
if (!fwq_cslist.value.includes(itemN.csq)) { if (!fwq_cslist.value.includes(itemN.csq)) {
fwq_cslist.value.push(itemN.csq); fwq_cslist.value.push(itemN.csq);
@ -4646,7 +4912,7 @@ const addPolygonCounty = () => {
} }
loadingss.value = true; loadingss.value = true;
clear(); clear();
xkzDk.length = 0; xkzDk = [];
cfJd.value = item.name; cfJd.value = item.name;
let jdCenter = []; let jdCenter = [];
BMAP(); BMAP();
@ -4807,8 +5073,8 @@ const createCustomOverlayJd2 = (polygon, indexx) => {
//--------------------- //---------------------
// //
const loadCs = async (name) => { const loadCs = async (name) => {
xkzCenter.length = 0; xkzCenter = [];
xkzDk.length = 0; xkzDk = [];
cssj.forEach((item, index) => { cssj.forEach((item, index) => {
if (item.name == name) { if (item.name == name) {
csqk.value = item.sj; csqk.value = item.sj;
@ -4888,8 +5154,8 @@ const addPolygonCountyCs = () => {
xuanzhongCs.value.push(a); xuanzhongCs.value.push(a);
} }
}); });
chooseCsList.value.length = 0; chooseCsList.value = [];
unChooseList.value.length = 0; unChooseList.value = [];
xkzDk.forEach((itemm, indexx) => { xkzDk.forEach((itemm, indexx) => {
if (itemm.name == item.name) { if (itemm.name == item.name) {
chooseCsList.value.push(itemm); chooseCsList.value.push(itemm);
@ -4991,8 +5257,8 @@ const addCsUnChoose = () => {
cs_choose_arr.value.forEach((item, index) => { cs_choose_arr.value.forEach((item, index) => {
map.removeOverlay(cs_choose_arr.value[index]); map.removeOverlay(cs_choose_arr.value[index]);
}); });
chooseCsList.value.length = 0; chooseCsList.value = [];
unChooseList.value.length = 0; unChooseList.value = [];
cs_dd_arr.value = []; cs_dd_arr.value = [];
xuanzhongCs.value = []; xuanzhongCs.value = [];
xkzCenter.forEach((a, b) => { xkzCenter.forEach((a, b) => {
@ -5999,7 +6265,40 @@ onMounted(async () => {
color: #0c356a; color: #0c356a;
} }
} }
.right-floating-window {
z-index: 100;
position: absolute;
color: #ffffff;
top: 20%;
right: 28%;
font-family: PangMenZhengDao;
.floating_model {
border: 1px solid #7db6c8;
padding: 6px 10px 6px 6px;
margin-bottom: 10px;
background: #426c8d;
box-shadow: 0px 3px 8px 0px rgba(43, 114, 153, 0.7);
border-radius: 6px;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 20px;
color: #c2e1ff;
text-align: left;
font-style: normal;
text-transform: none;
cursor: pointer;
.floating_model_icon {
width: 30px;
height: 30px;
img {
width: 100%;
height: 100%;
}
}
}
}
.title { .title {
background-image: url(@/assets/images/map/map_title_bg.png); background-image: url(@/assets/images/map/map_title_bg.png);
background-repeat: no-repeat; background-repeat: no-repeat;