feat: 添加一键登出全部按钮

This commit is contained in:
stefanfeng
2026-03-31 13:02:49 +08:00
parent cd07776914
commit 3a06224f5d

View File

@@ -34,6 +34,13 @@
</el-button> </el-button>
</template> </template>
</el-popconfirm> </el-popconfirm>
<el-popconfirm title="确定要登出所有虚拟用户吗?" @confirm="handleLogoutAll">
<template #reference>
<el-button size="small" type="info" :loading="logoutAllLoading">
<el-icon><SwitchButton /></el-icon> 一键登出全部
</el-button>
</template>
</el-popconfirm>
<el-tooltip content="从目标平台同步所有已登录用户的昵称/真实姓名/性别/头像" placement="top"> <el-tooltip content="从目标平台同步所有已登录用户的昵称/真实姓名/性别/头像" placement="top">
<el-button size="small" type="info" :loading="syncLoading" @click="handleSyncAll"> <el-button size="small" type="info" :loading="syncLoading" @click="handleSyncAll">
<el-icon><Refresh /></el-icon> 同步用户信息 <el-icon><Refresh /></el-icon> 同步用户信息
@@ -495,6 +502,7 @@ async function handleExport() {
} }
const loginAllLoading = ref(false) const loginAllLoading = ref(false)
const logoutAllLoading = ref(false)
const syncLoading = ref(false) const syncLoading = ref(false)
const avatarUploading = ref(false) const avatarUploading = ref(false)
@@ -521,6 +529,19 @@ async function handleAvatarUpload(file) {
return false // 阻止 el-upload 默认上传 return false // 阻止 el-upload 默认上传
} }
async function handleLogoutAll() {
logoutAllLoading.value = true
try {
const res = await request.post('/users/logout-all')
ElMessage.success(res.message || '已登出所有用户')
loadUsers()
} catch(e) {
ElMessage.error('登出失败:' + (e.message || '未知错误'))
} finally {
logoutAllLoading.value = false
}
}
async function handleSyncAll() { async function handleSyncAll() {
syncLoading.value = true syncLoading.value = true
try { try {
@@ -590,4 +611,4 @@ onUnmounted(() => window.removeEventListener('page-refresh', loadUsers))
} }
:deep(.el-table__body-wrapper) { background: transparent !important; } :deep(.el-table__body-wrapper) { background: transparent !important; }
:deep(.el-table) { background: transparent !important; } :deep(.el-table) { background: transparent !important; }
</style> </style>