Commit 9442c37ce73497a66d540f035e58201b54656e49

Authored by 648540858
1 parent d4fe0fb3

优化级联添加通道流程

src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java
@@ -17,7 +17,7 @@ public interface IGbStreamService { @@ -17,7 +17,7 @@ public interface IGbStreamService {
17 * @param count 17 * @param count
18 * @return 18 * @return
19 */ 19 */
20 - PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId); 20 + PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId,String query,Boolean pushing,String mediaServerId);
21 21
22 22
23 /** 23 /**
src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java
@@ -52,9 +52,9 @@ public class GbStreamServiceImpl implements IGbStreamService { @@ -52,9 +52,9 @@ public class GbStreamServiceImpl implements IGbStreamService {
52 private EventPublisher eventPublisher; 52 private EventPublisher eventPublisher;
53 53
54 @Override 54 @Override
55 - public PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId) { 55 + public PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId, String query, Boolean pushing, String mediaServerId) {
56 PageHelper.startPage(page, count); 56 PageHelper.startPage(page, count);
57 - List<GbStream> all = gbStreamMapper.selectAll(platFormId); 57 + List<GbStream> all = gbStreamMapper.selectAll(platFormId, catalogId, query, pushing, mediaServerId);
58 return new PageInfo<>(all); 58 return new PageInfo<>(all);
59 } 59 }
60 60
@@ -70,6 +70,7 @@ public class GbStreamServiceImpl implements IGbStreamService { @@ -70,6 +70,7 @@ public class GbStreamServiceImpl implements IGbStreamService {
70 boolean result = false; 70 boolean result = false;
71 TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); 71 TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
72 ParentPlatform parentPlatform = platformMapper.getParentPlatByServerGBId(platformId); 72 ParentPlatform parentPlatform = platformMapper.getParentPlatByServerGBId(platformId);
  73 + if (catalogId == null) catalogId = parentPlatform.getCatalogId();
73 try { 74 try {
74 List<DeviceChannel> deviceChannelList = new ArrayList<>(); 75 List<DeviceChannel> deviceChannelList = new ArrayList<>();
75 for (GbStream gbStream : gbStreams) { 76 for (GbStream gbStream : gbStreams) {
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
@@ -239,7 +239,7 @@ public interface IVideoManagerStorager { @@ -239,7 +239,7 @@ public interface IVideoManagerStorager {
239 /** 239 /**
240 * 查询通道信息,不区分设备(已关联平台或全部) 240 * 查询通道信息,不区分设备(已关联平台或全部)
241 */ 241 */
242 - PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online, Boolean channelType, String platformId, Boolean inPlatform); 242 + PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online, Boolean channelType, String platformId, String catalogId);
243 243
244 /** 244 /**
245 * 查询设备的通道信息 245 * 查询设备的通道信息
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
@@ -93,28 +93,31 @@ public interface DeviceChannelMapper { @@ -93,28 +93,31 @@ public interface DeviceChannelMapper {
93 void startPlay(String deviceId, String channelId, String streamId); 93 void startPlay(String deviceId, String channelId, String streamId);
94 94
95 95
  96 +
96 @Select(value = {" <script>" + 97 @Select(value = {" <script>" +
97 - "SELECT * FROM ( "+  
98 - " SELECT dc.channelId, dc.deviceId, dc.name, de.manufacturer, de.hostAddress, " +  
99 - "(SELECT count(0) FROM device_channel WHERE parentId=dc.channelId) as subCount, " +  
100 - "(SELECT pc.platformId FROM platform_gb_channel pc WHERE pc.deviceId=dc.deviceId AND pc.channelId = dc.channelId AND pc.platformId = #{platformId}) as platformId, " +  
101 - "(SELECT pc.catalogId FROM platform_gb_channel pc WHERE pc.deviceId=dc.deviceId AND pc.channelId = dc.channelId AND pc.platformId = #{platformId} ) as catalogId " +  
102 - "FROM device_channel dc " +  
103 - "LEFT JOIN device de ON dc.deviceId = de.deviceId " +  
104 - " WHERE 1=1 " +  
105 - " <if test='query != null'> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " +  
106 - " <if test='online == true' > AND dc.status=1</if> " +  
107 - " <if test='online == false' > AND dc.status=0</if> " +  
108 - ") dcr" + 98 + "SELECT dc.channelId, "+
  99 + "dc.deviceId, " +
  100 + "dc.name, " +
  101 + "de.manufacturer, " +
  102 + "de.hostAddress, " +
  103 + "(SELECT count(0) FROM device_channel WHERE parentId = dc.channelId) as subCount, " +
  104 + "pgc.platformId as platformId, " +
  105 + "pgc.catalogId as catalogId " +
  106 + "FROM device_channel dc " +
  107 + "LEFT JOIN device de ON dc.deviceId = de.deviceId " +
  108 + "LEFT JOIN platform_gb_channel pgc on de.deviceId = pgc.deviceId and pgc.channelId = dc.channelId " +
  109 + "LEFT JOIN device_channel dc2 ON dc2.deviceId = de.deviceId AND dc2.parentId = dc.channelId " +
109 " WHERE 1=1 " + 110 " WHERE 1=1 " +
110 - " <if test='hasSubChannel!= null and hasSubChannel == true' > AND subCount >0</if> " +  
111 - " <if test='hasSubChannel!= null and hasSubChannel == false' > AND subCount=0</if> " +  
112 - " <if test='platformId != null and inPlatform == true ' > AND platformId='${platformId}'</if> " +  
113 - " <if test='platformId != null and inPlatform == false ' > AND (platformId != '${platformId}' OR platformId is NULL ) </if> " +  
114 - " ORDER BY deviceId, channelId ASC" + 111 + " <if test='query != null'> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " +
  112 + " <if test='online == true' > AND dc.status=1</if> " +
  113 + " <if test='online == false' > AND dc.status=0</if> " +
  114 + " <if test='hasSubChannel!= null and hasSubChannel == true' > AND dc2.channelId is not null</if> " +
  115 + " <if test='hasSubChannel!= null and hasSubChannel == false' > AND dc2.channelId is null</if> " +
  116 + " <if test='catalogId == null ' > AND pgc.platformId is null AND pgc.catalogId is null</if> " +
  117 + " <if test='catalogId != null ' > AND pgc.platformId =#{platformId} AND pgc.catalogId = #{catalogId}</if> " +
  118 + " ORDER BY dc.deviceId, dc.channelId ASC" +
115 " </script>"}) 119 " </script>"})
116 -  
117 - List<ChannelReduce> queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String platformId, Boolean inPlatform); 120 + List<ChannelReduce> queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String platformId, String catalogId);
118 121
119 @Select("SELECT * FROM device_channel WHERE channelId=#{channelId}") 122 @Select("SELECT * FROM device_channel WHERE channelId=#{channelId}")
120 List<DeviceChannel> queryChannelByChannelId( String channelId); 123 List<DeviceChannel> queryChannelByChannelId( String channelId);
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
@@ -37,10 +37,20 @@ public interface GbStreamMapper { @@ -37,10 +37,20 @@ public interface GbStreamMapper {
37 @Delete("DELETE FROM gb_stream WHERE app=#{app} AND stream=#{stream}") 37 @Delete("DELETE FROM gb_stream WHERE app=#{app} AND stream=#{stream}")
38 int del(String app, String stream); 38 int del(String app, String stream);
39 39
40 - @Select("SELECT gs.*, pgs.platformId AS platformId, pgs.catalogId AS catalogId FROM gb_stream gs " +  
41 - "LEFT JOIN platform_gb_stream pgs ON gs.app = pgs.app AND gs.stream = pgs.stream AND (pgs.platformId = #{platformId} OR pgs.platformId is null)" +  
42 - "order by gs.id asc ")  
43 - List<GbStream> selectAll(String platformId); 40 + @Select("<script> "+
  41 + "SELECT gs.*, pgs.platformId AS platformId, pgs.catalogId AS catalogId FROM gb_stream gs " +
  42 + "LEFT JOIN platform_gb_stream pgs ON gs.app = pgs.app AND gs.stream = pgs.stream " +
  43 + "WHERE " +
  44 + "1=1 " +
  45 + " <if test='catalogId != null'> AND pgs.platformId = #{platformId} AND pgs.catalogId = #{catalogId}</if> " +
  46 + " <if test='catalogId == null'> AND pgs.platformId is null AND pgs.catalogId is null</if> " +
  47 + " <if test='query != null'> AND (gs.app LIKE '%${query}%' OR gs.stream LIKE '%${query}%' OR gs.gbId LIKE '%${query}%' OR gs.name LIKE '%${query}%')</if> " +
  48 + " <if test='pushing == true' > AND gs.status=1</if>" +
  49 + " <if test='pushing == false' > AND gs.status=0</if>" +
  50 + " <if test='mediaServerId != null' > AND gs.mediaServerId=#{mediaServerId} </if>" +
  51 + " order by gs.id asc " +
  52 + "</script>")
  53 + List<GbStream> selectAll(String platformId, String catalogId, String query, Boolean pushing, String mediaServerId);
44 54
45 @Select("SELECT * FROM gb_stream WHERE app=#{app} AND stream=#{stream}") 55 @Select("SELECT * FROM gb_stream WHERE app=#{app} AND stream=#{stream}")
46 StreamProxyItem selectOne(String app, String stream); 56 StreamProxyItem selectOne(String app, String stream);
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -575,16 +575,16 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @@ -575,16 +575,16 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
575 575
576 @Override 576 @Override
577 public PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online, 577 public PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online,
578 - Boolean channelType, String platformId, Boolean inPlatform) { 578 + Boolean channelType, String platformId, String catalogId) {
579 PageHelper.startPage(page, count); 579 PageHelper.startPage(page, count);
580 - List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, inPlatform); 580 + List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, catalogId);
581 return new PageInfo<>(all); 581 return new PageInfo<>(all);
582 } 582 }
583 583
584 @Override 584 @Override
585 public List<ChannelReduce> queryChannelListInParentPlatform(String platformId) { 585 public List<ChannelReduce> queryChannelListInParentPlatform(String platformId) {
586 586
587 - return deviceChannelMapper.queryChannelListInAll(null, null, null, platformId, true); 587 + return deviceChannelMapper.queryChannelListInAll(null, null, null, platformId, null);
588 } 588 }
589 589
590 @Override 590 @Override
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
@@ -12,6 +12,7 @@ import io.swagger.annotations.ApiOperation; @@ -12,6 +12,7 @@ import io.swagger.annotations.ApiOperation;
12 import org.slf4j.Logger; 12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory; 13 import org.slf4j.LoggerFactory;
14 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.util.StringUtils;
15 import org.springframework.web.bind.annotation.*; 16 import org.springframework.web.bind.annotation.*;
16 17
17 @Api(tags = "视频流关联到级联平台") 18 @Api(tags = "视频流关联到级联平台")
@@ -40,15 +41,33 @@ public class GbStreamController { @@ -40,15 +41,33 @@ public class GbStreamController {
40 @ApiImplicitParams({ 41 @ApiImplicitParams({
41 @ApiImplicitParam(name = "page", value = "当前页", required = true , dataTypeClass = Integer.class), 42 @ApiImplicitParam(name = "page", value = "当前页", required = true , dataTypeClass = Integer.class),
42 @ApiImplicitParam(name = "count", value = "每页条数", required = true , dataTypeClass = Integer.class), 43 @ApiImplicitParam(name = "count", value = "每页条数", required = true , dataTypeClass = Integer.class),
43 - @ApiImplicitParam(name = "platformId", value = "平台ID", required = true , dataTypeClass = Integer.class), 44 + @ApiImplicitParam(name = "platformId", value = "平台ID", required = true , dataTypeClass = String.class),
  45 + @ApiImplicitParam(name = "catalogId", value = "目录ID", required = false , dataTypeClass = String.class),
  46 + @ApiImplicitParam(name="query", value = "查询内容", required = false , dataTypeClass = String.class),
  47 + @ApiImplicitParam(name="pushing", value = "是否正在推流", required = false , dataTypeClass = Boolean.class),
  48 + @ApiImplicitParam(name="mediaServerId", value = "流媒体ID", required = false , dataTypeClass = String.class),
  49 +
44 }) 50 })
45 @GetMapping(value = "/list") 51 @GetMapping(value = "/list")
46 @ResponseBody 52 @ResponseBody
47 public PageInfo<GbStream> list(@RequestParam(required = true)Integer page, 53 public PageInfo<GbStream> list(@RequestParam(required = true)Integer page,
48 @RequestParam(required = true)Integer count, 54 @RequestParam(required = true)Integer count,
49 - @RequestParam(required = true)String platformId){ 55 + @RequestParam(required = true)String platformId,
  56 + @RequestParam(required = false)String catalogId,
  57 + @RequestParam(required = false)String query,
  58 + @RequestParam(required = false)Boolean pushing,
  59 + @RequestParam(required = false)String mediaServerId){
  60 + if (StringUtils.isEmpty(catalogId)) {
  61 + catalogId = null;
  62 + }
  63 + if (StringUtils.isEmpty(query)) {
  64 + query = null;
  65 + }
  66 + if (StringUtils.isEmpty(mediaServerId)) {
  67 + mediaServerId = null;
  68 + }
50 69
51 - return gbStreamService.getAll(page, count, platformId); 70 + return gbStreamService.getAll(page, count, platformId, catalogId, query, pushing, mediaServerId);
52 } 71 }
53 72
54 73
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -65,6 +65,25 @@ public class PlatformController { @@ -65,6 +65,25 @@ public class PlatformController {
65 result.put("password", sipConfig.getPassword()); 65 result.put("password", sipConfig.getPassword());
66 return new ResponseEntity<>(result, HttpStatus.OK); 66 return new ResponseEntity<>(result, HttpStatus.OK);
67 } 67 }
  68 + /**
  69 + * 获取级联服务器信息
  70 + * @return
  71 + */
  72 + @ApiOperation("获取国标服务的配置")
  73 + @GetMapping("/info/{id}")
  74 + public ResponseEntity<WVPResult<ParentPlatform>> getPlatform(@PathVariable String id) {
  75 + ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(id);
  76 + WVPResult<ParentPlatform> wvpResult = new WVPResult<>();
  77 + if (parentPlatform != null) {
  78 + wvpResult.setCode(0);
  79 + wvpResult.setMsg("success");
  80 + wvpResult.setData(parentPlatform);
  81 + }else {
  82 + wvpResult.setCode(-1);
  83 + wvpResult.setMsg("未查询到此平台");
  84 + }
  85 + return new ResponseEntity<>(wvpResult, HttpStatus.OK);
  86 + }
