|  |  | 
 |  |  |         <el-button icon="el-icon-delete" size="mini" style="margin-right: 1rem;" | 
 |  |  |                    :disabled="multipleSelection.length === 0" type="danger" @click="batchDel">批量移除 | 
 |  |  |         </el-button> | 
 |  |  |         <el-button icon="el-icon-plus" size="mini" style="margin-right: 1rem;" type="primary" @click="addStream">添加通道 | 
 |  |  |         </el-button> | 
 |  |  |         <el-button icon="el-icon-refresh-right" circle size="mini" @click="refresh()"></el-button> | 
 |  |  |       </div> | 
 |  |  |     </div> | 
 |  |  | 
 |  |  |       <el-table-column label="开始时间"  min-width="200"> | 
 |  |  |         <template slot-scope="scope"> | 
 |  |  |           <el-button-group> | 
 |  |  |             {{ dateFormat(parseInt(scope.row.createStamp)) }} | 
 |  |  |             {{ scope.row.pushTime == null? "-":scope.row.pushTime }} | 
 |  |  |           </el-button-group> | 
 |  |  |         </template> | 
 |  |  |       </el-table-column> | 
 |  |  |       <el-table-column label="正在推流"  min-width="100"> | 
 |  |  |         <template slot-scope="scope"> | 
 |  |  |           {{ (scope.row.status == false && scope.row.gbId == null) || scope.row.status ? '是' : '否' }} | 
 |  |  |           {{scope.row.pushIng ? '是' : '否' }} | 
 |  |  |         </template> | 
 |  |  |       </el-table-column> | 
 |  |  |       <el-table-column label="本平台推流"  min-width="100"> | 
 |  |  |         <template slot-scope="scope"> | 
 |  |  |           {{scope.row.pushIng && !!scope.row.self ? '是' : '否' }} | 
 |  |  |         </template> | 
 |  |  |       </el-table-column> | 
 |  |  |  | 
 |  |  |       <el-table-column label="操作" min-width="360"  fixed="right"> | 
 |  |  |         <template slot-scope="scope"> | 
 |  |  |           <el-button size="medium" icon="el-icon-video-play" | 
 |  |  |                      v-if="(scope.row.status == false && scope.row.gbId == null) || scope.row.status" | 
 |  |  |                      v-if="scope.row.pushIng === true" | 
 |  |  |                      @click="playPush(scope.row)" type="text">播放 | 
 |  |  |           </el-button> | 
 |  |  |           <el-divider direction="vertical"></el-divider> | 
 |  |  | 
 |  |  | <script> | 
 |  |  | import streamProxyEdit from './dialog/StreamProxyEdit.vue' | 
 |  |  | import devicePlayer from './dialog/devicePlayer.vue' | 
 |  |  | import addStreamTOGB from './dialog/addStreamTOGB.vue' | 
 |  |  | import addStreamTOGB from './dialog/pushStreamEdit.vue' | 
 |  |  | import uiHeader from '../layout/UiHeader.vue' | 
 |  |  | import importChannel from './dialog/importChannel.vue' | 
 |  |  | import MediaServer from './service/MediaServer' | 
 |  |  | 
 |  |  |           mediaServerId: that.mediaServerId, | 
 |  |  |         } | 
 |  |  |       }).then(function (res) { | 
 |  |  |         that.total = res.data.total; | 
 |  |  |         that.pushList = res.data.list; | 
 |  |  |           if (res.data.code === 0) { | 
 |  |  |             that.total = res.data.data.total; | 
 |  |  |             that.pushList = res.data.data.list; | 
 |  |  |           } | 
 |  |  |  | 
 |  |  |         that.getDeviceListLoading = false; | 
 |  |  |       }).catch(function (error) { | 
 |  |  |         console.error(error); | 
 |  |  | 
 |  |  |         } | 
 |  |  |       }).then(function (res) { | 
 |  |  |         that.getListLoading = false; | 
 |  |  |         that.$refs.devicePlayer.openDialog("streamPlay", null, null, { | 
 |  |  |           streamInfo: res.data.data, | 
 |  |  |           hasAudio: true | 
 |  |  |         }); | 
 |  |  |         if (res.data.code === 0 ) { | 
 |  |  |           that.$refs.devicePlayer.openDialog("streamPlay", null, null, { | 
 |  |  |             streamInfo: res.data.data, | 
 |  |  |             hasAudio: true | 
 |  |  |           }); | 
 |  |  |         }else { | 
 |  |  |           that.$message.error(res.data.msg); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |       }).catch(function (error) { | 
 |  |  |         console.error(error); | 
 |  |  |         that.getListLoading = false; | 
 |  |  | 
 |  |  |           streamId: row.stream | 
 |  |  |         } | 
 |  |  |       }).then((res) => { | 
 |  |  |         if (res.data == "success") { | 
 |  |  |         if (res.data.code === 0) { | 
 |  |  |           that.initData() | 
 |  |  |         } | 
 |  |  |       }).catch(function (error) { | 
 |  |  | 
 |  |  |         url: "/api/push/remove_form_gb", | 
 |  |  |         data: row | 
 |  |  |       }).then((res) => { | 
 |  |  |         if (res.data == "success") { | 
 |  |  |         if (res.data.code === 0) { | 
 |  |  |           that.initData() | 
 |  |  |         } | 
 |  |  |       }).catch(function (error) { | 
 |  |  |         console.error(error); | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     dateFormat: function (/** timestamp=0 **/) { | 
 |  |  |       let ts = arguments[0] || 0; | 
 |  |  |       let t, y, m, d, h, i, s; | 
 |  |  |       t = ts ? new Date(ts) : new Date(); | 
 |  |  |       y = t.getFullYear(); | 
 |  |  |       m = t.getMonth() + 1; | 
 |  |  |       d = t.getDate(); | 
 |  |  |       h = t.getHours(); | 
 |  |  |       i = t.getMinutes(); | 
 |  |  |       s = t.getSeconds(); | 
 |  |  |       // 可根据需要在这里定义时间格式 | 
 |  |  |       return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d) + ' ' + (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s); | 
 |  |  |     }, | 
 |  |  |     importChannel: function () { | 
 |  |  |       this.$refs.importChannel.openDialog(() => { | 
 |  |  |  | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     addStream: function (){ | 
 |  |  |       this.$refs.addStreamTOGB.openDialog(null, this.initData); | 
 |  |  |     }, | 
 |  |  |     batchDel: function () { | 
 |  |  |       this.$confirm(`确定删除选中的${this.multipleSelection.length}个通道?`, '提示', { | 
 |  |  |         confirmButtonText: '确定', |