From 51faf3e9c3c613e7fb12db6c88356946f2429e0c Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期五, 12 十二月 2025 17:35:30 +0800
Subject: [PATCH] 调整安防视频页面及逻辑
---
fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java | 10
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml | 144 +++--
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultSnapServiceImpl.java | 19
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraPtzType.java | 33 +
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SecurityController.java | 75 ++
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiSnapReq.java | 97 ++++
fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html | 355 ++++++++++++++
fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js | 61 ++
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraData.java | 25
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/AbstractApiCameraService.java | 47 +
fzzy-igdss-web/src/main/resources/static/security/video-control.js | 77 +++
fzzy-igdss-web/src/main/resources/static/security/video-list.css | 6
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPtzServiceImpl.java | 19
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPlayServiceImpl.java | 19
/dev/null | 236 ---------
fzzy-igdss-web/src/main/resources/static/security/video-aerial-dept.js | 0
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java | 10
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraResp.java | 3
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Camera.java | 4
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraService.java | 74 +++
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraManager.java | 47 +
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraSnapType.java | 41 +
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutApiController.java | 1
fzzy-igdss-web/src/main/resources/templates/security/video-aerial-dept.html | 2
24 files changed, 1,083 insertions(+), 322 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/AbstractApiCameraService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/AbstractApiCameraService.java
new file mode 100644
index 0000000..caf491e
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/AbstractApiCameraService.java
@@ -0,0 +1,47 @@
+package com.fzzy.igds.camera;
+
+import com.fzzy.igds.camera.data.ApiCameraData;
+import com.fzzy.igds.camera.data.ApiCameraResp;
+import com.fzzy.igds.camera.data.ApiSnapReq;
+import com.fzzy.igds.domain.Camera;
+import lombok.extern.slf4j.Slf4j;
+import java.util.List;
+
+/**
+ * @Description 鎺ュ彛鎶借薄瀹炵幇绫伙紝鎶借薄瀹炵幇绫伙紝鎻愪緵榛樿瀹炵幇锛屽叿浣撲笟鍔″疄鐜扮户鎵胯鎶借薄绫伙紝骞跺疄鐜版娊璞℃柟娉�
+ * @Author CZT
+ * @Date 2025/12/11 10:10
+ */
+@Slf4j
+public abstract class AbstractApiCameraService implements ApiCameraService {
+
+ @Override
+ public ApiCameraResp getPlayAddr(ApiCameraData apiCameraDto) {
+ return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "褰撳墠鍗忚鏃犻渶鎵ц褰撳墠鍗忚");
+ }
+
+ @Override
+ public ApiCameraResp ptzMedia(ApiCameraData apiCameraDto) {
+ return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "褰撳墠鍗忚鏃犻渶鎵ц褰撳墠鍗忚");
+ }
+
+ @Override
+ public ApiCameraResp ptzPreset(ApiCameraData apiCameraDto) {
+ return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "褰撳墠鍗忚鏃犻渶鎵ц褰撳墠鍗忚");
+ }
+
+ @Override
+ public ApiCameraResp keepAlive(ApiCameraData apiCameraDto) {
+ return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "褰撳墠鍗忚鏃犻渶鎵ц褰撳墠鍗忚");
+ }
+
+ @Override
+ public List<Camera> searchCamera(ApiCameraData apiCameraDto) {
+ return null;
+ }
+
+ @Override
+ public ApiCameraResp snapImg(ApiSnapReq apiCameraDto) {
+ return new ApiCameraResp(ApiCameraResp.CODE_SUCCESS, "褰撳墠鍗忚鏃犻渶鎵ц褰撳墠鍗忚");
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraManager.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraManager.java
new file mode 100644
index 0000000..dfbf545
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraManager.java
@@ -0,0 +1,47 @@
+package com.fzzy.igds.camera;
+
+import com.fzzy.igds.constant.CameraPlayType;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 瑙嗛鎺ュ彛绠$悊锛岀敤浜庣鐞嗕笉鍚屾挱鏀炬柟寮忕殑鍗忚鎺ュ彛锛屼笟鍔¢�氳繃褰撳墠绠$悊璋冪敤涓嶅悓鐨勫疄鐜�
+ */
+@Component(ApiCameraManager.BEAN_ID)
+public class ApiCameraManager implements ApplicationContextAware {
+
+ public static final String BEAN_ID = "core.apiCameraManager";
+
+
+ public static Map<String, ApiCameraService> remoteMap = new HashMap<>();
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+
+ Map<String, ApiCameraService> grainMap = applicationContext.getBeansOfType(ApiCameraService.class);
+
+ for (String key : grainMap.keySet()) {
+ remoteMap.put(grainMap.get(key).getType(), grainMap.get(key));
+ }
+ }
+
+
+ /**
+ * 鏍规嵁绫诲瀷鏍囩灏佽涓嶅悓鐨勬帴鍙e疄鐜帮紝
+ *
+ * @param type 鍙互鏄痯layType锛屽彲浠ユ槸snapType锛屽彲浠ユ槸ptzType
+ * @return 鎺ュ彛瀹炵幇
+ */
+ public ApiCameraService getApiCameraService(String type) {
+ ApiCameraService apiCameraService = remoteMap.get(type);
+ if (null == apiCameraService) {
+ apiCameraService = remoteMap.get(CameraPlayType.PLAY_TYPE_DEFAULT.getCode());
+ }
+ return apiCameraService;
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraService.java
new file mode 100644
index 0000000..043059b
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/ApiCameraService.java
@@ -0,0 +1,74 @@
+package com.fzzy.igds.camera;
+
+import com.fzzy.igds.camera.data.ApiCameraData;
+import com.fzzy.igds.camera.data.ApiCameraResp;
+import com.fzzy.igds.camera.data.ApiSnapReq;
+import com.fzzy.igds.domain.Camera;
+import java.util.List;
+
+/**
+ * @Description 瑙嗛娴佸獟浣撹皟鐢ㄦ帴鍙o紝閫氳繃绯荤粺閰嶇疆鐨勬挱鏀炬柟寮忚皟鐢ㄤ笉鍚岀殑娴佸獟浣撳疄鐜般��
+ * @Author CZT
+ * @Date 2025/12/11 10:10
+ */
+public interface ApiCameraService {
+
+ /**
+ * @return 閰嶇疆鐨勭被鍨嬫爣绛�
+ */
+ String getType();
+
+ /**
+ * 鏍规嵁鍙傛暟鑾峰彇鎾斁鍦板潃
+ *
+ * @param apiCameraDto
+ * @return
+ */
+ ApiCameraResp getPlayAddr(ApiCameraData apiCameraDto);
+
+
+ /**
+ * 璁惧浜戝彴鎿嶄綔
+ *
+ * @param apiCameraDto
+ * @return
+ */
+ ApiCameraResp ptzMedia(ApiCameraData apiCameraDto);
+
+
+ /**
+ * 棰勭疆浣嶈缃�
+ *
+ * @param apiCameraDto
+ * @return
+ */
+ ApiCameraResp ptzPreset(ApiCameraData apiCameraDto);
+
+
+ /**
+ * 鎾斁杩炴帴淇濇寔鍦ㄧ嚎锛岄拡瀵归渶瑕佸綋鍓嶆帴鍙g殑娴佸獟浣撶敓鏁�
+ *
+ * @param apiCameraDto
+ * @return
+ */
+ ApiCameraResp keepAlive(ApiCameraData apiCameraDto);
+
+
+ /**
+ * 閫氳繃娴佸獟浣撴帴鍙h皟鐢ㄦ祦濯掍綋閰嶇疆鐨勬憚鍍忓ご淇℃伅
+ *
+ * @param apiCameraDto
+ * @return
+ */
+ List<Camera> searchCamera(ApiCameraData apiCameraDto);
+
+
+ /**
+ * 鎶撴媿鎺ュ彛锛岄渶瑕佹牴鎹姄鎷嶆柟寮忚皟鏁�
+ *
+ * @param apiCameraDto
+ * @return
+ */
+ ApiCameraResp snapImg(ApiSnapReq apiCameraDto);
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraData.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraData.java
similarity index 73%
rename from fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraData.java
rename to fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraData.java
index 7ce863f..fbf7303 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraData.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraData.java
@@ -1,4 +1,4 @@
-package com.fzzy.igds.data;
+package com.fzzy.igds.camera.data;
import lombok.Data;
@@ -36,10 +36,15 @@
* IP
*/
private String ip;
+
+ /**
+ * WEB绔彛
+ */
+ private Integer webPort;
/**
* 鎺у埗绔彛
*/
- private Integer controlPort;
+ private Integer ctrlPort;
/**
* 鎾斁鏂瑰紡
*/
@@ -48,6 +53,11 @@
* 鎶撴媿鏂瑰紡
**/
private String snapType;
+
+ /**
+ * 浜戝彴鏂瑰紡
+ **/
+ private String ptzType;
/**
* 鐩戞帶SN
*/
@@ -69,8 +79,8 @@
*/
private int speed = 129;//閫熷害锛�0-255 榛樿129锛�
/**
- * 浜戝彴鎺у埗鍛戒护 1=涓婏紝2=涓嬶紝3=宸︼紝4=鍙筹紝5=宸︿笂锛�6=宸︿笅锛�7=鍙充笂锛�8=鍙充笅锛�0=鍋滄锛�9=鍙樺�嶅皬锛�10 = 鍙樺�嶅姞
- * 棰勭疆浣嶅懡浠� 1=璁剧疆锛�2=鎵ц锛�3=鍒犻櫎
+ *浜戝彴鎺у埗鍛戒护 1=涓婏紝2=涓嬶紝3=宸︼紝4=鍙筹紝5=宸︿笂锛�6=宸︿笅锛�7=鍙充笂锛�8=鍙充笅锛�0=鍋滄锛�9=鍙樺�嶅皬锛�10 = 鍙樺�嶅姞锛�11 = 鍙樼劍鍋�
+ *棰勭疆浣嶅懡浠� 1=璁剧疆锛�2=鎵ц锛�3=鍒犻櫎
*/
private String command;
/**
@@ -78,7 +88,7 @@
*/
private String preset;
/**
- * RTSP鍦板潃
+ * 濯掍綋鍦板潃
*/
private String mediaAddr;
/**
@@ -89,8 +99,9 @@
* 澶栫綉鎾斁鍦板潃
*/
private String urlOut;
+
/**
- * 璇锋眰鏂笽P锛岀敤浜庡垽鏂槸鍐呯綉鎾斁锛岃繕鏄缃戞挱鏀�
+ * 鏄惁浣跨敤澶栫綉鎾斁鍦板潃榛樿鍚�
*/
- private String requireIp;
+ private boolean extNetwork = false;
}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraResp.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraResp.java
similarity index 94%
rename from fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraResp.java
rename to fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraResp.java
index c89e186..a55a4ef 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/ApiCameraResp.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiCameraResp.java
@@ -1,4 +1,4 @@
-package com.fzzy.igds.data;
+package com.fzzy.igds.camera.data;
import lombok.Data;
@@ -26,6 +26,7 @@
private String playUrl; //鎾斁鍦板潃
private String playType; //鎾斁鏂瑰紡
private String snapType; //鎾斁鏂瑰紡
+ private String ptzType; //浜戝彴鏂瑰紡
private String appkey; //瀹夐槻骞冲彴appKey
private String secret; //瀹夐槻骞冲彴绉橀挜
private String ip; //璁惧IP
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiSnapReq.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiSnapReq.java
new file mode 100644
index 0000000..68ebc8e
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ApiSnapReq.java
@@ -0,0 +1,97 @@
+package com.fzzy.igds.camera.data;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * @Description 鎽勫儚澶存姄鎷嶅弬鏁�
+ * @Author CZT
+ * @Date 2024/12/11 10:10
+ */
+@Data
+public class ApiSnapReq implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private String orderId;
+
+ //绯荤粺鍐呴儴鎽勫儚澶翠富閿垨鑰呴厤缃甀D
+ private String bizId;
+
+ private String companyId;//缁勭粐缂栫爜
+
+ private String deptId;//鍒嗗簱缂栫爜
+
+ /**
+ * 鎾斁鏂瑰紡
+ */
+ private String playType;
+
+ /**
+ * 鎶撴媿鏂瑰紡
+ **/
+ private String snapType;
+
+ private String ptzType;
+
+ /**
+ * 閰嶅搴忓彿
+ **/
+ private String sort;
+
+ /**
+ * 璁惧鍞竴ID锛屼富瑕佷笌娴佸獟浣撳尮閰嶄娇鐢�
+ */
+ private String sn;
+
+ /**
+ * 鐩戞帶璐﹀彿
+ */
+ private String ip;
+
+ /**
+ * 鐩戞帶瀵嗙爜
+ */
+ private Integer port;
+
+ /**
+ * 鐩戞帶璐﹀彿
+ */
+ private String loginId;
+
+ /**
+ * 鐩戞帶瀵嗙爜
+ */
+ private String password;
+ /**
+ * 閫氶亾鍙�
+ */
+ private Integer chanNum;
+
+ /**
+ * RTSP鍦板潃
+ */
+ private String mediaAddr;
+
+ /**
+ * 鎶撴媿缁堢搴忓垪鍙�,闈炲繀濉瓧娈点��
+ */
+ private String serSn;
+
+
+ /**
+ * 鍥剧墖淇濆瓨鍦板潃
+ */
+ private String filePath;
+
+ /**
+ * 鍥剧墖鍚嶇О
+ */
+ private String fileName;
+
+ private String cameraName;
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPlayServiceImpl.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPlayServiceImpl.java
new file mode 100644
index 0000000..a925f8f
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPlayServiceImpl.java
@@ -0,0 +1,19 @@
+package com.fzzy.igds.camera.impl;
+
+import com.fzzy.igds.camera.AbstractApiCameraService;
+import com.fzzy.igds.constant.CameraPlayType;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description 绯荤粺榛樿涓嶅仛浠讳綍鎺ュ彛瀹炵幇鍜屽鐞�
+ * @Author CZT
+ * @Date 2025/12/11 10:10
+ */
+@Component
+public class DefaultPlayServiceImpl extends AbstractApiCameraService {
+
+ @Override
+ public String getType() {
+ return CameraPlayType.PLAY_TYPE_DEFAULT.getCode();
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPtzServiceImpl.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPtzServiceImpl.java
new file mode 100644
index 0000000..e407ac3
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultPtzServiceImpl.java
@@ -0,0 +1,19 @@
+package com.fzzy.igds.camera.impl;
+
+import com.fzzy.igds.camera.AbstractApiCameraService;
+import com.fzzy.igds.constant.CameraPtzType;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description 绯荤粺榛樿涓嶅仛浠讳綍鎺ュ彛瀹炵幇鍜屽鐞�
+ * @Author CZT
+ * @Date 2025/12/11 10:10
+ */
+@Component
+public class DefaultPtzServiceImpl extends AbstractApiCameraService {
+
+ @Override
+ public String getType() {
+ return CameraPtzType.PTZ_TYPE_NONE.getCode();
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultSnapServiceImpl.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultSnapServiceImpl.java
new file mode 100644
index 0000000..e4bb7c2
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/DefaultSnapServiceImpl.java
@@ -0,0 +1,19 @@
+package com.fzzy.igds.camera.impl;
+
+import com.fzzy.igds.camera.AbstractApiCameraService;
+import com.fzzy.igds.constant.CameraSnapType;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description 绯荤粺榛樿涓嶅仛浠讳綍鎺ュ彛瀹炵幇鍜屽鐞�
+ * @Author CZT
+ * @Date 2025/12/11 10:10
+ */
+@Component
+public class DefaultSnapServiceImpl extends AbstractApiCameraService {
+
+ @Override
+ public String getType() {
+ return CameraSnapType.SNAP_TYPE_NONE.getCode();
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraPtzType.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraPtzType.java
new file mode 100644
index 0000000..7fd8cdd
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraPtzType.java
@@ -0,0 +1,33 @@
+package com.fzzy.igds.constant;
+
+import lombok.Getter;
+
+/**
+ * @Description 浜戝彴鎺у埗鏂瑰紡
+ * @Author CZT
+ * @Date 2024/12/10 16:38
+ */
+@Getter
+public enum CameraPtzType {
+
+ PTZ_TYPE_NONE("NONE", "涓嶆帶鍒�"),
+ PTZ_TYPE_HIK_ISAPI("HIK-ISAPI", "娴峰悍IS-API浜戝彴"),
+ PTZ_TYPE_DAHUA_API("DAHUA-HTTP-API", "澶у崕HTTP-API浜戝彴"),
+ PTZ_TYPE_FZZY_ONVIF("FZZY-ONVIF", "椋庢鑷磋繙Onvif鍐呯綉浜戝彴");
+
+ private String code;
+ private String msg;
+
+ private CameraPtzType(String code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+ public static String getMsg(String code) {
+ if (null == code) return null;
+ if (CameraPtzType.PTZ_TYPE_NONE.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_NONE.getMsg();
+ if (CameraPtzType.PTZ_TYPE_HIK_ISAPI.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_HIK_ISAPI.getMsg();
+ if (CameraPtzType.PTZ_TYPE_DAHUA_API.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_DAHUA_API.getMsg();
+ if (CameraPtzType.PTZ_TYPE_FZZY_ONVIF.getCode().equals(code)) return CameraPtzType.PTZ_TYPE_FZZY_ONVIF.getMsg();
+ return code;
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraSnapType.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraSnapType.java
new file mode 100644
index 0000000..43eabf4
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/CameraSnapType.java
@@ -0,0 +1,41 @@
+package com.fzzy.igds.constant;
+
+/**
+ * @Description 鎶撴媿鏂瑰紡
+ * @Author CZT
+ * @Date 2025/11/25 15:28
+ */
+public enum CameraSnapType {
+
+ SNAP_TYPE_NONE("NONE", "涓嶆姄鎷�"),
+ SNAP_TYPE_FZZY_PLUGIN("FZZY-PLUGIN", "FZZY_RSTP鎻掍欢鎶撴媿"),
+ SNAP_TYPE_FZZY_PLUGIN_V2("FZZY-PLUGIN_V2", "FZZY_API鎻掍欢鎶撴媿"),
+ SNAP_TYPE_HIK_ISAPI("HIK-ISAPI", "娴峰悍ISAPI鎶撴媿"),
+ SNAP_TYPE_DAHUA_HTTP_API("DAHUA-HTTP-API", "澶у崕HTTP_API鎶撴媿");
+
+ private String code;
+ private String msg;
+
+ private CameraSnapType(String code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public static String getMsg(String code) {
+ if (null == code) return null;
+ if (CameraSnapType.SNAP_TYPE_NONE.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_NONE.getMsg();
+ if (CameraSnapType.SNAP_TYPE_FZZY_PLUGIN.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_FZZY_PLUGIN.getMsg();
+ if (CameraSnapType.SNAP_TYPE_FZZY_PLUGIN_V2.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_FZZY_PLUGIN_V2.getMsg();
+ if (CameraSnapType.SNAP_TYPE_HIK_ISAPI.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_HIK_ISAPI.getMsg();
+ if (CameraSnapType.SNAP_TYPE_DAHUA_HTTP_API.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_DAHUA_HTTP_API.getMsg();
+ return code;
+ }
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/SnapType.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/SnapType.java
deleted file mode 100644
index 15049d4..0000000
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/SnapType.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.fzzy.igds.constant;
-
-/**
- * @Description 鎶撴媿鏂瑰紡
- * @Author CZT
- * @Date 2025/11/25 15:28
- */
-public enum SnapType {
-
- SNAP_TYPE_FZZY_PLUGIN("FZZY-PLUGIN", "FZZY_RSTP鎻掍欢鎶撴媿"),
- SNAP_TYPE_FZZY_PLUGIN_V2("FZZY-PLUGIN_V2", "FZZY_API鎻掍欢鎶撴媿"),
- SNAP_TYPE_HIK_ISAPI("HIK-ISAPI", "娴峰悍ISAPI鎶撴媿"),
- SNAP_TYPE_DAHUA_HTTP_API("DAHUA-HTTP-API", "澶у崕HTTP_API鎶撴媿");
-
- private String code;
- private String msg;
-
- private SnapType(String code, String msg) {
- this.code = code;
- this.msg = msg;
- }
-
- public String getCode() {
- return code;
- }
-
- public String getMsg() {
- return msg;
- }
-
- public static String getMsg(String code) {
- if (null == code) return null;
- if (SnapType.SNAP_TYPE_FZZY_PLUGIN.getCode().equals(code)) return SnapType.SNAP_TYPE_FZZY_PLUGIN.getMsg();
- if (SnapType.SNAP_TYPE_FZZY_PLUGIN_V2.getCode().equals(code)) return SnapType.SNAP_TYPE_FZZY_PLUGIN_V2.getMsg();
- if (SnapType.SNAP_TYPE_HIK_ISAPI.getCode().equals(code)) return SnapType.SNAP_TYPE_HIK_ISAPI.getMsg();
- if (SnapType.SNAP_TYPE_DAHUA_HTTP_API.getCode().equals(code)) return SnapType.SNAP_TYPE_DAHUA_HTTP_API.getMsg();
- return code;
- }
-}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Camera.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Camera.java
index 6822cc6..796f619 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Camera.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/Camera.java
@@ -96,6 +96,10 @@
@TableField("snap_type")
private String snapType;
+ @Column(name = "ptz_type", columnDefinition = "varchar(40) COMMENT '浜戝彴鏂瑰紡'")
+ @TableField("ptz_type")
+ private String ptzType;
+
@Column(name = "sort", columnDefinition = "varchar(2) COMMENT '閰嶅搴忓彿'")
@TableField("sort")
private String sort = "1";
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
index c682d83..ccc74f9 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
@@ -189,7 +189,15 @@
*/
public List<SysDictData> triggerSnapType() {
List<SysDictData> list = new ArrayList<SysDictData>();
- for (SnapType w : SnapType.values()) {
+ for (CameraSnapType w : CameraSnapType.values()) {
+ list.add(new SysDictData(w.getMsg(), w.getCode()));
+ }
+ return list;
+ }
+
+ public List<SysDictData> triggerPtzType() {
+ List<SysDictData> list = new ArrayList<SysDictData>();
+ for (CameraPtzType w : CameraPtzType.values()) {
list.add(new SysDictData(w.getMsg(), w.getCode()));
}
return list;
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java
index 1d693b4..b733cb6 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/DicPR.java
@@ -132,6 +132,16 @@
}
/**
+ * 浜戝彴鏂瑰紡
+ * ${dorado.getDataProvider("dicPR#triggerPtzType").getResult()}
+ *
+ * @return
+ */
+ @DataProvider
+ public List<SysDictData> triggerPtzType() {
+ return dicService.triggerPtzType();
+ }
+ /**
* 妫�楠岀被鍒�
* <p>
* ${dorado.getDataProvider("dicPR#triggerCheckType").getResult()}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
index 3e8a2e8..6dec86e 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
@@ -137,7 +137,6 @@
<Property name="keyProperty">id</Property>
<Property name="valueProperty">kqmc</Property>
</Property>
- <Property name="readOnly">true</Property>
</PropertyDef>
<PropertyDef name="name">
<Property></Property>
@@ -188,7 +187,6 @@
</PropertyDef>
<PropertyDef name="sort">
<Property name="label">閰嶅搴忓彿</Property>
- <Property name="required">true</Property>
<Property name="mapping">
<Property name="mapValues">
<Collection>
@@ -260,6 +258,16 @@
<Property name="label">鎶撴媿鏂瑰紡</Property>
<Property name="mapping">
<Property name="mapValues">${dorado.getDataProvider("dicPR#triggerSnapType").getResult()}</Property>
+ <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("dicPR#triggerPtzType").getResult()}</Property>
<Property name="keyProperty">dictValue</Property>
<Property name="valueProperty">dictLabel</Property>
</Property>
@@ -786,6 +794,21 @@
<Editor/>
</AutoFormElement>
<AutoFormElement>
+ <Property name="name">type</Property>
+ <Property name="property">type</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">brand</Property>
+ <Property name="property">brand</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">ip</Property>
+ <Property name="property">ip</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
<Property name="name">chanNum</Property>
<Property name="property">chanNum</Property>
<Editor/>
@@ -796,8 +819,8 @@
<Editor/>
</AutoFormElement>
<AutoFormElement>
- <Property name="name">ip</Property>
- <Property name="property">ip</Property>
+ <Property name="name">spdwlx</Property>
+ <Property name="property">spdwlx</Property>
<Editor/>
</AutoFormElement>
<AutoFormElement>
@@ -808,16 +831,6 @@
<AutoFormElement>
<Property name="name">webPort</Property>
<Property name="property">webPort</Property>
- <Editor/>
- </AutoFormElement>
- <AutoFormElement>
- <Property name="name">spdwlx</Property>
- <Property name="property">spdwlx</Property>
- <Editor/>
- </AutoFormElement>
- <AutoFormElement>
- <Property name="name">sort</Property>
- <Property name="property">sort</Property>
<Editor/>
</AutoFormElement>
<AutoFormElement>
@@ -886,13 +899,9 @@
<Editor/>
</AutoFormElement>
<AutoFormElement layoutConstraint="colSpan:2">
- <Property name="name">sn</Property>
- <Property name="property">sn</Property>
- <Editor>
- <TextEditor id="sn">
- <Property name="blankText"> -- 娴佸獟浣撳钩鍙颁腑璁惧SN --</Property>
- </TextEditor>
- </Editor>
+ <Property name="name">ptzType</Property>
+ <Property name="property">ptzType</Property>
+ <Editor/>
</AutoFormElement>
<AutoFormElement layoutConstraint="colSpan:3">
<Property name="name">mediaAddr</Property>
@@ -901,6 +910,15 @@
<Editor>
<TextEditor id="mediaAddr">
<Property name="blankText"> -- 鐐瑰嚮鍙充晶閫夋嫨锛屾垨鑰呮墜鍔ㄥ~鍐� --</Property>
+ </TextEditor>
+ </Editor>
+ </AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:5">
+ <Property name="name">sn</Property>
+ <Property name="property">sn</Property>
+ <Editor>
+ <TextEditor id="sn">
+ <Property name="blankText"> -- 娴佸獟浣撳钩鍙颁腑璁惧SN --</Property>
</TextEditor>
</Editor>
</AutoFormElement>
@@ -938,23 +956,8 @@
<Editor/>
</AutoFormElement>
<AutoFormElement>
- <Property name="name">createBy</Property>
- <Property name="property">createBy</Property>
- <Editor/>
- </AutoFormElement>
- <AutoFormElement>
- <Property name="name">createTime</Property>
- <Property name="property">createTime</Property>
- <Editor/>
- </AutoFormElement>
- <AutoFormElement>
<Property name="name">updateBy</Property>
<Property name="property">updateBy</Property>
- <Editor/>
- </AutoFormElement>
- <AutoFormElement>
- <Property name="name">updateTime</Property>
- <Property name="property">updateTime</Property>
<Editor/>
</AutoFormElement>
</AutoForm>
@@ -994,7 +997,8 @@
</ClientEvent>
</Trigger>
<Dialog id="dialogMeidaSelect" layout="vbox padding:10">
- <Property name="width">650</Property>
+ <Property name="width">800</Property>
+ <Property name="height">80%</Property>
<Property name="caption">娴佸獟浣撳湴鍧�閫夋嫨</Property>
<Buttons/>
<Children>
@@ -1010,10 +1014,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text1.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1028,10 +1033,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text2.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1046,10 +1052,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text3.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1064,10 +1071,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text4.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1082,10 +1090,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text5.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1100,10 +1109,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text6.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1118,10 +1128,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text7.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1136,10 +1147,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text8.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1154,10 +1166,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text9.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1172,10 +1185,11 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text10.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
<Container>
@@ -1190,12 +1204,24 @@
</Label>
<Button layoutConstraint="right">
<ClientEvent name="onClick">view.get("#mediaAddr").set("text",view.get("#text11.text"));
-view.get("#dialogMeidaSelect").hide();
-</ClientEvent>
+ view.get("#dialogMeidaSelect").hide();
+ </ClientEvent>
<Property name="caption">閫夋嫨</Property>
<Property name="iconClass">fa fa-check</Property>
+ <Property name="exClassName">btn1</Property>
</Button>
</Container>
+ <Container>
+ <Label>
+ <Property name="text">淇℃伅璇存槑</Property>
+ <Property name="style">
+ <Property name="font-weight">bold</Property>
+ </Property>
+ </Label>
+ <Label>
+ <Property name="text">{0}=鐢ㄦ埛鍚嶏紱{1}=瀵嗙爜锛泏2}=IP锛泏3}=绔彛锛泏4}=閫氶亾鍙凤紱{5}=搴忓垪鍙凤紱</Property>
+ </Label>
+ </Container>
</Children>
<Tools/>
</Dialog>
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutApiController.java b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutApiController.java
index 40667b2..79b29fb 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutApiController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/inout/InoutApiController.java
@@ -1,5 +1,6 @@
package com.fzzy.sys.controller.inout;
+import com.fzzy.igds.camera.data.ApiCameraResp;
import com.fzzy.igds.constant.RespCodeEnum;
import com.fzzy.igds.data.*;
import com.fzzy.igds.utils.SystemUtil;
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SecurityController.java b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SecurityController.java
index baa81b5..037aa65 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SecurityController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SecurityController.java
@@ -17,9 +17,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
-
import javax.annotation.Resource;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -40,39 +38,88 @@
private CoreDeptService deptService;
/**
- * 鐩戞帶姒傝
- *
+ * 搴撳尯瀹夐槻椤甸潰
* @param type 1.琛ㄧず2.5D楦熺灠鍥鹃〉闈㈤瑙堬紱2.琛ㄧず鍒楄〃棰勮椤甸潰
+ * @param view
* @return
*/
- @RequestMapping("/aerial-video")
- public String aerialVideo(
- @RequestParam(value = "type", required = false) String type,
- ModelMap view) {
+ @RequestMapping("/video-dept")
+ public String videoDept(@RequestParam(value = "type", required = false) String type,
+ ModelMap view) {
+
+ if (StringUtils.isBlank(type)) {
+ type = "2";
+ }
SysUser user = ContextUtil.getLoginUser();
view.put(Constant.MODEL_KEY_LOGIN_USER, user);
String deptId = ContextUtil.subDeptId(user);
- List<Camera> listCamera = secManager.listCamera(deptId, user.getCompanyId());
-
view.put("deptId", deptId);
+
+ List<Camera> listCamera = secManager.listCamera(deptId, user.getCompanyId());
view.put("listCamera", listCamera);
//榛樿鐩戞帶鍒楄〃椤甸潰
- String viewUrl = prefix + "/video-list";
+ String viewUrl = prefix + "/video-list-dept";
- if (StringUtils.isNotBlank( type) && "1".equals(type)) {
+ if("1".equals(type)){
+ viewUrl = prefix + "/video-aerial-dept";
+
+ //楦熺灠鍥�
Dept dept = deptService.getDeptById(deptId);
if (dept != null && StringUtils.isNotEmpty(dept.getImgPath())) {
view.put("backgroundImg", dept.getImgPath());
- viewUrl = prefix + "/video-aerial";
}
-
}
+ if("2".equals(type)){
+ viewUrl = prefix + "/video-list-dept";
+ }
+
return viewUrl;
}
+ /**
+ * 鐩戠瀹夐槻椤甸潰
+ * @param type 1.琛ㄧず2.5D楦熺灠鍥鹃〉闈㈤瑙堬紱2.琛ㄧず鍒楄〃棰勮椤甸潰
+ * @param view
+ * @return
+ */
+ @RequestMapping("/video-super")
+ public String videoSuper(@RequestParam(value = "type", required = false) String type,
+ ModelMap view) {
+
+ if (StringUtils.isBlank(type)) {
+ type = "2";
+ }
+
+ SysUser user = ContextUtil.getLoginUser();
+ view.put(Constant.MODEL_KEY_LOGIN_USER, user);
+
+ String deptId = ContextUtil.subDeptId(user);
+ view.put("deptId", deptId);
+
+ List<Camera> listCamera = secManager.listCamera(deptId, user.getCompanyId());
+ view.put("listCamera", listCamera);
+
+ //榛樿鐩戞帶鍒楄〃椤甸潰
+ String viewUrl = prefix + "/video-list-dept";
+
+ if("1".equals(type)){
+ viewUrl = prefix + "/video-aerial-dept";
+
+ //楦熺灠鍥�
+ Dept dept = deptService.getDeptById(deptId);
+ if (dept != null && StringUtils.isNotEmpty(dept.getImgPath())) {
+ view.put("backgroundImg", dept.getImgPath());
+ }
+ }
+ if("2".equals(type)){
+ viewUrl = prefix + "/video-list-dept";
+ }
+
+ return viewUrl;
+ }
/**
* 楦熺灠鍥鹃〉闈� -- 瑙嗛鎾斁锛岄�氳繃鎾斁鍙傛暟涓嶅悓璺宠浆涓嶅悓椤甸潰鎾斁
diff --git a/fzzy-igdss-web/src/main/resources/static/security/video-aerial.js b/fzzy-igdss-web/src/main/resources/static/security/video-aerial-dept.js
similarity index 100%
rename from fzzy-igdss-web/src/main/resources/static/security/video-aerial.js
rename to fzzy-igdss-web/src/main/resources/static/security/video-aerial-dept.js
diff --git a/fzzy-igdss-web/src/main/resources/static/security/video-control.js b/fzzy-igdss-web/src/main/resources/static/security/video-control.js
new file mode 100644
index 0000000..849b9ba
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/static/security/video-control.js
@@ -0,0 +1,77 @@
+/**
+ * PTZ 鍏叡鏂规硶锛屽紩鐢ㄤ箣鍓嶉渶瑕佸厛瀹氫箟curCamera瀵硅薄
+ * 鎵ц鍛戒护缂栫爜
+ * 浜戝彴鎺у埗鍛戒护 1=涓婏紝2=涓嬶紝3=宸︼紝4=鍙筹紝5=宸︿笂锛�6=宸︿笅锛�7=鍙充笂锛�8=鍙充笅锛�0=鍋滄锛�9=鍙樺�嶅皬锛�10 = 鍙樺�嶅姞锛�11 = 鍙樼劍鍋�
+ * 棰勭疆浣嶅懡浠� 1=璁剧疆锛�2=鎵ц锛�3=鍒犻櫎
+ * 鏁版嵁灏哻urCamera瀵硅薄灏佽涓篈Pi 瀵硅薄鍙戦�佺粰浜戝钩鍙�
+ */
+
+function getParam(command, preset) {
+ return {
+ playType: curCamera.playType,
+ ptzType: curCamera.ptzType,
+ snapType: curCamera.snapType,
+ cameraId: curCamera.id,
+ cameraName: curCamera.name,
+ ip: curCamera.ip,
+ sn: curCamera.sn,
+ webPort: curCamera.webPort,
+ ctrlPort: curCamera.controlPort,
+ channel: curCamera.chanNum,
+ loginId: curCamera.loginId,
+ pwd: curCamera.pwd,
+ mediaAddr: curCamera.mediaAddr,
+ urlIn: curCamera.urlIn,
+ urlOut: curCamera.urlOut,
+ command: command,
+ preset: preset
+ }
+}
+
+//浜戝彴鎺у埗
+function ptzControl(command) {
+ // layer.msg('寮�濮嬭皟鐢ㄤ簯鍙扳�︹��', {icon: 1, time: 1200,offset:'rb'});
+ const param = getParam(command, null);
+ const url = "../../basic/security/ptz-media";
+ sendControlCommand(url, param);
+}
+
+//棰勭疆浣嶆帶鍒�
+function presetControl(command) {
+ //layer.msg('寮�濮嬫墽琛屸�︹��', {icon: 1, time: 1200,offset:'rb'});
+ const preset = $("#preset").val();
+ const param = getParam(command, preset);
+ const url = "../../basic/security/ptz-media";
+ sendControlCommand(url, param);
+}
+
+//鍋滄绉诲姩
+function moveStop() {
+ //layer.msg('寮�濮嬭皟鐢ㄤ簯鍙扳�︹��', {icon: 1, time: 1200,offset:'rb'});
+ const param = getParam(0, null);
+ const url = "../../basic/security/ptz-media";
+ sendControlCommand(url, param);
+}
+
+//鍙樼劍鍋�
+function zoomStop() {
+ //doNothing
+}
+
+//鍙戦�佹帶鍒跺懡浠�
+function sendControlCommand(url, param) {
+ $.ajax({
+ type: "POST",
+ url: url,
+ dataType: 'JSON',
+ contentType: "application/json;charset=UTF-8",
+ data: JSON.stringify(param),
+ success: function (data) {
+ if (data.code === "ERROR") {
+ layer.msg('鎵ц澶辫触', {icon: 2, time: 1500,offset:'rb'});
+ } else {
+ layer.msg('鎵ц鎴愬姛', {icon: 1, time: 1200,offset:'rb'});
+ }
+ }
+ })
+}
\ No newline at end of file
diff --git a/fzzy-igdss-web/src/main/resources/static/security/video-list.js b/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
similarity index 75%
rename from fzzy-igdss-web/src/main/resources/static/security/video-list.js
rename to fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
index 814971d..3c0f2ae 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/video-list.js
+++ b/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
@@ -1,4 +1,6 @@
var layer;
+var splitWin = 1; //鍒嗗睆鏁帮紝榛樿1鍒嗗睆
+var windowsNum = 1; //鎾斁绐楀彛涓嬫爣锛屾墜鍔ㄩ�夋嫨妯″紡涓嬩娇鐢�
var timer;
var table;
var cameraData;
@@ -23,6 +25,65 @@
});
/**
+ * 鎾斁绐楀彛閫変腑
+ * @param win1 鍒嗗睆鏁�
+ * @param win2 閫変腑绐楀彛鏁�
+ */
+function selectWin(win1,win2) {
+ removeSelectCss();
+ splitWin = win1;
+ windowsNum = win2;
+ addSelectCss();
+}
+
+/**
+ * 鍘婚櫎閫変腑CSS
+ */
+function removeSelectCss() {
+ $("#f" + splitWin + "_d" + windowsNum).removeClass("selectWin");
+}
+
+/**
+ * 澧炲姞閫変腑CSS
+ */
+function addSelectCss() {
+ $("#f" + splitWin + "_d" + windowsNum).addClass("selectWin");
+}
+
+/**
+ * 鍒嗗睆鍒囨崲
+ * @param tagNum 鍒嗗睆鏁�
+ */
+function fenping(tagNum) {
+
+ //鍒囨崲鍒嗗睆鍥炬爣鍙婇〉闈�
+ if (tagNum == 1) {
+ $("#f_1").attr("src", "/img/web/group/fp_1_active.png");
+ $("#f_4").attr("src", "/img/web/group/fp_4.png");
+ $("#f_9").attr("src", "/img/web/group/fp_9.png");
+ $("#video_1").css('display', 'block');
+ $("#video_4").css('display', 'none');
+ $("#video_9").css('display', 'none');
+ }
+ if (tagNum == 4) {
+ $("#f_1").attr("src", "/img/web/group/fp_1.png");
+ $("#f_4").attr("src", "/img/web/group/fp_4_active.png");
+ $("#f_9").attr("src", "/img/web/group/fp_9.png");
+ $("#video_1").css('display', 'none');
+ $("#video_4").css('display', 'block');
+ $("#video_9").css('display', 'none');
+ }
+ if (tagNum == 9) {
+ $("#f_1").attr("src", "/img/web/group/fp_1.png");
+ $("#f_4").attr("src", "/img/web/group/fp_4.png");
+ $("#f_9").attr("src", "/img/web/group/fp_9_active.png");
+ $("#video_1").css('display', 'none');
+ $("#video_4").css('display', 'none');
+ $("#video_9").css('display', 'block');
+ }
+}
+
+/**
* 鐐瑰嚮鎾斁
* @param cameraId
*/
diff --git a/fzzy-igdss-web/src/main/resources/static/security/video-list.css b/fzzy-igdss-web/src/main/resources/static/security/video-list.css
index 2b22ffa..3bef15c 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/video-list.css
+++ b/fzzy-igdss-web/src/main/resources/static/security/video-list.css
@@ -43,7 +43,7 @@
.sp-boxWrap,
.sp-box {
- height: 550px;
+ height: 830px;
}
.sp-box {
@@ -321,13 +321,13 @@
}
.sp-bianbei{
- width: 47%;
+ width: 60%;
height: 40px;
background: #4c5863;
-webkit-border-radius: 30px;
border-radius: 30px;
overflow: hidden;
- margin: 10px 0;
+ margin: 10px 0 0 60px;
text-align: center;
}
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/video-aerial.html b/fzzy-igdss-web/src/main/resources/templates/security/video-aerial-dept.html
similarity index 97%
rename from fzzy-igdss-web/src/main/resources/templates/security/video-aerial.html
rename to fzzy-igdss-web/src/main/resources/templates/security/video-aerial-dept.html
index 5bb5eb9..e44c85b 100644
--- a/fzzy-igdss-web/src/main/resources/templates/security/video-aerial.html
+++ b/fzzy-igdss-web/src/main/resources/templates/security/video-aerial-dept.html
@@ -67,7 +67,7 @@
<script th:src="@{/common/constant.js}"></script>
<script th:src="@{/common/igds-common.js}"></script>
<script th:src="@{/js/plugins/drag/drag-drop.js}"></script>
-<script th:src="@{/security/video-aerial.js}"></script>
+<script th:src="@{/security/video-aerial-dept.js}"></script>
<!-- 寮瑰嚭鎿嶄綔妗� -->
<div class="layui-tab-content" id="aerialDialog" style="display: none;">
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html b/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
new file mode 100644
index 0000000..b16c4bb
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
@@ -0,0 +1,355 @@
+<!DOCTYPE html>
+<html lang="zh-cn" xmlns:th=http://www.thymeleaf.org>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="renderer" content="webkit">
+ <title>鏅烘収绮簱绠$悊骞冲彴-鐩戞帶鍒楄〃</title>
+
+ <link rel="stylesheet" th:href="@{/ajax/libs/layui/css/layui.css}"/>
+ <link rel="stylesheet" th:href="@{/security/video-list.css}">
+
+ <style>
+ html, body, .full {
+ width: 100%;
+ height: 100%;
+ overflow-y: hidden;
+ }
+
+ .layui-fluid {
+ position: relative;
+ margin: 0 auto;
+ padding: unset;
+ }
+
+ .layui-col-space20 {
+ margin: unset;
+ }
+
+ .layui-col-space20 > * {
+ padding: 10px 5px;
+ }
+
+ .sp-showItem2 {
+ height: 690px;
+ }
+
+ .sp-box {
+ height: 820px;
+ }
+
+ .sp-rl > span {
+ line-height: 50px;
+ color: #bbc3cd;
+ font-size: 20px;
+ }
+
+ .sp-table {
+ height: 355px;
+ }
+
+ .pdgxq-table1 {
+ background-color: transparent;
+ margin: 0;
+ }
+
+ .pdgxq-table1 thead tr th {
+ color: #ef344a;
+ font-size: 18px;
+ }
+
+ .pdgxq-table1 thead tr {
+ background: #141C25 !important;
+ border-bottom: 1px solid #ef344a;
+ }
+
+ .layui-table td, .layui-table th {
+ padding: 9px 5px;
+ }
+
+ .pdgxq-table1 th, .pdgxq-table1 td {
+ text-align: center;
+ min-height: 32px;
+ line-height: 32px;
+ font-size: 14px;
+ }
+
+ .pdgxq-table1 tbody tr:nth-child(odd) {
+ background-color: #262d33;
+ }
+
+ .pdgxq-table1 td em {
+ color: #ef344a;
+ }
+
+ .layui-table td, .layui-table th {
+ padding: 9px 5px;
+ }
+
+ .pdgxq-table1 td {
+ color: #fff;
+ cursor: pointer;
+ }
+
+ .fenping_icon {
+ position: absolute;
+ right: 30px;
+ top: 16px;
+ }
+
+ .div_v1 {
+ width: 99.8%;
+ height: 760px;
+ float: left;
+ background-color: #333;
+
+ text-align: center;
+ color: #FFF;
+ font-size: 20px;
+ }
+
+ .div_v4 {
+ width: 49.88%;
+ height: 379.5px;
+ float: left;
+ background-color: #333;
+
+ text-align: center;
+ color: #FFF;
+ font-size: 20px;
+ }
+
+ .div_v9 {
+ width: 33.22%;
+ height: 252.6px;
+ float: left;
+ background-color: #333;
+
+ text-align: center;
+ color: #FFF;
+ font-size: 20px;
+ }
+ .bor_t_l {
+ border-top: 1px solid #777;
+ border-left: 1px solid #777;
+ }
+
+ .bor_b {
+ border-bottom: 1px solid #777;
+ }
+
+ .bor_r {
+ border-right: 1px solid #777;
+ }
+ .selectWin {
+ border: 1px solid #a52222;
+ }
+ .video {
+ width: 100%;
+ height: 100%;
+ }
+ </style>
+</head>
+
+<body class="pdgxq-body">
+<div class="i-container">
+ <div class="jmkt-main">
+ <div class="layui-fluid">
+ <div class="sp-boxWrap layui-row layui-col-space20">
+ <div class="layui-col-lg9 layui-col-md9">
+ <div class="pdgxq-m1-left sp-box">
+
+ <div class="pdgxq-H">
+ <h3>
+ <i></i>瑙嗛瀹炴椂棰勮
+ </h3>
+ <div class="fenping_icon">
+ <img onclick="fenping(1)" id="f_1" style="width: 30px" th:src="@{/img/web/group/fp_1_active.png}"/>
+ <img onclick="fenping(4)" id="f_4" style="width: 30px" th:src="@{/img/web/group/fp_4.png}"/>
+ <img onclick="fenping(9)" id="f_9" style="width: 30px" th:src="@{/img/web/group/fp_9.png}"/>
+ </div>
+ </div>
+
+ <div class="sp-tab-db" style="padding: 5px 10px 15px 10px;">
+ <!--涓�鍒嗗睆 榛樿鏄剧ず-->
+ <div id="video_1" class="right-videoWrap">
+ <div id="f1_d1" onclick="selectWin(1,1)" class="div_v1 bor_t_l bor_b bor_r">
+ <video class="video" id="video1_1" autoplay="" muted="" playsinline=""></video>
+ </div>
+ </div>
+
+ <!--鍥涘垎灞� 榛樿鏄剧ず-->
+ <div id="video_4" class="right-videoWrap" style="display: none;">
+ <div id="f4_d1" onclick="selectWin(4,1)" class="div_v4 bor_t_l">
+ <video class="video" id="video4_1" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f4_d2" onclick="selectWin(4,2)" class="div_v4 bor_t_l bor_r">
+ <video class="video" id="video4_2" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f4_d3" onclick="selectWin(4,3)" class="div_v4 bor_t_l bor_b">
+ <video class="video" id="video4_3" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f4_d4" onclick="selectWin(4,4)" class="div_v4 bor_t_l bor_b bor_r">
+ <video class="video" id="video4_4" autoplay="" muted="" playsinline=""></video>
+ </div>
+ </div>
+
+ <!--涔濆垎灞� 榛樿闅愯棌-->
+ <div id="video_9" class="right-videoWrap" style="display: none;">
+ <div id="f9_d1" onclick="selectWin(9,1)" class="div_v9 bor_t_l">
+ <video class="video" id="video9_1" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d2" onclick="selectWin(9,2)" class="div_v9 bor_t_l">
+ <video class="video" id="video9_2" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d3" onclick="selectWin(9,3)" class="div_v9 bor_t_l bor_r">
+ <video class="video" id="video9_3" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d4" onclick="selectWin(9,4)" class="div_v9 bor_t_l">
+ <video class="video" id="video9_4" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d5" onclick="selectWin(9,5)" class="div_v9 bor_t_l">
+ <video class="video" id="video9_5" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d6" onclick="selectWin(9,6)" class="div_v9 bor_t_l bor_r">
+ <video class="video" id="video9_6" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d7" onclick="selectWin(9,7)" class="div_v9 bor_t_l bor_b">
+ <video class="video" id="video9_7" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d8" onclick="selectWin(9,8)" class="div_v9 bor_t_l bor_b">
+ <video class="video" id="video9_8" autoplay="" muted="" playsinline=""></video>
+ </div>
+ <div id="f9_d9" onclick="selectWin(9,9)" class="div_v9 bor_t_l bor_b bor_r">
+ <video class="video" id="video9_9" autoplay="" muted="" playsinline=""></video>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!--pdgxq-m1-left end-->
+ <div class="layui-col-lg3 layui-col-md3">
+ <div class="pdgxq-m1-right sp-box" style="height: 400px">
+ <div class="pdgxq-H">
+ <h3>
+ <i></i>浜戝彴鎺у埗
+ </h3>
+ </div>
+ <div class="sp-cz-wrap">
+ <div class="sp-cz-box">
+ <ul>
+ <li class="sp-cz-l1">
+ <a href="javascript:;" onmousedown="ptzControl(5)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a>
+ </li>
+ <li class="sp-cz-l2">
+ <a href="javascript:;" onmousedown="ptzControl(1)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a>
+ </li>
+ <li class="sp-cz-l3">
+ <a href="javascript:;" onmousedown="ptzControl(7)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a>
+ </li>
+ <li class="sp-cz-l4">
+ <a href="javascript:;" onmousedown="ptzControl(3)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a>
+ </li>
+ <li class="sp-cz-l5">
+ <a href="javascript:;">
+ </a>
+ </li>
+ <li class="sp-cz-l6">
+ <a href="javascript:;" onmousedown="ptzControl(4)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a>
+ </li>
+ <li class="sp-cz-l7">
+ <a href="javascript:;" onmousedown="ptzControl(6)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a>
+ </li>
+ <li class="sp-cz-l8">
+ <a href="javascript:;" onmousedown="ptzControl(2)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a></li>
+ <li class="sp-cz-l9">
+ <a href="javascript:;" onmousedown="ptzControl(8)"
+ onmouseup="moveStop()">
+ <img th:src="@{/img/web/security/sp-arrow.png}"/>
+ </a></li>
+ </ul>
+ </div>
+ <div class="sp-bianbei fl">
+ <button type="button" class="sp-sxBtn sp-czBtn" onmousedown="ptzControl(9)" onmouseup="zoomStop()">
+ <i>锛�</i>
+ </button>
+ <span>鍙樼劍</span>
+ <button type="button" class="sp-fdBtn sp-czBtn" onmousedown="ptzControl(10)" onmouseup="zoomStop()">
+ <i>锛�</i>
+ </button>
+ </div>
+ </div>
+ </div>
+ <div class="pdgxq-m1-right sp-box" style="height: 410px;margin-top: 10px">
+ <div class="pdgxq-H">
+ <h3>
+ <i></i>璁惧鍒楄〃
+ </h3>
+ </div>
+ <div class="sp-table-box">
+ <div class="sp-table">
+
+ <table class="layui-table pdgxq-table1" lay-skin="nob">
+ <colgroup>
+ <col width="70%">
+ <col width="15%">
+ <col width="15%">
+ </colgroup>
+ <thead>
+ <tr>
+ <th>鍚嶇О</th>
+ <th>绫诲瀷</th>
+ <th>鐘舵��</th>
+ </tr>
+ </thead>
+ <tbody id="cameraList">
+
+ </tbody>
+ </table>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ <!--pdgxq-m1-left end-->
+ </div>
+ <!--sp-boxWrap end-->
+ </div>
+ </div>
+ <!--jmkt-main end-->
+</div>
+<!--i-container end-->
+
+
+<script th:inline="javascript">
+ var listCamera = [[${listCamera}]];
+</script>
+<script th:src="@{/js/jquery.min.js}"></script>
+<script th:src="@{/ajax/libs/layui/layui.js}"></script>
+<script th:src="@{/common/constant.js}"></script>
+<script th:src="@{/security/video-list-dept.js}"></script>
+<script th:src="@{/security/video-control.js}"></script>
+</body>
+</html>
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/video-list.html b/fzzy-igdss-web/src/main/resources/templates/security/video-list.html
deleted file mode 100644
index e18f386..0000000
--- a/fzzy-igdss-web/src/main/resources/templates/security/video-list.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-cn" xmlns:th=http://www.thymeleaf.org>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="renderer" content="webkit">
- <title>鏅烘収绮簱绠$悊骞冲彴-鐩戞帶鍒楄〃</title>
-
- <link rel="stylesheet" th:href="@{/ajax/libs/layui/css/layui.css}"/>
- <link rel="stylesheet" th:href="@{/security/video-list.css}">
-
- <style>
- html, body, .full {
- width: 100%;
- height: 100%;
- overflow-y: hidden;
- }
-
- .layui-fluid {
- position: relative;
- margin: 0 auto;
- padding: unset;
- }
-
- .layui-col-space20 {
- margin: unset;
- }
-
- .layui-col-space20>* {
- padding: 10px 5px;
- }
-
- .sp-showItem2 {
- height: 690px;
- }
-
- .sp-box {
- height: 760px;
- }
-
- .sp-rl>span {
- line-height: 50px;
- color: #bbc3cd;
- font-size: 20px;
- }
-
- .sp-table {
- height: 732px;
- width: 425px;
- }
-
- .pdgxq-table1 {
- background-color: transparent;
- margin: 0;
- }
-
- .pdgxq-table1 thead tr th {
- color: #ef344a;
- }
-
- .pdgxq-table1 thead tr {
- background: #141C25 !important;
- border-bottom: 1px solid #ef344a;
- }
-
- .layui-table td, .layui-table th {
- padding: 9px 5px;
- }
-
- .pdgxq-table1 th, .pdgxq-table1 td {
- text-align: center;
- min-height: 32px;
- line-height: 32px;
- font-size: 14px;
- }
-
- .pdgxq-table1 tbody tr:nth-child(odd) {
- background-color: #262d33;
- }
-
- .pdgxq-table1 td em {
- color: #ef344a;
- }
-
- .layui-table td, .layui-table th {
- padding: 9px 5px;
- }
-
- .pdgxq-table1 td {
- color: #fff;
- cursor: pointer;
- }
- .video {
- width: 100%;
- height: 100%;
- }
- </style>
-</head>
-
-<body class="pdgxq-body">
-<div class="i-container">
- <div class="jmkt-main">
- <div class="layui-fluid">
- <div class="sp-boxWrap layui-row layui-col-space20">
- <div class="layui-col-lg9 layui-col-md9">
- <div class="pdgxq-m1-left sp-box">
-
- <div class="pdgxq-H">
- <h3>
- <i></i>瑙嗛瀹炴椂棰勮
- </h3>
- </div>
-
- <div class="sp-tab-bd" style="padding: 5px 10px 15px 10px;">
- <div class="sp-showBox layui-row show">
- <div class="layui-col-lg12 layui-col-md12">
- <div class="sp-showItem2" onmouseover="showPtz()"
- onmouseout="disPtz()">
- <!-- 浣跨敤鏈湴VLC鎻掍欢鎾斁 -->
- <div id="vlcPlayer" style="display: none; width: 100%; height: 100%"></div>
-
-<!-- <!– 浣跨敤鎾斁鍣ㄦ挱鏀� –>-->
-<!-- <easy-player id="easyPlayer" style="display: none;" live="true" show-custom-button="true" auto-play="true" muted="true"></easy-player>-->
-
-<!-- <!– 浣跨敤IFrame鎾斁 –>-->
-<!-- <iframe id="iframePlayer" src="" style="display: none;" width="100%" height="100%" allowfullscreen></iframe>-->
-
- <!-- 浣跨敤WebRtc鎾斁 -->
- <video class="video" id="video" autoplay="" muted="" playsinline="">
-
- <!-- 浜戝彴鎺у埗 -->
- <div class="ptz-block" id="ptz-block" style="opacity: 0;">
- <div class="ptzBlock">
- <div class="ptz-block-box">
- <div title="涓�" onmousedown="mouseDownPTZControl(1);"
- onmouseup="mouseUpPTZControl();"
- class="ptz-cell direction ptz-up">
- <i class="layui-icon layui-icon-up"></i>
- </div>
- <div title="宸�" onmousedown="mouseDownPTZControl(3);"
- onmouseup="mouseUpPTZControl();"
- class="ptz-cell direction ptz-left">
- <i class="layui-icon layui-icon-left"></i>
- </div>
- <div title="浜戝彴鎺у埗"
- class="ptz-center layui-icon layui-icon-voice"></div>
- <div title="鍙�" onmousedown="mouseDownPTZControl(4);"
- onmouseup="mouseUpPTZControl();"
- class="ptz-cell direction ptz-right">
- <i class="layui-icon layui-icon-right"></i>
- </div>
- <div title="涓�" onmousedown="mouseDownPTZControl(2);"
- onmouseup="mouseUpPTZControl();"
- class="ptz-cell direction ptz-down">
- <i class="layui-icon layui-icon-down"></i>
- </div>
- </div>
- <div title="浜戝彴閫熷害">
- <div class="ptz-input el-input el-input--mini">
- <input type="number" autocomplete="off" value='120'
- min="0" max="255" class="el-input__inner">
- </div>
- </div>
- <div title="鏀惧ぇ" onmousedown="PTZZoomIn()"
- onmouseup="PTZZoomStop()"
- class="ptz-cell ptz-btn ptz-plus">
- <i class="layui-icon layui-icon-addition"></i>
- </div>
- <div title="缂╁皬" onmousedown="PTZZoomout()"
- onmouseup="PTZZoomStop()"
- class="ptz-cell ptz-btn ptz-minus">
- <i class="layui-icon layui-icon-subtraction"></i>
- </div>
- </div>
- </div>
- <!-- 浜戝彴鎺у埗 END -->
-
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <!--pdgxq-m1-left end-->
- <div class="layui-col-lg3 layui-col-md3">
- <div class="pdgxq-m1-right sp-box" style="height: 760px;">
- <div class="pdgxq-H">
- <h3>
- <i></i>璁惧鍒楄〃
- </h3>
- </div>
- <div class="sp-table-box">
- <div class="sp-table">
-
- <table class="layui-table pdgxq-table1" lay-skin="nob">
- <colgroup>
- <col width="70%">
- <col width="15%">
- <col width="15%">
- </colgroup>
- <thead>
- <tr>
- <th>鍚嶇О</th>
- <th>绫诲瀷</th>
- <th>鐘舵��</th>
- </tr>
- </thead>
- <tbody id="cameraList">
-
- </tbody>
- </table>
-
- </div>
- </div>
- </div>
- </div>
- <!--pdgxq-m1-left end-->
- </div>
- <!--sp-boxWrap end-->
- </div>
- </div>
- <!--jmkt-main end-->
-</div>
-<!--i-container end-->
-
-
-<script th:inline="javascript">
- var listCamera = [[${listCamera}]];
-</script>
-<script th:src="@{/js/jquery.min.js}"></script>
-<script th:src="@{/ajax/libs/layui/layui.js}"></script>
-<script th:src="@{/common/constant.js}"></script>
-<script th:src="@{/security/video-list.js}"></script>
-</body>
-</html>
--
Gitblit v1.9.3