lcw
This commit is contained in:
@ -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
BIN
src/assets/images/bg44.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
120
src/components/chooseList/chooseGzy.vue
Normal file
120
src/components/chooseList/chooseGzy.vue
Normal 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>
|
||||
@ -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>
|
||||
|
||||
48
src/components/popupWindows/gzyList.vue
Normal file
48
src/components/popupWindows/gzyList.vue
Normal 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>
|
||||
180
src/components/popupWindows/index.vue
Normal file
180
src/components/popupWindows/index.vue
Normal 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>
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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>
|
||||
|
||||
Reference in New Issue
Block a user