首次提交:初始化项目代码

This commit is contained in:
sunct
2026-07-31 14:42:05 +08:00
commit ecca407485
84 changed files with 24158 additions and 0 deletions
+112
View File
@@ -0,0 +1,112 @@
import { clearCache } from './apiCache.js'
const TOKEN_KEY = 'user_token'
// 获取token
export function getToken() {
try {
return uni.getStorageSync(TOKEN_KEY) || ''
} catch (err) {
console.error('获取token失败:', err)
return ''
}
}
// 保存token
export function setToken(token) {
try {
if (token && typeof token === 'string') {
uni.setStorageSync(TOKEN_KEY, token)
}
} catch (err) {
console.error('保存token失败:', err)
uni.showToast({
title: '登录状态保存失败',
icon: 'none'
})
}
}
// 删除token
export function removeToken() {
try {
uni.removeStorageSync(TOKEN_KEY)
} catch (err) {
console.error('删除token失败:', err)
}
}
// 判断是否登录
export function isLogin() {
const token = getToken()
return !!token && token.length > 0
}
// 校验登录(未登录跳转)
export function checkLogin() {
if (!isLogin()) {
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
if (currentPage?.route !== 'pages/login/login') {
uni.navigateTo({
url: '/pages/login/login'
})
}
return false
}
return true
}
// 退出登录
export function logout() {
try {
// 1. 删除token(保留原有核心逻辑)
removeToken()
clearCache()
// 2. 清空用户信息缓存(解决用户名/头像/签名/邮箱残留)
uni.removeStorageSync('userName')
uni.removeStorageSync('userAvatar')
uni.removeStorageSync('userSignature')
uni.removeStorageSync('userEmail')
// 如有其他登录相关缓存,继续补充:
// uni.removeStorageSync('userInfo')
// 3. 重置全局变量(如有)
if (getApp().globalData?.userInfo) {
getApp().globalData.userInfo = null
}
if (getApp().globalData?.token) {
getApp().globalData.token = ''
}
if (getApp().globalData?.lastToken) {
getApp().globalData.lastToken = ''
}
} catch (err) {
console.error('清空登录缓存失败:', err)
uni.showToast({
title: '清空登录状态失败',
icon: 'none'
})
return // 出错则终止,避免错误跳转
}
// 4. 提示(保留原有)
uni.showToast({
title: '已退出登录',
icon: 'success',
duration: 1500
})
// 5. 关键修改:用reLaunch替代switchTab,强制重启小程序
setTimeout(() => {
uni.reLaunch({
url: '/pages/login/login', // 直接跳登录页,而非首页
fail: () => {
// 兜底:重启失败则直接跳转
uni.redirectTo({
url: '/pages/login/login'
})
}
})
}, 1500)
}