Compare commits

...

7 Commits

Author SHA1 Message Date
5cbde4297d 123 2026-02-25 09:36:05 +08:00
a05b857b6c 修改图片 2026-02-03 09:36:25 +08:00
8a9cd4b9a1 修改需求 2026-02-02 19:50:37 +08:00
lcw
c7a8eb35b2 lcw 2026-02-02 00:27:02 +08:00
lcw
c8de256b2b lcw 2026-01-30 19:29:30 +08:00
lcw
fb59556148 Merge branch 'main' of http://61.139.16.27:26684/lcw/xzlz_JczWeb 2026-01-28 22:02:27 +08:00
lcw
18b5b1bb4f lcw 2026-01-28 22:02:20 +08:00
24 changed files with 1506 additions and 291 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -433,6 +433,13 @@ export const BpcryselectCrewList = (params) => {
params
});
};
export const BpcrygetRypcList = (data) => {
return request({
url: api + `/tbJczBpcry/getRypcList`,
method: "post",
data
});
};
// 车
export const BpcryselectCarList = (params) => {
return request({

View File

@ -1,7 +1,8 @@
<template>
<div :id="mapid" class="map"></div>
<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-item>
<div class="mapImageItem">
@ -30,8 +31,7 @@
</el-carousel> -->
<!-- 地图缩放 -->
<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>
</template>
@ -44,7 +44,7 @@ import { getItem } from "@/utils/storage";
const conditionRoute = ref(true); //路况
const mMap = ref(null); //地图对象
const mapUtil = ref(null); //地图工具对象
const zoomTarget = ref(6);
const zoomTarget = ref(15);
const props = defineProps({
mapid: {
@ -70,8 +70,7 @@ const props = defineProps({
isShowDraw: {
type: Boolean,
default: false
},
}
});
try {
const userInfo = getItem("deptId")[0].deptCode;
@ -89,66 +88,37 @@ onMounted(() => {
map = new EliMap({
id: props.mapid,
crs: "EPSG:3857",
crs: "EPSG:4490",
style: {
glyphs: "./fonts/{fontstack}/{range}.pbf",
center: [94.36,29.65],
zoom: 11
center: [94.36057012, 29.64276831],
zoom: 15
},
minZoom: 7,
minZoom: 5,
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;
map.mapboxGLMap.on("load", () => {
map.addGaudLayer({
url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
})
map.addWMTSLayer(
"/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();
// 地图加载完成后发出事件
// emit('mapLoaded')
});
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(); //初始化加载绘制工具
// 设置地图中心点及图层
@ -184,6 +154,10 @@ onMounted(() => {
emitter.on("showSquire", (obj) => {
mapUtil.value.zdySquire(obj);
});
// 展示气泡框
emitter.on("makerPopup", (obj) => {
mapUtil.value.makerPopup(obj);
});
// 绘制图形 - 回显区域
emitter.on("drawShape", (res) => {
@ -289,7 +263,6 @@ const mapSetLayer = (id, source) => {
//获取地图绘制的数据
const resFun = (coord, type, flag, data) => {
emitter.emit("coordString", {
coord: coord,
type: type,
@ -303,12 +276,6 @@ const handleZoom = (val) => {
map.mapboxGLMap.setZoom(val);
};
emitter.on("map-resize", () => {
if (map && map.mapboxGLMap) {
map.mapboxGLMap.resize();
}
});
// 是否打开或者关闭路况
const handleSwitch = (val) => {
if (val) {
@ -325,6 +292,7 @@ onUnmounted(() => {
emitter.off("showPoint");
emitter.off("deletePointArea");
emitter.off("deletePointAreaOne");
emitter.off("makerPopup");
emitter.off("drawShape");
emitter.off("echoPlane");
emitter.off("removeEara");
@ -338,7 +306,6 @@ onUnmounted(() => {
emitter.off("diffusionCircle");
emitter.off("SsCircle");
emitter.off("ClearssCircle");
emitter.off("map-resize");
});
</script>
@ -361,29 +328,35 @@ onUnmounted(() => {
right: 398px;
bottom: 4px;
z-index: 9;
.mapImageItem {
border: 1px solid #08aae8;
background: rgb(9, 26, 70);
&>img {
width: 100%;
height: 50px;
}
&>div {
text-align: center;
position: relative;
top: -3px;
}
}
.zoomTargetBox {
margin-top: 10px;
margin-left: 23px;
}
::v-deep .el-input-number__decrease,
::v-deep .el-input-number__increase {
background: #133362;
color: #fff;
border: none;
}
::v-deep .el-input__inner {
background: #0c1641;
}

View File

@ -1,8 +1,7 @@
<template>
<div :id="mapid" class="map"></div>
<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-item>
<div class="mapImageItem">
@ -31,7 +30,8 @@
</el-carousel> -->
<!-- 地图缩放 -->
<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>
</template>
@ -71,14 +71,7 @@ const props = defineProps({
type: Boolean,
default: false
},
minZoom: {
type: Number,
default: 7
},
maxZoom: {
type: Number,
default: 18
},
});
try {
const userInfo = getItem("deptId")[0].deptCode;
@ -96,37 +89,66 @@ onMounted(() => {
map = new EliMap({
id: props.mapid,
crs: "EPSG:4490",
crs: "EPSG:3857",
style: {
glyphs: "./fonts/{fontstack}/{range}.pbf",
center: [94.36057012, 29.64276831],
zoom: 15
center: [94.36,29.65],
zoom: 11
},
minZoom: props.minZoom,
maxZoom: props.maxZoom,
minZoom: 7,
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;
map.mapboxGLMap.on("load", () => {
map.addWMTSLayer(
"/PGIS_S_TileMapServer/Maps/XZDJ_DJ/EzMap"
,
{
Service: "getImage",
Type: "RGB",
ZoomOffset: "0",
V: "0.3",
Zoom: "{z}",
Row: "{y}",
Col: "{x}"
},
{
tileSize: 300
}
);
map.addGaudLayer({
url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
})
zoomTarget.value = map.mapboxGLMap.getZoom();
//
// emit('mapLoaded')
});
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(); //
//
@ -267,6 +289,7 @@ const mapSetLayer = (id, source) => {
//
const resFun = (coord, type, flag, data) => {
emitter.emit("coordString", {
coord: coord,
type: type,
@ -280,6 +303,12 @@ const handleZoom = (val) => {
map.mapboxGLMap.setZoom(val);
};
emitter.on("map-resize", () => {
if (map && map.mapboxGLMap) {
map.mapboxGLMap.resize();
}
});
//
const handleSwitch = (val) => {
if (val) {
@ -309,6 +338,7 @@ onUnmounted(() => {
emitter.off("diffusionCircle");
emitter.off("SsCircle");
emitter.off("ClearssCircle");
emitter.off("map-resize");
});
</script>
@ -331,35 +361,29 @@ onUnmounted(() => {
right: 398px;
bottom: 4px;
z-index: 9;
.mapImageItem {
border: 1px solid #08aae8;
background: rgb(9, 26, 70);
& > img {
width: 100%;
height: 50px;
}
& > div {
text-align: center;
position: relative;
top: -3px;
}
}
.zoomTargetBox {
margin-top: 10px;
margin-left: 23px;
}
::v-deep .el-input-number__decrease,
::v-deep .el-input-number__increase {
background: #133362;
color: #fff;
border: none;
}
::v-deep .el-input__inner {
background: #0c1641;
}

View File

@ -395,25 +395,48 @@ export const publicRoutes = [
icon: "article"
},
children: [
// {
// path: "/Inspector",
// name: "Inspector",
// component: () =>
// import("@/views/backOfficeSystem/peopleManag/Inspector/index"),
// meta: {
// title: "过检人像管理",
// icon: "article"
// }
// },
// {
// path: "/InspectedVehicle",
// name: "InspectedVehicle",
// component: () =>
// import(
// "@/views/backOfficeSystem/peopleManag/InspectedVehicle/index"
// ),
// meta: {
// title: "过检车辆管理",
// icon: "article"
// }
// },
{
path: "/Inspector",
name: "Inspector",
path: "/transitPassengers",
name: "transitPassengers",
component: () =>
import("@/views/backOfficeSystem/peopleManag/Inspector/index"),
import("@/views/backOfficeSystem/peopleManag/transitPassengers/index"),
meta: {
title: "过检人像管理",
title: "过站人员管理",
icon: "article"
}
},
{
path: "/InspectedVehicle",
name: "InspectedVehicle",
path: "/passingThroughVehicle",
name: "passingThroughVehicle",
component: () =>
import(
"@/views/backOfficeSystem/peopleManag/InspectedVehicle/index"
),
import("@/views/backOfficeSystem/peopleManag/passingThroughVehicle/index"),
meta: {
title: "过车辆管理",
title: "过车辆管理",
icon: "article"
}
},

View File

@ -103,11 +103,8 @@ const JczMsg = ref({})
const getJczselectById = () => {
const id = router.query.id
JczselectById({ id: id }).then((res) => {
console.log(res);
JczMsg.value = res
}).catch((err) => {
});
}
onMounted(() => {

View File

@ -4,36 +4,38 @@
<div class="column-container">
<div class="gradient-title">过站人员</div>
<div class="search-container">
<el-input v-model="timeData.ryXm" placeholder="请输入姓名" class="search-input" clearable />
<el-date-picker v-model="timeData.time" type="daterange" unlink-panels range-separator="至"
start-placeholder="开始时间" end-placeholder="结束时间" :shortcuts="shortcuts" :size="size" />
<el-button type="primary" class="search-button">搜索</el-button>
<el-input v-model="gzrParams.xm" placeholder="请输入姓名" class="search-input" clearable />
<el-date-picker v-model="gzrParams.startTime" type="daterange" unlink-panels range-separator="至"
start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss" />
<el-button type="primary" class="search-button" @click="getPageR">搜索</el-button>
</div>
<div class="waning-cards noScollLine">
<div class="warning-card" v-for="(item, index) in 20" :key="index">
<div class="waning-cards noScollLine" v-infinite-scroll="gzrgd">
<div class="warning-card" v-for="(item, index) in gzrParams.dataList" :key="index">
<div class="warning-image">
<img :src="require('@/assets/images/default_male.png')" alt="抓拍图片" />
<img :src="item.cjzp ? item.cjzp : default_male" alt="抓拍图片" />
</div>
<div class="warning-info">
<div class="info-item">
<span class="label">姓名</span>
<span>老王</span>
<span class="tag">老王预警</span>
<span>{{ item.xm }}</span>
<!-- <span class="tag">老王预警</span> -->
</div>
<div class="info-item align-center">
<span class="label">性别</span>
<span class="label">过站类型</span>
<span class="highlight">{{ item.gzlx == '01' ? '进站' : '出站' }}</span>
</div>
<div class="info-item">
<span class="label">相似度</span>
<span class="highlight">95%</span>
<span class="label">身份证号</span>
<span class="highlight">{{ item.zjhm }}</span>
</div>
<div class="info-item">
<span class="label">抓拍时间</span>
<span>2025-10-10 10:00:00</span>
<span>{{ item.gzsj }}</span>
</div>
<div class="info-item align-center">
<span class="label nowrap">抓拍地址</span>
<span class="one_text_detail">上海市普陀区金沙江路 1518 </span>
<span class="one_text_detail">{{ item.kkMc }}</span>
</div>
</div>
</div>
@ -42,36 +44,34 @@
<div class="column-container">
<div class="gradient-title">过站车辆</div>
<div class="search-container">
<el-input v-model="clData.cph" placeholder="请输入车牌号" class="search-input" clearable />
<el-date-picker v-model="clData.time" type="daterange" unlink-panels range-separator="至"
start-placeholder="开始时间" end-placeholder="结束时间" :shortcuts="shortcuts" :size="size" />
<el-button type="primary" class="search-button">搜索</el-button>
<el-input v-model="gzcParams.cph" placeholder="请输入车牌号" class="search-input" clearable />
<el-date-picker v-model="gzcParams.startTime" type="daterange" unlink-panels range-separator="至"
start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss" />
<el-button type="primary" class="search-button" @click="getPage">搜索</el-button>
</div>
<div class="waning-cards noScollLine" >
<div class="warning-card" v-for="(item, index) in pageData.tableData" :key="index">
<div class="waning-cards noScollLine" v-infinite-scroll="gzcgd">
<div class="warning-card" v-for="(item, index) in gzcParams.dataList" :key="index">
<div class="warning-image">
<img :src="require('@/assets/images/car.png')" alt="抓拍图片" />
<img :src="item.gczp ? item.gczp : car" alt="抓拍图片" />
</div>
<div class="warning-info">
<div class="info-item">
<span class="label">车牌号</span>
<span>{{ item.cph }}</span>
<span class="tag">{{ item.bq }} </span>
<span>{{ item.hphm }}</span>
<!-- <span class="tag">{{ item.bq }} </span> -->
</div>
<!-- <div class="info-item flex">
<span class="label">性别</span>
</div> -->
<div class="info-item">
<span class="label">相似度</span>
<span class="highlight">{{ item.xsd }}</span>
<span class="label">车辆种类</span>
<span class="highlight">{{ item.zwppmc }}</span>
</div>
<div class="info-item">
<span class="label">抓拍时间</span>
<span>{{ item.time }}</span>
<span>{{ item.gzsj }}</span>
</div>
<div class="info-item align-center">
<span class="label nowrap">抓拍地址</span>
<span class="one_text_detail">{{ item.fx }}{{ item.dz }}</span>
<span class="one_text_detail">{{ item.kkMc }}</span>
</div>
</div>
</div>
@ -82,19 +82,24 @@
<div>
<div>
<div style="display: flex;align-items: center;padding: 10px 0;">
<el-input v-model="timeData.ryXm" placeholder="请输入车牌号" style="width: 30%;margin-right: 10px;" clearable />
<el-date-picker v-model="timeData.time" type="daterange" range-separator="至" start-placeholder="开始时间"
end-placeholder="结束时间" style="width: 30%;;margin-right: 10px;" :size="size" />
<el-button type="primary">搜索</el-button>
<el-input v-model="promesData.hphm" placeholder="请输入车牌号" style="width: 30%;margin-right: 10px;" clearable />
<el-date-picker v-model="promesData.startTime" type="daterange" range-separator="至" start-placeholder="开始时间"
end-placeholder="结束时间" style="width: 30%;;margin-right: 10px;" format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss" />
<el-button type="primary" @click="search">搜索</el-button>
</div>
</div>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" tableHeight="35vh"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #tp="{ row }">
<el-image :src="row.tp" :preview-src-list="[row.tp]" alt="车辆类型" style="width: 80px; height: 100px;"/>
<template #gczp="{ row }">
<el-image :src="row.gczp ? row.gczp : car" :preview-src-list="[row.gczp]" alt="车辆类型"
style="width: 80px; height: 100px;" />
</template>
<template #gzlx="{ row }">
<span>
{{ row.gzlx == '01' ? '入林' : '出林' }}
</span>
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
@ -112,56 +117,24 @@
</template>
<script setup>
import { ref, reactive } from 'vue'
import { ref, reactive, onMounted, watch } from 'vue'
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckGet } from "@/api/qcckApi.js";
import { useRoute } from 'vue-router'
const props = defineProps({
JczMsg: {
type: Object,
default: () => ({})
}
})
const timeData = ref({
ryXm: '',
time: []
})
const clData = ref({
cph: '',
time: []
})
const pageData = reactive({
tableData: [{
tp: require("@/assets/images/cstp.png"),
cph: "豫DGL808",
time: "2025-11-02 09:18:00",
fx: "入林方向",
dz: "德吉路与光彩路入口处",
bm: "54040251001325030171",
cllx: "小型车辆",
bq: "前科人员车",
xsd: "80%",
}, {
tp: require("@/assets/images/cstp.png"),
cph: "豫DGL808",
time: "2025-11-02 15:18:00",
fx: "出林方向",
dz: "德吉路与光彩路出口处",
bm: "54040251001325030172",
cllx: "小型车辆",
bq: "前科人员车",
xsd: "90%",
}, {
tp: require("@/assets/images/cstp.png"),
cph: "豫DGL808",
time: "2025-11-02 21:18:00",
fx: "入林方向",
dz: "德吉路与光彩路入口处",
bm: "54040251001325030171",
cllx: "小型车辆",
bq: "前科人员车",
xsd: "95%",
}], //表格数据
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
@ -176,16 +149,154 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "过车图片", prop: "tp", showOverflowTooltip: true, showSolt: true },
{ label: "车牌号", prop: "cph", showOverflowTooltip: true },
{ label: "过车时间", prop: "time", showOverflowTooltip: true },
{ label: "卡口方向", prop: "fx", showOverflowTooltip: true },
{ label: "车辆种类", prop: "cllx", showOverflowTooltip: true },
{ label: "摄像头编码", prop: "bm", showOverflowTooltip: true },
{ label: "抓拍摄像头", prop: "dz", showOverflowTooltip: true, },
{ label: "过车图片", prop: "gczp", showOverflowTooltip: true, showSolt: true },
{ label: "车牌号", prop: "hphm", showOverflowTooltip: true },
{ label: "过车时间", prop: "gzsj", showOverflowTooltip: true },
{ label: "卡口方向", prop: "gzlx", showOverflowTooltip: true, showSolt: true },
{ label: "车辆种类", prop: "zwppmc", showOverflowTooltip: true },
{ label: "摄像头编码", prop: "tdbm", showOverflowTooltip: true },
{ label: "抓拍摄像头", prop: "tdmc", showOverflowTooltip: true, },
{ label: "标签", prop: "bq", showOverflowTooltip: true }
]
})
const default_male = ref(require('@/assets/images/default_male.png'))
const car = ref(require('@/assets/images/car.png'))
const route = useRoute()
const jczid = ref()
onMounted(() => {
jczid.value = route.query.id
})
watch(() => props.JczMsg, (newVal, oldVal) => {
if (newVal) {
console.log(newVal);
if (newVal.jczlx == '02') {
getJczGzclSelectPage()
} else {
getJczclSelectPage()
getJczrlSelectPage()
}
}
}, { deep: true })
const promesData = ref({
pageSize: 20,
pageCurrent: 1,
kkId: jczid.value,
})
const search = () => {
promesData.value.pageCurrent = 1
getJczGzclSelectPage()
}
const getJczGzclSelectPage = () => {
const params = {
...promesData.value,
startTime: promesData.value.startTime ? promesData.value.startTime[0] : "",
endTime: promesData.value.startTime ? promesData.value.startTime[1] : ''
}
qcckGet(params, "/mosty-jcz/jczGzcl/selectPage").then((res) => {
pageData.tableData = res.records
pageData.total = res.total
console.log(res);
}).catch((err) => {
});
}
const changeNo = (val) => {
promesData.value.currentPage = val
getJczGzclSelectPage()
}
const changeSize = (val) => {
promesData.value.pageSize = val
getJczGzclSelectPage()
}
const gzcParams = ref({
dataList: [],
pageSize: 20,
kkId: jczid.value,
pageCurrent: 1,
startTime: '',
hphm: "",
total:0
})
// 过站车
const getJczclSelectPage = () => {
const params = {
hphm: gzcParams.value.hphm,
kkId: gzcParams.value.kkId,
pageCurrent: gzcParams.value.pageCurrent,
pageSize: gzcParams.value.pageSize,
startTime: promesData.value.startTime ? promesData.value.startTime[0] : "",
endTime: promesData.value.startTime ? promesData.value.startTime[1] : ''
}
qcckGet(params, "/mosty-jcz/jczGzcl/selectPage").then((res) => {
gzcParams.value.dataList = gzcParams.value.pageCurrent == 1 ? res.records : gzcParams.value.dataList.concat(res.records)
gzcParams.value.total = res.total
}).catch((err) => {
});
}
const getPage = () => {
gzcParams.value.pageCurrent = 1
getJczclSelectPage()
}
const gzcgd = () => {
if (gzcParams.value.dataList.length == gzcParams.value.total) {
return
}
gzcParams.value.pageCurrent++
getJczclSelectPage()
}
// 过站人
const gzrParams = ref({
dataList: [],
pageSize: 20,
kkId: jczid.value,
pageCurrent: 1,
startTime: '',
xm: "",
total:0
})
const getJczrlSelectPage = () => {
const params = {
xm: gzrParams.value.xm,
kkId: gzrParams.value.kkId,
pageCurrent: gzrParams.value.pageCurrent,
pageSize: gzrParams.value.pageSize,
startTime: gzrParams.value.startTime ? gzrParams.value.startTime[0] : "",
endTime: gzrParams.value.startTime ? gzrParams.value.startTime[1] : ''
}
qcckGet(params, "/mosty-jcz/jczGzry/selectPage").then((res) => {
gzrParams.value.dataList = gzrParams.value.pageCurrent == 1 ? res.records : gzrParams.value.dataList.concat(res.records)
gzrParams.value.total = res.total
}).catch((err) => {
});
}
const getPageR = () => {
gzrParams.value.pageCurrent = 1
getJczrlSelectPage()
}
const gzrgd = () => {
if (gzrParams.value.dataList.length == gzrParams.value.total) {
return
}
gzrParams.value.pageCurrent++
getJczrlSelectPage()
}
</script>
<style lang="scss" scoped>
@ -500,41 +611,54 @@ const pageData = reactive({
background-color: #273467d9;
color: #fff;
}
::v-deep .el-table {
border: none !important;
background-color: transparent !important;
--el-table-border-color: transparent !important;
}
::v-deep .el-table tr {
background-color: #072b56bf !important;
}
::v-deep .el-table th.el-table__cell {
background-color: #273467d9;
color: #fff;
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
background-color: #094c9dbf !important;
}
::v-deep .el-table .el-table__cell {
z-index: 0 !important;
position: static;
}
::v-deep .el-table td.el-table__cell {
color: #fff !important;
}
::v-deep .el-table--border .el-table__cell {
border-color: #3b3b3bbf !important;
}
::v-deep .el-pagination__total {
color: #fff !important;
}
::v-deep .el-pagination.is-background .btn-next:disabled, .el-pagination.is-background .btn-prev:disabled{
::v-deep .el-pagination.is-background .btn-next:disabled,
.el-pagination.is-background .btn-prev:disabled {
background-color: #212c59;
}
::v-deep .el-pagination.is-background .btn-next:disabled, .el-pagination.is-background .btn-prev:disabled{
::v-deep .el-pagination.is-background .btn-next:disabled,
.el-pagination.is-background .btn-prev:disabled {
background-color: #212c59 !important;
}
::v-deep .el-date-editor .el-range-separator {
color: #fff !important;
}

View File

@ -74,7 +74,7 @@ const queryCondition = ref({});
const getjczgetXfllList = () => {
pageData.tableConfiger.loading = true;
const promes = { ...queryCondition.value, ...pageData.pageConfiger };
qcckGet(promes,"/mosty-jcz/tbJczBpcCount/getRcwTj")
qcckGet({xtly:'jcz'},"/mosty-jcz/tbJczBpcCount/getRcwTj")
.then((res) => {
pageData.tableData = [res];
})

View File

@ -10,15 +10,13 @@
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #zp="{ row }">
<el-image style="width: 70px" :src="row.zp" preview-teleported :preview-src-list="[row.zp]">
</el-image>
</template>
<template #yjTp="{ row }">
<div class="phone">
<el-image v-if="row.tp" :src="urlImg + row.yjTp" fit="cover" lazy />
@ -34,15 +32,10 @@
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
}"></Pages>
</div>
<!-- 编辑详情 -->
<!-- 编辑详情 -->
@ -56,7 +49,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import EditAddForm from "./components/editAddForm.vue";
import Search from "@/components/aboutTable/Search.vue";
import { BpcryselectCrewList } from "@/api/mosty-jcz.js";
import { BpcryselectCrewList, BpcrygetRypcList } from "@/api/mosty-jcz.js";
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
const { proxy } = getCurrentInstance();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
@ -98,17 +91,17 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "照片", prop: "xm" },
// { label: "照片", prop: "zp", showSolt: true },
{ label: "所属部门", prop: "ssbm" },
{ label: "盘查民警", prop: "pcmjXm" },
{ label: "被盘查人", prop: "xm" },
{ label: "被盘查人身份证", prop: "sfzh" },
{ label: "被盘查人电话", prop: "lxdh" },
{ label: "盘查日期", prop: "pcrq", showSolt: true },
{ label: "盘查时间", prop: "pcsj", showSolt: true },
{ label: "盘查日期", prop: "pcrq" },
{ label: "盘查时间", prop: "pcsj" },
{ label: "被盘输入类型", prop: "yjLx", showSolt: true },
{ label: "人员标签名称", prop: "bqmc", showSolt: true },
{ label: "盘查结果", prop: "pcclJgmc", showSolt: true }
{ label: "盘查结果", prop: "pcclJgmc" }
]
});
onMounted(() => {
@ -120,8 +113,12 @@ const queryCondition = ref({});
// 获取数据
const getjczgetXfllList = () => {
pageData.tableConfiger.loading = true;
const promes = { ...queryCondition.value, ...pageData.pageConfiger };
BpcryselectCrewList(promes)
const promes = {
...queryCondition.value,
...pageData.pageConfiger,
xtly: "jcz"
};
BpcrygetRypcList(promes)
.then((res) => {
pageData.tableData = res.records;
pageData.total = res.total;

View File

@ -8,15 +8,13 @@
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #zp="{ row }">
<el-image style="width: 70px" :src="row.zp" preview-teleported :preview-src-list="[row.zp]">
</el-image>
</template>
<template #yjLx="{ row }">
<dict-tag :value="row.yjLx" :options="D_BZ_PCSRLX" :tag="false" />
</template>
@ -28,22 +26,14 @@
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
}"></Pages>
</div>
<!-- 编辑详情 -->
<!-- 编辑详情 -->
<EditAddForm
ref="detailDiloag"
:dict="{ D_BZ_PCSRLX, D_BZ_HPZL, D_YDJW_PCCLYJYY_CL }"
/>
<EditAddForm ref="detailDiloag" :dict="{ D_BZ_PCSRLX, D_BZ_HPZL, D_YDJW_PCCLYJYY_CL }" />
</div>
</template>
@ -53,7 +43,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import EditAddForm from "./components/editAddForm.vue";
import Search from "@/components/aboutTable/Search.vue";
import { BpcryselectCrewList } from "@/api/mosty-jcz.js";
import { BpcryselectCarList } from "@/api/mosty-jcz.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
@ -93,16 +83,16 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "照片", prop: "xm" },
// { label: "照片", prop: "zp", showSolt: true },
{ label: "所属部门", prop: "ssbm" },
{ label: "盘查民警", prop: "pcmjXm" },
{ label: "号牌号码", prop: "hphm" },
{ label: "号牌种类", prop: "hpzl", howSolt: true }, //D_BZ_HPZL
{ label: "号牌种类", prop: "hpzl", showSolt: true }, //D_BZ_HPZL
{ label: "机动车所有人", prop: "jdcsyr" },
{ label: "盘查日期", prop: "pcrq", showSolt: true },
{ label: "盘查时间", prop: "pcsj", showSolt: true },
{ label: "盘查日期", prop: "pcrq" },
{ label: "盘查时间", prop: "pcsj" },
{ label: "被盘输入类型", prop: "yjLx", showSolt: true }, //D_BZ_PCSRLX
{ label: "盘查结果", prop: "pcclJgmc", showSolt: true }
{ label: "盘查结果", prop: "pcclJgmc" }
]
});
onMounted(() => {
@ -114,8 +104,8 @@ const queryCondition = ref({});
// 获取数据
const getjczgetXfllList = () => {
pageData.tableConfiger.loading = true;
const promes = { ...queryCondition.value, ...pageData.pageConfiger };
BpcryselectCrewList(promes)
const promes = { ...queryCondition.value, ...pageData.pageConfiger, xtly: 'jcz' };
BpcryselectCarList(promes)
.then((res) => {
pageData.tableData = res.records;
pageData.total = res.total;

View File

@ -109,7 +109,7 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "图片", prop: "tp", showSolt: true },
// { label: "图片", prop: "tp", showSolt: true },
{ label: "民警姓名", prop: "xm" },
{ label: "身份证号码", prop: "sfzh" },
{ label: "警号", prop: "jh" },

View File

@ -0,0 +1,327 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="title">{{ pageInfo[pageType].title }}</span>
<div>
<el-button size="small" type="primary" v-if="['add', 'edit'].includes(pageType)" @click="_onSave">保存</el-button>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<div class="cntinfo">
<FormMessage v-model="listQuery" :formList="formData" ref="formRef" :rules="rules" :disabled="forbidden">
<template #gczp>
<el-image :src="listQuery.gczp" fit="fill" style="width: 100px; height: 100px;" />
</template>
</FormMessage>
</div>
</div>
</template>
<script setup>
import { ref, reactive, onMounted } from "vue";
import { jczBkclEntity, jczBkclInsertEntity } from "@/api/mosty-jcz.js";
import FormMessage from "@/components/aboutTable/FormMessage.vue"
import { ElMessage } from "element-plus";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
const props = defineProps({
dict: {
type: Object,
default: () => { }
}
});
const rules = reactive({
cph: [
{
required: true,
message: "请输入布控姓名"
}
],
bkkk: [
{
required: true,
message: "请选择布控卡口"
}
], cpys: [{
required: true,
message: "请选择车牌颜色"
}],
yjys: [
{
required: true,
message: "请选择预警颜色"
}
],
bkkssj: [
{
required: true,
message: "请选择布控开始时间"
}
],
bkjssj: [
{
required: true,
message: "请输入布控身份证号"
}
],
bkfs: [
{
required: true,
message: "请输入布控方式"
}
], czcs: [
{
required: true,
message: "请输选择布控措施"
}
],
bkyy: {
required: true,
message: "请输入布控原因"
}
});
const formData = reactive([
{ label: "头像", prop: "gczp", type: "slot", width: "100%" },
{ label: "车牌号", prop: "hphm", type: "input" },
{ label: "过车时间", prop: "gzsj", type: "input" },
{ label: "车辆识别代号", prop: "clsbdh", type: "input", disabled: true },
{ label: "机动车所有人", prop: "jdcsyr", type: "input" },
{ label: "所有人身份证号", prop: "jdcsyrsfzh", type: "input" },
{ label: "驾驶员姓名", prop: "jsyxm", type: "input" },
{ label: "驾驶员身份证号", prop: "jsysfzh", type: "input" },
{ label: "品牌名称", prop: "zwppmc", type: "input" },
{
label: "车牌颜色", prop: "csysdm", type: "select", options: props.dict.D_BZ_CLYS
},
{
label: "机动车档案编号", prop: "dabm", type: "input"
},
{
label: "过站类型", prop: "gzlx", type: "select", options: [
{ label: "入林", value: "01" },
{ label: "出林", value: "02" }
]
},
{ label: "摄像头编码", prop: "tdbm", type: "input" },
{ label: "抓拍摄像头", prop: "tdmc", type: "input" },
{ label: "抓拍地址", prop: "kkMc", type: "input" },
{ label: "同行位置", prop: "txwz", type: "input" },
{ label: "所属部门", prop: "ssbm", type: "input", disabled: true },
]);
const formRef = ref(null);
const emit = defineEmits(["getjczgetXfllList"]);
const dialogForm = ref(false);
const listQuery = ref({});
const pageInfo = {
edit: {
title: "编辑",
url: ""
},
add: {
title: "新增",
url: ""
},
detail: {
title: "详情"
}
};
let pageType = ref("add");
// 初始化数据
const forbidden = ref(false)
const init = (type, row) => {
pageType.value = type;
dialogForm.value = true;
// 根据type和row初始化表单数据
tabHeightFn();
if (type == "edit" || type == "detail") {
listQuery.value = { ...row };
if (type == "detail") {
forbidden.value = true
}
} else {
listQuery.value = {};
}
};
//保存
const _onSave = () => {
if (!formRef) return;
formRef.value.submit(() => {
const promes = { ...listQuery.value };
qcckPost(promes, '/mosty-jcz/jczGzcl/editEntity').then((res) => {
ElMessage({ message: "修改成功", type: "success" });
emit("getjczgetXfllList");
close();
});
})
// ((valid, fields) => {
// if (valid) {
// const promes = { ...listQuery.value };
// if (pageType.value == "add") {
// // jczBkclInsertEntity(promes).then((res) => {
// // ElMessage({ message: "新增成功", type: "success" });
// // emit("getjczgetXfllList");
// // close();
// // });
// } else {
// // /jczGzry/editEntity
// qcckPost(promes,'/mosty-jcz/jczGzry/editEntity').then((res) => {
// ElMessage({ message: "修改成功", type: "success" });
// emit("getjczgetXfllList");
// close();
// });
// }
// } else {
// console.log("error submit!", fields);
// }
// });
// console.log();
};
//页面关闭
const close = () => {
dialogForm.value = false;
forbidden.value = false
listQuery.value = {};
};
// 表格高度计算
const tableHeight1 = ref();
const tabHeightFn = () => {
tableHeight1.value = window.innerHeight - 450;
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
.dialog {
padding: 20px;
.head_box {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.cntinfo {
height: calc(100% - 70px);
overflow: hidden;
overflow-y: auto;
}
}
.my_transfer {
height: calc(100% - 50px);
display: flex;
.btn {
width: 50px;
display: flex;
align-items: center;
justify-content: center;
margin: 0 10px;
}
.left {
margin: 12px;
flex: 1;
position: relative;
.tableBox {
position: absolute;
width: 100%;
}
.serch {
position: relative;
width: 100%;
// height: 96px;
>.el-form--inline {
display: block;
width: 100%;
padding: 0;
>.el-form-item--default {
width: 31%;
}
}
}
.tableBox {
width: 100%;
}
}
.right {
width: 380px;
margin: 12px;
}
}
.phone {
width: 95px;
height: 120px;
.el-image {
width: 95px;
max-height: 120px;
}
}
::v-deep .el-upload {
width: 90px;
height: 100px;
border: 1px dashed #000000;
margin-bottom: 14px;
.el-icon {
margin-top: 34px;
font-size: 26px;
}
.el-image {
width: 100%;
height: 100%;
}
}
.mapbox {
width: 1000px;
padding: 0 10px;
height: 400px;
box-sizing: border-box;
background: #000;
}
.diviput {
width: 100%;
background-color: #ffffff;
border: 1px solid #c0c4cc;
color: #000;
height: 32px;
line-height: 32px;
padding: 0 10px;
border-radius: 5px;
.placeholder {
color: #b5b5b5;
}
}
::v-deep .el-icon svg {
color: #000000 !important;
}
</style>

View File

@ -0,0 +1,218 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="过站车辆管理">
<!-- <el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)">新增</span>
</el-button> -->
</PageTitle>
</div>
<!-- 表格 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #gczp="{ row }">
<el-image style="width: 70px; height: 80px" :src="row.gczp ? row.gczp : car" :fit="fit" />
</template>
<template #gzlx="{ row }">
<span v-if="row.gzlx == '01'">入林</span>
<span v-else>出林</span>
</template>
<!-- 操作 -->
<template #controls="{ row }">
<template v-if="Auth">
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
</template>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 编辑详情 -->
<EditAddForm ref="detailDiloag" :dict="{
D_BZ_BKYS, D_BZ_CZCS, D_BZ_CPHYS
}" @getjczgetXfllList="getjczgetXfllList" />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import EditAddForm from "./components/editAddForm.vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { ElMessage } from "element-plus";
import { isAuth } from '@/utils/tools.js'
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
const { proxy } = getCurrentInstance();
const car = ref(require('@/assets/images/car.png'))
const kkList = ref([])
const searchConfiger = ref([
{
label: "车牌号",
prop: "hphm",
placeholder: "请输入车牌号",
showType: "input"
},
{
label: "过站时间",
prop: "startTime",
placeholder: "过站时间",
showType: "daterange",
}, {
label: "检查站",
prop: "kkId",
placeholder: "请选择过站检查站",
showType: "select",
options: []
},
]);
const listGet = () => {
qcckGet({}, "/mosty-jcz/jcz/selectJczFullList").then((res) => {
kkList.value = res.map(item => {
return {
label: item.jczmc,
value: item.id
}
})
}).catch((err) => {
}).finally(() => {
pageData.tableConfiger.loading = false;
})
}
watch(() => kkList.value, (newVal, oldVal) => {
if (newVal) {
searchConfiger.value[2].options = newVal
}
}, { deep: true, immediate: true })
const detailDiloag = ref();
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: "gczp", showOverflowTooltip: true, showSolt: true },
{ label: "车牌号", prop: "hphm", showOverflowTooltip: true },
{ label: "过车时间", prop: "gzsj", showOverflowTooltip: true },
{ label: "卡口方向", prop: "gzlx", showOverflowTooltip: true, showSolt: true },
{ label: "车辆种类", prop: "zwppmc", showOverflowTooltip: true },
{ label: "摄像头编码", prop: "tdbm", showOverflowTooltip: true },
{ label: "抓拍摄像头", prop: "tdmc", showOverflowTooltip: true, },
{ label: "抓拍地址", prop: "kkMc", showOverflowTooltip: true },
{ label: "标签", prop: "bq", showOverflowTooltip: true }
]
});
const Auth = ref(false)
onMounted(() => {
tabHeightFn();
Auth.value = isAuth()
listGet()
});
//查询条件
const queryCondition = ref();
// 获取数据
const getjczgetXfllList = () => {
pageData.tableConfiger.loading = true;
const params = {
...queryCondition.value,
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize,
}
qcckGet(params, "/mosty-jcz/jczGzcl/selectPage").then((res) => {
pageData.tableData = res.records
pageData.total = res.total
}).catch((err) => {
}).finally(() => {
pageData.tableConfiger.loading = false;
});
};
getjczgetXfllList();
// 搜索
const onSearch = (val) => {
queryCondition.value = {
...val,
startTime: val.startTime ? val.startTime[0] : "",
endTime: val.startTime ? val.startTime[1] : ""
}
getjczgetXfllList();
};
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
};
// 获取列表
// 删除
const delDictItem = (ids) => {
proxy
.$confirm("确定删除该数据?", "警告", { type: "warning" })
.then(() => {
qcckPost({
ids: [ids]
}, "/mosty-jcz/jczGzcl/deleteById").then((res) => {
ElMessage({ message: "删除成功", type: "success" });
pageData.pageConfiger.pageCurrent = 1;
getjczgetXfllList();
})
.catch((err) => {
console.log(err);
});
})
.catch(() => {
proxy.$message.info("已取消");
});
};
// 新增
const addEdit = (type, row) => {
detailDiloag.value.init(type, row);
};
const searchBox = ref(null);
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight =
window.innerHeight - searchBox.value.offsetHeight - 280;
window.onresize = function () {
tabHeightFn();
};
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -199,7 +199,7 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "图片", prop: "tp", showSolt: true },
// { label: "图片", prop: "tp", showSolt: true },
{ label: "民警姓名", prop: "xm" },
{ label: "身份证号码", prop: "sfzh" },
{ label: "警号", prop: "jh" },

View File

@ -0,0 +1,318 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="title">{{ pageInfo[pageType].title }}</span>
<div>
<el-button size="small" type="primary" v-if="['add', 'edit'].includes(pageType)" @click="_onSave">保存</el-button>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<div class="cntinfo">
<FormMessage v-model="listQuery" :formList="formData" ref="formRef" :rules="rules" :disabled="forbidden">
<template #zp>
<el-image :src="listQuery.zp" fit="fill" style="width: 100px; height: 100px;" />
</template>
</FormMessage>
</div>
</div>
</template>
<script setup>
import { ref, reactive, onMounted } from "vue";
import { jczBkclEntity, jczBkclInsertEntity } from "@/api/mosty-jcz.js";
import FormMessage from "@/components/aboutTable/FormMessage.vue"
import { ElMessage } from "element-plus";
import { qcckGet,qcckPost } from "@/api/qcckApi.js";
const props = defineProps({
dict: {
type: Object,
default: () => { }
}
});
const rules = reactive({
cph: [
{
required: true,
message: "请输入布控姓名"
}
],
bkkk: [
{
required: true,
message: "请选择布控卡口"
}
], cpys: [{
required: true,
message: "请选择车牌颜色"
}],
yjys: [
{
required: true,
message: "请选择预警颜色"
}
],
bkkssj: [
{
required: true,
message: "请选择布控开始时间"
}
],
bkjssj: [
{
required: true,
message: "请输入布控身份证号"
}
],
bkfs: [
{
required: true,
message: "请输入布控方式"
}
], czcs: [
{
required: true,
message: "请输选择布控措施"
}
],
bkyy: {
required: true,
message: "请输入布控原因"
}
});
const formData = reactive([
{ label: "头像", prop: "zp", type: "slot", width: "100%" },
{ label: "姓名", prop: "xm", type: "input" },
{ label: "身份证号", prop: "zjhm", type: "input" },
{ label: "出生日期", prop: "csrq", type: "input", disabled: true },
{ label: "过站时间", prop: "gzsj", type: "datetime" },
{
label: "过站类型", prop: "gzlx", type: "select", options: [
{ label: "入林", value: "01" },
{ label: "出林", value: "02" }
]
},
{ label: "摄像头编码", prop: "tdbm", type: "input" },
{ label: "抓拍摄像头", prop: "tdmc", type: "input" },
{ label: "抓拍地址", prop: "kkMc", type: "input" },
{ label: "同行位置", prop: "txwz", type: "input" },
{ label: "所属部门", prop: "ssbm", type: "input", disabled: true },
]);
const formRef = ref(null);
const emit = defineEmits(["getjczgetXfllList"]);
const dialogForm = ref(false);
const listQuery = ref({});
const pageInfo = {
edit: {
title: "编辑",
url: ""
},
add: {
title: "新增",
url: ""
},
detail: {
title: "详情"
}
};
let pageType = ref("add");
// 初始化数据
const forbidden = ref(false)
const init = (type, row) => {
pageType.value = type;
dialogForm.value = true;
// 根据type和row初始化表单数据
tabHeightFn();
if (type == "edit" || type == "detail") {
listQuery.value = { ...row };
if (type == "detail") {
forbidden.value = true
}
} else {
listQuery.value = {};
}
};
//保存
const _onSave = () => {
if (!formRef) return;
formRef.value.submit(() => {
const promes = { ...listQuery.value };
qcckPost(promes,'/mosty-jcz/jczGzry/editEntity').then((res) => {
ElMessage({ message: "修改成功", type: "success" });
emit("getjczgetXfllList");
close();
});
})
// ((valid, fields) => {
// if (valid) {
// const promes = { ...listQuery.value };
// if (pageType.value == "add") {
// // jczBkclInsertEntity(promes).then((res) => {
// // ElMessage({ message: "新增成功", type: "success" });
// // emit("getjczgetXfllList");
// // close();
// // });
// } else {
// // /jczGzry/editEntity
// qcckPost(promes,'/mosty-jcz/jczGzry/editEntity').then((res) => {
// ElMessage({ message: "修改成功", type: "success" });
// emit("getjczgetXfllList");
// close();
// });
// }
// } else {
// console.log("error submit!", fields);
// }
// });
// console.log();
};
//页面关闭
const close = () => {
dialogForm.value = false;
forbidden.value = false
listQuery.value = {};
};
// 表格高度计算
const tableHeight1 = ref();
const tabHeightFn = () => {
tableHeight1.value = window.innerHeight - 450;
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
.dialog {
padding: 20px;
.head_box {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.cntinfo {
height: calc(100% - 70px);
overflow: hidden;
overflow-y: auto;
}
}
.my_transfer {
height: calc(100% - 50px);
display: flex;
.btn {
width: 50px;
display: flex;
align-items: center;
justify-content: center;
margin: 0 10px;
}
.left {
margin: 12px;
flex: 1;
position: relative;
.tableBox {
position: absolute;
width: 100%;
}
.serch {
position: relative;
width: 100%;
// height: 96px;
>.el-form--inline {
display: block;
width: 100%;
padding: 0;
>.el-form-item--default {
width: 31%;
}
}
}
.tableBox {
width: 100%;
}
}
.right {
width: 380px;
margin: 12px;
}
}
.phone {
width: 95px;
height: 120px;
.el-image {
width: 95px;
max-height: 120px;
}
}
::v-deep .el-upload {
width: 90px;
height: 100px;
border: 1px dashed #000000;
margin-bottom: 14px;
.el-icon {
margin-top: 34px;
font-size: 26px;
}
.el-image {
width: 100%;
height: 100%;
}
}
.mapbox {
width: 1000px;
padding: 0 10px;
height: 400px;
box-sizing: border-box;
background: #000;
}
.diviput {
width: 100%;
background-color: #ffffff;
border: 1px solid #c0c4cc;
color: #000;
height: 32px;
line-height: 32px;
padding: 0 10px;
border-radius: 5px;
.placeholder {
color: #b5b5b5;
}
}
::v-deep .el-icon svg {
color: #000000 !important;
}
</style>

View File

@ -0,0 +1,218 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="过站人员管理">
<!-- <el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle" @click="addEdit('add', row)">新增</span>
</el-button> -->
</PageTitle>
</div>
<!-- 表格 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
>
<template #zp="{ row }">
<el-image style="width: 70px; height: 80px" :src="row.zp?row.zp:rxImg" :fit="fit" />
</template>
<template #gzlx="{ row }">
<span v-if="row.gzlx == '01'">入林</span>
<span v-else>出林</span>
</template>
<!-- 操作 -->
<template #controls="{ row }">
<template v-if="Auth">
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
</template>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
<!-- 编辑详情 -->
<EditAddForm ref="detailDiloag" :dict="{
D_BZ_BKYS, D_BZ_CZCS, D_BZ_CPHYS
}" @getjczgetXfllList="getjczgetXfllList" />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import EditAddForm from "./components/editAddForm.vue";
import { qcckGet,qcckPost } from "@/api/qcckApi.js";
import { ElMessage } from "element-plus";
import { isAuth } from '@/utils/tools.js'
import { reactive, ref, onMounted, getCurrentInstance,watch } from "vue";
const { proxy } = getCurrentInstance();
const rxImg=require('@/assets/images/default_male.png')
const kkList = ref([])
const searchConfiger = ref([
{
label: "姓名",
prop: "xm",
placeholder: "请输入姓名",
showType: "input"
},
{
label: "过站时间",
prop: "startTime",
placeholder: "过站时间",
showType: "daterange",
}, {
label: "检查站",
prop: "kkId",
placeholder: "请选择过站检查站",
showType: "select",
options:[]
},
]);
const listGet = () => {
qcckGet({}, "/mosty-jcz/jcz/selectJczFullList").then((res) => {
kkList.value = res.map(item => {
return {
label: item.jczmc,
value: item.id
}
})
}).catch((err) => {
}).finally(() => {
pageData.tableConfiger.loading = false;
})
}
watch(() => kkList.value, (newVal, oldVal) => {
if (newVal) {
searchConfiger.value[2].options = newVal
}
},{deep:true,immediate:true})
const detailDiloag = ref();
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: "zp", showSolt: true },
{ label: "姓名", prop: "xm", showOverflowTooltip: true },
{ label: "身份证号", prop: "zjhm", showOverflowTooltip: true,width: 200 },
{ label: "过站类型", prop: "gzlx", showOverflowTooltip: true, showSolt: true },
{ label: "摄像头编码", prop: "tdbm", showOverflowTooltip: true },
{ label: "抓拍摄像头", prop: "tdmc", showOverflowTooltip: true, },
{ label: "抓拍地址", prop: "kkMc", showOverflowTooltip: true },
{ label: "标签", prop: "bq", showOverflowTooltip: true }
]
});
const Auth = ref(false)
onMounted(() => {
tabHeightFn();
Auth.value = isAuth()
listGet()
});
//查询条件
const queryCondition = ref();
// 获取数据
const getjczgetXfllList = () => {
pageData.tableConfiger.loading = true;
const params = {
...queryCondition.value,
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize,
}
qcckGet(params, "/mosty-jcz/jczGzry/selectPage").then((res) => {
pageData.tableData = res.records
pageData.total = res.total
}).catch((err) => {
}).finally(() => {
pageData.tableConfiger.loading = false;
});
};
getjczgetXfllList();
// 搜索
const onSearch = (val) => {
queryCondition.value = {
...val,
startTime: val.startTime ? val.startTime[0] : "",
endTime: val.startTime ? val.startTime[1] : ""
}
getjczgetXfllList();
};
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
};
// 获取列表
// 删除
const delDictItem = (ids) => {
proxy
.$confirm("确定删除该数据?", "警告", { type: "warning" })
.then(() => {
qcckPost({
ids: [ids]
}, "/mosty-jcz/jczGzry/deleteById").then((res) => {
ElMessage({ message: "删除成功", type: "success" });
pageData.pageConfiger.pageCurrent = 1;
getjczgetXfllList();
})
.catch((err) => {
console.log(err);
});
})
.catch(() => {
proxy.$message.info("已取消");
});
};
// 新增
const addEdit = (type, row) => {
detailDiloag.value.init(type, row);
};
const searchBox = ref(null);
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight =
window.innerHeight - searchBox.value.offsetHeight - 280;
window.onresize = function () {
tabHeightFn();
};
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -18,7 +18,7 @@
<div class="info-item">
<span class="label">车牌号</span>
<span>{{ item.yjClcph }}</span>
<span class="tag">{{ item.yjBt }}</span>
<span class="tag">{{ item.yjbqmc }}</span>
</div>
<div class="info-item">
<span class="label">相似度</span>

View File

@ -18,7 +18,7 @@
<div class="info-item">
<span class="label">姓名</span>
<span>{{ item.yjRyxm }}</span>
<span class="tag">{{ item.yjBt }}</span>
<span class="tag">{{ item.yjbqmc }}</span>
</div>
<div class="info-item flex">
<span class="label">性别{{ IdCard(item.yjRysfzh, 'all').sex }}</span>

View File

@ -70,7 +70,9 @@
<script setup>
// 可以在这里添加需要的响应式数据和方法
import { jczCountWay, jczgetcountCrl, jczGzrycountCrl } from "@/api/mosty-jcz";
import { useRoute } from 'vue-router'
import { ref } from "vue";
const route = useRoute()
const personnelData = ref({
rzhy: 0,
sczd: 0,
@ -85,21 +87,21 @@ const carAccess = ref({
rlsl: 0
});
const countWay = () => {
jczCountWay()
jczCountWay({kkId:route.query.id?route.query.id:""})
.then((res) => {
personnelData.value = res;
})
.catch((err) => {});
};
const getcountCrl = () => {
jczgetcountCrl()
jczgetcountCrl({kkId:route.query.id?route.query.id:""})
.then((res) => {
personneAccess.value = res;
})
.catch((err) => {});
};
const GzrycountCrl = () => {
jczGzrycountCrl()
jczGzrycountCrl({kkId:route.query.id?route.query.id:""})
.then((res) => {
carAccess.value = res;
})

View File

@ -3,8 +3,8 @@ const path = require("path");
function resolve(dir) {
return path.join(__dirname, dir);
}
const serverHost = "http://192.168.3.59:8006"//波哥
// const serverHost = "http://47.108.232.77:9537";
// const serverHost = "http://192.168.3.59:8006"//波哥
const serverHost = "http://47.108.232.77:9537";
// const serverHost = "http://j96926b5.natappfree.cc"
// const serverHost = "http://192.168.1.98:8006"
// const serverHost = "http://n5e6d39a.natappfree.cc"//周