var layer;
var laypage;
$(function () {
// 初始化分页
layui.use(['laypage', 'layer'], function () {
layer = layui.layer;
laypage = layui.laypage;
// 初始化分页组件
initPagination();
});
// 初始化图片预览功能
initImagePreview();
});
/**
* 初始化分页组件
*/
function initPagination() {
laypage.render({
elem: 'pagination',
count: typeof totalItems !== 'undefined' ? totalItems : 0,
limit: typeof pageSize !== 'undefined' ? pageSize : 6,
curr: typeof currentPage !== 'undefined' ? currentPage : 1,
layout: [ 'prev', 'next', ],
prev: '',
next: '',
jump: function (obj, first) {
if (!first) {
searchRecord(obj.curr, obj.limit)
}
}
});
}
/**
* 重新初始化分页组件
* @param {number} totalCount - 总记录数
* @param {number} pageSize - 每页大小
* @param {number} currentPage - 当前页码
*/
function reinitPagination(totalCount, pageSize, currentPage) {
laypage.render({
elem: 'pagination',
count: totalCount,
limit: pageSize,
curr: currentPage,
layout: ['prev', 'next', ],
prev: '',
next: '',
jump: function (obj, first) {
if (!first) {
searchRecord(obj.curr, obj.limit)
}
}
});
}
/**
* 获取抓拍记录数据
* @param {Object} params - 查询参数对象
* @param {Function} callback - 回调函数
*/
function fetchSnapRecordData(params, callback) {
$.ajax({
url: '../../security/snap/snapRecord/pageData',
type: 'POST',
dataType: "json",
contentType: "application/json;charset=UTF-8",
data: JSON.stringify(params),
success: function (response) {
if (response.code === '0000') {
callback(null, response.data);
} else {
callback(new Error(response.msg || '数据加载失败'), null);
}
},
error: function (xhr, status, error) {
callback(new Error('请求失败,请稍后重试'), null);
}
});
}
/**
* 构建查询参数
* @param {number} page - 页码
* @param {number} size - 每页大小
* @returns {Object} 查询参数对象
*/
function buildQueryParams(page, size) {
var params = {
page: page,
limit: size
};
// 添加表单查询条件
var form = document.getElementById('snapRecord-form');
if (form) {
// 处理普通输入框和选择框
var inputs = form.querySelectorAll('input[name]:not([type="hidden"]), select[name]');
inputs.forEach(function(input) {
if (input.value) { // 只添加非空值
params[input.name] = input.value;
}
});
}
return params;
}
/**
* 更新图片画廊内容
* @param {Array} records - 抓拍记录数据
*/
function updateGallery(records) {
var container = document.getElementById('gallery-container');
if (!container) return;
// 清空现有内容
container.innerHTML = '';
if (!records || records.length === 0) {
// 显示空状态
container.innerHTML = `
`;
// 隐藏分页
$('.pagination-container').hide();
return;
}
// 显示分页
$('.pagination-container').show();
// 生成图片卡片
var html = '';
records.forEach(function(record) {
//标签展示
var tagsHtml = '';
if (record.tags) {
var tags = record.tags.split(',');
tags.forEach(function(tag) {
tagsHtml += `
${tag.trim()}
`;
});
}
html += `
`;
});
container.innerHTML = html;
}
/**
* 根据摄像头ID获取摄像头名称
* @param {string} cameraId - 摄像头ID
* @returns {string|null} 摄像头名称或null
*/
function getCameraName(cameraId) {
// 确保cameraList存在且为数组
if (typeof cameraList !== 'undefined' && Array.isArray(cameraList) && cameraId) {
// 查找匹配的摄像头对象
var camera = cameraList.find(function(item) {
return item.id === cameraId;
});
// 返回摄像头名称,如果找不到则返回null
return camera ? camera.name : null;
}
return null;
}
/**
* 根据库区ID获取库区名称
* @param {string} deptId - 摄像头ID
* @returns {string|null} 摄像头名称或null
*/
function getDeptName(deptId) {
// 确保deptList存在且为数组
if (typeof deptList !== 'undefined' && Array.isArray(deptList) && deptId) {
// 查找匹配的摄像头对象
var dept = deptList.find(function(item) {
return item.id === deptId;
});
// 返回摄像头名称,如果找不到则返回null
return dept ? dept.kqmc : null;
}
return null;
}
/**
* 格式化日期
* @param {string|number} date - 日期字符串或时间戳
*/
function formatDate(date) {
if (!date) return '';
var d = new Date(date);
return d.getFullYear() + '-' +
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.getSeconds()).padStart(2, '0');
}
/**
* 初始化图片预览功能
*/
function initImagePreview() {
var preview = document.getElementById('imgPreview');
var previewImg = document.getElementById('previewImg');
var closeBtn = document.getElementById('closePreview');
// 如果预览元素不存在,则不初始化
if (!preview || !previewImg) {
return;
}
// 关闭按钮点击事件
if (closeBtn) {
closeBtn.addEventListener('click', closePreview);
}
// 点击预览区域外关闭
preview.addEventListener('click', function (e) {
if (e.target === preview) {
closePreview();
}
});
// 键盘事件监听
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && preview.style.display === 'flex') {
closePreview();
}
});
// 关闭预览函数
function closePreview() {
preview.style.display = 'none';
previewImg.src = '';
}
}
/**
* 显示图片预览
* @param {string} imgUrl 图片URL
*/
function showSnapRecordPreview(imgUrl) {
var preview = document.getElementById('imgPreview');
var previewImg = document.getElementById('previewImg');
if (preview && previewImg) {
previewImg.src = imgUrl;
preview.style.display = 'flex';
}
}
/**
* 读取车牌号
*/
function searchRecord(page , size) {
var pageNumber = 1;
var sizeNumber = 6;
if (pageSize && pageSize > 0){
size = pageSize;
}
if (size && size > 0){
sizeNumber = size;
}
if (page && page > 0){
pageNumber = page;
}
// 构造查询参数,从第一页开始
var queryParams = buildQueryParams(pageNumber, sizeNumber);
// 显示loading
var loadingIndex = layer.load(1, {shade: [0.1, '#fff']});
// 调用数据请求方法
fetchSnapRecordData(queryParams, function(error, data) {
// 关闭loading
layer.close(loadingIndex);
if (error) {
layer.msg(error.message);
return;
}
// 更新页面数据
updateGallery(data.records);
// 重新初始化分页组件
reinitPagination(data.total, data.size, data.current);
});
}
function openConf() {
var url = ctx + "com.fzzy.igds.SnapConf.d";
var options = {
title: "抓拍配置",
url: url,
btn: 0,
yes: function (index, layero) {
$.modal.close(index);
}
};
$.modal.openOptions(options);
}