From d4ae8194eb87271423aba24bab0f0d815d5ffdc1 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 13 十月 2020 14:46:47 +0800 Subject: [PATCH] 离在线状态样式修改 修复未回复200ok导致catalog一直发送的bug 修改点播接口未收到视频后回复 --- src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java | 16 +- src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java | 15 +- src/main/java/com/genersoft/iot/vmp/storager/jdbc/VideoManagerJdbcStoragerImpl.java | 24 +++- src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java | 16 ++ web_src/src/components/channelList.vue | 23 +++- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 17 +- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 36 ++++++ src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java | 58 +++++++---- web_src/src/components/videoList.vue | 6 web_src/src/components/gb28181/devicePlayer.vue | 1 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 5 src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java | 42 +++++-- 12 files changed, 179 insertions(+), 80 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java index 6e876be..0e7da44 100644 --- a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java @@ -3,11 +3,13 @@ public class StreamInfo { private String ssrc; + private String deviceID; + private String cahnnelId; private String flv; - private String WS_FLV; - private String RTMP; - private String HLS; - private String RTSP; + private String ws_flv; + private String rtmp; + private String hls; + private String rtsp; public String getSsrc() { return ssrc; @@ -25,35 +27,51 @@ this.flv = flv; } - public String getWS_FLV() { - return WS_FLV; + public String getWs_flv() { + return ws_flv; } - public void setWS_FLV(String WS_FLV) { - this.WS_FLV = WS_FLV; + public void setWs_flv(String ws_flv) { + this.ws_flv = ws_flv; } - public String getRTMP() { - return RTMP; + public String getRtmp() { + return rtmp; } - public void setRTMP(String RTMP) { - this.RTMP = RTMP; + public void setRtmp(String rtmp) { + this.rtmp = rtmp; } - public String getHLS() { - return HLS; + public String getHls() { + return hls; } - public void setHLS(String HLS) { - this.HLS = HLS; + public void setHls(String hls) { + this.hls = hls; } - public String getRTSP() { - return RTSP; + public String getRtsp() { + return rtsp; } - public void setRTSP(String RTSP) { - this.RTSP = RTSP; + public void setRtsp(String rtsp) { + this.rtsp = rtsp; + } + + public String getDeviceID() { + return deviceID; + } + + public void setDeviceID(String deviceID) { + this.deviceID = deviceID; + } + + public String getCahnnelId() { + return cahnnelId; + } + + public void setCahnnelId(String cahnnelId) { + this.cahnnelId = cahnnelId; } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index 3a971a7..481bb43 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -242,14 +242,15 @@ StreamInfo streamInfo = new StreamInfo(); streamInfo.setSsrc(ssrc); // String streamId = Integer.toHexString(Integer.parseInt(streamInfo.getSsrc())); - String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase(); // ZLM 瑕佹眰澶у啓涓旈浣嶈ˉ闆� - streamInfo.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); - streamInfo.setWS_FLV(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); - streamInfo.setRTMP(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId)); - streamInfo.setHLS(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); - streamInfo.setRTSP(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId)); - - storager.startPlay(device.getDeviceId(), channelId, streamInfo); +// String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase(); // ZLM 瑕佹眰澶у啓涓旈浣嶈ˉ闆� +// streamInfo.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); +// streamInfo.setWS_FLV(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); +// streamInfo.setRTMP(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId)); +// streamInfo.setHLS(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); +// streamInfo.setRTSP(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId)); + streamInfo.setCahnnelId(channelId); + streamInfo.setDeviceID(device.getDeviceId()); + storager.startPlay(streamInfo); return streamInfo; } catch ( SipException | ParseException | InvalidArgumentException e) { e.printStackTrace(); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java index 0dfcdb0..774cd60 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java @@ -210,8 +210,11 @@ msg.setType(DeferredResultHolder.CALLBACK_CMD_CATALOG); msg.setData(device); deferredResultHolder.invokeResult(msg); + + // 鍥炲200 + responseAck(evt); } - } catch (DocumentException e) { + } catch (DocumentException | SipException | InvalidArgumentException | ParseException e) { e.printStackTrace(); } } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index 2d6b8e7..22ebe52 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -1,11 +1,13 @@ package com.genersoft.iot.vmp.media.zlm; import java.math.BigInteger; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.MediaServerConfig; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import com.genersoft.iot.vmp.utils.IpUtil; @@ -35,7 +37,8 @@ public class ZLMHttpHookListener { private final static Logger logger = LoggerFactory.getLogger(ZLMHttpHookListener.class); - + + @Autowired private SIPCommander cmder; @@ -54,7 +57,7 @@ logger.debug("ZLM HOOK on_flow_report API璋冪敤锛屽弬鏁帮細" + json.toString()); } // TODO Auto-generated method stub - + JSONObject ret = new JSONObject(); ret.put("code", 0); @@ -113,6 +116,21 @@ if (logger.isDebugEnabled()) { logger.debug("ZLM HOOK on_publish API璋冪敤锛屽弬鏁帮細" + json.toString()); } + String app = json.getString("app"); + String streamId = json.getString("id"); +// String ssrc = String.format("%10d", Integer.parseInt(streamId, 16)); // ZLM 瑕佹眰澶у啓涓旈浣嶈ˉ闆� + String ssrc = new DecimalFormat("0000000000").format(Integer.parseInt(streamId, 16)); + StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc); + if ("rtp".equals(app) && streamInfo != null ) { + MediaServerConfig mediaInfo = storager.getMediaInfo(); + streamInfo.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); + streamInfo.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); + streamInfo.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId)); + streamInfo.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId)); + streamInfo.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId)); + storager.startPlay(streamInfo); + } + // TODO Auto-generated method stub JSONObject ret = new JSONObject(); @@ -213,8 +231,18 @@ if (logger.isDebugEnabled()) { logger.debug("ZLM HOOK on_stream_changed API璋冪敤锛屽弬鏁帮細" + json.toString()); } - // TODO Auto-generated method stub - + // 娴佹秷澶辩Щ闄edis play + String app = json.getString("app"); + String streamId = json.getString("stream"); + boolean regist = json.getBoolean("regist"); +// String ssrc = String.format("%10d", Integer.parseInt(streamId, 16)); // ZLM 瑕佹眰澶у啓涓旈浣嶈ˉ闆� + String ssrc = new DecimalFormat("0000000000").format(Integer.parseInt(streamId, 16)); + StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc); + if ("rtp".equals(app) && !regist ) { + storager.stopPlay(streamInfo); + } + + JSONObject ret = new JSONObject(); ret.put("code", 0); ret.put("msg", "success"); diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java index fd0a665..8381738 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java @@ -136,30 +136,24 @@ /** * 寮�濮嬫挱鏀炬椂灏嗘祦瀛樺叆 * - * @param deviceId 璁惧ID - * @param channelId 閫氶亾ID * @param stream 娴佷俊鎭� * @return */ - public boolean startPlay(String deviceId, String channelId, StreamInfo stream); + public boolean startPlay(StreamInfo stream); /** * 鍋滄鎾斁鏃跺垹闄� * - * @param deviceId 璁惧ID - * @param channelId 閫氶亾ID * @return */ - public boolean stopPlay(String deviceId, String channelId); + public boolean stopPlay(StreamInfo streamInfo); /** * 鏌ユ壘瑙嗛娴� * - * @param deviceId 璁惧ID - * @param channelId 閫氶亾ID * @return */ - public StreamInfo queryPlay(String deviceId, String channelId); + public StreamInfo queryPlay(StreamInfo streamInfo); /** * 鏌ヨ瀛愯澶� @@ -182,4 +176,8 @@ * @param deviceId */ void cleanChannelsForDevice(String deviceId); + + StreamInfo queryPlayBySSRC(String ssrc); + + StreamInfo queryPlayByDevice(String deviceId, String code); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/jdbc/VideoManagerJdbcStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/jdbc/VideoManagerJdbcStoragerImpl.java index 272912f..c3a18b7 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/jdbc/VideoManagerJdbcStoragerImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/jdbc/VideoManagerJdbcStoragerImpl.java @@ -148,17 +148,12 @@ } @Override - public boolean startPlay(String deviceId, String channelId, StreamInfo stream) { + public boolean stopPlay(StreamInfo streamInfo) { return false; } @Override - public boolean stopPlay(String deviceId, String channelId) { - return false; - } - - @Override - public StreamInfo queryPlay(String deviceId, String channelId) { + public StreamInfo queryPlay(StreamInfo streamInfo) { return null; } @@ -176,4 +171,19 @@ public void cleanChannelsForDevice(String deviceId) { } + + @Override + public boolean startPlay(StreamInfo stream) { + return false; + } + + @Override + public StreamInfo queryPlayBySSRC(String ssrc) { + return null; + } + + @Override + public StreamInfo queryPlayByDevice(String deviceId, String code) { + return null; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java index 1acd15c..5ca8b1c 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java @@ -329,40 +329,53 @@ /** * 寮�濮嬫挱鏀炬椂灏嗘祦瀛樺叆redis * - * @param deviceId 璁惧ID - * @param channelId 閫氶亾ID * @return */ @Override - public boolean startPlay(String deviceId, String channelId, StreamInfo stream) { - return redis.set(String.format("%S_%s_%s", VideoManagerConstants.PLAYER_PREFIX, deviceId, channelId), + public boolean startPlay(StreamInfo stream) { + return redis.set(String.format("%S_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, stream.getSsrc(),stream.getDeviceID(), stream.getCahnnelId()), stream); } /** * 鍋滄鎾斁鏃朵粠redis鍒犻櫎 * - * @param deviceId 璁惧ID - * @param channelId 閫氶亾ID * @return */ @Override - public boolean stopPlay(String deviceId, String channelId) { - return redis.del(String.format("%S_%s_%s", VideoManagerConstants.PLAYER_PREFIX, deviceId, channelId)); + public boolean stopPlay(StreamInfo streamInfo) { + return redis.del(String.format("%S_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, + streamInfo.getSsrc(), + streamInfo.getDeviceID(), + streamInfo.getCahnnelId())); } /** * 鏌ヨ鎾斁鍒楄〃 - * @param deviceId 璁惧ID - * @param channelId 閫氶亾ID * @return */ @Override - public StreamInfo queryPlay(String deviceId, String channelId) { - return (StreamInfo)redis.get(String.format("%S_%s_%s", VideoManagerConstants.PLAYER_PREFIX, deviceId, channelId)); + public StreamInfo queryPlay(StreamInfo streamInfo) { + return (StreamInfo)redis.get(String.format("%S_%s_%s_%s", + VideoManagerConstants.PLAYER_PREFIX, + streamInfo.getSsrc(), + streamInfo.getDeviceID(), + streamInfo.getCahnnelId())); + } + @Override + public StreamInfo queryPlayBySSRC(String ssrc) { + List<Object> playLeys = redis.keys(String.format("%S_%s_*", VideoManagerConstants.PLAYER_PREFIX, ssrc)); + if (playLeys.size() == 0) return null; + return (StreamInfo)redis.get(playLeys.get(0).toString()); } - + @Override + public StreamInfo queryPlayByDevice(String deviceId, String code) { + List<Object> playLeys = redis.keys(String.format("%S_*_%s_%s", VideoManagerConstants.PLAYER_PREFIX, + deviceId, + code)); + return (StreamInfo)redis.get(playLeys.get(0).toString()); + } /** * 鏇存柊娴佸獟浣撲俊鎭� @@ -423,4 +436,7 @@ } } } + + + } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java index b7d6101..64bcf34 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java @@ -37,7 +37,18 @@ Device device = storager.queryVideoDevice(deviceId); StreamInfo streamInfo = cmder.playStreamCmd(device, channelId); - + // 绛夊緟鎺ㄦ祦, TODO 榛樿瓒呮椂15s + + long startTime = System.currentTimeMillis(); + while (storager.queryPlay(streamInfo) == null || storager.queryPlay(streamInfo).getFlv() == null) { + try { + if (System.currentTimeMillis() - startTime > 15 * 1000) + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + streamInfo = storager.queryPlay(streamInfo); if (logger.isDebugEnabled()) { logger.debug(String.format("璁惧棰勮 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s",deviceId, channelId)); logger.debug("璁惧棰勮 API璋冪敤锛宻src锛�"+streamInfo.getSsrc()+",ZLMedia streamId:"+Integer.toHexString(Integer.parseInt(streamInfo.getSsrc()))); @@ -55,7 +66,8 @@ public ResponseEntity<String> playStop(@PathVariable String ssrc){ cmder.streamByeCmd(ssrc); - + StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc); + storager.stopPlay(streamInfo); if (logger.isDebugEnabled()) { logger.debug(String.format("璁惧棰勮鍋滄API璋冪敤锛宻src锛�%s", ssrc)); } diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java b/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java index d2644f3..8d845b1 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java @@ -70,7 +70,7 @@ return result; } // 鏌ヨ鏄惁宸茬粡鍦ㄦ挱鏀� - StreamInfo streamInfo = storager.queryPlay(device.getDeviceId(), code); + StreamInfo streamInfo = storager.queryPlayByDevice(device.getDeviceId(), code); if (streamInfo == null) streamInfo = cmder.playStreamCmd(device, code); if (logger.isDebugEnabled()) { @@ -86,10 +86,10 @@ result.put("ChannelName", deviceChannel.getName()); result.put("ChannelCustomName ", ""); result.put("FLV ", streamInfo.getFlv()); - result.put("WS_FLV ", streamInfo.getWS_FLV()); - result.put("RTMP", streamInfo.getRTMP()); - result.put("HLS", streamInfo.getHLS()); - result.put("RTSP", streamInfo.getRTSP()); + result.put("WS_FLV ", streamInfo.getWs_flv()); + result.put("RTMP", streamInfo.getRtmp()); + result.put("HLS", streamInfo.getHls()); + result.put("RTSP", streamInfo.getRtsp()); result.put("CDN", ""); result.put("SnapURL", ""); result.put("Transport", device.getTransport()); @@ -135,14 +135,14 @@ @RequestParam(required = false)String check_outputs ){ - StreamInfo streamInfo = storager.queryPlay(serial, code); + StreamInfo streamInfo = storager.queryPlayByDevice(serial, code); if (streamInfo == null) { JSONObject result = new JSONObject(); result.put("error","鏈壘鍒版祦淇℃伅"); return result; } cmder.streamByeCmd(streamInfo.getSsrc()); - storager.stopPlay(serial, code); + storager.stopPlay(streamInfo); return null; } @@ -151,7 +151,6 @@ * @param serial 璁惧缂栧彿 * @param channel 閫氶亾搴忓彿 * @param code 閫氶亾鍥芥爣缂栧彿 - * @param check_outputs * @return */ @RequestMapping(value = "/touch") diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue index 5cd108e..7a1e0e2 100644 --- a/web_src/src/components/channelList.vue +++ b/web_src/src/components/channelList.vue @@ -35,8 +35,16 @@ </el-table-column> <el-table-column prop="subCount" label="瀛愯妭鐐规暟"> </el-table-column> - <el-table-column prop="ptztypeText" label="浜戝彴绫诲瀷"> - </el-table-column> + <el-table-column label="鐘舵��" width="180" align="center"> + <template slot-scope="scope"> + <div slot="reference" class="name-wrapper"> + <el-tag size="medium" v-if="scope.row.status == 1">鍦ㄧ嚎</el-tag> + <el-tag size="medium" type="info" v-if="scope.row.status == 0">绂荤嚎</el-tag> + </div> + </template> + </el-table-column> + <el-table-column prop="ptztypeText" label="浜戝彴绫诲瀷"> + </el-table-column> <el-table-column label="鎿嶄綔" width="240" align="center" fixed="right"> <template slot-scope="scope"> <el-button size="mini" icon="el-icon-video-play" v-if="scope.row.parental == 0" @click="sendDevicePush(scope.row)">棰勮瑙嗛</el-button> @@ -58,17 +66,20 @@ </el-main> </el-container> + <Loading v-if="isLoging" marginTop="-50%"></Loading> </div> </template> <script> import devicePlayer from './gb28181/devicePlayer.vue' import uiHeader from './UiHeader.vue' + import Loading from './Loading.vue' export default { name: 'channelList', components: { devicePlayer, - uiHeader + uiHeader, + Loading }, data() { return { @@ -85,7 +96,8 @@ currentPage: parseInt(this.$route.params.page), count: parseInt(this.$route.params.count), total:0, - beforeUrl:"/videoList" + beforeUrl:"/videoList", + isLoging: false }; }, @@ -182,7 +194,7 @@ //閫氱煡璁惧涓婁紶濯掍綋娴� sendDevicePush: function(itemData) { let deviceId = this.deviceId; - + this.isLoging = true; let channelId = itemData.channelId; console.log("閫氱煡璁惧鎺ㄦ祦1锛�" + deviceId + " : " + channelId); let that = this; @@ -191,6 +203,7 @@ url: '/api/play/' + deviceId + '/' + channelId }).then(function(res) { let ssrc = res.data.ssrc; + that.isLoging = false that.$refs.devicePlayer.play(res.data,deviceId,channelId); }).catch(function(e) { }); diff --git a/web_src/src/components/gb28181/devicePlayer.vue b/web_src/src/components/gb28181/devicePlayer.vue index e193d7c..dc69adb 100644 --- a/web_src/src/components/gb28181/devicePlayer.vue +++ b/web_src/src/components/gb28181/devicePlayer.vue @@ -115,6 +115,7 @@ deviceId: '', channelId: '', tabActiveName: 'media' + }; }, methods: { diff --git a/web_src/src/components/videoList.vue b/web_src/src/components/videoList.vue index 234ddc8..efbb489 100644 --- a/web_src/src/components/videoList.vue +++ b/web_src/src/components/videoList.vue @@ -1,7 +1,6 @@ <template> <div id="app"> <el-container> - <el-header> <uiHeader></uiHeader> </el-header> @@ -37,14 +36,15 @@ <el-table-column label="鐘舵��" width="180" align="center"> <template slot-scope="scope"> <div slot="reference" class="name-wrapper"> - <el-tag size="medium">{{ scope.row.online==1?'鍦ㄧ嚎' :'绂荤嚎'}}</el-tag> + <el-tag size="medium" v-if="scope.row.online == 1">鍦ㄧ嚎</el-tag> + <el-tag size="medium" type="info" v-if="scope.row.online == 0">绂荤嚎</el-tag> </div> </template> </el-table-column> <el-table-column label="鎿嶄綔" width="240" align="center" fixed="right"> <template slot-scope="scope"> - <el-button size="mini" icon="el-icon-refresh" @click="refDevice(scope.row)">鍒锋柊</el-button> + <el-button size="mini" icon="el-icon-refresh" @click="refDevice(scope.row)">鍒锋柊閫氶亾</el-button> <el-button size="mini" icon="el-icon-s-open" type="primary" @click="showChannelList(scope.row)">鏌ョ湅閫氶亾</el-button> </template> </el-table-column> -- Gitblit v1.8.0