10 changed files with 616 additions and 10 deletions
			
			
		@ -0,0 +1,227 @@ | 
				
			|||||
 | 
					package com.genersoft.iot.vmp.gb28181.bean; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class ParentPlatform { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 是否启用 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private boolean enable; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 名称 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String name; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * SIP服务国标编码 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String serverGBId; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * SIP服务国标域 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String serverGBDomain; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * SIP服务IP | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String serverIP; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * SIP服务端口 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private int serverPort; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 设备国标编号 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String deviceGBId; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 设备ip | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String deviceIp; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 设备端口 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String devicePort; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * SIP认证用户名(默认使用设备国标编号) | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String username; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * SIP认证密码 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String password; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 注册周期 (秒) | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String expires; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 心跳周期(秒) | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String keepTimeout; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 传输协议 | 
				
			||||
 | 
					     * UDP/TCP | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String transport; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 字符集 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String characterSet; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 允许云台控制 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private boolean PTZEnable; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * RTCP流保活 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private boolean rtcp; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public boolean isEnable() { | 
				
			||||
 | 
					        return enable; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setEnable(boolean enable) { | 
				
			||||
 | 
					        this.enable = enable; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getName() { | 
				
			||||
 | 
					        return name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setName(String name) { | 
				
			||||
 | 
					        this.name = name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getServerGBId() { | 
				
			||||
 | 
					        return serverGBId; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setServerGBId(String serverGBId) { | 
				
			||||
 | 
					        this.serverGBId = serverGBId; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getServerGBDomain() { | 
				
			||||
 | 
					        return serverGBDomain; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setServerGBDomain(String serverGBDomain) { | 
				
			||||
 | 
					        this.serverGBDomain = serverGBDomain; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getServerIP() { | 
				
			||||
 | 
					        return serverIP; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setServerIP(String serverIP) { | 
				
			||||
 | 
					        this.serverIP = serverIP; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public int getServerPort() { | 
				
			||||
 | 
					        return serverPort; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setServerPort(int serverPort) { | 
				
			||||
 | 
					        this.serverPort = serverPort; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getDeviceGBId() { | 
				
			||||
 | 
					        return deviceGBId; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setDeviceGBId(String deviceGBId) { | 
				
			||||
 | 
					        this.deviceGBId = deviceGBId; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getDeviceIp() { | 
				
			||||
 | 
					        return deviceIp; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setDeviceIp(String deviceIp) { | 
				
			||||
 | 
					        this.deviceIp = deviceIp; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getDevicePort() { | 
				
			||||
 | 
					        return devicePort; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setDevicePort(String devicePort) { | 
				
			||||
 | 
					        this.devicePort = devicePort; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getUsername() { | 
				
			||||
 | 
					        return username; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setUsername(String username) { | 
				
			||||
 | 
					        this.username = username; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getPassword() { | 
				
			||||
 | 
					        return password; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setPassword(String password) { | 
				
			||||
 | 
					        this.password = password; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getExpires() { | 
				
			||||
 | 
					        return expires; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setExpires(String expires) { | 
				
			||||
 | 
					        this.expires = expires; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getKeepTimeout() { | 
				
			||||
 | 
					        return keepTimeout; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setKeepTimeout(String keepTimeout) { | 
				
			||||
 | 
					        this.keepTimeout = keepTimeout; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getTransport() { | 
				
			||||
 | 
					        return transport; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setTransport(String transport) { | 
				
			||||
 | 
					        this.transport = transport; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getCharacterSet() { | 
				
			||||
 | 
					        return characterSet; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setCharacterSet(String characterSet) { | 
				
			||||
 | 
					        this.characterSet = characterSet; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public boolean isPTZEnable() { | 
				
			||||
 | 
					        return PTZEnable; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setPTZEnable(boolean PTZEnable) { | 
				
			||||
 | 
					        this.PTZEnable = PTZEnable; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public boolean isRtcp() { | 
				
			||||
 | 
					        return rtcp; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setRtcp(boolean rtcp) { | 
				
			||||
 | 
					        this.rtcp = rtcp; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,48 @@ | 
				
			|||||
 | 
					package com.genersoft.iot.vmp.vmanager.platform; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.genersoft.iot.vmp.common.PageResult; | 
				
			||||
 | 
					import com.genersoft.iot.vmp.gb28181.bean.Device; | 
				
			||||
 | 
					import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | 
				
			||||
 | 
					import com.genersoft.iot.vmp.storager.IVideoManagerStorager; | 
				
			||||
 | 
					import com.genersoft.iot.vmp.vmanager.device.DeviceController; | 
				
			||||
 | 
					import org.slf4j.Logger; | 
				
			||||
 | 
					import org.slf4j.LoggerFactory; | 
				
			||||
 | 
					import org.springframework.beans.factory.annotation.Autowired; | 
				
			||||
 | 
					import org.springframework.http.HttpStatus; | 
				
			||||
 | 
					import org.springframework.http.ResponseEntity; | 
				
			||||
 | 
					import org.springframework.stereotype.Controller; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.*; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@CrossOrigin | 
				
			||||
 | 
					@RestController | 
				
			||||
 | 
					@RequestMapping("/api") | 
				
			||||
 | 
					public class PlatformController { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    private final static Logger logger = LoggerFactory.getLogger(PlatformController.class); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Autowired | 
				
			||||
 | 
					    private IVideoManagerStorager storager; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @GetMapping("/platforms") | 
				
			||||
 | 
					    public PageResult<ParentPlatform> platforms(int page, int count){ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        if (logger.isDebugEnabled()) { | 
				
			||||
 | 
					            logger.debug("查询所有上级设备API调用"); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        return storager.queryParentPlatformList(page, count); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @PostMapping("/platforms/add") | 
				
			||||
 | 
					    public ResponseEntity<String> addPlatform(ParentPlatform parentPlatform){ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        if (logger.isDebugEnabled()) { | 
				
			||||
 | 
					            logger.debug("查询所有上级设备API调用"); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        boolean updateResult = storager.updateParentPlatform(parentPlatform); | 
				
			||||
 | 
					        if (updateResult) { | 
				
			||||
 | 
					            return new ResponseEntity<>("success", HttpStatus.OK); | 
				
			||||
 | 
					        }else { | 
				
			||||
 | 
					            return new ResponseEntity<>("fail", HttpStatus.OK); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,258 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					  <div id="app"> | 
				
			||||
 | 
					    <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> | 
				
			||||
 | 
					        <devicePlayer ref="devicePlayer"></devicePlayer> | 
				
			||||
 | 
					        <!--设备列表--> | 
				
			||||
 | 
					        <el-table :data="deviceList" border style="width: 100%" :height="winHeight"> | 
				
			||||
 | 
					          <el-table-column prop="name" label="名称" width="180" align="center"> | 
				
			||||
 | 
					          </el-table-column> | 
				
			||||
 | 
					          <el-table-column prop="deviceId" label="平台编号" width="240" align="center"> | 
				
			||||
 | 
					          </el-table-column> | 
				
			||||
 | 
					          <el-table-column prop="deviceId" label="是否启用" width="50" align="center"> | 
				
			||||
 | 
					          </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.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="180" align="center"> | 
				
			||||
 | 
					            <template slot-scope="scope"> | 
				
			||||
 | 
					              <div slot="reference" class="name-wrapper"> | 
				
			||||
 | 
					                <el-tag size="medium">{{ scope.row.host.address }}</el-tag> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					            </template> | 
				
			||||
 | 
					            <el-table-column prop="deviceId" label="设备国标编号" width="240" align="center"> | 
				
			||||
 | 
					            </el-table-column> | 
				
			||||
 | 
					          </el-table-column> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					          <el-table-column label="流传输模式" align="center" width="160"> | 
				
			||||
 | 
					            <template slot-scope="scope"> | 
				
			||||
 | 
					              <el-select size="mini" @change="transportChange(scope.row)" v-model="scope.row.streamMode" placeholder="请选择"> | 
				
			||||
 | 
					                <el-option key="UDP" label="UDP" value="UDP"></el-option> | 
				
			||||
 | 
					                <el-option key="TCP-ACTIVE" label="TCP主动模式" :disabled="true" value="TCP-ACTIVE"></el-option> | 
				
			||||
 | 
					                <el-option key="TCP-PASSIVE" label="TCP被动模式"  value="TCP-PASSIVE"></el-option> | 
				
			||||
 | 
					              </el-select> | 
				
			||||
 | 
					            </template> | 
				
			||||
 | 
					          </el-table-column> | 
				
			||||
 | 
					          <el-table-column prop="channelCount" label="通道数" align="center"> | 
				
			||||
 | 
					          </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-s-open"  type="primary" @click="showChannelList(scope.row)">查看通道</el-button> | 
				
			||||
 | 
					            </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> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      </el-main> | 
				
			||||
 | 
					    </el-container> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<script> | 
				
			||||
 | 
					import devicePlayer from './gb28181/devicePlayer.vue' | 
				
			||||
 | 
					import uiHeader from './UiHeader.vue' | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					  name: 'app', | 
				
			||||
 | 
					  components: { | 
				
			||||
 | 
					    devicePlayer, | 
				
			||||
 | 
					    uiHeader | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  data() { | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					      deviceList: [], //设备列表 | 
				
			||||
 | 
					      currentDevice: {}, //当前操作设备对象 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      videoComponentList: [], | 
				
			||||
 | 
					      updateLooper: 0, //数据刷新轮训标志 | 
				
			||||
 | 
					      currentDeviceChannelsLenth:0, | 
				
			||||
 | 
					      winHeight: window.innerHeight - 200, | 
				
			||||
 | 
					      currentPage:1, | 
				
			||||
 | 
					      count:15, | 
				
			||||
 | 
					      total:0 | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  computed: { | 
				
			||||
 | 
					    getcurrentDeviceChannels: function() { | 
				
			||||
 | 
					      let data = this.currentDevice['channelMap']; | 
				
			||||
 | 
					      let channels = null; | 
				
			||||
 | 
					      if (data) { | 
				
			||||
 | 
					        channels = Object.keys(data).map(key => { | 
				
			||||
 | 
					          return data[key]; | 
				
			||||
 | 
					        }); | 
				
			||||
 | 
					        this.currentDeviceChannelsLenth = channels.length; | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      console.log("数据:" + JSON.stringify(channels)); | 
				
			||||
 | 
					      return channels; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  mounted() { | 
				
			||||
 | 
					    this.initData(); | 
				
			||||
 | 
					    this.updateLooper = setInterval(this.initData, 10000); | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  destroyed() { | 
				
			||||
 | 
					    this.$destroy('videojs'); | 
				
			||||
 | 
					    clearTimeout(this.updateLooper); | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  methods: { | 
				
			||||
 | 
					    initData: function() { | 
				
			||||
 | 
					      this.getDeviceList(); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    currentChange: function(val){ | 
				
			||||
 | 
					      this.currentPage = val; | 
				
			||||
 | 
					      this.getDeviceList(); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    handleSizeChange: function(val){ | 
				
			||||
 | 
					      this.count = val; | 
				
			||||
 | 
					      this.getDeviceList(); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    getDeviceList: function() { | 
				
			||||
 | 
					      let that = this; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      this.$axios.get(`/api/devices`,{ | 
				
			||||
 | 
					        params: { | 
				
			||||
 | 
					          page: that.currentPage - 1, | 
				
			||||
 | 
					          count: that.count | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      } ) | 
				
			||||
 | 
					        .then(function (res) { | 
				
			||||
 | 
					          console.log(res); | 
				
			||||
 | 
					          that.total = res.data.total; | 
				
			||||
 | 
					          that.deviceList = res.data.data; | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        .catch(function (error) { | 
				
			||||
 | 
					          console.log(error); | 
				
			||||
 | 
					        }); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    showChannelList: function(row) { | 
				
			||||
 | 
					      console.log(JSON.stringify(row)) | 
				
			||||
 | 
					      this.$router.push(`/channelList/${row.deviceId}/0/15/1`); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //gb28181平台对接 | 
				
			||||
 | 
					    //刷新设备信息 | 
				
			||||
 | 
					    refDevice: function(itemData) { | 
				
			||||
 | 
					      ///api/devices/{deviceId}/sync | 
				
			||||
 | 
					      console.log("刷新对应设备:" + itemData.deviceId); | 
				
			||||
 | 
					      this.$axios({ | 
				
			||||
 | 
					        method: 'post', | 
				
			||||
 | 
					        url: '/api/devices/' + itemData.deviceId + '/sync' | 
				
			||||
 | 
					      }).then(function(res) { | 
				
			||||
 | 
					        // console.log("刷新设备结果:"+JSON.stringify(res)); | 
				
			||||
 | 
					      }).catch(function(e) { | 
				
			||||
 | 
					        that.$message({ | 
				
			||||
 | 
					          showClose: true, | 
				
			||||
 | 
					          message: '请求成功', | 
				
			||||
 | 
					          type: 'success' | 
				
			||||
 | 
					        }); | 
				
			||||
 | 
					      });; | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    //通知设备上传媒体流 | 
				
			||||
 | 
					    sendDevicePush: function(itemData) { | 
				
			||||
 | 
					      let deviceId = this.currentDevice.deviceId; | 
				
			||||
 | 
					      let channelId = itemData.channelId; | 
				
			||||
 | 
					      console.log("通知设备推流1:" + deviceId + " : " + channelId); | 
				
			||||
 | 
					      let that = this; | 
				
			||||
 | 
					      this.$axios({ | 
				
			||||
 | 
					        method: 'get', | 
				
			||||
 | 
					        url: '/api/play/' + deviceId + '/' + channelId | 
				
			||||
 | 
					      }).then(function(res) { | 
				
			||||
 | 
					        let ssrc = res.data.ssrc; | 
				
			||||
 | 
					        that.$refs.devicePlayer.play(ssrc,deviceId,channelId); | 
				
			||||
 | 
					      }).catch(function(e) { | 
				
			||||
 | 
					      }); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    transportChange: function (row) { | 
				
			||||
 | 
					      console.log(row); | 
				
			||||
 | 
					      console.log(`修改传输方式为 ${row.streamMode}:${row.deviceId} `); | 
				
			||||
 | 
					      let that = this; | 
				
			||||
 | 
					      this.$axios({ | 
				
			||||
 | 
					        method: 'get', | 
				
			||||
 | 
					        url: '/api/devices/' + row.deviceId + '/transport/' + row.streamMode | 
				
			||||
 | 
					      }).then(function(res) { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      }).catch(function(e) { | 
				
			||||
 | 
					      }); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					</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; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</style> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue