From f1d079f9c0b3d384090477ca54e0548373d62b57 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 16 Jan 2025 11:56:39 +0800
Subject: [PATCH] 配置修改
---
web_src/src/components/dialog/chooseChannelForStream.vue | 255 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 255 insertions(+), 0 deletions(-)
diff --git a/web_src/src/components/dialog/chooseChannelForStream.vue b/web_src/src/components/dialog/chooseChannelForStream.vue
new file mode 100644
index 0000000..8d63dbf
--- /dev/null
+++ b/web_src/src/components/dialog/chooseChannelForStream.vue
@@ -0,0 +1,255 @@
+<template>
+<div id="chooseChannelFoStream" >
+ <div style="font-size: 17px; color: #606060; white-space: nowrap; line-height: 30px; font-family: monospace;">
+ <span v-if="catalogId == null">{{catalogName}}的直播通道</span>
+ <span v-if="catalogId != null">{{catalogName}}({{catalogId}})的直播通道</span>
+ </div>
+ <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
+
+ 搜索: <el-input @input="getChannelList" style="margin-right: 1rem; width: auto;" size="mini" placeholder="关键字" prefix-icon="el-icon-search" v-model="searchSrt" clearable> </el-input>
+
+<!-- 流媒体: <el-select size="mini" @change="getChannelList" style="margin-right: 1rem;" v-model="mediaServerId" placeholder="请选择" default-first-option>-->
+<!-- <el-option label="全部" value=""></el-option>-->
+<!-- <el-option-->
+<!-- v-for="item in mediaServerList"-->
+<!-- :key="item.id"-->
+<!-- :label="item.id"-->
+<!-- :value="item.id">-->
+<!-- </el-option>-->
+<!-- </el-select>-->
+ 推流状态: <el-select size="mini" style="margin-right: 1rem;" @change="getChannelList" v-model="pushing" placeholder="请选择" default-first-option>
+ <el-option label="全部" value=""></el-option>
+ <el-option label="推流进行中" value="true"></el-option>
+ <el-option label="推流未进行" value="false"></el-option>
+ </el-select>
+ <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>
+ <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>
+ </div>
+ <el-table ref="gbStreamsTable" :data="gbStreams" border style="width: 100%" :height="winHeight" :row-key="(row)=> row.app + row.stream" @selection-change="handleSelectionChange">
+ <el-table-column align="center" type="selection" :reserve-selection="true" width="55">
+ </el-table-column>
+ <el-table-column prop="name" label="名称" show-overflow-tooltip align="center">
+ </el-table-column>
+ <el-table-column prop="app" label="应用名" show-overflow-tooltip align="center">
+ </el-table-column>
+ <el-table-column prop="stream" label="流ID" show-overflow-tooltip align="center">
+ </el-table-column>
+ <el-table-column prop="gbId" label="国标编码" show-overflow-tooltip align="center">
+ </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-column label="操作" width="100" align="center" fixed="right" >
+ <template slot-scope="scope">
+ <el-button-group>
+ <el-button size="mini" icon="el-icon-plus" v-if="catalogId === null" @click="add(scope.row, scope)">添加</el-button>
+ <el-button size="mini" icon="el-icon-delete" v-if="catalogId !== null" type="danger" @click="remove(scope.row, scope)">移除</el-button>
+ </el-button-group>
+ </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>
+ <getCatalog ref="getCatalog" :platformId="platformId" ></getCatalog>
+</div>
+</template>
+
+<script>
+import MediaServer from './../service/MediaServer'
+import getCatalog from './getCatalog'
+export default {
+ name: 'chooseChannelFoStream',
+ computed: {
+ // getPlayerShared: function () {
+ // return {
+ // sharedUrl: window.location.host + '/' + this.videoUrl,
+ // sharedIframe: '<iframe src="' + window.location.host + '/' + this.videoUrl + '"></iframe>',
+ // sharedRtmp: this.videoUrl
+ // };
+ // }
+ },
+ props: ['platformId', 'catalogId', 'catalogName'],
+ created() {
+ this.initData();
+ console.log(this.catalogId)
+ },
+ components: {
+ getCatalog,
+ },
+ data() {
+ return {
+ gbStreams: [],
+ gbChoosechannel:{},
+ channelType: "",
+ online: "",
+ choosed: "",
+ currentPage: 1,
+ count: 10,
+ total: 0,
+ searchSrt: "",
+ pushing: "",
+ mediaServerId: "",
+ mediaServerList: [],
+ mediaServerObj : new MediaServer(),
+ eventEnable: false,
+ multipleSelection: [],
+ winHeight: window.innerHeight - 350,
+
+ };
+ },
+ watch:{
+ platformId(newData, oldData){
+ this.getChannelList()
+ },
+ catalogId(newData, oldData){
+ this.getChannelList()
+ },
+ },
+ methods: {
+ initData: function() {
+ this.mediaServerObj.getOnlineMediaServerList((data)=>{
+ this.mediaServerList = data.data;
+ })
+ this.getChannelList();
+ },
+ currentChange: function (val) {
+ this.currentPage = val;
+ this.getChannelList();
+ },
+ handleSizeChange: function (val) {
+ this.count = val;
+ console.log(val)
+ this.getChannelList();
+
+ },
+ add: function (row, scope) {
+ this.getCatalogFromUser((catalogId)=>{
+ this.$axios({
+ method:"post",
+ url:"/api/gbStream/add",
+ data:{
+ platformId: this.platformId,
+ catalogId: catalogId,
+ gbStreams: [row],
+ }
+ }).then((res)=>{
+ console.log("保存成功")
+ // this.gbStreams.splice(scope.$index,1)
+ this.getChannelList();
+ }).catch(function (error) {
+ console.log(error);
+ });
+ })
+
+
+ },
+ remove: function (row, scope) {
+ this.$axios({
+ method:"delete",
+ url:"/api/gbStream/del",
+ data:{
+ platformId: this.platformId,
+ gbStreams: [row],
+ }
+ }).then((res)=>{
+ console.log("移除成功")
+ // this.gbStreams.splice(scope.$index,1)
+ this.getChannelList();
+ }).catch(function (error) {
+ console.log(error);
+ });
+ },
+ getChannelList: function () {
+ let that = this;
+
+ this.$axios({
+ method: 'get',
+ url:`/api/gbStream/list`,
+ params: {
+ page: that.currentPage,
+ count: that.count,
+ query: that.searchSrt,
+ platformId: that.platformId,
+ catalogId: that.catalogId,
+ mediaServerId: that.mediaServerId
+ }
+ })
+ .then(function (res) {
+ if (res.data.code === 0) {
+ that.total = res.data.data.total;
+ that.gbStreams = res.data.data.list;
+ that.gbChoosechannel = {};
+ // 防止出现表格错位
+ that.$nextTick(() => {
+ that.$refs.gbStreamsTable.doLayout();
+ // 默认选中
+ that.eventEnable = true;
+ })
+ }
+ })
+ .catch(function (error) {
+ console.log(error);
+ });
+
+ },
+ batchDel: function() {
+ this.$confirm(`确认这${this.multipleSelection.length}个通道吗?`, '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.$axios({
+ method:"delete",
+ url:"/api/gbStream/del",
+ data:{
+ platformId: this.platformId,
+ gbStreams: this.multipleSelection,
+ }
+ }).then((res)=>{
+ console.log("移除成功")
+ this.$refs.gbStreamsTable.clearSelection()
+ this.getChannelList();
+ }).catch(function (error) {
+ console.log(error);
+ });
+ }).catch(() => {
+ });
+
+ },
+ batchAdd: function() {
+ this.getCatalogFromUser((catalogId)=>{
+ this.$axios({
+ method:"post",
+ url:"/api/gbStream/add",
+ data:{
+ platformId: this.platformId,
+ catalogId: catalogId,
+ gbStreams: this.multipleSelection,
+ }
+ }).then((res)=>{
+ console.log("保存成功")
+ this.$refs.gbStreamsTable.clearSelection()
+ this.getChannelList();
+ }).catch(function (error) {
+ console.log(error);
+ });
+ })
+ },
+ getCatalogFromUser(callback){
+ this.$refs.getCatalog.openDialog(callback)
+ },
+ handleSelectionChange: function (val) {
+ this.multipleSelection = val;
+ },
+ }
+};
+</script>
+
+<style>
+
+</style>
--
Gitblit v1.9.3