| <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: 0, | 
|             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> |