This commit is contained in:
姚宇浩 2024-08-13 17:12:44 +08:00
commit 0c99f5c095
4 changed files with 287 additions and 28 deletions

BIN
dist.zip

Binary file not shown.

View File

@ -0,0 +1,211 @@
<template>
<div class="dialogPage">
<el-dialog
v-model="cameraShow"
center
width="80vw"
:show-close="false"
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<template #header="{ close, titleId, titleClass }">
<div class="my-header">
<el-icon size="26" color="#fff" @click="closeDialog">
<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">{{ data.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 style="width: 100%; height: calc(100% - 110px)">
</div>
</div>
</el-dialog>
</div>
</template>
<script setup>
import {
ref,
reactive,
onMounted,
defineProps,
onBeforeMount,
watch,
nextTick,
} from "vue";
import { CircleCloseFilled } from "@element-plus/icons-vue";
const props = defineProps({
cameraShow: {
type: Boolean,
default: () => {
return false;
},
},
// columns: {
// type: Array,
// default: () => {
// return [];
// },
// },
// tableData: {
// type: Array,
// default: () => {
// return [];
// },
// },
// title: {
// type: String,
// default: () => {
// return "";
// },
// },
});
const emit = defineEmits(["close"]);
//
const cameraShow = ref();
const data = reactive({
title: "摄像头",
columns: [],
tableData: [],
});
const gridData = [];
//
watch(
() => props.cameraShow,
(newVal, oldVal) => {
cameraShow.value = newVal;
// data.columns = props.columns;
}
);
// watch(
// () => props.tableData,
// (newVal, oldVal) => {
// data.tableData = props.tableData;
// }
// );
// 使
onMounted(() => {
cameraShow.value = props.cameraShow;
// data.columns = props.columns;
// data.title = props.title;
// data.tableData = props.tableData;
});
const closeDialog = () => {
cameraShow.value = false;
emit("close");
};
</script>
<style lang="scss" scoped>
:deep(.el-dialog) {
--el-dialog-bg-color: none;
--el-dialog-width: 76% !important;
}
.my-header {
display: flex;
flex-direction: row-reverse;
}
.tabelPart {
padding: 16px;
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;
}
}
.bo {
width: 100%;
display: flex;
}
.title {
margin: 10px 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: 33px;
color: #ffffff;
line-height: 38px;
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;
}
}
</style>

View File

