76 lines
1.5 KiB
Vue
76 lines
1.5 KiB
Vue
<route>
|
||
{
|
||
name: 'notFound',
|
||
meta: {
|
||
title: "找不到页面",
|
||
constant: true,
|
||
layout: false
|
||
}
|
||
}
|
||
</route>
|
||
|
||
<script setup>
|
||
import { onBeforeRouteLeave } from 'vue-router'
|
||
const router = useRouter()
|
||
|
||
const data = ref({
|
||
inter: null,
|
||
countdown: 5
|
||
})
|
||
|
||
onBeforeRouteLeave(() => {
|
||
clearInterval(data.value.inter)
|
||
})
|
||
|
||
onMounted(() => {
|
||
data.value.inter = setInterval(() => {
|
||
data.value.countdown--
|
||
if (data.value.countdown == 0) {
|
||
clearInterval(data.value.inter)
|
||
goBack()
|
||
}
|
||
}, 1000)
|
||
})
|
||
|
||
function goBack() {
|
||
router.push('/')
|
||
}
|
||
</script>
|
||
|
||
<template>
|
||
<div class="notfound">
|
||
<svg-icon name="404" class="icon" />
|
||
<div class="content">
|
||
<h1>404</h1>
|
||
<div class="desc">抱歉,你访问的页面不存在</div>
|
||
<el-button type="primary" @click="goBack">{{ data.countdown }} 秒后,返回首页</el-button>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<style lang="scss" scoped>
|
||
.notfound {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
width: 700px;
|
||
@include position-center(xy);
|
||
.icon {
|
||
width: 400px;
|
||
height: 400px;
|
||
}
|
||
.content {
|
||
h1 {
|
||
margin: 0;
|
||
font-size: 72px;
|
||
color: var(--el-text-color-primary);
|
||
}
|
||
.desc {
|
||
margin: 20px 0 30px;
|
||
font-size: 20px;
|
||
color: var(--el-text-color-secondary);
|
||
}
|
||
}
|
||
}
|
||
</style>
|