This commit is contained in:
lcw
2025-09-19 23:10:52 +08:00
parent a8834e6c73
commit 48cb481fe5
21 changed files with 1552 additions and 20871 deletions

View File

@ -0,0 +1,328 @@
<template>
<div class="historical-route-container" v-if="modelValue">
<!-- 头部标题 -->
<div class="header flex align-center just-between">
<span>轨迹历史</span>
<el-icon size="20px" @click="close" class="close-icon">
<Close />
</el-icon>
</div>
<!-- 筛选区域 -->
<div class="filter-section">
<div class="flex align-center just-between">
<el-date-picker class="date-picker" v-model="dateRange" type="datetimerange" range-separator="至"
start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" />
<el-button type="primary" size="small" @click="search" class="search-btn">
查询
</el-button>
</div>
</div>
<!-- 轨迹列表区域 -->
<div class="track-list-container">
<div v-for="(item, index) in trackList" :key="index" class="track-item">
<div class="track-location">{{ item.yjNr }}</div>
</div>
<!-- 空状态 -->
<MOSTY.Empty :show="trackList.length <= 0" :imgSize="150"></MOSTY.Empty>
</div>
<!-- 底部按钮 -->
<div class="bottom-section">
<el-button type="primary" size="small" @click="showOnMap" class="show-map-btn">
轨迹上图
</el-button>
</div>
</div>
</template>
<script setup>
import * as MOSTY from "@/components/MyComponents/index";
import { tbYjxxGsgj } from '@/api/yj.js'
import { ref, defineProps, onMounted, watch } from "vue";
import emitter from "@/utils/eventBus.js";
import { ElMessage } from "element-plus";
import { Close } from '@element-plus/icons-vue';
// 参数传递
const props = defineProps({
// 某条预警详情
data: {
type: Array,
default: () => []
},
modelValue: {
type: Boolean,
default: false
},
});
const emit = defineEmits(["update:modelValue"]);
// 日期范围
const dateRange = ref([null, null]);
// 轨迹列表数据
const trackList = ref([]);
// 关闭窗口
function close() {
dateRange.value = [null, null];
emit("update:modelValue", false);
}
// 查询轨迹数据
function search() {
mockTrackData();
}
const mapData = ref([])
// 轨迹上图
function showOnMap() {
if (trackList.value.length === 0) {
ElMessage({ message: '暂无轨迹数据', type: 'warning' });
return;
}
for (let i = 0; i < 2; i++) {
let coords = mapData.value[i].list.map(item => {
return [item.jd, item.wd]
})
// const coords =[ [
// [
// 94.354613,
// 22.658568
// ],
// [
// 94.354613,
// 23.658568
// ],
// [
// 94.354613,
// 24.658568
// ],
// [
// 94.354613,
// 25.658568
// ],
// [
// 94.354613,
// 26.658568
// ],
// [
// 94.354613,
// 27.658568
// ],
// [
// 94.354613,
// 28.658568
// ],
// [
// 94.354613,
// 29.658568
// ]
// ],[
// [
// 89.354613,
// 22.658568
// ],
// [
// 90.354613,
// 23.658568
// ],
// [
// 91.354613,
// 24.658568
// ],
// [
// 92.354613,
// 25.658568
// ],
// [
// 93.354613,
// 26.658568
// ],
// [
// 94.354613,
// 27.658568
// ],
// [
// 95.354613,
// 28.658568
// ],
// [
// 96.354613,
// 29.658568
// ]
// ]]
emitter.emit('drawLineAnimation', {
type: "solid",
coords: coords,
isclear: true,
flag: "yjLine"
})
}
// const coords = mapData.value.map(item => {
// console.log(item);
// return item.list.map(items => {
// return [items.jd, items.wd]
// })
// })
// emitter.emit('drawLineAnimation',
// {
// type: "solid",
// coords: coords,
// isclear: true,
// flag: "yjLine"
// }
// // { coords: coords, flag: 'yjLine' }
// );
}
// mapUtil.value.createLine(res, res.flag);
// 模拟轨迹数据
function mockTrackData() {
const promes = {
yjRysfzh: props.data.yjRysfzh,
startTime: dateRange.value[0] ? dateRange.value[0] : null,
endTime: dateRange.value[1] ? dateRange.value[1] : null,
}
tbYjxxGsgj(promes).then(res => {
mapData.value = res
trackList.value = []
for (let i = 0; i < res.length; i++) {
trackList.value = [...trackList.value, ...res[i].list]
}
});
}
watch(() => props.data, (newVal) => {
if (newVal.length > 0) {
mockTrackData();
}
})
// 组件挂载时获取默认数据
// onMounted(() => {
// mockTrackData();
// });
// 监听modelValue变化
watch(() => props.modelValue, (newVal) => {
if (newVal) {
mockTrackData();
}
});
</script>
<style lang="scss" scoped>
@import "@/assets/css/homeScreen.scss";
// 容器样式
.historical-route-container {
position: absolute;
top: 80%;
left: 100%;
z-index: 2;
width: 300px;
height: 400px;
}
// 头部样式
.header {
width: 100%;
background: #1d5db4e3;
padding: 8px 5px;
}
// 关闭图标样式
.close-icon {
cursor: pointer;
}
// 筛选区域样式
.filter-section {
background: rgba(10, 49, 88, 0.6);
padding: 10px;
}
// 日期选择器样式
.date-picker {
width: 80%;
}
// 查询按钮样式
.search-btn {
font-size: 12px;
background: #1890ff;
border-color: #1890ff;
}
// 轨迹列表区域样式
.track-list-container {
background: rgba(10, 49, 88, 0.6);
box-shadow: inset 0px 0px 10px 0px rgba(56, 119, 242, 0.5);
height: 280px;
overflow-y: auto;
}
// 列表项样式
.track-item {
border-bottom: 1px solid rgba(56, 119, 242, 0.3);
padding: 8px;
}
// 轨迹时间样式
.track-time {
color: #b7e4ff;
font-size: 12px;
line-height: 1.5;
}
// 轨迹位置样式
.track-location {
color: white;
font-size: 12px;
line-height: 1.5;
}
// 空状态样式
.empty-state {
display: flex;
justify-content: center;
align-items: center;
height: 200px;
color: #b7e4ff;
font-size: 12px;
}
// 底部按钮区域样式
.bottom-section {
background: rgba(10, 49, 88, 0.6);
padding: 10px;
}
// 轨迹上图按钮样式
.show-map-btn {
width: 100%;
font-size: 12px;
background: #1890ff;
border-color: #1890ff;
}
// 自定义滚动条样式
::-webkit-scrollbar {
width: 6px;
}
::-webkit-scrollbar-track {
background: rgba(56, 119, 242, 0.1);
}
::-webkit-scrollbar-thumb {
background: rgba(56, 119, 242, 0.5);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(56, 119, 242, 0.8);
}
::v-deep .el-range-input {
color: #000 !important;
}
</style>