68 87
69 /** 88 /**
70 * 分页查询级联平台 89 * 分页查询级联平台
@@ -282,29 +301,33 @@ public class PlatformController { @@ -282,29 +301,33 @@ public class PlatformController {
282 @ApiImplicitParam(name = "page", value = "当前页", dataTypeClass = Integer.class), 301 @ApiImplicitParam(name = "page", value = "当前页", dataTypeClass = Integer.class),
283 @ApiImplicitParam(name = "count", value = "每页条数", dataTypeClass = Integer.class), 302 @ApiImplicitParam(name = "count", value = "每页条数", dataTypeClass = Integer.class),
284 @ApiImplicitParam(name = "platformId", value = "上级平台ID", dataTypeClass = String.class), 303 @ApiImplicitParam(name = "platformId", value = "上级平台ID", dataTypeClass = String.class),
  304 + @ApiImplicitParam(name = "catalogId", value = "目录ID", dataTypeClass = String.class),
285 @ApiImplicitParam(name = "query", value = "查询内容", dataTypeClass = String.class), 305 @ApiImplicitParam(name = "query", value = "查询内容", dataTypeClass = String.class),
286 @ApiImplicitParam(name = "online", value = "是否在线", dataTypeClass = Boolean.class), 306 @ApiImplicitParam(name = "online", value = "是否在线", dataTypeClass = Boolean.class),
287 - @ApiImplicitParam(name = "choosed", value = "是否已选中", dataTypeClass = Boolean.class),  
288 @ApiImplicitParam(name = "channelType", value = "通道类型", dataTypeClass = Boolean.class), 307 @ApiImplicitParam(name = "channelType", value = "通道类型", dataTypeClass = Boolean.class),
289 }) 308 })
290 @GetMapping("/channel_list") 309 @GetMapping("/channel_list")
291 @ResponseBody 310 @ResponseBody
292 public PageInfo<ChannelReduce> channelList(int page, int count, 311 public PageInfo<ChannelReduce> channelList(int page, int count,
293 @RequestParam(required = false) String platformId, 312 @RequestParam(required = false) String platformId,
  313 + @RequestParam(required = false) String catalogId,
294 @RequestParam(required = false) String query, 314 @RequestParam(required = false) String query,
295 @RequestParam(required = false) Boolean online, 315 @RequestParam(required = false) Boolean online,
296 - @RequestParam(required = false) Boolean choosed,  
297 @RequestParam(required = false) Boolean channelType){ 316 @RequestParam(required = false) Boolean channelType){
298 317
299 // if (logger.isDebugEnabled()) { 318 // if (logger.isDebugEnabled()) {
300 // logger.debug("查询所有所有通道API调用"); 319 // logger.debug("查询所有所有通道API调用");
301 // } 320 // }
302 - PageInfo<ChannelReduce> channelReduces = null;  
303 - if (platformId != null ) {  
304 - channelReduces = storager.queryAllChannelList(page, count, query, online, channelType, platformId, choosed);  
305 - }else {  
306 - channelReduces = storager.queryAllChannelList(page, count, query, online, channelType, null, false); 321 + if(StringUtils.isEmpty(platformId)) {
  322 + platformId = null;
  323 + }
  324 + if(StringUtils.isEmpty(query)) {
  325 + query = null;
  326 + }
  327 + if(StringUtils.isEmpty(platformId) || StringUtils.isEmpty(catalogId)) {
  328 + catalogId = null;
307 } 329 }
  330 + PageInfo<ChannelReduce> channelReduces = storager.queryAllChannelList(page, count, query, online, channelType, platformId, catalogId);
308 331
309 return channelReduces; 332 return channelReduces;
310 } 333 }
@@ -371,11 +394,11 @@ public class PlatformController { @@ -371,11 +394,11 @@ public class PlatformController {
371 } 394 }
372 List<PlatformCatalog> platformCatalogList = storager.getChildrenCatalogByPlatform(platformId, parentId); 395 List<PlatformCatalog> platformCatalogList = storager.getChildrenCatalogByPlatform(platformId, parentId);
373 // 查询下属的国标通道 396 // 查询下属的国标通道
374 - List<PlatformCatalog> catalogsForChannel = storager.queryChannelInParentPlatformAndCatalog(platformId, parentId); 397 +// List<PlatformCatalog> catalogsForChannel = storager.queryChannelInParentPlatformAndCatalog(platformId, parentId);
375 // 查询下属的直播流通道 398 // 查询下属的直播流通道
376 - List<PlatformCatalog> catalogsForStream = storager.queryStreamInParentPlatformAndCatalog(platformId, parentId);  
377 - platformCatalogList.addAll(catalogsForChannel);  
378 - platformCatalogList.addAll(catalogsForStream); 399 +// List<PlatformCatalog> catalogsForStream = storager.queryStreamInParentPlatformAndCatalog(platformId, parentId);
  400 +// platformCatalogList.addAll(catalogsForChannel);
  401 +// platformCatalogList.addAll(catalogsForStream);
379 WVPResult<List<PlatformCatalog>> result = new WVPResult<>(); 402 WVPResult<List<PlatformCatalog>> result = new WVPResult<>();
380 result.setCode(0); 403 result.setCode(0);
381 result.setMsg("success"); 404 result.setMsg("success");
web_src/index.html
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 5 <meta name="viewport" content="width=device-width,initial-scale=1.0">
6 <title>国标28181</title> 6 <title>国标28181</title>
  7 + <link rel="shortcut icon" href="static/favicon.ico" type="image/x-icon">
7 <link rel="stylesheet" type="text/css" href="./static/css/iconfont.css"> 8 <link rel="stylesheet" type="text/css" href="./static/css/iconfont.css">
8 <link rel="stylesheet" type="text/css" href="./static/css/login.css"> 9 <link rel="stylesheet" type="text/css" href="./static/css/login.css">
9 </head> 10 </head>
web_src/src/components/PushVideoList.vue
@@ -35,11 +35,7 @@ @@ -35,11 +35,7 @@
35 <devicePlayer ref="devicePlayer"></devicePlayer> 35 <devicePlayer ref="devicePlayer"></devicePlayer>
36 <addStreamTOGB ref="addStreamTOGB"></addStreamTOGB> 36 <addStreamTOGB ref="addStreamTOGB"></addStreamTOGB>
37 <el-table ref="pushListTable" :data="pushList" border style="width: 100%" :height="winHeight" @selection-change="handleSelectionChange" :row-key="(row)=> row.app + row.stream"> 37 <el-table ref="pushListTable" :data="pushList" border style="width: 100%" :height="winHeight" @selection-change="handleSelectionChange" :row-key="(row)=> row.app + row.stream">
38 - <el-table-column  
39 - align="center"  
40 - type="selection"  
41 - :reserve-selection="true"  
42 - width="55"> 38 + <el-table-column align="center" type="selection" :reserve-selection="true" width="55">
43 </el-table-column> 39 </el-table-column>
44 <el-table-column prop="name" label="名称" align="center"> 40 <el-table-column prop="name" label="名称" align="center">
45 </el-table-column> 41 </el-table-column>
web_src/src/components/UiHeader.vue
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <el-menu router :default-active="activeIndex" menu-trigger="click" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b" mode="horizontal"> 3 <el-menu router :default-active="activeIndex" menu-trigger="click" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b" mode="horizontal">
4 <el-menu-item index="/">控制台</el-menu-item> 4 <el-menu-item index="/">控制台</el-menu-item>
5 <el-menu-item index="/live">实时监控</el-menu-item> 5 <el-menu-item index="/live">实时监控</el-menu-item>
6 - <el-menu-item index="/deviceList">设备列表</el-menu-item> 6 + <el-menu-item index="/deviceList">国标设备</el-menu-item>
7 <el-menu-item index="/pushVideoList">推流列表</el-menu-item> 7 <el-menu-item index="/pushVideoList">推流列表</el-menu-item>
8 <el-menu-item index="/streamProxyList">拉流代理</el-menu-item> 8 <el-menu-item index="/streamProxyList">拉流代理</el-menu-item>
9 <el-menu-item index="/cloudRecord">云端录像</el-menu-item> 9 <el-menu-item index="/cloudRecord">云端录像</el-menu-item>
web_src/src/components/dialog/catalogEdit.vue
@@ -77,8 +77,7 @@ export default { @@ -77,8 +77,7 @@ export default {
77 }) 77 })
78 .then((res)=> { 78 .then((res)=> {
79 if (res.data.code === 0) { 79 if (res.data.code === 0) {
80 - console.log("添加/修改成功")  
81 - if (this.submitCallback)this.submitCallback() 80 + if (this.submitCallback)this.submitCallback(this.form)
82 }else { 81 }else {
83 this.$message({ 82 this.$message({
84 showClose: true, 83 showClose: true,
web_src/src/components/dialog/chooseChannel.vue
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 <el-tab-pane label="目录结构" name="catalog"> 8 <el-tab-pane label="目录结构" name="catalog">
9 <el-container> 9 <el-container>
10 <el-main v-bind:style="{backgroundColor: '#FFF', maxHeight: winHeight + 'px'}"> 10 <el-main v-bind:style="{backgroundColor: '#FFF', maxHeight: winHeight + 'px'}">
11 - <chooseChannelForCatalog ref="chooseChannelForCatalog" :platformId=platformId :platformName=platformName :defaultCatalogId=defaultCatalogId :catalogIdChange="catalogIdChange"></chooseChannelForCatalog> 11 + <chooseChannelForCatalog ref="chooseChannelForCatalog" :platformId=platformId :platformName=platformName :defaultCatalogId=defaultCatalogId :catalogIdChange="catalogIdChange" ></chooseChannelForCatalog>
12 </el-main> 12 </el-main>
13 </el-container> 13 </el-container>
14 </el-tab-pane> 14 </el-tab-pane>
@@ -20,14 +20,14 @@ @@ -20,14 +20,14 @@
20 <el-tab-pane label="国标通道" name="gbChannel"> 20 <el-tab-pane label="国标通道" name="gbChannel">
21 <el-container> 21 <el-container>
22 <el-main style="background-color: #FFF;"> 22 <el-main style="background-color: #FFF;">
23 - <chooseChannelForGb ref="chooseChannelForGb" :catalogId="catalogId" :platformId=platformId :updateChoosedCallback="updateChooseChannelCallback"></chooseChannelForGb> 23 + <chooseChannelForGb ref="chooseChannelForGb" :catalogId="catalogId" :catalogName="catalogName" :platformId=platformId ></chooseChannelForGb>
24 </el-main> 24 </el-main>
25 </el-container> 25 </el-container>
26 </el-tab-pane> 26 </el-tab-pane>
27 <el-tab-pane label="直播流通道" name="streamchannel"> 27 <el-tab-pane label="直播流通道" name="streamchannel">
28 <el-container> 28 <el-container>
29 <el-main style="background-color: #FFF;"> 29 <el-main style="background-color: #FFF;">
30 - <chooseChannelFoStream ref="chooseChannelFoStream" :catalogId="catalogId" :platformId=platformId :updateChoosedCallback="updateChooseChannelCallback"></chooseChannelFoStream> 30 + <chooseChannelFoStream ref="chooseChannelFoStream" :catalogId="catalogId" :catalogName="catalogName" :currentCatalogId="currentCatalogId" :platformId=platformId ></chooseChannelFoStream>
31 </el-main> 31 </el-main>
32 </el-container> 32 </el-container>
33 </el-tab-pane> 33 </el-tab-pane>
@@ -61,6 +61,8 @@ export default { @@ -61,6 +61,8 @@ export default {
61 catalogTabActiveName: "catalog", 61 catalogTabActiveName: "catalog",
62 platformId: "", 62 platformId: "",
63 catalogId: "", 63 catalogId: "",
  64 + catalogName: "",
  65 + currentCatalogId: "",
64 platformName: "", 66 platformName: "",
65 defaultCatalogId: "", 67 defaultCatalogId: "",
66 showDialog: false, 68 showDialog: false,
@@ -108,14 +110,10 @@ export default { @@ -108,14 +110,10 @@ export default {
108 console.log(error); 110 console.log(error);
109 }); 111 });
110 }, 112 },
111 - catalogIdChange: function (id) {  
112 - console.log("中间模块收到: " + id) 113 + catalogIdChange: function (id, name) {
113 this.catalogId = id; 114 this.catalogId = id;
  115 + this.catalogName = name;
114 }, 116 },
115 - updateChooseChannelCallback (id){  
116 - console.log("中间模块收到选择通道变化: " + id)  
117 - this.$refs.chooseChannelForCatalog.refreshCatalogById(id)  
118 - }  
119 } 117 }
120 }; 118 };
121 </script> 119 </script>
web_src/src/components/dialog/chooseChannelForCatalog.vue
@@ -7,19 +7,21 @@ @@ -7,19 +7,21 @@
7 empty-text="未知节点" 7 empty-text="未知节点"
8 node-key="id" 8 node-key="id"
9 default-expand-all 9 default-expand-all
10 - :highlight-current="true" 10 + :highlight-current="false"
11 :expand-on-click-node="false" 11 :expand-on-click-node="false"
12 :props="props" 12 :props="props"
13 :load="loadNode" 13 :load="loadNode"
14 @node-contextmenu="contextmenuEventHandler" 14 @node-contextmenu="contextmenuEventHandler"
  15 + @node-click="nodeClickHandler"
15 lazy> 16 lazy>
16 <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%"> 17 <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%">
17 - <el-radio v-if="node.data.type === 0" style="margin-right: 0" v-model="chooseId" :label="node.data.id">{{''}}</el-radio> 18 + <el-radio v-if="node.data.type === 0 || node.data.type === -1" style="margin-right: 0" v-model="chooseId" :label="node.data.id">{{''}}</el-radio>
  19 + <span v-if="node.data.type === -1 && node.level === 1" style="font-size: 12px" class="iconfont icon-ziyuan"></span>
18 <span v-if="node.data.type === 0 && node.level === 1" class="el-icon-s-home"></span> 20 <span v-if="node.data.type === 0 && node.level === 1" class="el-icon-s-home"></span>
19 <span v-if="node.data.type === 0 && node.level > 1" class="el-icon-folder-opened"></span> 21 <span v-if="node.data.type === 0 && node.level > 1" class="el-icon-folder-opened"></span>
20 <span v-if="node.data.type === 1" class="iconfont icon-shexiangtou"></span> 22 <span v-if="node.data.type === 1" class="iconfont icon-shexiangtou"></span>
21 <span v-if="node.data.type === 2" class="iconfont icon-zhibo"></span> 23 <span v-if="node.data.type === 2" class="iconfont icon-zhibo"></span>
22 - <span style="padding-left: 1px">{{ node.label }}</span> 24 + <span style=" padding-left: 1px">{{ node.label }}</span>
23 <span> 25 <span>
24 <i style="margin-left: 5rem; color: #9d9d9d; padding-right: 20px" v-if="node.data.id === defaultCatalogIdSign">默认</i> 26 <i style="margin-left: 5rem; color: #9d9d9d; padding-right: 20px" v-if="node.data.id === defaultCatalogIdSign">默认</i>
25 </span> 27 </span>
@@ -42,7 +44,7 @@ export default { @@ -42,7 +44,7 @@ export default {
42 this.defaultCatalogIdSign = this.defaultCatalogId; 44 this.defaultCatalogIdSign = this.defaultCatalogId;
43 this.initData(); 45 this.initData();
44 setTimeout(()=>{ 46 setTimeout(()=>{
45 - if (this.catalogIdChange)this.catalogIdChange(this.defaultCatalogId); 47 + if (this.catalogIdChange)this.catalogIdChange(this.defaultCatalogId, this.platformName);
46 }, 100) 48 }, 100)
47 49
48 }, 50 },
@@ -59,6 +61,7 @@ export default { @@ -59,6 +61,7 @@ export default {
59 defaultCatalogIdSign: null, 61 defaultCatalogIdSign: null,
60 chooseNode: null, 62 chooseNode: null,
61 chooseId: "", 63 chooseId: "",
  64 + chooseName: "",
62 catalogTree: null, 65 catalogTree: null,
63 contextmenuShow: false 66 contextmenuShow: false
64 67
@@ -69,10 +72,6 @@ export default { @@ -69,10 +72,6 @@ export default {
69 console.log(newData) 72 console.log(newData)
70 this.initData() 73 this.initData()
71 }, 74 },
72 - chooseId(newData, oldData){  
73 - console.log("发送: " + newData)  
74 - if (this.catalogIdChange)this.catalogIdChange(newData);  
75 - },  
76 }, 75 },
77 methods: { 76 methods: {
78 initData: function () { 77 initData: function () {
@@ -123,9 +122,12 @@ export default { @@ -123,9 +122,12 @@ export default {
123 editCatalog: function (data, node){ 122 editCatalog: function (data, node){
124 let that = this; 123 let that = this;
125 // 打开添加弹窗 124 // 打开添加弹窗
126 - that.$refs.catalogEdit.openDialog(true, data.id, data.name, data.parentId, (data)=>{ 125 + that.$refs.catalogEdit.openDialog(true, data.id, data.name, data.parentId, (newData)=>{
127 node.parent.loaded = false 126 node.parent.loaded = false
128 node.parent.expand(); 127 node.parent.expand();
  128 + if (data.id === this.chooseId && newData.name !== data.name) {
  129 + if (this.catalogIdChange)this.catalogIdChange(this.chooseId, newData.name);
  130 + }
129 }); 131 });
130 132
131 }, 133 },
@@ -172,11 +174,17 @@ export default { @@ -172,11 +174,17 @@ export default {
172 }, 174 },
173 loadNode: function(node, resolve){ 175 loadNode: function(node, resolve){
174 if (node.level === 0) { 176 if (node.level === 0) {
175 - resolve([{  
176 - name: this.platformName,  
177 - id: this.platformId,  
178 - type: 0  
179 - }]); 177 + resolve([
  178 + {
  179 + name: "未分配",
  180 + id: null,
  181 + type: -1
  182 + },{
  183 + name: this.platformName,
  184 + id: this.platformId,
  185 + type: 0
  186 + }
  187 + ]);
180 } 188 }
181 if (node.level >= 1){ 189 if (node.level >= 1){
182 this.getCatalog(node.data.id, resolve) 190 this.getCatalog(node.data.id, resolve)
@@ -291,6 +299,11 @@ export default { @@ -291,6 +299,11 @@ export default {
291 299
292 return false; 300 return false;
293 }, 301 },
  302 + nodeClickHandler: function (data, node, tree){
  303 + this.chooseId = data.id;
  304 + this.chooseName = data.name;
  305 + if (this.catalogIdChange)this.catalogIdChange(this.chooseId, this.chooseName);
  306 + }
294 } 307 }
295 }; 308 };
296 </script> 309 </script>
web_src/src/components/dialog/chooseChannelForGb.vue
1 <template> 1 <template>
2 <div id="chooseChannelForGb" > 2 <div id="chooseChannelForGb" >
3 - <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;"> 3 + <div style="font-size: 17px; color: #606060; white-space: nowrap; line-height: 30px; font-family: monospace;">
  4 + <span v-if="catalogId == null">{{catalogName}}的直播流</span>
  5 + <span v-if="catalogId != null">{{catalogName}}({{catalogId}})的直播流</span>
  6 + </div>
  7 + <div style="background-color: #FFFFFF; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
4 搜索: <el-input @input="search" style="margin-right: 1rem; width: auto;" size="mini" placeholder="关键字" prefix-icon="el-icon-search" v-model="searchSrt" clearable> </el-input> 8 搜索: <el-input @input="search" style="margin-right: 1rem; width: auto;" size="mini" placeholder="关键字" prefix-icon="el-icon-search" v-model="searchSrt" clearable> </el-input>
5 9
6 通道类型: <el-select size="mini" @change="search" style="margin-right: 1rem; width:6rem" v-model="channelType" placeholder="请选择" default-first-option> 10 通道类型: <el-select size="mini" @change="search" style="margin-right: 1rem; width:6rem" v-model="channelType" placeholder="请选择" default-first-option>
@@ -9,21 +13,18 @@ @@ -9,21 +13,18 @@
9 <el-option label="子目录" value="true"></el-option> 13 <el-option label="子目录" value="true"></el-option>
10 </el-select> 14 </el-select>
11 15
12 - 选择状态: <el-select size="mini" style="margin-right: 1rem; width:6rem" v-model="choosed" @change="search" placeholder="请选择" default-first-option>  
13 - <el-option label="全部" value=""></el-option>  
14 - <el-option label="已选择" value="true"></el-option>  
15 - <el-option label="未选择" value="false"></el-option>  
16 - </el-select>  
17 -  
18 在线状态: <el-select size="mini" style="margin-right: 1rem; width:6rem" @change="search" v-model="online" placeholder="请选择" default-first-option> 16 在线状态: <el-select size="mini" style="margin-right: 1rem; width:6rem" @change="search" v-model="online" placeholder="请选择" default-first-option>
19 <el-option label="全部" value=""></el-option> 17 <el-option label="全部" value=""></el-option>
20 <el-option label="在线" value="true"></el-option> 18 <el-option label="在线" value="true"></el-option>
21 <el-option label="离线" value="false"></el-option> 19 <el-option label="离线" value="false"></el-option>
22 </el-select> 20 </el-select>
23 -  
24 -<!-- <el-checkbox @change="shareAllCheckedChange">全部共享</el-checkbox>--> 21 + <el-button v-if="catalogId !== null" icon="el-icon-delete" size="mini" style="margin-right: 1rem;" :disabled="gbChannels.length === 0 || multipleSelection.length === 0" type="danger" @click="batchDel">批量移除</el-button>
  22 + <el-button v-if="catalogId === null" icon="el-icon-plus" size="mini" style="margin-right: 1rem;" :disabled="gbChannels.length === 0 || multipleSelection.length === 0" @click="batchAdd">批量添加</el-button>
25 </div> 23 </div>
26 - <el-table ref="gbChannelsTable" :data="gbChannels" border style="width: 100%" :height="winHeight"> 24 +
  25 + <el-table ref="gbChannelsTable" :data="gbChannels" border style="width: 100%" :height="winHeight" :row-key="(row)=> row.deviceId + row.channelId" @selection-change="handleSelectionChange">
  26 + <el-table-column align="center" type="selection" :reserve-selection="true" width="55">
  27 + </el-table-column>
27 <el-table-column prop="channelId" label="通道编号" width="180" align="center"> 28 <el-table-column prop="channelId" label="通道编号" width="180" align="center">
28 </el-table-column> 29 </el-table-column>
29 <el-table-column prop="name" label="通道名称" show-overflow-tooltip align="center"> 30 <el-table-column prop="name" label="通道名称" show-overflow-tooltip align="center">
@@ -50,10 +51,12 @@ @@ -50,10 +51,12 @@
50 </el-table> 51 </el-table>
51 <el-pagination style="float: right;margin-top: 1rem;" @size-change="handleSizeChange" @current-change="currentChange" :current-page="currentPage" :page-size="count" :page-sizes="[10, 20, 30, 50]" layout="total, sizes, prev, pager, next" :total="total"> 52 <el-pagination style="float: right;margin-top: 1rem;" @size-change="handleSizeChange" @current-change="currentChange" :current-page="currentPage" :page-size="count" :page-sizes="[10, 20, 30, 50]" layout="total, sizes, prev, pager, next" :total="total">
52 </el-pagination> 53 </el-pagination>
  54 + <getCatalog ref="getCatalog" :platformId="platformId" ></getCatalog>
53 </div> 55 </div>
54 </template> 56 </template>
55 57
56 <script> 58 <script>
  59 +import getCatalog from './getCatalog'
57 export default { 60 export default {
58 name: 'chooseChannelForGb', 61 name: 'chooseChannelForGb',
59 computed: { 62 computed: {
@@ -65,10 +68,13 @@ export default { @@ -65,10 +68,13 @@ export default {
65 // }; 68 // };
66 // } 69 // }
67 }, 70 },
68 - props: ['platformId','catalogId', 'updateChoosedCallback'], 71 + props: ['platformId','catalogId', 'catalogName'],
69 created() { 72 created() {
70 this.initData(); 73 this.initData();
71 }, 74 },
  75 + components: {
  76 + getCatalog,
  77 + },
72 data() { 78 data() {
73 return { 79 return {
74 gbChannels: [], 80 gbChannels: [],
@@ -80,7 +86,8 @@ export default { @@ -80,7 +86,8 @@ export default {
80 currentPage: 1, 86 currentPage: 1,
81 count: 10, 87 count: 10,
82 total: 0, 88 total: 0,
83 - eventEnanle: false, 89 + eventEnable: false,
  90 + multipleSelection: [],
84 winHeight: window.innerHeight - 400, 91 winHeight: window.innerHeight - 400,
85 92
86 }; 93 };
@@ -88,8 +95,10 @@ export default { @@ -88,8 +95,10 @@ export default {
88 watch:{ 95 watch:{
89 platformId(newData, oldData){ 96 platformId(newData, oldData){
90 console.log(newData) 97 console.log(newData)
91 - this.initData()  
92 - 98 + this.getChannelList()
  99 + },
  100 + catalogId(newData, oldData){
  101 + this.getChannelList()
93 }, 102 },
94 }, 103 },
95 methods: { 104 methods: {
@@ -105,28 +114,24 @@ export default { @@ -105,28 +114,24 @@ export default {
105 console.log(val) 114 console.log(val)
106 this.initData(); 115 this.initData();
107 }, 116 },
108 - rowcheckedChange: function (val, row) {  
109 - console.log(val)  
110 - console.log(row)  
111 - },  
112 add: function (row) { 117 add: function (row) {
113 - console.log(row)  
114 - row.catalogId = this.catalogId  
115 - row.platformId = this.platformId  
116 - this.$axios({  
117 - method:"post",  
118 - url:"/api/platform/update_channel_for_gb",  
119 - data:{  
120 - platformId: this.platformId,  
121 - channelReduces: [row],  
122 - catalogId: this.catalogId  
123 - }  
124 - }).then((res)=>{  
125 - console.log("保存成功")  
126 - if(this.updateChoosedCallback)this.updateChoosedCallback(this.catalogId)  
127 - }).catch(function (error) {  
128 - console.log(error);  
129 - }); 118 + this.getCatalogFromUser((catalogId)=> {
  119 + this.$axios({
  120 + method:"post",
  121 + url:"/api/platform/update_channel_for_gb",
  122 + data:{
  123 + platformId: this.platformId,
  124 + channelReduces: [row],
  125 + catalogId: catalogId
  126 + }
  127 + }).then((res)=>{
  128 + console.log("保存成功")
  129 + this.getChannelList();
  130 + }).catch(function (error) {
  131 + console.log(error);
  132 + });
  133 + })
  134 +
130 }, 135 },
131 remove: function (row) { 136 remove: function (row) {
132 console.log(row) 137 console.log(row)
@@ -140,91 +145,87 @@ export default { @@ -140,91 +145,87 @@ export default {
140 } 145 }
141 }).then((res)=>{ 146 }).then((res)=>{
142 console.log("移除成功") 147 console.log("移除成功")
143 - if(this.updateChoosedCallback)this.updateChoosedCallback(row.catalogId)  
144 - row.platformId = null;  
145 - row.catalogId = null 148 + this.getChannelList();
146 }).catch(function (error) { 149 }).catch(function (error) {
147 console.log(error); 150 console.log(error);
148 }); 151 });
149 }, 152 },
150 - checkedChange: function (val) {  
151 - let that = this;  
152 - if (!that.eventEnanle) {  
153 - return;  
154 - }  
155 - let newData = {};  
156 - let addData = [];  
157 - let delData = [];  
158 - if (val.length > 0) {  
159 - for (let i = 0; i < val.length; i++) {  
160 - const element = val[i];  
161 - let key = element.deviceId + "_" + element.channelId;  
162 - newData[key] = element;  
163 - if (!!!that.gbChoosechannel[key]){  
164 - addData.push(element)  
165 - }else{  
166 - delete that.gbChoosechannel[key]  
167 - }  
168 - }  
169 -  
170 - let oldKeys = Object.keys(that.gbChoosechannel);  
171 - if (oldKeys.length > 0) {  
172 - for (let i = 0; i < oldKeys.length; i++) {  
173 - const key = oldKeys[i];  
174 - delData.push(that.gbChoosechannel[key])  
175 - }  
176 - }  
177 -  
178 - }else{  
179 - let oldKeys = Object.keys(that.gbChoosechannel);  
180 - if (oldKeys.length > 0) {  
181 - for (let i = 0; i < oldKeys.length; i++) {  
182 - const key = oldKeys[i];  
183 - delData.push(that.gbChoosechannel[key])  
184 - }  
185 - }  
186 - }  
187 -  
188 - that.gbChoosechannel = newData;  
189 - if (Object.keys(addData).length >0) {  
190 - that.$axios({  
191 - method:"post",  
192 - url:"/api/platform/update_channel_for_gb",  
193 - data:{  
194 - platformId: that.platformId,  
195 - channelReduces: addData,  
196 - catalogId: that.catalogId  
197 - }  
198 - }).then((res)=>{  
199 - console.log("保存成功")  
200 - if(that.updateChoosedCallback)that.updateChoosedCallback(that.catalogId)  
201 - }).catch(function (error) {  
202 - console.log(error);  
203 - });  
204 - }  
205 - if (delData.length >0) {  
206 - that.$axios({  
207 - method:"delete",  
208 - url:"/api/platform/del_channel_for_gb",  
209 - data:{  
210 - platformId: that.platformId,  
211 - channelReduces: delData  
212 - }  
213 - }).then((res)=>{  
214 - console.log("移除成功")  
215 - let nodeIds = new Array();  
216 - for (let i = 0; i < delData.length; i++) {  
217 - nodeIds.push(delData[i].channelId)  
218 - }  
219 - if(that.updateChoosedCallback)that.updateChoosedCallback(null, nodeIds)  
220 - }).catch(function (error) {  
221 - console.log(error);  
222 - });  
223 - }  
224 - },  
225 - shareAllCheckedChange: function (val) {  
226 -  
227 - }, 153 + // checkedChange: function (val) {
  154 + // let that = this;
  155 + // if (!that.eventEnable) {
  156 + // return;
  157 + // }
  158 + // let newData = {};
  159 + // let addData = [];
  160 + // let delData = [];
  161 + // if (val.length > 0) {
  162 + // for (let i = 0; i < val.length; i++) {
  163 + // const element = val[i];
  164 + // let key = element.deviceId + "_" + element.channelId;
  165 + // newData[key] = element;
  166 + // if (!!!that.gbChoosechannel[key]){
  167 + // addData.push(element)
  168 + // }else{
  169 + // delete that.gbChoosechannel[key]
  170 + // }
  171 + // }
  172 + //
  173 + // let oldKeys = Object.keys(that.gbChoosechannel);
  174 + // if (oldKeys.length > 0) {
  175 + // for (let i = 0; i < oldKeys.length; i++) {
  176 + // const key = oldKeys[i];
  177 + // delData.push(that.gbChoosechannel[key])
  178 + // }
  179 + // }
  180 + //
  181 + // }else{
  182 + // let oldKeys = Object.keys(that.gbChoosechannel);
  183 + // if (oldKeys.length > 0) {
  184 + // for (let i = 0; i < oldKeys.length; i++) {
  185 + // const key = oldKeys[i];
  186 + // delData.push(that.gbChoosechannel[key])
  187 + // }
  188 + // }
  189 + // }
  190 + //
  191 + // that.gbChoosechannel = newData;
  192 + // if (Object.keys(addData).length >0) {
  193 + // that.$axios({
  194 + // method:"post",
  195 + // url:"/api/platform/update_channel_for_gb",
  196 + // data:{
  197 + // platformId: that.platformId,
  198 + // channelReduces: addData,
  199 + // catalogId: that.catalogId
  200 + // }
  201 + // }).then((res)=>{
  202 + // console.log("保存成功")
  203 + // }).catch(function (error) {
  204 + // console.log(error);
  205 + // });
  206 + // }
  207 + // if (delData.length >0) {
  208 + // that.$axios({
  209 + // method:"delete",
  210 + // url:"/api/platform/del_channel_for_gb",
  211 + // data:{
  212 + // platformId: that.platformId,
  213 + // channelReduces: delData
  214 + // }
  215 + // }).then((res)=>{
  216 + // console.log("移除成功")
  217 + // let nodeIds = new Array();
  218 + // for (let i = 0; i < delData.length; i++) {
  219 + // nodeIds.push(delData[i].channelId)
  220 + // }
  221 + // }).catch(function (error) {
  222 + // console.log(error);
  223 + // });
  224 + // }
  225 + // },
  226 + // shareAllCheckedChange: function (val) {
  227 + //
  228 + // },
228 getChannelList: function () { 229 getChannelList: function () {
229 let that = this; 230 let that = this;
230 231
@@ -236,7 +237,7 @@ export default { @@ -236,7 +237,7 @@ export default {
236 count: that.count, 237 count: that.count,
237 query: that.searchSrt, 238 query: that.searchSrt,
238 online: that.online, 239 online: that.online,
239 - choosed: that.choosed, 240 + catalogId: that.catalogId,
240 platformId: that.platformId, 241 platformId: that.platformId,
241 channelType: that.channelType 242 channelType: that.channelType
242 } 243 }
@@ -248,20 +249,7 @@ export default { @@ -248,20 +249,7 @@ export default {
248 // 防止出现表格错位 249 // 防止出现表格错位
249 that.$nextTick(() => { 250 that.$nextTick(() => {
250 that.$refs.gbChannelsTable.doLayout(); 251 that.$refs.gbChannelsTable.doLayout();
251 - // 默认选中  
252 - var chooseGBS = [];  
253 - for (let i = 0; i < res.data.list.length; i++) {  
254 - const row = res.data.list[i];  
255 - console.log(row.platformId)  
256 - if (row.platformId == that.platformId) {  
257 - that.$refs.gbChannelsTable.toggleRowSelection(row, true);  
258 - chooseGBS.push(row)  
259 - that.gbChoosechannel[row.deviceId+ "_" + row.channelId] = row;  
260 -  
261 - }  
262 - }  
263 - that.eventEnanle = true;  
264 - // that.checkedChange(chooseGBS) 252 + that.eventEnable = true;
265 }) 253 })
266 console.log(that.gbChoosechannel) 254 console.log(that.gbChoosechannel)
267 }) 255 })
@@ -276,10 +264,55 @@ export default { @@ -276,10 +264,55 @@ export default {
276 handleGBSelectionChange: function() { 264 handleGBSelectionChange: function() {
277 this.initData(); 265 this.initData();
278 }, 266 },
279 - // catalogIdChange: function(id) {  
280 - // this.catalogId = id;  
281 - // console.log("通道选择模块收到: " + id)  
282 - // }, 267 + batchDel: function() {
  268 + this.$confirm(`确认这${this.multipleSelection.length}个通道吗?`, '提示', {
  269 + confirmButtonText: '确定',
  270 + cancelButtonText: '取消',
  271 + type: 'warning'
  272 + }).then(() => {
  273 + this.$axios({
  274 + method:"delete",
  275 + url:"/api/platform/del_channel_for_gb",
  276 + data:{
  277 + platformId: this.platformId,
  278 + channelReduces: this.multipleSelection
  279 + }
  280 + }).then((res)=>{
  281 + console.log("移除成功")
  282 + this.$refs.gbChannelsTable.clearSelection()
  283 + this.getChannelList();
  284 + }).catch(function (error) {
  285 + console.log(error);
  286 + });
  287 + }).catch(() => {
  288 + });
  289 + },
  290 + batchAdd: function() {
  291 + this.getCatalogFromUser((catalogId)=> {
  292 +
  293 + this.$axios({
  294 + method: "post",
  295 + url: "/api/platform/update_channel_for_gb",
  296 + data: {
  297 + platformId: this.platformId,
  298 + channelReduces: this.multipleSelection,
  299 + catalogId: catalogId,
  300 + }
  301 + }).then((res) => {
  302 + console.log("保存成功")
  303 + this.$refs.gbChannelsTable.clearSelection()
  304 + this.getChannelList();
  305 + }).catch(function (error) {
  306 + console.log(error);
  307 + });
  308 + });
  309 + },
  310 + handleSelectionChange: function (val) {
  311 + this.multipleSelection = val;
  312 + },
  313 + getCatalogFromUser(callback){
  314 + this.$refs.getCatalog.openDialog(callback)
  315 + },
283 } 316 }
284 }; 317 };
285 </script> 318 </script>
web_src/src/components/dialog/chooseChannelForStream.vue
1 <template> 1 <template>
2 <div id="chooseChannelFoStream" > 2 <div id="chooseChannelFoStream" >
3 - <el-table ref="gbStreamsTable" :data="gbStreams" border style="width: 100%" :height="winHeight"> 3 + <div style="font-size: 17px; color: #606060; white-space: nowrap; line-height: 30px; font-family: monospace;">
  4 + <span v-if="catalogId == null">{{catalogName}}的直播流</span>
  5 + <span v-if="catalogId != null">{{catalogName}}({{catalogId}})的直播流</span>
  6 + </div>
  7 + <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
  8 +
  9 + 搜索: <el-input @input="getChannelList" style="margin-right: 1rem; width: auto;" size="mini" placeholder="关键字" prefix-icon="el-icon-search" v-model="searchSrt" clearable> </el-input>
  10 +
  11 +<!-- 流媒体: <el-select size="mini" @change="getChannelList" style="margin-right: 1rem;" v-model="mediaServerId" placeholder="请选择" default-first-option>-->
  12 +<!-- <el-option label="全部" value=""></el-option>-->
  13 +<!-- <el-option-->
  14 +<!-- v-for="item in mediaServerList"-->
  15 +<!-- :key="item.id"-->
  16 +<!-- :label="item.id"-->
  17 +<!-- :value="item.id">-->
  18 +<!-- </el-option>-->
  19 +<!-- </el-select>-->
  20 + 推流状态: <el-select size="mini" style="margin-right: 1rem;" @change="getChannelList" v-model="pushing" placeholder="请选择" default-first-option>
  21 + <el-option label="全部" value=""></el-option>
  22 + <el-option label="推流进行中" value="true"></el-option>
  23 + <el-option label="推流未进行" value="false"></el-option>
  24 + </el-select>
  25 + <el-button v-if="catalogId !== null" icon="el-icon-delete" size="mini" style="margin-right: 1rem;" :disabled="gbStreams.length === 0 || multipleSelection.length === 0" type="danger" @click="batchDel">批量移除</el-button>
  26 + <el-button v-if="catalogId === null" icon="el-icon-plus" size="mini" style="margin-right: 1rem;" :disabled="gbStreams.length === 0 || multipleSelection.length === 0" @click="batchAdd">批量添加</el-button>
  27 + </div>
  28 + <el-table ref="gbStreamsTable" :data="gbStreams" border style="width: 100%" :height="winHeight" :row-key="(row)=> row.app + row.stream" @selection-change="handleSelectionChange">
  29 + <el-table-column align="center" type="selection" :reserve-selection="true" width="55">
  30 + </el-table-column>
4 <el-table-column prop="name" label="名称" show-overflow-tooltip align="center"> 31 <el-table-column prop="name" label="名称" show-overflow-tooltip align="center">
5 </el-table-column> 32 </el-table-column>
6 <el-table-column prop="app" label="应用名" show-overflow-tooltip align="center"> 33 <el-table-column prop="app" label="应用名" show-overflow-tooltip align="center">
@@ -20,18 +47,21 @@ @@ -20,18 +47,21 @@
20 <el-table-column label="操作" width="100" align="center" fixed="right" > 47 <el-table-column label="操作" width="100" align="center" fixed="right" >
21 <template slot-scope="scope"> 48 <template slot-scope="scope">
22 <el-button-group> 49 <el-button-group>
23 - <el-button size="mini" icon="el-icon-plus" v-if="!scope.row.platformId" @click="add(scope.row)">添加</el-button>  
24 - <el-button size="mini" icon="el-icon-delete" v-if="scope.row.platformId" type="danger" @click="remove(scope.row)">移除</el-button> 50 + <el-button size="mini" icon="el-icon-plus" v-if="!scope.row.platformId" @click="add(scope.row, scope)">添加</el-button>
  51 + <el-button size="mini" icon="el-icon-delete" v-if="scope.row.platformId" type="danger" @click="remove(scope.row, scope)">移除</el-button>
25 </el-button-group> 52 </el-button-group>
26 </template> 53 </template>
27 </el-table-column> 54 </el-table-column>
28 </el-table> 55 </el-table>
29 <el-pagination style="float: right;margin-top: 1rem;" @size-change="handleSizeChange" @current-change="currentChange" :current-page="currentPage" :page-size="count" :page-sizes="[10, 20, 30, 50]" layout="total, sizes, prev, pager, next" :total="total"> 56 <el-pagination style="float: right;margin-top: 1rem;" @size-change="handleSizeChange" @current-change="currentChange" :current-page="currentPage" :page-size="count" :page-sizes="[10, 20, 30, 50]" layout="total, sizes, prev, pager, next" :total="total">
30 </el-pagination> 57 </el-pagination>
  58 + <getCatalog ref="getCatalog" :platformId="platformId" ></getCatalog>
31 </div> 59 </div>
32 </template> 60 </template>
33 61
34 <script> 62 <script>
  63 +import MediaServer from './../service/MediaServer'
  64 +import getCatalog from './getCatalog'
35 export default { 65 export default {
36 name: 'chooseChannelFoStream', 66 name: 'chooseChannelFoStream',
37 computed: { 67 computed: {
@@ -43,73 +73,81 @@ export default { @@ -43,73 +73,81 @@ export default {
43 // }; 73 // };
44 // } 74 // }
45 }, 75 },
46 - props: ['platformId', 'catalogId', 'updateChoosedCallback'], 76 + props: ['platformId', 'catalogId', 'catalogName'],
47 created() { 77 created() {
48 this.initData(); 78 this.initData();
49 }, 79 },
  80 + components: {
  81 + getCatalog,
  82 + },
50 data() { 83 data() {
51 return { 84 return {
52 gbStreams: [], 85 gbStreams: [],
53 gbChoosechannel:{}, 86 gbChoosechannel:{},
54 - searchSrt: "",  
55 channelType: "", 87 channelType: "",
56 online: "", 88 online: "",
57 choosed: "", 89 choosed: "",
58 currentPage: 1, 90 currentPage: 1,
59 count: 10, 91 count: 10,
60 total: 0, 92 total: 0,
61 - eventEnanle: false, 93 + searchSrt: "",
  94 + pushing: "",
  95 + mediaServerId: "",
  96 + mediaServerList: [],
  97 + mediaServerObj : new MediaServer(),
  98 + eventEnable: false,
  99 + multipleSelection: [],
62 winHeight: window.innerHeight - 350, 100 winHeight: window.innerHeight - 350,
63 101
64 }; 102 };
65 }, 103 },
66 watch:{ 104 watch:{
67 platformId(newData, oldData){ 105 platformId(newData, oldData){
68 - console.log(newData)  
69 - this.initData()  
70 - 106 + this.getChannelList()
  107 + },
  108 + catalogId(newData, oldData){
  109 + this.getChannelList()
71 }, 110 },
72 }, 111 },
73 methods: { 112 methods: {
74 initData: function() { 113 initData: function() {
  114 + this.mediaServerObj.getOnlineMediaServerList((data)=>{
  115 + this.mediaServerList = data.data;
  116 + })
75 this.getChannelList(); 117 this.getChannelList();
76 }, 118 },
77 currentChange: function (val) { 119 currentChange: function (val) {
78 this.currentPage = val; 120 this.currentPage = val;
79 - this.initData(); 121 + this.getChannelList();
80 }, 122 },
81 handleSizeChange: function (val) { 123 handleSizeChange: function (val) {
82 this.count = val; 124 this.count = val;
83 console.log(val) 125 console.log(val)
84 - this.initData(); 126 + this.getChannelList();
85 127
86 }, 128 },
87 - rowcheckedChanage: function (val, row) {  
88 - console.log(val)  
89 - console.log(row)  
90 - },  
91 - add: function (row) {  
92 - console.log(row)  
93 - row.catalogId = this.catalogId  
94 - row.platformId = this.platformId  
95 - this.$axios({  
96 - method:"post",  
97 - url:"/api/gbStream/add",  
98 - data:{  
99 - platformId: this.platformId,  
100 - catalogId: this.catalogId,  
101 - gbStreams: [row],  
102 - }  
103 - }).then((res)=>{  
104 - console.log("保存成功")  
105 - if(this.updateChoosedCallback)this.updateChoosedCallback(this.catalogId)  
106 - }).catch(function (error) {  
107 - console.log(error);  
108 - });  
109 - },  
110 - remove: function (row) {  
111 - console.log(row) 129 + add: function (row, scope) {
  130 + this.getCatalogFromUser((catalogId)=>{
  131 + this.$axios({
  132 + method:"post",
  133 + url:"/api/gbStream/add",
  134 + data:{
  135 + platformId: this.platformId,
  136 + catalogId: catalogId,
  137 + gbStreams: [row],
  138 + }
  139 + }).then((res)=>{
  140 + console.log("保存成功")
  141 + // this.gbStreams.splice(scope.$index,1)
  142 + this.getChannelList();
  143 + }).catch(function (error) {
  144 + console.log(error);
  145 + });
  146 + })
  147 +
112 148
  149 + },
  150 + remove: function (row, scope) {
113 this.$axios({ 151 this.$axios({
114 method:"delete", 152 method:"delete",
115 url:"/api/gbStream/del", 153 url:"/api/gbStream/del",
@@ -119,92 +157,12 @@ export default { @@ -119,92 +157,12 @@ export default {
119 } 157 }
120 }).then((res)=>{ 158 }).then((res)=>{
121 console.log("移除成功") 159 console.log("移除成功")
122 - if(this.updateChoosedCallback)this.updateChoosedCallback(row.catalogId)  
123 - row.platformId = null;  
124 - row.catalogId = null 160 + // this.gbStreams.splice(scope.$index,1)
  161 + this.getChannelList();
125 }).catch(function (error) { 162 }).catch(function (error) {
126 console.log(error); 163 console.log(error);
127 }); 164 });
128 }, 165 },
129 - checkedChanage: function (val) {  
130 - var that = this;  
131 - if (!that.eventEnanle) {  
132 - return;  
133 - }  
134 -  
135 - var newData = {};  
136 - var addData = [];  
137 - var delData = [];  
138 - if (val.length > 0) {  
139 - for (let i = 0; i < val.length; i++) {  
140 - const element = val[i];  
141 - var key = element.app + "_" + element.stream;  
142 - newData[key] = element;  
143 - if (!!!that.gbChoosechannel[key]){  
144 - addData.push(element)  
145 - }else{  
146 - delete that.gbChoosechannel[key]  
147 - }  
148 - }  
149 -  
150 - var oldKeys = Object.keys(that.gbChoosechannel);  
151 - if (oldKeys.length > 0) {  
152 - for (let i = 0; i < oldKeys.length; i++) {  
153 - const key = oldKeys[i];  
154 - delData.push(that.gbChoosechannel[key])  
155 - }  
156 - }  
157 -  
158 - }else{  
159 - var oldKeys = Object.keys(that.gbChoosechannel);  
160 - if (oldKeys.length > 0) {  
161 - for (let i = 0; i < oldKeys.length; i++) {  
162 - const key = oldKeys[i];  
163 - delData.push(that.gbChoosechannel[key])  
164 - }  
165 - }  
166 - }  
167 -  
168 - that.gbChoosechannel = newData;  
169 - if (Object.keys(addData).length >0) {  
170 - console.log(addData)  
171 - that.$axios({  
172 - method:"post",  
173 - url:"/api/gbStream/add",  
174 - data:{  
175 - platformId: that.platformId,  
176 - catalogId: that.catalogId,  
177 - gbStreams: addData,  
178 - }  
179 - }).then((res)=>{  
180 - console.log("保存成功")  
181 - if(this.updateChoosedCallback)this.updateChoosedCallback(this.catalogId)  
182 - }).catch(function (error) {  
183 - console.log(error);  
184 - });  
185 - }  
186 - if (Object.keys(delData).length >0) {  
187 - console.log(delData)  
188 - that.$axios({  
189 - method:"delete",  
190 - url:"/api/gbStream/del",  
191 - data:{  
192 - platformId: that.platformId,  
193 - gbStreams: delData,  
194 - }  
195 - }).then((res)=>{  
196 - console.log("移除成功")  
197 - if(this.updateChoosedCallback)this.updateChoosedCallback(this.catalogId)  
198 - }).catch(function (error) {  
199 - console.log(error);  
200 - });  
201 -  
202 - }  
203 -  
204 - },  
205 - shareAllCheckedChanage: function (val) {  
206 - this.chooseChanage(null, val)  
207 - },  
208 getChannelList: function () { 166 getChannelList: function () {
209 let that = this; 167 let that = this;
210 168
@@ -215,10 +173,10 @@ export default { @@ -215,10 +173,10 @@ export default {
215 page: that.currentPage, 173 page: that.currentPage,
216 count: that.count, 174 count: that.count,
217 query: that.searchSrt, 175 query: that.searchSrt,
218 - online: that.online,  
219 - choosed: that.choosed, 176 + pushing: that.online,
220 platformId: that.platformId, 177 platformId: that.platformId,
221 - channelType: that.channelType 178 + catalogId: that.catalogId,
  179 + mediaServerId: that.mediaServerId
222 } 180 }
223 }) 181 })
224 .then(function (res) { 182 .then(function (res) {
@@ -229,29 +187,62 @@ export default { @@ -229,29 +187,62 @@ export default {
229 that.$nextTick(() => { 187 that.$nextTick(() => {
230 that.$refs.gbStreamsTable.doLayout(); 188 that.$refs.gbStreamsTable.doLayout();
231 // 默认选中 189 // 默认选中
232 - var chooseGBS = [];  
233 - for (let i = 0; i < res.data.list.length; i++) {  
234 - const row = res.data.list[i];  
235 - console.log(row.platformId)  
236 - if (row.platformId == that.platformId) {  
237 - that.$refs.gbStreamsTable.toggleRowSelection(row, true);  
238 - chooseGBS.push(row)  
239 - that.gbChoosechannel[row.app+ "_" + row.stream] = row;  
240 -  
241 - }  
242 - }  
243 - that.eventEnanle = true;  
244 - // that.checkedChanage(chooseGBS) 190 + that.eventEnable = true;
245 }) 191 })
246 - console.log(that.gbChoosechannel)  
247 }) 192 })
248 .catch(function (error) { 193 .catch(function (error) {
249 console.log(error); 194 console.log(error);
250 }); 195 });
251 196
252 }, 197 },
253 - handleGBSelectionChange: function() {  
254 - this.initData(); 198 + batchDel: function() {
  199 + this.$confirm(`确认这${this.multipleSelection.length}个通道吗?`, '提示', {
  200 + confirmButtonText: '确定',
  201 + cancelButtonText: '取消',
  202 + type: 'warning'
  203 + }).then(() => {
  204 + this.$axios({
  205 + method:"delete",
  206 + url:"/api/gbStream/del",
  207 + data:{
  208 + platformId: this.platformId,
  209 + gbStreams: this.multipleSelection,
  210 + }
  211 + }).then((res)=>{
  212 + console.log("移除成功")
  213 + this.$refs.gbStreamsTable.clearSelection()
  214 + this.getChannelList();
  215 + }).catch(function (error) {
  216 + console.log(error);
  217 + });
  218 + }).catch(() => {
  219 + });
  220 +
  221 + },
  222 + batchAdd: function() {
  223 + this.getCatalogFromUser((catalogId)=>{
  224 + this.$axios({
  225 + method:"post",
  226 + url:"/api/gbStream/add",
  227 + data:{
  228 + platformId: this.platformId,
  229 + catalogId: catalogId,
  230 + gbStreams: this.multipleSelection,
  231 + }
  232 + }).then((res)=>{
  233 + console.log("保存成功")
  234 + this.$refs.gbStreamsTable.clearSelection()
  235 + this.getChannelList();
  236 + }).catch(function (error) {
  237 + console.log(error);
  238 + });
  239 + })
  240 + },
  241 + getCatalogFromUser(callback){
  242 + this.$refs.getCatalog.openDialog(callback)
  243 + },
  244 + handleSelectionChange: function (val) {
  245 + this.multipleSelection = val;
255 }, 246 },
256 } 247 }
257 }; 248 };
web_src/src/components/dialog/getCatalog.vue 0 → 100644
  1 +<template>
  2 +<div id="getCatalog" >
  3 +
  4 + <el-dialog title="选择要添加到的节点" v-if="showDialog" width="50%" :append-to-body="true" :close-on-click-modal="false" :visible.sync="showDialog" :destroy-on-close="true" @close="close()" center>
  5 + <div>
  6 + <el-tree class="el-scrollbar"
  7 + ref="tree"
  8 + id="catalogTree"
  9 + empty-text="未知节点"
  10 + node-key="id"
  11 + default-expand-all
  12 + :highlight-current="false"
  13 + :expand-on-click-node="false"
  14 + :props="props"
  15 + :load="loadNode"
  16 + @node-click="nodeClickHandler"
  17 + lazy>
  18 + <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%">
  19 + <el-radio v-if="node.data.type === 0 || node.data.type === -1" style="margin-right: 0" v-model="chooseId" :label="node.data.id">{{''}}</el-radio>
  20 + <span v-if="node.data.type === -1 && node.level === 1" style="font-size: 12px" class="iconfont icon-ziyuan"></span>
  21 + <span v-if="node.data.type === 0 && node.level === 1" class="el-icon-s-home"></span>
  22 + <span v-if="node.data.type === 0 && node.level > 1" class="el-icon-folder-opened"></span>
  23 + <span v-if="node.data.type === 1" class="iconfont icon-shexiangtou"></span>
  24 + <span v-if="node.data.type === 2" class="iconfont icon-zhibo"></span>
  25 + <span style=" padding-left: 1px">{{ node.label }}</span>
  26 + <span>
  27 + <i style="margin-left: 5rem; color: #9d9d9d; padding-right: 20px" v-if="node.data.id === defaultCatalogIdSign">默认</i>
  28 + </span>
  29 + </span>
  30 + </el-tree>
  31 + </div>
  32 + <div style="float: right; height: 13rem">
  33 + <el-button type="primary" size="mini" @click="submit()" >确认</el-button>
  34 + <el-button @click="close()" size="mini">取消</el-button>
  35 + </div>
  36 + </el-dialog>
  37 +
  38 +</div>
  39 +</template>
  40 +
  41 +
  42 +<script>
  43 +
  44 +export default {
  45 + name: 'getCatalog',
  46 + beforeCreate(){
  47 +
  48 + },
  49 + created() {
  50 + this.chooseId = this.defaultCatalogId;
  51 + this.defaultCatalogIdSign = this.defaultCatalogId;
  52 + this.initData();
  53 + setTimeout(()=>{
  54 + if (this.catalogIdChange)this.catalogIdChange(this.defaultCatalogId);
  55 + }, 100)
  56 +
  57 + },
  58 + props: ['platformId'],
  59 + data() {
  60 + return {
  61 + props: {
  62 + label: 'name',
  63 + children: 'children',
  64 + isLeaf: 'leaf'
  65 + },
  66 + platformName: null,
  67 + defaultCatalogId: null,
  68 + catalogIdResult: null,
  69 + showDialog: false,
  70 + defaultCatalogIdSign: null,
  71 + chooseNode: null,
  72 + chooseId: "",
  73 + catalogTree: null,
  74 + contextmenuShow: false,
  75 +
  76 + };
  77 + },
  78 + methods: {
  79 + openDialog(catalogIdResult) {
  80 + this.showDialog = true
  81 + this.catalogIdResult = catalogIdResult
  82 + },
  83 + initData: function () {
  84 + this.getCatalog();
  85 + },
  86 +
  87 + getCatalog: function(parentId, callback) {
  88 + let that = this;
  89 + this.$axios({
  90 + method:"get",
  91 + url:`/api/platform/catalog`,
  92 + params: {
  93 + platformId: that.platformId,
  94 + parentId: parentId
  95 + }
  96 + })
  97 + .then((res)=> {
  98 + if (res.data.code === 0) {
  99 + if (typeof(callback) === 'function') {
  100 + callback(res.data.data)
  101 + }
  102 + }
  103 + })
  104 + .catch(function (error) {
  105 + console.log(error);
  106 + });
  107 +
  108 + },
  109 + loadNode: function(node, resolve){
  110 +
  111 +
  112 +
  113 + if (node.level === 0) {
  114 + this.$axios({
  115 + method:"get",
  116 + url:`/api/platform/info/` + this.platformId,
  117 + })
  118 + .then((res)=> {
  119 + if (res.data.code === 0) {
  120 + this.platformName = res.data.data.name;
  121 + this.defaultCatalogId = res.data.data.catalogId;
  122 + resolve([
  123 + {
  124 + name: "未分配",
  125 + id: null,
  126 + type: -1
  127 + },{
  128 + name: this.platformName,
  129 + id: this.platformId,
  130 + type: 0
  131 + }
  132 + ]);
  133 + }
  134 + })
  135 + .catch(function (error) {
  136 + console.log(error);
  137 + });
  138 + }
  139 + if (node.level >= 1){
  140 + this.getCatalog(node.data.id, resolve)
  141 + }
  142 + },
  143 + nodeClickHandler: function (data, node, tree){
  144 + this.chooseId = data.id;
  145 + },
  146 + close: function() {
  147 + this.showDialog = false;
  148 + },
  149 + submit: function() {
  150 + if (this.catalogIdResult)this.catalogIdResult(this.chooseId)
  151 + this.showDialog = false;
  152 + },
  153 + }
  154 +};
  155 +</script>
  156 +
  157 +<style>
  158 +#catalogTree{
  159 + display: inline-block;
  160 +}
  161 +</style>
web_src/static/css/iconfont.css
1 @font-face { 1 @font-face {
2 font-family: "iconfont"; /* Project id 1291092 */ 2 font-family: "iconfont"; /* Project id 1291092 */
3 - src: url('iconfont.woff2?t=1640922722742') format('woff2'),  
4 - url('iconfont.woff?t=1640922722742') format('woff'),  
5 - url('iconfont.ttf?t=1640922722742') format('truetype'); 3 + src: url('iconfont.woff2?t=1644809302709') format('woff2'),
  4 + url('iconfont.woff?t=1644809302709') format('woff'),
  5 + url('iconfont.ttf?t=1644809302709') format('truetype');
6 } 6 }
7 7
8 .iconfont { 8 .iconfont {
@@ -13,6 +13,14 @@ @@ -13,6 +13,14 @@
13 -moz-osx-font-smoothing: grayscale; 13 -moz-osx-font-smoothing: grayscale;
14 } 14 }
15 15
  16 +.icon-ziyuan:before {
  17 + content: "\e7d5";
  18 +}
  19 +
  20 +.icon-shexiangtou1:before {
  21 + content: "\e7d4";
  22 +}
  23 +
16 .icon-wxbzhuye:before { 24 .icon-wxbzhuye:before {
17 content: "\e7d1"; 25 content: "\e7d1";
18 } 26 }
web_src/static/css/iconfont.woff2
No preview for this file type
web_src/static/favicon.ico 0 → 100644
No preview for this file type