@ -35,7 +35,15 @@
<div class="my-info-item"> <div class="my-info-item">
<div class="my-info-label">居住状态</div> <div class="my-info-label">居住状态</div>
<div class="my-info-content"> <div class="my-info-content">
<p>{{ baseInfo.jzzt == 0 ? '居住' : baseInfo.jzzt == 1 ? '未居住' : '' }}</p> <p>
{{
baseInfo.jzzt == 0
? "居住"
: baseInfo.jzzt == 1
? "未居住"
: ""
}}
</p>
</div> </div>
</div> </div>
<div class="my-info-item"> <div class="my-info-item">
@ -89,6 +97,12 @@
<img src="@/assets/person/back.png" alt="" /> <img src="@/assets/person/back.png" alt="" />
<p>返回</p> <p>返回</p>
</div> </div>
<!-- v-if="dataMyTag.camera" -->
<div class="videoCamera">
<el-icon size="26" color="#fff" @click="openCamera">
<VideoCamera />
</el-icon>
</div>
</div> </div>
<div class="person-side"> <div class="person-side">
<div v-if="dataMyTag.title == '医疗保险'"> <div v-if="dataMyTag.title == '医疗保险'">
@ -271,7 +285,7 @@
</div> </div>
<div class="my-info"> <div class="my-info">
<div class="my-info-item" v-if="dataMyTag.title == '学习'"> <div class="my-info-item" v-if="dataMyTag.title == '学习'">
<div class="my-info-label" style="min-width:40px;">学历</div> <div class="my-info-label" style="min-width: 40px">学历</div>
<div class="my-info-content"> <div class="my-info-content">
<p>{{ baseInfo.eduPhase || "" }}</p> <p>{{ baseInfo.eduPhase || "" }}</p>
</div> </div>
@ -286,7 +300,14 @@
class="my-info-item" class="my-info-item"
v-for="(item, index) in tableType.columns" v-for="(item, index) in tableType.columns"
> >
<div class="my-info-label" :class="item.label=='学校' || item.label=='班级'? 'widu':''">{{ item.label }}</div> <div
class="my-info-label"
:class="
item.label == '学校' || item.label == '班级' ? 'widu' : ''
"
>
{{ item.label }}
</div>
<div class="my-info-content" v-if="rightList?.length != 0"> <div class="my-info-content" v-if="rightList?.length != 0">
<p>{{ pd(item.label, rightList[item.property]) }}</p> <p>{{ pd(item.label, rightList[item.property]) }}</p>
</div> </div>
@ -297,7 +318,7 @@
</div> </div>
<Dialog <Dialog
:dialogShow="dialogShow" :dialogShow="dialogShow"
:columns="tableType.columns2" :columns="tableType.columns1"
:title="tableType.title2" :title="tableType.title2"
:tableData="tableType.data" :tableData="tableType.data"
:pagination="paginationDialog" :pagination="paginationDialog"
@ -305,13 +326,20 @@
@handle="handlePaginationDialog" @handle="handlePaginationDialog"
> >
</Dialog> </Dialog>
<DialogCamera
:cameraShow="cameraShow"
@close="close1"
>
</DialogCamera>
</div> </div>
</template> </template>
<script setup> <script setup>
import { reactive, ref, onMounted, watch, computed } from "vue"; import { reactive, ref, onMounted, watch, computed } from "vue";
import Dialog from "@/view/dialog/dialog.vue"; import Dialog from "@/view/dialog/dialog.vue";
import DialogCamera from "@/view/dialog/dialogCamera.vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { VideoCamera } from "@element-plus/icons-vue";
import http from "@/utils/request.js"; import http from "@/utils/request.js";
import tools from "@/utils/tools"; import tools from "@/utils/tools";
const router = useRouter(); const router = useRouter();
@ -331,6 +359,7 @@ const emit = defineEmits(["backMap"]);
const dataMyTag = reactive({ const dataMyTag = reactive({
title: "出生", title: "出生",
identNo: "", identNo: "",
camera: null,
myTag: [ myTag: [
{ {
name: "低保", name: "低保",
@ -449,7 +478,7 @@ const dataMyTag = reactive({
form: { form: {
data: [], data: [],
column: [], column: [],
} },
}); });
// //
const pagination = reactive({ const pagination = reactive({
@ -474,13 +503,14 @@ const paginationDialog = reactive({
}); });
const baseInfo = ref({}); const baseInfo = ref({});
const dialogShow = ref(false); const dialogShow = ref(false);
const cameraShow = ref(false);
const tableType = reactive({ const tableType = reactive({
url: "", url: "",
// //
title2: "", title2: "",
title: "出生", title: "出生",
columns: [], columns: [],
columns:[], columns1: [],
data: [], data: [],
}); });
const columnsList = reactive({ const columnsList = reactive({
@ -682,7 +712,7 @@ const pd = computed(() => {
// //
const onClickTag = (item) => { const onClickTag = (item) => {
tableType.title2 = item.name; tableType.title2 = item.name;
tableType.columns2 = columnsList["特殊标签"].column; tableType.columns1 = columnsList["特殊标签"].column;
dialogShow.value = true; dialogShow.value = true;
}; };
// //
@ -692,7 +722,6 @@ const onClickTag2 = (name, label) => {
tableType.url = columnsList[name].url; tableType.url = columnsList[name].url;
tableType.columns = columnsList[name].column; tableType.columns = columnsList[name].column;
if (name == "婚育") { if (name == "婚育") {
} else if (name == "综合") { } else if (name == "综合") {
dataMyTag.form.column = columnsList["一卡通"].column; dataMyTag.form.column = columnsList["一卡通"].column;
oneCardSolution(); oneCardSolution();
@ -740,10 +769,12 @@ const getTable = (url, csh) => {
} }
}); });
}; };
const close = () => { const close = () => {
dialogShow.value = false; dialogShow.value = false;
}; };
const close1 = () => {
cameraShow.value = false;
};
// //
const handlePagination = (currentPage) => { const handlePagination = (currentPage) => {
pagination.current = currentPage; pagination.current = currentPage;
@ -765,6 +796,7 @@ const getData = (identNo) => {
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
baseInfo.value = res.data.ryjbxx; baseInfo.value = res.data.ryjbxx;
dataMyTag.camera = res.data.camera;
dataMyTag.myTag.forEach((item) => { dataMyTag.myTag.forEach((item) => {
item.show = 0; item.show = 0;
res.data.rybqxx.forEach((itemm, indexx) => { res.data.rybqxx.forEach((itemm, indexx) => {
@ -783,12 +815,15 @@ const oneCardSolution = () => {
) )
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
dataMyTag.form.data= res.data; dataMyTag.form.data = res.data;
zhpagination.total = res.count; zhpagination.total = res.count;
} }
}); });
}; };
//
const openCamera = () => {
cameraShow.value = true;
};
const back = () => { const back = () => {
if (jump.value == "detail") { if (jump.value == "detail") {
router.back(); router.back();
@ -812,7 +847,7 @@ onMounted(() => {
dataMyTag.identNo = routers.query.identNo; dataMyTag.identNo = routers.query.identNo;
jump.value = "detail"; jump.value = "detail";
getData(routers.query.identNo); getData(routers.query.identNo);
onClickTag2("出生",'出生'); onClickTag2("出生", "出生");
} else { } else {
jump.value = "map"; jump.value = "map";
} }
@ -1169,7 +1204,13 @@ onMounted(() => {
line-height: 22px; line-height: 22px;
} }
} }
.widu{ .videoCamera {
position: absolute;
top: 8px;
right: 30px;
cursor: pointer;
}
.widu {
min-width: 40px !important; min-width: 40px !important;
} }
</style> </style>

View File

@ -169,7 +169,10 @@
<div v-else>未居住</div> <div v-else>未居住</div>
</template> </template>
<template #sxt="{ currentCol, currentData }"> <template #sxt="{ currentCol, currentData }">
<div>摄像头</div> <el-icon size="24" color="#fff"
v-if="currentData.camera"
><VideoCamera
/></el-icon>
</template> </template>
</Dialog> </Dialog>
<personDetail <personDetail
@ -199,6 +202,7 @@ 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";
import mapTown from "@/assets/json/ly.json"; import mapTown from "@/assets/json/ly.json";
import { VideoCamera } from "@element-plus/icons-vue";
// import xkz from "@/assets/json/xkz.json"; // import xkz from "@/assets/json/xkz.json";
import cssj from "@/assets/json/cssj.json"; import cssj from "@/assets/json/cssj.json";
import j0 from "@/assets/images/map/j0.png"; import j0 from "@/assets/images/map/j0.png";
@ -1642,11 +1646,11 @@ const changeys = (name) => {
} else { } else {
yaosuList.value.push(name); yaosuList.value.push(name);
let url; let url;
let img let img;
yaosuTotal.value.forEach((item, index) => { yaosuTotal.value.forEach((item, index) => {
if (item.name == name) { if (item.name == name) {
url = item.url; url = item.url;
img=item.img img = item.img;
} }
}); });
if(name=='摄像头'){ if(name=='摄像头'){
@ -1655,7 +1659,7 @@ const changeys = (name) => {
} }
}; };
const getZyys = (url, name,img) => { const getZyys = (url, name, img) => {
http.get(url).then((res) => { http.get(url).then((res) => {
if (res.code == 200) { if (res.code == 200) {
yaosuIcon.value[name].sj = res.data; yaosuIcon.value[name].sj = res.data;
@ -1667,7 +1671,7 @@ const getZyys = (url, name,img) => {
item.center.push(Number(item.wd)); item.center.push(Number(item.wd));
}); });
yaosuIcon.value[name].sj.forEach((itemm, indexx) => { yaosuIcon.value[name].sj.forEach((itemm, indexx) => {
createZyys(itemm,indexx,name) createZyys(itemm, indexx, name);
}); });
} }
}); });
@ -1689,7 +1693,9 @@ const createZyys = (polygon, indexx, name) => {
content.appendChild(img2); content.appendChild(img2);
return content; return content;
} }
yaosuIcon.value[name].sj[indexx].overlay = new BMapGL.CustomOverlay(createLabelDOM, { yaosuIcon.value[name].sj[indexx].overlay = new BMapGL.CustomOverlay(
createLabelDOM,
{
point: new BMapGL.Point(...polygon.center), point: new BMapGL.Point(...polygon.center),
opacity: 0.5, opacity: 0.5,
offsetY: -10, offsetY: -10,
@ -1697,8 +1703,9 @@ const createZyys = (polygon, indexx, name) => {
imgSrc2: polygon.img, imgSrc2: polygon.img,
type: "customOverlay", type: "customOverlay",
}, },
}); }
map.addOverlay( yaosuIcon.value[name].sj[indexx].overlay); );
map.addOverlay(yaosuIcon.value[name].sj[indexx].overlay);
}; };
//---------------------- //----------------------
// //