View File

@ -1,18 +1,48 @@
<template>
<div class="personCard relative flex mb10 pointer" >
<div class="avatarBox relative">
<div class="marks f12 absolute" :class="changeBg(props.item.yjJb)">
<span>{{ changetText(props.item.yjJb) }}</span>
<div class="personCard relative mb10 pointer">
<div class="flex nowrap align-center just-between boderBox">
<div class="avatarBox relative">
<div class="marks f12 absolute" :class="changeBg(props.item.yjJb)">
<span>{{ changetText(props.item.yjJb) }}</span>
</div>
<div>
<el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="props.item.yjTp"
:preview-src-list="[props.item.yjTp]" />
</div>
<div>
<span class="smallbtn" @click.stop="() => { }">全息档案{{ props.item.id }}</span>
</div>
</div>
<div>
<el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="props.item.yjTp" :preview-src-list="[props.item.yjTp]"/>
</div>
<div>
<span class="smallbtn" @click.stop="()=>{}">全息档案</span>
</div>
</div>
<div class="infoBox">
<div class="items">
<div class="infoBox">
<div style="height: 110px">
<div class="flex nowrap align-center just-between linItem">
<div class="wichAlian3">{{ props.item.yjRyxm }}</div>
<div>|</div>
<div class="wichAlian">{{ IdCard(props.item.yjRysfzh, 2) }}</div>
<div>|</div>
<div class="wichAlian2"> {{ IdCard(props.item.yjRysfzh, 3) }}</div>
<div>|</div>
<div class="wichAlian3"> <span class="bqbox ml6">{{ props.item.yjbq }}</span></div>
</div>
<div class="linItem">身份证号{{ props.item.yjRysfzh }}</div>
<div class="linItem">预警时间{{ props.item.yjSj }}</div>
<div class="linItem flex nowrap align-center just-between">预警次数{{ props.item.yjCs }}<div></div>
<div>相似度90%</div>
</div>
</div>
<div class="infoItem flex nowrap" style="margin-top: 6px;">
<span class="smllbtn" @click.stop="handleQsFk(props.item, '签收')"
v-if="props.item.yjJb != 10 && props.item.czzt == '01' && deptLevel == '40'">签收</span>
<span class="smllbtn" @click.stop="handleQsFk(props.item, '反馈')"
v-if="props.item.yjJb != 10 && props.item.czzt == '02' && deptLevel == '40'"> 反馈 </span>
<span class="smllbtn" @click.stop="handleQsFk(props.item, '查看反馈')"
v-if="props.item.yjJb != 10 && props.item.czzt == '03'"> 查看反馈 </span>
<div>
<span class="smllbtn" v-if="track" @click.stop="showDetail(props.item)">发送指令</span>
<span class="smllbtn" v-else @click.stop="openTrack(props.item)">历史轨迹</span>
</div>
</div>
<!-- <div class="items">
<div class="infoItem flex nowrap mb10">{{ props.item.yjRyxm }} <span class="bqbox ml6">{{ props.item.yjbq }}</span></div>
<div class="infoItem ellipsis">性别<span class="value">{{ IdCard(props.item.yjRysfzh , 2 )}}</span></div>
<div class="infoItem ellipsis">身份证号<span class="value">{{ props.item.yjRysfzh }}</span></div>
@ -33,30 +63,24 @@
<div class="infoItem ellipsis">预警时间<span class="value">{{ props.item.yjSj }}</span></div>
<div class="infoItem ellipsis">签收时间<span class="value">{{ props.item.qssj }}</span></div>
<div class="infoItem ellipsis">反馈时间<span class="value">{{ props.item.fksj }}</span></div>
</div> -->
</div>
</div>
</div>
<!-- 虚拟触发 -->
<!-- <el-popover ref="popoverRef" :visible="isShowVisble" :width="400" :virtual-ref="buttonRef" trigger="click" title="反馈" virtual-triggering >
<el-form :model="chooseRow" ref="elRowForm" :inline="true" label-width="100px" :rules="rules">
<el-form-item label="反馈内容" prop="fknr" style="width: 100%;">
<MOSTY.Other style="width: 100%;" clearable v-model="chooseRow.fknr" type="textarea" placeholder="请输入不通过原因"/>
</el-form-item>
</el-form>
<div class="flex just-center mt10">
<el-button @click.stop="cancelRowSp">取消</el-button>
<el-button type="primary" @click.stop="handleSendSp(props.item)" v-loading="btnloading">确定</el-button>
<div class="infoItem ellipsis flex align-center">
<img src="@/assets/images/ddtb.png" />
<span class="value">{{ props.item.yjDz }}</span>
</div>
</el-popover> -->
</div>
<HistoricalRoute v-model="showTrack" :data="props.item" />
</template>
<script setup>
import emitter from "@/utils/eventBus.js";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import * as MOSTY from "@/components/MyComponents/index";
import { IdCard } from '@/utils/validate.js'
import { defineProps ,ref, reactive,getCurrentInstance, onMounted } from "vue";
import HistoricalRoute from './historicalRoute.vue'
import { defineProps, ref, reactive, getCurrentInstance, onMounted, watch } from "vue";
const { proxy } = getCurrentInstance();
const props = defineProps({
item: {
@ -70,28 +94,29 @@ const props = defineProps({
type: {
type: String,
default: ""
}, track: {
type: Boolean,
default: true
}
});
watch(() => props.item, (newVal) => {
if (newVal) {
console.log(newVal);
}
},{deep:true})
const deptLevel = ref(null)
const buttonRef = ref()
const popoverRef = ref()
const elRowForm = ref()
const isShowVisble = ref(false)
const chooseRow = ref({})
const rules = reactive({
fknr: [{ required: true, message: "请输入反馈内容", trigger: "blur" }],
})
onMounted(() => {
// deptLevel.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptLevel : null;
});
const emit = defineEmits(['showDetail'])
const showDetail = (val) => {
emit('showDetail', val)
}
// 处理签收
const handleQsFk = (val,type) =>{
switch(type){
const handleQsFk = (val, type) => {
switch (type) {
case '签收':
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
qcckPost({id:val.id}, "/mosty-gsxt/tbYjxx/yjqs").then(() => {
qcckPost({ id: val.id }, "/mosty-gsxt/tbYjxx/yjqs").then(() => {
val.czzt = '02'
proxy.$message({ type: "success", message: "签收成功" });
});
@ -99,7 +124,7 @@ const handleQsFk = (val,type) =>{
break;
case '反馈':
case '查看反馈':
emitter.emit("openFkDialog", {id:val.id,type});
emitter.emit("openFkDialog", { id: val.id, type });
break;
}
}
@ -133,14 +158,42 @@ const changetText = (type) => {
return "不关注";
}
};
const showDetail = () => {
emit('showDetail',props.item)
}
const showTrack=ref(false)
const openTrack = () => {
showTrack.value=true
};
// <!-- 虚拟触发 -->
// <!-- <el-popover ref="popoverRef" :visible="isShowVisble" :width="400" :virtual-ref="buttonRef" trigger="click" title="反馈" virtual-triggering >
// <el-form :model="chooseRow" ref="elRowForm" :inline="true" label-width="100px" :rules="rules">
// <el-form-item label="反馈内容" prop="fknr" style="width: 100%;">
// <MOSTY.Other style="width: 100%;" clearable v-model="chooseRow.fknr" type="textarea" placeholder="请输入不通过原因"/>
// </el-form-item>
// </el-form>
// <div class="flex just-center mt10">
// <el-button @click.stop="cancelRowSp">取消</el-button>
// <el-button type="primary" @click.stop="handleSendSp(props.item)" v-loading="btnloading">确定</el-button>
// </div>
// </el-popover> -->
// const showDetail = () => {
// emit('showDetail',props.item)
// }
// const buttonRef = ref()
// const popoverRef = ref()
// const elRowForm = ref()
// const isShowVisble = ref(false)
// const chooseRow = ref({})
// const rules = reactive({
// fknr: [{ required: true, message: "请输入反馈内容", trigger: "blur" }],
// })
// onMounted(() => {
// deptLevel.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptLevel : null;
// });
</script>
<style lang="scss" scoped>
.personCard {
position: relative;
background: rgba(10, 49, 88, 0.6);
box-shadow: inset 0px 0px 10px 0px rgba(56, 119, 242, 0.5);
border-radius: 0px 0px 0px 0px;
@ -149,12 +202,41 @@ const showDetail = () => {
box-sizing: border-box;
transition: all 0.3s;
.boderBox {
border-bottom: 1px solid #217ce1;
padding-bottom: 10px;
}
.infoItem {
font-size: 13px;
margin-bottom: 2px;
color: #fff;
margin-top: 4px;
.value {
color: #89afcf;
}
.smllbtn {
display: inline-block;
padding: 4px 8px;
box-sizing: border-box;
border-radius: 4px;
background: #0072ff;
border-radius: 5px 5px 5px 5px;
margin-right: 6px;
margin-top: 4px;
cursor: pointer;
}
}
&:hover {
background: rgba(17, 66, 96, 0.8);
}
::v-deep .el-button{
span{
::v-deep .el-button {
span {
color: #fff;
}
}
@ -163,6 +245,7 @@ const showDetail = () => {
margin-right: 5px;
overflow: hidden;
width: 80px;
.marks {
width: 70px;
height: 32px;
@ -203,31 +286,28 @@ const showDetail = () => {
.infoBox {
width: calc(100% - 90px);
display: flex;
justify-content: space-between;
.items{
width: 50%;
// display: flex;
// justify-content: space-between;
.linItem {
line-height: 28px;
}
.infoItem {
font-size: 13px;
margin-bottom: 2px;
color: #fff;
.value {
color: #89afcf;
}
.smllbtn {
display: inline-block;
padding: 4px 8px;
box-sizing: border-box;
border-radius: 4px;
background: #0072ff;
border-radius: 5px 5px 5px 5px;
margin-right: 6px;
margin-top: 4px;
cursor: pointer;
}
}
.wichAlian {
// width: 10%;
text-align: center;
}
.wichAlian3 {
// width: 40%;
}
.wichAlian2 {
// width: 10%;
text-align: center;
}
}
}
@ -239,7 +319,8 @@ const showDetail = () => {
border-radius: 5px 5px 5px 5px;
margin-top: 6px;
}
.num{
.num {
color: #00ffff;
}
</style>

View File

@ -11,77 +11,88 @@
</el-form>
<el-button type="primary">搜索</el-button>
</div>
<div class="systemBox">
<!-- 左边列表 -->
<div class="leftList">
<div class="hed flex just-between align center">
<span class="f14">预警列表</span>
<span style="color: #00b7ff" class="pointer" @click="seeMoreFn">查看更多</span>
</div>
<div class="ml10 mr10 mt10">
<el-input v-model="keyword" placeholder="姓名、证件号码搜索">
<template #append><el-icon><Search /></el-icon></template>
</el-input>
</div>
<ul class="listContent noScollLine mt10" v-infinite-scroll="loadList" style="overflow: auto" v-loading="loading">
<!-- @click.stop="showDetail(item)" -->
<li v-for="(item, index) in personList" :key="index" >
<YjItem :item="item" type="yj" :dic="{D_BZ_YJCZZT}"></YjItem>
</li>
<MOSTY.Empty :show="!loading && personList.length <= 0"></MOSTY.Empty>
</ul>
</div>
<!-- 右边模块 -->
<div class="rightList">
<!-- 第一部门 -->
<div class="model-commom">
<div class="hed flex align-center">预警处置统计</div>
<div class="comm-cnt" v-loading="list.YjczDate.loading">
<BarHatEcharts echartsId="qylxEcharts" :data="list.YjczDate"></BarHatEcharts>
<div class="systemBox">
<!-- 左边列表 -->
<div class="leftList">
<div class="hed flex just-between align center">
<span class="f14">预警列表</span>
<span style="color: #00b7ff" class="pointer" @click="seeMoreFn">查看更多</span>
</div>
</div>
<!-- 第二部分 -->
<div class="model-commom mt10">
<div class="hed flex align-center">布控区域统计</div>
<div class="comm-cnt" v-loading="list.RylxDate.loading">
<BarHatEcharts echartsId="rylxEcharts" :data="list.RylxDate"></BarHatEcharts>
<div class="ml10 mr10 mt10">
<el-input v-model="keyword" placeholder="姓名、证件号码搜索">
<template #append>
<el-button type="primary" @click="getKeyword">搜索</el-button>
<!-- <div >
<el-icon >
<Search />
</el-icon>
</div> -->
</template>
</el-input>
</div>
<ul class="listContent noScollLine mt10" v-infinite-scroll="loadList" style="overflow: auto"
v-loading="loading">
<!-- @click.stop="showDetail(item)" -->
<li v-for="(item, index) in personList" :key="index" @click="markAbove(item)">
<YjItem :item="item" type="yj" :dic="{ D_BZ_YJCZZT }" @showDetail="showDetail"></YjItem>
</li>
<MOSTY.Empty :show="!loading && personList.length <= 0"></MOSTY.Empty>
</ul>
</div>
<!-- 第三部分 -->
<div class="model-commom mt10">
<div class="hed flex align-center">感知源统计</div>
<div class="comm-cnt" v-loading="list.GzyDate.loading">
<BarHatEcharts echartsId="gzyEcharts" :data="list.GzyDate"></BarHatEcharts>
<!-- 右边模块 -->
<div class="rightList">
<!-- 第一部门 -->
<div class="model-commom">
<div class="hed flex align-center">预警处置统计</div>
<div class="comm-cnt" v-loading="list.YjczDate.loading">
<BarHatEcharts echartsId="qylxEcharts" :data="list.YjczDate"></BarHatEcharts>
</div>
</div>
</div>
<!-- 第四部分 -->
<div class="model-commom mt10">
<div class="hed flex align-center">预警等级统计</div>
<div class="comm-cnt" v-loading="loadingyj">
<WarningCount ref="yjjbRef"></WarningCount>
<!-- 第二部分 -->
<div class="model-commom mt10">
<div class="hed flex align-center">布控区域统计</div>
<div class="comm-cnt" v-loading="list.RylxDate.loading">
<BarHatEcharts echartsId="rylxEcharts" :data="list.RylxDate"></BarHatEcharts>
</div>
</div>
<!-- 第三部分 -->
<div class="model-commom mt10">
<div class="hed flex align-center">感知源统计</div>
<div class="comm-cnt" v-loading="list.GzyDate.loading">
<BarHatEcharts echartsId="gzyEcharts" :data="list.GzyDate"></BarHatEcharts>
</div>
</div>
<!-- 第四部分 -->
<div class="model-commom mt10">
<div class="hed flex align-center">预警等级统计</div>
<div class="comm-cnt" v-loading="loadingyj">
<WarningCount ref="yjjbRef"></WarningCount>
</div>
</div>
</div>
</div>
</div>
</div>
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='close'>
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj" :tacitly="tacitly"/>
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='close'>
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
:tacitly="tacitly" />
</Information>
<!-- 反馈按钮 -->
<FkDialog @change="getList"></FkDialog>
<LeftDialog></LeftDialog>
</template>
<script setup>
import LeftDialog from '@/views/home/dialog/leftDialog.vue'
import FkDialog from './components/fkDialog.vue'
import * as MOSTY from "@/components/MyComponents/index";
import { qcckPost,qcckGet } from "@/api/qcckApi.js";
import { qcckPost, qcckGet } from "@/api/qcckApi.js";
import GdMap from "@/components/GdMap/index.vue";
import emitter from "@/utils/eventBus.js";
import YjItem from "./components/yjItem.vue";
import WarningCount from "./components/WarningCount.vue";
import BarHatEcharts from "@/views/home/echarts/barHatEcharts.vue";
import { onMounted, reactive, ref,getCurrentInstance } from "vue";
import { onMounted, reactive, ref, getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
@ -114,13 +125,13 @@ const loadingyj = ref(false)
const list = reactive({
// 预警处置统计
YjczDate: {
loading:false,
loading: false,
xDate: [],
list: [],
},
// 布控区域统计
RylxDate: {
loading:false,
loading: false,
xDate: [],
list: [],
},
@ -128,68 +139,71 @@ const list = reactive({
GzyDate: {
xDate: [],
list: [],
loading:false,
loading: false,
},
})
const personList = ref([]);
const pageNum = ref(1)
const total = ref(0)
onMounted(()=>{
onMounted(() => {
getList()
init()
})
// 触底加载
const loadList = () => {
if( personList.value.length == total.value) return;
if (personList.value.length == total.value) return;
pageNum.value++;
getList()
}
const getList = () =>{
let params = { pageSize:10, pageNum:pageNum.value };
const getList = () => {
let params = { pageSize: 10, pageNum: pageNum.value,keyword:keyword.value };
loading.value = true;
qcckPost(params,'/mosty-gsxt/tbYjxx/getPageList').then(res=>{
qcckPost(params, '/mosty-gsxt/tbYjxx/getPageList').then(res => {
loading.value = false;
let arr = res.records || [];
personList.value = pageNum.value == 1 ? arr : personList.value.concat(arr);
total.value = res.total;
}).catch(()=>{
}).catch(() => {
loading.value = false;
})
}
const init = () =>{
const getKeyword = () => {
pageNum.value=1
getList()
}
const init = () => {
// 预警处置统计
list.YjczDate.loading = true;
qcckGet({},'/mosty-gsxt/tbYjxx/getYjCzztTj').then(res=>{
qcckGet({}, '/mosty-gsxt/tbYjxx/getYjCzztTj').then(res => {
list.YjczDate.loading = false;
list.YjczDate.xDate = res.map(item=>item.zdmc);
list.YjczDate.xDate = res.map(item => item.zdmc);
list.YjczDate.list = [{
value: res.map(item=>item.count),
value: res.map(item => item.count),
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
}]
})
// 布控区域统计
list.RylxDate.loading = true;
qcckGet({},'/mosty-gsxt/tbGsxtBkQy/getBkQytj').then(res=>{
qcckGet({}, '/mosty-gsxt/tbGsxtBkQy/getBkQytj').then(res => {
list.RylxDate.loading = false;
list.RylxDate.xDate = res.map(item=>item.qymc);
list.RylxDate.xDate = res.map(item => item.qymc);
list.RylxDate.list = [{
value: res.map(item=>item.num),
value: res.map(item => item.num),
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
}]
})
// 感知元统计
list.GzyDate.loading= true;
qcckGet({},'/mosty-gsxt/tbYjxx/getGzyTj').then(res=>{
list.GzyDate.loading = true;
qcckGet({}, '/mosty-gsxt/tbYjxx/getGzyTj').then(res => {
list.GzyDate.loading = false;
list.GzyDate.xDate = res.map(item=>item.yj_gzymc);
list.GzyDate.xDate = res.map(item => item.yj_gzymc);
list.GzyDate.list = [{
value: res.map(item=>item.num),
value: res.map(item => item.num),
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
}]
@ -197,7 +211,7 @@ const init = () =>{
// 预警级别
loadingyj.value = true;
qcckGet({},'/mosty-gsxt/tbYjxx/getYjxxTj').then(res=>{
qcckGet({}, '/mosty-gsxt/tbYjxx/getYjxxTj').then(res => {
loadingyj.value = false;
yjjbRef.value.initCharts(res)
})
@ -207,25 +221,34 @@ const seeMoreFn = () => {
router.push('/ControlApproval')
}
const showDialog = ref(false)
const itemData=ref()
const itemData = ref()
const showDetail = (item) => {
showDialog.value = true;
itemData.value=item
itemData.value = item
}
const handleClose = () => {
showDialog.value = false;
}
const semdFqzlRef = ref()
const tacitly = {
title:'yjBt',
instructionContent:'yjNr'
title: 'yjBt',
instructionContent: 'yjNr'
}
const submit=()=>{
const submit = () => {
semdFqzlRef.value.getsendFqzl()
}
const close = () => {
semdFqzlRef.value.close()
}
// 标点上图
const markAbove = (val) => {
const icon = require('@/assets/point/yj.png')
emitter.emit('setMapCenter', { location: [val.jd, val.wd], zoomLevel: 15 });
emitter.emit("addPointArea", { flag: 'home_yj_detail', icon, coords: [val] })
}
</script>
<style lang="scss" scoped>
@ -314,13 +337,13 @@ const close = () => {
height: 40px;
line-height: 40px;
padding-left: 10px;
background: linear-gradient(90deg, #124cb3 0%, rgba(18, 76, 179, 0.23) 77%, rgba(18, 76, 179, 0) 100%);
background: linear-gradient(90deg, #124cb3 0%, rgba(18, 76, 179, 0.23) 77%, rgba(18, 76, 179, 0) 100%);
}
}
</style>
<style>
.el-loading-mask{
background: rgba(0,0,0,0.5);
.el-loading-mask {
background: rgba(0, 0, 0, 0.5);
}
</style>