From 658bec3ecc0453fce36b083bf6cbe03ee495d611 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期日, 10 一月 2021 20:14:11 +0800
Subject: [PATCH] 国标级联--选择通道003-前端页面

---
 web_src/src/components/gb28181/chooseChannel.vue                                   |  119 +++++-------
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java    |   18 +
 src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java                          |    2 
 web_src/src/components/ParentPlatformList.vue                                      |    5 
 src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/UpdateChannelParam.java |   24 ++
 src/main/resources/wvp.sqlite                                                      |    0 
 web_src/src/components/gb28181/chooseChannelForGb.vue                              |  120 +++++++++++++
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java    |   18 ++
 src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java            |   18 ++
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java             |   16 +
 src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java          |    7 
 src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java      |   78 ++++++++
 src/main/java/com/genersoft/iot/vmp/storager/dao/patformChannelMapper.java         |    7 
 src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java      |   35 +++
 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java          |   20 ++
 15 files changed, 397 insertions(+), 90 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
index 990f003..e3a82ec 100644
--- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
+++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -8,7 +8,7 @@
 
 @SpringBootApplication
 public class VManageBootstrap extends LogManager {
-	public static void main(String[] args) {
+	public static void main(String[] args) { 
 		SpringApplication.run(VManageBootstrap.class, args);
 	}
 }
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 dd6ac9d..4a76e9a 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
@@ -77,6 +77,9 @@
 	@Value("${media.seniorSdp}")
 	private boolean seniorSdp;
 
+	@Value("${media.autoApplyPlay}")
+	private boolean autoApplyPlay;
+
 	@Autowired
 	private ZLMHttpHookSubscribe subscribe;
 
@@ -287,8 +290,12 @@
 	@Override
 	public void playStreamCmd(Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent) {
 		try {
-
-			String ssrc = streamSession.createPlaySsrc();
+			String ssrc = "";
+			if (rtpEnable) {
+				ssrc = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
+			}else {
+				ssrc = streamSession.createPlaySsrc();
+			}
 			String streamId = null;
 			if (rtpEnable) {
 				streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
@@ -408,7 +415,12 @@
 			, SipSubscribe.Event errorEvent) {
 		try {
 			MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
-			String ssrc = streamSession.createPlayBackSsrc();
+			String ssrc = null;
+			if (rtpEnable) {
+				ssrc = String.format("gb_playback_%s_%s", device.getDeviceId(), channelId);
+			}else {
+				ssrc = streamSession.createPlayBackSsrc();
+			}
 			String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase();
 			// 娣诲姞璁㈤槄
 			JSONObject subscribeKey = new JSONObject();
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index 66ee1b0..9fc64c7 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -82,13 +82,10 @@
 	@ResponseBody
 	@PostMapping(value = "/on_flow_report", produces = "application/json;charset=UTF-8")
 	public ResponseEntity<String> onFlowReport(@RequestBody JSONObject json){
-		
-		if (logger.isDebugEnabled()) {
-			logger.debug("ZLM HOOK on_flow_report API璋冪敤锛屽弬鏁帮細" + json.toString());
-		}
+
+		logger.debug("ZLM HOOK on_flow_report API璋冪敤锛屽弬鏁帮細" + json.toString());
 		// TODO Auto-generated method stub
 
-		
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
@@ -234,8 +231,13 @@
 		if (logger.isDebugEnabled()) {
 			logger.debug("ZLM HOOK on_shell_login API璋冪敤锛屽弬鏁帮細" + json.toString());
 		}
-		// TODO Auto-generated method stub
-		
+		// TODO 濡傛灉鏄甫鏈塺tpstream鍒欏紑鍚寜闇�鎷夋祦
+		String app = json.getString("app");
+		String stream = json.getString("stream");
+
+		ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json);
+		if (subscribe != null) subscribe.response(json);
+
 		JSONObject ret = new JSONObject();
 		ret.put("code", 0);
 		ret.put("msg", "success");
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 99ff837..b4d0c9b 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
@@ -7,7 +7,11 @@
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
 import com.github.pagehelper.PageInfo;
+import gov.nist.javax.sip.stack.NioTcpMessageProcessor;
+
+import javax.swing.event.ChangeEvent;
 
 /**    
  * @Description:瑙嗛璁惧鏁版嵁瀛樺偍鎺ュ彛
@@ -200,4 +204,18 @@
 	 * 鎵�鏈夊钩鍙扮绾�
 	 */
 	void outlineForAllParentPlatform();
+
+	/**
+	 * 鏌ヨ閫氶亾淇℃伅锛� 涓嶅尯鍒嗚澶�
+	 */
+	PageInfo<ChannelReduce> queryChannelListInAll(int page, int count, String query, Boolean online, Boolean channelType, String parentChannelId);
+
+
+	/**
+	 * 鏇存柊涓婄骇骞冲彴鐨勯�氶亾淇℃伅
+	 * @param platformId
+	 * @param channelReduces
+	 * @return
+	 */
+	int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces);
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
index 24a3f84..115cacb 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
@@ -1,6 +1,8 @@
 package com.genersoft.iot.vmp.storager.dao;
 
 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
 import org.apache.ibatis.annotations.*;
 
 import java.util.List;
@@ -82,4 +84,22 @@
 
     @Update(value = {"UPDATE device_channel SET streamId=#{streamId} WHERE deviceId=#{deviceId} AND channelId=#{channelId}"})
     void startPlay(String deviceId, String channelId, String streamId);
+
+
+    @Select(value = {" <script>" +
+            "SELECT * FROM ( "+
+            " SELECT dc.channelId, dc.deviceId, dc.name, de.manufacturer, de.hostAddress, " +
+            "(SELECT count(0) FROM device_channel WHERE parentId=dc.channelId) as subCount " +
+            "FROM device_channel dc LEFT JOIN device de ON dc.deviceId = de.deviceId" +
+            " WHERE 1=1 " +
+            " <if test=\"query != null\"> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " +
+            " <if test=\"parentChannelId != null\"> AND dc.parentId=#{parentChannelId} </if> " +
+            " <if test=\"online == true\" > AND dc.status=1</if>" +
+            " <if test=\"online == false\" > AND dc.status=0</if>) dcr" +
+            " WHERE 1=1 " +
+            " <if test=\"hasSubChannel == true\" >  AND subCount >0</if>" +
+            " <if test=\"hasSubChannel == false\" >  AND subCount=0</if>" +
+            " </script>"})
+
+    List<ChannelReduce> queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String parentChannelId);
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/patformChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/patformChannelMapper.java
new file mode 100644
index 0000000..9b10ece
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/patformChannelMapper.java
@@ -0,0 +1,7 @@
+package com.genersoft.iot.vmp.storager.dao;
+
+import org.mapstruct.Mapper;
+
+@Mapper
+public interface patformChannelMapper {
+}
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 b783238..546a3e4 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
@@ -9,6 +9,7 @@
 import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
 import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
 import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper;
+import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +17,7 @@
 
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+import org.springframework.transaction.annotation.Transactional;
 
 /**    
  * @Description:瑙嗛璁惧鏁版嵁瀛樺偍-jdbc瀹炵幇
@@ -270,4 +272,20 @@
 	public void outlineForAllParentPlatform() {
 		platformMapper.outlineForAllParentPlatform();
 	}
+
+
+	@Override
+	public PageInfo<ChannelReduce> queryChannelListInAll(int page, int count, String query, Boolean online,
+														 Boolean channelType, String parentChannelId) {
+		PageHelper.startPage(page, count);
+		List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, parentChannelId);
+		return new PageInfo<>(all);
+	}
+
+
+	@Transactional
+	@Override
+	public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
+		return 0;
+	}
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java
index d64b632..17d1e7d 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java
@@ -63,13 +63,6 @@
 
 	/**
 	 * 鍒嗛〉鏌ヨ閫氶亾鏁�
-	 * @param deviceId 璁惧id
-	 * @param page 褰撳墠椤�
-	 * @param count 姣忛〉鏉℃暟
-	 * @return 閫氶亾鍒楄〃
-	 */
-	/**
-	 * 鍒嗛〉鏌ヨ閫氶亾鏁�
 	 *
 	 * @param deviceId 璁惧id
 	 * @param page 褰撳墠椤�
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java
index ee77f01..0823c49 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java
@@ -1,10 +1,13 @@
 package com.genersoft.iot.vmp.vmanager.platform;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.vmanager.platform.bean.UpdateChannelParam;
 import com.github.pagehelper.PageInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -14,6 +17,9 @@
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import com.genersoft.iot.vmp.conf.SipConfig;
+
+import java.util.List;
+import java.util.Map;
 
 
 @CrossOrigin
@@ -142,5 +148,34 @@
         return new ResponseEntity<>(String.valueOf(parentPlatform != null), HttpStatus.OK);
     }
 
+    @RequestMapping("/platforms/channelList")
+    @ResponseBody
+    public PageInfo<ChannelReduce> channelList(int page, int count,
+                                              @RequestParam(required = false) String query,
+                                              @RequestParam(required = false) Boolean online,
+                                              @RequestParam(required = false) Boolean channelType){
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("鏌ヨ鎵�鏈夋墍鏈夐�氶亾API璋冪敤");
+        }
+
+        PageInfo<ChannelReduce> channelReduces = storager.queryChannelListInAll(page, count, query, online, channelType, null);
+
+        return channelReduces;
+    }
+
+
+    @RequestMapping("/platforms/updateChannelForGB")
+    @ResponseBody
+    public ResponseEntity<String> updateChannelForGB(@RequestBody UpdateChannelParam param){
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("缁欎笂绾у钩鍙版坊鍔犲浗鏍囬�氶亾API璋冪敤");
+        }
+        int result = storager.updateChannelForGB(param.getPlatformId(), param.getChannelReduces());
+
+        return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK);
+    }
+
 
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java
new file mode 100644
index 0000000..275e0f7
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java
@@ -0,0 +1,78 @@
+package com.genersoft.iot.vmp.vmanager.platform.bean;
+
+/**
+ * 绮剧畝鐨刢hannel淇℃伅灞曠ず锛屼富瑕佹槸閫夋嫨閫氶亾鐨勬椂鍊欏睍绀哄垪琛ㄤ娇鐢�
+ */
+public class ChannelReduce {
+
+    /**
+     * 閫氶亾id
+     */
+    private String channelId;
+
+    /**
+     * 璁惧id
+     */
+    private String deviceId;
+
+    /**
+     * 閫氶亾鍚�
+     */
+    private String name;
+
+    /**
+     * 鐢熶骇鍘傚晢
+     */
+    private String manufacturer;
+
+    /**
+     * wan鍦板潃
+     */
+    private String  hostAddress;
+
+    /**
+     * 瀛愯妭鐐规暟
+     */
+    private int  subCount;
+
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public String getDeviceId() {
+        return deviceId;
+    }
+
+    public void setDeviceId(String deviceId) {
+        this.deviceId = deviceId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getManufacturer() {
+        return manufacturer;
+    }
+
+    public void setManufacturer(String manufacturer) {
+        this.manufacturer = manufacturer;
+    }
+
+    public String getHostAddress() {
+        return hostAddress;
+    }
+
+    public void setHostAddress(String hostAddress) {
+        this.hostAddress = hostAddress;
+    }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/UpdateChannelParam.java b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/UpdateChannelParam.java
new file mode 100644
index 0000000..34192ca
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/UpdateChannelParam.java
@@ -0,0 +1,24 @@
+package com.genersoft.iot.vmp.vmanager.platform.bean;
+
+import java.util.List;
+
+public class UpdateChannelParam {
+    private String platformId;
+    private List<ChannelReduce> channelReduces;
+
+    public String getPlatformId() {
+        return platformId;
+    }
+
+    public void setPlatformId(String platformId) {
+        this.platformId = platformId;
+    }
+
+    public List<ChannelReduce> getChannelReduces() {
+        return channelReduces;
+    }
+
+    public void setChannelReduces(List<ChannelReduce> channelReduces) {
+        this.channelReduces = channelReduces;
+    }
+}
diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite
index f31609f..b72a373 100644
--- a/src/main/resources/wvp.sqlite
+++ b/src/main/resources/wvp.sqlite
Binary files differ
diff --git a/web_src/src/components/ParentPlatformList.vue b/web_src/src/components/ParentPlatformList.vue
index 39aeb3c..98907db 100644
--- a/web_src/src/components/ParentPlatformList.vue
+++ b/web_src/src/components/ParentPlatformList.vue
@@ -95,7 +95,6 @@
     }
   },
   mounted() {
-     this.$refs.chooseChannelDialog.openDialog()
     this.initData();
     this.updateLooper = setInterval(this.initData, 10000);
   },
@@ -138,7 +137,9 @@
             });
     },
     chooseChannel: function(platform) {
-       this.$refs.chooseChannelDialog.openDialog()
+       this.$refs.chooseChannelDialog.openDialog(platform.deviceGBId, ()=>{
+         this.initData()
+       })
     },
     initData: function() {
       this.getPlatformList();
diff --git a/web_src/src/components/gb28181/chooseChannel.vue b/web_src/src/components/gb28181/chooseChannel.vue
index e5cb09c..9796eb4 100644
--- a/web_src/src/components/gb28181/chooseChannel.vue
+++ b/web_src/src/components/gb28181/chooseChannel.vue
@@ -1,63 +1,36 @@
 <template>
 <div id="chooseChannel" v-loading="isLoging">
 
-    <el-dialog title="閫夋嫨閫氶亾" top="0" :close-on-click-modal="false" :visible.sync="showDialog" :destroy-on-close="true" @close="close()">
-        <el-container>
-            <el-main style="background-color: #FFF;">
-            <el-tabs v-model="tabActiveName" >
+    <el-dialog title="閫夋嫨閫氶亾" top="2rem" width="70%" :close-on-click-modal="false" :visible.sync="showDialog" :destroy-on-close="true" @close="close()">
+        <el-tabs v-model="tabActiveName" >
+            <el-tab-pane label="鍥芥爣閫氶亾" name="gbChannel">
 
-                    <el-tab-pane label="鍥芥爣閫氶亾" name="gbChannel">
-                        <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
-                            鎼滅储: <el-input @input="search" style="margin-right: 1rem; width: auto;" size="mini" placeholder="鍏抽敭瀛�" prefix-icon="el-icon-search" v-model="searchSrt" clearable> </el-input>
-
-                            閫氶亾绫诲瀷: <el-select size="mini" @change="search" style="margin-right: 1rem;" v-model="channelType" placeholder="璇烽�夋嫨" default-first-option>
-                                <el-option label="鍏ㄩ儴" value=""></el-option>
-                                <el-option label="璁惧" value="false"></el-option>
-                                <el-option label="瀛愮洰褰�" value="true"></el-option>
-                            </el-select>
-                            鍦ㄧ嚎鐘舵��: <el-select size="mini" style="margin-right: 1rem;" @change="search" v-model="online" placeholder="璇烽�夋嫨" default-first-option>
-                                <el-option label="鍏ㄩ儴" value=""></el-option>
-                                <el-option label="鍦ㄧ嚎" value="true"></el-option>
-                                <el-option label="绂荤嚎" value="false"></el-option>
-                            </el-select>
-                        </div>
-                        <el-table :data="gbChannels" border style="width: 100%" @selection-change="handleGBSelectionChange"  >
-                            <el-table-column type="selection" width="55" align="center" fixed> </el-table-column>
-                            <el-table-column prop="devicelId" label="璁惧缂栧彿" width="210" >
-                            </el-table-column>
-                            <el-table-column prop="channelId" label="閫氶亾缂栧彿" width="210">
-                            </el-table-column>
-                            <el-table-column prop="channelName" label="閫氶亾鍚嶇О">
-                            </el-table-column>
-                            <el-table-column label="鍦板潃" width="180" align="center">
-                                <template slot-scope="scope">
-                                    <div slot="reference" class="name-wrapper">
-                                        <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag>
-                                    </div>
-                                </template>
-                            </el-table-column>
-                            <el-table-column prop="manufacturer" label="鍘傚" align="center">
-                            </el-table-column>
-                        </el-table>
-                    </el-tab-pane>
-                    <el-tab-pane label="鐩存挱娴侀�氶亾" name="streamchannel">
-                        <!-- TODO -->
-                    </el-tab-pane>
-                </el-tabs>
-
-            </el-main>
-    </el-container>
+                <el-container>
+                    <el-main style="background-color: #FFF;">
+                     <chooseChannelForGb :chooseChanage=chooseChanage ></chooseChannelForGb>
+                    </el-main>
+                    <el-footer>
+                         <el-button size="mini" type="primary" style="float: right" @click="save()">淇濆瓨</el-button>
+                    </el-footer>
+            </el-container>
+               
+               
+            </el-tab-pane>
+            <el-tab-pane label="鐩存挱娴侀�氶亾" name="streamchannel">
+                <!-- TODO -->
+            </el-tab-pane>
+        </el-tabs>
     </el-dialog>
 </div>
 </template>
 
 <script>
-// import player from './player.vue'
+import chooseChannelForGb from './chooseChannelForGb.vue'
 export default {
     name: 'chooseChannel',
     props: {},
     components: {
-        // player,
+        chooseChannelForGb,
     },
     computed: {
         // getPlayerShared: function () {
@@ -73,37 +46,20 @@
         return {
             isLoging: false,
             tabActiveName: "gbChannel",
+            platformId: "",
             isLoging: false,
             showDialog: false,
-            chooseChanageCallback: null,
-            closeCallback: null,
-            gbChannels: [
-                {
-                    devicelId: "34000000000200001",
-                    channelId: "34000000000200001",
-                    channelName: "test",
-                    hostAddress: "192.168.1.1:5060",
-                    manufacturer: "澶у崕"
-                },{
-                    devicelId: "34000000000200001",
-                    channelId: "34000000000200001",
-                    channelName: "test",
-                    hostAddress: "192.168.1.1:5060",
-                    manufacturer: "澶у崕"
-                }
-            ],
-            searchSrt: "",
-            channelType: "",
-            online: "",
+            chooseData: []
             
         };
     },
     methods: {
         
-        openDialog: function (chooseChanageCallback, closeCallback) {
+        openDialog: function (platformId,  closeCallback) {
+            console.log(platformId)
+            this.platformId = platformId
             this.showDialog = true
             this.closeCallback = closeCallback
-            this.chooseChanageCallback = chooseChanageCallback
         },
         close: function() {
 
@@ -111,8 +67,31 @@
         search: function() {
 
         },
-        handleGBSelectionChange: function() {
+        save: function() {
+            var that = this;
 
+            this.$axios({
+                method:"post",
+                url:"/api/platforms/updateChannelForGB",
+                data:{
+                    platformId:  that.platformId,
+                    channelReduces:  that.chooseData
+                }
+            }).then((res)=>{
+                if (res.data == true) {
+                    that.$message({
+                        showClose: true,
+                        message: '淇濆瓨鎴愬姛,',
+                        type: 'success'
+                    });
+                }
+            }).catch(function (error) {
+                console.log(error);
+            });
+        },
+        chooseChanage: function(val) {
+            console.log(val)
+            this.chooseData = val;
         }
     }
 };
diff --git a/web_src/src/components/gb28181/chooseChannelForGb.vue b/web_src/src/components/gb28181/chooseChannelForGb.vue
new file mode 100644
index 0000000..3e488fe
--- /dev/null
+++ b/web_src/src/components/gb28181/chooseChannelForGb.vue
@@ -0,0 +1,120 @@
+<template>
+<div id="chooseChannelForGb" >
+   <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
+        鎼滅储: <el-input @input="search" style="margin-right: 1rem; width: auto;" size="mini" placeholder="鍏抽敭瀛�" prefix-icon="el-icon-search" v-model="searchSrt" clearable> </el-input>
+
+        閫氶亾绫诲瀷: <el-select size="mini" @change="search" style="margin-right: 1rem;" v-model="channelType" placeholder="璇烽�夋嫨" default-first-option>
+            <el-option label="鍏ㄩ儴" value=""></el-option>
+            <el-option label="璁惧" value="false"></el-option>
+            <el-option label="瀛愮洰褰�" value="true"></el-option>
+        </el-select>
+        鍦ㄧ嚎鐘舵��: <el-select size="mini" style="margin-right: 1rem;" @change="search" v-model="online" placeholder="璇烽�夋嫨" default-first-option>
+            <el-option label="鍏ㄩ儴" value=""></el-option>
+            <el-option label="鍦ㄧ嚎" value="true"></el-option>
+            <el-option label="绂荤嚎" value="false"></el-option>
+        </el-select>
+    </div>
+    <el-table ref="gbChannelsTable" :data="gbChannels" border style="width: 100%" @selection-change="chooseChanage"  >
+        <el-table-column type="selection" width="55" align="center" fixed> </el-table-column>
+        <el-table-column prop="channelId" label="閫氶亾缂栧彿" width="210">
+        </el-table-column>
+        <el-table-column prop="name" label="閫氶亾鍚嶇О">
+        </el-table-column>
+        <el-table-column prop="deviceId" label="璁惧缂栧彿" width="210" >
+        </el-table-column>
+        <el-table-column label="璁惧鍦板潃" width="180" align="center">
+            <template slot-scope="scope">
+                <div slot="reference" class="name-wrapper">
+                    <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column prop="manufacturer" label="鍘傚" align="center">
+        </el-table-column>
+    </el-table>
+    <el-pagination style="float: right;margin-top: 1rem;" @size-change="handleSizeChange" @current-change="currentChange" :current-page="currentPage" :page-size="count" :page-sizes="[15, 20, 30, 50]" layout="total, sizes, prev, pager, next" :total="total">
+    </el-pagination>
+</div>
+</template>
+
+<script>
+export default {
+    name: 'chooseChannelForGb',
+    props: {},
+    computed: {
+        // getPlayerShared: function () {
+        //     return {
+        //         sharedUrl: window.location.host + '/' + this.videoUrl,
+        //         sharedIframe: '<iframe src="' + window.location.host + '/' + this.videoUrl + '"></iframe>',
+        //         sharedRtmp: this.videoUrl
+        //     };
+        // }
+    },
+    props: ['chooseChanage'],
+    created() {
+        this.initData();
+    },
+    data() {
+        return {
+            gbChannels: [],
+            searchSrt: "",
+            channelType: "",
+            online: "",
+            currentPage: parseInt(this.$route.params.page),
+            count: parseInt(this.$route.params.count),
+            total: 0
+            
+        };
+    },
+    methods: {
+        initData: function() {
+            this.getChannelList();
+        },
+        currentChange: function (val) {
+            this.currentPage = val;
+            this.initData();
+        },
+        handleSizeChange: function (val) {
+             this.count = val;
+            this.initData();
+
+        },
+        getChannelList: function () {
+            let that = this;
+
+            this.$axios.get(`/api/platforms/channelList`, {
+                    params: {
+                        page: that.currentPage - 1,
+                        count: that.count,
+                        query: that.searchSrt,
+                        online: that.online,
+                        channelType: that.channelType
+                    }
+                })
+                .then(function (res) {
+                    console.log(res);
+                    that.total = res.data.total;
+                    that.gbChannels = res.data.list;
+                    // 闃叉鍑虹幇琛ㄦ牸閿欎綅
+                    that.$nextTick(() => {
+                        that.$refs.gbChannelsTable.doLayout();
+                    })
+                })
+                .catch(function (error) {
+                    console.log(error);
+                });
+
+        },
+        search: function() {
+            this.initData();
+        },
+        handleGBSelectionChange: function() {
+            this.initData();
+        },
+    }
+};
+</script>
+
+<style>
+
+</style>

--
Gitblit v1.8.0