|  |  | 
 |  |  |         <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 style="position: absolute; right: 17rem; top: 0.3rem;"> | 
 |  |  |                   节点选择: <el-select size="mini" @change="chooseMediaChange" style="width: 18rem; margin-right: 8rem;" v-model="mediaServerChoose" placeholder="请选择" default-first-option> | 
 |  |  |                   <el-option | 
 |  |  |                     v-for="item in mediaServerList" | 
 |  |  |                     :key="item.id" | 
 |  |  |                     :label="item.id + '( ' + item.streamIp + ' )'" | 
 |  |  |                     :value="item.id"> | 
 |  |  |                   </el-option> | 
 |  |  |                   </el-select> | 
 |  |  |                   <span >{{loadCount}}</span> | 
 |  |  |                 </div> | 
 |  |  |                 <div style="position: absolute; right: 1rem; top: 0.3rem;"> | 
 |  |  |                     <el-popover placement="bottom" width="750" height="300" trigger="click"> | 
 |  |  |                         <div style="height: 600px;overflow:auto;"> | 
 |  |  | 
 |  |  |                                 </tr> | 
 |  |  |                             </table> | 
 |  |  |                         </div> | 
 |  |  |                         <el-button type="primary" slot="reference" size="mini" @click="getServerConfig()">查看服务器配置</el-button> | 
 |  |  |                         <el-button type="primary" slot="reference" size="mini" @click="getServerConfig()">媒体服务器配置</el-button> | 
 |  |  |                     </el-popover> | 
 |  |  |                     <el-button style="margin-left: 1rem;" type="danger" size="mini" @click="reStartServer()">重启服务器</el-button> | 
 |  |  |                     <el-popover placement="bottom" width="750" height="300" trigger="click"> | 
 |  |  |                         <div style="height: 600px;overflow:auto;"> | 
 |  |  |                           <div v-for="(value, key, index) in wvpServerConfig"> | 
 |  |  |                             {{ key }}: | 
 |  |  |                             <table v-if="key != 'server.port'" class="table-c" cellspacing="0"> | 
 |  |  |                               <tr  v-for="(subValue, subKey, subIndex) in value"> | 
 |  |  |                                 <td style="width: 18rem; text-align: right;">{{ subKey }}</td> | 
 |  |  |                                 <td style="width: 33rem; text-align:left">{{ subValue }}</td> | 
 |  |  |                               </tr> | 
 |  |  |                             </table> | 
 |  |  |                             <span v-if="key == 'server.port'">{{ value }}</span> | 
 |  |  |                           </div> | 
 |  |  |  | 
 |  |  |                           <div style="margin-top: 1rem"> | 
 |  |  |                             版本信息: | 
 |  |  |                             <table class="table-c" cellspacing="0"> | 
 |  |  |                               <tr v-for="(value, key, index) in wvpServerVersion"> | 
 |  |  |                                 <td style="width: 18rem; text-align: right;">{{ key }}</td> | 
 |  |  |                                 <td style="width: 33rem; text-align:left">{{ value }}</td> | 
 |  |  |                               </tr> | 
 |  |  |                             </table> | 
 |  |  |                           </div> | 
 |  |  |                         </div> | 
 |  |  |                       <el-button type="primary" slot="reference" size="mini" @click="getWVPServerConfig()">信令服务器配置</el-button> | 
 |  |  |                     </el-popover> | 
 |  |  |                     <el-button style="margin-left: 1rem;" type="danger" size="mini" @click="reStartServer()">重启媒体服务器</el-button> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <el-row :gutter="30"> | 
 |  |  | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import uiHeader from './UiHeader.vue' | 
 |  |  | import MediaServer from './service/MediaServer' | 
 |  |  |  | 
 |  |  | import echarts from 'echarts'; | 
 |  |  | export default { | 
 |  |  | 
 |  |  |             chartInterval: 0, //更新图表统计图定时任务标识 | 
 |  |  |             allSessionData: [], | 
 |  |  |             visible: false, | 
 |  |  |             serverConfig: {} | 
 |  |  |             wvpVisible: false, | 
 |  |  |             serverConfig: {}, | 
 |  |  |             wvpServerConfig: {}, | 
 |  |  |             wvpServerVersion: {}, | 
 |  |  |             mediaServer : new MediaServer(), | 
 |  |  |             mediaServerChoose : null, | 
 |  |  |             loadCount : 0, | 
 |  |  |             mediaServerList : [] | 
 |  |  |         }; | 
 |  |  |     }, | 
 |  |  |     mounted() { | 
 |  |  |         this.getAllSession(); | 
 |  |  |  | 
 |  |  |         this.initTable(); | 
 |  |  |         this.updateData(); | 
 |  |  |         this.chartInterval = setInterval(this.updateData, 3000); | 
 |  |  |         this.mediaServer.getOnlineMediaServerList((data)=>{ | 
 |  |  |           this.mediaServerList = data.data; | 
 |  |  |           if (this.mediaServerList && this.mediaServerList.length > 0) { | 
 |  |  |             this.mediaServerChoose = this.mediaServerList[0].id | 
 |  |  |             this.loadCount = this.mediaServerList[0].count; | 
 |  |  |             this.updateData(); | 
 |  |  |           } | 
 |  |  |         }) | 
 |  |  |     }, | 
 |  |  |     destroyed() { | 
 |  |  |         clearInterval(this.chartInterval); //释放定时任务 | 
 |  |  |     }, | 
 |  |  |     methods: { | 
 |  |  |         chooseMediaChange: function (val) { | 
 |  |  |             this.loadCount = 0 | 
 |  |  |             this.initTable() | 
 |  |  |             this.updateData(); | 
 |  |  |         }, | 
 |  |  |         updateData: function () { | 
 |  |  |             this.getThreadsLoad(); | 
 |  |  |             this.getLoadCount(); | 
 |  |  |             this.getAllSession(); | 
 |  |  |         }, | 
 |  |  |         /** | 
 |  |  |          * 获取线程状态 | 
 |  |  |          */ | 
 |  |  |         getThreadsLoad: function () { | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |             if (that.mediaServerChoose != null) { | 
 |  |  |               this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/index/api/getThreadsLoad' | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 url: '/zlm/' + that.mediaServerChoose +'/index/api/getThreadsLoad' | 
 |  |  |               }).then(function (res) { | 
 |  |  |                 if (res.data.code == 0) { | 
 |  |  |                     that.tableOption.xAxis.data.push(new Date().toLocaleTimeString('chinese', { | 
 |  |  |                         hour12: false | 
 |  |  |                     })); | 
 |  |  |                     that.table1Option.xAxis.data.push(new Date().toLocaleTimeString('chinese', { | 
 |  |  |                         hour12: false | 
 |  |  |                     })); | 
 |  |  |                   that.tableOption.xAxis.data.push(new Date().toLocaleTimeString('chinese', { | 
 |  |  |                     hour12: false | 
 |  |  |                   })); | 
 |  |  |                   that.table1Option.xAxis.data.push(new Date().toLocaleTimeString('chinese', { | 
 |  |  |                     hour12: false | 
 |  |  |                   })); | 
 |  |  |  | 
 |  |  |                     for (var i = 0; i < res.data.data.length; i++) { | 
 |  |  |                         if (that.tableOption.series[i] === undefined) { | 
 |  |  |                             let data = { | 
 |  |  |                                 data: [], | 
 |  |  |                                 type: 'line' | 
 |  |  |                             }; | 
 |  |  |                             let data1 = { | 
 |  |  |                                 data: [], | 
 |  |  |                                 type: 'line' | 
 |  |  |                             }; | 
 |  |  |                             data.data.push(res.data.data[i].delay); | 
 |  |  |                             data1.data.push(res.data.data[i].load); | 
 |  |  |                             that.tableOption.series.push(data); | 
 |  |  |                             that.table1Option.series.push(data1); | 
 |  |  |                         } else { | 
 |  |  |                             that.tableOption.series[i].data.push(res.data.data[i].delay); | 
 |  |  |                             that.table1Option.series[i].data.push(res.data.data[i].load); | 
 |  |  |                         } | 
 |  |  |                   for (var i = 0; i < res.data.data.length; i++) { | 
 |  |  |                     if (that.tableOption.series[i] === undefined) { | 
 |  |  |                       let data = { | 
 |  |  |                         data: [], | 
 |  |  |                         type: 'line' | 
 |  |  |                       }; | 
 |  |  |                       let data1 = { | 
 |  |  |                         data: [], | 
 |  |  |                         type: 'line' | 
 |  |  |                       }; | 
 |  |  |                       data.data.push(res.data.data[i].delay); | 
 |  |  |                       data1.data.push(res.data.data[i].load); | 
 |  |  |                       that.tableOption.series.push(data); | 
 |  |  |                       that.table1Option.series.push(data1); | 
 |  |  |                     } else { | 
 |  |  |                       that.tableOption.series[i].data.push(res.data.data[i].delay); | 
 |  |  |                       that.table1Option.series[i].data.push(res.data.data[i].load); | 
 |  |  |                     } | 
 |  |  |                     that.tableOption.dataZoom[0].start = that.charZoomStart; | 
 |  |  |                     that.tableOption.dataZoom[0].end = that.charZoomEnd; | 
 |  |  |                     that.table1Option.dataZoom[0].start = that.charZoomStart; | 
 |  |  |                     that.table1Option.dataZoom[0].end = that.charZoomEnd; | 
 |  |  |                     //that.myChart = echarts.init(document.getElementById('ThreadsLoad')); | 
 |  |  |                     that.myChart.setOption(that.tableOption, true); | 
 |  |  |                     // that.myChart1 = echarts.init(document.getElementById('WorkThreadsLoad')); | 
 |  |  |                     that.myChart1.setOption(that.table1Option, true); | 
 |  |  |                   } | 
 |  |  |                   that.tableOption.dataZoom[0].start = that.charZoomStart; | 
 |  |  |                   that.tableOption.dataZoom[0].end = that.charZoomEnd; | 
 |  |  |                   that.table1Option.dataZoom[0].start = that.charZoomStart; | 
 |  |  |                   that.table1Option.dataZoom[0].end = that.charZoomEnd; | 
 |  |  |                   //that.myChart = echarts.init(document.getElementById('ThreadsLoad')); | 
 |  |  |                   that.myChart.setOption(that.tableOption, true); | 
 |  |  |                   // that.myChart1 = echarts.init(document.getElementById('WorkThreadsLoad')); | 
 |  |  |                   that.myChart1.setOption(that.table1Option, true); | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |               }); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }, | 
 |  |  |         getLoadCount: function (){ | 
 |  |  |           let that = this; | 
 |  |  |           if (that.mediaServerChoose != null) { | 
 |  |  |             that.mediaServer.getMediaServer(that.mediaServerChoose, (data)=>{ | 
 |  |  |               if (data.code == 0) { | 
 |  |  |                 that.loadCount = data.data.count | 
 |  |  |               } | 
 |  |  |             }) | 
 |  |  |           } | 
 |  |  |         }, | 
 |  |  |         initTable: function () { | 
 |  |  |             let that = this; | 
 |  |  | 
 |  |  |         getAllSession: function () { | 
 |  |  |             let that = this; | 
 |  |  |             that.allSessionData = []; | 
 |  |  |             console.log("地址:" + '/zlm/index/api/getAllSession'); | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/index/api/getAllSession' | 
 |  |  |                 url: '/zlm/' + that.mediaServerChoose +'/index/api/getAllSession' | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 res.data.data.forEach(item => { | 
 |  |  |                     let data = { | 
 |  |  | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/index/api/getServerConfig' | 
 |  |  |                 url: '/zlm/' + that.mediaServerChoose +'/index/api/getServerConfig' | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 that.serverConfig = res.data.data[0]; | 
 |  |  |                 that.visible = true; | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |         getWVPServerConfig: function () { | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/api/server/config' | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 console.log(res) | 
 |  |  |                 that.wvpServerConfig = res.data.data; | 
 |  |  |                 that.wvpVisible = true; | 
 |  |  |             }); | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/api/server/version' | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 console.log(res) | 
 |  |  |                 that.wvpServerVersion = res.data.data; | 
 |  |  |                 that.wvpVisible = true; | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |         reStartServer: function () { | 
 |  |  | 
 |  |  |                 let that = this; | 
 |  |  |                 this.$axios({ | 
 |  |  |                     method: 'get', | 
 |  |  |                     url: '/zlm/index/api/restartServer' | 
 |  |  |                     url: '/zlm/' + that.mediaServerChoose +'/index/api/restartServer' | 
 |  |  |                 }).then(function (res) { | 
 |  |  |                     that.getAllSession(); | 
 |  |  |                     if (res.data.code == 0) { | 
 |  |  | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/index/api/kick_session&id=' + id | 
 |  |  |                 url: '/zlm/' + that.mediaServerChoose +'/index/api/kick_session&id=' + id | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 that.getAllSession(); | 
 |  |  |                 that.$message({ |