feat: 完善登录流程+完善请求封装

This commit is contained in:
范鹏 2025-01-03 10:32:00 +08:00
parent 64404ce7b9
commit 55144a4ea1
5 changed files with 42 additions and 35 deletions

View File

@ -41,9 +41,10 @@
import { codeLoginApi, CodeLoginRequest } from '@/service/user'
import { PlatId } from '@/typings'
import { Result } from '@/constants/result'
import { useBasicStore } from '@/store'
import { useBasicStore, useUserStore } from '@/store'
const $basic = useBasicStore()
const $user = useUserStore()
const phone = ref<string>('')
@ -89,10 +90,8 @@
})
uni.hideLoading()
if (result.errorCode === Result.Success.code) {
uni.setStorageSync({
key: 'token',
data: result.data.token
})
uni.setStorageSync('token', result.data.token)
$user.getUserInfo()
await uni.switchTab({
url: '/pages/home/home'
})

View File

@ -8,11 +8,12 @@
</route>
<template>
<view class="custom-bg-default">
<TopNavigation :title="appName"></TopNavigation>
<button class="mt-12" @click="toLogin">去登录</button>
<CustomTab class="mt-10" :list="featuresList" @clickItem="clickItem"></CustomTab>
<view class="pt-10">
<CustomTabBar :list="list" :default-index="1" @change="change"></CustomTabBar>
<view v-if="$user.loginStatus">
<CustomTab class="mt-10" :list="featuresList" @clickItem="clickItem"></CustomTab>
<button class="mt-12" @click="$user.logout">退出登录</button>
</view>
<view v-else>
<button class="mt-12" @click="toLogin">去登录</button>
</view>
</view>
</template>
@ -22,8 +23,6 @@
import { useUserStore } from '@/store'
import { Result } from '@/constants/result'
const appName = import.meta.env.VITE_APP_TITLE
const $user = useUserStore()
const list = ref<Array<TabBarItem>>([
@ -237,13 +236,6 @@
}
})
const change = data => {
console.log(data.value)
if (data.value === 3) {
list.value[data.value].value = 0
}
}
const toLogin = () => {
uni.navigateTo({
url: '/pages/login/login'

View File

@ -146,7 +146,6 @@
</text>
</Modal>
</template>
<script lang="ts" setup>
import { useBasicStore } from '@/store'
import { passwordRegExp, phoneRegExp } from '@/constants/regular-expressions'
@ -209,7 +208,6 @@
deviceModel: systemInfo.value?.deviceModel
}
})
console.log(111111, result)
uni.hideLoading()
if (result.errorCode === Result.Success.code) {
await uni.switchTab({

View File

@ -7,19 +7,20 @@ export const useUserStore = defineStore(
'user',
() => {
const userInfo = ref<UserInfo>(null)
const loginStatus = ref(false)
const loginStatus = ref<boolean>(false)
const getUserInfo = async () => {
const result = await getUserInfoApi()
if (result.errorCode === Result.Success.code) {
userInfo.value = result.data
loginStatus.value = true
uni.setStorageSync({
key: 'userInfo',
data: userInfo.value
})
return new Result(result.errorCode, userInfo.value, result.errorMsg)
} else {
try {
const result = await getUserInfoApi()
if (result.errorCode === Result.Success.code) {
userInfo.value = result.data
loginStatus.value = true
uni.setStorageSync('userInfo', userInfo.value)
return new Result(result.errorCode, userInfo.value, result.errorMsg)
}
loginStatus.value = false
return Result.Fail
} catch (error) {
const userInfoStorage = uni.getStorageSync('userInfo')
if (userInfoStorage) {
userInfo.value = userInfoStorage
@ -32,8 +33,17 @@ export const useUserStore = defineStore(
}
}
const logout = () => {
userInfo.value = null
loginStatus.value = false
uni.removeStorageSync('userInfo')
uni.removeStorageSync('token')
}
return {
userInfo,
loginStatus,
logout,
getUserInfo
}
},

View File

@ -1,4 +1,5 @@
import { CustomRequestOptions } from '@/interceptors/request'
import { useUserStore } from '@/store'
export const http = <T>(options: CustomRequestOptions) => {
return new Promise<IResData<T>>((resolve, reject) => {
@ -14,8 +15,15 @@ export const http = <T>(options: CustomRequestOptions) => {
success(res) {
if (res.statusCode >= 200 && res.statusCode < 300) {
if (res.data.errorCode === 403) {
// userStore.clearUserInfo()
// uni.navigateTo({ url: '/pages/login/login' })
const $user = useUserStore()
$user.logout()
uni.switchTab({
url: '/pages/home/home'
})
uni.showToast({
icon: 'none',
title: '登录已过期,请重新登录'
})
reject(res)
} else {
resolve(res.data as IResData<T>)
@ -30,6 +38,7 @@ export const http = <T>(options: CustomRequestOptions) => {
},
// 响应失败
fail(err) {
console.log('请求失败', err)
uni.showToast({
icon: 'none',
title: '网络错误,请重试'
@ -37,7 +46,6 @@ export const http = <T>(options: CustomRequestOptions) => {
reject(err)
},
complete(res) {
console.log(1111, options)
console.log(options.url, {
env: import.meta.env.VITE_APP_ENV,
statusCode: res?.statusCode,