sgj
2026-02-28 3931c704761e5f51b9aed161560a3214058881c8
fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo.js
@@ -1,6 +1,41 @@
var layer;
var laypage;
// 监听收储公司 Select2 变化
$(document).ready(function() {
    // 监听收储公司下拉框变化
    $('select[name="key"]').on('change', function() {
        var selectedParentId = $(this).val();
        if(selectedParentId) {
            getSelectData(selectedParentId);
        } else {
            // 如果清空了收储公司选择,也清空库区选项
            var $deptSelect = $('select[name="deptId"]');
            $deptSelect.empty()
                .append('<option value="">所有</option>')
                .select2({
                    placeholder: "请选择库区",
                    allowClear: true,
                    width: 'resolve'
                });
        }
    });
    // 在点击库区下拉框时,仅验证而不发起新请求
    $('select[name="deptId"]').on('select2:opening', function(e) {
        var selectedParentId = $('select[name="key"]').val();
        if(!selectedParentId) {
            e.preventDefault();
            layer.msg('请先选择收储公司');
            return false;
        }
        // 不在此处发起请求,依赖 change 事件时的预加载
        return true;
    });
});
$(function () {
    // 初始化分页
    layui.use(['laypage', 'layer'], function () {
@@ -15,6 +50,72 @@
    initImagePreview();
});
// 修改 getSelectData 函数,支持 Select2 的数据格式
function getSelectData(parentId) {
    if(!parentId) {
        return layer.msg('请选择收储公司');
    }
    $.ajax({
        url: "../../system/dept-new/getDeptByUserType",
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: parentId,
        success: function (response) {
            if (response) {
                deptList = response;
                // 重新初始化 Select2 或更新选项
                updateDeptSelect2Options(deptList);
            } else {
                layer.msg(response.msg || '数据加载失败');
            }
        },
        error: function (xhr, status, error) {
            layer.msg('数据加载失败');
        }
    });
}
// 更新 Select2 下拉框选项
function updateDeptSelect2Options(deptList) {
    var $deptSelect = $('select[name="deptId"]');
    // 保存当前选中的值
    var currentVal = $deptSelect.val();
    // 清空现有选项
    $deptSelect.empty();
    // 添加"所有"选项
    $deptSelect.append('<option value="">所有</option>');
    // 添加动态数据选项
    if(deptList && deptList.length > 0) {
        deptList.forEach(function(dept) {
            $deptSelect.append('<option value="' + dept.id + '">' + dept.kqmc + '</option>');
        });
    }
    // 重新初始化 Select2
    $deptSelect.select2({
        placeholder: "请选择库区",
        allowClear: true,
        width: 'resolve'
    });
    // 恢复之前的选择
    if(currentVal) {
        $deptSelect.val(currentVal).trigger('change');
    }
}
/**
 * 初始化分页组件
 */
@@ -24,13 +125,20 @@
        count: typeof totalItems !== 'undefined' ? totalItems : 0,
        limit: typeof pageSize !== 'undefined' ? pageSize : 6,
        curr: typeof currentPage !== 'undefined' ? currentPage : 1,
        layout: ['prev', 'page', 'next', 'refresh', 'skip'],
        layout: ['prev','page', 'next'],
        // prev: '<i class="layui-icon layui-icon-left"></i>',
        // next: '<i class="layui-icon layui-icon-right"></i>',
        jump: function (obj, first) {
            if (!first) {
                searchRecord(obj.curr, obj.limit)
            }
        }
    });
    var total = typeof totalItems !== 'undefined' ? totalItems : 0;
    if(total == 0){
        // 隐藏分页
        $('#paginationContainer').hide();
    }
}
/**
@@ -45,7 +153,9 @@
        count: totalCount,
        limit: pageSize,
        curr: currentPage,
        layout: ['prev', 'page', 'next', 'refresh', 'skip'],
        layout: ['prev', 'page','next'],
        // prev: '<i class="layui-icon layui-icon-left"></i>',
        // next: '<i class="layui-icon layui-icon-right"></i>',
        jump: function (obj, first) {
            if (!first) {
                searchRecord(obj.curr, obj.limit)
@@ -94,7 +204,8 @@
    // 添加表单查询条件
    var form = document.getElementById('eventInfo-form');
    if (form) {
        var inputs = form.querySelectorAll('input[name], select[name]');
        // 处理普通输入框和选择框,排除隐藏域
        var inputs = form.querySelectorAll('input[name]:not([type="hidden"]), select[name]');
        inputs.forEach(function(input) {
            if (input.value) { // 只添加非空值
                params[input.name] = input.value;
@@ -126,16 +237,30 @@
            </div>
        `;
        // 隐藏分页
        $('.pagination-container').hide();
        $('#paginationContainer').hide();
        return;
    }
    // 显示分页
    $('.pagination-container').show();
    $('#paginationContainer').show();
    // 生成事件卡片
    var html = '';
    records.forEach(function(record) {
        // 标签展示
        var tagsHtml = '';
        if (record.tags) {
            var tags = record.tags.split(',');
            tags.forEach(function(tag) {
                tagsHtml += `
            <span class="tag-person">
                <i class="layui-icon layui-icon-note"></i>
                <span>${tag.trim()}</span>
            </span>
        `;
            });
        }
        html += `
            <div class="gallery-item">
                <img src="${record.imgName || '/logo-sm.png'}" alt="${record.id}"
@@ -144,37 +269,25 @@
                <div class="gallery-info">
                    <div class="gallery-header">
                        <h3 class="gallery-title">${record.name || record.id}</h3>
                         <div class="gallery-tags">
                            <span class="tag-person">
                                <i class="layui-icon layui-icon-note"></i>
                                <span>汽车</span>
                            </span>
                            <span class="tag-person">
                                <i class="layui-icon layui-icon-note"></i>
                                <span>卡车</span>
                            </span>
                            <span class="tag-person">
                                <i class="layui-icon layui-icon-note"></i>
                                <span>翻斗车</span>
                            </span>
                        <div class="gallery-tags">
                            ${tagsHtml}
                        </div>
                    </div>
                    <div class="gallery-meta">
                        <div style="display: flex; align-items: center; gap: 15px;width: 100%">
                            <div class="meta-item" style="width: 50%">
                            <div class="meta-item" style="min-width: 60%">
                                <i class="layui-icon layui-icon-video"></i>
                                <span>${record.serId || ''}</span>
                                <span>${getCameraName(record.serId) || record.serId || ''}</span>
                            </div>
                            <div class="meta-item" style="width: 50%">
                            <div class="meta-item" style="min-width: 40%">
                                <i class="layui-icon layui-icon-date"></i>
                                <span>${formatDate(record.time)}</span>
                            </div>
                        </div>
                        <div class="meta-item" >
                            <i class="layui-icon layui-icon-home"></i>
                            <span>${record.deptId || ''}</span>
                        <div class="meta-item">
                            <i class="layui-icon layui-icon-component"></i>
                            <span>${getTypeName(record.bizType) || record.bizType || ''}</span>
                        </div>
                    </div>
                </div>
            </div>
@@ -183,6 +296,42 @@
    container.innerHTML = html;
}
/**
 * 根据摄像头ID获取摄像头名称
 * @param {string} serId - 摄像头ID
 * @returns {string|null} 摄像头名称或null
 */
