路由配置完成,修复历史遗留问题

This commit is contained in:
柏码の讲师 2023-06-16 17:13:37 +08:00
parent 040941c73d
commit e11d3c4e55
7 changed files with 61 additions and 18 deletions

View File

@ -4,14 +4,10 @@ import {useStore} from "@/stores";
import router from "@/router"; import router from "@/router";
const store = useStore() const store = useStore()
const user = localStorage.getItem('user')
if(store.auth.user == null) { if(user != null) {
get('/api/user/me', (message) => { store.auth.user = JSON.parse(user)
store.auth.user = message
router.push('/index')
}, () => {
store.auth.user = null
})
} }
</script> </script>

View File

@ -0,0 +1,13 @@
<script setup>
</script>
<template>
<div>
我是帖子列表
</div>
</template>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<script setup>
</script>
<template>
<div>
我是设置界面
</div>
</template>
<style scoped>
</style>

View File

@ -64,6 +64,7 @@ const login = () => {
ElMessage.success(message) ElMessage.success(message)
get('/api/user/me', (message) => { get('/api/user/me', (message) => {
store.auth.user = message store.auth.user = message
localStorage.setItem("user", JSON.stringify(message))
router.push('/index') router.push('/index')
}, () => { }, () => {
store.auth.user = null store.auth.user = null

View File

@ -1,5 +1,6 @@
import axios from "axios"; import axios from "axios";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import router from "@/router";
const defaultError = () => ElMessage.error('发生了一些错误,请联系管理员') const defaultError = () => ElMessage.error('发生了一些错误,请联系管理员')
const defaultFailure = (message) => ElMessage.warning(message) const defaultFailure = (message) => ElMessage.warning(message)
@ -11,7 +12,9 @@ function post(url, data, success, failure = defaultFailure, error = defaultError
}, },
withCredentials: true withCredentials: true
}).then(({data}) => { }).then(({data}) => {
if(data.success) if(data.status === 401)
router.push('/')
else if(data.success)
success(data.message, data.status) success(data.message, data.status)
else else
failure(data.message, data.status) failure(data.message, data.status)
@ -22,7 +25,9 @@ function get(url, success, failure = defaultFailure, error = defaultError) {
axios.get(url, { axios.get(url, {
withCredentials: true withCredentials: true
}).then(({data}) => { }).then(({data}) => {
if(data.success) if(data.status === 401)
router.push('/')
else if(data.success)
success(data.message, data.status) success(data.message, data.status)
else else
failure(data.message, data.status) failure(data.message, data.status)

View File

@ -26,7 +26,18 @@ const router = createRouter({
}, { }, {
path: '/index', path: '/index',
name: 'index', name: 'index',
component: () => import('@/views/IndexView.vue') component: () => import('@/views/IndexView.vue'),
children: [
{
path: '',
name: 'index-list',
component: () => import('@/components/index/PostList.vue')
}, {
path: 'settings',
name: 'index-settings',
component: () => import('@/components/index/Settings.vue')
}
]
} }
] ]
}) })

View File

@ -7,10 +7,11 @@
style="width: 150px"/> style="width: 150px"/>
</div> </div>
<el-menu <el-menu
default-active="1" :default-active="router.currentRoute.value.path"
router
:collapse="isCollapse" :collapse="isCollapse"
style="border: none"> style="border: none">
<el-menu-item index="1"> <el-menu-item index="/index">
<el-icon><icon-menu /></el-icon> <el-icon><icon-menu /></el-icon>
<span>帖子列表</span> <span>帖子列表</span>
</el-menu-item> </el-menu-item>
@ -26,7 +27,7 @@
<el-icon><setting /></el-icon> <el-icon><setting /></el-icon>
<span>我的收藏</span> <span>我的收藏</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="5"> <el-menu-item index="/index/settings">
<el-icon><setting /></el-icon> <el-icon><setting /></el-icon>
<span>个人设置</span> <span>个人设置</span>
</el-menu-item> </el-menu-item>
@ -72,7 +73,9 @@
</div> </div>
</div> </div>
</el-header> </el-header>
<el-main style="">Main</el-main> <el-main style="padding: 0">
<router-view/>
</el-main>
</el-container> </el-container>
</el-container> </el-container>
</div> </div>
@ -83,7 +86,7 @@ import {get} from "@/net";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import router from "@/router"; import router from "@/router";
import {useStore} from "@/stores"; import {useStore} from "@/stores";
import {Document, Location, Setting, Menu as IconMenu, Search, Back, Expand, Fold} from "@element-plus/icons-vue"; import {Document, Setting, Menu as IconMenu, Search, Back, Expand, Fold} from "@element-plus/icons-vue";
import {ref} from "vue"; import {ref} from "vue";
const store = useStore() const store = useStore()
@ -93,8 +96,9 @@ const isCollapse = ref(false)
const logout = () => { const logout = () => {
get('/api/auth/logout', (message) => { get('/api/auth/logout', (message) => {
ElMessage.success(message) ElMessage.success(message)
router.push('/')
store.auth.user = null store.auth.user = null
localStorage.removeItem('user')
router.push('/')
}) })
} }
</script> </script>