|  |  | 
 |  |  | <template> | 
 |  |  |    <div id="app"> | 
 |  |  |       <el-container> | 
 |  |  |          <el-header> | 
 |  |  |             <uiHeader></uiHeader> | 
 |  |  |          </el-header> | 
 |  |  |          <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: 1rem; top: 0.3rem;"> | 
 |  |  |                   <el-popover placement="bottom" width="750" height="300" trigger="click"> | 
 |  |  |                      <div style="height: 600px;overflow:auto;"> | 
 |  |  |                         <table class="table-c" cellspacing="0"> | 
 |  |  |                            <tr v-for="(value, key, index) in serverConfig"> | 
 |  |  |                               <td style="width: 18rem; text-align: right;">{{ key }}</td> | 
 |  |  |                               <td style="width: 33rem; text-align:left">{{ value }}</td> | 
 |  |  |                            </tr> | 
 |  |  |                         </table> | 
 |  |  |                      </div> | 
 |  |  |                      <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> | 
 |  |  |                </div> | 
 |  |  |             </div> | 
 |  |  |             <el-row :gutter="30"> | 
 |  |  |                <el-col :span="12"><div class="control-table" id="ThreadsLoad">table1</div></el-col> | 
 |  |  |                <el-col :span="12"><div class="control-table" id="WorkThreadsLoad">table2</div></el-col> | 
 |  |  |             </el-row> | 
 |  |  |             <el-table :data="allSessionData" style="margin-top: 1rem;"> | 
 |  |  |                <el-table-column prop="peer_ip" label="远端"></el-table-column> | 
 |  |  |                <el-table-column prop="local_ip" label="本地"></el-table-column> | 
 |  |  |                <el-table-column prop="typeid" label="类型"></el-table-column> | 
 |  |  |                <el-table-column align="right"> | 
 |  |  |                   <template slot="header" slot-scope="scope"> | 
 |  |  |                      <el-button icon="el-icon-refresh-right" circle @click="getAllSession()"></el-button> | 
 |  |  |                   </template> | 
 |  |  |                   <template slot-scope="scope"> | 
 |  |  |                      <el-button @click.native.prevent="deleteRow(scope.$index, allSessionData)" type="text" size="small">移除</el-button> | 
 |  |  |                   </template> | 
 |  |  |                </el-table-column> | 
 |  |  |             </el-table> | 
 |  |  | <div id="app"> | 
 |  |  |     <el-container> | 
 |  |  |         <el-header> | 
 |  |  |             <uiHeader></uiHeader> | 
 |  |  |         </el-header> | 
 |  |  |         <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: 1rem; top: 0.3rem;"> | 
 |  |  |                     <el-popover placement="bottom" width="750" height="300" trigger="click"> | 
 |  |  |                         <div style="height: 600px;overflow:auto;"> | 
 |  |  |                             <table class="table-c" cellspacing="0"> | 
 |  |  |                                 <tr v-for="(value, key, index) in serverConfig"> | 
 |  |  |                                     <td style="width: 18rem; text-align: right;">{{ key }}</td> | 
 |  |  |                                     <td style="width: 33rem; text-align:left">{{ value }}</td> | 
 |  |  |                                 </tr> | 
 |  |  |                             </table> | 
 |  |  |                         </div> | 
 |  |  |                         <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> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <el-row :gutter="30"> | 
 |  |  |                 <el-col :span="12"> | 
 |  |  |                     <div class="control-table" id="ThreadsLoad">table1</div> | 
 |  |  |                 </el-col> | 
 |  |  |                 <el-col :span="12"> | 
 |  |  |                     <div class="control-table" id="WorkThreadsLoad">table2</div> | 
 |  |  |                 </el-col> | 
 |  |  |             </el-row> | 
 |  |  |             <el-table :data="allSessionData" style="margin-top: 1rem;"> | 
 |  |  |                 <el-table-column prop="peer_ip" label="远端"></el-table-column> | 
 |  |  |                 <el-table-column prop="local_ip" label="本地"></el-table-column> | 
 |  |  |                 <el-table-column prop="typeid" label="类型"></el-table-column> | 
 |  |  |                 <el-table-column align="right"> | 
 |  |  |                     <template slot="header" slot-scope="scope"> | 
 |  |  |                         <el-button icon="el-icon-refresh-right" circle @click="getAllSession()"></el-button> | 
 |  |  |                     </template> | 
 |  |  |                     <template slot-scope="scope"> | 
 |  |  |                         <el-button @click.native.prevent="deleteRow(scope.$index, allSessionData)" type="text" size="small">移除</el-button> | 
 |  |  |                     </template> | 
 |  |  |                 </el-table-column> | 
 |  |  |             </el-table> | 
 |  |  |  | 
 |  |  |          </el-main> | 
 |  |  |          <!-- <el-footer style="position: absolute; bottom: 0; width: 100%;">ZLMediaKit-VUE_UI v1</el-footer> --> | 
 |  |  |       </el-container> | 
 |  |  |         </el-main> | 
 |  |  |         <!-- <el-footer style="position: absolute; bottom: 0; width: 100%;">ZLMediaKit-VUE_UI v1</el-footer> --> | 
 |  |  |     </el-container> | 
 |  |  |  | 
 |  |  |    </div> | 
 |  |  | </div> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  |  | 
 |  |  | import uiHeader from './UiHeader.vue' | 
 |  |  |  | 
 |  |  | import echarts from 'echarts'; | 
 |  |  | export default { | 
 |  |  |    name: 'app', | 
 |  |  |    components: { | 
 |  |  |       echarts, | 
 |  |  |       uiHeader | 
 |  |  |    }, | 
 |  |  |    data() { | 
 |  |  |       return { | 
 |  |  |          tableOption: { | 
 |  |  |             // legend: {}, | 
 |  |  |             xAxis: {}, | 
 |  |  |             yAxis: {}, | 
 |  |  |             label: {}, | 
 |  |  |             tooltip: {}, | 
 |  |  |             dataZoom: [], | 
 |  |  |             series: [] | 
 |  |  |          }, | 
 |  |  |          table1Option: { | 
 |  |  |             // legend: {}, | 
 |  |  |             xAxis: {}, | 
 |  |  |             yAxis: {}, | 
 |  |  |             label: {}, | 
 |  |  |             tooltip: {}, | 
 |  |  |             series: [] | 
 |  |  |          }, | 
 |  |  |          mChart: null, | 
 |  |  |          mChart1: null, | 
 |  |  |          charZoomStart: 0, | 
 |  |  |          charZoomEnd: 100, | 
 |  |  |          chartInterval: 0, //更新图表统计图定时任务标识 | 
 |  |  |          allSessionData: [], | 
 |  |  |          visible: false, | 
 |  |  |          serverConfig: {} | 
 |  |  |       }; | 
 |  |  |    }, | 
 |  |  |    mounted() { | 
 |  |  |       this.getAllSession(); | 
 |  |  |       this.initTable(); | 
 |  |  |       this.updateData(); | 
 |  |  |       this.chartInterval = setInterval(this.updateData, 3000); | 
 |  |  |    }, | 
 |  |  |    destroyed() { | 
 |  |  |       clearInterval(this.chartInterval); //释放定时任务 | 
 |  |  |    }, | 
 |  |  |    methods: { | 
 |  |  |       updateData: function() { | 
 |  |  |          this.getThreadsLoad(); | 
 |  |  |       }, | 
 |  |  |       /** | 
 |  |  |        * 获取线程状态 | 
 |  |  |        */ | 
 |  |  |       getThreadsLoad: function() { | 
 |  |  |          let that = this; | 
 |  |  |          this.$axios({ | 
 |  |  |             method: 'get', | 
 |  |  |             url: '/zlm/index/api/getThreadsLoad' | 
 |  |  |          }).then(function(res) { | 
 |  |  |             if (res.data.code == 0) { | 
 |  |  |                that.tableOption.xAxis.data.push(new Date().toLocaleTimeString()); | 
 |  |  |                that.table1Option.xAxis.data.push(new Date().toLocaleTimeString()); | 
 |  |  |     name: 'app', | 
 |  |  |     components: { | 
 |  |  |         echarts, | 
 |  |  |         uiHeader | 
 |  |  |     }, | 
 |  |  |     data() { | 
 |  |  |         return { | 
 |  |  |             tableOption: { | 
 |  |  |                 // legend: {}, | 
 |  |  |                 xAxis: {}, | 
 |  |  |                 yAxis: {}, | 
 |  |  |                 label: {}, | 
 |  |  |                 tooltip: {}, | 
 |  |  |                 dataZoom: [], | 
 |  |  |                 series: [] | 
 |  |  |             }, | 
 |  |  |             table1Option: { | 
 |  |  |                 // legend: {}, | 
 |  |  |                 xAxis: {}, | 
 |  |  |                 yAxis: {}, | 
 |  |  |                 label: {}, | 
 |  |  |                 tooltip: {}, | 
 |  |  |                 series: [] | 
 |  |  |             }, | 
 |  |  |             mChart: null, | 
 |  |  |             mChart1: null, | 
 |  |  |             charZoomStart: 0, | 
 |  |  |             charZoomEnd: 100, | 
 |  |  |             chartInterval: 0, //更新图表统计图定时任务标识 | 
 |  |  |             allSessionData: [], | 
 |  |  |             visible: false, | 
 |  |  |             serverConfig: {} | 
 |  |  |         }; | 
 |  |  |     }, | 
 |  |  |     mounted() { | 
 |  |  |         this.getAllSession(); | 
 |  |  |         this.initTable(); | 
 |  |  |         this.updateData(); | 
 |  |  |         this.chartInterval = setInterval(this.updateData, 3000); | 
 |  |  |     }, | 
 |  |  |     destroyed() { | 
 |  |  |         clearInterval(this.chartInterval); //释放定时任务 | 
 |  |  |     }, | 
 |  |  |     methods: { | 
 |  |  |         updateData: function () { | 
 |  |  |             this.getThreadsLoad(); | 
 |  |  |         }, | 
 |  |  |         /** | 
 |  |  |          * 获取线程状态 | 
 |  |  |          */ | 
 |  |  |         getThreadsLoad: function () { | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/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 | 
 |  |  |                     })); | 
 |  |  |  | 
 |  |  |                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); | 
 |  |  |             } | 
 |  |  |          }); | 
 |  |  |       }, | 
 |  |  |       initTable: function() { | 
 |  |  |          let that = this; | 
 |  |  |          this.tableOption.xAxis = { | 
 |  |  |             type: 'category', | 
 |  |  |             data: [], // x轴数据 | 
 |  |  |             name: '时间', // x轴名称 | 
 |  |  |             // x轴名称样式 | 
 |  |  |             nameTextStyle: { | 
 |  |  |                fontWeight: 300, | 
 |  |  |                fontSize: 15 | 
 |  |  |             } | 
 |  |  |          }; | 
 |  |  |          this.tableOption.yAxis = { | 
 |  |  |             type: 'value', | 
 |  |  |             name: '延迟率', // y轴名称 | 
 |  |  |             boundaryGap: [0, '100%'], | 
 |  |  |             max: 100, | 
 |  |  |             axisLabel: { | 
 |  |  |                show: true, | 
 |  |  |                interval: 'auto', | 
 |  |  |                formatter: '{value} %' | 
 |  |  |             }, | 
 |  |  |             // y轴名称样式 | 
 |  |  |             nameTextStyle: { | 
 |  |  |                fontWeight: 300, | 
 |  |  |                fontSize: 15 | 
 |  |  |             } | 
 |  |  |          }; | 
 |  |  |          this.tableOption.dataZoom = [ | 
 |  |  |             { | 
 |  |  |                show: true, | 
 |  |  |                start: this.charZoomStart, | 
 |  |  |                end: this.charZoomEnd | 
 |  |  |             } | 
 |  |  |          ]; | 
 |  |  |          this.myChart = echarts.init(document.getElementById('ThreadsLoad')); | 
 |  |  |          this.myChart.setOption(this.tableOption); | 
 |  |  |          this.myChart.on('dataZoom', function(event) { | 
 |  |  |             if (event.batch) { | 
 |  |  |                that.charZoomStart = event.batch[0].start; | 
 |  |  |                that.charZoomEnd = event.batch[0].end; | 
 |  |  |             } else { | 
 |  |  |                that.charZoomStart = event.start; | 
 |  |  |                that.charZoomEnd = event.end; | 
 |  |  |             } | 
 |  |  |          }); | 
 |  |  |                     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); | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |         initTable: function () { | 
 |  |  |             let that = this; | 
 |  |  |             this.tableOption.xAxis = { | 
 |  |  |                 type: 'category', | 
 |  |  |                 data: [], // x轴数据 | 
 |  |  |                 name: '时间', // x轴名称 | 
 |  |  |                 // x轴名称样式 | 
 |  |  |                 nameTextStyle: { | 
 |  |  |                     fontWeight: 300, | 
 |  |  |                     fontSize: 15 | 
 |  |  |                 } | 
 |  |  |             }; | 
 |  |  |             this.tableOption.yAxis = { | 
 |  |  |                 type: 'value', | 
 |  |  |                 name: '延迟率', // y轴名称 | 
 |  |  |                 boundaryGap: [0, '100%'], | 
 |  |  |                 max: 100, | 
 |  |  |                 axisLabel: { | 
 |  |  |                     show: true, | 
 |  |  |                     interval: 'auto', | 
 |  |  |                     formatter: '{value} %' | 
 |  |  |                 }, | 
 |  |  |                 // y轴名称样式 | 
 |  |  |                 nameTextStyle: { | 
 |  |  |                     fontWeight: 300, | 
 |  |  |                     fontSize: 15 | 
 |  |  |                 } | 
 |  |  |             }; | 
 |  |  |             this.tableOption.dataZoom = [{ | 
 |  |  |                 show: true, | 
 |  |  |                 start: this.charZoomStart, | 
 |  |  |                 end: this.charZoomEnd | 
 |  |  |             }]; | 
 |  |  |             this.myChart = echarts.init(document.getElementById('ThreadsLoad')); | 
 |  |  |             this.myChart.setOption(this.tableOption); | 
 |  |  |             this.myChart.on('dataZoom', function (event) { | 
 |  |  |                 if (event.batch) { | 
 |  |  |                     that.charZoomStart = event.batch[0].start; | 
 |  |  |                     that.charZoomEnd = event.batch[0].end; | 
 |  |  |                 } else { | 
 |  |  |                     that.charZoomStart = event.start; | 
 |  |  |                     that.charZoomEnd = event.end; | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |  | 
 |  |  |          this.table1Option.xAxis = { | 
 |  |  |             type: 'category', | 
 |  |  |             data: [], // x轴数据 | 
 |  |  |             name: '时间', // x轴名称 | 
 |  |  |             // x轴名称样式 | 
 |  |  |             nameTextStyle: { | 
 |  |  |                fontWeight: 300, | 
 |  |  |                fontSize: 15 | 
 |  |  |             } | 
 |  |  |          }; | 
 |  |  |          this.table1Option.yAxis = { | 
 |  |  |             type: 'value', | 
 |  |  |             name: '负载率', // y轴名称 | 
 |  |  |             boundaryGap: [0, '100%'], | 
 |  |  |             max: 100, | 
 |  |  |             axisLabel: { | 
 |  |  |                show: true, | 
 |  |  |                interval: 'auto', | 
 |  |  |                formatter: '{value} %' | 
 |  |  |             }, | 
 |  |  |             // y轴名称样式 | 
 |  |  |             nameTextStyle: { | 
 |  |  |                fontWeight: 300, | 
 |  |  |                fontSize: 15 | 
 |  |  |             } | 
 |  |  |          }; | 
 |  |  |          this.table1Option.dataZoom = [ | 
 |  |  |             { | 
 |  |  |                show: true, | 
 |  |  |                start: this.charZoomStart, | 
 |  |  |                end: this.charZoomEnd | 
 |  |  |             } | 
 |  |  |          ]; | 
 |  |  |          this.myChart1 = echarts.init(document.getElementById('WorkThreadsLoad')); | 
 |  |  |          this.myChart1.setOption(this.table1Option); | 
 |  |  |          this.myChart1.on('dataZoom', function(event) { | 
 |  |  |             if (event.batch) { | 
 |  |  |                that.charZoomStart = event.batch[0].start; | 
 |  |  |                that.charZoomEnd = event.batch[0].end; | 
 |  |  |             } else { | 
 |  |  |                that.charZoomStart = event.start; | 
 |  |  |                that.charZoomEnd = event.end; | 
 |  |  |             } | 
 |  |  |          }); | 
 |  |  |       }, | 
 |  |  |             this.table1Option.xAxis = { | 
 |  |  |                 type: 'category', | 
 |  |  |                 data: [], // x轴数据 | 
 |  |  |                 name: '时间', // x轴名称 | 
 |  |  |                 // x轴名称样式 | 
 |  |  |                 nameTextStyle: { | 
 |  |  |                     fontWeight: 300, | 
 |  |  |                     fontSize: 15 | 
 |  |  |                 } | 
 |  |  |             }; | 
 |  |  |             this.table1Option.yAxis = { | 
 |  |  |                 type: 'value', | 
 |  |  |                 name: '负载率', // y轴名称 | 
 |  |  |                 boundaryGap: [0, '100%'], | 
 |  |  |                 max: 100, | 
 |  |  |                 axisLabel: { | 
 |  |  |                     show: true, | 
 |  |  |                     interval: 'auto', | 
 |  |  |                     formatter: '{value} %' | 
 |  |  |                 }, | 
 |  |  |                 // y轴名称样式 | 
 |  |  |                 nameTextStyle: { | 
 |  |  |                     fontWeight: 300, | 
 |  |  |                     fontSize: 15 | 
 |  |  |                 } | 
 |  |  |             }; | 
 |  |  |             this.table1Option.dataZoom = [{ | 
 |  |  |                 show: true, | 
 |  |  |                 start: this.charZoomStart, | 
 |  |  |                 end: this.charZoomEnd | 
 |  |  |             }]; | 
 |  |  |             this.myChart1 = echarts.init(document.getElementById('WorkThreadsLoad')); | 
 |  |  |             this.myChart1.setOption(this.table1Option); | 
 |  |  |             this.myChart1.on('dataZoom', function (event) { | 
 |  |  |                 if (event.batch) { | 
 |  |  |                     that.charZoomStart = event.batch[0].start; | 
 |  |  |                     that.charZoomEnd = event.batch[0].end; | 
 |  |  |                 } else { | 
 |  |  |                     that.charZoomStart = event.start; | 
 |  |  |                     that.charZoomEnd = event.end; | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |  | 
 |  |  |       getAllSession: function() { | 
 |  |  |          let that = this; | 
 |  |  |          that.allSessionData = []; | 
 |  |  |          console.log("地址:"+'/zlm/index/api/getAllSession'); | 
 |  |  |          this.$axios({ | 
 |  |  |             method: 'get', | 
 |  |  |             url: '/zlm/index/api/getAllSession' | 
 |  |  |          }).then(function(res) { | 
 |  |  |             res.data.data.forEach(item => { | 
 |  |  |                let data = { | 
 |  |  |                   peer_ip: item.peer_ip, | 
 |  |  |                   local_ip: item.local_ip, | 
 |  |  |                   typeid: item.typeid, | 
 |  |  |                   id: item.id | 
 |  |  |                }; | 
 |  |  |                that.allSessionData.push(data); | 
 |  |  |             }); | 
 |  |  |          }); | 
 |  |  |       }, | 
 |  |  |       getServerConfig: function() { | 
 |  |  |          let that = this; | 
 |  |  |          this.$axios({ | 
 |  |  |             method: 'get', | 
 |  |  |             url: '/zlm/index/api/getServerConfig' | 
 |  |  |          }).then(function(res) { | 
 |  |  |             that.serverConfig = res.data.data[0]; | 
 |  |  |             that.visible = true; | 
 |  |  |          }); | 
 |  |  |       }, | 
 |  |  |       reStartServer: function() { | 
 |  |  |          let that = this; | 
 |  |  |          this.$confirm('此操作将重启媒体服务器, 是否继续?', '提示', { | 
 |  |  |             confirmButtonText: '确定', | 
 |  |  |             cancelButtonText: '取消', | 
 |  |  |             type: 'warning' | 
 |  |  |          }).then(() => { | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |                method: 'get', | 
 |  |  |                url: '/zlm/index/api/restartServer' | 
 |  |  |             }).then(function(res) { | 
 |  |  |                that.getAllSession(); | 
 |  |  |                if (res.data.code == 0) { | 
 |  |  |                   that.$message({ | 
 |  |  |                      type: 'success', | 
 |  |  |                      message: '操作完成' | 
 |  |  |                   }); | 
 |  |  |                } | 
 |  |  |             }); | 
 |  |  |          }); | 
 |  |  |       }, | 
 |  |  |       deleteRow: function(index, tabledata) { | 
 |  |  |          let that = this; | 
 |  |  |          this.$confirm('此操作将断开该通信链路, 是否继续?', '提示', { | 
 |  |  |             confirmButtonText: '确定', | 
 |  |  |             cancelButtonText: '取消', | 
 |  |  |             type: 'warning' | 
 |  |  |          }) | 
 |  |  |             .then(() => { | 
 |  |  |                that.deleteSession(tabledata[index].id); | 
 |  |  |             }) | 
 |  |  |             .catch(() => { | 
 |  |  |                console.log('id:' + JSON.stringify(tabledata[index])); | 
 |  |  |                this.$message({ | 
 |  |  |                   type: 'info', | 
 |  |  |                   message: '已取消删除' | 
 |  |  |                }); | 
 |  |  |             }); | 
 |  |  |          console.log(JSON.stringify(tabledata[index])); | 
 |  |  |       }, | 
 |  |  |       deleteSession: function(id) { | 
 |  |  |          let that = this; | 
 |  |  |          this.$axios({ | 
 |  |  |             method: 'get', | 
 |  |  |             url: '/zlm/index/api/kick_session&id=' + id | 
 |  |  |          }).then(function(res) { | 
 |  |  |             that.getAllSession(); | 
 |  |  |             that.$message({ | 
 |  |  |                type: 'success', | 
 |  |  |                message: '删除成功!' | 
 |  |  |             }); | 
 |  |  |          }); | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  |         getAllSession: function () { | 
 |  |  |             let that = this; | 
 |  |  |             that.allSessionData = []; | 
 |  |  |             console.log("地址:" + '/zlm/index/api/getAllSession'); | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/index/api/getAllSession' | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 res.data.data.forEach(item => { | 
 |  |  |                     let data = { | 
 |  |  |                         peer_ip: item.peer_ip, | 
 |  |  |                         local_ip: item.local_ip, | 
 |  |  |                         typeid: item.typeid, | 
 |  |  |                         id: item.id | 
 |  |  |                     }; | 
 |  |  |                     that.allSessionData.push(data); | 
 |  |  |                 }); | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |         getServerConfig: function () { | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/index/api/getServerConfig' | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 that.serverConfig = res.data.data[0]; | 
 |  |  |                 that.visible = true; | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |         reStartServer: function () { | 
 |  |  |             let that = this; | 
 |  |  |             this.$confirm('此操作将重启媒体服务器, 是否继续?', '提示', { | 
 |  |  |                 confirmButtonText: '确定', | 
 |  |  |                 cancelButtonText: '取消', | 
 |  |  |                 type: 'warning' | 
 |  |  |             }).then(() => { | 
 |  |  |                 let that = this; | 
 |  |  |                 this.$axios({ | 
 |  |  |                     method: 'get', | 
 |  |  |                     url: '/zlm/index/api/restartServer' | 
 |  |  |                 }).then(function (res) { | 
 |  |  |                     that.getAllSession(); | 
 |  |  |                     if (res.data.code == 0) { | 
 |  |  |                         that.$message({ | 
 |  |  |                             type: 'success', | 
 |  |  |                             message: '操作完成' | 
 |  |  |                         }); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |             }); | 
 |  |  |         }, | 
 |  |  |         deleteRow: function (index, tabledata) { | 
 |  |  |             let that = this; | 
 |  |  |             this.$confirm('此操作将断开该通信链路, 是否继续?', '提示', { | 
 |  |  |                     confirmButtonText: '确定', | 
 |  |  |                     cancelButtonText: '取消', | 
 |  |  |                     type: 'warning' | 
 |  |  |                 }) | 
 |  |  |                 .then(() => { | 
 |  |  |                     that.deleteSession(tabledata[index].id); | 
 |  |  |                 }) | 
 |  |  |                 .catch(() => { | 
 |  |  |                     console.log('id:' + JSON.stringify(tabledata[index])); | 
 |  |  |                     this.$message({ | 
 |  |  |                         type: 'info', | 
 |  |  |                         message: '已取消删除' | 
 |  |  |                     }); | 
 |  |  |                 }); | 
 |  |  |             console.log(JSON.stringify(tabledata[index])); | 
 |  |  |         }, | 
 |  |  |         deleteSession: function (id) { | 
 |  |  |             let that = this; | 
 |  |  |             this.$axios({ | 
 |  |  |                 method: 'get', | 
 |  |  |                 url: '/zlm/index/api/kick_session&id=' + id | 
 |  |  |             }).then(function (res) { | 
 |  |  |                 that.getAllSession(); | 
 |  |  |                 that.$message({ | 
 |  |  |                     type: 'success', | 
 |  |  |                     message: '删除成功!' | 
 |  |  |                 }); | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style> | 
 |  |  | #app { | 
 |  |  |    height: 100%; | 
 |  |  |     height: 100%; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .control-table { | 
 |  |  |    background-color: #ffffff; | 
 |  |  |    height: 25rem; | 
 |  |  |     background-color: #ffffff; | 
 |  |  |     height: 25rem; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .table-c { | 
 |  |  |    border-right: 1px solid #dcdcdc; | 
 |  |  |    border-bottom: 1px solid #dcdcdc; | 
 |  |  |     border-right: 1px solid #dcdcdc; | 
 |  |  |     border-bottom: 1px solid #dcdcdc; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .table-c td { | 
 |  |  |    border-left: 1px solid #dcdcdc; | 
 |  |  |    border-top: 1px solid #dcdcdc; | 
 |  |  |    padding: 0.2rem; | 
 |  |  |     border-left: 1px solid #dcdcdc; | 
 |  |  |     border-top: 1px solid #dcdcdc; | 
 |  |  |     padding: 0.2rem; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .el-table { | 
 |  |  |    width: 99.9% !important; | 
 |  |  |     width: 99.9% !important; | 
 |  |  | } | 
 |  |  | </style> |