From 51603d9354ddef5d8960fe0e6b3e21059da5ff66 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期四, 08 一月 2026 15:53:00 +0800
Subject: [PATCH] 数量检测提交1-页面数据交互

---
 /dev/null                                                                |   25 -
 fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Quantity.java         |    8 
 fzzy-igdss-web/src/main/resources/static/security/quantity.js            |  300 +++++++++++++++++++-
 fzzy-igdss-web/src/main/resources/static/security/quantity.css           |   15 +
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/QuantityService.java |   19 +
 fzzy-igdss-view/src/main/java/com/fzzy/igds/QuantityConf.view.xml        |  103 ++++--
 fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java   |  140 ++++++++-
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java     |   24 +
 fzzy-igdss-web/src/main/resources/templates/security/quantity.html       |  108 +++----
 fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityConf.java     |    4 
 fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java   |   53 ++
 11 files changed, 605 insertions(+), 194 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Quantity.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Quantity.java
index 34ae1ec..0657e7c 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Quantity.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Quantity.java
@@ -18,7 +18,6 @@
 @Entity
 @Table(name = "d_quantity")
 @TableName("d_quantity")
-@IdClass(QuantityKey.class)
 @EqualsAndHashCode(callSuper = false)
 public class Quantity extends BizBaseEntity implements Serializable {
 
@@ -30,16 +29,14 @@
     public static String SORT_PROP = "receiveDate";
 
     @Id
-    @Column(name = "batch_id", columnDefinition = "varchar(40) COMMENT '鎵规缂栧彿'")
+    @Column(name = "batch_id", columnDefinition = "varchar(40) COMMENT '鎵规缂栧彿:浠撳簱缂栫爜_yyyyMMddHHmmss'")
     @TableField("batch_id")
     private String batchId;
 
-    @Id
     @Column(name = "dept_id", columnDefinition = "varchar(40) COMMENT '鎵�灞炲簱鍖�'")
     @TableField("dept_id")
     private String deptId;
 
-    @Id
     @Column(name = "depot_id", columnDefinition = "varchar(40) COMMENT '鎵�灞炰粨搴�'")
     @TableField("depot_id")
     private String depotId;
@@ -64,7 +61,7 @@
     @TableField("points")
     private String points;
 
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
     @Column(name = "receive_date", columnDefinition = "datetime COMMENT '妫�娴嬫椂闂�'")
     @TableField("receive_date")
     private Date receiveDate;
@@ -80,4 +77,5 @@
     @Transient
     @TableField(exist = false)
     private Depot depotData;
+
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityConf.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityConf.java
index 4c47634..68a96ca 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityConf.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityConf.java
@@ -135,6 +135,10 @@
     @TableField("url_out")
     private String urlOut;
 
+    @Column(name = "ptz_type", columnDefinition = "varchar(40) COMMENT '浜戝彴鏂瑰紡'")
+    @TableField("ptz_type")
+    private String ptzType;
+
     @Column(name = "media_addr", columnDefinition = "varchar(100) COMMENT 'RTSP鍦板潃'")
     @TableField("media_addr")
     private String mediaAddr;
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityKey.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityKey.java
deleted file mode 100644
index 19307f4..0000000
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/QuantityKey.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.fzzy.igds.domain;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import java.io.Serializable;
-
-/**
- * @Description 鏁伴噺妫�娴嬫暟鎹富閿�
- * @Author CZT
- * @Date 2025/11/26 09:42
- */
-@Data
-@AllArgsConstructor
-public class QuantityKey implements Serializable {
-
-    private String batchId;
-
-    private String deptId;
-
-    private String depotId;
-
-    public QuantityKey() {
-        super();
-    }
-}
\ No newline at end of file
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
index 5c3c073..0367bbe 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fzzy.igds.domain.FileInfo;
+import com.fzzy.igds.domain.Quantity;
 import com.fzzy.igds.mapper.FileMapper;
 import com.fzzy.igds.utils.Base64Util;
 import com.fzzy.igds.utils.ContextUtil;
@@ -31,6 +32,29 @@
     private FileMapper fileMapper;
 
     /**
+     * 鏍规嵁鏉′欢鑾峰彇闄勪欢淇℃伅
+     * @param companyId
+     * @param bizId
+     * @return
+     */
+    public List<FileInfo> listFile(String companyId, String bizId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+
+        if (StringUtils.isEmpty(bizId)){
+            return null;
+        }
+
+        QueryWrapper<FileInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("company_id", companyId);
+        queryWrapper.eq("biz_id", bizId);
+        queryWrapper.orderByAsc("create_time");
+
+        return fileMapper.selectList(queryWrapper);
+    }
+
+    /**
      * 寮傛鎵ц闄勪欢淇濆瓨
      * @param files     闄勪欢淇℃伅
      * @param bizId     涓氬姟id
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/QuantityService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/QuantityService.java
index cbe3d03..f80d2be 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/QuantityService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/QuantityService.java
@@ -70,6 +70,25 @@
     }
 
     /**
+     * 鏌ヨ鏁版嵁鍒楄〃
+     * @param depotId
+     * @param limit    鏌ヨ鏉℃暟
+     * @return
+     */
+    public List<Quantity> getQuantityList(String depotId, Integer limit) {
+        if (StringUtils.isEmpty(depotId)) {
+            return null;
+        }
+
+        QueryWrapper<Quantity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("depot_id", depotId);
+        queryWrapper.orderByDesc("receive_date");
+        queryWrapper.last("LIMIT " + limit);
+
+        return quantityMapper.selectList(queryWrapper);
+    }
+
+    /**
      * 鏌ヨ閰嶇疆淇℃伅锛屾牴鎹簱鍖虹紪鐮佽幏鍙�
      *
      * @param companyId
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/QuantityConf.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/QuantityConf.view.xml
index e5318f8..fc15a8b 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/QuantityConf.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/QuantityConf.view.xml
@@ -17,19 +17,22 @@
           <Property name="keyProperty">id</Property>
           <Property name="valueProperty">name</Property>
         </Property>
+        <Property name="required">true</Property>
       </PropertyDef>
       <PropertyDef name="deptId">
         <Property></Property>
         <Property name="label">鎵�灞炲垎搴�</Property>
         <Property name="mapping">
-          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#getAllData&quot;).getResult()}</Property>
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#getDeptByUserType&quot;).getResult()}</Property>
           <Property name="keyProperty">id</Property>
           <Property name="valueProperty">kqmc</Property>
         </Property>
+        <Property name="required">true</Property>
       </PropertyDef>
       <PropertyDef name="name">
         <Property></Property>
         <Property name="label">璁惧鍚嶇О</Property>
+        <Property name="required">true</Property>
       </PropertyDef>
       <PropertyDef name="sn">
         <Property></Property>
@@ -134,6 +137,17 @@
           <Property name="keyProperty">dictValue</Property>
           <Property name="valueProperty">dictLabel</Property>
         </Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="ptzType">
+        <Property></Property>
+        <Property name="label">浜戝彴鏂瑰紡</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerPtzType&quot;).getResult()}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+        <Property name="required">true</Property>
       </PropertyDef>
       <PropertyDef name="urlIn">
         <Property></Property>
@@ -189,7 +203,6 @@
       <ToolBar>
         <ToolBarButton>
           <ClientEvent name="onClick">view.get(&quot;#dsMain&quot;).insert();&#xD;
-            view.get(&quot;#depotId&quot;).set(&quot;readOnly&quot;,false);&#xD;
             view.get(&quot;#dgMain&quot;).show();</ClientEvent>
           <Property name="caption">鏂板</Property>
           <Property name="exClassName">btn1</Property>
@@ -200,7 +213,6 @@
           <ClientEvent name="onClick">&#xD;
             var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
             if(select){&#xD;
-            view.get(&quot;#depotId&quot;).set(&quot;readOnly&quot;,true)&#xD;
             view.get(&quot;#dgMain&quot;).show();&#xD;
             }else{&#xD;
             $notify(&quot;璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��&quot;);&#xD;
@@ -312,7 +324,7 @@
       <ClientEvent name="onShow">//鏍规嵁浠撳簱绫诲瀷涓嶅悓锛屾樉绀轰笉鍚岀殑閰嶇疆淇℃伅</ClientEvent>
       <Property name="iconClass">fa fa-tasks</Property>
       <Property name="caption">鏁伴噺妫�娴嬪弬鏁�</Property>
-      <Property name="width">60%</Property>
+      <Property name="width">80%</Property>
       <Property name="closeable">false</Property>
       <Property name="height">90%</Property>
       <Buttons>
@@ -335,13 +347,13 @@
         </Button>
       </Buttons>
       <Children>
-        <GroupBox layoutConstraint="padding:5">
+        <FieldSet layout="padding:5">
           <Property name="caption">鍩烘湰淇℃伅</Property>
           <Buttons/>
           <Children>
             <AutoForm>
               <Property name="dataSet">dsMain</Property>
-              <Property name="cols">*,*,*</Property>
+              <Property name="cols">*,*,*,*</Property>
               <Property name="labelSeparator">锛�</Property>
               <Property name="labelAlign">right</Property>
               <Property name="labelWidth">110</Property>
@@ -351,14 +363,13 @@
                 <Editor/>
               </AutoFormElement>
               <AutoFormElement>
-                <Property name="name">sn</Property>
-                <Property name="property">sn</Property>
-                <Editor/>
-              </AutoFormElement>
-              <AutoFormElement id="depotId">
                 <Property name="name">depotId</Property>
                 <Property name="property">depotId</Property>
-                <Property name="readOnly">false</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">deptId</Property>
+                <Property name="property">deptId</Property>
                 <Editor/>
               </AutoFormElement>
               <AutoFormElement>
@@ -371,6 +382,11 @@
                 <Property name="property">port</Property>
                 <Editor/>
               </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">sn</Property>
+                <Property name="property">sn</Property>
+                <Editor/>
+              </AutoFormElement>
               <AutoFormElement>
                 <Property name="name">protocol</Property>
                 <Property name="property">protocol</Property>
@@ -381,21 +397,16 @@
                 <Property name="property">status</Property>
                 <Editor/>
               </AutoFormElement>
-              <AutoFormElement layoutConstraint="colSpan:2">
-                <Property name="name">remark</Property>
-                <Property name="property">remark</Property>
-                <Editor/>
-              </AutoFormElement>
             </AutoForm>
           </Children>
-        </GroupBox>
-        <GroupBox layoutConstraint="padding:5">
+        </FieldSet>
+        <FieldSet layout="padding:5">
           <Property name="caption">鎽勫儚澶撮厤缃�</Property>
           <Buttons/>
           <Children>
             <AutoForm>
               <Property name="dataSet">dsMain</Property>
-              <Property name="cols">*,*,*</Property>
+              <Property name="cols">*,*,*,*</Property>
               <Property name="labelSeparator">锛�</Property>
               <Property name="labelAlign">right</Property>
               <Property name="labelWidth">110</Property>
@@ -415,6 +426,11 @@
                 <Editor/>
               </AutoFormElement>
               <AutoFormElement>
+                <Property name="name">chanNum</Property>
+                <Property name="property">chanNum</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
                 <Property name="name">loginId</Property>
                 <Property name="property">loginId</Property>
                 <Property name="readOnly">false</Property>
@@ -426,18 +442,8 @@
                 <Editor/>
               </AutoFormElement>
               <AutoFormElement>
-                <Property name="name">chanNum</Property>
-                <Property name="property">chanNum</Property>
-                <Editor/>
-              </AutoFormElement>
-              <AutoFormElement>
                 <Property name="name">playType</Property>
                 <Property name="property">playType</Property>
-                <Editor/>
-              </AutoFormElement>
-              <AutoFormElement layoutConstraint="colSpan:2">
-                <Property name="name">urlIn</Property>
-                <Property name="property">urlIn</Property>
                 <Editor/>
               </AutoFormElement>
               <AutoFormElement>
@@ -445,17 +451,12 @@
                 <Property name="property">snapType</Property>
                 <Editor/>
               </AutoFormElement>
-              <AutoFormElement layoutConstraint="colSpan:2">
-                <Property name="name">urlOut</Property>
-                <Property name="property">urlOut</Property>
-                <Editor/>
-              </AutoFormElement>
               <AutoFormElement>
-                <Property name="name">cameraSn</Property>
-                <Property name="property">cameraSn</Property>
+                <Property name="name">ptzType</Property>
+                <Property name="property">ptzType</Property>
                 <Editor/>
               </AutoFormElement>
-              <AutoFormElement layoutConstraint="colSpan:2">
+              <AutoFormElement layoutConstraint="colSpan:3">
                 <Property name="name">mediaAddr</Property>
                 <Property name="property">mediaAddr</Property>
                 <Property name="trigger">triggerMedia</Property>
@@ -465,10 +466,30 @@
                   </TextEditor>
                 </Editor>
               </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">urlIn</Property>
+                <Property name="property">urlIn</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">urlOut</Property>
+                <Property name="property">urlOut</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">cameraSn</Property>
+                <Property name="property">cameraSn</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">remark</Property>
+                <Property name="property">remark</Property>
+                <Editor/>
+              </AutoFormElement>
             </AutoForm>
           </Children>
-        </GroupBox>
-        <GroupBox layoutConstraint="padding:5">
+        </FieldSet>
+        <FieldSet layout="padding:5">
           <Property name="caption">鏁伴噺妫�娴嬪弬鏁�</Property>
           <Buttons/>
           <Children>
@@ -515,7 +536,7 @@
               </AutoFormElement>
             </AutoForm>
           </Children>
-        </GroupBox>
+        </FieldSet>
       </Children>
       <Tools/>
     </Dialog>
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java b/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java
index d14e989..0005205 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java
@@ -4,11 +4,11 @@
 import com.fzzy.igds.camera.data.ApiCameraResp;
 import com.fzzy.igds.constant.CameraPlayType;
 import com.fzzy.igds.constant.Constant;
+import com.fzzy.igds.data.GroupIndexData;
 import com.fzzy.igds.data.IgdsBaseParam;
 import com.fzzy.igds.data.PageResponse;
 import com.fzzy.igds.data.PatrolSuperData;
-import com.fzzy.igds.domain.Camera;
-import com.fzzy.igds.domain.PatrolRecord;
+import com.fzzy.igds.domain.*;
 import com.fzzy.igds.utils.ContextUtil;
 import com.fzzy.igds.utils.SystemUtil;
 import com.fzzy.common.manager.CommonManager;
@@ -228,26 +228,55 @@
      * @return
      */
     @RequestMapping("/quantity")
-    public String infrared(
-            @RequestParam(value = "type", required = false) String type,
-            ModelMap view) {
+    public String infrared(@RequestParam(value = "type", required = false) String type,
+                           ModelMap view) {
 
         SysUser user = ContextUtil.getLoginUser();
         view.put(Constant.MODEL_KEY_LOGIN_USER, user);
 
         String deptId = ContextUtil.subDeptId(user);
         view.put("deptId", deptId);
-//        List<InfraredCamera> listCamera = infraredManager.listCamera(deptId, user.getCompanyId());
-//
-//        if(null == listCamera){
-//            listCamera = new ArrayList<>();
-//            listCamera.add(new InfraredCamera());
-//        }
-//        view.put("listCamera", listCamera);
+
+        //鏌ヨ搴撳尯涓嬫暟閲忔娴嬭澶�
+        List<QuantityConf> listCamera = secManager.getQuantityConfByDeptId(deptId);
+        view.put("listCamera", listCamera);
 
         return prefix + "/quantity";
     }
 
+    /**
+     * 鏌ヨ璁板綍淇℃伅
+     * @param param
+     * @return
+     */
+    @RequestMapping("/quantity-list")
+    @ResponseBody
+    public PageResponse<List<Quantity>> quantityList(@RequestBody IgdsBaseParam param) {
+        return secManager.quantityList(param);
+    }
+
+    /**
+     * 鏌ヨ鏇茬嚎鍥句俊鎭�
+     * @param param
+     * @return
+     */
+    @RequestMapping("/quantity-chart")
+    @ResponseBody
+    public PageResponse<GroupIndexData> getQuantityChart(@RequestBody IgdsBaseParam param) {
+        return secManager.getQuantityChart(param);
+    }
+
+    /**
+     * 鏌ヨ鏇茬嚎鍥句俊鎭�
+     * @param param
+     * @return
+     */
+    @RequestMapping("/quantity-files")
+    @ResponseBody
+    public PageResponse<List<FileInfo>> getQuantityFiles(@RequestBody IgdsBaseParam param) {
+        return secManager.getQuantityFiles(param);
+    }
+
 
 
     /*------------------宸℃洿杞ㄨ抗椤甸潰------------------*/
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java b/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java
index 5b8e9b8..3833576 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java
@@ -5,20 +5,16 @@
 import com.fzzy.igds.camera.data.ApiCameraData;
 import com.fzzy.igds.camera.data.ApiCameraResp;
 import com.fzzy.igds.constant.RespCodeEnum;
-import com.fzzy.igds.data.PageResponse;
-import com.fzzy.igds.data.PatrolSuperData;
-import com.fzzy.igds.domain.Camera;
-import com.fzzy.igds.domain.Dept;
-import com.fzzy.igds.domain.Patrol;
-import com.fzzy.igds.domain.PatrolRecord;
-import com.fzzy.igds.service.CoreDeptService;
-import com.fzzy.igds.service.PatrolService;
-import com.fzzy.igds.service.SecCameraService;
+import com.fzzy.igds.data.*;
+import com.fzzy.igds.domain.*;
+import com.fzzy.igds.service.*;
 import com.fzzy.igds.utils.ContextUtil;
 import com.fzzy.igds.utils.DateUtil;
 import com.ruoyi.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.stereotype.Component;
+
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.HashMap;
@@ -35,6 +31,8 @@
 public class SecManager {
 
     @Resource
+    private CommonManager commonManager;
+    @Resource
     private SecCameraService secCameraService;
     @Resource
     private ApiCameraManager apiCameraManager;
@@ -43,22 +41,23 @@
     @Resource
     private CoreDeptService coreDeptService;
     @Resource
-    private CommonManager commonManager;
+    private QuantityService quantityService;
+    @Resource
+    private FileService fileService;
 
     /**
-     *
      * @param deptId
      * @param companyId
      * @return
      */
     public List<Camera> listCamera(String deptId, String companyId) {
-        if (null == deptId){
+        if (null == deptId) {
             return null;
         }
 
         List<Camera> list = secCameraService.getCameraByDeptId(companyId, deptId);
 
-        if (null == list || list.isEmpty()){
+        if (null == list || list.isEmpty()) {
             return null;
         }
 
@@ -67,6 +66,7 @@
 
     /**
      * 鏍规嵁鐩戞帶ID鑾峰彇鐩戞帶淇℃伅
+     *
      * @param companyId
      * @param cameraId
      * @return
@@ -75,7 +75,7 @@
         if (StringUtils.isEmpty(companyId)) {
             companyId = ContextUtil.getCompanyId();
         }
-        if (StringUtils.isEmpty(cameraId)){
+        if (StringUtils.isEmpty(cameraId)) {
             return null;
         }
         return secCameraService.getCameraById(companyId, cameraId);
@@ -83,6 +83,7 @@
 
     /**
      * 鑾峰彇鎾斁淇℃伅
+     *
      * @param param
      * @return
      */
@@ -95,8 +96,8 @@
 
         // 鏍规嵁id鑾峰彇璁惧淇℃伅
         Camera camera = secCameraService.getCameraById(ContextUtil.getCompanyId(), param.getId());
-        if(null == camera){
-            log.error("缂撳瓨涓病鏈夎幏鍙栧埌鎽勫儚澶翠俊鎭�"+ param.toString());
+        if (null == camera) {
+            log.error("缂撳瓨涓病鏈夎幏鍙栧埌鎽勫儚澶翠俊鎭�" + param.toString());
             return new ApiCameraResp("ERROR", "缂撳瓨涓病鏈夎幏鍙栧埌鎽勫儚澶翠俊鎭紒");
         }
 
@@ -125,12 +126,13 @@
 
     /**
      * 浜戝彴鎺у埗
+     *
      * @param param
      * @return
      */
     public ApiCameraResp ptzMedia(ApiCameraData param) {
 
-        if(StringUtils.isEmpty(param.getCompanyId())){
+        if (StringUtils.isEmpty(param.getCompanyId())) {
             param.setCompanyId(ContextUtil.getCompanyId());
         }
         return apiCameraManager.getApiCameraService(param.getPtzType()).ptzMedia(param);
@@ -138,6 +140,7 @@
 
     /**
      * 棰勭疆浣嶈缃�
+     *
      * @param param
      * @return
      */
@@ -146,7 +149,6 @@
     }
 
     /**
-     *
      * @param params
      * @return
      */
@@ -162,19 +164,20 @@
         }
 
         secCameraService.refreshCache(ContextUtil.getCompanyId());
-        return new PageResponse<>(RespCodeEnum.CODE_0000, "鎵ц鎴愬姛锛侊紒");
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛锛侊紒");
     }
 
     /**
      * 宸℃缁熻
+     *
      * @return
      */
     public PatrolSuperData patrolTrack() {
         PatrolSuperData patrolSuperData = new PatrolSuperData();
 
         List<Dept> deptList = coreDeptService.getDeptData();
-        if(null == deptList || deptList.isEmpty()){
-            return  patrolSuperData;
+        if (null == deptList || deptList.isEmpty()) {
+            return patrolSuperData;
         }
 
         //搴撳尯杞崲
@@ -185,7 +188,7 @@
 
         List<Patrol> weekList = patrolService.getWeekList();
 
-        if(null != weekList && weekList.size() > 0){
+        if (null != weekList && weekList.size() > 0) {
             Date start = DateUtil.getCurZero(DateUtil.getNewByDay(new Date(), -1));  //鏄ㄥぉ闆剁偣闆跺垎
             Date end = DateUtil.getCurZero(new Date());                         //浠婂ぉ闆剁偣闆跺垎
             for (Patrol patrol : weekList) {
@@ -193,13 +196,13 @@
                 patrolSuperData.setWeekSum(patrolSuperData.getWeekSum() + 1);
 
                 //鏄ㄥぉ浜烘
-                if(patrol.getCreateTime().after(start) && patrol.getCreateTime().before(end)){
+                if (patrol.getCreateTime().after(start) && patrol.getCreateTime().before(end)) {
                     patrolSuperData.setYesterdaySum(patrolSuperData.getYesterdaySum() + 1);
                 }
 
                 //褰撳ぉ缁熻
-                if(patrol.getCreateTime().after(end)){
-                    if(map.get(patrol.getDeptId()) == 0){
+                if (patrol.getCreateTime().after(end)) {
+                    if (map.get(patrol.getDeptId()) == 0) {
                         patrolSuperData.setIsDeptNum(patrolSuperData.getIsDeptNum() + 1);
                         map.put(patrol.getDeptId(), map.get(patrol.getDeptId()) + 1);
                     }
@@ -221,13 +224,96 @@
 
         List<PatrolRecord> patrolRecords = patrolService.getRecordByPatrolId(patrolId);
 
-        if(null != patrolRecords && !patrolRecords.isEmpty()){
+        if (null != patrolRecords && !patrolRecords.isEmpty()) {
             //鍒ゆ柇鏂囦欢鏄惁瀛樺湪
             for (PatrolRecord record : patrolRecords) {
-                record.setImgName(commonManager.isImgExit( record.getImgName(), null));
+                record.setImgName(commonManager.isImgExit(record.getImgName(), null));
             }
         }
 
         return patrolRecords;
     }
+
+    /**
+     * 鑾峰彇鏁伴噺妫�娴嬮厤缃俊鎭�
+     *
+     * @param deptId
+     * @return
+     */
+    public List<QuantityConf> getQuantityConfByDeptId(String deptId) {
+
+        return quantityService.getConfList(ContextUtil.getCompanyId(), deptId);
+    }
+
+    /**
+     * 鏌ヨ鏁伴噺妫�娴嬭褰曪紝榛樿鏌ヨ4鏉�
+     *
+     * @param param
+     * @return
+     */
+    public PageResponse<List<Quantity>> quantityList(IgdsBaseParam param) {
+
+        if (StringUtils.isEmpty(param.getDepotId())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), "鍙傛暟涓虹┖锛侊紒");
+        }
+
+        List<Quantity> quantityList = quantityService.getQuantityList(param.getDepotId(), 4);
+        if (null == quantityList || quantityList.isEmpty()) {
+            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "鏁版嵁涓虹┖锛侊紒");
+        }
+
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛锛侊紒", quantityList);
+    }
+
+    /**
+     * 鏌ヨ鏁伴噺妫�娴嬭褰曪紝榛樿鏌ヨ7鏉★紝灏佽鎴愬浘琛ㄤ俊鎭�
+     *
+     * @param param
+     * @return
+     */
+    public PageResponse<GroupIndexData> getQuantityChart(IgdsBaseParam param) {
+
+        if (StringUtils.isEmpty(param.getDepotId())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), "鍙傛暟涓虹┖锛侊紒");
+        }
+
+
+        List<Quantity> quantityList = quantityService.getQuantityList(param.getDepotId(), 7);
+        if (null == quantityList || quantityList.isEmpty()) {
+            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "鏁版嵁涓虹┖锛侊紒");
+        }
+
+        GroupIndexData data = new GroupIndexData();
+
+        for (int i = (quantityList.size() - 1); i >= 0; i--) {
+            data.getXaxis().add(DateFormatUtils.format(quantityList.get(i).getReceiveDate(), "MM-dd HH:mm"));
+            data.getSeriesData().add(quantityList.get(i).getWeight() + "");
+        }
+
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛锛侊紒", data);
+    }
+
+    /**
+     * 鏌ヨ妫�娴嬫暟鎹搴旀姄鍥�
+     * @param param
+     * @return
+     */
+    public PageResponse<List<FileInfo>> getQuantityFiles(IgdsBaseParam param) {
+
+        if (StringUtils.isEmpty(param.getKey())) {
+            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), "鍙傛暟涓虹┖锛侊紒");
+        }
+
+        List<FileInfo> fileList = fileService.listFile(null, param.getKey());
+        if (null == fileList || fileList.isEmpty()) {
+            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "鏁版嵁涓虹┖锛侊紒");
+        }
+
+        //鍒ゆ柇鏂囦欢鏄惁瀛樺湪
+        for (FileInfo fileInfo : fileList) {
+            fileInfo.setFilePath(commonManager.isImgExit(fileInfo.getFilePath(), null));
+        }
+
+        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "鎵ц鎴愬姛锛侊紒", fileList);
+    }
 }
diff --git a/fzzy-igdss-web/src/main/resources/static/security/quantity.css b/fzzy-igdss-web/src/main/resources/static/security/quantity.css
index db7e3c5..4cafb9d 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/quantity.css
+++ b/fzzy-igdss-web/src/main/resources/static/security/quantity.css
@@ -304,12 +304,19 @@
     margin-top: 5px;
 }
 
+.render_btn {
+    background-color: #f1ba1f;
+    color: #333;
+    height: 30px;
+}
+
 .alert-item {
     border-left: 4px solid #e6a23c;
     background-color: #fdf6ec;
     padding: 10px 15px;
     margin-bottom: 10px;
     border-radius: 0 4px 4px 0;
+    height: 75px;
 }
 
 .alert-item.accent {
@@ -320,6 +327,11 @@
 .alert-item.gray {
     border-left-color: #909399;
     background-color: #f2f2f2;
+}
+
+.alert-item.blue {
+    border-left-color: #205191;
+    background-color: #dde8f1;
 }
 
 .alert-header {
@@ -342,6 +354,7 @@
     font-size: 13px;
     color: #606266;
     margin-bottom: 10px;
+    margin-top: 20px;
 }
 
 .tool-grid {
@@ -526,7 +539,7 @@
 }
 
 .w-select {
-    min-width: 150px;
+    min-width: 250px;
     min-height: 36px;
     border-radius: 4px;
 }
diff --git a/fzzy-igdss-web/src/main/resources/static/security/quantity.js b/fzzy-igdss-web/src/main/resources/static/security/quantity.js
index 856ddd3..0970d82 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/quantity.js
+++ b/fzzy-igdss-web/src/main/resources/static/security/quantity.js
@@ -1,6 +1,12 @@
 var layer;
 var form;
 var curCamera;
+var firstQuantity;
+var hisChart = null;   //鏇茬嚎鍥�
+var listRecord;
+var fileRecord;
+var names = ['12-01', '12-02', '12-03', '12-04', '12-05', '12-06', '12-07'];
+var data = [2560000, 2510000, 2540000, 2530000, 2490000, 2610000, 2570000];
 
 layui.use(['layer'], function () {
     form = layui.form;
@@ -8,7 +14,7 @@
 
     // 璋冭壊鏉垮垏鎹簨浠�
     document.querySelectorAll('.palette-item').forEach(item => {
-        item.addEventListener('click', function() {
+        item.addEventListener('click', function () {
             document.querySelectorAll('.palette-item').forEach(i => {
                 i.classList.remove('active');
             });
@@ -21,18 +27,14 @@
 
     //閫夋嫨鎽勫儚澶村悗瑙﹀彂鐨勪簨浠�
     const cameraSelect = document.getElementById('select-camera');
-    cameraSelect.addEventListener('change', function() {
-        const selectedCamera = this.value;
-        //console.log("--------------"+selectedCamera);
-        video(selectedCamera);
+    cameraSelect.addEventListener('change', function () {
+        const selectId = this.value;
 
-        // 鏇存柊娓╁害璧板娍鍥�
-        // updateEchartsTemp(selectedCamera);
+        ajaxData(selectId);
     });
 
-
-    // 鍒濆鍖朎Charts娓╁害璧板娍鍥�
-    initEchartsTemp();
+    // 鍒濆鍖栬蛋鍔垮浘
+    initEcharts(names, data);
 
 });
 
@@ -40,39 +42,283 @@
  * 瑙嗛鎾斁
  * @param selectId
  */
-function video(selectId) {
+function ajaxData(selectId) {
+    curCamera = null;
     //浠庡垪琛ㄤ腑鑾峰彇鎽勫儚澶翠俊鎭�
-    curCamera = listCamera.find(camera => camera.id === selectId);
-    if (!curCamera) { layer.msg('娌℃湁鑾峰彇鍒板綋鍓嶆憚鍍忓ご淇℃伅鈥︹��', {icon: 1, time: 1200});}
+    curCamera = listCamera.find(camera => camera.depotId === selectId);
+    if (!curCamera) {
+        layer.msg('娌℃湁鑾峰彇鍒板綋鍓嶆憚鍍忓ご淇℃伅鈥︹��', {icon: 1, time: 1200});
+        return;
+    }
 
+    //鑾峰彇瑙嗛
+    video();
 
+    //娓叉煋璧板娍鍥�
+    ajaxEcharts();
+
+    //娓叉煋璁板綍
+    ajaxListRecord();
+
+    //娓叉煋鎶撴媿鍥�
+    ajaxSnapImg();
 }
 
 /**
- * 鏇存柊娓╁害璧板娍鍥�
- * @param selectId
+ * 璇锋眰鍥捐〃淇℃伅
  */
-function updateEchartsTemp(selectId) {
+function ajaxSnapImg() {
+    if(!firstQuantity){
+        renderSnapImg();
+        return;
+    }
+    fileRecord = null;
     var data = {
-        cameraId: selectId
+        key: firstQuantity.batchId
     };
     $.ajax({
         type: 'POST',
-        url: "/security/infrared/chart-data",
+        url: "/security/quantity-files",
         dataType: 'JSON',
         contentType: "application/json;charset=UTF-8",
         data: JSON.stringify(data),
         success: function (result) {
-            //layer.msg("淇℃伅鏇存柊瀹屾垚锛侊紒");
+            if (result.code != "SUCCESS") {
+                renderSnapImg();
+            } else {
+                fileRecord = result.data;
+                renderSnapImg();
+            }
         },
         error: function (result) {
-           // layer.msg(result.msg);
+            renderSnapImg();
         }
     });
 }
 
+/**
+ * 娓叉煋鎶撳浘
+ * @returns {null}
+ */
+function renderSnapImg() {
+
+    if (!fileRecord) return null;
+
+    if (fileRecord.length === 0) return null;
+
+    var record = fileRecord[0];
+    if (record) {
+        $("#file-time1").text(record.createTime);
+        $("#file-img1").attr("src", record.filePath);
+    } else {
+        $("#file-time1").text("----");
+        $("#file-img1").attr("src", "/img/web/security/p-snap.jpg");
+    }
+
+    record = fileRecord[1];
+    if (record) {
+        $("#file-time2").text(record.createTime);
+        $("#file-img2").attr("src", record.filePath);
+    } else {
+        $("#file-time2").text("----");
+        $("#file-img2").attr("src", "/img/web/security/p-snap.jpg");
+    }
+
+    record = fileRecord[2];
+    if (record) {
+        $("#file-time3").text(record.createTime);
+        $("#file-img3").attr("src", record.filePath);
+    } else {
+        $("#file-time3").text("----");
+        $("#file-img3").attr("src", "/img/web/security/p-snap.jpg");
+    }
+
+    record = fileRecord[3];
+    if (record) {
+        $("#file-time4").text(record.createTime);
+        $("#file-img4").attr("src", record.filePath);
+    } else {
+        $("#file-time4").text("----");
+        $("#file-img4").attr("src", "/img/web/security/p-snap.jpg");
+    }
+}
+
+
+/**
+ * 璇锋眰鍥捐〃淇℃伅
+ */
+function ajaxEcharts() {
+    var data = {
+        depotId: curCamera.depotId
+    };
+    $.ajax({
+        type: 'POST',
+        url: "/security/quantity-chart",
+        dataType: 'JSON',
+        contentType: "application/json;charset=UTF-8",
+        data: JSON.stringify(data),
+        success: function (result) {
+            if (result.code != "SUCCESS") {
+                renderEcharts(null);
+            } else {
+                renderEcharts(result.data);
+            }
+        },
+        error: function (result) {
+            renderEcharts(null);
+        }
+    });
+}
+
+/**
+ * 娓叉煋鍥捐〃
+ * @param chartData
+ */
+function renderEcharts(chartData) {
+    var chart = hisChart;
+    if (chartData && chartData.xaxis.length > 0 && chartData.seriesData.length > 0) {
+        chart.option.xAxis.data = chartData.xaxis;
+        chart.option.series[0].data = chartData.seriesData;
+        chart.chart.setOption(chart.option, true);
+    } else {
+        chart.option.xAxis.data = names;
+        chart.option.series[0].data = data;
+        chart.chart.setOption(chart.option, true);
+    }
+    hisChart = chart;
+}
+
+/**
+ * 璇锋眰璁板綍
+ */
+function ajaxListRecord() {
+    firstQuantity = null;
+    listRecord = null;
+    var data = {
+        depotId: curCamera.depotId
+    };
+    $.ajax({
+        type: 'POST',
+        url: "/security/quantity-list",
+        dataType: 'JSON',
+        contentType: "application/json;charset=UTF-8",
+        data: JSON.stringify(data),
+        success: function (result) {
+            if (result.code != "SUCCESS") {
+                renderListRecord();
+            } else {
+                listRecord = result.data;
+                renderListRecord();
+            }
+        },
+        error: function (result) {
+            renderListRecord();
+        }
+    });
+}
+
+/**
+ * 娓叉煋璁板綍
+ * @returns {null}
+ */
+function renderListRecord() {
+
+    if (!listRecord) return null;
+
+    if (listRecord.length === 0) return null;
+
+    var record = listRecord[0];
+    if (record) {
+        firstQuantity = record;
+        $("#record_title1").text("妫�娴嬮噸閲忥細" + record.weight + " KG");
+        $("#record_time1").text(record.receiveDate);
+        $("#record_content1").text(record.remark);
+    } else {
+        $("#record_title1").text("妫�娴嬮噸閲忥細---- KG");
+        $("#record_time1").text("----");
+        $("#record_content1").text("妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�");
+    }
+
+    record = listRecord[1];
+    if (record) {
+        $("#record_title2").text("妫�娴嬮噸閲忥細" + record.weight + " KG");
+        $("#record_time2").text(record.receiveDate);
+        $("#record_content2").text(record.remark);
+    } else {
+        $("#record_title2").text("妫�娴嬮噸閲忥細---- KG");
+        $("#record_time2").text("----");
+        $("#record_content2").text("妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�");
+    }
+
+    record = listRecord[2];
+    if (record) {
+        $("#record_title3").text("妫�娴嬮噸閲忥細" + record.weight + " KG");
+        $("#record_time3").text(record.receiveDate);
+        $("#record_content3").text(record.remark);
+    } else {
+        $("#record_title3").text("妫�娴嬮噸閲忥細---- KG");
+        $("#record_time3").text("----");
+        $("#record_content3").text("妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�");
+    }
+
+    record = listRecord[3];
+    if (record) {
+        $("#record_title4").text("妫�娴嬮噸閲忥細" + record.weight + " KG");
+        $("#record_time4").text(record.receiveDate);
+        $("#record_content4").text(record.remark);
+    } else {
+        $("#record_title4").text("妫�娴嬮噸閲忥細---- KG");
+        $("#record_time4").text("----");
+        $("#record_content4").text("妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�");
+    }
+}
+
+/**
+ * 瑙嗛鎾斁
+ * @param
+ */
+function video() {
+
+    var data = {
+        id: curCamera.cameraSn,
+        playType: curCamera.playType
+    };
+    $.ajax({
+        type: 'POST',
+        url: "/security/get-media",
+        dataType: 'JSON',
+        contentType: "application/json;charset=UTF-8",
+        data: JSON.stringify(data),
+        success: function (result) {
+            if (result.code != "SUCCESS") {
+                layer.msg(result.msg, {icon: 1, time: 1200});
+            } else {
+                toPlay(result.playUrl);
+            }
+        },
+        error: function (result) {
+            layer.msg("鏈幏鍙栧埌鎾斁淇℃伅锛侊紒", {icon: 1, time: 1200});
+        }
+    });
+
+}
+
+/**
+ * 鎾斁瑙嗛
+ * @param url
+ */
+function toPlay(url) {
+    var html = '';
+    if (url) {
+        html += '<iframe src="' + url + '" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>';
+    } else {
+        html += '<img src="/img/web/security/p-snap.jpg">';
+    }
+    $("#divPlugin2").html(html);
+}
+
 // 鍒濆鍖朎Charts娓╁害璧板娍鍥�
-function initEchartsTemp() {
+function initEcharts(names, data) {
     // 鍒濆鍖朎Charts娓╁害璧板娍鍥�
     var temperatureChartDom = document.getElementById('temperatureChart');
     var temperatureChart = echarts.init(temperatureChartDom);
@@ -102,7 +348,7 @@
             {
                 type: 'category',
                 boundaryGap: false,
-                data: ['12-01', '12-02', '12-03', '12-04', '12-05', '12-06', '12-07']
+                data: names
             }
         ],
         yAxis: [
@@ -127,18 +373,20 @@
                 },
                 areaStyle: {
                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                        { offset: 0, color: 'rgba(15, 52, 96, 0.3)' },
-                        { offset: 1, color: 'rgba(15, 52, 96, 0.05)' }
+                        {offset: 0, color: 'rgba(15, 52, 96, 0.3)'},
+                        {offset: 1, color: 'rgba(15, 52, 96, 0.05)'}
                     ])
                 },
-                data: [2560000, 2510000, 2540000, 2530000, 2490000, 2610000, 2570000]
+                data: data
             }
         ]
     };
     // 娓叉煋鍥捐〃
     option && temperatureChart.setOption(option);
+    hisChart = {"chart": temperatureChart, "option": option};
+
     // 绐楀彛澶у皬鍙樺寲鏃惰皟鏁村浘琛ㄥぇ灏�
-    window.addEventListener('resize', function() {
+    window.addEventListener('resize', function () {
         temperatureChart.resize();
     });
 }
\ No newline at end of file
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/quantity.html b/fzzy-igdss-web/src/main/resources/templates/security/quantity.html
index 8ef6b9b..d079147 100644
--- a/fzzy-igdss-web/src/main/resources/templates/security/quantity.html
+++ b/fzzy-igdss-web/src/main/resources/templates/security/quantity.html
@@ -22,24 +22,24 @@
                     <h2>瀹炴椂鐩戞帶鐢婚潰</h2>
                     <div class="layui-row layui-col-space10">
                         <div class="layui-inline">
-                            <label class="layui-form-label">浠撳簱鍒楄〃</label>
+                            <label class="layui-form-label">璁惧鍒楄〃</label>
                             <select id="select-camera" class="layui-form-select w-select">
                                 <option>璇烽�夋嫨鈥︹��</option>
-                                <option th:each="camera:${listCamera}" th:value="${camera.id}" th:text="${camera.name}"></option>
+                                <option th:each="camera:${listCamera}" th:value="${camera.depotId}" th:text="${camera.name}"></option>
                             </select>
                         </div>
                     </div>
                 </div>
                 <div class="card-body">
                     <!-- 鍙岃棰戝睍绀哄尯鍩� -->
-                    <div class="video-container" id="video-container" style="grid-template-columns: 1fr;">
-                        <!-- 鐑垚鍍忚棰戠敾闈� -->
-                        <div class="video-box" id="thermal-video">
-                            <div class="video-label">
-                                <i class="layui-icon layui-icon-camera-fill"></i> 鐑垚鍍忚棰�
-                            </div>
-                            <div id="divPlugin2">
-                                <img th:src="@{/img/web/security/p-snap.jpg}" alt="鐑垚鍍忓疄鏃剁敾闈�">
+                    <div class="video-container" id="video-container" style="grid-template-columns: 1fr;min-height: 610px;">
+<!--                        &lt;!&ndash; 鐑垚鍍忚棰戠敾闈� &ndash;&gt;-->
+<!--                        <div class="video-box" id="thermal-video">-->
+<!--                            <div class="video-label">-->
+<!--                                <i class="layui-icon layui-icon-camera-fill"></i>-->
+<!--                            </div>-->
+                            <div id="divPlugin2" style="height: 100%">
+                                <img th:src="@{/img/web/security/p-snap.jpg}" alt="">
                             </div>
                             <!-- 娓╁害鏍囪鐐�
                             <div class="temp-mark" title="寮傚父楂樻俯鐐�: 32掳C">
@@ -63,7 +63,7 @@
                             </div>
                             -->
                             
-                        </div>
+<!--                        </div>-->
                     </div>
 
                     <!-- 绠�鍖栫殑瑙嗛鎺у埗宸ュ叿鏍�-->
@@ -86,6 +86,12 @@
                         <button class="layui-btn layui-btn-default layui-btn-sm">
                            鍑忓�� <i class="layui-icon layui-icon-subtraction"></i>
                         </button>
+                        <button class="layui-btn layui-btn-default layui-btn-sm">
+                            寮�濮嬫娴� <i class="layui-icon layui-icon-subtraction"></i>
+                        </button>
+                        <button class="layui-btn layui-btn-default layui-btn-sm">
+                            鍋滄妫�娴� <i class="layui-icon layui-icon-subtraction"></i>
+                        </button>
                     </div>
 
 
@@ -100,46 +106,46 @@
                 <div class="card-body">
                     <div class="record-grid">
                         <!-- 鏅�氳棰戣褰� -->
-                        <div class="record-item">
+                        <div class="record-item" style="border: 2px solid var(--warning-color);">
                             <div class="record-img">
-                                <img th:src="@{/img/web/security/p-snap.jpg}" alt="鏅�氳棰戣褰�">
+                                <img id="file-img1" th:src="@{/img/web/security/p-snap.jpg}">
                             </div>
                             <div class="record-info">
-                                <div class="record-name">绮粨1鍙�</div>
-                                <div class="record-time">2025-12-03 10:00</div>
+                                <div class="record-name">杩囩▼鎶撴媿1</div>
+                                <div id="file-time1" class="record-time">2025-12-03 10:00</div>
                             </div>
                         </div>
 
                         <!-- 鐑垚鍍忚棰戣褰� -->
-                        <div class="record-item">
+                        <div class="record-item" style="border: 2px solid var(--warning-color);">
                             <div class="record-img">
-                                <img th:src="@{/img/web/security/p-snap-red.jpg}" alt="鐑垚鍍忚棰戣褰�">
+                                <img id="record-img2" th:src="@{/img/web/security/p-snap.jpg}">
                             </div>
                             <div class="record-info">
-                                <div class="record-name">绮粨1鍙�</div>
-                                <div class="record-time">2025-12-03 10:00</div>
+                                <div class="record-name">杩囩▼鎶撴媿2</div>
+                                <div id="file-time2" class="record-time">2025-12-03 10:00</div>
                             </div>
                         </div>
 
                         <!-- 寮傚父浜嬩欢璁板綍 -->
                         <div class="record-item" style="border: 2px solid var(--warning-color);">
                             <div class="record-img">
-                                <img th:src="@{/img/web/security/p-snap.jpg}" alt="寮傚父浜嬩欢璁板綍">
+                                <img id="record-img3" th:src="@{/img/web/security/p-snap.jpg}">
                             </div>
                             <div class="record-info">
-                                <div class="record-name">绮粨3鍙�</div>
-                                <div class="record-time">2025-12-03 14:20</div>
+                                <div class="record-name">杩囩▼鎶撴媿3</div>
+                                <div id="file-time3" class="record-time">2025-12-03 14:20</div>
                             </div>
                         </div>
 
                         <!-- 鐑垚鍍忚棰戣褰� -->
-                        <div class="record-item">
+                        <div class="record-item" style="border: 2px solid var(--warning-color);">
                             <div class="record-img">
-                                <img th:src="@{/img/web/security/p-snap-red.jpg}" alt="鐑垚鍍忚棰戣褰�">
+                                <img id="record-img4" th:src="@{/img/web/security/p-snap.jpg}">
                             </div>
                             <div class="record-info">
-                                <div class="record-name">绮粨1鍙�</div>
-                                <div class="record-time">2025-12-03 10:00</div>
+                                <div class="record-name">杩囩▼鎶撴媿4</div>
+                                <div id="file-time4" class="record-time">2025-12-03 10:00</div>
                             </div>
                         </div>
                     </div>
@@ -175,43 +181,31 @@
                 <div class="card-body" style="max-height: 410px; overflow-y: hidden;">
                     <div class="alert-item accent">
                         <div class="alert-header">
-                            <div class="alert-title">妫�娴嬮噸閲忥細2590000 KG</div>
-                            <div class="alert-time">2025-12-07 10:00</div>
+                            <div class="alert-title" id="record_title1">妫�娴嬮噸閲忥細---- KG</div>
+                            <div class="alert-time" id="record_time1">----</div>
                         </div>
-                        <div class="alert-content">妫�娴嬮噸閲忎负2590000 KG锛屽疄闄呴噸閲忎负2550000 KG锛岃宸皬浜�5%銆�</div>
-                        <div style="text-align: right;">
-                            <button class="layui-btn layui-btn-xs" style="background-color: var(--primary-color);">鏌ョ湅涓夌淮娓叉煋</button>
-                        </div>
+                        <div class="alert-content" id="record_content1">妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�</div>
                     </div>
                     <div class="alert-item">
                         <div class="alert-header">
-                            <div class="alert-title">妫�娴嬮噸閲忥細2540000 KG</div>
-                            <div class="alert-time">2025-12-06 10:00</div>
+                            <div class="alert-title" id="record_title2">妫�娴嬮噸閲忥細---- KG</div>
+                            <div class="alert-time" id="record_time2">----</div>
                         </div>
-                        <div class="alert-content">妫�娴嬮噸閲忎负2540000 KG锛屽疄闄呴噸閲忎负2550000 KG锛岃宸皬浜�5%銆�</div>
-                        <div style="text-align: right;">
-                            <button class="layui-btn layui-btn-xs" style="background-color: var(--primary-color);">鏌ョ湅涓夌淮娓叉煋</button>
+                        <div class="alert-content" id="record_content2">妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�</div>
+                    </div>
+                    <div class="alert-item blue">
+                        <div class="alert-header">
+                            <div class="alert-title" id="record_title3">妫�娴嬮噸閲忥細---- KG</div>
+                            <div class="alert-time" id="record_time3">----</div>
                         </div>
+                        <div class="alert-content" id="record_content3">妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�</div>
                     </div>
                     <div class="alert-item gray">
                         <div class="alert-header">
-                            <div class="alert-title">妫�娴嬮噸閲忥細2510000 KG</div>
-                            <div class="alert-time">2025-12-05 10:00</div>
+                            <div class="alert-title" id="record_title4">妫�娴嬮噸閲忥細---- KG</div>
+                            <div class="alert-time" id="record_time4">----</div>
                         </div>
-                        <div class="alert-content">妫�娴嬮噸閲忎负2510000 KG锛屽疄闄呴噸閲忎负2550000 KG锛岃宸皬浜�5%銆�</div>
-                        <div style="text-align: right;">
-                            <button class="layui-btn layui-btn-xs" style="background-color: var(--primary-color);">鏌ョ湅涓夌淮娓叉煋</button>
-                        </div>
-                    </div>
-                    <div class="alert-item gray">
-                        <div class="alert-header">
-                            <div class="alert-title">妫�娴嬮噸閲忥細2560000 KG</div>
-                            <div class="alert-time">2025-12-04 10:00</div>
-                        </div>
-                        <div class="alert-content">妫�娴嬮噸閲忎负2560000 KG锛屽疄闄呴噸閲忎负2550000 KG锛岃宸皬浜�5%銆�</div>
-                        <div style="text-align: right;">
-                            <button class="layui-btn layui-btn-xs" style="background-color: var(--primary-color);">鏌ョ湅涓夌淮娓叉煋</button>
-                        </div>
+                        <div class="alert-content" id="record_content4">妫�娴嬮噸閲忎负---- KG锛屽疄闄呴噸閲忎负---- KG锛岃宸皬浜�-%銆�</div>
                     </div>
                 </div>
             </div>
@@ -228,15 +222,15 @@
                         <div class="tool-item-simple" style="height: 65px">
                             <div class="tool-icon-simple"><i class="layui-icon layui-icon-chart"></i></div>
                             <div class="tool-text">
-                                <div class="tool-name-simple">娓╁害鍙樺寲鏇茬嚎</div>
-                                <div class="tool-desc">鏌ョ湅娓╁害鍙樺寲瓒嬪娍鍒嗘瀽</div>
-                            </div>
+                                <div class="tool-name-simple">鏁版嵁鎶ヨ〃</div>
+                                <div class="tool-desc">鏌ョ湅鏁版嵁鎶ヨ〃鍒嗘瀽</div>
+                            </div>--
                         </div>
                         <div class="tool-item-simple" style="height: 65px">
                             <div class="tool-icon-simple"><i class="layui-icon layui-icon-print"></i></div>
                             <div class="tool-text">
                                 <div class="tool-name-simple">瀵煎嚭鍒嗘瀽鎶ュ憡</div>
-                                <div class="tool-desc">瀵煎嚭娓╁害鏁版嵁鍙婂垎鏋愮粨鏋�</div>
+                                <div class="tool-desc">瀵煎嚭鏁版嵁鏁伴噺鍒嗘瀽缁撴灉</div>
                             </div>
                         </div>
                     </div>

--
Gitblit v1.9.3