3 changed files with 176 additions and 1 deletions
@ -0,0 +1,79 @@ |
|||
const noPermissionMessages = { |
|||
"zh-CN": { |
|||
noPermission: { |
|||
title: "暂无页面权限", |
|||
desc: "当前账号已登录,但未分配任何可访问页面。你可以点击“刷新权限”重新加载,或退出重新登录。", |
|||
button: { |
|||
refresh: "刷新权限", |
|||
signOut: "退出登录" |
|||
}, |
|||
message: { |
|||
updated: "权限已更新,正在进入首页", |
|||
noAccess: "当前账号暂无页面权限,请联系管理员授权", |
|||
refreshFailed: "权限刷新失败" |
|||
} |
|||
} |
|||
}, |
|||
"en-US": { |
|||
noPermission: { |
|||
title: "No Page Permission", |
|||
desc: "This account is logged in but has no page access. Click \"Refresh Permission\" to reload, or sign out and log in again.", |
|||
button: { |
|||
refresh: "Refresh Permission", |
|||
signOut: "Sign Out" |
|||
}, |
|||
message: { |
|||
updated: "Permission updated, redirecting to home", |
|||
noAccess: "No page permission for this account", |
|||
refreshFailed: "Permission refresh failed" |
|||
} |
|||
} |
|||
}, |
|||
"fr-FR": { |
|||
noPermission: { |
|||
title: "Aucune permission de page", |
|||
desc: "Ce compte est connecte, mais aucune page n'est accessible. Cliquez sur \"Rafraichir les permissions\" ou deconnectez-vous puis reconnectez-vous.", |
|||
button: { |
|||
refresh: "Rafraichir les permissions", |
|||
signOut: "Se deconnecter" |
|||
}, |
|||
message: { |
|||
updated: "Permissions mises a jour, redirection vers l'accueil", |
|||
noAccess: "Ce compte n'a aucune permission de page", |
|||
refreshFailed: "Echec du rafraichissement des permissions" |
|||
} |
|||
} |
|||
}, |
|||
"es-ES": { |
|||
noPermission: { |
|||
title: "Sin permisos de pagina", |
|||
desc: "Esta cuenta ha iniciado sesion, pero no tiene acceso a ninguna pagina. Haz clic en \"Actualizar permisos\" o cierra sesion para volver a entrar.", |
|||
button: { |
|||
refresh: "Actualizar permisos", |
|||
signOut: "Cerrar sesion" |
|||
}, |
|||
message: { |
|||
updated: "Permisos actualizados, redirigiendo al inicio", |
|||
noAccess: "Esta cuenta no tiene permisos de pagina", |
|||
refreshFailed: "Error al actualizar permisos" |
|||
} |
|||
} |
|||
}, |
|||
"pt-BR": { |
|||
noPermission: { |
|||
title: "Sem permissao de pagina", |
|||
desc: "Esta conta esta conectada, mas nao possui acesso a paginas. Clique em \"Atualizar permissao\" ou saia e entre novamente.", |
|||
button: { |
|||
refresh: "Atualizar permissao", |
|||
signOut: "Sair" |
|||
}, |
|||
message: { |
|||
updated: "Permissoes atualizadas, redirecionando para a pagina inicial", |
|||
noAccess: "Esta conta nao possui permissao de pagina", |
|||
refreshFailed: "Falha ao atualizar permissoes" |
|||
} |
|||
} |
|||
} |
|||
}; |
|||
|
|||
export default noPermissionMessages; |
|||
@ -0,0 +1,96 @@ |
|||
<template> |
|||
<div class="no-permission-page"> |
|||
<div class="no-permission-card"> |
|||
<div class="title">{{ $t("noPermission.title") }}</div> |
|||
<div class="desc">{{ $t("noPermission.desc") }}</div> |
|||
<div class="actions"> |
|||
<el-button type="primary" :loading="refreshing" @click="refreshPermissions(false)">{{ $t("noPermission.button.refresh") }}</el-button> |
|||
<el-button @click="goLogin">{{ $t("noPermission.button.signOut") }}</el-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: "NoPermission", |
|||
data() { |
|||
return { |
|||
refreshing: false |
|||
}; |
|||
}, |
|||
created() { |
|||
this.refreshPermissions(true); |
|||
}, |
|||
methods: { |
|||
async refreshPermissions(silent = false) { |
|||
if (this.refreshing) { |
|||
return; |
|||
} |
|||
this.refreshing = true; |
|||
try { |
|||
await this.$store.dispatch("GetInfo"); |
|||
const routes = await this.$store.dispatch("GenerateRoutes"); |
|||
const hasHomeRoute = Array.isArray(routes) && routes.some(route => route && route.path === "/" && route.redirect === "/index"); |
|||
if (hasHomeRoute) { |
|||
if (!silent) { |
|||
this.$message.success(this.$t("noPermission.message.updated")); |
|||
} |
|||
this.$router.replace("/index"); |
|||
return; |
|||
} |
|||
if (!silent) { |
|||
this.$message.warning(this.$t("noPermission.message.noAccess")); |
|||
} |
|||
} catch (error) { |
|||
if (!silent) { |
|||
this.$message.error((error && error.message) || this.$t("noPermission.message.refreshFailed")); |
|||
} |
|||
} finally { |
|||
this.refreshing = false; |
|||
} |
|||
}, |
|||
goLogin() { |
|||
this.$store.dispatch("LogOut").finally(() => { |
|||
this.$router.replace("/login"); |
|||
}); |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.no-permission-page { |
|||
min-height: calc(100vh - 120px); |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
padding: 24px; |
|||
background: linear-gradient(180deg, #f7f9fc 0%, #eef3fa 100%); |
|||
} |
|||
.no-permission-card { |
|||
width: 560px; |
|||
max-width: 100%; |
|||
background: #fff; |
|||
border: 1px solid #e7edf5; |
|||
border-radius: 12px; |
|||
box-shadow: 0 8px 24px rgba(31, 45, 61, 0.08); |
|||
padding: 28px 24px; |
|||
} |
|||
.title { |
|||
font-size: 24px; |
|||
font-weight: 700; |
|||
color: #1f2d3d; |
|||
margin-bottom: 12px; |
|||
} |
|||
.desc { |
|||
color: #606266; |
|||
line-height: 1.8; |
|||
font-size: 14px; |
|||
} |
|||
.actions { |
|||
margin-top: 22px; |
|||
display: flex; |
|||
gap: 10px; |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue