优化强退功能新增批量强退在线用户

This commit is contained in:
不做码农 2023-08-29 21:36:11 +08:00
parent f9ee814adc
commit a481bec282
5 changed files with 37 additions and 12 deletions

View File

@ -17,3 +17,12 @@ export function forceLogout(data) {
data: data
})
}
// 批量强退用户
export function forceLogoutAll(data) {
return request({
url: '/monitor/online/batchlock',
method: 'delete',
data: data
})
}

View File

@ -2,7 +2,7 @@
import * as signalR from '@microsoft/signalr'
import { getToken } from '@/utils/auth'
import { ElMessage } from 'element-plus'
import cache from '@/plugins/cache'
import analysis from '@/signalr/analysis'
export default {
@ -11,7 +11,7 @@ export default {
// 失败连接重试次数
failNum: 4,
init(url) {
var socketUrl = window.location.origin + url
var socketUrl = window.location.origin + url + '?clientId=' + cache.local.get('clientId')
const connection = new signalR.HubConnectionBuilder()
.withUrl(socketUrl, { accessTokenFactory: () => getToken() })
.withAutomaticReconnect() //自动重新连接

View File

@ -107,7 +107,7 @@ const useUserStore = defineStore('user', {
resolve(res)
})
.catch((error) => {
console.error(error)
console.warn(error)
reject('获取用户信息失败')
})
})

View File

@ -39,7 +39,7 @@
<h2>ZRAdmin.NET {{ $t('layout.backstageManagement') }}</h2>
<p>
ZRAdmin.NET借鉴了很多开源项目的优点让你开发Web管理系统更简单所以我也把它给开源了前端
<code>vue页面</code>主要使用了若依后端参考Ruoyi stringboot版本在此表示感谢.)
<code>vue页面</code>主要使用了若依后端参考Ruoyi StringBoot版本在此表示感谢.)
</p>
<p>{{ $t('layout.content1') }}</p>
<p>

View File

@ -5,7 +5,11 @@
<el-button type="primary" icon="Search" @click="handleQuery">刷新</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="2">
<el-button plain type="primary" @click="onLockAll()" icon="lock" v-hasPermi="['monitor:online:forceLogout']">全部强退</el-button>
</el-col>
</el-row>
<el-table :data="onlineUsers" v-loading="loading" ref="tableRef" border highlight-current-row>
<!-- <el-table-column prop="connnectionId" label="连接id"></el-table-column> -->
<el-table-column label="No" type="index" width="50" align="center">
@ -17,7 +21,7 @@
<el-table-column label="登录地点" prop="location" align="center"> </el-table-column>
<el-table-column label="登录IP" prop="userIP" align="center"></el-table-column>
<el-table-column prop="browser" label="登录浏览器" width="210"></el-table-column>
<el-table-column prop="platform" label="登录设备" align="center"></el-table-column>
<el-table-column prop="platform" label="登录平台" align="center"></el-table-column>
<el-table-column prop="loginTime" label="登录时间" witdh="280px">
<template #default="scope">
{{ dayjs(scope.row.loginTime).format('MM/DD日HH:mm:ss') }}
@ -27,7 +31,7 @@
<el-table-column label="操作" align="center" width="160">
<template #default="scope">
<el-button text @click="onChat(scope.row)" icon="bell" v-hasRole="['admin']">通知</el-button>
<el-button text @click="onLock(scope.row)" icon="lock" v-hasRole="['admin']">强退</el-button>
<el-button text @click="onLock(scope.row)" icon="lock" v-hasPermi="['monitor:online:forceLogout']">强退</el-button>
</template>
</el-table-column>
</el-table>
@ -36,7 +40,7 @@
</template>
<script setup name="onlineuser">
import { listOnline, forceLogout } from '@/api/monitor/online'
import { listOnline, forceLogout, forceLogoutAll } from '@/api/monitor/online'
import dayjs from 'dayjs'
import useSocketStore from '@/store/modules/socket'
import useUserStore from '@/store/modules/user'
@ -89,18 +93,30 @@ function onChat(item) {
}
function onLock(row) {
proxy
.$prompt('请输入踢出原因', '', {
.$prompt('请输入强退原因', '', {
confirmButtonText: '发送',
cancelButtonText: '取消'
})
.then((val) => {
forceLogout({ ...row, time: 10, reason: val.value, clientId: useUserStore().clientId }).then((res) => {
proxy.$modal.msgSuccess('踢出成功')
forceLogout({ ...row, time: 10, reason: val.value, clientId: row.clientId }).then(() => {
proxy.$modal.msgSuccess('强退成功')
})
})
.catch(() => {})
}
// 退
function onLockAll() {
proxy
.$prompt('请输入强退原因', '', {
confirmButtonText: '发送',
cancelButtonText: '取消'
})
.then((val) => {
forceLogoutAll({ time: 10, reason: val.value }).then((res) => {
proxy.$modal.msgSuccess('强退成功')
})
})
}
watch(
onlineNum,
() => {