zhanghua
2025-07-16 7c20fd15b7fbc2bd5756b39d5ab655cc849ffcc3
src/views/intelligentPatrol/studyJudge/index.vue
@@ -48,7 +48,13 @@
                        :key="item.id"
                    >
                        <span>报警图片</span>
                        <img :src="item" />
                        <!-- <img :src="item" /> -->
                        <el-image
                            style="width: 240px"
                            :src="item"
                            :preview-src-list="[item]"
                        >
                        </el-image>
                        <span v-if="index === 0"
                            >报警时间:{{ currentEvent.alarmTime }}</span
                        >
@@ -58,7 +64,13 @@
                        v-for="item in imageList"
                        :key="item.id"
                    >
                        <img :src="item" />
                        <!-- <img :src="item" /> -->
                        <el-image
                            style="width: 240px"
                            :src="item"
                            :preview-src-list="[item]"
                        >
                        </el-image>
                    </div>
                    <el-form
                        ref="currentEvent"
@@ -68,9 +80,9 @@
                        label-position="left"
                        class="left-form"
                    >
                        <el-form-item label="事件编号:">
                            <span>{{ currentEvent.code }}</span>
                        </el-form-item>
                        <!-- <el-form-item label="事件编号:">
              <span>{{ currentEvent.code }}</span>
            </el-form-item> -->
                        <el-form-item label="事件等级:">
                            <span>{{ currentEvent.grade }}</span>
                        </el-form-item>
@@ -92,57 +104,6 @@
                    <!-- <iframe src="https://183.245.159.161:8282/OneMap/index.html#/OneMap?code=2&clientVersion=&skin=white&locale=zh&otherAuthor=allowable"></iframe> -->
                </div>
                <div class="sjm-content-right">
                    <div class="header">
                        <el-form
                            :inline="true"
                            :model="seachData"
                            class="demo-form-inline"
                        >
                            <el-form-item label="事件类型">
                                <el-cascader
                                    v-model="seachData.gradeId"
                                    :options="eventGradeOptions"
                                    :props="options"
                                    clearable
                                ></el-cascader>
                            </el-form-item>
                            <el-form-item label="发生点位">
                                <el-select
                                    v-model="seachData.videoId"
                                    placeholder="请选择"
                                >
                                    <el-option
                                        v-for="item in videoOptions"
                                        :key="item.id"
                                        :label="item.name"
                                        :value="item.id"
                                    ></el-option>
                                </el-select>
                            </el-form-item>
                            <el-form-item label="报警时间">
                                <el-date-picker
                                    v-model="seachData.alarmTime"
                                    type="daterange"
                                    align="right"
                                    unlink-panels
                                    range-separator="至"
                                    start-placeholder="开始日期"
                                    end-placeholder="结束日期"
                                >
                                </el-date-picker>
                            </el-form-item>
                            <el-form-item>
                                <el-button
                                    type="primary"
                                    @click="getInspectionData"
                                    >查询</el-button
                                >
                                <el-button type="primary" @click="resetAll"
                                    >重置</el-button
                                >
                            </el-form-item>
                        </el-form>
                    </div>
                    <div class="card-box">
                        <div class="but-live">
                            <el-button
@@ -157,7 +118,7 @@
                            >
                        </div>
                        <div class="card-header">
                            <span>报警记录--{{ currentEvent.algoName }}</span>
                            <span>报警记录--{{ currentEvent.alarmName }}</span>
                        </div>
                        <el-form
                            ref="currentEvent"
@@ -272,7 +233,11 @@
                </div>
            </div>
        </div>
        <el-dialog :visible="isShowDialog" title="调度信息">
        <el-dialog
            :append-to-body="true"
            :visible.sync="isShowDialog"
            title="调度信息"
        >
            <MyDispatch
                v-if="isShowDialog"
                :mytype="1"
