This commit is contained in:
lcw
2025-09-28 15:53:38 +08:00
parent b937d8be0a
commit 857b1afe46
115 changed files with 538 additions and 346 deletions

View File

@ -2,6 +2,7 @@
color: #333333;
border: 1px solid #cccccc;
}
::v-deep .el-button {
color: #333333;
border: 1px solid #cccccc;
@ -31,6 +32,7 @@
box-shadow: 0px 0px 8px #0a6bfc;
}
}
.el-button.is-disabled,
.el-button.is-disabled:focus,
.el-button.is-disabled:hover {
@ -40,6 +42,7 @@
background-color: #808596;
border-color: var(--el-button-disabled-border-color);
}
::v-deep .el-input-group__append {
background-color: #ffffff;
border: 1px solid #e9e9e9;
@ -59,6 +62,7 @@
::v-deep .el-table__inner-wrapper {
background: #fff;
}
::v-deep .el-table th.el-table__cell {
background: #ffffff;
color: #000;
@ -120,8 +124,9 @@
border: 1px solid #1983e5;
color: #fff;
}
::v-deep .el-dialog__title {
color: #fff;
color: #000000;
}
::v-deep .user-main-wrap {
@ -138,39 +143,49 @@
box-shadow: 0px 0px 8px #0a6bfc;
}
}
::v-deep .el-input .el-input__count .el-input__count-inner {
background: transparent;
color: #fff;
}
::v-deep .el-textarea .el-input__count {
background: transparent;
color: #fff;
}
::v-deep .el-select__popper.el-popper {
background: #16284c;
border: #16284c;
}
::v-deep .el-range-input {
background: transparent;
color: #fff;
}
::v-deep .el-range-separator {
color: #fff;
}
::v-deep .el-button--danger {
background: #f56c6c;
border: 1px solid #f56c6c;
}
::v-deep .el-tree {
--el-tree-node-hover-bg-color: #083960;
}
::v-deep .el-tree-node__label {
background: transparent !important;
}
::v-deep .el-card {
border: 1px solid #07539a;
color: #fff;
}
::v-deep .el-collapse {
background: transparent;
color: #fff;
@ -180,9 +195,11 @@
--el-collapse-content-text-color: #fff;
--el-collapse-border-color: #0d3f6e;
}
::v-deep .el-tabs__item {
color: rgb(206, 208, 220);
}
::v-deep .el-tabs__nav-wrap::after {
background: #0d3f6e;
}
@ -202,10 +219,12 @@
::v-deep .el-dialog__body {
padding: 10px 20px;
}
::v-deep .el-pagination__total,
::v-deep .el-pagination__jump {
color: #bdc7da;
}
::v-deep .el-radio {
color: rgb(206, 208, 220);
}
@ -215,6 +234,7 @@
border: 1px solid #19538a;
margin: 0 0.2rem;
}
::v-deep .el-select .el-select__tags .el-tag--info {
background: transparent;
border: 1px solid #19538a;
@ -227,12 +247,15 @@
::v-deep .el-overlay .el-overlay-dialog .el-dialog .el-dialog__body .tabBox {
height: 450px;
}
::v-deep .el-date-editor .el-range-separator {
color: #000000;
}
::v-deep .el-date-editor .el-range-input {
color: #000000;
}
::v-deep .el-input.is-disabled .el-input__inner {
// background-color: #000000;
// border: 1px solid #000000;
@ -242,6 +265,7 @@
::v-deep .el-select {
width: 100%;
}
::v-deep .el-link {
margin: 0 5px;
}
}

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -200,20 +200,20 @@ export function MapUtil(map) {
typeof data.jyqx == "string"
? JSON.parse(data.jyqx)
: data.jyqx
? data.jyqx
: [];
? data.jyqx
: [];
let txzb =
typeof data.txzb == "string"
? JSON.parse(data.txzb)
: data.txzb
? data.txzb
: [];
? data.txzb
: [];
let pbcl =
typeof data.pbcl == "string"
? JSON.parse(data.pbcl)
: data.pbcl
? data.pbcl
: [];
? data.pbcl
: [];
let list = [];
let cl = pbcl && pbcl.length > 0 ? true : false; // 车辆
let zb = txzb && txzb.length > 0 ? true : false; // 智能装备
@ -344,8 +344,8 @@ export function MapUtil(map) {
item.count <= 10
? 1.4
: item.count > 10 && item.count <= 50
? 1.6
: 1.9;
? 1.6
: 1.9;
let obj = {
properties: { mag },
type: "Feature",
@ -449,7 +449,7 @@ export function MapUtil(map) {
});
delete _that._self.gpsZb[id];
}
} catch (err) {}
} catch (err) { }
}
};
@ -766,8 +766,8 @@ export function MapUtil(map) {
};
/**geojson 创建边界
* let data = {
* type: "FeatureCollection",
* let data = {
* type: "FeatureCollection",
* features: [
* {
geometry: {
@ -778,7 +778,7 @@ export function MapUtil(map) {
},
type: "Feature",
}
* ]
* ]
};
*/
MapUtil.prototype.createBoundarys = (res) => {
@ -807,14 +807,9 @@ export function MapUtil(map) {
// 打开详情弹窗
MapUtil.prototype.openInfoDetail = (flag, data) => {
switch (flag) {
case "rx":
emitter.emit("showJzInfo", data);
break;
case "gaj":
case "pcs":
case "jwz":
case "xfq":
case "zdfkd":
emitter.emit("showGazy", data);
break;
case "kfd":
@ -856,6 +851,14 @@ export function MapUtil(map) {
console.log(data, "从业人员");
emitter.emit("showCyry", [data]);
break;
// 新的内容
case "jczMap_Gzy":
emitter.emit("showJczMapGzy", data);
break;
}
};
}

View File

@ -0,0 +1,120 @@
<template>
<el-dialog v-model="modelValue" width="60%" custom-class="container" @close="close" :title="title" align-center>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData" >
<template #sblx="{ row }">
<dict-tag :options="D_BZ_SBLX" :value="row.sblx" :tag="false" />
</template>
<template #sblxdm="{ row }">
<dict-tag :options="D_BZ_GZSBLX" :value="row.sblxdm" :tag="false" />
</template>
</MyTable>
<div class="footInfoBtn flex just-between align-center">
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="550"
:pageConfiger="{...pageData.pageConfiger,
total: pageData.total}" />
<el-button type="primary" @click="submitDate()">确定选择</el-button>
</div>
</el-dialog>
</template>
<script setup>
import { reactive, ref,watch,getCurrentInstance } from 'vue'
import MyTable from '@/components/aboutTable/MyTable.vue'
import Pages from "@/components/aboutTable/Pages.vue";
import { ysSxtgetPageList } from "@/api/yszx";
const { proxy } = getCurrentInstance();
const { D_BZ_SBLX,D_BZ_GZSBLX } = proxy.$dict(
"D_BZ_SBLX",
"D_BZ_GZSBLX"
);
const props = defineProps({
modelValue: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '选择感知源'
}
})
const emit = defineEmits(["update:modelValue", "choose"])
const dataLsit= ref();
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableHeight: 500,
tableConfiger: {
rowHieght: 61,
showSelectType: "radio",
loading: false,
haveControls:false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 180, //操作栏宽度
tableColumn: [
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
{ label: "设备名称", prop: "sbmc", showOverflowTooltip: true },
{ label: "设备编码", prop: "sbbh", showOverflowTooltip: true },
{ label: "厂商名称", prop: "csmc", showOverflowTooltip: true },
{ label: "地址", prop: "dzmc", showOverflowTooltip: true },
{ label: "感知源类型", prop: "sblx", showOverflowTooltip: true, showSolt: true, },
{ label: "摄像机类型", prop: "sblxdm", showOverflowTooltip: true,showSolt: true, },
]
})
const getList = () => {
pageData.tableConfiger.loading = true;
const promes={
// ssbm: propsGzyList.ssbm,
pageSize: pageData.pageConfiger.pageSize,
pageCurrent: pageData.pageConfiger.pageCurrent,
}
ysSxtgetPageList(promes).then((res) => {
pageData.tableData = res.records || []
pageData.total = res.total || 0
}).finally(() => {
pageData.tableConfiger.loading = false;
})
}
watch(() => props.modelValue, (newVal) => {
getList()
})
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent=val
getList()
}
const changeSize = (val) => {
pageData.pageConfiger.pageSize=val
getList()
}
const chooseData = (val) => {
if (pageData.tableConfiger.showSelectType === "radio") {
dataLsit.value = val[0]
} else {
dataLsit.value = val
}
}
const close = () => {
emit("update:modelValue", false);
}
const submitDate = () => {
emit("choose", dataLsit.value);
close()
}
</script>
<style lang="scss" scoped>
.container {
color: #000000;
}
</style>

