panlinlin
4 years ago
42 changed files with 1395 additions and 225 deletions
@ -0,0 +1,71 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.bean; |
||||
|
|
||||
|
/** |
||||
|
* 直播流关联国标上级平台 |
||||
|
*/ |
||||
|
public class GbStream extends PlatformGbStream{ |
||||
|
|
||||
|
private String app; |
||||
|
private String stream; |
||||
|
private String gbId; |
||||
|
private String name; |
||||
|
private double longitude; |
||||
|
private double latitude; |
||||
|
private String streamType; |
||||
|
|
||||
|
public String getApp() { |
||||
|
return app; |
||||
|
} |
||||
|
|
||||
|
public void setApp(String app) { |
||||
|
this.app = app; |
||||
|
} |
||||
|
|
||||
|
public String getStream() { |
||||
|
return stream; |
||||
|
} |
||||
|
|
||||
|
public void setStream(String stream) { |
||||
|
this.stream = stream; |
||||
|
} |
||||
|
|
||||
|
public String getGbId() { |
||||
|
return gbId; |
||||
|
} |
||||
|
|
||||
|
public void setGbId(String gbId) { |
||||
|
this.gbId = gbId; |
||||
|
} |
||||
|
|
||||
|
public String getName() { |
||||
|
return name; |
||||
|
} |
||||
|
|
||||
|
public void setName(String name) { |
||||
|
this.name = name; |
||||
|
} |
||||
|
|
||||
|
public double getLongitude() { |
||||
|
return longitude; |
||||
|
} |
||||
|
|
||||
|
public void setLongitude(double longitude) { |
||||
|
this.longitude = longitude; |
||||
|
} |
||||
|
|
||||
|
public double getLatitude() { |
||||
|
return latitude; |
||||
|
} |
||||
|
|
||||
|
public void setLatitude(double latitude) { |
||||
|
this.latitude = latitude; |
||||
|
} |
||||
|
|
||||
|
public String getStreamType() { |
||||
|
return streamType; |
||||
|
} |
||||
|
|
||||
|
public void setStreamType(String streamType) { |
||||
|
this.streamType = streamType; |
||||
|
} |
||||
|
} |
@ -0,0 +1,31 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.bean; |
||||
|
|
||||
|
public class PlatformGbStream { |
||||
|
private String app; |
||||
|
private String stream; |
||||
|
private String platformId; |
||||
|
|
||||
|
public String getApp() { |
||||
|
return app; |
||||
|
} |
||||
|
|
||||
|
public void setApp(String app) { |
||||
|
this.app = app; |
||||
|
} |
||||
|
|
||||
|
public String getStream() { |
||||
|
return stream; |
||||
|
} |
||||
|
|
||||
|
public void setStream(String stream) { |
||||
|
this.stream = stream; |
||||
|
} |
||||
|
|
||||
|
public String getPlatformId() { |
||||
|
return platformId; |
||||
|
} |
||||
|
|
||||
|
public void setPlatformId(String platformId) { |
||||
|
this.platformId = platformId; |
||||
|
} |
||||
|
} |
@ -0,0 +1,49 @@ |
|||||
|
package com.genersoft.iot.vmp.storager.dao; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; |
||||
|
import org.apache.ibatis.annotations.*; |
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Mapper |
||||
|
@Repository |
||||
|
public interface GbStreamMapper { |
||||
|
|
||||
|
@Insert("INSERT INTO gb_stream (app, stream, gbId, name, " + |
||||
|
"longitude, latitude, streamType) VALUES" + |
||||
|
"('${app}', '${stream}', '${gbId}', '${name}', " + |
||||
|
"'${longitude}', '${latitude}', '${streamType}')") |
||||
|
int add(GbStream gbStream); |
||||
|
|
||||
|
@Update("UPDATE gb_stream " + |
||||
|
"SET app=#{app}," + |
||||
|
"stream=#{stream}," + |
||||
|
"gbId=#{gbId}," + |
||||
|
"name=#{name}," + |
||||
|
"streamType=#{streamType}," + |
||||
|
"longitude=#{longitude}, " + |
||||
|
"latitude=#{latitude}, " + |
||||
|
"WHERE app=#{app} AND stream=#{stream} AND gbId=#{gbId}") |
||||
|
int update(GbStream gbStream); |
||||
|
|
||||
|
@Delete("DELETE FROM gb_stream WHERE app=#{app} AND stream=#{stream}") |
||||
|
int del(String app, String stream); |
||||
|
|
||||
|
@Select("SELECT gs.*, pgs.platformId FROM gb_stream gs LEFT JOIN platform_gb_stream pgs ON gs.app = pgs.app AND gs.stream = pgs.stream") |
||||
|
List<GbStream> selectAll(); |
||||
|
|
||||
|
@Select("SELECT * FROM gb_stream WHERE app=#{app} AND stream=#{stream}") |
||||
|
StreamProxyItem selectOne(String app, String stream); |
||||
|
|
||||
|
@Select("SELECT gs.*, pgs.platformId FROM gb_stream gs " + |
||||
|
"LEFT JOIN platform_gb_stream pgs ON gs.app = pgs.app AND gs.stream = pgs.stream " + |
||||
|
"WHERE gs.gbId = '${gbId}' AND pgs.platformId = '${platformId}'") |
||||
|
GbStream queryStreamInPlatform(String platformId, String gbId); |
||||
|
|
||||
|
@Select("SELECT gs.*, pgs.platformId FROM gb_stream gs " + |
||||
|
"LEFT JOIN platform_gb_stream pgs ON gs.app = pgs.app AND gs.stream = pgs.stream " + |
||||
|
"WHERE pgs.platformId = '${platformId}'") |
||||
|
List<GbStream> queryGbStreamListInPlatform(String platformId); |
||||
|
} |
@ -0,0 +1,28 @@ |
|||||
|
package com.genersoft.iot.vmp.storager.dao; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream; |
||||
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; |
||||
|
import org.apache.ibatis.annotations.*; |
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
@Mapper |
||||
|
@Repository |
||||
|
public interface PlarfotmGbStreamMapper { |
||||
|
|
||||
|
@Insert("INSERT INTO platform_gb_stream (app, stream, platformId) VALUES" + |
||||
|
"('${app}', '${stream}', '${platformId}')") |
||||
|
int add(PlatformGbStream platformGbStream); |
||||
|
|
||||
|
@Delete("DELETE FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream}") |
||||
|
int delByAppAndStream(String app, String stream); |
||||
|
|
||||
|
@Delete("DELETE FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream}") |
||||
|
int delByPlatformId(String platformId); |
||||
|
|
||||
|
@Select("SELECT * FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream} AND platformId=#{platformId}") |
||||
|
StreamProxyItem selectOne(String app, String stream, String platformId); |
||||
|
} |
@ -0,0 +1,65 @@ |
|||||
|
package com.genersoft.iot.vmp.vmanager.gbStream; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.alibaba.fastjson.JSONArray; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
||||
|
import com.genersoft.iot.vmp.vmanager.gbStream.bean.GbStreamParam; |
||||
|
import com.genersoft.iot.vmp.vmanager.platform.bean.UpdateChannelParam; |
||||
|
import com.genersoft.iot.vmp.vmanager.service.IGbStreamService; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@CrossOrigin |
||||
|
@RestController |
||||
|
@RequestMapping("/api/gbStream") |
||||
|
public class GbStreamController { |
||||
|
|
||||
|
private final static Logger logger = LoggerFactory.getLogger(GbStreamController.class); |
||||
|
|
||||
|
@Autowired |
||||
|
private IGbStreamService gbStreamService; |
||||
|
|
||||
|
@Autowired |
||||
|
private IVideoManagerStorager storager; |
||||
|
|
||||
|
|
||||
|
@RequestMapping(value = "/list") |
||||
|
@ResponseBody |
||||
|
public PageInfo<GbStream> list(@RequestParam(required = false)Integer page, |
||||
|
@RequestParam(required = false)Integer count){ |
||||
|
|
||||
|
return gbStreamService.getAll(page, count); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@RequestMapping(value = "/del") |
||||
|
@ResponseBody |
||||
|
public Object del(@RequestBody GbStreamParam gbStreamParam){ |
||||
|
System.out.println(2222); |
||||
|
System.out.println(gbStreamParam.getGbStreams().size()); |
||||
|
if (gbStreamService.delPlatformInfo(gbStreamParam.getGbStreams())) { |
||||
|
return "success"; |
||||
|
}else { |
||||
|
return "fail"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@RequestMapping(value = "/add") |
||||
|
@ResponseBody |
||||
|
public Object add(@RequestBody GbStreamParam gbStreamParam){ |
||||
|
System.out.println(3333); |
||||
|
System.out.println(gbStreamParam.getGbStreams().size()); |
||||
|
if (gbStreamService.addPlatformInfo(gbStreamParam.getGbStreams(), gbStreamParam.getPlatformId())) { |
||||
|
return "success"; |
||||
|
}else { |
||||
|
return "fail"; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,28 @@ |
|||||
|
package com.genersoft.iot.vmp.vmanager.gbStream.bean; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
public class GbStreamParam { |
||||
|
|
||||
|
private String platformId; |
||||
|
|
||||
|
private List<GbStream> gbStreams; |
||||
|
|
||||
|
public String getPlatformId() { |
||||
|
return platformId; |
||||
|
} |
||||
|
|
||||
|
public void setPlatformId(String platformId) { |
||||
|
this.platformId = platformId; |
||||
|
} |
||||
|
|
||||
|
public List<GbStream> getGbStreams() { |
||||
|
return gbStreams; |
||||
|
} |
||||
|
|
||||
|
public void setGbStreams(List<GbStream> gbStreams) { |
||||
|
this.gbStreams = gbStreams; |
||||
|
} |
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
package com.genersoft.iot.vmp.vmanager.platformGbStream; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream; |
||||
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
||||
|
import com.genersoft.iot.vmp.vmanager.service.IGbStreamService; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
@CrossOrigin |
||||
|
@RestController |
||||
|
@RequestMapping("/api") |
||||
|
public class PlatformGbStreamController { |
||||
|
|
||||
|
private final static Logger logger = LoggerFactory.getLogger(PlatformGbStreamController.class); |
||||
|
|
||||
|
@Autowired |
||||
|
private IGbStreamService gbStreamService; |
||||
|
|
||||
|
@Autowired |
||||
|
private IVideoManagerStorager storager; |
||||
|
|
||||
|
@RequestMapping(value = "/list") |
||||
|
@ResponseBody |
||||
|
public PageInfo<GbStream> list(@RequestParam(required = false)Integer page, |
||||
|
@RequestParam(required = false)Integer count){ |
||||
|
|
||||
|
return gbStreamService.getAll(page, count); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
package com.genersoft.iot.vmp.vmanager.service; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 级联国标平台关联流业务接口 |
||||
|
*/ |
||||
|
public interface IGbStreamService { |
||||
|
|
||||
|
/** |
||||
|
* 分页获取所有 |
||||
|
* @param page |
||||
|
* @param count |
||||
|
* @return |
||||
|
*/ |
||||
|
PageInfo<GbStream> getAll(Integer page, Integer count); |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 移除 |
||||
|
* @param app |
||||
|
* @param stream |
||||
|
*/ |
||||
|
void del(String app, String stream); |
||||
|
|
||||
|
/** |
||||
|
* 保存国标关联 |
||||
|
* @param gbStreams |
||||
|
*/ |
||||
|
boolean addPlatformInfo(List<GbStream> gbStreams, String platformId); |
||||
|
|
||||
|
/** |
||||
|
* 移除国标关联 |
||||
|
* @param gbStreams |
||||
|
*/ |
||||
|
boolean delPlatformInfo(List<GbStream> gbStreams); |
||||
|
} |
@ -0,0 +1,89 @@ |
|||||
|
package com.genersoft.iot.vmp.vmanager.service.impl; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream; |
||||
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; |
||||
|
import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; |
||||
|
import com.genersoft.iot.vmp.storager.dao.PlarfotmGbStreamMapper; |
||||
|
import com.genersoft.iot.vmp.vmanager.platform.PlatformController; |
||||
|
import com.genersoft.iot.vmp.vmanager.service.IGbStreamService; |
||||
|
import com.github.pagehelper.PageHelper; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.TransactionDefinition; |
||||
|
import org.springframework.transaction.TransactionStatus; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Service |
||||
|
public class GbStreamServiceImpl implements IGbStreamService { |
||||
|
|
||||
|
private final static Logger logger = LoggerFactory.getLogger(GbStreamServiceImpl.class); |
||||
|
|
||||
|
@Autowired |
||||
|
DataSourceTransactionManager dataSourceTransactionManager; |
||||
|
|
||||
|
@Autowired |
||||
|
TransactionDefinition transactionDefinition; |
||||
|
|
||||
|
@Autowired |
||||
|
private GbStreamMapper gbStreamMapper; |
||||
|
|
||||
|
@Autowired |
||||
|
private PlarfotmGbStreamMapper plarfotmGbStreamMapper; |
||||
|
|
||||
|
@Override |
||||
|
public PageInfo<GbStream> getAll(Integer page, Integer count) { |
||||
|
PageHelper.startPage(page, count); |
||||
|
List<GbStream> all = gbStreamMapper.selectAll(); |
||||
|
return new PageInfo<>(all); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void del(String app, String stream) { |
||||
|
gbStreamMapper.del(app, stream); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public boolean addPlatformInfo(List<GbStream> gbStreams, String platformId) { |
||||
|
// 放在事务内执行
|
||||
|
boolean result = false; |
||||
|
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); |
||||
|
try { |
||||
|
for (GbStream gbStream : gbStreams) { |
||||
|
gbStream.setPlatformId(platformId); |
||||
|
plarfotmGbStreamMapper.add(gbStream); |
||||
|
} |
||||
|
dataSourceTransactionManager.commit(transactionStatus); //手动提交
|
||||
|
result = true; |
||||
|
}catch (Exception e) { |
||||
|
logger.error("批量保存流与平台的关系时错误", e); |
||||
|
dataSourceTransactionManager.rollback(transactionStatus); |
||||
|
} |
||||
|
return result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public boolean delPlatformInfo(List<GbStream> gbStreams) { |
||||
|
// 放在事务内执行
|
||||
|
boolean result = false; |
||||
|
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); |
||||
|
try { |
||||
|
for (GbStream gbStream : gbStreams) { |
||||
|
plarfotmGbStreamMapper.delByAppAndStream(gbStream.getApp(), gbStream.getStream()); |
||||
|
} |
||||
|
dataSourceTransactionManager.commit(transactionStatus); //手动提交
|
||||
|
result = true; |
||||
|
}catch (Exception e) { |
||||
|
logger.error("批量移除流与平台的关系时错误", e); |
||||
|
dataSourceTransactionManager.rollback(transactionStatus); |
||||
|
} |
||||
|
return result; |
||||
|
} |
||||
|
} |
Binary file not shown.
@ -0,0 +1,283 @@ |
|||||
|
<template> |
||||
|
<div id="pLatformStreamList"> |
||||
|
<el-container> |
||||
|
<el-header> |
||||
|
<uiHeader></uiHeader> |
||||
|
</el-header> |
||||
|
<el-main> |
||||
|
<div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;"> |
||||
|
<span style="font-size: 1rem; font-weight: bold;">直播级联列表</span> |
||||
|
</div> |
||||
|
<div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;"> |
||||
|
<el-button icon="el-icon-plus" size="mini" style="margin-right: 1rem;" type="primary" @click="addStreamProxy">添加代理</el-button> |
||||
|
</div> |
||||
|
<devicePlayer ref="devicePlayer"></devicePlayer> |
||||
|
<el-table :data="streamProxyList" border style="width: 100%" :height="winHeight"> |
||||
|
<el-table-column prop="app" label="应用名" align="center" show-overflow-tooltip/> |
||||
|
<el-table-column prop="stream" label="流ID" align="center" show-overflow-tooltip/> |
||||
|
<el-table-column prop="gbId" label="国标平台" align="center" show-overflow-tooltip/> |
||||
|
|
||||
|
<el-table-column label="转HLS" width="120" align="center"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div slot="reference" class="name-wrapper"> |
||||
|
<el-tag size="medium" v-if="scope.row.enable_hls">已启用</el-tag> |
||||
|
<el-tag size="medium" type="info" v-if="!scope.row.enable_hls">未启用</el-tag> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="MP4录制" width="120" align="center"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div slot="reference" class="name-wrapper"> |
||||
|
<el-tag size="medium" v-if="scope.row.enable_mp4">已启用</el-tag> |
||||
|
<el-tag size="medium" type="info" v-if="!scope.row.enable_mp4">未启用</el-tag> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="启用" width="120" align="center"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div slot="reference" class="name-wrapper"> |
||||
|
<el-tag size="medium" v-if="scope.row.enable">已启用</el-tag> |
||||
|
<el-tag size="medium" type="info" v-if="!scope.row.enable">未启用</el-tag> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column label="操作" width="360" align="center" fixed="right"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button-group> |
||||
|
<el-button size="mini" icon="el-icon-video-play" v-if="scope.row.enable" @click="play(scope.row)">播放</el-button> |
||||
|
<el-button size="mini" icon="el-icon-close" type="success" v-if="scope.row.enable" @click="stop(scope.row)">停用</el-button> |
||||
|
<el-button size="mini" icon="el-icon-check" type="primary" v-if="!scope.row.enable" @click="start(scope.row)">启用</el-button> |
||||
|
<el-button size="mini" icon="el-icon-delete" type="danger" @click="deleteStreamProxy(scope.row)">删除</el-button> |
||||
|
<!-- <el-button size="mini" icon="el-icon-position" type="primary" >加入国标</el-button> --> |
||||
|
</el-button-group> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
style="float: right" |
||||
|
@size-change="handleSizeChange" |
||||
|
@current-change="currentChange" |
||||
|
:current-page="currentPage" |
||||
|
:page-size="count" |
||||
|
:page-sizes="[15, 25, 35, 50]" |
||||
|
layout="total, sizes, prev, pager, next" |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
<streamProxyEdit ref="streamProxyEdit" ></streamProxyEdit> |
||||
|
</el-main> |
||||
|
</el-container> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import streamProxyEdit from './dialog/StreamProxyEdit.vue' |
||||
|
import devicePlayer from './dialog/devicePlayer.vue' |
||||
|
import uiHeader from './UiHeader.vue' |
||||
|
export default { |
||||
|
name: 'pLatformStreamList', |
||||
|
components: { |
||||
|
devicePlayer, |
||||
|
streamProxyEdit, |
||||
|
uiHeader |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
streamProxyList: [], |
||||
|
currentPusher: {}, //当前操作设备对象 |
||||
|
updateLooper: 0, //数据刷新轮训标志 |
||||
|
currentDeviceChannelsLenth:0, |
||||
|
winHeight: window.innerHeight - 200, |
||||
|
currentPage:1, |
||||
|
count:15, |
||||
|
total:0, |
||||
|
getListLoading: false |
||||
|
}; |
||||
|
}, |
||||
|
computed: { |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initData(); |
||||
|
// this.updateLooper = setInterval(this.initData, 10000); |
||||
|
}, |
||||
|
destroyed() { |
||||
|
this.$destroy('videojs'); |
||||
|
clearTimeout(this.updateLooper); |
||||
|
}, |
||||
|
methods: { |
||||
|
initData: function() { |
||||
|
this.getStreamProxyList(); |
||||
|
}, |
||||
|
currentChange: function(val){ |
||||
|
this.currentPage = val; |
||||
|
this.getStreamProxyList(); |
||||
|
}, |
||||
|
handleSizeChange: function(val){ |
||||
|
this.count = val; |
||||
|
this.getStreamProxyList(); |
||||
|
}, |
||||
|
getStreamProxyList: function() { |
||||
|
let that = this; |
||||
|
this.getListLoading = true; |
||||
|
this.$axios.get(`/api/proxy/list`,{ |
||||
|
params: { |
||||
|
page: that.currentPage, |
||||
|
count: that.count |
||||
|
} |
||||
|
} ) |
||||
|
.then(function (res) { |
||||
|
console.log(res); |
||||
|
console.log(res.data.list); |
||||
|
that.total = res.data.total; |
||||
|
that.streamProxyList = res.data.list; |
||||
|
that.getListLoading = false; |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
that.getListLoading = false; |
||||
|
}); |
||||
|
}, |
||||
|
addStreamProxy: function(){ |
||||
|
this.$refs.streamProxyEdit.openDialog(null, this.initData) |
||||
|
}, |
||||
|
saveStreamProxy: function(){ |
||||
|
}, |
||||
|
play: function(row){ |
||||
|
let that = this; |
||||
|
this.getListLoading = true; |
||||
|
this.$axios.get(`/api/media/getStreamInfoByAppAndStream`,{ |
||||
|
params: { |
||||
|
app: row.app, |
||||
|
stream: row.stream |
||||
|
} |
||||
|
}) |
||||
|
.then(function (res) { |
||||
|
that.getListLoading = false; |
||||
|
that.$refs.devicePlayer.openDialog("streamPlay", null, null, { |
||||
|
streamInfo: res.data, |
||||
|
hasAudio: true |
||||
|
}); |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
that.getListLoading = false; |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
deleteStreamProxy: function(row){ |
||||
|
console.log(1111) |
||||
|
let that = this; |
||||
|
this.getListLoading = true; |
||||
|
this.$axios.get(`/api/proxy/del`,{ |
||||
|
params: { |
||||
|
app: row.app, |
||||
|
stream: row.stream |
||||
|
} |
||||
|
}) |
||||
|
.then(function (res) { |
||||
|
that.getListLoading = false; |
||||
|
that.initData() |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
that.getListLoading = false; |
||||
|
}); |
||||
|
}, |
||||
|
start: function(row){ |
||||
|
let that = this; |
||||
|
this.getListLoading = true; |
||||
|
this.$axios.get(`/api/proxy/start`,{ |
||||
|
params: { |
||||
|
app: row.app, |
||||
|
stream: row.stream |
||||
|
} |
||||
|
}) |
||||
|
.then(function (res) { |
||||
|
that.getListLoading = false; |
||||
|
that.initData() |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
that.getListLoading = false; |
||||
|
}); |
||||
|
}, |
||||
|
stop: function(row){ |
||||
|
let that = this; |
||||
|
this.getListLoading = true; |
||||
|
this.$axios.get(`/api/proxy/stop`,{ |
||||
|
params: { |
||||
|
app: row.app, |
||||
|
stream: row.stream |
||||
|
} |
||||
|
}) |
||||
|
.then(function (res) { |
||||
|
that.getListLoading = false; |
||||
|
that.initData() |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
that.getListLoading = false; |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
.videoList { |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
align-content: flex-start; |
||||
|
} |
||||
|
|
||||
|
.video-item { |
||||
|
position: relative; |
||||
|
width: 15rem; |
||||
|
height: 10rem; |
||||
|
margin-right: 1rem; |
||||
|
background-color: #000000; |
||||
|
} |
||||
|
|
||||
|
.video-item-img { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
margin: auto; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
.video-item-img:after { |
||||
|
content: ""; |
||||
|
display: inline-block; |
||||
|
position: absolute; |
||||
|
z-index: 2; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
margin: auto; |
||||
|
width: 3rem; |
||||
|
height: 3rem; |
||||
|
background-image: url("../assets/loading.png"); |
||||
|
background-size: cover; |
||||
|
background-color: #000000; |
||||
|
} |
||||
|
|
||||
|
.video-item-title { |
||||
|
position: absolute; |
||||
|
bottom: 0; |
||||
|
color: #000000; |
||||
|
background-color: #ffffff; |
||||
|
line-height: 1.5rem; |
||||
|
padding: 0.3rem; |
||||
|
width: 14.4rem; |
||||
|
} |
||||
|
.cpoy-btn { |
||||
|
cursor: pointer; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,215 @@ |
|||||
|
<template> |
||||
|
<div id="chooseChannelFoStream" > |
||||
|
<el-table ref="gbStreamsTable" :data="gbStreams" border style="width: 100%" @selection-change="checkedChanage" > |
||||
|
<el-table-column type="selection" width="55" align="center" fixed > </el-table-column> |
||||
|
<el-table-column prop="name" label="名称" show-overflow-tooltip> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="app" label="应用名" show-overflow-tooltip> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="stream" label="流ID" show-overflow-tooltip> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="gbId" label="国标编码" show-overflow-tooltip> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="streamType" label="流来源" align="center" show-overflow-tooltip> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="流来源" width="100" align="center"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div slot="reference" class="name-wrapper"> |
||||
|
<el-tag size="medium" v-if="scope.row.streamType == 'proxy'">拉流代理</el-tag> |
||||
|
<el-tag size="medium" v-if="scope.row.streamType == 'push'">推流</el-tag> |
||||
|
</div> |
||||
|
</template> |
||||
|
</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="[10, 20, 30, 50]" layout="total, sizes, prev, pager, next" :total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'chooseChannelFoStream', |
||||
|
props: {}, |
||||
|
computed: { |
||||
|
// getPlayerShared: function () { |
||||
|
// return { |
||||
|
// sharedUrl: window.location.host + '/' + this.videoUrl, |
||||
|
// sharedIframe: '<iframe src="' + window.location.host + '/' + this.videoUrl + '"></iframe>', |
||||
|
// sharedRtmp: this.videoUrl |
||||
|
// }; |
||||
|
// } |
||||
|
}, |
||||
|
props: ['platformId'], |
||||
|
created() { |
||||
|
this.initData(); |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
gbStreams: [], |
||||
|
gbChoosechannel:{}, |
||||
|
searchSrt: "", |
||||
|
channelType: "", |
||||
|
online: "", |
||||
|
choosed: "", |
||||
|
currentPage: 0, |
||||
|
count: 10, |
||||
|
total: 0, |
||||
|
eventEnanle: false |
||||
|
|
||||
|
}; |
||||
|
}, |
||||
|
watch:{ |
||||
|
platformId(newData, oldData){ |
||||
|
console.log(newData) |
||||
|
this.initData() |
||||
|
|
||||
|
}, |
||||
|
}, |
||||
|
methods: { |
||||
|
initData: function() { |
||||
|
this.getChannelList(); |
||||
|
}, |
||||
|
currentChange: function (val) { |
||||
|
this.currentPage = val; |
||||
|
this.initData(); |
||||
|
}, |
||||
|
handleSizeChange: function (val) { |
||||
|
this.count = val; |
||||
|
console.log(val) |
||||
|
this.initData(); |
||||
|
|
||||
|
}, |
||||
|
rowcheckedChanage: function (val, row) { |
||||
|
console.log(val) |
||||
|
console.log(row) |
||||
|
}, |
||||
|
checkedChanage: function (val) { |
||||
|
var that = this; |
||||
|
if (!that.eventEnanle) { |
||||
|
return; |
||||
|
} |
||||
|
var tabelData = JSON.parse(JSON.stringify(this.$refs.gbStreamsTable.data)); |
||||
|
console.log("checkedChanage") |
||||
|
console.log(val) |
||||
|
|
||||
|
var newData = {}; |
||||
|
var addData = []; |
||||
|
var delData = []; |
||||
|
if (val.length > 0) { |
||||
|
for (let i = 0; i < val.length; i++) { |
||||
|
const element = val[i]; |
||||
|
var key = element.app + "_" + element.stream; |
||||
|
newData[key] = element; |
||||
|
if (!!!that.gbChoosechannel[key]){ |
||||
|
addData.push(element) |
||||
|
}else{ |
||||
|
delete that.gbChoosechannel[key] |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var oldKeys = Object.keys(that.gbChoosechannel); |
||||
|
if (oldKeys.length > 0) { |
||||
|
for (let i = 0; i < oldKeys.length; i++) { |
||||
|
const key = oldKeys[i]; |
||||
|
delData.push(that.gbChoosechannel[key]) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
}else{ |
||||
|
var oldKeys = Object.keys(that.gbChoosechannel); |
||||
|
if (oldKeys.length > 0) { |
||||
|
for (let i = 0; i < oldKeys.length; i++) { |
||||
|
const key = oldKeys[i]; |
||||
|
delData.push(that.gbChoosechannel[key]) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
that.gbChoosechannel = newData; |
||||
|
if (Object.keys(addData).length >0) { |
||||
|
console.log(addData) |
||||
|
that.$axios({ |
||||
|
method:"post", |
||||
|
url:"/api/gbStream/add", |
||||
|
data:{ |
||||
|
platformId: that.platformId, |
||||
|
gbStreams: addData, |
||||
|
} |
||||
|
}).then((res)=>{ |
||||
|
console.log("保存成功") |
||||
|
}).catch(function (error) { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
} |
||||
|
if (Object.keys(delData).length >0) { |
||||
|
console.log(delData) |
||||
|
that.$axios({ |
||||
|
method:"post", |
||||
|
url:"/api/gbStream/del", |
||||
|
data:{ |
||||
|
gbStreams: delData, |
||||
|
} |
||||
|
}).then((res)=>{ |
||||
|
console.log("移除成功") |
||||
|
}).catch(function (error) { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
shareAllCheckedChanage: function (val) { |
||||
|
this.chooseChanage(null, val) |
||||
|
}, |
||||
|
getChannelList: function () { |
||||
|
let that = this; |
||||
|
|
||||
|
this.$axios.get(`/api/gbStream/list`, { |
||||
|
params: { |
||||
|
page: that.currentPage, |
||||
|
count: that.count, |
||||
|
query: that.searchSrt, |
||||
|
online: that.online, |
||||
|
choosed: that.choosed, |
||||
|
platformId: that.platformId, |
||||
|
channelType: that.channelType |
||||
|
} |
||||
|
}) |
||||
|
.then(function (res) { |
||||
|
that.total = res.data.total; |
||||
|
that.gbStreams = res.data.list; |
||||
|
that.gbChoosechannel = {}; |
||||
|
// 防止出现表格错位 |
||||
|
that.$nextTick(() => { |
||||
|
that.$refs.gbStreamsTable.doLayout(); |
||||
|
// 默认选中 |
||||
|
var chooseGBS = []; |
||||
|
for (let i = 0; i < res.data.list.length; i++) { |
||||
|
const row = res.data.list[i]; |
||||
|
console.log(row.platformId) |
||||
|
if (row.platformId == that.platformId) { |
||||
|
that.$refs.gbStreamsTable.toggleRowSelection(row, true); |
||||
|
chooseGBS.push(row) |
||||
|
that.gbChoosechannel[row.app+ "_" + row.stream] = row; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
that.eventEnanle = true; |
||||
|
// that.checkedChanage(chooseGBS) |
||||
|
}) |
||||
|
console.log(that.gbChoosechannel) |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
handleGBSelectionChange: function() { |
||||
|
this.initData(); |
||||
|
}, |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
|
||||
|
</style> |
Loading…
Reference in new issue