function getCameraName(serId) {
    // 确保cameraList存在且为数组
    if (typeof cameraList !== 'undefined' && Array.isArray(cameraList) && serId) {
        // 查找匹配的摄像头对象
        var camera = cameraList.find(function(item) {
            return item.id === serId;
        });
        // 返回摄像头名称,如果找不到则返回null
        return camera ? camera.name : null;
    }
    return null;
}
/**
 * 根据业务类型编码获取业务类型名称
 * @param {string} bizType - 业务类型编码
 * @returns {string|null} 业务类型名称或null
 */
function getTypeName(bizType) {
    if (typeof bizTypeList !== 'undefined' && Array.isArray(bizTypeList) && bizType) {
        // 查找匹配的业务类型对象
        var type = bizTypeList.find(function(item) {
            return item.code === bizType;
        });
        // 返回业务类型名称,如果找不到则返回null
        return type ? type.msg : null;
    }
    return null;
}
/**
 * 格式化日期
@@ -195,7 +344,7 @@
        String(d.getMonth() + 1).padStart(2, '0') + '-' +
        String(d.getDate()).padStart(2, '0') + ' ' +
        String(d.getHours()).padStart(2, '0') + ':' +
        String(d.getMinutes()).padStart(2, '0') ;
        String(d.getMinutes()).padStart(2, '0');
}
/**
@@ -254,7 +403,7 @@
/**
 * 读取事件记录
 */
function searchRecord(page , size) {
function searchRecord(page, size) {
    var pageNumber = 1;
    var sizeNumber = 6;
    if (pageSize && pageSize > 0){