View File

@ -686,7 +686,7 @@ const submitDate = () => {
if (pageDataR.tableData.length == 0)
return proxy.$message.warning("请选择数据");
console.log( pageDataR.tableData,' pageDataR.tableData');
emits("update:modelValue", pageDataR.tableData); //多选
emits("change", pageDataR.tableData);
}
@ -765,18 +765,12 @@ watch(
color: #505152;
}
// ::v-deep .el-popper{
// position: fixed !important;
// top: 50% !important;
// left: 50% !important;
// transform: translate(-50%, -50%) !important;
// }
.dinw {
position: absolute !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
top: 50% !important;
// width: 1000px;
margin: 0px !important;
}
</style>

View File

@ -0,0 +1,48 @@
<template>
<div class="comom-cnt">
<div>设备名称{{ propsGzyList.sbmc }}</div>
<div>设备地址{{ propsGzyList.dzmc }}</div>
<div class="btn-cnt">
<el-button type="primary" size="small" @click="openPlay(propsGzyList)" v-if="!propsGzyList.isPlay">播放</el-button>
<el-button type="primary" size="small" @click="closePlay(propsGzyList)" v-else>关闭</el-button>
</div>
<div style="height: 170px;" v-if="propsGzyList.isPlay">
<VideoPay :sbbh ="propsGzyList.sbbh" />
</div>
</div>
</template>
<script setup>
import { ref, watch,onUnmounted, onMounted } from 'vue'
import VideoPay from '@/components/wsIframe/index.vue'
const props = defineProps({
gzyList: {
type: Object,
default: () => {}
}
})
const propsGzyList = ref({})
onMounted(() => {
propsGzyList.value = {...props.gzyList,isPlay:false}
})
const openPlay = (item) => {
item.isPlay = true
}
const closePlay = (item) => {
item.isPlay = false
}
onUnmounted(() => {
console.log("关闭");
})
</script>
<style lang='scss' scoped>
.comom-cnt{
padding: 10px;
background-color: #ffffffb3;
color: #000;
}
.btn-cnt{
margin: 10px 0;
}
</style>

