<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 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: 1, 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:"delete", 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({ method: 'get', url:`/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>