Browse Source

b端国际化 首页

master
hx 2 months ago
parent
commit
42996fe891
  1. 79
      src/lang/no-permission-messages.js
  2. 2
      src/views/device/device/trajectory/index.vue
  3. 96
      src/views/error/noPermission.vue

79
src/lang/no-permission-messages.js

@ -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;

2
src/views/device/device/trajectory/index.vue

@ -55,7 +55,7 @@
</el-tag>
</div>
<div class="device-item__line">SN{{ item.sn || "-" }}</div>
<div class="device-item__line">时间{{ formatTime(item.lastLocationTime) }}</div>
<div class="device-item__line">更新时间{{ formatTime(item.lastLocationTime) }}</div>
<div class="device-item__line ellipsis">备注{{ item.remark || "-" }}</div>
</div>
</el-scrollbar>

96
src/views/error/noPermission.vue

@ -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…
Cancel
Save