View File

@ -0,0 +1,180 @@
<template>
<div class="home-custom-dialog" v-if="showDialog" ref="dialogRef" :style="dialogStyle" @mousedown="handleMouseDown">
<div class="common-title">
<div class="flex align-center title">
<img src="@/assets/images/icon_07.png"/> {{ title }}
</div>
<el-icon @click="close"><Close /></el-icon>
</div>
<div class="content">
<GzyList v-if="stateDialog.showGzy" :gzyList="dataDialog.dataGzy" />
</div>
</div>
</template>
<script setup>
import { onMounted, ref, onUnmounted, nextTick, reactive } from 'vue'
import emitter from "@/utils/eventBus.js";
import GzyList from './gzyList.vue'
// 响应式数据
const showDialog = ref(false) // 修复变量名拼写错误
const dialogRef = ref(null) // 使用ref获取元素引用减少DOM查询
const dialogStyle = ref({
top: '65px',
left: '23%'
})
// 拖拽状态变量
let isDragging = false // 普通变量而非ref因为不需要响应式更新视图
let startX = 0
let startY = 0
let initialLeft = 0
let initialTop = 0
const DIALOG_WIDTH = 300 // 常量定义,方便维护
const DIALOG_HEIGHT = 80
// 名称
const title = ref('')
// 组件的状态
const stateDialog = reactive({
showGzy: false
})
// 组件数据
const dataDialog = ref({
dataGzy: {}
})
// 组件挂载时的初始化
onMounted(() => {
// 绑定事件总线监听
emitter.on('showJczMapGzy', (res) => {
title.value = '感知源'
showDialog.value = true
stateDialog.showGzy = true
if (res) {
dataDialog.value.dataGzy = res
}
})
// 绑定全局拖拽事件
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
// 组件挂载后确保位置正确转换为像素单位
nextTick(() => {
ensureCorrectPosition()
})
})
const close = () => {
showDialog.value = false
stateDialog={}
}
/**
* 确保对话框位置使用正确的像素单位
* 避免第一次拖拽时的偏移问题
*/
const ensureCorrectPosition = () => {
if (dialogRef.value) {
const rect = dialogRef.value.getBoundingClientRect()
dialogStyle.value = {
top: `${Math.round(rect.top + window.scrollY)}px`,
left: `${Math.round(rect.left + window.scrollX)}px`
}
}
}
/**
* 处理鼠标按下事件,开始拖拽
*/
const handleMouseDown = (e) => {
// 防止点击文本时的默认选中行为
e.preventDefault()
isDragging = true
startX = e.clientX
startY = e.clientY
// 准确获取当前元素的位置
if (dialogRef.value) {
const rect = dialogRef.value.getBoundingClientRect()
initialLeft = rect.left + window.scrollX
initialTop = rect.top + window.scrollY
} else {
// 备用方案:从样式中获取位置
initialLeft = parseInt(dialogStyle.value.left) || 0
initialTop = parseInt(dialogStyle.value.top) || 0
}
}
/**
* 处理鼠标移动事件,更新拖拽位置
*/
const handleMouseMove = (e) => {
if (!isDragging) return
const dx = e.clientX - startX
const dy = e.clientY - startY
// 设置新位置,确保不超出可视区域
const viewportWidth = window.innerWidth || document.documentElement.clientWidth
const viewportHeight = window.innerHeight || document.documentElement.clientHeight
const newLeft = Math.max(0, Math.min(viewportWidth - DIALOG_WIDTH, initialLeft + dx))
const newTop = Math.max(0, Math.min(viewportHeight - DIALOG_HEIGHT, initialTop + dy))
// 使用requestAnimationFrame优化动画性能
requestAnimationFrame(() => {
dialogStyle.value = {
...dialogStyle.value,
left: `${Math.round(newLeft)}px`,
top: `${Math.round(newTop)}px`
}
})
}
/**
* 处理鼠标释放事件,结束拖拽
*/
const handleMouseUp = () => {
isDragging = false
}
// 组件卸载时清理事件
onUnmounted(() => {
// 移除全局拖拽事件监听,防止内存泄漏
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
// 可选:移除事件总线监听
emitter.off('showJczMapGzy')
})
</script>
<style lang='scss' scoped>
.home-custom-dialog {
position: absolute;
z-index: 12;
background-color:#0359c2;
padding: 0;
cursor: move;
overflow: hidden;
transition: transform 0.1s ease-out;
.common-title {
width: 300px;
display: flex;
justify-content: space-between;
height: 45px;
align-items: center;
font-size: 16px;
color: #fff;
padding: 0 10px 0 10px;
box-sizing: border-box;
// background: url("~@/assets/images/bg44.png") no-repeat -14px -9px;
background-size: 320x;
.title{
img{
margin-right: 10px;
}
}
}
.content{
background:#09729a;
// -webkit-background-clip: text;
// -webkit-text-fill-color: transparent;
}
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div style="width: 100%; height: 100%; overflow: hidden;">
<iframe v-if="urls" :src="'http://80.2.22.233:56233?sbbh=' + urls" style="border: none; width: 100%; height: 100%; "
<iframe v-if="urls" :src="'http://155.240.22.7:8877?sbbh=' + ssbhDm" style="border: none; width: 100%; height: 100%; "
allowfullscreen allowtransparency scrolling="no"></iframe>
<iframe v-else src="https://stream7.iqilu.com/10339/upload_transcode/202002/09/20200209105011F0zPoYzHry.mp4" style="border: none; width: 100%; height: 100%; "
allowfullscreen allowtransparency scrolling="no"></iframe>
@ -15,6 +15,7 @@ const props = defineProps({
})
const { proxy } = getCurrentInstance();
const urls = ref(null)
const ssbhDm=ref('')
watch(() => props.sbbh, (val) => {
if (!val) {
proxy.$message({
@ -23,26 +24,24 @@ watch(() => props.sbbh, (val) => {
type: "info"
});
} else {
getUrl(val)
ssbhDm.value = val
}
}, { immediate: true })
function getUrl(sbbh) {
http.previewURLs({ sbbh: sbbh, protocol: 'sbbh' }).then((res) => {
console.log(res);
let data = JSON.parse(res);
if (data && data.url) {
urls.value = data.data.url
} else {
proxy.$message({
message: "获取不到视频流,播放失败!!!",
grouping: true,
type: "info"
});
}
})
}
// function getUrl(sbbh) {
// http.previewURLs({ sbbh: sbbh, protocol: 'sbbh' }).then((res) => {
// let data = JSON.parse(res);
// if (data && data.url) {
// urls.value = data.data.url
// } else {
// proxy.$message({
// message: "获取不到视频流,播放失败!!!",
// grouping: true,
// type: "info"
// });
// }
// })
// }
</script>
<style lang="scss" scoped></style>

View File

@ -85,7 +85,7 @@ const query = computed(() => {
padding-left: 20px;
font-size: 20px;
font-family: "YSBTH";
background: linear-gradient(0deg, #59a6f4 0%);
background: linear-gradient(0deg, #59a6f4 0%, #ffffff 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}

View File

@ -31,7 +31,8 @@
/>
</el-form-item>
<el-form-item style="width: 40%" prop="sbmc" label="感知源名称">
<el-input :disabled="forbidden"
<el-input readonly :disabled="forbidden"
@click="openDialog=true"
v-model="listQuery.sbmc"
placeholder="请输入感知源名称"
style="width: 100%"
@ -97,7 +98,7 @@
></el-option>
</el-select>
</el-form-item> -->
<el-form-item style="width: 40%" label="环林卡口名称">
<el-form-item style="width: 40%" label="环林卡口名称" prop="jczmc">
<div class="diviput" @click="!forbidden?showJcz = true:''">
<span v-if="listQuery.jczmc">{{ listQuery.jczmc }}</span>
<span class="placeholder" v-else> 请选择布控卡口</span>
@ -128,6 +129,7 @@
</div>
</div>
<Jczloder v-model="showJcz" :Single="true" @choosedJcz="JczMsg" :data="[]" />
<ChooseGzy v-model="openDialog" @choose="chooseDataGzy" />
</template>
<script setup>
@ -136,6 +138,7 @@ import { TtbJczSxtAdd, Ttbgetupdate } from "@/api/mosty-jcz.js";
import * as MOSTY from "@/components/MyComponents/index";
import emitter from "@/utils/eventBus.js";
import Jczloder from "@/components/loder/Jczloder.vue";
import ChooseGzy from "@/components/chooseList/chooseGzy.vue";
import GdMap from "@/components/GdMap/index.vue";
import { ElMessage } from "element-plus";
const props = defineProps({
@ -175,7 +178,13 @@ const rules = reactive({
required: true,
message: "请输入经度"
}
]
],
jczmc: [
{
required: true,
message: "请输入环林卡口名称"
}
],
});
const formRef = ref(null);
const emit = defineEmits(["getjczgetXfllList"]);
@ -223,8 +232,6 @@ const init = (type, row) => {
//保存
const _onSave = () => {
if (!formRef) return;
console.log(listQuery.value);
formRef.value.validate((valid, fields) => {
if (valid) {
if (pageType.value == "add") {
@ -284,6 +291,19 @@ const JczMsg = (val) => {
listQuery.value.jczmc = val.jczmc;
listQuery.value.jczid = val.id;
};
const chooseDataGzy = (val) => {
listQuery.value.sbmc = val.sbmc
listQuery.value.sblx = val.sblx
listQuery.value.sbbh = val.sbbh
listQuery.value.wd = val.wd
listQuery.value.jd = val.jd
listQuery.value.dzmc = val.dzmc
listQuery.value.csmc = val.csmc
listQuery.value.sblxdm = val.sblxdm
listQuery.value.sblx = val.sblx
}
// 选择感知源
const openDialog=ref(false)
defineExpose({ init });
</script>

View File

@ -2,12 +2,12 @@
<div>
<div class="titleBox">
<PageTitle title="感知源管理">
<el-button :disabled="ids.length<=0" type="primary" @click="delDictItem(ids)" v-if="Auth">
<!-- <el-button :disabled="ids.length<=0" type="primary" @click="delDictItem(ids)" v-if="Auth">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle" >批量删除</span>
</el-button>
</el-button> -->
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
<el-icon style="vertical-align: middle">
<CirclePlus />
@ -55,6 +55,7 @@
<EditAddForm ref="detailDiloag" :dict="{ D_BZ_SF, D_BZ_SBLX, D_BZ_DWFL, D_BZ_GZSBLX }"
@getjczgetXfllList="getjczgetXfllList" />
</div>
</template>
<script setup>
@ -67,8 +68,9 @@ import EditAddForm from "./components/editAddForm.vue";
import { TtbgetPageList, gzydeleteList } from "@/api/mosty-jcz.js";
import { isAuth } from '@/utils/tools.js'
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
const { proxy } = getCurrentInstance();
const { D_BZ_SBLX, D_BZ_SF, D_BZ_DWFL, D_BZ_GZSBLX } = proxy.$dict(
"D_BZ_SBLX",
"D_BZ_SF",
@ -103,7 +105,7 @@ const pageData = reactive({
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
showSelectType: "null",
loading: false
},
total: 0,
@ -207,6 +209,9 @@ const tabHeightFn = () => {
const chooseData = (val) => {
ids.value=val.map(item=>item.id)
}
</script>
<style>

View File

@ -123,7 +123,7 @@ getcountCrl();
font-size: 18px;
position: relative;
padding-left: 12px;
background: linear-gradient(0deg, #59a6f4 0%, #ffffff 90%);
background: linear-gradient(0deg, #59a6f4 0%, #ffffff 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}

View File

@ -4,8 +4,8 @@
<img src="@/assets/images/tc/close.png" alt="" srcset="" />
</div>
<div class="flex just-between align-center bt">
<div class="headline">{{ BbMag?.jczmc }}</div>
<div class="headbut" style="" @click="enterLevel">进入检查站</div>
<div class="headline">{{ JczData.jczmc }}</div>
<div class="headbut" @click="enterLevel">进入检查站</div>
</div>
<div class="flex just-between content">
<div class="contentLeft">
@ -15,7 +15,8 @@
</div>
<div class="leftMag">
<div class="ld">值班领导</div>
<div class="name">{{ BbMag?.fzrXm }}</div>
<div class="name" v-if="BbMag.fzrXm">{{ BbMag?.fzrXm }}</div>
<div class="name" v-else>暂无报备数据</div>
</div>
</div>
<div class="flex">
@ -24,7 +25,8 @@
</div>
<div class="leftMag">
<div class="ld">联系电话</div>
<div class="name">{{ BbMag?.fzrLxdh }}</div>
<div class="name" v-if="BbMag.fzrXm">{{ BbMag?.fzrLxdh }}</div>
<div class="name" v-else>暂无报备数据</div>
</div>
</div>
<div class="dutyList flex just-between align-center">
@ -85,15 +87,17 @@ const BbMag = ref({ ryList: [] });
const getjczqueryByIdFeign = () => {
jczqueryById({ jczid: props.JczData.id }).then((res) => {
BbMag.value = res;
if (res.ryList) {
if (res) {
BbMag.value.mjsl = res.ryList.filter((el) => {
return el.ryMfjlb == '01'
}).length
BbMag.value.fjsl = res.ryList.filter((el) => {
return el.ryMfjlb == '02'
}).length
} else {
BbMag.value = {}
}
});
};
getjczqueryByIdFeign();

View File

@ -1,7 +1,13 @@
<template>
<div class="homeBox">
<GdMap></GdMap>
<!-- 头部 -->
<Head></Head>
<!-- 左边 内容-->
<div class="home-aside asideL">
@ -41,8 +47,12 @@
</div>
</div>
</div>
<div class="asideB" >
<img src="@/assets/images/bi/gzy.png" @click="getsxtGetList"/>
</div>
</div>
<Entrance v-if="showEntrance" :JczData="JczData" />
<PopupWindows />
</template>
<script setup>
@ -54,9 +64,10 @@ import PeoWarning from "./components/PeoWarning.vue";
import BeOnDuty from "./components/beonDuty.vue";
import Entrance from "./components/entrance.vue";
import WanringAnyse from "./components/wanringAnyse.vue";
import { jczgetJczList } from "@/api/mosty-jcz";
import {ysSxtGetList} from '@/api/yszx.js'
import { jczgetJczList, sxtGetList } from "@/api/mosty-jcz";
import { ysSxtGetList } from '@/api/yszx.js'
import emitter from "@/utils/eventBus.js";
import PopupWindows from "@/components/popupWindows/index.vue";
import { ref, onMounted } from "vue";
//获取所有检查站
@ -73,24 +84,36 @@ const showEntrance = ref(false);
onMounted(() => {
emitter.on("showJcz", (res) => {
if (res) {
const promes = {
jczid: res.id,
}
showEntrance.value = true;
JczData.value = res;
emitter.emit("deletePointArea", "jczMap_Gzy");
sxtGetList(promes).then(resData => {
emitter.emit("addPointArea", {
coords: resData,
icon: require("@/assets/point/sp.png"),
flag: "jczMap_Gzy"
});
})
} else {
showEntrance.value = false;
}
});
});
const sxtGetList = () => {
const getsxtGetList = () => {
ysSxtGetList().then(res => {
emitter.emit("deletePointArea", "jczMap_Gzy");
emitter.emit("addPointArea", {
coords: res,
icon: require("@/assets/point/sp.png"),
flag: "jczMap_Gzy"
});
})
}
// sxtGetList()
const showDiclog = ref(true)
getsxtGetList()
</script>
<style lang="scss" scoped>
@ -98,6 +121,7 @@ const sxtGetList = () => {
width: 100%;
height: 100vh;
position: relative;
.home-aside {
overflow: hidden;
z-index: 3;
@ -108,14 +132,17 @@ const sxtGetList = () => {
top: 65px;
background: #0e1b29;
}
// 左边
.asideL {
left: 0;
.asideL-top {
height: 480px;
background: url("~@/assets/images/border_L_T.png") no-repeat center center;
background-size: 100% 100%;
}
.asideL-bottom {
height: calc((100% - 505px) / 2);
margin-top: 10px;
@ -124,23 +151,28 @@ const sxtGetList = () => {
background-size: 100% 100%;
}
}
// 右边
.asideR {
right: 0;
padding-right: 10px;
box-sizing: border-box;
.asideL-top {
height: 40%;
background: url("~@/assets/images/border_R_T.png") no-repeat center center;
background-size: 100% 100%;
}
.asideL-bottom {
height: 60%;
background: url("~@/assets/images/border_R_B.png") no-repeat center center;
background-size: 100% 100%;
}
}
.asideB{
position: absolute;bottom: 50px;z-index:11;left: 50%;transform: translateX(-50%);height: 100px;width: 50%;padding: 0 30px;
}
// 公用
.common-title {
padding: 0 54px;
@ -151,11 +183,11 @@ const sxtGetList = () => {
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.comom-cnt {
height: calc(100% - 30px);
padding: 4px 20px;
box-sizing: border-box;
}
}
</style>