Files
Vue3/src/views/Welcome.vue
2026-06-28 23:59:33 +08:00

76 lines
2.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="welcome-page">
<el-result icon="warning" title="暂无可用功能菜单">
<template #sub-title>
<p v-if="yonghuid">用户ID{{ yonghuid }}</p>
<p v-if="roleNames.length">已绑角色{{ roleNames.join('') }}角色内可能未含功能权限码</p>
<p v-else>该账号未绑定任何角色</p>
<p class="hint">请超管在后台用户中为该用户ID绑定角色角色内需含对应权限考核=kaohepeizhi</p>
</template>
<template #extra>
<el-button type="primary" @click="goTry">刷新权限</el-button>
<el-button @click="logout">退出登录</el-button>
</template>
</el-result>
</div>
</template>
<script setup>
import { computed, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import request from '@/utils/request'
import {
clearMenuAccess,
getDefaultLandingPath,
getMenuAccess,
JITUAN_API,
setMenuAccess,
} from '@/utils/club-context'
const router = useRouter()
const access = computed(() => getMenuAccess() || {})
const yonghuid = computed(() => access.value.yonghuid || '')
const roleNames = computed(() => access.value.role_names || [])
const goTry = async () => {
try {
const res = await request.get(JITUAN_API.menuAccess)
if (res.code === 0 && res.data) {
setMenuAccess(res.data)
const landing = getDefaultLandingPath(res.data)
if (landing) {
ElMessage.success('权限已生效')
router.replace(landing)
return
}
}
ElMessage.warning('仍无可用菜单,请确认角色与权限已绑定')
} catch {
ElMessage.error('刷新失败')
}
}
const logout = () => {
localStorage.removeItem('token')
clearMenuAccess()
router.replace('/login')
}
onMounted(() => {
const landing = getDefaultLandingPath()
if (landing) router.replace(landing)
})
</script>
<style scoped>
.welcome-page {
padding: 48px 24px;
}
.hint {
margin-top: 8px;
color: #909399;
font-size: 14px;
}
</style>