dockerfiles/anylink/web/src/pages/user/Online.vue

206 lines
5.1 KiB
Vue

<template>
<div>
<el-card>
<el-table
ref="multipleTable"
:data="tableData"
border>
<el-table-column
sortable="true"
type="index"
label="序号"
width="50">
</el-table-column>
<el-table-column
prop="username"
label="用户名">
</el-table-column>
<el-table-column
prop="group"
label="登陆组">
</el-table-column>
<el-table-column
prop="mac_addr"
label="MAC地址">
</el-table-column>
<el-table-column
prop="unique_mac"
label="唯一MAC">
<template slot-scope="scope">
<el-tag v-if="scope.row.unique_mac" type="success">是</el-tag>
</template>
</el-table-column>
<el-table-column
prop="ip"
label="IP地址"
width="140">
</el-table-column>
<el-table-column
prop="remote_addr"
label="远端地址">
</el-table-column>
<el-table-column
prop="tun_name"
label="虚拟网卡">
</el-table-column>
<el-table-column
prop="mtu"
label="MTU">
</el-table-column>
<el-table-column
prop="is_mobile"
label="客户端">
<template slot-scope="scope">
<i v-if="scope.row.client === 'mobile'" class="el-icon-mobile-phone" style="font-size: 20px;color: red"></i>
<i v-else class="el-icon-s-platform" style="font-size: 20px;color: blue"></i>
</template>
</el-table-column>
<el-table-column
prop="status"
label="实时 上行/下行"
width="220">
<template slot-scope="scope">
<el-tag type="success">{{ scope.row.bandwidth_up }}</el-tag>
<el-tag class="m-left-10">{{ scope.row.bandwidth_down }}</el-tag>
</template>
</el-table-column>
<el-table-column
prop="status"
label="总量 上行/下行"
width="200">
<template slot-scope="scope">
<el-tag effect="dark" type="success">{{ scope.row.bandwidth_up_all }}</el-tag>
<el-tag class="m-left-10" effect="dark">{{ scope.row.bandwidth_down_all }}</el-tag>
</template>
</el-table-column>
<el-table-column
prop="last_login"
label="登陆时间"
:formatter="tableDateFormat">
</el-table-column>
<el-table-column
label="操作"
width="150">
<template slot-scope="scope">
<el-button
size="mini"
type="primary"
@click="handleReline(scope.row)">重连
</el-button>
<el-popconfirm
class="m-left-10"
@confirm="handleOffline(scope.row)"
title="确定要下线用户吗?">
<el-button
slot="reference"
size="mini"
type="danger">下线
</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</template>
<script>
import axios from "axios";
export default {
name: "Online",
components: {},
mixins: [],
created() {
this.$emit('update:route_path', this.$route.path)
this.$emit('update:route_name', ['用户信息', '在线用户'])
},
mounted() {
this.getData();
const chatTimer = setInterval(() => {
this.getData();
}, 10000);
this.$once('hook:beforeDestroy', () => {
clearInterval(chatTimer);
})
},
data() {
return {
tableData: [],
}
},
methods: {
handleOffline(row) {
axios.post('/user/offline?token=' + row.token).then(resp => {
var data = resp.data
if (data.code === 0) {
this.$message.success(data.msg);
this.getData();
} else {
this.$message.error(data.msg);
}
console.log(data);
}).catch(error => {
this.$message.error('哦,请求出错');
console.log(error);
});
},
handleReline(row) {
axios.post('/user/reline?token=' + row.token).then(resp => {
var data = resp.data
if (data.code === 0) {
this.$message.success(data.msg);
this.getData();
} else {
this.$message.error(data.msg);
}
console.log(data);
}).catch(error => {
this.$message.error('哦,请求出错');
console.log(error);
});
},
handleEdit(a, row) {
console.log(a, row)
},
getData() {
axios.get('/user/online').then(resp => {
var data = resp.data.data
console.log(data);
this.tableData = data.datas;
this.count = data.count
}).catch(error => {
this.$message.error('哦,请求出错');
console.log(error);
});
},
},
}
</script>
<style scoped>
</style>