提交
This commit is contained in:
@ -46,10 +46,18 @@
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="chooseData">
|
||||
<template #dktp="{ row }">
|
||||
<el-image :append-to-body="true" :preview-src-list="[
|
||||
<el-image v-if="row.dktp" :append-to-body="true" :preview-src-list="[
|
||||
`/mosty-api/mosty-base/minio/image/download/${row.dktp}`
|
||||
]" style="width: 75px; height: 75px" :src="`/mosty-api/mosty-base/minio/image/download/${row.dktp}`"
|
||||
fit="cover" lazy />
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
<template #lktp="{ row }">
|
||||
<el-image v-if="row.lktp" :append-to-body="true" :preview-src-list="[
|
||||
`/mosty-api/mosty-base/minio/image/download/${row.lktp}`
|
||||
]" style="width: 75px; height: 75px" :src="`/mosty-api/mosty-base/minio/image/download/${row.lktp}`"
|
||||
fit="cover" lazy />
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row, index }">
|
||||
@ -206,8 +214,11 @@ const init = (type, row) => {
|
||||
{ label: "点位名称", prop: "bxdMc", showOverflowTooltip: true },
|
||||
{ label: "经度", prop: "jd", showOverflowTooltip: true },
|
||||
{ label: "维度", prop: "wd", showOverflowTooltip: true },
|
||||
{ label: "打卡人", prop: "dkr", showOverflowTooltip: true },
|
||||
{ label: "打卡时间", prop: "dksj", showOverflowTooltip: true },
|
||||
{ label: "图片", prop: "dktp", showOverflowTooltip: true, showSolt: true },
|
||||
{ label: "打卡图片", prop: "dktp", showOverflowTooltip: true, showSolt: true },
|
||||
{ label: "离开时间", prop: "lksj", showOverflowTooltip: true },
|
||||
{ label: "离开图片", prop: "lktp", showOverflowTooltip: true, showSolt: true },
|
||||
]
|
||||
pageData.tableConfiger.haveControls = false
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ import { qcckPost, qcckGet } from "@/api/qcckApi.js";
|
||||
const searchConfiger = reactive([
|
||||
{
|
||||
showType: "input",
|
||||
prop: "dkrXm",
|
||||
prop: "dkr",
|
||||
placeholder: "请输入打卡人姓名",
|
||||
label: "打卡人姓名"
|
||||
}
|
||||
@ -34,28 +34,28 @@ const pageData = reactive({
|
||||
tableColumn: [
|
||||
{
|
||||
label: "打卡人姓名",
|
||||
prop: "dkrXm"
|
||||
prop: "dkr"
|
||||
},
|
||||
{
|
||||
label: "必到点位置",
|
||||
prop: "bddMc"
|
||||
label: "打卡点名称",
|
||||
prop: "bxdMc"
|
||||
},
|
||||
{
|
||||
label: "开始时间",
|
||||
prop: "dkKsSj"
|
||||
label: "打卡时间",
|
||||
prop: "dksj"
|
||||
},
|
||||
{
|
||||
label: "打卡开始附件",
|
||||
prop: "dkKsFj",
|
||||
label: "打卡图片",
|
||||
prop: "dktp",
|
||||
showSolt: true
|
||||
},
|
||||
{
|
||||
label: "结束时间",
|
||||
prop: "dkJsSj"
|
||||
label: "离开时间",
|
||||
prop: "lksj"
|
||||
},
|
||||
{
|
||||
label: "打卡结束附件",
|
||||
prop: "dkJsFj",
|
||||
label: "离开图片",
|
||||
prop: "lktp",
|
||||
showSolt: true
|
||||
}
|
||||
]
|
||||
@ -77,7 +77,7 @@ const tabHeightFn = () => {
|
||||
|
||||
const getListData = async (params = {}) => {
|
||||
pageData.tableConfiger.loading = true;
|
||||
qcckGet({...pageData.pageConfiger,...params}, "/mosty-yjzl/tbZdxlFgdwBddxlrwJl/getPageList")
|
||||
qcckGet({...pageData.pageConfiger,...params}, "/mosty-yjzl/tbZdyrw/selectDkList")
|
||||
.then((res) => {
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.tableConfiger.loading = false;
|
||||
@ -127,26 +127,28 @@ onMounted(() => {
|
||||
:tableConfiger="pageData.tableConfiger"
|
||||
:controlsWidth="pageData.controlsWidth"
|
||||
>
|
||||
<template #dkKsFj="{ row }">
|
||||
<template #dktp="{ row }">
|
||||
<el-image
|
||||
v-if="row.dktp"
|
||||
:append-to-body="true"
|
||||
:preview-src-list="[
|
||||
`/mosty-api/mosty-base/minio/image/download/${row.dkKsFj}`
|
||||
`/mosty-api/mosty-base/minio/image/download/${row.dktp}`
|
||||
]"
|
||||
style="width: 75px; height: 75px"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${row.dkKsFj}`"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${row.dktp}`"
|
||||
fit="cover"
|
||||
lazy
|
||||
/>
|
||||
</template>
|
||||
<template #dkJsFj="{ row }">
|
||||
<template #lktp="{ row }">
|
||||
<el-image
|
||||
v-if="row.lktp"
|
||||
:append-to-body="true"
|
||||
:preview-src-list="[
|
||||
`/mosty-api/mosty-base/minio/image/download/${row.dkJsFj}`
|
||||
`/mosty-api/mosty-base/minio/image/download/${row.lktp}`
|
||||
]"
|
||||
style="width: 75px; height: 75px"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${row.dkJsFj}`"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${row.lktp}`"
|
||||
fit="cover"
|
||||
lazy
|
||||
/>
|
||||
|
||||
@ -6,36 +6,40 @@
|
||||
</div>
|
||||
<ul class="warningList" ref="gjyjList">
|
||||
<li v-for="item in warningList" :key="item.id">
|
||||
<div>打卡人:{{ item.dkrXm }}</div>
|
||||
<div>必到点位置:{{ item.bddMc }}</div>
|
||||
<div>打卡开始时间:{{ item.dkKsSj }}</div>
|
||||
<div class="fj_box">
|
||||
<div>打卡开始附件:</div>
|
||||
<div class="task-title">任务名称:{{ item.fgRwmc }}</div>
|
||||
<div>领取人:{{ item.fgrwlqr }}</div>
|
||||
<div class="bxds-box" v-for="bxd in item.bxds" :key="bxd.bxdid">
|
||||
<div class="bxd-title">点位:{{ bxd.bxdMc }}</div>
|
||||
<div>打卡状态:{{ bxd.dkzt }}</div>
|
||||
<div>打卡时间:{{ bxd.dksj }}</div>
|
||||
<div class="fj_box" v-if="bxd.dktp">
|
||||
<div>打卡图片:</div>
|
||||
<el-image
|
||||
:append-to-body="true"
|
||||
:preview-src-list="[
|
||||
`/mosty-api/mosty-base/minio/image/download/${item.dkKsFj}`
|
||||
`/mosty-api/mosty-base/minio/image/download/${bxd.dktp}`
|
||||
]"
|
||||
style="width: 75px; height: 75px"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${item.dkKsFj}`"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${bxd.dktp}`"
|
||||
fit="cover"
|
||||
lazy
|
||||
/>
|
||||
</div>
|
||||
<div>打卡结束时间:{{ item.dkJsSj }}</div>
|
||||
<div class="fj_box">
|
||||
<div>打卡结束附件:</div>
|
||||
<div v-if="bxd.lksj">离开时间:{{ bxd.lksj }}</div>
|
||||
<div class="fj_box" v-if="bxd.lktp">
|
||||
<div>离开图片:</div>
|
||||
<el-image
|
||||
:append-to-body="true"
|
||||
:preview-src-list="[
|
||||
`/mosty-api/mosty-base/minio/image/download/${item.dkJsFj}`
|
||||
`/mosty-api/mosty-base/minio/image/download/${bxd.lktp}`
|
||||
]"
|
||||
style="width: 75px; height: 75px"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${item.dkJsFj}`"
|
||||
:src="`/mosty-api/mosty-base/minio/image/download/${bxd.lktp}`"
|
||||
fit="cover"
|
||||
lazy
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<el-empty
|
||||
description="没有数据"
|
||||
@ -94,13 +98,13 @@ function close() {
|
||||
emit("close", false);
|
||||
}
|
||||
|
||||
//获取轨迹预警列表
|
||||
//获取打卡情况列表
|
||||
function _getSelectTrack(id) {
|
||||
loading.value = true;
|
||||
qcckGet({ xfbbId: id }, "/mosty-yjzl/tbZdxlFgdwBddxlrwJl/getRwjlByXfbbId")
|
||||
qcckGet({ bbid: id }, "/mosty-yjzl/tbZdyrw/getFgrwListByBbid")
|
||||
.then((res) => {
|
||||
loading.value = false;
|
||||
warningList.value = res;
|
||||
warningList.value = res || [];
|
||||
})
|
||||
.catch((err) => {
|
||||
loading.value = false;
|
||||
@ -124,6 +128,25 @@ function _getSelectTrack(id) {
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 10px;
|
||||
.task-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
.status-tag {
|
||||
color: #3ad2d4;
|
||||
}
|
||||
}
|
||||
.bxds-box {
|
||||
margin-top: 10px;
|
||||
padding: 8px;
|
||||
background: rgba(20, 52, 123, 0.5);
|
||||
border-radius: 6px;
|
||||
.bxd-title {
|
||||
color: #3ad2d4;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.photo {
|
||||
width: 60px;
|
||||
|
||||
@ -53,6 +53,12 @@
|
||||
</div>
|
||||
<!-- 指令时间按钮 -->
|
||||
<div class="addBox transition" :style="{ right: showClassR ? '0px' : '394px' }">
|
||||
<div @click="clickPatrolBlock" class="imgBox">
|
||||
<span>巡逻方块</span>
|
||||
</div>
|
||||
<div @click="clickTaskIssue" class="imgBox">
|
||||
<span>任务下发</span>
|
||||
</div>
|
||||
<div @click="clickXfzl" class="imgBox">
|
||||
<span>下发指令</span>
|
||||
</div>
|
||||
@ -80,6 +86,7 @@ import { qcckGet } from "@/api/qcckApi.js";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
import router from "@/router/index.js";
|
||||
import { getSelectVigilant } from "@/api/dpApi/home.js";
|
||||
import { getPatrolBlockList } from "@/api/basicsmanage/patrolBlock.js";
|
||||
import GdMap from "@/components/Map/GdMap/index.vue";
|
||||
import Header from "./layout/header.vue";
|
||||
import CheckBox from "@/components/checkBox/index";
|
||||
@ -143,6 +150,8 @@ const timeList = ref({
|
||||
hasChoose: [],
|
||||
})
|
||||
const isShowCount = ref(false) //是否展示统计
|
||||
const isShowPatrolBlock = ref(false) //是否展示巡逻方块
|
||||
const patrolBlockList = ref([]) //巡逻方块数据
|
||||
watch(() => showClassR.value,
|
||||
(val) => { emitter.emit("followUp", !val); }
|
||||
);
|
||||
@ -228,6 +237,49 @@ function clickXfzl() {
|
||||
emitter.emit("closeAllDialog");
|
||||
emitter.emit("showZlxf");
|
||||
}
|
||||
//点击巡逻方块
|
||||
function clickPatrolBlock() {
|
||||
if (isShowPatrolBlock.value) {
|
||||
// 隐藏方块
|
||||
emitter.emit("deletePointArea", "patrolBlockLarge");
|
||||
isShowPatrolBlock.value = false;
|
||||
patrolBlockList.value = [];
|
||||
} else {
|
||||
// 显示方块
|
||||
getPatrolBlockList({ pageCurrent: 1, pageSize: 1000 }).then((res) => {
|
||||
if (res.records && res.records.length > 0) {
|
||||
patrolBlockList.value = res.records;
|
||||
let cc = [];
|
||||
const coords = res.records.map((el, index) => {
|
||||
let centerPoint = [el.zxX, el.zxY];
|
||||
if (index == 0) cc = centerPoint;
|
||||
let position = [
|
||||
[Number(el.x1), Number(el.y1)],
|
||||
[Number(el.x2), Number(el.y2)]
|
||||
];
|
||||
let text = el.mc;
|
||||
return { position, text, id: el.id, userData: el };
|
||||
});
|
||||
emitter.emit("echoPlane", {
|
||||
fontColor: "#12fdb8",
|
||||
coords: coords,
|
||||
type: "rectangle",
|
||||
flag: "patrolBlockLarge",
|
||||
color: "rgba(2,20,51,0.5)",
|
||||
linecolor: "#1C97FF"
|
||||
});
|
||||
emitter.emit("setMapCenter", { location: cc, zoomLevel: 12 });
|
||||
isShowPatrolBlock.value = true;
|
||||
} else {
|
||||
proxy.$message.warning("暂无巡逻方块数据");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
//点击任务下发
|
||||
function clickTaskIssue() {
|
||||
window.open('#/taskPage/IssueTasks', '_blank');
|
||||
}
|
||||
//点击犯罪预测
|
||||
function clickAddEvent() {
|
||||
showVisible.value = !showVisible.value
|
||||
@ -461,4 +513,13 @@ function handleFzyc() {
|
||||
background: url('~@/assets/home/cj_total.png')no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.addBox {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
.imgBox {
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -86,31 +86,7 @@
|
||||
<button class="dp-default small" v-else @click="getKfdData">检查站</button>
|
||||
<button class="dp-default small" @click="onClickZbyj">周边预警</button>
|
||||
<button class="dp-default small" @click="onClickSpsd">视频随动</button>
|
||||
<el-popover placement="bottom" :visible="visible" :width="476" :append-to-body="false">
|
||||
<template #reference>
|
||||
<button class="dp-default small" @click="visible = !visible">轨迹回放</button>
|
||||
</template>
|
||||
<div class="timeBox">
|
||||
<div class="time1">{{ dateRange[0] }}</div>
|
||||
<el-slider
|
||||
class="playtime-slider"
|
||||
v-model="playTime"
|
||||
id="playtimeSlider"
|
||||
:range="true"
|
||||
:min="sliderMIn"
|
||||
:max="sliderMax"
|
||||
:format-tooltip="playTimeFormat"
|
||||
@change="playTimeChange"
|
||||
:key="videoTndex"
|
||||
>
|
||||
</el-slider>
|
||||
<div class="time1">{{ dateRange[1] }}</div>
|
||||
</div>
|
||||
<div style="text-align: center; width: 100%">
|
||||
<el-button @click.stop="chooseTime">确定</el-button>
|
||||
<el-button @click.stop="onClickGjhf">回放</el-button>
|
||||
</div>
|
||||
</el-popover>
|
||||
<button class="dp-default small" :class="{ active: isGjhfActive }" @click="toggleGjhf">轨迹回放</button>
|
||||
<button class="dp-default small" @click="getDkqkData">打卡情况</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -137,6 +113,7 @@ const props = defineProps({
|
||||
}
|
||||
});
|
||||
const visible = ref(false);
|
||||
const isGjhfActive = ref(false);
|
||||
const times = ref(null);
|
||||
const router = useRouter();
|
||||
|
||||
@ -206,6 +183,7 @@ function getZFJLY(item) {
|
||||
function close() {
|
||||
emitter.emit("deletePointArea", "largeIcon");
|
||||
visible.value = false;
|
||||
isGjhfActive.value = false;
|
||||
emitter.emit("showJzInfo", false);
|
||||
emitter.emit("deletePointArea", "xfq");
|
||||
emitter.emit("deletePointArea", "route");
|
||||
@ -230,6 +208,33 @@ function playTimeChange(val) {
|
||||
function _getTbWzXfwzSelectTrack() {
|
||||
getTbWzXfwzSelectTrack().then((res) => {});
|
||||
}
|
||||
// 切换轨迹回放
|
||||
function toggleGjhf() {
|
||||
if (isGjhfActive.value) {
|
||||
// 取消选中,清除轨迹
|
||||
emitter.emit("deletePointArea", "route");
|
||||
isGjhfActive.value = false;
|
||||
} else {
|
||||
// 选中,获取轨迹
|
||||
let params = {
|
||||
bbId: props.data.id,
|
||||
kssj: dateRange.value.length > 0 ? dateRange.value[0] : "",
|
||||
jssj: dateRange.value.length > 0 ? dateRange.value[1] : ""
|
||||
};
|
||||
emitter.emit("deletePointArea", "route");
|
||||
qcckPost(params, "/mosty-wzzx/tbWzXfwz/selectLswz").then((res) => {
|
||||
let arr = res || [];
|
||||
let points = [];
|
||||
arr.forEach((item) => { points.push([item.jd, item.wd]) });
|
||||
if (points.length > 0) {
|
||||
emitter.emit("drawLineAnimation", {coords:points,isClear:true,flag:'route'});
|
||||
isGjhfActive.value = true;
|
||||
} else {
|
||||
proxy.$message({ type: "warning", message: `没有轨迹数据` });
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
// 根据时间来画轨迹
|
||||
function chooseTime() {
|
||||
let params = {
|
||||
@ -448,4 +453,8 @@ const getDkqkData=()=>{
|
||||
::v-deep .el-popper.is-light{
|
||||
transform: translate(5px, 336px) !important;
|
||||
}
|
||||
.btnBox .active {
|
||||
background: #1c97ff !important;
|
||||
border-color: #1c97ff !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user