| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- import { currentUser as mockCurrentUser } from '@/data/mock'
- const APPLY_KEY = 'aimill_hr_applications'
- const DRAFT_KEY = 'aimill_hr_application_drafts'
- const APPROVAL_KEY = 'aimill_hr_approval_results'
- const TRAINING_KEY = 'aimill_hr_training_progress'
- const PROFILE_KEY = 'aimill_hr_profile_changes'
- const AUTH_KEY = 'aimill_hr_auth'
- const REMEMBER_KEY = 'aimill_hr_remembered_account'
- const PASSWORD_MEMO_KEY = 'passwordMemo'
- const PASSWORD_INFO_KEY = 'passInfo'
- const TOKEN_KEY = 'token'
- const USER_INFO_KEY = 'userInfo'
- const TREE_KEY = 'treeList'
- const AUTHORITIES_KEY = 'authorities'
- const CURRENT_USER_KEY = 'currentUser'
- const API_INFO_KEY = 'apiInfo'
- export const DEMO_ACCOUNT = 'ZY20230128'
- export const DEMO_PASSWORD = '123456'
- export function saveLoginSession(data, account) {
- const userInfo = data && typeof data === 'object' ? data : {}
- const token = userInfo.token || `demo-token-${Date.now()}`
- const normalizedAccount = String(account || userInfo.loginName || '').trim().toUpperCase()
- uni.setStorageSync(TOKEN_KEY, token)
- uni.setStorageSync(USER_INFO_KEY, { ...userInfo, token, loginName: normalizedAccount })
- uni.setStorageSync(AUTH_KEY, { account: normalizedAccount, loggedInAt: Date.now() })
- }
- export function login(account, password, remember = true) {
- const normalizedAccount = String(account || '').trim().toUpperCase()
- if (normalizedAccount !== DEMO_ACCOUNT || String(password) !== DEMO_PASSWORD) {
- return false
- }
- saveLoginSession({
- token: `demo-token-${Date.now()}`,
- sessionId: 'demo-session',
- userId: normalizedAccount,
- userName: '陈晓雨',
- loginName: normalizedAccount,
- }, normalizedAccount)
- saveRememberedCredentials({
- account: normalizedAccount,
- password,
- rememberPassword: remember,
- })
- savePermissionData([], [])
- return true
- }
- export function logout() {
- [AUTH_KEY, TOKEN_KEY, USER_INFO_KEY, TREE_KEY, AUTHORITIES_KEY, CURRENT_USER_KEY].forEach((key) =>
- uni.removeStorageSync(key),
- )
- }
- export function isLoggedIn() {
- return Boolean(uni.getStorageSync(TOKEN_KEY) && uni.getStorageSync(USER_INFO_KEY))
- }
- // 服务器模式下需要的是真实 token(demo 登录的是 demo-token- 开头,残留时视为无效)
- export function hasServerAuth() {
- const token = uni.getStorageSync(TOKEN_KEY)
- const userInfo = uni.getStorageSync(USER_INFO_KEY)
- return Boolean(token && userInfo && !String(token).startsWith('demo-token-'))
- }
- export function getRememberedAccount() {
- return getRememberedCredentials().account
- }
- export function saveRememberedCredentials({ account, password, rememberPassword }) {
- const normalizedAccount = String(account || '').trim()
- if (!rememberPassword) {
- uni.removeStorageSync(PASSWORD_MEMO_KEY)
- uni.removeStorageSync(PASSWORD_INFO_KEY)
- uni.removeStorageSync(REMEMBER_KEY)
- return
- }
- uni.setStorageSync(PASSWORD_MEMO_KEY, '1')
- uni.setStorageSync(PASSWORD_INFO_KEY, { username: normalizedAccount, passwd: String(password || '') })
- uni.setStorageSync(REMEMBER_KEY, normalizedAccount)
- }
- export function getRememberedCredentials() {
- const remembered = uni.getStorageSync(PASSWORD_INFO_KEY) || {}
- const rememberPassword = uni.getStorageSync(PASSWORD_MEMO_KEY) === '1'
- return {
- account: remembered.username || uni.getStorageSync(REMEMBER_KEY) || '',
- password: rememberPassword ? remembered.passwd || '' : '',
- rememberPassword,
- }
- }
- export function savePermissionData(tree, authorities) {
- uni.setStorageSync(TREE_KEY, JSON.stringify(Array.isArray(tree) ? tree : []))
- uni.setStorageSync(AUTHORITIES_KEY, JSON.stringify(Array.isArray(authorities) ? authorities : []))
- }
- export function getLoginUser() {
- return uni.getStorageSync(USER_INFO_KEY) || null
- }
- export function saveCurrentUser(data) {
- if (!data) return
- uni.setStorageSync(CURRENT_USER_KEY, data)
- }
- // 把 /system/account/getLoginUser 的 CurrentUserVO 映射成页面里使用的字段
- function mapCurrentUser(vo) {
- if (!vo || typeof vo !== 'object') return null
- const name = String(vo.name || '')
- return {
- id: vo.jobNumber || vo.loginName || '',
- name,
- initials: name ? name.charAt(0) : '',
- department: vo.deptName || '',
- position: vo.postName || '',
- company: vo.groupName || '',
- phone: vo.phone || '',
- entryDate: vo.entryDate || '',
- workAge: vo.workAge || '',
- raw: vo,
- }
- }
- function isServerMode() {
- const info = uni.getStorageSync(API_INFO_KEY)
- return Boolean(info && info.mode === 'server')
- }
- // 演示模式 → mock 数据;服务器模式 → 接口返回的数据;服务器模式未拉到则返回 null
- export function getCurrentUser() {
- if (!isServerMode()) return mockCurrentUser
- const stored = uni.getStorageSync(CURRENT_USER_KEY)
- return mapCurrentUser(stored)
- }
- export function getAuthCredentials() {
- const userInfo = uni.getStorageSync(USER_INFO_KEY) || {}
- return {
- token: userInfo.token || '',
- sessionId: userInfo.sessionId || '',
- }
- }
- export function clearDemoStorage() {
- [APPLY_KEY, DRAFT_KEY, APPROVAL_KEY, TRAINING_KEY, PROFILE_KEY].forEach((key) =>
- uni.removeStorageSync(key),
- )
- }
- export function getApplications() {
- const saved = uni.getStorageSync(APPLY_KEY)
- return Array.isArray(saved) ? saved : []
- }
- export function addApplication(item) {
- const list = getApplications()
- list.unshift({ ...item, id: Date.now(), status: '审批中', createdAt: formatNow() })
- uni.setStorageSync(APPLY_KEY, list)
- return list
- }
- export function saveDraft(type, form) {
- const drafts = uni.getStorageSync(DRAFT_KEY) || {}
- drafts[type] = { ...form, savedAt: formatNow() }
- uni.setStorageSync(DRAFT_KEY, drafts)
- }
- export function getDraft(type) {
- const drafts = uni.getStorageSync(DRAFT_KEY) || {}
- return drafts[type] || null
- }
- export function removeDraft(type) {
- const drafts = uni.getStorageSync(DRAFT_KEY) || {}
- delete drafts[type]
- uni.setStorageSync(DRAFT_KEY, drafts)
- }
- export function getApprovalResults() {
- const saved = uni.getStorageSync(APPROVAL_KEY)
- return saved && typeof saved === 'object' ? saved : {}
- }
- export function setApprovalResult(id, status, comment = '') {
- const results = getApprovalResults()
- results[id] = { status, comment, handledAt: formatNow() }
- uni.setStorageSync(APPROVAL_KEY, results)
- return results[id]
- }
- export function getTrainingProgress(defaults) {
- const saved = uni.getStorageSync(TRAINING_KEY) || {}
- return defaults.map((item) => ({ ...item, progress: saved[item.id] ?? item.progress }))
- }
- export function setTrainingProgress(id, progress) {
- const saved = uni.getStorageSync(TRAINING_KEY) || {}
- saved[id] = progress
- uni.setStorageSync(TRAINING_KEY, saved)
- }
- export function saveProfileChange(item) {
- const list = uni.getStorageSync(PROFILE_KEY) || []
- list.unshift({ ...item, id: Date.now(), status: '审核中', createdAt: formatNow() })
- uni.setStorageSync(PROFILE_KEY, list)
- return list
- }
- export function formatNow() {
- const d = new Date()
- const pad = (n) => String(n).padStart(2, '0')
- return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}`
- }
|