@@ -304,21 +269,22 @@
import basecase from "@/api/operate/basecase";
import baseInfo from "@/api/baseInfo";
import { getStoreInfoList } from "@/api/operate/storeManagement";
import { FILE_ORIGINAL_URL } from "@/utils";
import { FILE_ORIGINAL_PATH } from "@/utils";
import { validateCarNum } from "@/utils/validate";
import MyDispatch from "@/components/dispatch";
import InspectionTable from "@/views/intelligentPatrol/studyJudge/inspectionTable/index.vue";
// import InspectionTable from "@/views/intelligentPatrol/studyJudge/inspectionTable/index.vue";
// import MyMap from "@/components/map";
import MyMap from "@/components/map/leafletMap.vue";
import videoPoint from "@/api/system/videoPoint";
import { getTypeList } from "@/utils/helper"
export default {
    components: { MyDispatch, MyMap, InspectionTable },
    components: { MyDispatch, MyMap },
    created() {
        this.loadVideo();
        this.loadEventGrade();
        this.getInspectionData();
        if (this.info) {
            this.currentEvent = this.info;
            this.loadData();
        } else {
            this.getInspectionData();
        }
        this.initEventParams();
        this.getInspectionCount();
        getStoreInfoList({ current: 1, size: 100 })
@@ -342,6 +308,16 @@
                this.typeList = res;
            })
            .catch((err) => this.$message.error(err));
    },
    watch: {
        '$route'(to, from) { //监听路由是否变化
            if (this.info) {
                this.currentEvent = this.info;
                this.loadData();
            } else {
                this.getInspectionData();
            }
        }
    },
    mounted() {
        this.timer = setInterval(() => {
@@ -371,7 +347,7 @@
            currentEvent: {},
            stateList: [
                {
                    id: 2,
                    id: 10,
                    label: "上报",
                },
                {
@@ -436,31 +412,9 @@
            point: null,
            mark: null,
            zoom: null,
            eventGradeOptions: [],
            videoOptions: [],
            options: {
                label: 'name',
                value: 'id',
            },
            seachData: {}
        };
    },
    methods: {
        loadVideo() {
            videoPoint
                .getVideoPointList({
                    current: 1,
                    size: 1000
                })
                .then(({ records, total }) => {
                    this.videoOptions = records;
                })
        },
        loadEventGrade() {
            getTypeList("1", "02").then((result) => {
                this.eventGradeOptions = result;
            })
        },
        getInspectionCount() {
            basecase
                .getInspectionCountData({
@@ -484,57 +438,61 @@
        },
        getInspectionData() {
            let path = this.$route.path
            let data = {
                current: this.currentPage,
                pageSize: 1,
                type: path.substring(path.length - 1, path.length),
                videoId: this.seachData.videoId,
            }
            };
            if (this.seachData.alarmTime) {
                data.beginTime = this.seachData.alarmTime[0]
                data.endTime = this.seachData.alarmTime[1]
            } if (this.seachData.gradeId) {
                data.gradeId = this.seachData.gradeId[1]
                data.beginTime = this.seachData.alarmTime[0];
                data.endTime = this.seachData.alarmTime[1];
            }
            if (this.seachData.gradeId) {
                data.gradeId = this.seachData.gradeId[1];
            }
            basecase
                .getInspectionData(data)
                .then(({ records, total }) => {
                    this.countData.review = total
                    this.countData.review = total;
                    if (records.length > 0) {
                        this.currentEvent = records[0];
                        this.point = {
                            x: this.currentEvent.longitude,
                            y: this.currentEvent.latitude,
                        };
                        this.zoom = 18;
                        this.mark = { title: this.currentEvent.address };
                        if (this.currentEvent?.picData) {
                            this.imageList = this.currentEvent.picData
                                .split(",")
                                .map((item) => `${FILE_ORIGINAL_URL}sccg/API/img?fileUrl=${item}`);
                        }
                        if (
                            this.currentEvent?.alarmTime ||
                            this.currentEvent?.currentAlarmTime
                        ) {
                            const { alarmTime, currentAlarmTime } = this.currentEvent;
                            const continueAlarmTime =
                                new Date().getTime() -
                                (currentAlarmTime
                                    ? new Date(currentAlarmTime).getTime()
                                    : new Date(alarmTime).getTime());
                            const CONTINUE_DAY = continueAlarmTime / 1000 / 60 / 60 / 24;
                            const CONTINUE_HOURS = (CONTINUE_DAY - parseInt(CONTINUE_DAY)) * 24;
                            this.currentEvent.conntinueTime = `${parseInt(
                                CONTINUE_DAY
                            )}天${parseInt(CONTINUE_HOURS)}小时`;
                        }
                        this.loadData();
                    } else {
                        this.currentEvent = {}
                        this.currentEvent = {};
                        this.$message("当前查询条件无数据");
                    }
                })
                .catch((err) => this.$message.error(err));
        },
        loadData() {
            this.point = {
                x: this.currentEvent.longitude,
                y: this.currentEvent.latitude,
            };
            this.zoom = 18;
            this.mark = { title: this.currentEvent.address };
            if (this.currentEvent?.picData) {
                this.imageList = this.currentEvent.picData
                    .split(",")
                    .map((item) => FILE_ORIGINAL_PATH + item);
            }
            if (this.currentEvent?.alarmTime || this.currentEvent?.currentAlarmTime) {
                const { alarmTime, currentAlarmTime } = this.currentEvent;
                const continueAlarmTime =
                    new Date().getTime() -
                    (currentAlarmTime
                        ? new Date(currentAlarmTime).getTime()
                        : new Date(alarmTime).getTime());
                const CONTINUE_DAY = continueAlarmTime / 1000 / 60 / 60 / 24;
                const CONTINUE_HOURS = (CONTINUE_DAY - parseInt(CONTINUE_DAY)) * 24;
                this.currentEvent.conntinueTime = `${parseInt(
                    CONTINUE_DAY
                )}天${parseInt(CONTINUE_HOURS)}小时`;
            }
        },
        // 确认点击事件
        handleConfirm() {
            this.$refs.currentEvent.validate((flag) => {
@@ -751,13 +709,15 @@
            return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second;
        },
        resetAll() {
            this.seachData = {}
        }
            this.seachData = {};
        },
    },
    beforeDestroy() {
        clearInterval(this.timer);
        this.timer = null;
    },
    props: ["info", "seachData"],
};
</script>