Files
x-server-mobile/frontend/src/stores/user.ts
T
root 04953b22dc feat: 完善审批功能
- 新增通用审批列表页面(我发起的/待我审批/我已审批)
- 新增通用审批详情页面(支持审批通过/拒绝操作)
- 修复审批列表过滤逻辑("我已审批"只显示已完成订单)
- 修复登录页面未设置 Zustand store 的问题
- 修复 User 类型定义(id 改为 number 类型)
- 修复草稿恢复时的日期转换问题
- 创建测试数据脚本(test_data.php)
- 安装 webman 官方依赖包(database, redis, pagination 等)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:54:38 +08:00

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,
}),
}
)
)