Files
opencloud/src/views/system/AuthRequiredView.vue
T
2026-07-30 22:35:51 +08:00

52 lines
1.7 KiB
Vue

<script setup lang="ts">
import { computed } from 'vue'
import { NButton, NIcon } from 'naive-ui'
import { Lock } from '@vicons/tabler'
import { RouterLink, useRoute } from 'vue-router'
const route = useRoute()
const redirect = computed(() => {
const value = route.query.redirect
return typeof value === 'string' && value.startsWith('/') ? value : '/'
})
const title = computed(() => {
if (redirect.value === '/upload') {
return '上传前先登录'
}
return '需要先登录'
})
const description = computed(() => {
if (redirect.value === '/upload') {
return '上传云图、使用地图快捷上传都需要先登录账号。登录后再回来,这里的上传入口就会开放。'
}
return '这个页面需要先登录才能继续访问。登录成功后可以返回刚才的目标页面继续操作。'
})
</script>
<template>
<div class="oc-system-page">
<div class="oc-system-card">
<NIcon size="72" class="text-sky-600"><Lock /></NIcon>
<p class="mt-6 text-sm font-medium uppercase tracking-[0.24em] text-sky-600">401 Login Required</p>
<h1 class="oc-page-title">{{ title }}</h1>
<p class="oc-page-description mx-auto max-w-xl">
{{ description }}
</p>
<div class="mt-8 flex flex-wrap items-center justify-center gap-3">
<RouterLink :to="{ path: '/login', query: redirect !== '/' ? { redirect } : undefined }">
<NButton type="default" secondary strong class="oc-panel-button oc-panel-button--sky">前往登录</NButton>
</RouterLink>
<RouterLink to="/">
<NButton type="default" secondary strong class="oc-panel-button oc-panel-button--neutral">返回地图</NButton>
</RouterLink>
</div>
</div>
</div>
</template>