Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
basic-uniapp-v3
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-uniapp-v3
Commits
61ee6482
提交
61ee6482
authored
10月 07, 2023
作者:
方治民
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 添加 UserStore 管理,优化持久化存储策略,使得在 APP 下数据不丢失
上级
432a3fe4
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
122 行增加
和
4 行删除
+122
-4
user.ts
src/store/modules/user.ts
+99
-0
index.ts
src/utils/auth/index.ts
+19
-2
navigate.ts
src/utils/page/navigate.ts
+2
-2
global.d.ts
types/global.d.ts
+2
-0
没有找到文件。
src/store/modules/user.ts
0 → 100644
浏览文件 @
61ee6482
import
{
defineStore
}
from
'pinia'
import
{
store
}
from
'/@/store'
import
{
getAuthCache
,
setAuthCache
}
from
'@/utils/auth'
import
{
TOKEN_KEY
,
USER_INFO_KEY
}
from
'@/enums/cacheEnum'
import
type
{
defs
}
from
'@/api/services'
import
Navigate
from
'@/utils/page/navigate'
export
type
UserInfo
=
Partial
<
defs
.
UserInfo
>
interface
UserState
{
userInfo
:
Nullable
<
UserInfo
>
token
?:
string
loading
?:
boolean
}
export
const
useUserStore
=
defineStore
({
id
:
'app-user'
,
state
:
():
UserState
=>
({
token
:
null
,
userInfo
:
null
,
loading
:
false
,
}),
getters
:
{
getToken
():
Nullable
<
string
>
{
if
(
this
.
token
)
{
return
this
.
token
}
const
token
=
getAuthCache
(
TOKEN_KEY
)
if
(
token
)
{
this
.
token
=
token
return
token
}
},
getUserInfo
():
Nullable
<
UserInfo
>
{
if
(
this
.
userInfo
)
{
return
this
.
userInfo
}
const
info
=
getAuthCache
(
USER_INFO_KEY
)
if
(
info
)
{
const
userInfo
=
JSON
.
parse
(
info
)
as
UserInfo
this
.
userInfo
=
userInfo
return
userInfo
}
return
null
},
/**
* @returns 是否为审核账号
*/
isAuditMode
():
boolean
{
return
this
.
getUserInfo
?.
mobile
===
'10000000001'
},
},
actions
:
{
setToken
(
token
:
string
)
{
this
.
token
=
token
setAuthCache
(
TOKEN_KEY
,
token
)
},
setUserInfo
(
info
:
UserInfo
)
{
this
.
userInfo
=
info
setAuthCache
(
USER_INFO_KEY
,
info
?
JSON
.
stringify
(
info
)
:
null
)
},
async
logout
()
{
if
(
this
.
loading
)
{
return
}
this
.
loading
=
true
try
{
await
API
.
auth
.
logout
.
request
()
}
finally
{
this
.
setToken
(
null
)
this
.
setUserInfo
(
null
)
await
Navigate
.
to
(
'/pages/login/login'
)
this
.
loading
=
false
}
},
async
refreshUserInfo
()
{
if
(
this
.
loading
)
{
return
}
this
.
loading
=
true
try
{
const
userInfo
=
await
API
.
userView
.
getUserInfo
.
request
()
this
.
setUserInfo
(
userInfo
)
}
finally
{
this
.
loading
=
false
}
},
},
})
// Need to be used outside the setup
export
function
useUserStoreWithOut
()
{
return
useUserStore
(
store
)
}
src/utils/auth/index.ts
浏览文件 @
61ee6482
...
...
@@ -5,24 +5,41 @@ export function getToken() {
}
export
function
getAuthCache
(
key
:
string
):
string
|
null
{
let
value
:
string
|
null
=
null
// #ifdef APP-PLUS
value
=
plus
.
storage
.
getItem
(
key
)
// #endif
// #ifndef APP-PLUS
try
{
const
value
=
uni
.
getStorageSync
(
key
)
value
=
uni
.
getStorageSync
(
key
)
if
(
value
)
{
return
value
}
}
catch
(
e
)
{}
// #endif
return
null
return
value
}
export
function
setAuthCache
(
key
:
string
,
value
:
string
)
{
// #ifdef APP-PLUS
plus
.
storage
.
setItem
(
key
,
value
)
// #endif
// #ifndef APP-PLUS
try
{
uni
.
setStorageSync
(
key
,
value
)
}
catch
(
e
)
{}
// #endif
}
export
function
clearAuthCache
()
{
// #ifdef APP-PLUS
plus
.
storage
.
clear
()
// #endif
// #ifndef APP-PLUS
try
{
uni
.
clearStorageSync
()
}
catch
(
e
)
{}
// #endif
}
src/utils/page/navigate.ts
浏览文件 @
61ee6482
...
...
@@ -30,8 +30,8 @@ export default {
* 跳转到指定页面
* @param page 页面全路径
*/
to
(
page
:
string
,
options
?:
UniNamespace
.
NavigateToOptions
)
{
uni
.
navigateTo
({
async
to
(
page
:
string
,
options
?:
UniNamespace
.
NavigateToOptions
)
{
await
uni
.
navigateTo
({
url
:
page
,
...
options
,
})
...
...
types/global.d.ts
浏览文件 @
61ee6482
...
...
@@ -2,6 +2,8 @@ import type { AxiosRequestConfig } from 'axios'
declare
global
{
type
Recordable
<
T
=
any
>
=
Record
<
string
,
T
>
type
Nullable
<
T
>
=
T
|
null
type
NonNullable
<
T
>
=
T
extends
null
|
undefined
?
never
:
T
interface
ImportMetaEnv
extends
ViteEnv
{
__
:
unknown
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论