forked from UzTech/Vue3-typescript-demo
修改获取用户基础信息的位置
This commit is contained in:
@@ -1,10 +1,15 @@
|
||||
import { BaseInfo } from '@/types/user'
|
||||
import { BaseInfo, UserIndex } from '@/types/user'
|
||||
import request from '@/utils/request'
|
||||
|
||||
const index = (): Promise<UserIndex> => {
|
||||
return request.get('user')
|
||||
}
|
||||
|
||||
const info = (): Promise<BaseInfo> => {
|
||||
return request.get('user/info')
|
||||
}
|
||||
|
||||
export default {
|
||||
index,
|
||||
info
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ router.beforeEach((to, from, next) => {
|
||||
if (to.name !== 'AuthLogin' && to.meta.requiresAuth && !isAuthenticated) {
|
||||
next({ name: 'AuthLogin', query: { to: to.path }})
|
||||
} else if (isAuthenticated && (to.name == 'AuthLogin' || to.name == 'AuthRegister')) {
|
||||
next({ name: 'Home' })
|
||||
next({ name: 'User' })
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { auth } from '@/api'
|
||||
import { auth, user } from '@/api'
|
||||
import { PERSISTED_KEY, State } from '@/store'
|
||||
import { LoginData } from '@/types/auth'
|
||||
import { Module } from 'vuex'
|
||||
@@ -16,6 +16,9 @@ export default {
|
||||
commit('setAccessToken', response, { root: true })
|
||||
// 刷新用户中心页面
|
||||
commit('refresh/setUser', true, { root: true })
|
||||
user.info().then(info => {
|
||||
commit('setUserInfo', info, { root: true })
|
||||
})
|
||||
resolve(response)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
|
||||
4
src/types/user.d.ts
vendored
4
src/types/user.d.ts
vendored
@@ -5,6 +5,6 @@ export declare interface BaseInfo {
|
||||
avatar: string
|
||||
}
|
||||
|
||||
export declare type UserInfo = BaseInfo & {
|
||||
level: number
|
||||
export declare type UserIndex = BaseInfo & {
|
||||
balance: string
|
||||
}
|
||||
|
||||
@@ -7,18 +7,15 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
// 为了兼容vue3的keep-alive,页面名称要与router.meta中一致且不能省略
|
||||
// export default {
|
||||
// name: 'Home'
|
||||
// }
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { useStore } from '@/store'
|
||||
import { BaseInfo } from '@/types/user'
|
||||
import { computed } from 'vue'
|
||||
|
||||
const store = useStore()
|
||||
const info = store.getters.userInfo
|
||||
const info = computed<BaseInfo>(() => {
|
||||
return store.getters.userInfo
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -17,30 +17,31 @@ export default {
|
||||
<script lang="ts" setup>
|
||||
import { user } from '@/api'
|
||||
import { useStore } from '@/store'
|
||||
import { UserInfo } from '@/types/user'
|
||||
import type { BaseInfo, UserIndex } from '@/types/user'
|
||||
import { onActivated, onMounted, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const store = useStore()
|
||||
const router = useRouter()
|
||||
const info = ref<UserInfo>({})
|
||||
const info = ref<BaseInfo>({})
|
||||
const data = ref<UserIndex>({})
|
||||
|
||||
onMounted(() => {
|
||||
loadUserInfo()
|
||||
info.value = store.getters.userInfo
|
||||
loadUserData()
|
||||
})
|
||||
|
||||
onActivated(() => {
|
||||
if (store.getters['refresh/user']) {
|
||||
loadUserInfo()
|
||||
loadUserData()
|
||||
store.dispatch('refresh/setUser', false)
|
||||
}
|
||||
})
|
||||
|
||||
const loadUserInfo = (): void => {
|
||||
console.log('加载用户信息')
|
||||
user.info().then(res => {
|
||||
store.dispatch('setUserInfo', res)
|
||||
info.value = res
|
||||
const loadUserData = (): void => {
|
||||
console.log('加载用户主页信息')
|
||||
user.index().then(res => {
|
||||
data.value = res
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user