From e34442d2f1fee9bebc3490cafdc0f01280eb8b1e Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期五, 05 十二月 2025 17:10:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 fzzy-igdss-web/src/main/resources/static/snapRecord/snapRecord.js |  278 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 278 insertions(+), 0 deletions(-)

diff --git a/fzzy-igdss-web/src/main/resources/static/snapRecord/snapRecord.js b/fzzy-igdss-web/src/main/resources/static/snapRecord/snapRecord.js
new file mode 100644
index 0000000..01668a6
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/static/snapRecord/snapRecord.js
@@ -0,0 +1,278 @@
+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: ['count', 'prev', 'page', 'next', 'refresh', 'skip'],
+        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: ['count', 'prev', 'page', 'next', 'refresh', 'skip'],
+        jump: function (obj, first) {
+            if (!first) {
+                searchRecord(obj.curr, obj.limit)
+            }
+        }
+    });
+}
+
+/**
+ * 鑾峰彇鎶撴媿璁板綍鏁版嵁
+ * @param {Object} params - 鏌ヨ鍙傛暟瀵硅薄
+ * @param {Function} callback - 鍥炶皟鍑芥暟
+ */
+function fetchSnapRecordData(params, callback) {
+    $.ajax({
+        url: '../../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], 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 = `
+            <div class="empty-state">
+                <i class="fa-solid fa-camera-slash"></i>
+                <h3>鏆傛棤鎶撴媿璁板綍</h3>
+                <p>褰撳墠娌℃湁鍙睍绀虹殑鎶撴媿璁板綍鏁版嵁</p>
+            </div>
+        `;
+        // 闅愯棌鍒嗛〉
+        $('.pagination-container').hide();
+        return;
+    }
+
+    // 鏄剧ず鍒嗛〉
+    $('.pagination-container').show();
+
+    // 鐢熸垚鍥剧墖鍗$墖
+    var html = '';
+    records.forEach(function(record) {
+        html += `
+            <div class="gallery-item">
+                <img src="/logo-sm.png" alt="${record.id}"
+                     data-url="/logo-sm.png" data-id="${record.id}"
+                     class="gallery-img" onclick="showSnapRecordPreview(this.getAttribute('data-url'))">
+                <div class="gallery-info">
+                    <div class="gallery-header">
+                        <h3 class="gallery-title">${record.id}</h3>
+                    </div>
+                    <div class="gallery-meta">
+                        <div class="meta-item">
+                            <i class="layui-icon layui-icon-home"></i>
+                            <span>${record.deptId || ''}</span>
+                        </div>
+                        <div class="meta-item">
+                            <i class="layui-icon layui-icon-video"></i>
+                            <span>${record.cameraId || ''}</span>
+                        </div>
+                        <div class="meta-item">
+                            <i class="layui-icon layui-icon-date"></i>
+                            <span>${formatDate(record.snapTime)}</span>
+                        </div>
+                    </div>
+                    <div class="gallery-tags">
+                        <span class="tag-person">
+                            <i class="layui-icon layui-icon-face-smile"></i>
+                            <span>娴嬭瘯鏍囩</span>
+                        </span>
+                    </div>
+                </div>
+            </div>
+        `;
+    });
+
+    container.innerHTML = html;
+}
+
+/**
+ * 鏍煎紡鍖栨棩鏈�
+ * @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);
+    });
+}

--
Gitblit v1.9.3