diff --git a/app/(tabs)/personal.tsx b/app/(tabs)/personal.tsx index 61d90ee..291e7e9 100644 --- a/app/(tabs)/personal.tsx +++ b/app/(tabs)/personal.tsx @@ -212,6 +212,9 @@ export default function PersonalScreen() { {displayName} + {userProfile.memberNumber && ( + 会员编号: {userProfile.memberNumber} + )} pushIfAuthedElseLogin('/profile/edit')}> {isLoggedIn ? '编辑' : '登录'} @@ -480,6 +483,11 @@ const styles = StyleSheet.create({ color: '#9370DB', fontWeight: '500', }, + userMemberNumber: { + fontSize: 10, + color: '#6C757D', + marginTop: 4, + }, editButton: { backgroundColor: '#9370DB', paddingHorizontal: 16, diff --git a/store/userSlice.ts b/store/userSlice.ts index 38e8e54..416a8b3 100644 --- a/store/userSlice.ts +++ b/store/userSlice.ts @@ -20,12 +20,16 @@ export async function preloadUserData() { AsyncStorage.getItem(STORAGE_KEYS.authToken), ]); - let profile: UserProfile = {}; + let profile: UserProfile = { + memberNumber: 0 + }; if (profileStr) { try { profile = JSON.parse(profileStr) as UserProfile; } catch { - profile = {}; + profile = { + memberNumber: 0 + }; } } @@ -40,7 +44,11 @@ export async function preloadUserData() { return preloadedUserData; } catch (error) { console.error('预加载用户数据失败:', error); - preloadedUserData = { token: null, profile: {}, privacyAgreed: false }; + preloadedUserData = { + token: null, profile: { + memberNumber: 0 + }, privacyAgreed: false + }; return preloadedUserData; } } @@ -57,6 +65,7 @@ export type UserProfile = { name?: string; email?: string; gender?: Gender; + memberNumber: number birthDate?: string; weight?: string; height?: string; @@ -108,6 +117,7 @@ const getInitialState = (): UserState => { name: DEFAULT_MEMBER_NAME, isVip: false, freeUsageCount: 3, + memberNumber: 0, maxUsageCount: 5, ...preloaded.profile, // 合并预加载的用户资料 }, @@ -340,7 +350,9 @@ const userSlice = createSlice({ }) .addCase(logout.fulfilled, (state) => { state.token = null; - state.profile = {}; + state.profile = { + memberNumber: 0 + }; }) .addCase(setPrivacyAgreed.fulfilled, (state) => { })