lcw
This commit is contained in:
@ -430,10 +430,13 @@
|
|||||||
|
|
||||||
// 警情闪速动画
|
// 警情闪速动画
|
||||||
@keyframes alert-flash {
|
@keyframes alert-flash {
|
||||||
0%, 100% {
|
|
||||||
|
0%,
|
||||||
|
100% {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
50% {
|
50% {
|
||||||
opacity: 0.3;
|
opacity: 0.3;
|
||||||
transform: scale(1.05);
|
transform: scale(1.05);
|
||||||
@ -444,19 +447,25 @@
|
|||||||
0% {
|
0% {
|
||||||
box-shadow: 0 0 0 0 rgba(255, 77, 79, 0.7);
|
box-shadow: 0 0 0 0 rgba(255, 77, 79, 0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
70% {
|
70% {
|
||||||
box-shadow: 0 0 0 10px rgba(255, 77, 79, 0);
|
box-shadow: 0 0 0 10px rgba(255, 77, 79, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
100% {
|
100% {
|
||||||
box-shadow: 0 0 0 0 rgba(255, 77, 79, 0);
|
box-shadow: 0 0 0 0 rgba(255, 77, 79, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes alert-blink {
|
@keyframes alert-blink {
|
||||||
0%, 49% {
|
|
||||||
|
0%,
|
||||||
|
49% {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
50%, 100% {
|
|
||||||
|
50%,
|
||||||
|
100% {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -489,3 +498,9 @@
|
|||||||
color: #df6c07;
|
color: #df6c07;
|
||||||
animation: alert-flash 1s ease-in-out infinite;
|
animation: alert-flash 1s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.margTop {
|
||||||
|
padding: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
BIN
src/assets/images/jqjc.mp3
Normal file
BIN
src/assets/images/jqjc.mp3
Normal file
Binary file not shown.
@ -1,7 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :id="mapid" class="map"></div>
|
<div :id="mapid" class="map"></div>
|
||||||
<div class="changeMap_box" v-if="props.isShow">
|
<div class="changeMap_box" v-if="props.isShow">
|
||||||
<!-- <el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况" style="--el-switch-color:#13ce66;--el-switch-off-color:#ff4949;" /> -->
|
<el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况"
|
||||||
|
style="--el-switch-color: #13ce66; --el-switch-off-color: #ff4949" />
|
||||||
<!-- <el-carousel type="card" height="75px" :autoplay="false" indicator-position="none" :initial-index="3" @change="onMapImageChange">
|
<!-- <el-carousel type="card" height="75px" :autoplay="false" indicator-position="none" :initial-index="3" @change="onMapImageChange">
|
||||||
<el-carousel-item>
|
<el-carousel-item>
|
||||||
<div class="mapImageItem">
|
<div class="mapImageItem">
|
||||||
@ -30,8 +31,7 @@
|
|||||||
</el-carousel> -->
|
</el-carousel> -->
|
||||||
<!-- 地图缩放 -->
|
<!-- 地图缩放 -->
|
||||||
<div class="zoomTargetBox">
|
<div class="zoomTargetBox">
|
||||||
<el-input-number :min="7" :max="18" v-model="zoomTarget" :step="1" step-strictly @change="handleZoom">
|
<el-input-number :min="7" :max="18" v-model="zoomTarget" :step="1" step-strictly @change="handleZoom"></el-input-number>
|
||||||
</el-input-number>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -44,7 +44,7 @@ import { getItem } from "@/utils/storage";
|
|||||||
const conditionRoute = ref(true); //路况
|
const conditionRoute = ref(true); //路况
|
||||||
const mMap = ref(null); //地图对象
|
const mMap = ref(null); //地图对象
|
||||||
const mapUtil = ref(null); //地图工具对象
|
const mapUtil = ref(null); //地图工具对象
|
||||||
const zoomTarget = ref(6);
|
const zoomTarget = ref(15);
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
mapid: {
|
mapid: {
|
||||||
@ -70,12 +70,11 @@ const props = defineProps({
|
|||||||
isShowDraw: {
|
isShowDraw: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
const userInfo = getItem("deptId")[0].deptCode;
|
const userInfo = getItem("deptId")[0].deptCode;
|
||||||
} catch (error) {}
|
} catch (error) { }
|
||||||
let map;
|
let map;
|
||||||
let mapLayer;
|
let mapLayer;
|
||||||
let mapLayer1;
|
let mapLayer1;
|
||||||
@ -89,66 +88,37 @@ onMounted(() => {
|
|||||||
|
|
||||||
map = new EliMap({
|
map = new EliMap({
|
||||||
id: props.mapid,
|
id: props.mapid,
|
||||||
crs: "EPSG:3857",
|
crs: "EPSG:4490",
|
||||||
style: {
|
style: {
|
||||||
glyphs: "./fonts/{fontstack}/{range}.pbf",
|
glyphs: "./fonts/{fontstack}/{range}.pbf",
|
||||||
center: [94.36,29.65],
|
center: [94.36057012, 29.64276831],
|
||||||
zoom: 11
|
zoom: 15
|
||||||
},
|
},
|
||||||
minZoom: 7,
|
minZoom: 5,
|
||||||
maxZoom: 18,
|
maxZoom: 18,
|
||||||
transformRequest: (url) => {
|
|
||||||
if (url.indexOf("TileMatrix=") != -1) {
|
|
||||||
const arr = url.split("TileMatrix=");
|
|
||||||
const arr1 = arr[1].split("&");
|
|
||||||
const nurl = `${arr[0]}&TileMatrix=${Number(arr1[0])}&${arr1[1]}&${arr1[2]}`;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
window.map = map;
|
window.map = map;
|
||||||
map.mapboxGLMap.on("load", () => {
|
map.mapboxGLMap.on("load", () => {
|
||||||
map.addGaudLayer({
|
map.addWMTSLayer(
|
||||||
url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
|
"/PGIS_S_TileMapServer/Maps/XZDJ_DJ/EzMap"
|
||||||
})
|
,
|
||||||
|
{
|
||||||
|
Service: "getImage",
|
||||||
|
Type: "RGB",
|
||||||
|
ZoomOffset: "0",
|
||||||
|
V: "0.3",
|
||||||
|
Zoom: "{z}",
|
||||||
|
Row: "{y}",
|
||||||
|
Col: "{x}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tileSize: 300
|
||||||
|
}
|
||||||
|
);
|
||||||
zoomTarget.value = map.mapboxGLMap.getZoom();
|
zoomTarget.value = map.mapboxGLMap.getZoom();
|
||||||
// 地图加载完成后发出事件
|
|
||||||
// emit('mapLoaded')
|
|
||||||
});
|
});
|
||||||
mapUtil.value = new MapUtil(map);
|
mapUtil.value = new MapUtil(map);
|
||||||
// map = new EliMap({
|
|
||||||
// id: props.mapid,
|
|
||||||
// crs: "EPSG:4490",
|
|
||||||
// style: {
|
|
||||||
// glyphs: "./fonts/{fontstack}/{range}.pbf",
|
|
||||||
// center: [94.36057012, 29.64276831],
|
|
||||||
// zoom: 15
|
|
||||||
// },
|
|
||||||
// minZoom: 7,
|
|
||||||
// maxZoom: 18,
|
|
||||||
// });
|
|
||||||
// window.map = map;
|
|
||||||
// map.mapboxGLMap.on("load", () => {
|
|
||||||
// map.addWMTSLayer(
|
|
||||||
// "/PGIS_S_TileMapServer/Maps/XZDJ_SL/EzMap"
|
|
||||||
// ,
|
|
||||||
// {
|
|
||||||
// Service: "getImage",
|
|
||||||
// Type: "RGB",
|
|
||||||
// ZoomOffset: "0",
|
|
||||||
// V: "0.3",
|
|
||||||
// Zoom: "{z}",
|
|
||||||
// Row: "{y}",
|
|
||||||
// Col: "{x}"
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// tileSize: 300
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
// zoomTarget.value = map.mapboxGLMap.getZoom();
|
|
||||||
// });
|
|
||||||
// mapUtil.value = new MapUtil(map);
|
|
||||||
mapUtil.value.Drawplot(); //初始化加载绘制工具
|
mapUtil.value.Drawplot(); //初始化加载绘制工具
|
||||||
|
|
||||||
// 设置地图中心点及图层
|
// 设置地图中心点及图层
|
||||||
@ -184,6 +154,10 @@ onMounted(() => {
|
|||||||
emitter.on("showSquire", (obj) => {
|
emitter.on("showSquire", (obj) => {
|
||||||
mapUtil.value.zdySquire(obj);
|
mapUtil.value.zdySquire(obj);
|
||||||
});
|
});
|
||||||
|
// 展示气泡框
|
||||||
|
emitter.on("makerPopup", (obj) => {
|
||||||
|
mapUtil.value.makerPopup(obj);
|
||||||
|
});
|
||||||
|
|
||||||
// 绘制图形 - 回显区域
|
// 绘制图形 - 回显区域
|
||||||
emitter.on("drawShape", (res) => {
|
emitter.on("drawShape", (res) => {
|
||||||
@ -289,7 +263,6 @@ const mapSetLayer = (id, source) => {
|
|||||||
|
|
||||||
//获取地图绘制的数据
|
//获取地图绘制的数据
|
||||||
const resFun = (coord, type, flag, data) => {
|
const resFun = (coord, type, flag, data) => {
|
||||||
|
|
||||||
emitter.emit("coordString", {
|
emitter.emit("coordString", {
|
||||||
coord: coord,
|
coord: coord,
|
||||||
type: type,
|
type: type,
|
||||||
@ -303,12 +276,6 @@ const handleZoom = (val) => {
|
|||||||
map.mapboxGLMap.setZoom(val);
|
map.mapboxGLMap.setZoom(val);
|
||||||
};
|
};
|
||||||
|
|
||||||
emitter.on("map-resize", () => {
|
|
||||||
if (map && map.mapboxGLMap) {
|
|
||||||
map.mapboxGLMap.resize();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 是否打开或者关闭路况
|
// 是否打开或者关闭路况
|
||||||
const handleSwitch = (val) => {
|
const handleSwitch = (val) => {
|
||||||
if (val) {
|
if (val) {
|
||||||
@ -325,6 +292,7 @@ onUnmounted(() => {
|
|||||||
emitter.off("showPoint");
|
emitter.off("showPoint");
|
||||||
emitter.off("deletePointArea");
|
emitter.off("deletePointArea");
|
||||||
emitter.off("deletePointAreaOne");
|
emitter.off("deletePointAreaOne");
|
||||||
|
emitter.off("makerPopup");
|
||||||
emitter.off("drawShape");
|
emitter.off("drawShape");
|
||||||
emitter.off("echoPlane");
|
emitter.off("echoPlane");
|
||||||
emitter.off("removeEara");
|
emitter.off("removeEara");
|
||||||
@ -338,7 +306,6 @@ onUnmounted(() => {
|
|||||||
emitter.off("diffusionCircle");
|
emitter.off("diffusionCircle");
|
||||||
emitter.off("SsCircle");
|
emitter.off("SsCircle");
|
||||||
emitter.off("ClearssCircle");
|
emitter.off("ClearssCircle");
|
||||||
emitter.off("map-resize");
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -361,29 +328,35 @@ onUnmounted(() => {
|
|||||||
right: 398px;
|
right: 398px;
|
||||||
bottom: 4px;
|
bottom: 4px;
|
||||||
z-index: 9;
|
z-index: 9;
|
||||||
|
|
||||||
.mapImageItem {
|
.mapImageItem {
|
||||||
border: 1px solid #08aae8;
|
border: 1px solid #08aae8;
|
||||||
background: rgb(9, 26, 70);
|
background: rgb(9, 26, 70);
|
||||||
& > img {
|
|
||||||
|
&>img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
& > div {
|
|
||||||
|
&>div {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -3px;
|
top: -3px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.zoomTargetBox {
|
.zoomTargetBox {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
margin-left: 23px;
|
margin-left: 23px;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-input-number__decrease,
|
::v-deep .el-input-number__decrease,
|
||||||
::v-deep .el-input-number__increase {
|
::v-deep .el-input-number__increase {
|
||||||
background: #133362;
|
background: #133362;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-input__inner {
|
::v-deep .el-input__inner {
|
||||||
background: #0c1641;
|
background: #0c1641;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :id="mapid" class="map"></div>
|
<div :id="mapid" class="map"></div>
|
||||||
<div class="changeMap_box" v-if="props.isShow">
|
<div class="changeMap_box" v-if="props.isShow">
|
||||||
<el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况"
|
<!-- <el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况" style="--el-switch-color:#13ce66;--el-switch-off-color:#ff4949;" /> -->
|
||||||
style="--el-switch-color: #13ce66; --el-switch-off-color: #ff4949" />
|
|
||||||
<!-- <el-carousel type="card" height="75px" :autoplay="false" indicator-position="none" :initial-index="3" @change="onMapImageChange">
|
<!-- <el-carousel type="card" height="75px" :autoplay="false" indicator-position="none" :initial-index="3" @change="onMapImageChange">
|
||||||
<el-carousel-item>
|
<el-carousel-item>
|
||||||
<div class="mapImageItem">
|
<div class="mapImageItem">
|
||||||
@ -31,7 +30,8 @@
|
|||||||
</el-carousel> -->
|
</el-carousel> -->
|
||||||
<!-- 地图缩放 -->
|
<!-- 地图缩放 -->
|
||||||
<div class="zoomTargetBox">
|
<div class="zoomTargetBox">
|
||||||
<el-input-number :min="7" :max="18" v-model="zoomTarget" :step="1" step-strictly @change="handleZoom"></el-input-number>
|
<el-input-number :min="7" :max="18" v-model="zoomTarget" :step="1" step-strictly @change="handleZoom">
|
||||||
|
</el-input-number>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -44,7 +44,7 @@ import { getItem } from "@/utils/storage";
|
|||||||
const conditionRoute = ref(true); //路况
|
const conditionRoute = ref(true); //路况
|
||||||
const mMap = ref(null); //地图对象
|
const mMap = ref(null); //地图对象
|
||||||
const mapUtil = ref(null); //地图工具对象
|
const mapUtil = ref(null); //地图工具对象
|
||||||
const zoomTarget = ref(15);
|
const zoomTarget = ref(6);
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
mapid: {
|
mapid: {
|
||||||
@ -70,11 +70,12 @@ const props = defineProps({
|
|||||||
isShowDraw: {
|
isShowDraw: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
}
|
},
|
||||||
|
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
const userInfo = getItem("deptId")[0].deptCode;
|
const userInfo = getItem("deptId")[0].deptCode;
|
||||||
} catch (error) { }
|
} catch (error) {}
|
||||||
let map;
|
let map;
|
||||||
let mapLayer;
|
let mapLayer;
|
||||||
let mapLayer1;
|
let mapLayer1;
|
||||||
@ -88,37 +89,66 @@ onMounted(() => {
|
|||||||
|
|
||||||
map = new EliMap({
|
map = new EliMap({
|
||||||
id: props.mapid,
|
id: props.mapid,
|
||||||
crs: "EPSG:4490",
|
crs: "EPSG:3857",
|
||||||
style: {
|
style: {
|
||||||
glyphs: "./fonts/{fontstack}/{range}.pbf",
|
glyphs: "./fonts/{fontstack}/{range}.pbf",
|
||||||
center: [94.36057012, 29.64276831],
|
center: [94.36,29.65],
|
||||||
zoom: 15
|
zoom: 11
|
||||||
},
|
},
|
||||||
minZoom: 5,
|
minZoom: 7,
|
||||||
maxZoom: 18,
|
maxZoom: 18,
|
||||||
|
transformRequest: (url) => {
|
||||||
|
if (url.indexOf("TileMatrix=") != -1) {
|
||||||
|
const arr = url.split("TileMatrix=");
|
||||||
|
const arr1 = arr[1].split("&");
|
||||||
|
const nurl = `${arr[0]}&TileMatrix=${Number(arr1[0])}&${arr1[1]}&${arr1[2]}`;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
window.map = map;
|
window.map = map;
|
||||||
map.mapboxGLMap.on("load", () => {
|
map.mapboxGLMap.on("load", () => {
|
||||||
map.addWMTSLayer(
|
map.addGaudLayer({
|
||||||
"/PGIS_S_TileMapServer/Maps/XZDJ_DJ/EzMap"
|
url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
|
||||||
,
|
})
|
||||||
{
|
|
||||||
Service: "getImage",
|
|
||||||
Type: "RGB",
|
|
||||||
ZoomOffset: "0",
|
|
||||||
V: "0.3",
|
|
||||||
Zoom: "{z}",
|
|
||||||
Row: "{y}",
|
|
||||||
Col: "{x}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
tileSize: 300
|
|
||||||
}
|
|
||||||
);
|
|
||||||
zoomTarget.value = map.mapboxGLMap.getZoom();
|
zoomTarget.value = map.mapboxGLMap.getZoom();
|
||||||
|
// 地图加载完成后发出事件
|
||||||
|
// emit('mapLoaded')
|
||||||
});
|
});
|
||||||
mapUtil.value = new MapUtil(map);
|
mapUtil.value = new MapUtil(map);
|
||||||
|
// map = new EliMap({
|
||||||
|
// id: props.mapid,
|
||||||
|
// crs: "EPSG:4490",
|
||||||
|
// style: {
|
||||||
|
// glyphs: "./fonts/{fontstack}/{range}.pbf",
|
||||||
|
// center: [94.36057012, 29.64276831],
|
||||||
|
// zoom: 15
|
||||||
|
// },
|
||||||
|
// minZoom: 7,
|
||||||
|
// maxZoom: 18,
|
||||||
|
// });
|
||||||
|
// window.map = map;
|
||||||
|
// map.mapboxGLMap.on("load", () => {
|
||||||
|
// map.addWMTSLayer(
|
||||||
|
// "/PGIS_S_TileMapServer/Maps/XZDJ_SL/EzMap"
|
||||||
|
// ,
|
||||||
|
// {
|
||||||
|
// Service: "getImage",
|
||||||
|
// Type: "RGB",
|
||||||
|
// ZoomOffset: "0",
|
||||||
|
// V: "0.3",
|
||||||
|
// Zoom: "{z}",
|
||||||
|
// Row: "{y}",
|
||||||
|
// Col: "{x}"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// tileSize: 300
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
// zoomTarget.value = map.mapboxGLMap.getZoom();
|
||||||
|
// });
|
||||||
|
// mapUtil.value = new MapUtil(map);
|
||||||
mapUtil.value.Drawplot(); //初始化加载绘制工具
|
mapUtil.value.Drawplot(); //初始化加载绘制工具
|
||||||
|
|
||||||
// 设置地图中心点及图层
|
// 设置地图中心点及图层
|
||||||
@ -154,10 +184,6 @@ onMounted(() => {
|
|||||||
emitter.on("showSquire", (obj) => {
|
emitter.on("showSquire", (obj) => {
|
||||||
mapUtil.value.zdySquire(obj);
|
mapUtil.value.zdySquire(obj);
|
||||||
});
|
});
|
||||||
// 展示气泡框
|
|
||||||
emitter.on("makerPopup", (obj) => {
|
|
||||||
mapUtil.value.makerPopup(obj);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 绘制图形 - 回显区域
|
// 绘制图形 - 回显区域
|
||||||
emitter.on("drawShape", (res) => {
|
emitter.on("drawShape", (res) => {
|
||||||
@ -263,6 +289,7 @@ const mapSetLayer = (id, source) => {
|
|||||||
|
|
||||||
//获取地图绘制的数据
|
//获取地图绘制的数据
|
||||||
const resFun = (coord, type, flag, data) => {
|
const resFun = (coord, type, flag, data) => {
|
||||||
|
|
||||||
emitter.emit("coordString", {
|
emitter.emit("coordString", {
|
||||||
coord: coord,
|
coord: coord,
|
||||||
type: type,
|
type: type,
|
||||||
@ -276,6 +303,12 @@ const handleZoom = (val) => {
|
|||||||
map.mapboxGLMap.setZoom(val);
|
map.mapboxGLMap.setZoom(val);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
emitter.on("map-resize", () => {
|
||||||
|
if (map && map.mapboxGLMap) {
|
||||||
|
map.mapboxGLMap.resize();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// 是否打开或者关闭路况
|
// 是否打开或者关闭路况
|
||||||
const handleSwitch = (val) => {
|
const handleSwitch = (val) => {
|
||||||
if (val) {
|
if (val) {
|
||||||
@ -292,7 +325,6 @@ onUnmounted(() => {
|
|||||||
emitter.off("showPoint");
|
emitter.off("showPoint");
|
||||||
emitter.off("deletePointArea");
|
emitter.off("deletePointArea");
|
||||||
emitter.off("deletePointAreaOne");
|
emitter.off("deletePointAreaOne");
|
||||||
emitter.off("makerPopup");
|
|
||||||
emitter.off("drawShape");
|
emitter.off("drawShape");
|
||||||
emitter.off("echoPlane");
|
emitter.off("echoPlane");
|
||||||
emitter.off("removeEara");
|
emitter.off("removeEara");
|
||||||
@ -306,6 +338,7 @@ onUnmounted(() => {
|
|||||||
emitter.off("diffusionCircle");
|
emitter.off("diffusionCircle");
|
||||||
emitter.off("SsCircle");
|
emitter.off("SsCircle");
|
||||||
emitter.off("ClearssCircle");
|
emitter.off("ClearssCircle");
|
||||||
|
emitter.off("map-resize");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -328,35 +361,29 @@ onUnmounted(() => {
|
|||||||
right: 398px;
|
right: 398px;
|
||||||
bottom: 4px;
|
bottom: 4px;
|
||||||
z-index: 9;
|
z-index: 9;
|
||||||
|
|
||||||
.mapImageItem {
|
.mapImageItem {
|
||||||
border: 1px solid #08aae8;
|
border: 1px solid #08aae8;
|
||||||
background: rgb(9, 26, 70);
|
background: rgb(9, 26, 70);
|
||||||
|
& > img {
|
||||||
&>img {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
|
& > div {
|
||||||
&>div {
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -3px;
|
top: -3px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.zoomTargetBox {
|
.zoomTargetBox {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
margin-left: 23px;
|
margin-left: 23px;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-input-number__decrease,
|
::v-deep .el-input-number__decrease,
|
||||||
::v-deep .el-input-number__increase {
|
::v-deep .el-input-number__increase {
|
||||||
background: #133362;
|
background: #133362;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-input__inner {
|
::v-deep .el-input__inner {
|
||||||
background: #0c1641;
|
background: #0c1641;
|
||||||
}
|
}
|
||||||
553
src/components/aboutTable/Search copy.vue
Normal file
553
src/components/aboutTable/Search copy.vue
Normal file
@ -0,0 +1,553 @@
|
|||||||
|
<template>
|
||||||
|
<div v-loading="loadingPage" class="pageSearch searchBox main-container"
|
||||||
|
:style="`margin-bottom: ${marginBottom}px;background-color: ${backgroundColor}`">
|
||||||
|
<div class="filter-title">
|
||||||
|
<span class="filter-label"><el-icon>
|
||||||
|
<Filter />
|
||||||
|
</el-icon>筛选条件</span>
|
||||||
|
</div>
|
||||||
|
<div class="content-container">
|
||||||
|
<div class="box">
|
||||||
|
<div v-for="(item, index) in getArr" :key="index" class="item">
|
||||||
|
<div class="label" v-if="item.label">{{ item.label }}</div>
|
||||||
|
<!-- select -->
|
||||||
|
<el-select v-if="item.showType === 'select'" v-model="searchObj[item.prop]" :multiple="item.multiple"
|
||||||
|
:clearable="item.clearable" :filterable="item.filterable" :placeholder="item.placeholder" collapse-tags
|
||||||
|
collapse-tags-tooltip>
|
||||||
|
<el-option v-for="obj in getOptions[item.prop]" :key="obj.value" :label="obj.label || obj.lable"
|
||||||
|
:value="obj.value" />
|
||||||
|
</el-select>
|
||||||
|
<!-- input -->
|
||||||
|
<el-input v-else-if="item.showType === 'input'" class="input" v-model="searchObj[item.prop]"
|
||||||
|
:clearable="item.clearable" :placeholder="item.placeholder" />
|
||||||
|
<!-- input -->
|
||||||
|
<el-input v-else-if="item.showType === 'number'" class="input" v-model="searchObj[item.prop]"
|
||||||
|
:clearable="item.clearable" :placeholder="item.placeholder" type="number" />
|
||||||
|
<!-- 日期段选择器 -->
|
||||||
|
<el-date-picker v-else-if="item.showType === 'daterange'" v-model="searchObj[item.prop]" type="daterange"
|
||||||
|
unlink-panels :range-separator="item.rangeSeparator" :start-placeholder="item.startPlaceholder"
|
||||||
|
:end-placeholder="item.endPlaceholder" :shortcuts="item.shortcuts" :disabledDate="disabledDate"
|
||||||
|
value-format="YYYY-MM-DD" />
|
||||||
|
<el-date-picker v-else-if="item.showType === 'datetimerange'" v-model="searchObj[item.prop]"
|
||||||
|
type="datetimerange" unlink-panels :range-separator="item.rangeSeparator || '至'"
|
||||||
|
:start-placeholder="item.startPlaceholder || '开始日期'" :end-placeholder="item.endPlaceholder || '结束日期'"
|
||||||
|
:shortcuts="item.shortcuts" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||||
|
<el-date-picker v-else-if="item.showType === 'date'" v-model="searchObj[item.prop]" type="date"
|
||||||
|
:placeholder="item.placeholder" :disabled-date="disabledDate" :shortcuts="item.shortcuts"
|
||||||
|
value-format="YYYY-MM-DD">
|
||||||
|
</el-date-picker>
|
||||||
|
<el-date-picker v-else-if="item.showType === 'datetime'" v-model="searchObj[item.prop]" type="datetime"
|
||||||
|
:placeholder="item.placeholder" value-format="YYYY-MM-DD HH:mm:ss">
|
||||||
|
</el-date-picker>
|
||||||
|
|
||||||
|
<!-- checkbox -->
|
||||||
|
<template v-else-if="item.showType === 'department'">
|
||||||
|
<MOSTY.Department clearable v-model="searchObj[item.prop]" />
|
||||||
|
</template>
|
||||||
|
<!-- checkbox -->
|
||||||
|
<template v-else-if="item.showType === 'checkbox'">
|
||||||
|
<el-checkbox v-if="item.showSelectAll" v-model="item.checkAll" :indeterminate="item.isIndeterminate"
|
||||||
|
@change="
|
||||||
|
(val) => {
|
||||||
|
handleCheckAllChange(val, item);
|
||||||
|
}
|
||||||
|
">全选</el-checkbox>
|
||||||
|
<el-checkbox-group v-model="searchObj[item.prop]" @change="
|
||||||
|
(val) => {
|
||||||
|
handleCheckedCitiesChange(val, item);
|
||||||
|
}
|
||||||
|
">
|
||||||
|
<el-checkbox v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
</template>
|
||||||
|
<!-- radio -->
|
||||||
|
<el-radio-group v-else-if="item.showType === 'radio'" v-model="searchObj[item.prop]" @change="
|
||||||
|
(val) => {
|
||||||
|
handleRadioChange(val, item);
|
||||||
|
}
|
||||||
|
">
|
||||||
|
<el-radio v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
<!-- 级联选择 -->
|
||||||
|
<el-cascader v-else-if="item.showType === 'cascader'" v-model="searchObj[item.prop]" :props="item.props"
|
||||||
|
:show-all-levels="item.showAllLevels" :clearable="item.clearable" :options="getOptions[item.prop]"
|
||||||
|
:placeholder="item.placeholder" />
|
||||||
|
<div v-if="item.showType === 'Slot'">
|
||||||
|
<slot :name="item.prop"></slot>
|
||||||
|
</div>
|
||||||
|
<div v-if="item.showType === 'defaultSlot'">
|
||||||
|
<slot name="defaultSlot"></slot>
|
||||||
|
</div>
|
||||||
|
<div v-if="item.showType === 'nameSlot'">
|
||||||
|
<slot name="nameSlot"></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="button-container">
|
||||||
|
<div class="flex">
|
||||||
|
<el-button type="primary" @click="submit" size="small">确定</el-button>
|
||||||
|
<el-button type="" @click="reset" size="small">重置</el-button>
|
||||||
|
<slot> </slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
ref,
|
||||||
|
reactive,
|
||||||
|
watchEffect,
|
||||||
|
getCurrentInstance,
|
||||||
|
watch,
|
||||||
|
computed
|
||||||
|
} from "vue";
|
||||||
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const props = defineProps({
|
||||||
|
searchArr: {
|
||||||
|
type: Array,
|
||||||
|
default: () => {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
showType: "select",
|
||||||
|
prop: "selectKey",
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: "选择1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
defaultVal: "",
|
||||||
|
label: "选择",
|
||||||
|
dict: "" // 字典编码
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "input",
|
||||||
|
prop: "inputKey",
|
||||||
|
defaultVal: "",
|
||||||
|
label: "输入"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "department",
|
||||||
|
prop: "deptKey",
|
||||||
|
defaultVal: "",
|
||||||
|
label: "输入"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "daterange",
|
||||||
|
prop: "daterangeKey",
|
||||||
|
defaultVal: "",
|
||||||
|
label: "输入"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "date",
|
||||||
|
prop: "date",
|
||||||
|
defaultVal: ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "checkbox",
|
||||||
|
prop: "checkboxKey1",
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: "选择1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
defaultVal: ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "cascader",
|
||||||
|
prop: "cascaderKey",
|
||||||
|
label: "级联选择",
|
||||||
|
checkStrictly: false, //点击任意选中
|
||||||
|
defaultVal: ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "radio",
|
||||||
|
defaultVal: ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showType: "defaultTime",
|
||||||
|
prop: "timeField",
|
||||||
|
options: []
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
marginBottom: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
|
backgroundColor: {
|
||||||
|
type: String,
|
||||||
|
default: "rgb(255, 255, 255, 1)"
|
||||||
|
},
|
||||||
|
bool: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let loadingPage = ref(false);
|
||||||
|
const emit = defineEmits(["submit", "reset"]);
|
||||||
|
let searchObj = reactive({});
|
||||||
|
|
||||||
|
// select 的一些默认配置
|
||||||
|
const selectDefault = {
|
||||||
|
clearable: true, // 是否可以清空
|
||||||
|
filterable: true, // 是否可以筛选
|
||||||
|
multiple: false, // 是否多选
|
||||||
|
placeholder: "请选择"
|
||||||
|
};
|
||||||
|
// 重新定义下拉框的选项
|
||||||
|
let getOptions = reactive({});
|
||||||
|
// input 的一些默认配置
|
||||||
|
const inputDefault = {
|
||||||
|
clearable: true, // 是否可以清空
|
||||||
|
placeholder: "请输入"
|
||||||
|
};
|
||||||
|
const shortcuts = [
|
||||||
|
{
|
||||||
|
text: "今天",
|
||||||
|
value: () => {
|
||||||
|
const end = new Date();
|
||||||
|
const start = new Date();
|
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 0);
|
||||||
|
return [start, end];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "昨天",
|
||||||
|
value: () => {
|
||||||
|
const end = new Date();
|
||||||
|
const start = new Date();
|
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
|
||||||
|
end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
||||||
|
return [start, end];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "最近7天",
|
||||||
|
value: () => {
|
||||||
|
const end = new Date();
|
||||||
|
const start = new Date();
|
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
|
||||||
|
return [start, end];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "最近30天",
|
||||||
|
value: () => {
|
||||||
|
const end = new Date();
|
||||||
|
const start = new Date();
|
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
|
||||||
|
return [start, end];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "最近90天",
|
||||||
|
value: () => {
|
||||||
|
const end = new Date();
|
||||||
|
const start = new Date();
|
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
|
||||||
|
return [start, end];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
// daterange 的一些默认配置
|
||||||
|
const daterangeDefault = {
|
||||||
|
rangeSeparator: "至",
|
||||||
|
startPlaceholder: "开始日期",
|
||||||
|
endPlaceholder: "结束日期",
|
||||||
|
shortcuts: [], // 快捷选择
|
||||||
|
defaultShortcuts: true // 是否显示快捷选择 如果要自定义快捷选择传入一个shortcuts就可以了
|
||||||
|
};
|
||||||
|
// date 的一些默认配置
|
||||||
|
const defaultDate = {
|
||||||
|
clearable: true, // 是否可以清空
|
||||||
|
placeholder: "请输入",
|
||||||
|
shortcuts: [], // 快捷选择
|
||||||
|
defaultShortcuts: true // 是否显示快捷选择 如果要自定义快捷选择传入一个shortcuts就可以了
|
||||||
|
};
|
||||||
|
const dateShortcuts = [
|
||||||
|
{
|
||||||
|
text: "今天",
|
||||||
|
value: new Date()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "昨天",
|
||||||
|
value: () => {
|
||||||
|
const date = new Date();
|
||||||
|
date.setTime(date.getTime() - 3600 * 1000 * 24);
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "7天前",
|
||||||
|
value: () => {
|
||||||
|
const date = new Date();
|
||||||
|
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "30天前",
|
||||||
|
value: () => {
|
||||||
|
const date = new Date();
|
||||||
|
date.setTime(date.getTime() - 3600 * 1000 * 24 * 30);
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "90天前",
|
||||||
|
value: () => {
|
||||||
|
const date = new Date();
|
||||||
|
date.setTime(date.getTime() - 3600 * 1000 * 24 * 90);
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
// 设置不可选的日期
|
||||||
|
const disabledDate = (time) => {
|
||||||
|
return time.getTime() > Date.now();
|
||||||
|
};
|
||||||
|
// checkbox 的一些默认配置
|
||||||
|
const defaultCheckbox = reactive({
|
||||||
|
defaultVal: [],
|
||||||
|
checkAll: false, // 全选的值
|
||||||
|
isIndeterminate: false, // 控制全选按钮样式
|
||||||
|
showSelectAll: true // 是否显示全选
|
||||||
|
});
|
||||||
|
// 全选复选框的选中与不选中
|
||||||
|
const handleCheckAllChange = (val, obj) => {
|
||||||
|
searchObj[obj.prop] = val ? obj.checkboxValueArr : [];
|
||||||
|
obj.isIndeterminate = false;
|
||||||
|
};
|
||||||
|
// 单个复选框的选中与不选中
|
||||||
|
const handleCheckedCitiesChange = (value, obj) => {
|
||||||
|
const checkedCount = value.length;
|
||||||
|
obj.checkAll = checkedCount === obj.checkboxValueArr.length;
|
||||||
|
obj.isIndeterminate =
|
||||||
|
checkedCount > 0 && checkedCount < obj.checkboxValueArr.length;
|
||||||
|
};
|
||||||
|
//单选
|
||||||
|
const handleRadioChange = (val, obj) => {
|
||||||
|
console.log(val, obj);
|
||||||
|
};
|
||||||
|
// cascader 的一些默认配置
|
||||||
|
let defaultCascader = {
|
||||||
|
filterable: true, // 是否可以搜索
|
||||||
|
clearable: true, // 是否可以清空
|
||||||
|
placeholder: "请选择",
|
||||||
|
checkStrictly: true, // 控制是否父子联动(是否可以选择任意节点)
|
||||||
|
showAllLevels: false, // 是否显示完整路径
|
||||||
|
lazy: false, // 是否懒加载 当设置为false时就要传入options
|
||||||
|
portUrl: "", // 这里必须写 接口地址
|
||||||
|
props: {
|
||||||
|
label: "label",
|
||||||
|
value: "value",
|
||||||
|
children: "children"
|
||||||
|
},
|
||||||
|
options: []
|
||||||
|
};
|
||||||
|
// 在懒加载状态下cascader 的props的一些配置
|
||||||
|
const cascaderLazyProps = reactive({
|
||||||
|
value: "value",
|
||||||
|
label: "label",
|
||||||
|
lazy: false,
|
||||||
|
lazyLoad(node, resolve) {
|
||||||
|
// 这里要根据实际情况修改
|
||||||
|
const { level } = node;
|
||||||
|
let options = [];
|
||||||
|
switch (level) {
|
||||||
|
case 0:
|
||||||
|
options = [
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: "选择1",
|
||||||
|
leaf: false // 表示有下一级 必须有这个表示 不然获取不到值
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 2,
|
||||||
|
label: "选择2",
|
||||||
|
leaf: false // 表示有下一级
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 3,
|
||||||
|
label: "选择3",
|
||||||
|
leaf: false // 表示有下一级
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 4,
|
||||||
|
label: "选择4",
|
||||||
|
leaf: true // 表示没有下一级了
|
||||||
|
}
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
options = [
|
||||||
|
{
|
||||||
|
value: 11,
|
||||||
|
label: "选择1_1",
|
||||||
|
leaf: true // 表示没有下一级了
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 21,
|
||||||
|
label: "选择2_1",
|
||||||
|
leaf: true // 表示没有下一级了
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 31,
|
||||||
|
label: "选择3_1",
|
||||||
|
leaf: true // 表示没有下一级了
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 41,
|
||||||
|
label: "选择4_1",
|
||||||
|
leaf: true // 表示没有下一级了
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
resolve(options);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 获取到传过来的参数
|
||||||
|
let getArr = reactive([]);
|
||||||
|
const submit = () => {
|
||||||
|
emit("submit", searchObj);
|
||||||
|
};
|
||||||
|
const reset = () => {
|
||||||
|
getArr.forEach((item) => {
|
||||||
|
searchObj[item.prop] = item.defaultVal;
|
||||||
|
});
|
||||||
|
emit("reset", true);
|
||||||
|
emit("submit", searchObj);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 暴露searchObj给父组件
|
||||||
|
defineExpose({
|
||||||
|
searchObj,
|
||||||
|
submit,
|
||||||
|
reset
|
||||||
|
});
|
||||||
|
watchEffect(() => {
|
||||||
|
loadingPage.value = true;
|
||||||
|
let arr = JSON.parse(JSON.stringify(props.searchArr));
|
||||||
|
getArr = arr.map((item) => {
|
||||||
|
switch (item.showType) {
|
||||||
|
case "select":
|
||||||
|
item = { ...selectDefault, ...item };
|
||||||
|
item.options = reactive(item.options);
|
||||||
|
getOptions[item.prop] = item.options;
|
||||||
|
break;
|
||||||
|
case "input":
|
||||||
|
item = { ...inputDefault, ...item };
|
||||||
|
break;
|
||||||
|
case "daterange":
|
||||||
|
item = { ...daterangeDefault, ...item };
|
||||||
|
if (item.defaultShortcuts) item.shortcuts = shortcuts;
|
||||||
|
break;
|
||||||
|
case "date":
|
||||||
|
item = { ...defaultDate, ...item };
|
||||||
|
if (item.defaultShortcuts) {
|
||||||
|
item.shortcuts = dateShortcuts;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "checkbox":
|
||||||
|
item = reactive({ ...defaultCheckbox, ...item });
|
||||||
|
item.checkboxValueArr = item.options.map((obj) => {
|
||||||
|
return obj.value;
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "cascader":
|
||||||
|
item = { ...defaultCascader, ...item };
|
||||||
|
if (item.lazy) {
|
||||||
|
cascaderLazyProps.checkStrictly = item.checkStrictly;
|
||||||
|
item.props = { ...cascaderLazyProps, ...(item.props || {}) };
|
||||||
|
delete item.options;
|
||||||
|
} else {
|
||||||
|
item.props = {
|
||||||
|
...defaultCascader.props,
|
||||||
|
...(item.props || {}),
|
||||||
|
...{ checkStrictly: item.checkStrictly }
|
||||||
|
};
|
||||||
|
getOptions[item.prop] = reactive(item.options);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
loadingPage.value = false;
|
||||||
|
searchObj[item.prop] = item.defaultVal;
|
||||||
|
return item;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.pageSearch {
|
||||||
|
.main-container {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-container {
|
||||||
|
display: flex;
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
width: 100%;
|
||||||
|
background: linear-gradient(to right, #9ed7ff, #e6f0f8);
|
||||||
|
padding: 5px 15px;
|
||||||
|
|
||||||
|
.filter-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #000;
|
||||||
|
margin-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-line {
|
||||||
|
flex: 1;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #ccc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
display: flex;
|
||||||
|
margin-right: 12px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
margin: auto;
|
||||||
|
margin-right: 5px;
|
||||||
|
white-space: nowrap;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-date-editor .el-range-separator {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,51 +1,47 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading="loadingPage" class="pageSearch searchBox main-container"
|
<div v-loading="loadingPage" class="query-wrap">
|
||||||
:style="`margin-bottom: ${marginBottom}px;background-color: ${backgroundColor}`">
|
<div class="query-title">查询条件</div>
|
||||||
<div class="filter-title">
|
<div class="query-grid">
|
||||||
<span class="filter-label"><el-icon>
|
<div v-for="(item, index) in getArr" :key="index" class="query-cell">
|
||||||
<Filter />
|
<div class="cell-label">{{ item.label }}</div>
|
||||||
</el-icon>筛选条件</span>
|
<div class="cell-control">
|
||||||
</div>
|
|
||||||
<div class="content-container">
|
|
||||||
<div class="box">
|
|
||||||
<div v-for="(item, index) in getArr" :key="index" class="item">
|
|
||||||
<div class="label" v-if="item.label">{{ item.label }}</div>
|
|
||||||
<!-- select -->
|
<!-- select -->
|
||||||
<el-select v-if="item.showType === 'select'" v-model="searchObj[item.prop]" :multiple="item.multiple"
|
<el-select v-if="item.showType === 'select'" v-model="searchObj[item.prop]" :multiple="item.multiple"
|
||||||
:clearable="item.clearable" :filterable="item.filterable" :placeholder="item.placeholder" collapse-tags
|
:clearable="item.clearable" :filterable="item.filterable" :placeholder="item.placeholder" collapse-tags
|
||||||
collapse-tags-tooltip>
|
collapse-tags-tooltip class="control-select">
|
||||||
<el-option v-for="obj in getOptions[item.prop]" :key="obj.value" :label="obj.label || obj.lable"
|
<el-option v-for="obj in getOptions[item.prop]" :key="obj.value" :label="obj.label || obj.lable"
|
||||||
:value="obj.value" />
|
:value="obj.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- input -->
|
<!-- input -->
|
||||||
<el-input v-else-if="item.showType === 'input'" class="input" v-model="searchObj[item.prop]"
|
<el-input v-else-if="item.showType === 'input'" class="control-input" v-model="searchObj[item.prop]"
|
||||||
:clearable="item.clearable" :placeholder="item.placeholder" />
|
:clearable="item.clearable" :placeholder="item.placeholder" />
|
||||||
<!-- input -->
|
<!-- input -->
|
||||||
<el-input v-else-if="item.showType === 'number'" class="input" v-model="searchObj[item.prop]"
|
<el-input v-else-if="item.showType === 'number'" class="control-input" v-model="searchObj[item.prop]"
|
||||||
:clearable="item.clearable" :placeholder="item.placeholder" type="number" />
|
:clearable="item.clearable" :placeholder="item.placeholder" type="number" />
|
||||||
<!-- 日期段选择器 -->
|
<!-- 日期段选择器 -->
|
||||||
<el-date-picker v-else-if="item.showType === 'daterange'" v-model="searchObj[item.prop]" type="daterange"
|
<el-date-picker v-else-if="item.showType === 'daterange'" v-model="searchObj[item.prop]" type="daterange"
|
||||||
unlink-panels :range-separator="item.rangeSeparator" :start-placeholder="item.startPlaceholder"
|
unlink-panels :range-separator="item.rangeSeparator" :start-placeholder="item.startPlaceholder"
|
||||||
:end-placeholder="item.endPlaceholder" :shortcuts="item.shortcuts" :disabledDate="disabledDate"
|
:end-placeholder="item.endPlaceholder" :shortcuts="item.shortcuts" :disabledDate="disabledDate"
|
||||||
value-format="YYYY-MM-DD" />
|
value-format="YYYY-MM-DD" class="control-date" />
|
||||||
<el-date-picker v-else-if="item.showType === 'datetimerange'" v-model="searchObj[item.prop]"
|
<el-date-picker v-else-if="item.showType === 'datetimerange'" v-model="searchObj[item.prop]"
|
||||||
type="datetimerange" unlink-panels :range-separator="item.rangeSeparator || '至'"
|
type="datetimerange" unlink-panels :range-separator="item.rangeSeparator || '至'"
|
||||||
:start-placeholder="item.startPlaceholder || '开始日期'" :end-placeholder="item.endPlaceholder || '结束日期'"
|
:start-placeholder="item.startPlaceholder || '开始日期'" :end-placeholder="item.endPlaceholder || '结束日期'"
|
||||||
:shortcuts="item.shortcuts" value-format="YYYY-MM-DD HH:mm:ss" />
|
:shortcuts="item.shortcuts" value-format="YYYY-MM-DD HH:mm:ss" class="control-date" />
|
||||||
<el-date-picker v-else-if="item.showType === 'date'" v-model="searchObj[item.prop]" type="date"
|
<el-date-picker v-else-if="item.showType === 'date'" v-model="searchObj[item.prop]" type="date"
|
||||||
:placeholder="item.placeholder" :disabled-date="disabledDate" :shortcuts="item.shortcuts"
|
:placeholder="item.placeholder" :disabled-date="disabledDate" :shortcuts="item.shortcuts"
|
||||||
value-format="YYYY-MM-DD">
|
value-format="YYYY-MM-DD" class="control-date">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
<el-date-picker v-else-if="item.showType === 'datetime'" v-model="searchObj[item.prop]" type="datetime"
|
<el-date-picker v-else-if="item.showType === 'datetime'" v-model="searchObj[item.prop]" type="datetime"
|
||||||
:placeholder="item.placeholder" value-format="YYYY-MM-DD HH:mm:ss">
|
:placeholder="item.placeholder" value-format="YYYY-MM-DD HH:mm:ss" class="control-date">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
|
|
||||||
<!-- checkbox -->
|
<!-- checkbox -->
|
||||||
<template v-else-if="item.showType === 'department'">
|
<template v-else-if="item.showType === 'department'">
|
||||||
<MOSTY.Department clearable v-model="searchObj[item.prop]" />
|
<MOSTY.Department clearable v-model="searchObj[item.prop]" class="control-select" />
|
||||||
</template>
|
</template>
|
||||||
<!-- checkbox -->
|
<!-- checkbox -->
|
||||||
<template v-else-if="item.showType === 'checkbox'">
|
<template v-else-if="item.showType === 'checkbox'">
|
||||||
|
<div class="checkbox-wrap">
|
||||||
<el-checkbox v-if="item.showSelectAll" v-model="item.checkAll" :indeterminate="item.isIndeterminate"
|
<el-checkbox v-if="item.showSelectAll" v-model="item.checkAll" :indeterminate="item.isIndeterminate"
|
||||||
@change="
|
@change="
|
||||||
(val) => {
|
(val) => {
|
||||||
@ -56,22 +52,23 @@
|
|||||||
(val) => {
|
(val) => {
|
||||||
handleCheckedCitiesChange(val, item);
|
handleCheckedCitiesChange(val, item);
|
||||||
}
|
}
|
||||||
">
|
" class="checkbox-group">
|
||||||
<el-checkbox v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-checkbox>
|
<el-checkbox v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<!-- radio -->
|
<!-- radio -->
|
||||||
<el-radio-group v-else-if="item.showType === 'radio'" v-model="searchObj[item.prop]" @change="
|
<el-radio-group v-else-if="item.showType === 'radio'" v-model="searchObj[item.prop]" @change="
|
||||||
(val) => {
|
(val) => {
|
||||||
handleRadioChange(val, item);
|
handleRadioChange(val, item);
|
||||||
}
|
}
|
||||||
">
|
" class="radio-group">
|
||||||
<el-radio v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-radio>
|
<el-radio v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<!-- 级联选择 -->
|
<!-- 级联选择 -->
|
||||||
<el-cascader v-else-if="item.showType === 'cascader'" v-model="searchObj[item.prop]" :props="item.props"
|
<el-cascader v-else-if="item.showType === 'cascader'" v-model="searchObj[item.prop]" :props="item.props"
|
||||||
:show-all-levels="item.showAllLevels" :clearable="item.clearable" :options="getOptions[item.prop]"
|
:show-all-levels="item.showAllLevels" :clearable="item.clearable" :options="getOptions[item.prop]"
|
||||||
:placeholder="item.placeholder" />
|
:placeholder="item.placeholder" class="control-select" />
|
||||||
<div v-if="item.showType === 'Slot'">
|
<div v-if="item.showType === 'Slot'">
|
||||||
<slot :name="item.prop"></slot>
|
<slot :name="item.prop"></slot>
|
||||||
</div>
|
</div>
|
||||||
@ -82,16 +79,16 @@
|
|||||||
<slot name="nameSlot"></slot>
|
<slot name="nameSlot"></slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="button-container">
|
</div>
|
||||||
<div class="flex">
|
<div class="query-action">
|
||||||
<el-button type="primary" @click="submit" size="small">确定</el-button>
|
<div>
|
||||||
<el-button type="" @click="reset" size="small">重置</el-button>
|
|
||||||
<slot> </slot>
|
<slot> </slot>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button type="primary" @click="submit" size="small">查询</el-button>
|
||||||
|
<el-button type="default" @click="reset" size="small">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -485,69 +482,169 @@ watchEffect(() => {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped lang="scss">
|
||||||
.pageSearch {
|
.query-wrap {
|
||||||
.main-container {
|
border: 1px solid #b8d3ff;
|
||||||
padding: 0;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-container {
|
.query-title {
|
||||||
display: flex;
|
height: 32px;
|
||||||
padding: 0 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-container {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column-reverse;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filter-title {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
width: 100%;
|
|
||||||
background: linear-gradient(to right, #9ed7ff, #e6f0f8);
|
background: linear-gradient(to right, #9ed7ff, #e6f0f8);
|
||||||
padding: 5px 15px;
|
line-height: 32px;
|
||||||
|
padding-left: 10px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #0d2148;
|
||||||
|
border-bottom: 1px solid #b8d3ff;
|
||||||
|
}
|
||||||
|
|
||||||
.filter-label {
|
.query-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-cell {
|
||||||
|
display: flex;
|
||||||
|
min-height: 40px;
|
||||||
|
border-right: 1px solid #b8d3ff;
|
||||||
|
border-bottom: 1px solid #b8d3ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-cell:nth-child(4n) {
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell-label {
|
||||||
|
width: 130px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border-right: 1px solid #b8d3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #0d2148;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-weight: bold;
|
justify-content: center;
|
||||||
color: #000;
|
|
||||||
margin-right: 10px;
|
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-line {
|
.cell-control {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 1px;
|
min-width: 0;
|
||||||
background-color: #ccc;
|
padding: 4px 8px;
|
||||||
}
|
display: flex;
|
||||||
}
|
align-items: center;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
.box {
|
.cell-control.is-checkbox {
|
||||||
flex: 1;
|
justify-content: center;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-input,
|
||||||
|
.control-select,
|
||||||
|
.control-date {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.control-input .el-input__wrapper),
|
||||||
|
:deep(.control-select .el-select__wrapper),
|
||||||
|
:deep(.control-date .el-input__wrapper) {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-height: 28px;
|
||||||
|
border-radius: 0;
|
||||||
|
box-shadow: 0 0 0 1px #b8d3ff inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.control-date.el-date-editor) {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.control-date.el-date-editor .el-range-input) {
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.control-input .el-input__inner),
|
||||||
|
:deep(.control-select .el-select__placeholder),
|
||||||
|
:deep(.control-date .el-input__inner) {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #0d2148;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.control-date .el-range-input) {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #0d2148;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.control-date .el-range__icon),
|
||||||
|
:deep(.control-date .el-range__close-icon) {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-wrap {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
.item {
|
|
||||||
display: flex;
|
|
||||||
margin-right: 12px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label {
|
|
||||||
margin: auto;
|
|
||||||
margin-right: 5px;
|
|
||||||
white-space: nowrap;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-date-editor .el-range-separator {
|
.radio-group {
|
||||||
color: #333;
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.checkbox-wrap .el-checkbox) {
|
||||||
|
margin-right: 0;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.checkbox-wrap .el-checkbox__inner) {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-action {
|
||||||
|
height: 36px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-button--primary) {
|
||||||
|
background-color: #0f5bbd;
|
||||||
|
border-color: #0f5bbd;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-button--primary:hover) {
|
||||||
|
background-color: #1a73e8;
|
||||||
|
border-color: #1a73e8;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-button--default) {
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-color: #dcdfe6;
|
||||||
|
color: #606266;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-button--default:hover) {
|
||||||
|
color: #409eff;
|
||||||
|
border-color: #c6e2ff;
|
||||||
|
background-color: #ecf5ff;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -26,6 +26,7 @@ const checkAll = ref(false);
|
|||||||
const isIndeterminate = ref(true);
|
const isIndeterminate = ref(true);
|
||||||
const hasChecked = ref([]); //已经全选的数据
|
const hasChecked = ref([]); //已经全选的数据
|
||||||
const checkedList = ref([]);
|
const checkedList = ref([]);
|
||||||
|
const isInit = ref(true); // 标记是否为初始化
|
||||||
watch(
|
watch(
|
||||||
() => props.data,
|
() => props.data,
|
||||||
(val) => {
|
(val) => {
|
||||||
@ -38,16 +39,28 @@ watch(
|
|||||||
immediate: true
|
immediate: true
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
// 监听hasChecked变化,初始化完成后才触发changeData
|
||||||
|
watch(
|
||||||
|
hasChecked,
|
||||||
|
(val) => {
|
||||||
|
if (isInit.value) {
|
||||||
|
isInit.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emits("changeData", val);
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
// 全选
|
// 全选
|
||||||
function handleCheckAll(val) {
|
function handleCheckAll(val) {
|
||||||
hasChecked.value = val ? checkedList.value : [];
|
hasChecked.value = val ? checkedList.value : [];
|
||||||
isIndeterminate.value = false;
|
isIndeterminate.value = false;
|
||||||
emits("changeData", hasChecked.value);
|
// emits 由 watch 处理
|
||||||
}
|
}
|
||||||
// 处理多选框改变
|
// 处理多选框改变
|
||||||
function handleCheckedChange(val) {
|
function handleCheckedChange(val) {
|
||||||
handleChange(val);////判断是否全选
|
handleChange(val);////判断是否全选
|
||||||
emits("changeData", hasChecked.value);
|
// emits 由 watch 处理
|
||||||
}
|
}
|
||||||
//判断是否全选
|
//判断是否全选
|
||||||
function handleChange(val) {
|
function handleChange(val) {
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import emitter from "@/utils/eventBus.js"; // 导入事件总线
|
|||||||
import { qcckGet } from '@/api/qcckApi'
|
import { qcckGet } from '@/api/qcckApi'
|
||||||
import Item from './item.vue'
|
import Item from './item.vue'
|
||||||
import { AudioPlayerClass } from '@/utils/audioPlayer.js'
|
import { AudioPlayerClass } from '@/utils/audioPlayer.js'
|
||||||
import {getItem} from '@/utils/storage.js'
|
import { getItem } from '@/utils/storage.js'
|
||||||
const dataList = ref([])
|
const dataList = ref([])
|
||||||
const timekeeping = ref(null)
|
const timekeeping = ref(null)
|
||||||
const countdown = ref(0) // 倒计时时间(秒)
|
const countdown = ref(0) // 倒计时时间(秒)
|
||||||
@ -33,7 +33,8 @@ const audioPlayers = ref({
|
|||||||
'02': null, // 信息上报
|
'02': null, // 信息上报
|
||||||
'03': null, // 研判审批
|
'03': null, // 研判审批
|
||||||
'04': null, // 研判指令
|
'04': null, // 研判指令
|
||||||
'05': null // 线索下发
|
'05': null, // 线索下发,
|
||||||
|
'06': null, // 警情监测
|
||||||
})
|
})
|
||||||
|
|
||||||
// 音频文件路径映射
|
// 音频文件路径映射
|
||||||
@ -41,7 +42,8 @@ const audioPaths = {
|
|||||||
'02': require('@/assets/images/cjyp.mp3'),
|
'02': require('@/assets/images/cjyp.mp3'),
|
||||||
'03': require('@/assets/images/ypbg.mp3'),
|
'03': require('@/assets/images/ypbg.mp3'),
|
||||||
'04': require('@/assets/images/ypzl.mp3'),
|
'04': require('@/assets/images/ypzl.mp3'),
|
||||||
'05': require('@/assets/images/xsyp.mp3')
|
'05': require('@/assets/images/xsyp.mp3'),
|
||||||
|
'06': require('@/assets/images/jqjc.mp3')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化音频播放器
|
// 初始化音频播放器
|
||||||
@ -119,14 +121,14 @@ const dataModel = () => {
|
|||||||
if (yjmasg.length > 0) {
|
if (yjmasg.length > 0) {
|
||||||
emitter.emit('openYp', yjmasg[0].obj); // 触发音频播放
|
emitter.emit('openYp', yjmasg[0].obj); // 触发音频播放
|
||||||
} else {
|
} else {
|
||||||
const data=res.filter(item=>item.sfzList.includes(idEntityCard.value))
|
const data = res.filter(item => item.sfzList.includes(idEntityCard.value))
|
||||||
const infoMasge =data.map(item => {
|
const infoMasge = data.map(item => {
|
||||||
return {
|
return {
|
||||||
...item.obj,
|
...item.obj,
|
||||||
typeMasgeLx: item.type
|
typeMasgeLx: item.type
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log(infoMasge);
|
console.log(infoMasge,"xxxxxxxxxxxx");
|
||||||
emitter.emit('webSocketMessage', infoMasge)
|
emitter.emit('webSocketMessage', infoMasge)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,14 @@
|
|||||||
<div class="item-message" v-html="item.zlnr"></div>
|
<div class="item-message" v-html="item.zlnr"></div>
|
||||||
<div class="item-time">{{ item.xtCjsj || '' }}</div>
|
<div class="item-time">{{ item.xtCjsj || '' }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="test-item" v-if="item.typeMasgeLx == '06'" @click="goDetail(item.id, item.typeMasgeLx)">
|
||||||
|
<div class="item-header">
|
||||||
|
<div class="item-title">{{ item.gxdwmc || '' }}</div>
|
||||||
|
<div class="item-type">{{ informationMap[item.typeMasgeLx] }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="item-message" >{{ item.bcjjnr }}</div>
|
||||||
|
<div class="item-time">{{ item.bjsj || '' }}</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
@ -66,6 +74,9 @@ const goDetail = (id, lx) => {
|
|||||||
case '05':
|
case '05':
|
||||||
path = '/InstructionInformation'
|
path = '/InstructionInformation'
|
||||||
break;
|
break;
|
||||||
|
case '06':
|
||||||
|
path = '/policeReport'
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
router.push({
|
router.push({
|
||||||
path: path,
|
path: path,
|
||||||
|
|||||||
83
src/layout/components/SideBar/SideBarMenu copy 2.vue
Normal file
83
src/layout/components/SideBar/SideBarMenu copy 2.vue
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<template>
|
||||||
|
<el-menu class="el-menu-vertical-demo" :collapse="!$store.getters.sidebarOpened" :default-active="activeMenu"
|
||||||
|
:unique-opened="true" background-color="rgba(0, 0, 0, 0)" :text-color="$store.getters.cssVar.menuText"
|
||||||
|
:active-text-color="$store.getters.cssVar.menuActiveText" router>
|
||||||
|
<SideBarItem v-for="item in routes" :key="item.path" :route="item"></SideBarItem>
|
||||||
|
</el-menu>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { computed } from "vue";
|
||||||
|
import { useRouter, useRoute } from "vue-router";
|
||||||
|
import { useStore } from "vuex";
|
||||||
|
import { filterRoutes, generateMenus } from "@/utils/route";
|
||||||
|
import { getItem } from "@/utils/storage";
|
||||||
|
import SideBarItem from "./SideBarItem.vue";
|
||||||
|
const store = useStore();
|
||||||
|
const router = useRouter();
|
||||||
|
const EXCLUDE_NAMES = ["warningLists", "behaviorWarnings", "identityWarnings", "combinedWarnings", "DeploymentAreas", "mpvPeos", "myControls"];
|
||||||
|
const filterRoutesByMenusPermission = (routes, menusSet) => {
|
||||||
|
return routes.reduce((result, route) => {
|
||||||
|
const children = Array.isArray(route.children) ? filterRoutesByMenusPermission(route.children, menusSet) : [];
|
||||||
|
const routeName = route.name ? `${route.name}` : "";
|
||||||
|
const selfMatched = routeName && menusSet.has(routeName);
|
||||||
|
if (selfMatched || children.length > 0) {
|
||||||
|
result.push({ ...route, children });
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}, []);
|
||||||
|
};
|
||||||
|
const routes = computed(() => {
|
||||||
|
const fRoutes = filterRoutes(router.getRoutes());
|
||||||
|
const data = fRoutes.filter((item) => !EXCLUDE_NAMES.includes(item.name));
|
||||||
|
const menusPermission = getItem("menusPermission");
|
||||||
|
const menusSet = new Set(Array.isArray(menusPermission) ? menusPermission.map((item) => `${item}`) : []);
|
||||||
|
const permissionFiltered = menusSet.size ? filterRoutesByMenusPermission(data, menusSet) : data;
|
||||||
|
return generateMenus(permissionFiltered);
|
||||||
|
});
|
||||||
|
if (!store.getters.token) {
|
||||||
|
router.push("/login");
|
||||||
|
}
|
||||||
|
if (router.getRoutes().length <= 7 && store.state.permission.routeReady <= 1) {
|
||||||
|
store.commit("user/setIsReady", {});
|
||||||
|
setTimeout(() => {
|
||||||
|
router.go(0);
|
||||||
|
}, 200);
|
||||||
|
}
|
||||||
|
//默认激活项
|
||||||
|
const route = useRoute();
|
||||||
|
const activeMenu = computed(() => {
|
||||||
|
const { path } = route;
|
||||||
|
return path;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
::v-deep .el-menu-item {
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-sub-menu__title {
|
||||||
|
height: 48px;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
background-color: rgb(20, 46, 78);
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-menu-item.is-active {
|
||||||
|
background-image: linear-gradient(to right, #2356d4 0%, #8efbde 100%);
|
||||||
|
margin: 0 14px;
|
||||||
|
border-radius: 4px;
|
||||||
|
// padding-left: 46px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-sub-menu .el-menu-item {
|
||||||
|
height: 48px;
|
||||||
|
line-height: 48px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.el-menu-vertical-demo:not(.el-menu--collapse) {
|
||||||
|
width: 240px;
|
||||||
|
min-height: 400px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
81
src/layout/components/SideBar/SideBarMenu copy.vue
Normal file
81
src/layout/components/SideBar/SideBarMenu copy.vue
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<template>
|
||||||
|
<el-menu class="el-menu-vertical-demo" :collapse="!$store.getters.sidebarOpened" :default-active="activeMenu"
|
||||||
|
:unique-opened="true" background-color="rgba(0, 0, 0, 0)" :text-color="$store.getters.cssVar.menuText"
|
||||||
|
:active-text-color="$store.getters.cssVar.menuActiveText" router>
|
||||||
|
<SideBarItem v-for="item in routes" :key="item.path" :route="item"></SideBarItem>
|
||||||
|
</el-menu>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { computed } from "vue";
|
||||||
|
import { useRouter, useRoute } from "vue-router";
|
||||||
|
import { useStore } from "vuex";
|
||||||
|
import { filterRoutes, generateMenus } from "@/utils/route";
|
||||||
|
import SideBarItem from "./SideBarItem.vue";
|
||||||
|
const store = useStore();
|
||||||
|
const router = useRouter();
|
||||||
|
const routes = computed(() => {
|
||||||
|
const fRoutes = filterRoutes(router.getRoutes());
|
||||||
|
|
||||||
|
const data = fRoutes.filter(item => {
|
||||||
|
if (item.name != "warningLists"
|
||||||
|
&& item.name != "behaviorWarnings"
|
||||||
|
&& item.name != "identityWarnings"
|
||||||
|
&& item.name != "combinedWarnings"
|
||||||
|
&& item.name != "DeploymentAreas"
|
||||||
|
&& item.name != "mpvPeos"
|
||||||
|
&& item.name != "myControls") {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
return generateMenus(data);
|
||||||
|
});
|
||||||
|
if (!store.getters.token) {
|
||||||
|
router.push("/login");
|
||||||
|
}
|
||||||
|
if (router.getRoutes().length <= 7 && store.state.permission.routeReady <= 1) {
|
||||||
|
store.commit("user/setIsReady", {});
|
||||||
|
setTimeout(() => {
|
||||||
|
router.go(0);
|
||||||
|
}, 200);
|
||||||
|
}
|
||||||
|
//默认激活项
|
||||||
|
const route = useRoute();
|
||||||
|
const activeMenu = computed(() => {
|
||||||
|
const { path } = route;
|
||||||
|
return path;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
::v-deep .el-menu-item {
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-sub-menu__title {
|
||||||
|
height: 48px;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
background-color: rgb(20, 46, 78);
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-menu-item.is-active {
|
||||||
|
background-image: linear-gradient(to right, #2356d4 0%, #8efbde 100%);
|
||||||
|
margin: 0 14px;
|
||||||
|
border-radius: 4px;
|
||||||
|
// padding-left: 46px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-sub-menu .el-menu-item {
|
||||||
|
height: 48px;
|
||||||
|
line-height: 48px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.el-menu-vertical-demo:not(.el-menu--collapse) {
|
||||||
|
width: 240px;
|
||||||
|
min-height: 400px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -16,6 +16,7 @@ const store = useStore();
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const routes = computed(() => {
|
const routes = computed(() => {
|
||||||
const fRoutes = filterRoutes(router.getRoutes());
|
const fRoutes = filterRoutes(router.getRoutes());
|
||||||
|
|
||||||
const data = fRoutes.filter(item => {
|
const data = fRoutes.filter(item => {
|
||||||
if (item.name != "warningLists"
|
if (item.name != "warningLists"
|
||||||
&& item.name != "behaviorWarnings"
|
&& item.name != "behaviorWarnings"
|
||||||
@ -28,6 +29,8 @@ const routes = computed(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
return generateMenus(data);
|
return generateMenus(data);
|
||||||
});
|
});
|
||||||
if (!store.getters.token) {
|
if (!store.getters.token) {
|
||||||
|
|||||||
@ -172,6 +172,30 @@ export const publicRoutes = [
|
|||||||
meta: { title: "预警列表", icon: "article-create" },
|
meta: { title: "预警列表", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/YjData/index.vue"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/YjData/index.vue"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/jqjc",
|
||||||
|
name: "jqjc",
|
||||||
|
meta: { title: "警情监测", icon: "article-create" },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "/policeReport",
|
||||||
|
name: "policeReport",
|
||||||
|
component: () => import("@/views/backOfficeSystem/policeReport/index.vue"),
|
||||||
|
meta: {
|
||||||
|
title: "警情信息",
|
||||||
|
icon: "article-create"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
path: "/policeSituations",
|
||||||
|
name: "policeSituations",
|
||||||
|
component: () => import("@/views/backOfficeSystem/PoliceIncidentMonitoring/index.vue"),
|
||||||
|
meta: {
|
||||||
|
title: "警情预警监测",
|
||||||
|
icon: "article-create"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
// {
|
// {
|
||||||
// path: "/fouColorWarning",
|
// path: "/fouColorWarning",
|
||||||
// name: "fouColorWarning",
|
// name: "fouColorWarning",
|
||||||
@ -480,15 +504,7 @@ export const publicRoutes = [
|
|||||||
icon: "article-ranking"
|
icon: "article-ranking"
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
|
||||||
path: "/policeReport",
|
|
||||||
name: "policeReport",
|
|
||||||
component: () => import("@/views/backOfficeSystem/policeReport/index.vue"),
|
|
||||||
meta: {
|
|
||||||
title: "警情管理",
|
|
||||||
icon: "article-create"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: "/policeManagement",
|
path: "/policeManagement",
|
||||||
name: "policeManagement",
|
name: "policeManagement",
|
||||||
@ -1266,8 +1282,6 @@ const router = createRouter({
|
|||||||
//初始化路由表
|
//初始化路由表
|
||||||
export function resetRouter() {
|
export function resetRouter() {
|
||||||
if (store.getters?.routeReady && store.getters?.userInfo?.permission?.menus) {
|
if (store.getters?.routeReady && store.getters?.userInfo?.permission?.menus) {
|
||||||
|
|
||||||
|
|
||||||
const menus = store.getters.userInfo.permission.menus;
|
const menus = store.getters.userInfo.permission.menus;
|
||||||
menus.forEach((menu) => {
|
menus.forEach((menu) => {
|
||||||
router.removeRoute(menu);
|
router.removeRoute(menu);
|
||||||
|
|||||||
@ -84,7 +84,6 @@ export default {
|
|||||||
*/
|
*/
|
||||||
login(ctx, userInfo) {
|
login(ctx, userInfo) {
|
||||||
const { userName, password, kaptcha } = userInfo;
|
const { userName, password, kaptcha } = userInfo;
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
login({ userName, password: Base64.encode(password), kaptcha }).then((data) => {
|
login({ userName, password: Base64.encode(password), kaptcha }).then((data) => {
|
||||||
if (data.deptList.length === 1) {
|
if (data.deptList.length === 1) {
|
||||||
|
|||||||
@ -4,13 +4,8 @@
|
|||||||
<div ref="searchBox">
|
<div ref="searchBox">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
||||||
</div>
|
</div>
|
||||||
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add')">新增</el-button>
|
|
||||||
</template>
|
|
||||||
</PageTitle> -->
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
|
|||||||
@ -2,16 +2,13 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox">
|
<div ref="searchBox">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add')">新增</el-button>
|
<el-button type="primary" size="small" @click="addEdit('add')">新增</el-button>
|
||||||
<!-- <el-button type="danger" size="small" @click="handleRow()">批量删除</el-button> -->
|
</Search>
|
||||||
</template>
|
</div>
|
||||||
</PageTitle>
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -273,7 +270,7 @@ const deleteRow = (id) =>{
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 240;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,17 +2,12 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox">
|
<div ref="searchBox">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add')">新增</el-button>
|
<el-button type="primary" size="small" @click="addEdit('add')">新增</el-button>
|
||||||
<!-- <el-button type="danger" size="small" @click="handleRow()">批量删除</el-button> -->
|
</Search>
|
||||||
</template>
|
</div>
|
||||||
</PageTitle>
|
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData">
|
@chooseData="chooseData">
|
||||||
@ -263,7 +258,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,44 +2,18 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
|
|
||||||
<template #reference>
|
|
||||||
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
|
|
||||||
</template>
|
|
||||||
<div class="flex just-center">
|
|
||||||
<el-button size="small" type="primary" v-for="it in D_GS_BK_SQLX" :key="it.dm"
|
|
||||||
@click="handleApplication(it)">{{ it.zdmc }}</el-button>
|
|
||||||
</div>
|
|
||||||
</el-popover> -->
|
|
||||||
<!-- <el-popover placement="bottom" :visible="visiblefp" :width="400" trigger="click">
|
|
||||||
<template #reference>
|
|
||||||
<el-button size="small" type="primary" @click="(visiblefp = !visiblefp), (visible = false)">指定分配</el-button>
|
|
||||||
</template>
|
|
||||||
<div>
|
|
||||||
<el-input readonly v-model="obj.fpmc" @click="chooseUserVisible = true" placeholder="请选择民警"></el-input>
|
|
||||||
<div class="flex just-center mt10">
|
|
||||||
<el-button @click="(visiblefp = false), (obj = {})" size="small">取消</el-button>
|
|
||||||
<el-button type="primary" @click="handlefp" size="small">分配</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-popover> -->
|
|
||||||
<!-- <el-button size="small" type="primary" @click="handleZxs">转线索</el-button> -->
|
|
||||||
<!-- <el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
|
|
||||||
<!-- <el-button size="small" type="primary">导入</el-button> -->
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData">
|
@chooseData="chooseData">
|
||||||
@ -328,7 +302,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,10 +3,17 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
|
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
||||||
|
<el-icon style="vertical-align: middle">
|
||||||
|
<CirclePlus />
|
||||||
|
</el-icon>
|
||||||
|
<span style="vertical-align: middle">新增</span>
|
||||||
|
</el-button>
|
||||||
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
<template #left>
|
<template #left> -->
|
||||||
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
|
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
|
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
|
||||||
@ -30,16 +37,11 @@
|
|||||||
</el-popover>
|
</el-popover>
|
||||||
<el-button size="small" type="primary" @click="handleZxs">转线索</el-button>
|
<el-button size="small" type="primary" @click="handleZxs">转线索</el-button>
|
||||||
<el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
|
<el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
|
||||||
<el-icon style="vertical-align: middle">
|
<!-- </template>
|
||||||
<CirclePlus />
|
</PageTitle> -->
|
||||||
</el-icon>
|
|
||||||
<span style="vertical-align: middle">新增</span>
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</PageTitle>
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData">
|
@chooseData="chooseData">
|
||||||
@ -315,7 +317,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,46 +3,17 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
|
|
||||||
<template #reference>
|
|
||||||
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
<div class="flex just-center">
|
|
||||||
<el-button size="small" type="primary" v-for="it in D_GS_BK_SQLX" :key="it.dm"
|
|
||||||
@click="handleApplication(it)">{{ it.zdmc }}</el-button>
|
|
||||||
</div>
|
|
||||||
</el-popover>
|
|
||||||
<el-popover placement="bottom" :visible="visiblefp" :width="400" trigger="click">
|
|
||||||
<template #reference>
|
|
||||||
<el-button size="small" type="primary" @click="(visiblefp = !visiblefp), (visible = false)">指定分配</el-button>
|
|
||||||
</template>
|
|
||||||
<div>
|
|
||||||
<el-input readonly v-model="obj.fpmc" @click="chooseUserVisible = true" placeholder="请选择民警"></el-input>
|
|
||||||
<div class="flex just-center mt10">
|
|
||||||
<el-button @click="(visiblefp = false), (obj = {})" size="small">取消</el-button>
|
|
||||||
<el-button type="primary" @click="handlefp" size="small">分配</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-popover>
|
|
||||||
|
|
||||||
<el-button size="small" type="primary" @click="handleZxs">转线索</el-button>
|
|
||||||
<el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
|
|
||||||
<!-- <el-button size="small" type="primary" >导入</el-button> -->
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', null)">
|
<el-button type="primary" size="small" @click="addEdit('add', null)">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData" fixed="right">
|
@chooseData="chooseData" fixed="right">
|
||||||
@ -317,7 +288,7 @@ const deleteRow = (id) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,10 +3,17 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
|
<el-button type="primary" size="small" @click="addEdit('add', null)">
|
||||||
|
<el-icon style="vertical-align: middle">
|
||||||
|
<CirclePlus />
|
||||||
|
</el-icon>
|
||||||
|
<span style="vertical-align: middle">新增</span>
|
||||||
|
</el-button>
|
||||||
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
<template #left>
|
<template #left> -->
|
||||||
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
|
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
|
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
|
||||||
@ -30,16 +37,11 @@
|
|||||||
</el-popover>
|
</el-popover>
|
||||||
<el-button size="small" type="primary" @click="handleZxs">转线索</el-button>
|
<el-button size="small" type="primary" @click="handleZxs">转线索</el-button>
|
||||||
<el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
|
<el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', null)">
|
|
||||||
<el-icon style="vertical-align: middle">
|
<!-- </template>
|
||||||
<CirclePlus />
|
</PageTitle> -->
|
||||||
</el-icon>
|
|
||||||
<span style="vertical-align: middle">新增</span>
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</PageTitle>
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
|
|||||||
@ -2,44 +2,18 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
|
|
||||||
<template #reference>
|
|
||||||
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
|
|
||||||
</template>
|
|
||||||
<div class="flex just-center">
|
|
||||||
<el-button size="small" type="primary" v-for="it in D_GS_BK_SQLX" :key="it.dm"
|
|
||||||
@click="handleApplication(it)">{{ it.zdmc }}</el-button>
|
|
||||||
</div>
|
|
||||||
</el-popover> -->
|
|
||||||
<!-- <el-popover placement="bottom" :visible="visiblefp" :width="400" trigger="click">
|
|
||||||
<template #reference>
|
|
||||||
<el-button size="small" type="primary" @click="(visiblefp = !visiblefp), (visible = false)">指定分配</el-button>
|
|
||||||
</template>
|
|
||||||
<div>
|
|
||||||
<el-input readonly v-model="obj.fpmc" @click="chooseUserVisible = true" placeholder="请选择民警"></el-input>
|
|
||||||
<div class="flex just-center mt10">
|
|
||||||
<el-button @click="(visiblefp = false), (obj = {})" size="small">取消</el-button>
|
|
||||||
<el-button type="primary" @click="handlefp" size="small">分配</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-popover> -->
|
|
||||||
<!-- <el-button size="small" type="primary" @click="handleZxs">转线索</el-button> -->
|
|
||||||
<!-- <el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
|
|
||||||
<!-- <el-button size="small" type="primary">导入</el-button> -->
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData">
|
@chooseData="chooseData">
|
||||||
@ -331,7 +305,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
<div class="phone-input-container">
|
<div class="phone-input-container">
|
||||||
<div class="inputGroup" v-for="(item, index) in listQuery.ryLxdh" :key="index">
|
<div class="inputGroup" v-for="(item, index) in listQuery.ryLxdh" :key="index">
|
||||||
<el-input v-model="listQuery.ryLxdh[index]" class="group" placeholder="请输入电话号码" />
|
<el-input v-model="listQuery.ryLxdh[index]" class="group" placeholder="请输入电话号码" />
|
||||||
<div class="flex align-center but" >
|
<div class="flex align-center but">
|
||||||
<el-button type="primary" :icon="Plus" circle @click="addPhone" title="添加电话号码"
|
<el-button type="primary" :icon="Plus" circle @click="addPhone" title="添加电话号码"
|
||||||
v-if="listQuery.ryLxdh.length - 1 == index" />
|
v-if="listQuery.ryLxdh.length - 1 == index" />
|
||||||
<el-button type="success" :icon="Minus" circle @click="removePhone(index)" title="删除电话号码" />
|
<el-button type="success" :icon="Minus" circle @click="removePhone(index)" title="删除电话号码" />
|
||||||
@ -25,11 +25,25 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template #gkmjxm>
|
||||||
|
<div>
|
||||||
|
<el-input v-model="listQuery.gkmjxm" class="group" placeholder="请输入管控民警姓名" readonly
|
||||||
|
@click="chooseMarksVisible = true" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #gkmjsfzh>
|
||||||
|
<div>
|
||||||
|
<el-input v-model="listQuery.gkmjsfzh" class="group" placeholder="请输入管控民警身份证号" readonly
|
||||||
|
@click="chooseMarksVisible = true" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<!-- { label: "管控民警", prop: "gkmjxm", type: "slot" }, -->
|
||||||
|
<!-- { label: "管控民警身份证号", prop: "gkmjsfzh", type: "slot" }, -->
|
||||||
</FormMessage>
|
</FormMessage>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <ChooseMarks v-model="chooseMarksVisible" @choosed="choosed" :roleIds="roleIds" /> -->
|
<!-- <ChooseMarks v-model="chooseMarksVisible" @choosed="choosed" :roleIds="roleIds" /> -->
|
||||||
|
<ChooseUser v-model="chooseMarksVisible" @choosedUsers="choosed" :roleIds="roleIds" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -37,7 +51,7 @@ import * as rule from "@/utils/rules.js";
|
|||||||
import * as MOSTY from "@/components/MyComponents/index";
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
import { Plus, Minus } from "@element-plus/icons-vue";
|
import { Plus, Minus } from "@element-plus/icons-vue";
|
||||||
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||||
import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.vue";
|
import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue";
|
||||||
import { ref, reactive, onMounted, getCurrentInstance, watch } from "vue";
|
import { ref, reactive, onMounted, getCurrentInstance, watch } from "vue";
|
||||||
import { tbGsxtZdryUpdate } from "@/api/zdr.js";
|
import { tbGsxtZdryUpdate } from "@/api/zdr.js";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
@ -63,12 +77,13 @@ const rules = reactive({
|
|||||||
rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
|
rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
|
||||||
ryLxdh: [{ required: true, message: "请输入联系电话", trigger: "blur" }],
|
ryLxdh: [{ required: true, message: "请输入联系电话", trigger: "blur" }],
|
||||||
ryXb: [{ required: true, message: "请选择性别", trigger: "change" }],
|
ryXb: [{ required: true, message: "请选择性别", trigger: "change" }],
|
||||||
zyBm: [{ required: true, message: "请选择职业", trigger: "change" }],
|
|
||||||
ryMz: [{ required: true, message: "请选择民族", trigger: "change" }],
|
ryMz: [{ required: true, message: "请选择民族", trigger: "change" }],
|
||||||
ryCsrq: [{ required: true, message: "请选择出生日期", trigger: "change" }],
|
ryCsrq: [{ required: true, message: "请选择出生日期", trigger: "change" }],
|
||||||
ryJg: [{ required: true, message: "请选择籍贯", trigger: "change" }],
|
|
||||||
zdrRyjb: [{ required: true, message: "请选择人员级别", trigger: "change" }],
|
zdrRyjb: [{ required: true, message: "请选择人员级别", trigger: "change" }],
|
||||||
zdrYjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }],
|
zdrYjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }],
|
||||||
|
zrSsbmdm: [{ required: true, message: "请选择责任单位", trigger: "change" }],
|
||||||
|
// gkmjxm: [{ required: true, message: "请选择管控民警", trigger: "change" }],
|
||||||
|
// gkmjsfzh: [{ required: true, message: "请选择管控民警身份证号", trigger: "change" }],
|
||||||
// rylx: [{ required: true, message: "请选择人员类型", trigger: "change" }]
|
// rylx: [{ required: true, message: "请选择人员类型", trigger: "change" }]
|
||||||
});
|
});
|
||||||
const listQuery = ref({ ryLxdh: [""] }); //表单
|
const listQuery = ref({ ryLxdh: [""] }); //表单
|
||||||
@ -90,10 +105,12 @@ const formData = ref([
|
|||||||
{ label: "出生日期", prop: "ryCsrq", type: "date" },
|
{ label: "出生日期", prop: "ryCsrq", type: "date" },
|
||||||
{ label: "户籍地区划", prop: "hjdQh", type: "select", options: D_BZ_XZQHDM },
|
{ label: "户籍地区划", prop: "hjdQh", type: "select", options: D_BZ_XZQHDM },
|
||||||
{ label: "户籍地详址", prop: "hjdXz", type: "input" },
|
{ label: "户籍地详址", prop: "hjdXz", type: "input" },
|
||||||
{ label: "户籍地派出所", prop: "hjdPcsdm",depMc:"hjdPcsmc" ,type: "department" },
|
{ label: "户籍地派出所", prop: "hjdPcsdm", depMc: "hjdPcsmc", type: "department" },
|
||||||
{ label: "现住地区划", prop: "xzdQh", type: "select", options: D_BZ_XZQHDM },
|
{ label: "现住地区划", prop: "xzdQh", type: "select", options: D_BZ_XZQHDM },
|
||||||
{ label: "现住地详址", prop: "xzdXz", type: "input" },
|
{ label: "现住地详址", prop: "xzdXz", type: "input" },
|
||||||
{ label: "现住地派出所", prop: "xzdPcsdm",depMc:"xzdPcsmc" ,type: "department" },
|
{ label: "现住地派出所", prop: "xzdPcsdm", depMc: "xzdPcsmc", type: "department" },
|
||||||
|
{ label: "管控民警", prop: "gkmjxm", type: "slot" },
|
||||||
|
{ label: "民警身份证", prop: "gkmjsfzh", type: "slot" },
|
||||||
{ label: "管辖单位", prop: "gxSsbmdm", depMc: 'gxSsbmmc', type: "department" },
|
{ label: "管辖单位", prop: "gxSsbmdm", depMc: 'gxSsbmmc', type: "department" },
|
||||||
{ label: "诉求单位", prop: "sqSsbmdm", depMc: 'sqSsbmmc', type: "department" },
|
{ label: "诉求单位", prop: "sqSsbmdm", depMc: 'sqSsbmmc', type: "department" },
|
||||||
{ label: "责任单位", prop: "zrSsbmdm", depMc: 'zrSsbmmc', type: "department" },
|
{ label: "责任单位", prop: "zrSsbmdm", depMc: 'zrSsbmmc', type: "department" },
|
||||||
@ -181,7 +198,7 @@ const gettbGsxtZdryUpdate = () => {
|
|||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -246,7 +263,13 @@ const throwData = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const choosed = (val) => {
|
||||||
|
roleIds.value = [val[0].id]
|
||||||
|
listQuery.value.gkmjxm = val[0].userName
|
||||||
|
listQuery.value.gkmjsfzh = val[0].idEntityCard
|
||||||
|
console.log(listQuery.value);
|
||||||
|
|
||||||
|
};
|
||||||
defineExpose({
|
defineExpose({
|
||||||
throwData,
|
throwData,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -37,7 +37,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</PageTitle> -->
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData">
|
@chooseData="chooseData">
|
||||||
@ -401,7 +401,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
<div class="head_box">
|
<div class="head_box">
|
||||||
<span class="title">线索{{ title }}</span>
|
<span class="title">线索{{ title }}</span>
|
||||||
<div>
|
<div>
|
||||||
|
<el-button type="primary" v-if="!disabled" :loading="loading" @click="submit">保存</el-button>
|
||||||
<el-button @click="close">关闭</el-button>
|
<el-button @click="close">关闭</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -19,6 +20,7 @@
|
|||||||
|
|
||||||
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||||
import { qbcjAdd, qbcjUpdate, qbcjSelectByid } from "@/api/Intelligence.js";
|
import { qbcjAdd, qbcjUpdate, qbcjSelectByid } from "@/api/Intelligence.js";
|
||||||
|
import { qcckGet, qcckPost } from '@/api/qcckApi'
|
||||||
import pursueContent from "@/views/backOfficeSystem/HumanIntelligence/components/pursueContent.vue";
|
import pursueContent from "@/views/backOfficeSystem/HumanIntelligence/components/pursueContent.vue";
|
||||||
import { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue";
|
import { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue";
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
@ -33,6 +35,12 @@ const props = defineProps({
|
|||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const dialogForm = ref(false); //弹窗
|
const dialogForm = ref(false); //弹窗
|
||||||
const formData = ref();
|
const formData = ref();
|
||||||
|
const rules = ref({
|
||||||
|
qbmc: [{ required: true, message: "请输入情报标题", trigger: ["blur"] }],
|
||||||
|
zxssj: [{ required: true, message: "请选择转线索时间", trigger: ["blur"] }],
|
||||||
|
qbnr: [{ required: true, message: "请输入情报内容", trigger: ["blur"] }],
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
watch(() => dialogForm.value, (val) => {
|
watch(() => dialogForm.value, (val) => {
|
||||||
@ -48,29 +56,45 @@ watch(() => dialogForm.value, (val) => {
|
|||||||
}
|
}
|
||||||
}, { deep: true })
|
}, { deep: true })
|
||||||
const listQuery = ref({}); //表单
|
const listQuery = ref({}); //表单
|
||||||
const elform = ref();
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
})
|
})
|
||||||
const addForm = ref()
|
|
||||||
const msgeDat = ref()
|
|
||||||
const title = ref("")
|
const title = ref("")
|
||||||
const showPj = ref(false)
|
const showPj = ref(false)
|
||||||
const disabled = ref(false)
|
const disabled = ref(false)
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const init = (type, row) => {
|
const init = (type, row) => {
|
||||||
console.log(row,"测试");
|
|
||||||
|
|
||||||
title.value = type == "add" ? "新增" : type == "info" ? "详情" : "编辑"
|
title.value = type == "add" ? "新增" : type == "info" ? "详情" : "编辑"
|
||||||
disabled.value = type == 'info' ? true : false
|
// disabled.value = type == 'info' ? true : false
|
||||||
dialogForm.value = true;
|
dialogForm.value = true;
|
||||||
if (type == 'info' || type == 'edit') {
|
if (type != 'add') {
|
||||||
showPj.value = true
|
showPj.value = true
|
||||||
listQuery.value = row
|
listQuery.value = row
|
||||||
|
if (type == 'info') {
|
||||||
|
disabled.value = true
|
||||||
|
} else {
|
||||||
|
disabled.value = false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
disabled.value = false
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
// 新增修改
|
||||||
|
const submit = () => {
|
||||||
|
const promes = { ...listQuery.value }
|
||||||
|
const url = title.value == "新增" ? "/mosty-gsxt/xxcj/zxs/addEntity" : "/mosty-gsxt/xxcj/zxs/updateEntity"
|
||||||
|
qcckPost({...promes,qbly:'0'}, url).then(res => {
|
||||||
|
proxy.$message({
|
||||||
|
message: "操作成功",
|
||||||
|
type: "success",
|
||||||
|
});
|
||||||
|
emit("getList")
|
||||||
|
close()
|
||||||
|
})
|
||||||
|
|
||||||
|
};
|
||||||
const close = () => {
|
const close = () => {
|
||||||
dialogForm.value = false;
|
dialogForm.value = false;
|
||||||
|
listQuery.value = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
defineExpose({ init });
|
defineExpose({ init });
|
||||||
@ -185,7 +209,8 @@ defineExpose({ init });
|
|||||||
color: #f78989;
|
color: #f78989;
|
||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
}
|
}
|
||||||
::v-deep .el-textarea.is-disabled .el-textarea__inner{
|
|
||||||
|
::v-deep .el-textarea.is-disabled .el-textarea__inner {
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -2,7 +2,15 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10 mb10">
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||||
|
<el-button type="primary" size="small" @click="getDataById('add', null)">
|
||||||
|
<el-icon style="vertical-align: middle">
|
||||||
|
<CirclePlus />
|
||||||
|
</el-icon>
|
||||||
|
<span style="vertical-align: middle">新增</span>
|
||||||
|
</el-button>
|
||||||
|
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
||||||
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="tabBox heightBox">
|
||||||
@ -15,9 +23,14 @@
|
|||||||
<template #cjlx="{ row }">
|
<template #cjlx="{ row }">
|
||||||
<DictTag :tag="false" :value="row.cjLx" :options="D_BZ_CJLX" />
|
<DictTag :tag="false" :value="row.cjLx" :options="D_BZ_CJLX" />
|
||||||
</template>
|
</template>
|
||||||
|
<template #qbly="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.qbly" :options="D_GS_XS_LY" />
|
||||||
|
</template>
|
||||||
<!-- 操作 -->
|
<!-- 操作 -->
|
||||||
<template #controls="{ row }">
|
<template #controls="{ row }">
|
||||||
<el-link size="small" type="primary" @click="getDataById(row)">详情</el-link>
|
<el-link size="small" type="primary" @click="getDataById('info',row)">详情</el-link>
|
||||||
|
<el-link size="small" type="primary" @click="getDataById('edit',row)">编辑</el-link>
|
||||||
|
<el-link size="small" type="danger" @click="handleRow(row.id)">删除</el-link>
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
@ -26,21 +39,21 @@
|
|||||||
}"></Pages>
|
}"></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<AddForm ref="addForm" :dict="{ D_BZ_CJLX, D_GS_XS_LX }" />
|
<AddForm ref="addForm" :dict="{ D_BZ_CJLX, D_GS_XS_LX }" @getList="getList" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { xxcjZxsSelectPage } from "@/api/xxcj.js";
|
import { xxcjZxsSelectPage } from "@/api/xxcj.js";
|
||||||
|
import { qcckGet, qcckPost } from '@/api/qcckApi'
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
|
||||||
import AddForm from "./addForm.vue"
|
import AddForm from "./addForm.vue"
|
||||||
import { getItem } from '@//utils/storage.js'
|
import { getItem } from '@//utils/storage.js'
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_BZ_CJLX, D_GS_XS_LX } = proxy.$dict("D_BZ_CJLX", "D_GS_XS_LX"); //获取字典数据
|
const { D_BZ_CJLX, D_GS_XS_LX,D_GS_XS_LY } = proxy.$dict("D_BZ_CJLX", "D_GS_XS_LX","D_GS_XS_LY"); //获取字典数据
|
||||||
const detailDiloag = ref();
|
const detailDiloag = ref();
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const ids = ref([])
|
const ids = ref([])
|
||||||
@ -90,12 +103,12 @@ const pageData = reactive({
|
|||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
pageCurrent: 1
|
pageCurrent: 1
|
||||||
},
|
},
|
||||||
controlsWidth: 100,
|
controlsWidth: 180,
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "情报标题", prop: "qbmc",width:250 },
|
{ label: "情报标题", prop: "qbmc",width:250 },
|
||||||
{ label: "编号", prop: "xsBh",width:190 },
|
{ label: "编号", prop: "xsBh",width:190 },
|
||||||
// { label: "情报类型", prop: "qblx", showSolt: true },
|
// { label: "情报类型", prop: "qblx", showSolt: true },
|
||||||
// { label: "情报来源", prop: "cjlx", showSolt: true },
|
{ label: "情报来源", prop: "qbly", showSolt: true },
|
||||||
{ label: "转线索时间", prop: "zxssj",width:190 },
|
{ label: "转线索时间", prop: "zxssj",width:190 },
|
||||||
{ label: "情报内容", prop: "qbnr",width:190 },
|
{ label: "情报内容", prop: "qbnr",width:190 },
|
||||||
{ label: "所属部门", prop: "ssbm" },
|
{ label: "所属部门", prop: "ssbm" },
|
||||||
@ -126,17 +139,36 @@ const getList = () => {
|
|||||||
pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
let data = { ...pageData.pageConfiger, ...queryFrom.value };
|
let data = { ...pageData.pageConfiger, ...queryFrom.value };
|
||||||
delete data.times;
|
delete data.times;
|
||||||
xxcjZxsSelectPage(data).then(res => {
|
qcckGet(data, "/mosty-gsxt/xxcj/zxs/selectPage").then((res) => {
|
||||||
pageData.tableData = res.records || [];
|
pageData.tableData = res.records || [];
|
||||||
pageData.total = res.total;
|
pageData.total = res.total;
|
||||||
|
}).catch(() => {
|
||||||
|
}).finally(() => {
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
}).catch(() => { pageData.tableConfiger.loading = false; })
|
})
|
||||||
}
|
|
||||||
|
|
||||||
|
// xxcjZxsSelectPage(data).then(res => {
|
||||||
|
// pageData.tableData = res.records || [];
|
||||||
|
// pageData.total = res.total;
|
||||||
|
// pageData.tableConfiger.loading = false;
|
||||||
|
// }).catch(() => { pageData.tableConfiger.loading = false; })
|
||||||
|
}
|
||||||
|
// 删除
|
||||||
|
const handleRow = (id) => {
|
||||||
|
const promes = {
|
||||||
|
ids: id ? [id] : ids.value
|
||||||
|
}
|
||||||
|
proxy.$confirm("确定要删除?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckPost(promes, "/mosty-gsxt/xxcj/zxs/deletes").then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "删除成功" });
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
@ -147,10 +179,8 @@ const getRouter = () => {
|
|||||||
routerMate.value = route.meta
|
routerMate.value = route.meta
|
||||||
}
|
}
|
||||||
const addForm = ref(null)
|
const addForm = ref(null)
|
||||||
const getDataById = (row) => {
|
const getDataById = (type,row) => {
|
||||||
addForm.value.init('info', row);
|
addForm.value.init(type, row);
|
||||||
console.log(row);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -2,20 +2,22 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" type="primary" @click="addEdit('add', '')">
|
<el-button size="small" type="primary" @click="addEdit('add', '')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</Search>
|
||||||
|
</div>
|
||||||
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
|
<template #left>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</PageTitle>
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<!-- <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<!-- <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"> -->
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"> -->
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
@ -157,7 +159,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,20 +2,22 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" type="primary" @click="getDataById('add', '')">
|
<el-button size="small" type="primary" @click="getDataById('add', '')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</Search>
|
||||||
|
</div>
|
||||||
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
|
<template #left>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</PageTitle>
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData">
|
@chooseData="chooseData">
|
||||||
@ -159,7 +161,7 @@ const getList = () => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,18 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" type="primary" @click="getDataById('add', '')">
|
<el-button size="small" type="primary" @click="getDataById('add', '')">
|
||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</Search>
|
||||||
|
</div>
|
||||||
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
|
<template #left>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</PageTitle>
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -155,7 +157,7 @@ const getList = () => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,10 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" @click="addEdit('add')" size="small">
|
<el-button type="primary" @click="addEdit('add')" size="small">
|
||||||
<el-icon class="vertical-middle">
|
<el-icon class="vertical-middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
@ -35,10 +32,11 @@
|
|||||||
<el-icon class="vertical-middle"><Edit /></el-icon>
|
<el-icon class="vertical-middle"><Edit /></el-icon>
|
||||||
<span class="vertical-middle">情报信息报告</span>
|
<span class="vertical-middle">情报信息报告</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Searchs>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
|
<div class="margTop" >
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData" @handleCellClick="openXxqk">
|
@chooseData="chooseData" @handleCellClick="openXxqk">
|
||||||
@ -472,7 +470,7 @@ const openXxqk = (row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 280;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,25 +3,17 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', null)">
|
|
||||||
<el-icon style="vertical-align: middle">
|
|
||||||
<CirclePlus />
|
|
||||||
</el-icon>
|
|
||||||
<span style="vertical-align: middle">新增</span>
|
|
||||||
</el-button>
|
|
||||||
<el-button type="danger" size="small" @click="plDelDictItem">
|
<el-button type="danger" size="small" @click="plDelDictItem">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<Dete />
|
<Dete />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">批量删除</span>
|
<span style="vertical-align: middle">批量删除</span>
|
||||||
</el-button></template>
|
</el-button>
|
||||||
</PageTitle>
|
</Search>
|
||||||
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData">
|
@chooseData="chooseData">
|
||||||
@ -65,7 +57,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -187,7 +178,7 @@ const clickTag = (val) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,26 +2,18 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" @click="dologCancel()" size="small">
|
<el-button type="primary" @click="dologCancel()" size="small">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">导出</span>
|
<span style="vertical-align: middle">导出</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
<!-- <el-button v-if="qxkz.deptLevel == '01'" type="primary" :disabled="ids.length === 0" @click="batchMark(ids)">
|
</div>
|
||||||
<el-icon style="vertical-align: middle">
|
|
||||||
<CirclePlus />
|
|
||||||
</el-icon>
|
|
||||||
<span style="vertical-align: middle">批量打标</span>
|
|
||||||
</el-button> -->
|
|
||||||
</PageTitle>
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -87,7 +79,6 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { qcckPost } from "@/api/qcckApi.js";
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -273,7 +264,7 @@ const handleCase = (row) => {
|
|||||||
}
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox mt10" :style="{height: pageData.tableHeight +30+ 'px'}">
|
<div class="margTop" >
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
|
|||||||
@ -5,10 +5,9 @@
|
|||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
|
||||||
<template #jflx="{ row }">
|
<template #jflx="{ row }">
|
||||||
<DictTag :tag="false" :value="row.jflx" :options="jflxArr" />
|
<DictTag :tag="false" :value="row.jflx" :options="jflxArr" />
|
||||||
</template>
|
</template>
|
||||||
@ -144,7 +143,7 @@ addForm.value.init(type, row,);
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
window.onresize = function() {
|
window.onresize = function() {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,21 +2,17 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10 mb10">
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" @click="handleRow('add', '')" size="small">
|
<el-button type="primary" @click="handleRow('add', '')" size="small">
|
||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="danger" size="small" @click="handleRow('moreDelete', '')">批量删除</el-button>
|
<el-button type="danger" size="small" @click="handleRow('moreDelete', '')">批量删除</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
<!-- 按钮组 -->
|
<!-- 按钮组 -->
|
||||||
<div class="content">
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -60,14 +56,12 @@
|
|||||||
></Pages>
|
></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<!-- 新增区域 -->
|
<!-- 新增区域 -->
|
||||||
<AddForm ref="addVisible" @change="getList" :dic="{D_BZ_SF, D_ZDY_QYJB, D_ZDY_QYLX,D_BZ_XZQHDM }"></AddForm>
|
<AddForm ref="addVisible" @change="getList" :dic="{D_BZ_SF, D_ZDY_QYJB, D_ZDY_QYLX,D_BZ_XZQHDM }"></AddForm>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import AddForm from "./components/addForm.vue";
|
import AddForm from "./components/addForm.vue";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -218,7 +212,7 @@ const handleSwitch = (row) =>{
|
|||||||
}
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 272;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,18 +3,16 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="AddFrom('add', '')">
|
<el-button type="primary" size="small" @click="AddFrom('add', '')">
|
||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -50,7 +48,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -175,7 +172,7 @@ const createProcess = (row) => {
|
|||||||
}
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 300;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,17 +2,14 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="handleAdd('add', null)">发起布控</el-button>
|
<el-button type="primary" size="small" @click="handleAdd('add', null)">发起布控</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 按钮组 -->
|
<!-- 按钮组 -->
|
||||||
<div class="content">
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
|
||||||
@ -67,7 +64,6 @@
|
|||||||
}"></Pages>
|
}"></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<!-- 布控类型 -->
|
<!-- 布控类型 -->
|
||||||
<AddBkdx ref="addBkdxForm" @change="getList" :name="route.name" :dic="{
|
<AddBkdx ref="addBkdxForm" @change="getList" :name="route.name" :dic="{
|
||||||
D_GS_BK_NEWDX, D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_CZYQ, D_BZ_JQDJ, D_BZ_BKLYS,
|
D_GS_BK_NEWDX, D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_CZYQ, D_BZ_JQDJ, D_BZ_BKLYS,
|
||||||
@ -83,7 +79,6 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import AddBkdx from "./components/addBkdx.vue";
|
import AddBkdx from "./components/addBkdx.vue";
|
||||||
import YjDialog from "./components/yjDialog.vue";
|
import YjDialog from "./components/yjDialog.vue";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -250,7 +245,7 @@ const openShowHzd = (row) => {
|
|||||||
}
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,19 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" type="primary" @click="addEdit('add', '')">
|
<el-button size="small" type="primary" @click="addEdit('add', '')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
|
</div>
|
||||||
</PageTitle>
|
<div class="tabBox margTop">
|
||||||
<div class="tabBox">
|
|
||||||
<ul class="list noScollLine" v-loading="pageData.loading">
|
<ul class="list noScollLine" v-loading="pageData.loading">
|
||||||
<li class="list-item" v-for="(item, index) in pageData.list" :key="`tableData${index}`">
|
<li class="list-item" v-for="(item, index) in pageData.list" :key="`tableData${index}`">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
@ -258,7 +254,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 210;
|
||||||
window.onresize = function() {
|
window.onresize = function() {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox" :style="{height: pageData.tableHeight + 10 +'px'}">
|
<div class="margTop" >
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #bglx="{ row }">
|
<template #bglx="{ row }">
|
||||||
<DictTag :tag="false" :value="row.bglx" :options="D_BZ_YPLX" />
|
<DictTag :tag="false" :value="row.bglx" :options="D_BZ_YPLX" />
|
||||||
@ -172,7 +172,7 @@ const showPopover = (row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 210;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,20 +2,17 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="getDataById('add', '')">
|
<el-button type="primary" size="small" @click="getDataById('add', '')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #bglx="{ row }">
|
<template #bglx="{ row }">
|
||||||
@ -146,7 +143,7 @@ const getList = () => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,20 +2,18 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" type="primary" @click="getDataById('add', '')">
|
<el-button size="small" type="primary" @click="getDataById('add', '')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #zlzt="{ row }">
|
<template #zlzt="{ row }">
|
||||||
@ -136,7 +134,7 @@ const getList = () => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,20 +3,18 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" type="primary" @click="createReport('add')">
|
<el-button size="small" type="primary" @click="createReport('add')">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">创建报告</span>
|
<span style="vertical-align: middle">创建报告</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #bglx="{ row }">
|
<template #bglx="{ row }">
|
||||||
@ -173,7 +171,7 @@ const getList = () => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,15 +3,16 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch"> </Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" type="primary" @click="openAddModel('add')" :icon="CirclePlus">
|
<el-button size="small" type="primary" @click="openAddModel('add')" :icon="CirclePlus">
|
||||||
新增模型
|
新增模型
|
||||||
</el-button>
|
</el-button> </Search>
|
||||||
|
</div>
|
||||||
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
|
<template #left>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</PageTitle>
|
</PageTitle> -->
|
||||||
<ul class="cntlsit mb10" v-if="show" v-infinite-scroll="load" :style="{ height: listHeight + 'px' }"
|
<ul class="cntlsit mb10" v-if="show" v-infinite-scroll="load" :style="{ height: listHeight + 'px' }"
|
||||||
v-loading="loading">
|
v-loading="loading">
|
||||||
<li class="model-card" v-for="(it, idx) in list" :key="idx">
|
<li class="model-card" v-for="(it, idx) in list" :key="idx">
|
||||||
@ -133,7 +134,7 @@ const getLits = () => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
listHeight.value = window.innerHeight - searchBox.value.offsetHeight - 230;
|
listHeight.value = window.innerHeight - searchBox.value.offsetHeight - 200;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<YpHome v-if="showModel == '研判首页'"></YpHome>
|
<YpHome v-if="showModel == '研判首页'"></YpHome>
|
||||||
|
|
||||||
<List v-if="showModel == '四色预警规则' || showModel == '预警规则'" :item="itemData" :dict="{ D_BZ_TPYJLX}"></List>
|
<List v-if="showModel == '四色预警规则' || showModel == '预警规则'" :item="itemData" :dict="{ D_BZ_TPYJLX}"></List>
|
||||||
<YjDetail v-if="showModel == '预警列表'" :item="itemData" :dict="{ D_BZ_TPYJLX,D_BZ_YJLX,D_BZ_JQLY }"></YjDetail>
|
<YjDetail v-if="showModel == '预警列表'" :item="itemData" :dict="{ D_BZ_TPYJLX,D_BZ_YJLX,D_BZ_JQLY }"></YjDetail>
|
||||||
<WarningList v-if="showModel == '预警详情'" :item="itemData" :dict="{ D_BZ_YJLX }"/>
|
<WarningList v-if="showModel == '预警详情'" :item="itemData" :dict="{ D_BZ_YJLX }"/>
|
||||||
|
|||||||
187
src/views/backOfficeSystem/PoliceIncidentMonitoring/addForm.vue
Normal file
187
src/views/backOfficeSystem/PoliceIncidentMonitoring/addForm.vue
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog" v-if="dialogForm">
|
||||||
|
<div class="head_box">
|
||||||
|
<span class="title">{{ title }}警情监测</span>
|
||||||
|
<div>
|
||||||
|
<el-button type="primary" size="small" v-if="!disabled" :loading="loading" @click="submit">保存</el-button>
|
||||||
|
<el-button size="small" @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form_cnt">
|
||||||
|
<FormMessage ref="elform" :disabled="disabled" v-model="listQuery" :formList="formData" labelWidth="100px"
|
||||||
|
:rules="rules">
|
||||||
|
<template #jqzldm>
|
||||||
|
<el-cascader v-model="listQuery.jqzldm" :options="props.dict.jqTree" clearable filterable :show-all-levels="false" :props="{label: 'zdmc', value: 'dm', children: 'itemList',checkStrictly: true }" />
|
||||||
|
</template>
|
||||||
|
</FormMessage>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import * as rule from "@/utils/rules.js";
|
||||||
|
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||||
|
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||||
|
import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, watch, onUnmounted } from "vue";
|
||||||
|
const emit = defineEmits(["getList"]);
|
||||||
|
const props = defineProps({
|
||||||
|
dict: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const dialogForm = ref(false); //弹窗
|
||||||
|
const rules = reactive({
|
||||||
|
// jqgjz: [{ required: true, message: "请输入内容关键字", trigger: "blur" }],
|
||||||
|
// gzms: [{ required: true, message: "请输入规则描述", trigger: "blur" }],
|
||||||
|
// jqzldm: [{ required: true, message: "请选择警情子类", trigger: "blur" }],
|
||||||
|
// jqdjdm: [{ required: true, message: "请选择警情等级", trigger: "blur" }],
|
||||||
|
});
|
||||||
|
const listQuery = ref({}); //表单
|
||||||
|
const formData = ref();
|
||||||
|
const loading = ref(false);
|
||||||
|
const elform = ref();
|
||||||
|
const title = ref("");
|
||||||
|
const disabled = ref(false);
|
||||||
|
|
||||||
|
// 初始化数据
|
||||||
|
const init = (type, row) => {
|
||||||
|
title.value = type == 'edit' ? '编辑' : type == 'add' ? '新增' : '详情'
|
||||||
|
dialogForm.value = true;
|
||||||
|
|
||||||
|
formData.value = [
|
||||||
|
{ label: "警情等级", prop: "jqdjdm", type: "select", options: props.dict.D_BZ_JQDJ || [] },
|
||||||
|
{ label: "警情子类", prop: "jqzldm", type: "slot" },
|
||||||
|
{ label: "内容关键字", prop: "jqgjz", type: "textarea", width: "100%" },
|
||||||
|
{ label: "规则描述", prop: "gzms", type: "textarea", width: "100%" },
|
||||||
|
]
|
||||||
|
if (type != 'add') {
|
||||||
|
// 处理级联选择器的回显
|
||||||
|
if (row.jqzldm && props.dict.jqTree) {
|
||||||
|
const fullPath = findFullPath(props.dict.jqTree, row.jqzldm);
|
||||||
|
if (fullPath.length > 0) {
|
||||||
|
listQuery.value = {
|
||||||
|
...row,
|
||||||
|
jqzldm: fullPath
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
listQuery.value = row;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
listQuery.value = row;
|
||||||
|
}
|
||||||
|
if (type == 'detail') {
|
||||||
|
disabled.value = true;
|
||||||
|
} else {
|
||||||
|
disabled.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// 查找完整的级联路径
|
||||||
|
const findFullPath = (tree, targetValue, currentPath = []) => {
|
||||||
|
for (const node of tree) {
|
||||||
|
const newPath = [...currentPath, node.dm];
|
||||||
|
if (node.dm === targetValue) {
|
||||||
|
return newPath;
|
||||||
|
}
|
||||||
|
if (node.itemList && node.itemList.length > 0) {
|
||||||
|
const result = findFullPath(node.itemList, targetValue, newPath);
|
||||||
|
if (result.length > 0) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
};
|
||||||
|
// 提交
|
||||||
|
const submit = () => {
|
||||||
|
// 处理级联选择器的值,只提交最后一个值
|
||||||
|
const promes = {
|
||||||
|
...listQuery.value,
|
||||||
|
jqzldm: Array.isArray(listQuery.value.jqzldm) ? listQuery.value.jqzldm[listQuery.value.jqzldm.length - 1] : listQuery.value.jqzldm
|
||||||
|
}
|
||||||
|
elform.value.submit((data) => {
|
||||||
|
loading.value = true;
|
||||||
|
if (title.value == "新增") {
|
||||||
|
qcckPost(promes, '/mosty-gsxt/jqjczg/addEntity').then(() => {
|
||||||
|
proxy.$message({ type: "success", message: title.value + "成功" });
|
||||||
|
emit("getList");
|
||||||
|
close();
|
||||||
|
}).catch(() => {
|
||||||
|
}).finally(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
qcckPut(promes, '/mosty-gsxt/jqjczg/editEntity').then(() => {
|
||||||
|
proxy.$message({ type: "success", message: title.value + "成功" });
|
||||||
|
emit("getList");
|
||||||
|
close();
|
||||||
|
}).catch(() => {
|
||||||
|
}).finally(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 关闭
|
||||||
|
const close = () => {
|
||||||
|
listQuery.value = {};
|
||||||
|
dialogForm.value = false;
|
||||||
|
loading.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
})
|
||||||
|
defineExpose({ init });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
|
||||||
|
color: #0072ff;
|
||||||
|
background: rgba(0, 114, 255, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.boxlist {
|
||||||
|
width: calc(99% - 50px);
|
||||||
|
margin-top: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.depBox {
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
padding: 0 0 0 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.coolor {
|
||||||
|
color: #d3d3d3;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.zdy-taf {
|
||||||
|
width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 32px;
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 0px 5px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map {
|
||||||
|
height: 520px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
101
src/views/backOfficeSystem/PoliceIncidentMonitoring/gljqLod.vue
Normal file
101
src/views/backOfficeSystem/PoliceIncidentMonitoring/gljqLod.vue
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :model-value="modelValue" :title="title" width="80%" @close="closeDialog" destroy-on-close append-to-body
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<div style="width: 100%;height: 500px;">
|
||||||
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
<template #jqdjdm="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.jqdjdm" :options="dict.D_GS_BQ_DJ" />
|
||||||
|
</template>
|
||||||
|
<template #jqlbdm="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.jqlbdm" :options="dict.JQLB" />
|
||||||
|
</template>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<!-- <template #controls="{ row }">
|
||||||
|
<el-link type="primary" size="small" @click="handleAdd('detail', row)">详情</el-link>
|
||||||
|
</template> -->
|
||||||
|
</MyTable>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<div class="flex just-center">
|
||||||
|
<el-button @click="closeDialog">取消</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm">确认</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { ref, reactive, onMounted, watch, onUnmounted, getCurrentInstance } from 'vue'
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}, zdsjLod: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
dict: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "null", //选择类型
|
||||||
|
loading: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
controlsWidth: 250, //操作栏宽度
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "接警单编号", prop: "jjdbh" },
|
||||||
|
{ label: "报警电话", prop: "bjdh" },
|
||||||
|
{ label: "报警时间", prop: "bjsj" },
|
||||||
|
{ label: "报警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
|
{ label: "接警员姓名", prop: "jjyxm" },
|
||||||
|
{ label: "警情级别", prop: "jqdjdm", showSolt: true },
|
||||||
|
{ label: "警情类型", prop: "jqlbdm", showSolt: true },
|
||||||
|
{ label: "警情地址", prop: "jqdz" },
|
||||||
|
{ label: "补充接警内容", prop: "bcjjnr", showOverflowTooltip: true },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const emit = defineEmits(["update:modelValue", "addZdsjLodList"]);
|
||||||
|
const title = ref("关联警情");
|
||||||
|
|
||||||
|
watch(() => props.modelValue, (newVal) => {
|
||||||
|
handleGljq()
|
||||||
|
console.log(props.dict);
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
// 查询关联警情
|
||||||
|
const handleGljq = () => {
|
||||||
|
qcckGet({ jcgzid: props.zdsjLod.id }, "/mosty-gsxt/lzJcjPjdb/selectList").then((res) => {
|
||||||
|
pageData.tableData = res;
|
||||||
|
pageData.keyCount++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const closeDialog = () => {
|
||||||
|
// 关闭对话框时移除事件监听器
|
||||||
|
emit("update:modelValue", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const submitForm = () => {
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
214
src/views/backOfficeSystem/PoliceIncidentMonitoring/index.vue
Normal file
214
src/views/backOfficeSystem/PoliceIncidentMonitoring/index.vue
Normal file
@ -0,0 +1,214 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div ref="searchBox" class="mt10">
|
||||||
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
|
<el-button type="primary" size="small" @click="handleAdd('add', null)">添加规则</el-button>
|
||||||
|
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
||||||
|
</Search>
|
||||||
|
</div>
|
||||||
|
<!-- 按钮组 -->
|
||||||
|
<div class="content">
|
||||||
|
<!-- 表格 -->
|
||||||
|
<div class="margTop">
|
||||||
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
|
@chooseData="handleChooseData">
|
||||||
|
<template #jqdjdm="{ row }">
|
||||||
|
<DictTag :options="D_BZ_JQDJ" :tag="false" :value="row.jqdjdm"></DictTag>
|
||||||
|
</template>
|
||||||
|
<template #jqzldm="{ row }">
|
||||||
|
{{ getJqName(row.jqzldm) }}
|
||||||
|
</template>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="primary" size="small" @click="handleGljq( row)">关联警情</el-link>
|
||||||
|
<el-link type="primary" size="small" @click="handleAdd('edit', row)">编辑</el-link>
|
||||||
|
<el-link type="primary" size="small" @click="handleAdd('detail', row)">详情</el-link>
|
||||||
|
<el-link type="danger" size="small" @click="handleRow(row.id)">删除</el-link>
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"></Pages>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<AddForm ref="addForm" @getList="getList" :dict="{ D_BZ_JQDJ, jqTree }" />
|
||||||
|
<GljqLod v-model="gljqShow" :dict="{D_GS_BQ_DJ,JQLB}" :zdsjLod="zdsjLod" />
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
|
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
|
||||||
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
|
import GljqLod from "./gljqLod.vue";
|
||||||
|
import AddForm from "./addForm.vue";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_BZ_JQDJ ,D_GS_BQ_DJ,JQLB} = proxy.$dict("D_BZ_JQDJ","D_GS_BQ_DJ","JQLB");
|
||||||
|
const searchBox = ref(); //搜索框
|
||||||
|
const searchConfiger = ref([
|
||||||
|
{
|
||||||
|
label: "内容关键字",
|
||||||
|
prop: "jqgjz",
|
||||||
|
placeholder: "请输入警情内容关键字",
|
||||||
|
showType: "input",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "值班日期",
|
||||||
|
prop: "startTime",
|
||||||
|
placeholder: "请选择值班日期",
|
||||||
|
showType: "datetimerange",
|
||||||
|
}, {
|
||||||
|
label: "警情等级",
|
||||||
|
prop: "jqdjdm",
|
||||||
|
placeholder: "请选择警情等级",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_JQDJ,
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
const queryFrom = ref({});
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "checkbox", //选择类型
|
||||||
|
loading: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
controlsWidth: 250, //操作栏宽度
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "规则描述", prop: "gzms", showOverflowTooltip: true },
|
||||||
|
{ label: "内容关键字", prop: "jqgjz", showOverflowTooltip: true },
|
||||||
|
{ label: "警情等级", prop: "jqdjdm", showOverflowTooltip: true, showSolt: true },
|
||||||
|
{ label: "警情类型", prop: "jqzldm", showOverflowTooltip: true, showSolt: true },
|
||||||
|
{ label: "录入人姓名", prop: "lrrXm", showOverflowTooltip: true },
|
||||||
|
{ label: "录入人身份证号", prop: "lrrSfzh", showOverflowTooltip: true },
|
||||||
|
{ label: "所属部门", prop: "ssbm" },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getJqTree()
|
||||||
|
getList();
|
||||||
|
tabHeightFn();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
const onSearch = (val) => {
|
||||||
|
queryFrom.value = {
|
||||||
|
...val,
|
||||||
|
startTime: val.startTime ? val.startTime[0] : '',
|
||||||
|
endTime: val.startTime ? val.startTime[1] : ''
|
||||||
|
};
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const changeNo = (val) => {
|
||||||
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
const changeSize = (val) => {
|
||||||
|
pageData.pageConfiger.pageSize = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取列表
|
||||||
|
const getList = () => {
|
||||||
|
const promes = {
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
...queryFrom.value,
|
||||||
|
}
|
||||||
|
qcckGet(promes, "/mosty-gsxt/jqjczg/getPageList").then((res) => {
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
pageData.total = res.total;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
}).catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 获取警情树
|
||||||
|
|
||||||
|
const jqTree = ref([])
|
||||||
|
const getJqTree = () => {
|
||||||
|
qcckGet({}, "/mosty-gsxt/lzJcjPjdb/getDictTree").then((res) => {
|
||||||
|
jqTree.value = res
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据值获取警情名称
|
||||||
|
const getJqName = (value) => {
|
||||||
|
if (!value || !jqTree.value || jqTree.value.length === 0) {
|
||||||
|
return value || '';
|
||||||
|
}
|
||||||
|
|
||||||
|
const findName = (tree, targetValue) => {
|
||||||
|
for (const node of tree) {
|
||||||
|
if (node.dm === targetValue) {
|
||||||
|
return node.zdmc;
|
||||||
|
}
|
||||||
|
if (node.itemList && node.itemList.length > 0) {
|
||||||
|
const result = findName(node.itemList, targetValue);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const name = findName(jqTree.value, value);
|
||||||
|
return name || value;
|
||||||
|
};
|
||||||
|
// 删除
|
||||||
|
const ids = ref([])
|
||||||
|
const handleChooseData = (val) => {
|
||||||
|
ids.value = val.map(item => item.id)
|
||||||
|
}
|
||||||
|
const handleRow = (id) => {
|
||||||
|
const promes = {
|
||||||
|
ids: id ? [id] : ids.value
|
||||||
|
}
|
||||||
|
proxy.$confirm("确定要删除?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckDelete(promes, "/mosty-gsxt/jqjczg/deleteEntity").then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "删除成功" });
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
// 值班操作
|
||||||
|
const addForm = ref(null);
|
||||||
|
const handleAdd = (type, row) => {
|
||||||
|
addForm.value.init(type, row);
|
||||||
|
};
|
||||||
|
// 关联警情
|
||||||
|
const gljqShow = ref(false)
|
||||||
|
const zdsjLod = ref()
|
||||||
|
const handleGljq = (row) => {
|
||||||
|
gljqShow.value = true
|
||||||
|
zdsjLod.value=row
|
||||||
|
}
|
||||||
|
|
||||||
|
// 表格高度计算
|
||||||
|
const tabHeightFn = () => {
|
||||||
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
|
window.onresize = function () {
|
||||||
|
tabHeightFn();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-loading-mask {
|
||||||
|
background: rgba(0, 0, 0, 0.5) !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -2,19 +2,15 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch"/>
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
|
</div>
|
||||||
</PageTitle>
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -211,7 +207,7 @@ const showBtn = (row) => {
|
|||||||
}
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"/>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"/>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -114,7 +114,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
</div> -->
|
</div> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #sex="{ row }">
|
<template #sex="{ row }">
|
||||||
@ -156,7 +156,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 250;
|
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
|
||||||
window.onresize = function() {
|
window.onresize = function() {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,10 +3,7 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
|
<el-button size="small" v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
|
||||||
<span style="vertical-align: middle">{{ it.zdmc }}</span>
|
<span style="vertical-align: middle">{{ it.zdmc }}</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -14,11 +11,16 @@
|
|||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</Search>
|
||||||
|
</div>
|
||||||
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
|
<template #left>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</PageTitle>
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
|
<div class="margTop">
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
|
|||||||
@ -3,10 +3,7 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button size="small" v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
|
<el-button size="small" v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
|
||||||
<span style="vertical-align: middle">{{ it.zdmc }}</span>
|
<span style="vertical-align: middle">{{ it.zdmc }}</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -14,11 +11,15 @@
|
|||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</Search>
|
||||||
|
</div>
|
||||||
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
|
<template #left>
|
||||||
|
|
||||||
</PageTitle>
|
</template>
|
||||||
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
|
<div class="margTop" >
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
|
|||||||
@ -3,19 +3,21 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
<el-button type="primary" size="small" @click="addEdit('add', '')">
|
||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</Search>
|
||||||
|
</div>
|
||||||
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
|
<template #left>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</PageTitle>
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
|
<div class="margTop" >
|
||||||
<MyTable
|
<MyTable
|
||||||
:tableData="pageData.tableData"
|
:tableData="pageData.tableData"
|
||||||
:tableColumn="pageData.tableColumn"
|
:tableColumn="pageData.tableColumn"
|
||||||
@ -139,7 +141,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 260;
|
||||||
window.onresize = function () { tabHeightFn(); };
|
window.onresize = function () { tabHeightFn(); };
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -2,8 +2,31 @@
|
|||||||
<div>
|
<div>
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
<template #left>
|
<template #left>
|
||||||
<el-button v-for="(item, index) in butList" :key="index" :type="qh == item ? 'primary' : 'default'"
|
<!-- -->
|
||||||
@click="qh = item" size="small">{{ item }}</el-button>
|
<template v-for="(item, index) in butList" :key="index">
|
||||||
|
<el-popover placement="right" :width="240" style='height: 300px;' trigger="click" v-if="item == '布控预警'">
|
||||||
|
<template #reference>
|
||||||
|
<el-button :type="butStylChange(qh) ? 'primary' : 'default'" size="small">{{ item }}</el-button>
|
||||||
|
</template>
|
||||||
|
<el-select v-model="value" placeholder="请选择预警类型" @change="qh = value">
|
||||||
|
<el-option label="人像预警" value="人像预警" />
|
||||||
|
<el-option label="车辆预警" value="车辆预警" />
|
||||||
|
<el-option label="区域预警" value="区域预警" />
|
||||||
|
</el-select>
|
||||||
|
</el-popover>
|
||||||
|
<el-popover placement="right" :width="240" style='height: 300px;' trigger="click" v-else-if ="item == '标签预警'">
|
||||||
|
<template #reference>
|
||||||
|
<el-button :type="BqbutStylChange(qh) ? 'primary' : 'default'" size="small">{{ item }}</el-button>
|
||||||
|
</template>
|
||||||
|
<el-select v-model="Bqvalue" placeholder="请选择预警类型" @change="qh = Bqvalue">
|
||||||
|
<el-option label="身份预警" value="身份预警" />
|
||||||
|
<el-option label="行为预警" value="行为预警" />
|
||||||
|
<el-option label="组合预警" value="组合预警" />
|
||||||
|
</el-select>
|
||||||
|
</el-popover>
|
||||||
|
<el-button :type="qh == item ? 'primary' : 'default'" @click="qh = item" size="small" v-else>{{ item
|
||||||
|
}}</el-button>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</PageTitle>
|
</PageTitle>
|
||||||
<FouColorWarning v-if="qh == '预警整合'" />
|
<FouColorWarning v-if="qh == '预警整合'" />
|
||||||
@ -37,10 +60,20 @@ import PoliticalSecurityWarning from "@/views/backOfficeSystem/fourColorManage/w
|
|||||||
|
|
||||||
import Cs from '@/views/backOfficeSystem/ces/index.vue'
|
import Cs from '@/views/backOfficeSystem/ces/index.vue'
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
|
// "人像预警", "车辆预警",, "区域预警","无人机预警"
|
||||||
const butList = ref(["七类重点", '政保预警', "人像预警", "车辆预警", "布控预警", "区域预警", "无人机预警", "预警整合",])
|
const butList = ref(["七类重点", '政保预警', "布控预警", "预警整合"])
|
||||||
const qh = ref('预警整合')
|
const qh = ref('预警整合')
|
||||||
|
const value = ref('人像预警')
|
||||||
|
const Bqvalue = ref('身份预警')
|
||||||
|
const butStyle = ref()
|
||||||
const hasPermissin = ref(false)
|
const hasPermissin = ref(false)
|
||||||
|
const butStylChange = (val) => {
|
||||||
|
return ["人像预警", "车辆预警", "区域预警", "布控预警"].includes(val)
|
||||||
|
|
||||||
|
}
|
||||||
|
const BqbutStylChange = (val) => {
|
||||||
|
return ["身份预警", "行为预警", "组合预警"].includes(val)
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// rolCode : 市情指领导(JS_666666)、市情指权限(JS_777777)、县情指权限(JS_888888)、县情指领导权限(JS_999999);
|
// rolCode : 市情指领导(JS_666666)、市情指权限(JS_777777)、县情指权限(JS_888888)、县情指领导权限(JS_999999);
|
||||||
// depCode : 市情指领导(513030199509084123 )、市情指(340827200404141028)、县情指领导(540421196805217650)、朗县公安局指挥中心(县情指)(540422200010197030)、朗县公安局县城派出所(部门)(513425199305205211)
|
// depCode : 市情指领导(513030199509084123 )、市情指(340827200404141028)、县情指领导(540421196805217650)、朗县公安局指挥中心(县情指)(540422200010197030)、朗县公安局县城派出所(部门)(513425199305205211)
|
||||||
@ -56,7 +89,8 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
if (hasPermissin.value) {
|
if (hasPermissin.value) {
|
||||||
const data = butList.value.filter(item => item !== "预警整合")
|
const data = butList.value.filter(item => item !== "预警整合")
|
||||||
butList.value = [...data, ...["身份预警", "行为预警", "组合预警", "预警整合"]]
|
// "身份预警", "行为预警", "组合预警"
|
||||||
|
butList.value = [...data, ...["标签预警", "预警整合"]]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -3,11 +3,18 @@
|
|||||||
|
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||||
|
<el-button size="small" type="primary" @click="addEdit('add', '')">
|
||||||
|
<el-icon style="vertical-align: middle">
|
||||||
|
<CirclePlus />
|
||||||
|
</el-icon>
|
||||||
|
<span style="vertical-align: middle">新增</span>
|
||||||
|
</el-button>
|
||||||
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
<!-- <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
||||||
<template #left>
|
<template #left>
|
||||||
<!-- <el-button>
|
<el-button>
|
||||||
<span style="vertical-align: middle">调级</span>
|
<span style="vertical-align: middle">调级</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button>
|
<el-button>
|
||||||
@ -15,17 +22,12 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
<el-button>
|
<el-button>
|
||||||
<span style="vertical-align: middle">导入</span>
|
<span style="vertical-align: middle">导入</span>
|
||||||
</el-button> -->
|
|
||||||
<el-button size="small" type="primary" @click="addEdit('add', '')">
|
|
||||||
<el-icon style="vertical-align: middle">
|
|
||||||
<CirclePlus />
|
|
||||||
</el-icon>
|
|
||||||
<span style="vertical-align: middle">新增</span>
|
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</PageTitle>
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #bqYs="{ row }">
|
<template #bqYs="{ row }">
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
</Searchs>
|
</Searchs>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox" >
|
<div class="margTop" >
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #sfcs="{ row }">
|
<template #sfcs="{ row }">
|
||||||
@ -205,7 +205,7 @@ const openAddFrom = (row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 200;
|
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
|
||||||
window.onresize = function() {
|
window.onresize = function() {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
</Search>
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #czzt="{ row }">
|
<template #czzt="{ row }">
|
||||||
@ -146,7 +146,7 @@ const pushAssess = (val) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () { tabHeightFn(); };
|
window.onresize = function () { tabHeightFn(); };
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -54,8 +54,8 @@ const dialogForm = ref(false); //弹窗
|
|||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
jrzbrXm: [{ required: true, message: "请输入今日值班人", trigger: "blur" }],
|
jrzbrXm: [{ required: true, message: "请输入今日值班人", trigger: "blur" }],
|
||||||
jrzbrLxdh: [{ required: true, message: "请输入今日值班电话", trigger: "blur" }],
|
jrzbrLxdh: [{ required: true, message: "请输入今日值班电话", trigger: "blur" }],
|
||||||
mrzbrXm: [{ required: true, message: "请输入明日值班人", trigger: "blur" }],
|
mrzbrXm: [{ required: true, message: "请输入每日值班人", trigger: "blur" }],
|
||||||
mrzbrLxdh: [{ required: true, message: "请输入明日值班电话", trigger: "blur" }],
|
mrzbrLxdh: [{ required: true, message: "请输入每日值班电话", trigger: "blur" }],
|
||||||
kssj: [{ required: true, message: "请选择开始时间", trigger: "blur" }],
|
kssj: [{ required: true, message: "请选择开始时间", trigger: "blur" }],
|
||||||
jssj: [{ required: true, message: "请选择结束时间", trigger: "blur" }],
|
jssj: [{ required: true, message: "请选择结束时间", trigger: "blur" }],
|
||||||
gzrq: [{ required: true, message: "请选择工作日期", trigger: "blur" }],
|
gzrq: [{ required: true, message: "请选择工作日期", trigger: "blur" }],
|
||||||
@ -115,6 +115,8 @@ const init = (type, row) => {
|
|||||||
} else {
|
} else {
|
||||||
disabled.value = false;
|
disabled.value = false;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
disabled.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// 提交
|
// 提交
|
||||||
@ -172,7 +174,7 @@ const deleteZdsjLodList = (id) => {
|
|||||||
pageData.tableData.splice(index, 1);
|
pageData.tableData.splice(index, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 打开明日值日列表
|
// 打开每日值日列表
|
||||||
const toDayContentShow = ref();
|
const toDayContentShow = ref();
|
||||||
const toDayContent = ref();
|
const toDayContent = ref();
|
||||||
const openToDayContent = (type, row) => {
|
const openToDayContent = (type, row) => {
|
||||||
@ -200,6 +202,8 @@ const close = () => {
|
|||||||
listQuery.value = {};
|
listQuery.value = {};
|
||||||
dialogForm.value = false;
|
dialogForm.value = false;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
pageData.tableData = [];
|
||||||
|
toDayJobList.tableData = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
@ -2,18 +2,15 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="handleAdd('add', null)">添加完成情况</el-button>
|
<el-button type="primary" size="small" @click="handleAdd('add', null)">添加完成情况</el-button>
|
||||||
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
<!-- 按钮组 -->
|
<!-- 按钮组 -->
|
||||||
<div class="content">
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="handleChooseData">
|
@chooseData="handleChooseData">
|
||||||
@ -33,12 +30,10 @@
|
|||||||
}"></Pages>
|
}"></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<AddForm ref="addForm" @getList="getList" :dict="{ D_BZ_ZDSJCZJG }" />
|
<AddForm ref="addForm" @getList="getList" :dict="{ D_BZ_ZDSJCZJG }" />
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -160,7 +155,7 @@ const handleAdd = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 210;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
@ -172,4 +167,9 @@ const tabHeightFn = () => {
|
|||||||
.el-loading-mask {
|
.el-loading-mask {
|
||||||
background: rgba(0, 0, 0, 0.5) !important;
|
background: rgba(0, 0, 0, 0.5) !important;
|
||||||
}
|
}
|
||||||
|
.margTop{
|
||||||
|
padding: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -33,7 +33,7 @@ const props = defineProps({
|
|||||||
const listQuery = ref({})
|
const listQuery = ref({})
|
||||||
const elform = ref()
|
const elform = ref()
|
||||||
const emit = defineEmits(["update:modelValue", "addZdsjLodList"]);
|
const emit = defineEmits(["update:modelValue", "addZdsjLodList"]);
|
||||||
const title = ref("明日工作内容");
|
const title = ref("每日工作内容");
|
||||||
const formData = ref([
|
const formData = ref([
|
||||||
{ label: "工作内容", prop: "gznr", type: "textarea" ,width: "100%" },
|
{ label: "工作内容", prop: "gznr", type: "textarea" ,width: "100%" },
|
||||||
]);
|
]);
|
||||||
|
|||||||
@ -5,9 +5,8 @@
|
|||||||
<div ref="searchBox" class="mt10 mb10">
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
|
||||||
@ -157,7 +156,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function() {
|
window.onresize = function() {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,18 +2,15 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch" >
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="handleAdd('add', null)">添加事件</el-button>
|
<el-button type="primary" size="small" @click="handleAdd('add', null)">添加事件</el-button>
|
||||||
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 按钮组 -->
|
<!-- 按钮组 -->
|
||||||
<div class="content">
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="handleChooseData">
|
@chooseData="handleChooseData">
|
||||||
@ -33,11 +30,9 @@
|
|||||||
}"></Pages>
|
}"></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<AddForm ref="addForm" @getList="getList" :dict="{D_BZ_ZDSJCZJG}" />
|
<AddForm ref="addForm" @getList="getList" :dict="{D_BZ_ZDSJCZJG}" />
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -162,7 +157,7 @@ addForm.value.init(type, row);
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,18 +2,14 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10 mb10">
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
<Search :searchArr="searchConfiger" ref="ces" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" ref="ces" @submit="onSearch" :key="pageData.keyCount">
|
||||||
</div>
|
|
||||||
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="exportExl">导出</el-button>
|
<el-button type="primary" size="small" @click="exportExl">导出</el-button>
|
||||||
<el-button type="primary" size="small" @click="getSlect">我的关注</el-button>
|
<el-button type="primary" size="small" @click="getSlect">我的关注</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="heightBox margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="handleChooseData">
|
@chooseData="handleChooseData">
|
||||||
@ -60,7 +56,6 @@ import { getMultiDictVal } from "@/utils/dict.js"
|
|||||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import YpDialog from "./components/ypDialog.vue";
|
import YpDialog from "./components/ypDialog.vue";
|
||||||
import DeepYpDialog from "./components/deepypDialog.vue";
|
import DeepYpDialog from "./components/deepypDialog.vue";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -257,15 +252,16 @@ qcckPost({
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style >
|
||||||
.el-loading-mask {
|
.el-loading-mask {
|
||||||
background: rgba(0, 0, 0, 0.5) !important;
|
background: rgba(0, 0, 0, 0.5) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox heightBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<!-- <template #jjlx="{ row }">
|
<!-- <template #jjlx="{ row }">
|
||||||
@ -138,7 +138,7 @@ const addEdit = (type, row) => {
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight -200
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight -220
|
||||||
window.onresize = function() {
|
window.onresize = function() {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,15 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="titleBox">
|
<!-- <div class="title">菜单管理</div>
|
||||||
<div class="title">菜单管理</div>
|
|
||||||
<div class="btnBox">
|
<div class="btnBox">
|
||||||
<el-button type="primary" @click="addItemMenu">
|
|
||||||
<el-icon><CirclePlus /></el-icon>
|
</div> -->
|
||||||
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
|
<el-button type="primary" size="small" @click="addItemMenu" >
|
||||||
|
<el-icon>
|
||||||
|
<CirclePlus />
|
||||||
|
</el-icon>
|
||||||
<span>新增</span>
|
<span>新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<!-- <div class="searchBox" ref="searchBox">
|
||||||
<div class="searchBox" ref="searchBox">
|
|
||||||
<el-form :model="listQuery" :inline="true">
|
<el-form :model="listQuery" :inline="true">
|
||||||
<el-form-item label="菜单名称">
|
<el-form-item label="菜单名称">
|
||||||
<el-input
|
<el-input
|
||||||
@ -23,117 +28,43 @@
|
|||||||
<el-button @click="reset()"> 重置 </el-button>
|
<el-button @click="reset()"> 重置 </el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="tabBox">
|
<div class="tabBox">
|
||||||
<el-table
|
<el-table v-if="refreshTable" :data="tableData" border v-loading="loading" ref="dataTreeList" row-key="id"
|
||||||
v-if="refreshTable"
|
:tree-props="{ children: 'sysMenuList', hasChildren: true }" style="width: 100%" :height="tableHeight"
|
||||||
:data="tableData"
|
:key="keyCount">
|
||||||
border
|
<el-table-column sortable prop="menuName" show-overflow-tooltip width="200px" label="菜单名称">
|
||||||
v-loading="loading"
|
|
||||||
ref="dataTreeList"
|
|
||||||
row-key="id"
|
|
||||||
:tree-props="{ children: 'sysMenuList', hasChildren: true }"
|
|
||||||
style="width: 100%"
|
|
||||||
:height="tableHeight"
|
|
||||||
:key="keyCount"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
sortable
|
|
||||||
prop="menuName"
|
|
||||||
show-overflow-tooltip
|
|
||||||
width="200px"
|
|
||||||
label="菜单名称"
|
|
||||||
>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column sortable prop="menuCode" show-overflow-tooltip align="center" width="150px" label="菜单编码">
|
||||||
sortable
|
|
||||||
prop="menuCode"
|
|
||||||
show-overflow-tooltip
|
|
||||||
align="center"
|
|
||||||
width="150px"
|
|
||||||
label="菜单编码"
|
|
||||||
>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column sortable prop="orderNo" label="排序" width="140px"></el-table-column>
|
||||||
sortable
|
<el-table-column sortable prop="menuUrl" show-overflow-tooltip label="菜单地址" align="center" width="140px">
|
||||||
prop="orderNo"
|
|
||||||
label="排序"
|
|
||||||
width="140px"
|
|
||||||
></el-table-column>
|
|
||||||
<el-table-column
|
|
||||||
sortable
|
|
||||||
prop="menuUrl"
|
|
||||||
show-overflow-tooltip
|
|
||||||
label="菜单地址"
|
|
||||||
align="center"
|
|
||||||
width="140px"
|
|
||||||
>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column sortable prop="menuType" label="类型" align="center" width="140px">
|
||||||
sortable
|
|
||||||
prop="menuType"
|
|
||||||
label="类型"
|
|
||||||
align="center"
|
|
||||||
width="140px"
|
|
||||||
>
|
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag v-if="row.menuType === 1" size="small">菜单组</el-tag>
|
<el-tag v-if="row.menuType === 1" size="small">菜单组</el-tag>
|
||||||
<el-tag v-else-if="row.menuType === 2" type="success" size="small"
|
<el-tag v-else-if="row.menuType === 2" type="success" size="small">菜单</el-tag>
|
||||||
>菜单</el-tag
|
<el-tag v-else-if="row.menuType === 3" type="success" size="small">页面</el-tag>
|
||||||
>
|
<el-tag v-else-if="row.menuType === 4" type="success" size="small">资源</el-tag>
|
||||||
<el-tag v-else-if="row.menuType === 3" type="success" size="small"
|
|
||||||
>页面</el-tag
|
|
||||||
>
|
|
||||||
<el-tag v-else-if="row.menuType === 4" type="success" size="small"
|
|
||||||
>资源</el-tag
|
|
||||||
>
|
|
||||||
<el-tag v-else type="info" size="small">未知</el-tag>
|
<el-tag v-else type="info" size="small">未知</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column sortable prop="showMode" label="可见" align="center" width="140px">
|
||||||
sortable
|
|
||||||
prop="showMode"
|
|
||||||
label="可见"
|
|
||||||
align="center"
|
|
||||||
width="140px"
|
|
||||||
>
|
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag v-if="row.showMode === 1" type="success" size="small"
|
<el-tag v-if="row.showMode === 1" type="success" size="small">展示</el-tag>
|
||||||
>展示</el-tag
|
<el-tag v-else-if="row.showMode === 2" type="info" size="small">不展示</el-tag>
|
||||||
>
|
|
||||||
<el-tag v-else-if="row.showMode === 2" type="info" size="small"
|
|
||||||
>不展示</el-tag
|
|
||||||
>
|
|
||||||
<el-tag v-else type="warning">未知</el-tag>
|
<el-tag v-else type="warning">未知</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column sortable prop="bz" show-overflow-tooltip label="备注"></el-table-column>
|
||||||
sortable
|
<el-table-column sortable prop="qxbs" label="权限标识" show-overflow-tooltip align="center"
|
||||||
prop="bz"
|
width="140px"></el-table-column>
|
||||||
show-overflow-tooltip
|
|
||||||
label="备注"
|
|
||||||
></el-table-column>
|
|
||||||
<el-table-column
|
|
||||||
sortable
|
|
||||||
prop="qxbs"
|
|
||||||
label="权限标识"
|
|
||||||
show-overflow-tooltip
|
|
||||||
align="center"
|
|
||||||
width="140px"
|
|
||||||
></el-table-column>
|
|
||||||
<el-table-column label="操作" align="center" fixed="right" width="220">
|
<el-table-column label="操作" align="center" fixed="right" width="220">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button @click="update(row)" size="small">编辑</el-button>
|
<el-button @click="update(row)" size="small">编辑</el-button>
|
||||||
<el-button @click="addItemMenu(row)" size="small"
|
<el-button @click="addItemMenu(row)" size="small">添加下级</el-button>
|
||||||
>添加下级</el-button
|
<el-popconfirm confirm-button-text="是" cancel-button-text="否" icon-color="red" title="确定要删除?"
|
||||||
>
|
@confirm="delDictItem(row)">
|
||||||
<el-popconfirm
|
|
||||||
confirm-button-text="是"
|
|
||||||
cancel-button-text="否"
|
|
||||||
icon-color="red"
|
|
||||||
title="确定要删除?"
|
|
||||||
@confirm="delDictItem(row)"
|
|
||||||
>
|
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-button type="danger" size="small">删除</el-button>
|
<el-button type="danger" size="small">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
@ -142,16 +73,9 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="fenye" :style="{ top: tableHeight + 'px' }">
|
<div class="fenye" :style="{ top: tableHeight + 'px' }">
|
||||||
<el-pagination
|
<el-pagination class="pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||||
class="pagination"
|
:current-page="listQuery.page" :page-sizes="[10, 20, 50, 100]" :page-size="listQuery.size"
|
||||||
@size-change="handleSizeChange"
|
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
|
||||||
@current-change="handleCurrentChange"
|
|
||||||
:current-page="listQuery.page"
|
|
||||||
:page-sizes="[10, 20, 50, 100]"
|
|
||||||
:page-size="listQuery.size"
|
|
||||||
layout="total, sizes, prev, pager, next, jumper"
|
|
||||||
:total="total"
|
|
||||||
></el-pagination>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="dialogFormVisible" class="dialog">
|
<div v-if="dialogFormVisible" class="dialog">
|
||||||
@ -159,82 +83,32 @@
|
|||||||
<span class="title">{{ isEdit ? "修改" : "新增" }}</span>
|
<span class="title">{{ isEdit ? "修改" : "新增" }}</span>
|
||||||
<div>
|
<div>
|
||||||
<!-- 修改 -->
|
<!-- 修改 -->
|
||||||
<el-button
|
<el-button v-if="isEdit" type="primary" size="small" @click="onSave" :loading="buttonLoading">保存</el-button>
|
||||||
v-if="isEdit"
|
|
||||||
type="primary"
|
|
||||||
size="small"
|
|
||||||
@click="onSave"
|
|
||||||
:loading="buttonLoading"
|
|
||||||
>保存</el-button
|
|
||||||
>
|
|
||||||
<!-- 新增 -->
|
<!-- 新增 -->
|
||||||
<el-button
|
<el-button v-else type="primary" size="small" @click="onAdd" :loading="buttonLoading">保存</el-button>
|
||||||
v-else
|
|
||||||
type="primary"
|
|
||||||
size="small"
|
|
||||||
@click="onAdd"
|
|
||||||
:loading="buttonLoading"
|
|
||||||
>保存</el-button
|
|
||||||
>
|
|
||||||
<el-button size="small" @click="closeDialog">关闭</el-button>
|
<el-button size="small" @click="closeDialog">关闭</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-form
|
<el-form class="mosty-from-wrap" :inline="true" label-position="top" ref="editRef" :rules="rules"
|
||||||
class="mosty-from-wrap"
|
:model="dialogForm">
|
||||||
:inline="true"
|
<el-form-item class="one" label="菜单名称" prop="menuName" label-width="140px">
|
||||||
label-position="top"
|
<el-input v-model="dialogForm.menuName" show-word-limit maxlength="30" autocomplete="off"></el-input>
|
||||||
ref="editRef"
|
|
||||||
:rules="rules"
|
|
||||||
:model="dialogForm"
|
|
||||||
>
|
|
||||||
<el-form-item
|
|
||||||
class="one"
|
|
||||||
label="菜单名称"
|
|
||||||
prop="menuName"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="dialogForm.menuName"
|
|
||||||
show-word-limit
|
|
||||||
maxlength="30"
|
|
||||||
autocomplete="off"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="菜单编码" label-width="140px">
|
<!-- <el-form-item label="菜单编码" label-width="140px">
|
||||||
<el-input v-model="dialogForm.menuCode" show-word-limit maxlength="50" autocomplete="off"></el-input>
|
<el-input v-model="dialogForm.menuCode" show-word-limit maxlength="50" autocomplete="off"></el-input>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item
|
<el-form-item class="one" label="菜单地址" prop="menuUrl" label-width="140px">
|
||||||
class="one"
|
<el-input v-model="dialogForm.menuUrl" show-word-limit maxlength="50" autocomplete="off"></el-input>
|
||||||
label="菜单地址"
|
|
||||||
prop="menuUrl"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="dialogForm.menuUrl"
|
|
||||||
show-word-limit
|
|
||||||
maxlength="50"
|
|
||||||
autocomplete="off"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item
|
<el-form-item class="one" label="是否展示" prop="showMode" label-width="140px">
|
||||||
class="one"
|
|
||||||
label="是否展示"
|
|
||||||
prop="showMode"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<el-radio-group v-model="dialogForm.showMode">
|
<el-radio-group v-model="dialogForm.showMode">
|
||||||
<el-radio :label="1">展示</el-radio>
|
<el-radio :label="1">展示</el-radio>
|
||||||
<el-radio :label="2">不展示</el-radio>
|
<el-radio :label="2">不展示</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item
|
<el-form-item class="one" label="菜单类型" prop="menuType" label-width="140px">
|
||||||
class="one"
|
|
||||||
label="菜单类型"
|
|
||||||
prop="menuType"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<el-radio-group :disabled="isEdit" v-model="dialogForm.menuType">
|
<el-radio-group :disabled="isEdit" v-model="dialogForm.menuType">
|
||||||
<el-radio :label="1">菜单组</el-radio>
|
<el-radio :label="1">菜单组</el-radio>
|
||||||
<el-radio :label="2">菜单</el-radio>
|
<el-radio :label="2">菜单</el-radio>
|
||||||
@ -242,59 +116,19 @@
|
|||||||
<el-radio :label="4">资源</el-radio>
|
<el-radio :label="4">资源</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item class="one" v-if="dialogForm.menuType == 4" prop="buttonResource" label="按钮标识"
|
||||||
class="one"
|
label-width="140px">
|
||||||
v-if="dialogForm.menuType == 4"
|
<el-input v-model="dialogForm.buttonResource" autocomplete="off"></el-input>
|
||||||
prop="buttonResource"
|
|
||||||
label="按钮标识"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="dialogForm.buttonResource"
|
|
||||||
autocomplete="off"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item class="one" label="菜单编码" prop="menuCode" label-width="140px">
|
||||||
class="one"
|
<el-input v-model="dialogForm.menuCode" show-word-limit maxlength="50" placeholder="权限标识对应路由name"
|
||||||
label="菜单编码"
|
autocomplete="off"></el-input>
|
||||||
prop="menuCode"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="dialogForm.menuCode"
|
|
||||||
show-word-limit
|
|
||||||
maxlength="50"
|
|
||||||
placeholder="权限标识对应路由name"
|
|
||||||
autocomplete="off"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item class="one" label="选择图标" prop="iconName" label-width="140px">
|
||||||
class="one"
|
<ChooseIcon width="400" :limit="13" :isImg="false" clearable="" v-model="dialogForm.iconName"></ChooseIcon>
|
||||||
label="选择图标"
|
|
||||||
prop="iconName"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<ChooseIcon
|
|
||||||
width="400"
|
|
||||||
:limit="13"
|
|
||||||
:isImg="false"
|
|
||||||
clearable=""
|
|
||||||
v-model="dialogForm.iconName"
|
|
||||||
></ChooseIcon>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item class="one" label="排序" prop="orderNo" label-width="140px">
|
||||||
class="one"
|
<el-input-number v-model="dialogForm.orderNo" class="mx-4" :min="1" :max="100" controls-position="right" />
|
||||||
label="排序"
|
|
||||||
prop="orderNo"
|
|
||||||
label-width="140px"
|
|
||||||
>
|
|
||||||
<el-input-number
|
|
||||||
v-model="dialogForm.orderNo"
|
|
||||||
class="mx-4"
|
|
||||||
:min="1"
|
|
||||||
:max="100"
|
|
||||||
controls-position="right"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="状态" label-width="140px">
|
<!-- <el-form-item label="状态" label-width="140px">
|
||||||
<el-select v-model="dialogForm.zdywlb" placeholder="请选择业务类别">
|
<el-select v-model="dialogForm.zdywlb" placeholder="请选择业务类别">
|
||||||
@ -303,13 +137,8 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>-->
|
</el-form-item>-->
|
||||||
<el-form-item class="one" label="备注" label-width="140px">
|
<el-form-item class="one" label="备注" label-width="140px">
|
||||||
<el-input
|
<el-input v-model="dialogForm.bz" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" show-word-limit
|
||||||
v-model="dialogForm.bz"
|
maxlength="200"></el-input>
|
||||||
:autosize="{ minRows: 2, maxRows: 4 }"
|
|
||||||
type="textarea"
|
|
||||||
show-word-limit
|
|
||||||
maxlength="200"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
@ -319,6 +148,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import ChooseIcon from "@/components/MyComponents/ChooseIcon";
|
import ChooseIcon from "@/components/MyComponents/ChooseIcon";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import {
|
import {
|
||||||
ref,
|
ref,
|
||||||
reactive,
|
reactive,
|
||||||
@ -349,6 +179,15 @@ const rules = ref({
|
|||||||
iconName: [{ required: true, message: " 请选择图标" }],
|
iconName: [{ required: true, message: " 请选择图标" }],
|
||||||
orderNo: [{ required: true, message: "请填写排序号 " }]
|
orderNo: [{ required: true, message: "请填写排序号 " }]
|
||||||
});
|
});
|
||||||
|
const searchConfiger = ref([
|
||||||
|
{
|
||||||
|
label: "菜单名称",
|
||||||
|
prop: "menuName",
|
||||||
|
placeholder: "请输入菜单名称",
|
||||||
|
showType: "input"
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
//查询参数
|
//查询参数
|
||||||
@ -359,7 +198,7 @@ const listQuery = ref({
|
|||||||
dictCode: "",
|
dictCode: "",
|
||||||
xtZxbz: "",
|
xtZxbz: "",
|
||||||
current: 1,
|
current: 1,
|
||||||
size:20
|
size: 20
|
||||||
});
|
});
|
||||||
const buttonLoading = ref(false);
|
const buttonLoading = ref(false);
|
||||||
const topParentId = ref("");
|
const topParentId = ref("");
|
||||||
@ -376,7 +215,7 @@ const dialogFormVisible = ref(false);
|
|||||||
const formLabelWidth = "140px";
|
const formLabelWidth = "140px";
|
||||||
// 获取数据的方法
|
// 获取数据的方法
|
||||||
const getListData = async () => {
|
const getListData = async () => {
|
||||||
const params = listQuery.value;
|
const params = {...listQuery.value,ssxt:'sgxt'};
|
||||||
loading.value = true
|
loading.value = true
|
||||||
const res = await getSystemMeny(params);
|
const res = await getSystemMeny(params);
|
||||||
tableData.value = res?.records;
|
tableData.value = res?.records;
|
||||||
@ -384,7 +223,8 @@ const getListData = async () => {
|
|||||||
loading.value = false
|
loading.value = false
|
||||||
};
|
};
|
||||||
const editRef = ref(null);
|
const editRef = ref(null);
|
||||||
const handleFilter = () => {
|
const onSearch = (val) => {
|
||||||
|
listQuery.value.menuName = val.menuName;
|
||||||
listQuery.value.current = 1;
|
listQuery.value.current = 1;
|
||||||
getListData();
|
getListData();
|
||||||
};
|
};
|
||||||
@ -443,13 +283,14 @@ const onSave = () => {
|
|||||||
if (valid) {
|
if (valid) {
|
||||||
buttonLoading.value = true;
|
buttonLoading.value = true;
|
||||||
updateSysMenu({
|
updateSysMenu({
|
||||||
...dialogForm.value
|
...dialogForm.value,
|
||||||
|
ssxt:'sgxt'
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
dialogFormVisible.value = false;
|
dialogFormVisible.value = false;
|
||||||
ElMessage.success("修改成功");
|
ElMessage.success("修改成功");
|
||||||
|
getListData();
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
handleFilter();
|
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
@ -467,12 +308,13 @@ const onAdd = () => {
|
|||||||
buttonLoading.value = true;
|
buttonLoading.value = true;
|
||||||
addSysMenu({
|
addSysMenu({
|
||||||
...dialogForm.value,
|
...dialogForm.value,
|
||||||
parentId: id.value
|
parentId: id.value,
|
||||||
|
ssxt:'sgxt'
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
dialogFormVisible.value = false;
|
dialogFormVisible.value = false;
|
||||||
ElMessage.success("新增成功");
|
ElMessage.success("新增成功");
|
||||||
handleFilter();
|
getListData();
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
@ -522,6 +364,7 @@ onUnmounted(() => {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import "~@/assets/css/layout.scss";
|
@import "~@/assets/css/layout.scss";
|
||||||
@import "~@/assets/css/element-plus.scss";
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
.user-manage-container {
|
.user-manage-container {
|
||||||
.table-header-wrap {
|
.table-header-wrap {
|
||||||
margin-bottom: 22px;
|
margin-bottom: 22px;
|
||||||
@ -541,7 +384,8 @@ onUnmounted(() => {
|
|||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
::v-deep .el-loading-mask{
|
|
||||||
background:rgba(0,0,0,.5)
|
::v-deep .el-loading-mask {
|
||||||
|
background: rgba(0, 0, 0, .5)
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -17,8 +17,8 @@
|
|||||||
default-expand-all
|
default-expand-all
|
||||||
:check-strictly="true"
|
:check-strictly="true"
|
||||||
@check="checkeTree"
|
@check="checkeTree"
|
||||||
>
|
/>
|
||||||
</el-tree>
|
|
||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
@ -69,7 +69,7 @@ const onComfirm = () => {
|
|||||||
//所有权限
|
//所有权限
|
||||||
const allPermission = ref([]);
|
const allPermission = ref([]);
|
||||||
const getPermissionList = async () => {
|
const getPermissionList = async () => {
|
||||||
const res = await getMenuTree();
|
const res = await getMenuTree({ssxt:'sgxt'});
|
||||||
allPermission.value = res;
|
allPermission.value = res;
|
||||||
};
|
};
|
||||||
getPermissionList();
|
getPermissionList();
|
||||||
|
|||||||
@ -56,6 +56,8 @@ const init = (type, row) => {
|
|||||||
} else {
|
} else {
|
||||||
disabled.value = false;
|
disabled.value = false;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
disabled.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,18 +2,14 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
<Search :searchArr="searchConfiger" @submit="onSearch">
|
||||||
</div>
|
|
||||||
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
|
|
||||||
<template #left>
|
|
||||||
<el-button type="primary" size="small" @click="handleAdd('add', null)">添加值班</el-button>
|
<el-button type="primary" size="small" @click="handleAdd('add', null)">添加值班</el-button>
|
||||||
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
<el-button type="danger" size="small" @click="handleRow()">批量删除</el-button>
|
||||||
</template>
|
</Search>
|
||||||
</PageTitle>
|
</div>
|
||||||
<!-- 按钮组 -->
|
<!-- 按钮组 -->
|
||||||
<div class="content">
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="handleChooseData">
|
@chooseData="handleChooseData">
|
||||||
@ -30,11 +26,9 @@
|
|||||||
}"></Pages>
|
}"></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<AddForm ref="addForm" @getList="getList" />
|
<AddForm ref="addForm" @getList="getList" />
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -149,7 +143,7 @@ addForm.value.init(type, row);
|
|||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -42,12 +42,13 @@ const checkData = reactive({
|
|||||||
hasChoose: ["一级", "二级", "三级", "四级"]
|
hasChoose: ["一级", "二级", "三级", "四级"]
|
||||||
});
|
});
|
||||||
const checkDatas = reactive({
|
const checkDatas = reactive({
|
||||||
list: ['七类重点人','布控','无人机'],
|
// list: ['七类重点人','布控','无人机'],
|
||||||
hasChoose: ['七类重点人']
|
list: ['身份预警','行为预警','组合预警'],
|
||||||
|
hasChoose: ['身份预警','行为预警','组合预警']
|
||||||
});
|
});
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const yjJb = ref(['01', '02', '03', '04']);
|
const yjJb = ref(['01', '02', '03', '04']);
|
||||||
const yjLx = ref(['01']);
|
const yjLx = ref(['21','22','23']);
|
||||||
const pageNum = ref(1);
|
const pageNum = ref(1);
|
||||||
const loading = ref(false); // 加载中
|
const loading = ref(false); // 加载中
|
||||||
const personList = ref([]);
|
const personList = ref([]);
|
||||||
@ -89,13 +90,19 @@ function changeDatas(val) {
|
|||||||
checkDatas.hasChoose = val;
|
checkDatas.hasChoose = val;
|
||||||
let ids = [];
|
let ids = [];
|
||||||
val.forEach(it => {
|
val.forEach(it => {
|
||||||
if (it == '七类重点人') ids.push('01');
|
// if (it == '七类重点人') ids.push('01');
|
||||||
if (it == '布控') ids.push('02');
|
// if (it == '布控') ids.push('02');
|
||||||
if (it == '无人机') ids.push('03');
|
// if (it == '无人机') ids.push('03');
|
||||||
|
if (it == '身份预警') ids.push('21');
|
||||||
|
if (it == '行为预警') ids.push('22');
|
||||||
|
if (it == '组合预警') ids.push('23');
|
||||||
});
|
});
|
||||||
yjLx.value = ids
|
yjLx.value = ids
|
||||||
if (val.length == 0) personList.value = [];
|
if (val.length == 0) {
|
||||||
else getList();
|
personList.value = [];
|
||||||
|
} else {
|
||||||
|
getList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const isExpanded = ref(false); // 控制展开/收缩状态
|
const isExpanded = ref(false); // 控制展开/收缩状态
|
||||||
|
|
||||||
@ -152,22 +159,26 @@ onUnmounted(() => {
|
|||||||
|
|
||||||
// 触底加载
|
// 触底加载
|
||||||
const loadList = () => {
|
const loadList = () => {
|
||||||
if (personList.value.length == total.value) return;
|
// 防止重复加载和无更多数据时的加载
|
||||||
|
if (loading.value || personList.value.length == total.value) return;
|
||||||
pageNum.value++;
|
pageNum.value++;
|
||||||
getList()
|
console.log(pageNum.value,"触底");
|
||||||
|
getList(true) // 传递true表示触底加载,不显示loading
|
||||||
}
|
}
|
||||||
const ORDIMG = 'https://89.40.7.122:38496/image'
|
const ORDIMG = 'https://89.40.7.122:38496/image'
|
||||||
const IMGYM = 'https://sg.lz.dsj.xz/dhimage'
|
const IMGYM = 'https://sg.lz.dsj.xz/dhimage'
|
||||||
|
|
||||||
const getList = (type) => {
|
const getList = (type) => {
|
||||||
let data = { pageSize: 30, pageCurrent: pageNum.value, yjjbList: yjJb.value, lylxList: yjLx.value };
|
console.log(pageNum.value);
|
||||||
|
|
||||||
|
let data = { pageSize: 30, pageCurrent: pageNum.value, yjjbList: yjJb.value, yjLylxList: yjLx.value?.length ? yjLx.value : ['21','22','23'] };
|
||||||
loading.value = !type ? true : false;
|
loading.value = !type ? true : false;
|
||||||
getPageAllList(data).then(res => {
|
getPageAllList(data).then(res => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
let arr = res.records.map(item => {
|
let arr = res.records.map(item => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
yjtp:item.yjlx=='01'? item.yjtp.replace(ORDIMG, IMGYM) : item.yjtp
|
// yjtp:item.yjlx=='01'? item.yjtp.replace(ORDIMG, IMGYM) : item.yjtp
|
||||||
}
|
}
|
||||||
}) || [];
|
}) || [];
|
||||||
personList.value = pageNum.value == 1 ? arr : personList.value.concat(arr);
|
personList.value = pageNum.value == 1 ? arr : personList.value.concat(arr);
|
||||||
@ -200,7 +211,6 @@ const chooseItem = (item) => {
|
|||||||
case '01':
|
case '01':
|
||||||
tbYjxxGetInfo(item.id).then(res => {
|
tbYjxxGetInfo(item.id).then(res => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
|
||||||
content.value = {
|
content.value = {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
ryxm: res.yjRyxm || '',
|
ryxm: res.yjRyxm || '',
|
||||||
@ -241,7 +251,6 @@ const chooseItem = (item) => {
|
|||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
case '03':
|
case '03':
|
||||||
|
|
||||||
yjzxyjzxSfyjSelectList(item.id).then(res => {
|
yjzxyjzxSfyjSelectList(item.id).then(res => {
|
||||||
content.value = {
|
content.value = {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
|
|||||||
@ -17,19 +17,45 @@
|
|||||||
<GdMap :mapid="'map-99'"></GdMap>
|
<GdMap :mapid="'map-99'"></GdMap>
|
||||||
<div class="button-container">
|
<div class="button-container">
|
||||||
<template v-for="(value, index) in butList" :key="index">
|
<template v-for="(value, index) in butList" :key="index">
|
||||||
<el-popover v-if="value.label === '警情' && value.onChage" placement="top" :width="200" trigger="hover">
|
<el-popover v-if="value.label === '警情' && value.onChage" placement="top" :width="480" trigger="click"
|
||||||
|
@show="changeBut(value)">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<div class="but" :class="{ 'butOk': value.onChage }" @click="changeBut(value)">
|
<!-- -->
|
||||||
|
<div class="but" :class="{ 'butOk': value.onChage }">
|
||||||
{{ value.label }}
|
{{ value.label }}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="jqdj-popover">
|
<div class="jqdj-popover">
|
||||||
<el-checkbox-group v-model="jqdjdmFilter" @change="handleJqdjFilterChange">
|
<div class="filter-item">
|
||||||
<el-checkbox v-for="item in D_BZ_JQDJ" :key="item.dm" :label="item.dm">
|
<span class="filter-label">等级:</span>
|
||||||
|
<el-checkbox-group v-model="jqdjdmFilter" @change="handleJqdjFilterChange" class="checkbox-group">
|
||||||
|
<el-checkbox v-for="item in D_BZ_JQDJ" :key="item.dm" :label="item.dm" class="checkbox-item">
|
||||||
{{ item.zdmc }}
|
{{ item.zdmc }}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="filter-item">
|
||||||
|
<span class="filter-label">时间:</span>
|
||||||
|
<el-date-picker style="width: 100%;" v-model="timeRange" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间"
|
||||||
|
format="YYYY-MM-DD HH:mm:ss" @change="handleTimeRangeChange" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</el-popover>
|
||||||
|
<el-popover v-else-if="value.label === '事件' && value.onChage" placement="top" :width="480" trigger="click"
|
||||||
|
@show="changeBut(value)">
|
||||||
|
<template #reference>
|
||||||
|
<div class="but" :class="{ 'butOk': value.onChage }">
|
||||||
|
{{ value.label }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div class="jqdj-popover">
|
||||||
|
<div class="filter-item">
|
||||||
|
<span class="filter-label">时间:</span>
|
||||||
|
<el-date-picker v-model="sjTimeRange" type="datetimerange" style="width: 100%;" start-placeholder="开始时间" end-placeholder="结束时间"
|
||||||
|
format="YYYY-MM-DD HH:mm:ss" @change="getTimeRange" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
<div v-else class="but" :class="{ 'butOk': value.onChage }" @click="changeBut(value)">
|
<div v-else class="but" :class="{ 'butOk': value.onChage }" @click="changeBut(value)">
|
||||||
{{ value.label }}
|
{{ value.label }}
|
||||||
@ -63,7 +89,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="dataList" v-infinite-scroll="loadMore" infinite-scroll-disabled="loading"
|
<div class="dataList" v-infinite-scroll="loadMore" infinite-scroll-disabled="loading"
|
||||||
infinite-scroll-distance="10">
|
infinite-scroll-distance="10">
|
||||||
|
|
||||||
<template v-if="changeState">
|
<template v-if="changeState">
|
||||||
<div class="item" v-for="(item, index) in jqList" :key="index" @click="clickJq(item)">
|
<div class="item" v-for="(item, index) in jqList" :key="index" @click="clickJq(item)">
|
||||||
<div class="data-title">接警单:{{ item.jjdbh }}</div>
|
<div class="data-title">接警单:{{ item.jjdbh }}</div>
|
||||||
@ -143,14 +168,48 @@ const jqdjdmFilter = ref([])
|
|||||||
const handleJqdjFilterChange = () => {
|
const handleJqdjFilterChange = () => {
|
||||||
getLzJcjPjdb()
|
getLzJcjPjdb()
|
||||||
}
|
}
|
||||||
|
// 获取当天的开始和结束时间
|
||||||
|
const getCurrentMonthRange = () => {
|
||||||
|
const now = new Date();
|
||||||
|
const year = now.getFullYear();
|
||||||
|
const month = now.getMonth();
|
||||||
|
const day = now.getDate();
|
||||||
|
|
||||||
|
// 当天零点
|
||||||
|
const start = new Date(year, month, day, 0, 0, 0);
|
||||||
|
// 当天23:59:59
|
||||||
|
const end = new Date(year, month, day, 23, 59, 59);
|
||||||
|
|
||||||
|
return [start, end];
|
||||||
|
};
|
||||||
|
|
||||||
|
const timeRange = ref(getCurrentMonthRange())
|
||||||
|
const sjTimeRange = ref()
|
||||||
|
const handleTimeRangeChange = () => {
|
||||||
|
getLzJcjPjdb()
|
||||||
|
}
|
||||||
|
const getTimeRange = () => {
|
||||||
|
getZdsj()
|
||||||
|
};
|
||||||
// 底部按钮
|
// 底部按钮
|
||||||
const changeBut = (row) => {
|
const changeBut = (row) => {
|
||||||
|
|
||||||
if (row.label == '清除') {
|
if (row.label == '清除') {
|
||||||
emitter.emit('deletePointArea', 'sj_flash')
|
emitter.emit('deletePointArea', 'sj_flash')
|
||||||
emitter.emit('deletePointArea', 'jq_flash')
|
emitter.emit('deletePointArea', 'jq_flash')
|
||||||
|
emitter.emit('deletePointArea', 'jq')
|
||||||
|
emitter.emit('deletePointArea', 'sj')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 警情按钮点击时不改变onChage状态,因为它需要显示popover
|
||||||
|
if (row.label == '警情') {
|
||||||
|
// 只执行获取警情数据的操作,不改变状态
|
||||||
|
getLzJcjPjdb()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (row.label == '事件') {
|
||||||
|
getZdsj()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let index = butList.value.findIndex(item => item.label == row.label)
|
let index = butList.value.findIndex(item => item.label == row.label)
|
||||||
@ -170,12 +229,28 @@ const changeBut = (row) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 格式化日期为YYYY-MM-DD HH:mm:ss格式
|
||||||
|
const formatDate = (date) => {
|
||||||
|
if (!date) return '';
|
||||||
|
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
|
const day = String(date.getDate()).padStart(2, '0');
|
||||||
|
const hours = String(date.getHours()).padStart(2, '0');
|
||||||
|
const minutes = String(date.getMinutes()).padStart(2, '0');
|
||||||
|
const seconds = String(date.getSeconds()).padStart(2, '0');
|
||||||
|
|
||||||
|
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||||
|
};
|
||||||
|
|
||||||
// 获取所有的一级警情
|
// 获取所有的一级警情
|
||||||
const getLzJcjPjdb = () => {
|
const getLzJcjPjdb = () => {
|
||||||
const jqdjdmStr = jqdjdmFilter.value.length > 0 ? jqdjdmFilter.value.join(',') : ''
|
const jqdjdmStr = jqdjdmFilter.value.length > 0 ? jqdjdmFilter.value.join(',') : ''
|
||||||
emitter.emit("deletePointArea", "jq")
|
emitter.emit("deletePointArea", "jq")
|
||||||
qcckGet({
|
qcckGet({
|
||||||
jqdjdm: jqdjdmStr
|
jqdjdm: jqdjdmStr,
|
||||||
|
startTime: timeRange.value ? formatDate(timeRange.value[0]) : '',
|
||||||
|
endTime: timeRange.value ? formatDate(timeRange.value[1]) : '',
|
||||||
}, "/mosty-gsxt/lzJcjPjdb/selectList").then(res => {
|
}, "/mosty-gsxt/lzJcjPjdb/selectList").then(res => {
|
||||||
let list = res.filter(item => item.fxdwjd && item.fxdwjd).map(item => {
|
let list = res.filter(item => item.fxdwjd && item.fxdwjd).map(item => {
|
||||||
return {
|
return {
|
||||||
@ -194,7 +269,10 @@ const loading = ref(false)
|
|||||||
const changeState = ref(true)// 点击切换
|
const changeState = ref(true)// 点击切换
|
||||||
// 获取所有的重点事件
|
// 获取所有的重点事件
|
||||||
const getZdsj = () => {
|
const getZdsj = () => {
|
||||||
qcckGet({}, "/mosty-gsxt/zdsj/selectList").then(res => {
|
qcckGet({
|
||||||
|
startTime: sjTimeRange.value ? sjTimeRange.value[0] : '',
|
||||||
|
endTime: sjTimeRange.value ? sjTimeRange.value[1] : '',
|
||||||
|
}, "/mosty-gsxt/zdsj/selectList").then(res => {
|
||||||
let list = res.filter(item => item.jd && item.wd).map(item => {
|
let list = res.filter(item => item.jd && item.wd).map(item => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
@ -596,15 +674,40 @@ const coordStringHandler = (res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.jqdj-popover {
|
.jqdj-popover {
|
||||||
:deep(.el-checkbox-group) {
|
padding: 10px;
|
||||||
|
|
||||||
|
.filter-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
align-items: center;
|
||||||
gap: 8px;
|
flex-wrap: nowrap;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-label {
|
||||||
|
white-space: nowrap;
|
||||||
|
color: #333;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-group {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
gap: 15px;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-checkbox) {
|
:deep(.el-checkbox) {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.el-checkbox__label) {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-date-editor) {
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.display-flex {
|
.display-flex {
|
||||||
|
|||||||
Reference in New Issue
Block a user