From 0191e937683b194733c7d4bcc1ba2d40099b8917 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 23 二月 2022 21:55:46 +0800
Subject: [PATCH] 同步主线

---
 src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java                                         |   43 ++++++++++
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java                                              |   15 ++-
 src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java                                                   |    6 +
 src/main/resources/all-application.yml                                                                                       |    2 
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java                                              |    6 +
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java                                                  |    2 
 src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java                                                      |    3 
 src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEvent.java                                                 |   32 ++++++++
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java                                        |    5 +
 src/main/java/com/genersoft/iot/vmp/storager/dao/dto/ChannelSourceInfo.java                                                  |   22 +++++
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java                                   |    2 
 web_src/src/components/control.vue                                                                                           |   26 +++---
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java                                          |    2 
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java |   33 +++++++-
 14 files changed, 172 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEvent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEvent.java
new file mode 100644
index 0000000..cfd2985
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEvent.java
@@ -0,0 +1,32 @@
+package com.genersoft.iot.vmp.gb28181.event.record;
+
+import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm;
+import com.genersoft.iot.vmp.gb28181.bean.RecordInfo;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * @description: 褰曞儚鏌ヨ缁撴潫鏃堕棿
+ * @author: pan
+ * @data: 2022-02-23
+ */
+
+public class RecordEndEvent extends ApplicationEvent {
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    public RecordEndEvent(Object source) {
+        super(source);
+    }
+
+    private RecordInfo recordInfo;
+
+    public RecordInfo getRecordInfo() {
+        return recordInfo;
+    }
+
+    public void setRecordInfo(RecordInfo recordInfo) {
+        this.recordInfo = recordInfo;
+    }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java
new file mode 100644
index 0000000..d7b33f2
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java
@@ -0,0 +1,43 @@
+package com.genersoft.iot.vmp.gb28181.event.record;
+
+import com.genersoft.iot.vmp.gb28181.bean.RecordItem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @description: 褰曞儚鏌ヨ缁撴潫鏃堕棿
+ * @author: pan
+ * @data: 2022-02-23
+ */
+
+@Component
+public class RecordEndEventListener implements ApplicationListener<RecordEndEvent> {
+
+    private final static Logger logger = LoggerFactory.getLogger(RecordEndEventListener.class);
+
+    private static Map<String, SseEmitter> sseEmitters = new Hashtable<>();
+
+    public void addSseEmitters(String browserId, SseEmitter sseEmitter) {
+        sseEmitters.put(browserId, sseEmitter);
+    }
+
+    public interface RecordEndEventHandler{
+        void  handler(List<RecordItem> recordItems);
+    }
+
+    private Map<String, RecordEndEventHandler> handlerMap = new HashMap<>();
+    @Override
+    public void onApplicationEvent(RecordEndEvent event) {
+        if (logger.isDebugEnabled()) {
+            logger.debug("褰曞儚鏌ヨ瀹屾垚浜嬩欢瑙﹀彂锛宒eviceId锛歿}, channelId: {}, 褰曞儚鏁伴噺{}鏉�", event.getRecordInfo().getDeviceId(),
+                    event.getRecordInfo().getChannelId(), event.getRecordInfo().getRecordList().size() );
+        }
+
+    }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
index 8be07ca..af2c2c2 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
@@ -258,7 +258,7 @@
 	 * @param endTime 缁撴潫鏃堕棿,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss
 	 * @param sn
 	 */
-	boolean recordInfoQuery(Device device, String channelId, String startTime, String endTime, int sn, SipSubscribe.Event errorEvent);
+	boolean recordInfoQuery(Device device, String channelId, String startTime, String endTime, int sn,  Integer Secrecy, String type, SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent);
 	
 	/**
 	 * 鏌ヨ鎶ヨ淇℃伅
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index 29f8c05..5668106 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -1195,8 +1195,13 @@
 	 * @param endTime 缁撴潫鏃堕棿,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss
 	 */  
 	@Override
-	public boolean recordInfoQuery(Device device, String channelId, String startTime, String endTime, int sn, SipSubscribe.Event errorEvent) {
-
+	public boolean recordInfoQuery(Device device, String channelId, String startTime, String endTime, int sn, Integer secrecy, String type, SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent) {
+		if (secrecy == null) {
+			secrecy = 0;
+		}
+		if (type == null) {
+			type = "all";
+		}
 
 		try {
 			StringBuffer recordInfoXml = new StringBuffer(200);
@@ -1207,9 +1212,9 @@
 			recordInfoXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
 			recordInfoXml.append("<StartTime>" + DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(startTime) + "</StartTime>\r\n");
 			recordInfoXml.append("<EndTime>" + DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(endTime) + "</EndTime>\r\n");
-			recordInfoXml.append("<Secrecy>0</Secrecy>\r\n");
+			recordInfoXml.append("<Secrecy> "+ secrecy + " </Secrecy>\r\n");
 			// 澶у崕NVR瑕佹眰蹇呴』澧炲姞涓�涓�间负all鐨勬枃鏈厓绱犺妭鐐筎ype
-			recordInfoXml.append("<Type>all</Type>\r\n");
+			recordInfoXml.append("<Type>" + type+"</Type>\r\n");
 			recordInfoXml.append("</Query>\r\n");
 			
 			String tm = Long.toString(System.currentTimeMillis());
@@ -1220,7 +1225,7 @@
 			Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
 					"z9hG4bK-ViaRecordInfo-" + tm, "fromRec" + tm, null, callIdHeader);
 
-			transmitRequest(device, request, errorEvent);
+			transmitRequest(device, request, errorEvent, okEvent);
 		} catch (SipException | ParseException | InvalidArgumentException e) {
 			e.printStackTrace();
 			return false;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index a00da62..b83e70b 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -102,7 +102,7 @@
 
                 sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (event)->{
                     if (event != null) {
-                        logger.info("鍚戜笂绾у钩鍙� [ {} ] 娉ㄥ唽鍙戠敓閿欒锛� {} ",
+                        logger.info("鍚戜笂绾у钩鍙� [ {} ] 娉ㄥ唽鍙戜笂閿欒锛� {} ",
                                 parentPlatform.getServerGBId(),
                                 event.msg);
                     }
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java
index c48f841..08a5d77 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java
@@ -4,11 +4,14 @@
 import com.genersoft.iot.vmp.gb28181.bean.*;
 import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
 import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.QueryMessageHandler;
+import com.genersoft.iot.vmp.gb28181.utils.DateUtil;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
 import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 import org.dom4j.Element;
 import org.slf4j.Logger;
@@ -41,6 +44,9 @@
     private SIPCommanderFroPlatform cmderFroPlatform;
 
     @Autowired
+    private SIPCommander commander;
+
+    @Autowired
     private SipConfig config;
 
     @Autowired
@@ -65,19 +71,36 @@
             // 鍥炲200 OK
             responseAck(evt, Response.OK);
             Element snElement = rootElement.element("SN");
-            String sn = snElement.getText();
+            int sn = Integer.parseInt(snElement.getText());
             Element deviceIDElement = rootElement.element("DeviceID");
             String channelId = deviceIDElement.getText();
             Element startTimeElement = rootElement.element("StartTime");
             String startTime = startTimeElement.getText();
             Element endTimeElement = rootElement.element("EndTime");
             String endTime = endTimeElement.getText();
-//            Element secrecyElement = rootElement.element("Secrecy");
-//            int secrecy = Integer.parseInt(secrecyElement.getText());
-//            Element typeElement = rootElement.element("Type");
-//            String type = typeElement.getText();
+            Element secrecyElement = rootElement.element("Secrecy");
+            int secrecy = Integer.parseInt(secrecyElement.getText());
+            Element typeElement = rootElement.element("Type");
+            String type = typeElement.getText();
             // 纭鏄洿鎾繕鏄浗鏍囷紝 鍥芥爣鐩存帴璇锋眰涓嬬骇锛岀洿鎾姹傚綍鍍忕鐞嗘湇鍔�
+            List<ChannelSourceInfo> channelSources = storager.getChannelSource(parentPlatform.getServerGBId(), channelId);
+            if (channelSources.get(0).getCount() > 0) { // 鍥芥爣
+                // 鍚戝浗鏍囪澶囪姹傚綍鍍忔暟鎹�
+                Device device = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId);
+                commander.recordInfoQuery(device, channelId, DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(startTime),
+                        DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(endTime), sn, secrecy, type, (eventResult -> {
+                            // 鏌ヨ鎴愬姛
 
+                        }),(eventResult -> {
+                            // 鏌ヨ澶辫触
+
+                        }));
+
+            }else if (channelSources.get(0).getCount() > 0) { // 鐩存挱娴�
+                // TODO
+            }else { // 閿欒鐨勮姹�
+
+            }
         } catch (SipException e) {
             e.printStackTrace();
         } catch (InvalidArgumentException e) {
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
index 723e9f1..710219e 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
@@ -5,6 +5,7 @@
 import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
 import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
+import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
 import com.genersoft.iot.vmp.vmanager.bean.DeviceChannelTree;
 import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 import com.github.pagehelper.PageInfo;
@@ -475,4 +476,6 @@
 	void delRelationByPlatformId(String serverGBId);
 
     PlatformCatalog queryDefaultCatalogInPlatform(String platformId);
+
+	List<ChannelSourceInfo> getChannelSource(String platformId, String gbId);
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
index ca8a72b..bb44325 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
@@ -1,6 +1,7 @@
 package com.genersoft.iot.vmp.storager.dao;
 
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
@@ -86,4 +87,9 @@
             "WHERE serverGBId=#{platformId}"+
             "</script>"})
     int setDefaultCatalog(String platformId, String catalogId);
+
+    @Select("select 'channel' as name, count(pgc.platformId) count from platform_gb_channel pgc  where  pgc.platformId=#{platformId} and pgc.channelId =#{gbId} " +
+            "union " +
+            "select 'stream' as name, count(pgs.platformId) count from platform_gb_stream pgs left join gb_stream gs on pgs.gbStreamId = gs.id where  pgs.platformId=#{platformId} and gs.gbId = #{gbId}")
+    List<ChannelSourceInfo> getChannelSource(String platformId, String gbId);
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/dto/ChannelSourceInfo.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/dto/ChannelSourceInfo.java
new file mode 100644
index 0000000..e8b91e7
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/dto/ChannelSourceInfo.java
@@ -0,0 +1,22 @@
+package com.genersoft.iot.vmp.storager.dao.dto;
+
+public class ChannelSourceInfo {
+    private String name;
+    private int count;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public void setCount(int count) {
+        this.count = count;
+    }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
index fabf267..91ebd5d 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -13,6 +13,7 @@
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import com.genersoft.iot.vmp.storager.dao.*;
+import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
 import com.genersoft.iot.vmp.utils.node.ForestNodeMerger;
 import com.genersoft.iot.vmp.vmanager.bean.DeviceChannelTree;
 import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
@@ -1095,4 +1096,9 @@
 	public PlatformCatalog queryDefaultCatalogInPlatform(String platformId) {
 		return catalogMapper.selectDefaultByPlatFormId(platformId);
 	}
+
+	@Override
+	public List<ChannelSourceInfo> getChannelSource(String platformId, String gbId) {
+		return platformMapper.getChannelSource(platformId, gbId);
+	}
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
index b850729..d3df8d0 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -137,6 +137,11 @@
             wvpResult.setMsg("missing parameters");
             return new ResponseEntity<>(wvpResult, HttpStatus.BAD_REQUEST);
         }
+        if (parentPlatform.getServerPort()< 0 || parentPlatform.getServerPort() > 65535){
+            wvpResult.setCode(-1);
+            wvpResult.setMsg("error severPort");
+            return new ResponseEntity<>(wvpResult, HttpStatus.BAD_REQUEST);
+        }
 
         ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId());
         if (parentPlatformOld != null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java
index a8675e8..e565981 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java
@@ -64,7 +64,7 @@
 		RequestMessage msg = new RequestMessage();
 		msg.setId(uuid);
 		msg.setKey(key);
-		cmder.recordInfoQuery(device, channelId, startTime, endTime, sn, (eventResult -> {
+		cmder.recordInfoQuery(device, channelId, startTime, endTime, sn, null, null, null, (eventResult -> {
 			msg.setData("鏌ヨ褰曞儚澶辫触, status: " +  eventResult.statusCode + ", message: " + eventResult.msg );
 			resultHolder.invokeResult(msg);
 		}));
diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml
index 5e77236..dab500e 100644
--- a/src/main/resources/all-application.yml
+++ b/src/main/resources/all-application.yml
@@ -1,7 +1,7 @@
 
 
 
-# 姝ら厤缃枃浠跺彧鏄敤浣滃睍绀烘墍鏈夐厤缃」锛� 涓嶅彲涓嶇洿鎺ヤ娇鐢�
+# 姝ら厤缃枃浠跺彧鏄敤浣滃睍绀烘墍鏈夐厤缃」锛� 涓嶅彲鐩存帴浣跨敤
 
 
 spring:
diff --git a/web_src/src/components/control.vue b/web_src/src/components/control.vue
index bc6ac5e..abd66d2 100644
--- a/web_src/src/components/control.vue
+++ b/web_src/src/components/control.vue
@@ -37,8 +37,20 @@
                     </el-popover>
                     <el-popover placement="bottom" width="900" height="300" trigger="click">
                         <div style="height: 600px;overflow:auto; padding: 20px">
+                          <el-descriptions title="鍥芥爣閰嶇疆" border column="1">
+                            <template slot="extra">
+                              <el-button style="float: right;" type="primary" size="mini" icon="el-icon-document-copy"  title="鐐瑰嚮鎷疯礉" v-clipboard="JSON.stringify(wvpServerConfig.sip)" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></el-button>
+                            </template>
+                            <el-descriptions-item v-for="(value, key, index) in wvpServerConfig.sip">
+                              <template slot="label">
+                                {{ getNameFromKey(key) }}
+                              </template>
+                              {{ value }}
+                            </el-descriptions-item>
+                          </el-descriptions>
 
-                          <el-descriptions title="鍩虹閰嶇疆" border column="1">
+                          <div style="margin-top: 1rem">
+                            <el-descriptions title="鍩虹閰嶇疆" border column="1">
                               <template slot="extra">
                                 <el-button style="float: right;" type="primary" size="mini" icon="el-icon-document-copy"  title="鐐瑰嚮鎷疯礉" v-clipboard="JSON.stringify(wvpServerConfig.base)" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></el-button>
                               </template>
@@ -68,18 +80,6 @@
                                   </div>
                                 </div>
 
-                              </el-descriptions-item>
-                            </el-descriptions>
-                          <div style="margin-top: 1rem">
-                            <el-descriptions title="鍥芥爣閰嶇疆" border column="1">
-                              <template slot="extra">
-                                <el-button style="float: right;" type="primary" size="mini" icon="el-icon-document-copy"  title="鐐瑰嚮鎷疯礉" v-clipboard="JSON.stringify(wvpServerConfig.sip)" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></el-button>
-                              </template>
-                              <el-descriptions-item v-for="(value, key, index) in wvpServerConfig.sip">
-                                <template slot="label">
-                                  {{ getNameFromKey(key) }}
-                                </template>
-                                {{ value }}
                               </el-descriptions-item>
                             </el-descriptions>
                           </div>

--
Gitblit v1.8.0