import Taro from '@tarojs/taro' import { UserInfoActionType } from '../constants/userInfo' export type UserParam = { department_code?: string department_id?: string department_name?: string physical_warehouse?: number physical_warehouse_name?: string token?: string user_code?: number user_id?: string user_name?: number avatar_url?: string } export type UserAdminParam = { avatar_url?: string, open_id?: string, physical_warehouse?: number, physical_warehouse_name?: string, union_id?: string, user_code?: string, user_id?: number, user_name?: string, wechat_user_open_id?: number is_authorize_name?: boolean, is_authorize_phone?: boolean, phone?:string, authentication_status?:number, authentication_status_name: string, company_id?: number, company_name?: string, founder_user_id?: string, founder_user_name?: string, order_access_status?: number, order_access_status_name?: string, purchaser_type?: number, purchaser_type_name?: string } export type SortCodeParam = { shareShortDetail?: {title:string, code: string, img: string}, //详情分享页面短码 shareShortPage?: {title:string, code: string, img: string}, //右上角分享页面短码 } export type DataParam = { token?: string session_key?: string, userInfo: UserParam, adminUserInfo: UserAdminParam, sort_code: SortCodeParam logingStatus?: boolean //登录状态 true 正在登录 } export type UserInfoAction = { type: UserInfoActionType data?: DataParam } const INIT_USER = { userInfo: Taro.getStorageSync('userInfo')?JSON.parse(Taro.getStorageSync('userInfo')):null, adminUserInfo: Taro.getStorageSync('adminUserInfo')?JSON.parse(Taro.getStorageSync('adminUserInfo')):null, token: Taro.getStorageSync('token')||'', session_key: Taro.getStorageSync('session_key')||'', sort_code: Taro.getStorageSync('sort_code')?JSON.parse(Taro.getStorageSync('sort_code')):null, logingStatus: false } export default (state = INIT_USER, action: UserInfoAction) => { const { type, data } = action switch (type) { case UserInfoActionType.SET_USERINFO: Taro.setStorageSync('userInfo', JSON.stringify(data?.userInfo)) return { ...state, ...data } case UserInfoActionType.SET_ADMINUSERINFO: Taro.setStorageSync('adminUserInfo', JSON.stringify(data?.adminUserInfo)) return { ...state, ...data } case UserInfoActionType.SET_TOKEN: Taro.setStorageSync('token', data?.token) return { ...state, ...data } case UserInfoActionType.SET_SESSIONKEY: Taro.setStorageSync('session_key', data?.session_key) return { ...state, ...data } case UserInfoActionType.SET_SORTCODE: Taro.setStorageSync('sort_code', JSON.stringify(data?.sort_code)) return { ...state, ...data } case UserInfoActionType.CLEAR_TOKEN: Taro.removeStorageSync('token') return { ...state, token: '' } case UserInfoActionType.CLEAR_SESSIONKEY: Taro.removeStorageSync('session_key') return { ...state, session_key: '' } case UserInfoActionType.CLEAR_USERINFO: Taro.removeStorageSync('userInfo') return { ...state, userInfo: null } case UserInfoActionType.CLEAR_ADMINUSERINFO: Taro.removeStorageSync('adminUserInfo') return { ...state, adminUserInfo: null } case UserInfoActionType.CLEAR_SORTCODE: Taro.removeStorageSync('sort_code') return { ...state, sortCode: null } case UserInfoActionType.LOGIN_STATUS: return { ...state, ...data } default: return state } }