04953b22dc
- 新增通用审批列表页面(我发起的/待我审批/我已审批) - 新增通用审批详情页面(支持审批通过/拒绝操作) - 修复审批列表过滤逻辑("我已审批"只显示已完成订单) - 修复登录页面未设置 Zustand store 的问题 - 修复 User 类型定义(id 改为 number 类型) - 修复草稿恢复时的日期转换问题 - 创建测试数据脚本(test_data.php) - 安装 webman 官方依赖包(database, redis, pagination 等) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import { create } from 'zustand'
|
|
import { persist } from 'zustand/middleware'
|
|
import type { User, Company } from '@/types'
|
|
|
|
interface UserState {
|
|
user: User | null
|
|
token: string | null
|
|
currentCompany: Company | null
|
|
isLoggedIn: boolean
|
|
|
|
// Actions
|
|
setUser: (user: User | null) => void
|
|
setToken: (token: string | null) => void
|
|
setCurrentCompany: (company: Company | null) => void
|
|
login: (user: User, token: string) => void
|
|
logout: () => void
|
|
}
|
|
|
|
export const useUserStore = create<UserState>()(
|
|
persist(
|
|
(set) => ({
|
|
user: null,
|
|
token: null,
|
|
currentCompany: null,
|
|
isLoggedIn: false,
|
|
|
|
setUser: (user) => set({ user }),
|
|
setToken: (token) => set({ token }),
|
|
setCurrentCompany: (currentCompany) => set({ currentCompany }),
|
|
|
|
login: (user, token) => {
|
|
localStorage.setItem('token', token)
|
|
set({ user, token, isLoggedIn: true })
|
|
},
|
|
|
|
logout: () => {
|
|
localStorage.removeItem('token')
|
|
set({ user: null, token: null, currentCompany: null, isLoggedIn: false })
|
|
},
|
|
}),
|
|
{
|
|
name: 'user-storage',
|
|
partialize: (state) => ({
|
|
user: state.user,
|
|
token: state.token,
|
|
currentCompany: state.currentCompany,
|
|
isLoggedIn: state.isLoggedIn,
|
|
}),
|
|
}
|
|
)
|
|
)
|