feat: refresh profile and settings pages

This commit is contained in:
2026-08-07 17:21:05 +08:00
parent 8fb07f96c9
commit 2b6c74fc97
7 changed files with 63 additions and 70 deletions
+16 -20
View File
@@ -73,7 +73,7 @@ export default function ProfilePage() {
const sync = () => {
const info = getUserInfo()
if (info?.openid) {
if (info && info.openid) {
setIsLoggedIn(true)
setUserInfoState({ nickName: info.nickName || '', avatarUrl: info.avatarUrl || '' })
} else {
@@ -134,7 +134,7 @@ export default function ProfilePage() {
console.log('[Profile] wx.login 成功,code=', wxLogin.code)
const result = await login(wxLogin.code)
console.log('[Profile] 后端 /auth/login 返回:', JSON.stringify(result))
if (!result?.accessToken) {
if (!result || !result.accessToken) {
loginFail('登录失败,未拿到 token')
return
}
@@ -142,7 +142,7 @@ export default function ProfilePage() {
let openid = ''
try {
const me = await getMe()
openid = me?.openid || ''
openid = (me && me.openid) || ''
} catch {
openid = ''
}
@@ -168,7 +168,7 @@ export default function ProfilePage() {
loginFinish(result.accessToken, openid, result.nickname || '', result.avatar || '')
} catch (e) {
console.error('[Profile] 登录流程出错:', e)
loginFail((e as Error)?.message || '后端连接失败,请检查网络')
loginFail((e && (e as Error).message) || '后端连接失败,请检查网络')
}
}
@@ -186,7 +186,7 @@ export default function ProfilePage() {
let openid = ''
try {
const me = await getMe()
openid = me?.openid || ''
openid = (me && me.openid) || ''
} catch {
openid = ''
}
@@ -196,14 +196,14 @@ export default function ProfilePage() {
}
const stored = getUserInfo()
loginFinish(
stored?.accessToken || getToken(),
(stored && stored.accessToken) || getToken(),
openid,
loginNickName,
loginAvatarUrl
)
} catch (e) {
console.error('[Profile] 保存资料出错:', e)
loginFail((e as Error)?.message || '保存失败')
loginFail((e && (e as Error).message) || '保存失败')
}
}
@@ -282,8 +282,7 @@ export default function ProfilePage() {
<View className='profile-page'>
{/* 用户信息头部 */}
<View className='profile-header dashed-card mt-20' style={{ marginTop: `${safe.headerPaddingTop}px` }}>
<View className='star-badge' />
<View className='profile-header surface-card mt-20' style={{ marginTop: `${safe.headerPaddingTop}px` }}>
<View className='user-info'>
{isLoggedIn && userInfo.avatarUrl ? (
<Image className='avatar' src={userInfo.avatarUrl} mode='aspectFill' />
@@ -337,8 +336,7 @@ export default function ProfilePage() {
<Text className='section-title'></Text>
<View className='menu-grid'>
{MENU_ITEMS.map((item, idx) => (
<View key={idx} className='menu-card dashed-card' onTap={() => handleMenuClick(item.path, item.label)}>
<View className='star-badge' />
<View key={idx} className='menu-card surface-card' onTap={() => handleMenuClick(item.path, item.label)}>
<Image className='menu-icon-img' src={ICON_MAP[item.label]} mode='aspectFit' />
<Text className='menu-label'>{item.label}</Text>
</View>
@@ -347,8 +345,7 @@ export default function ProfilePage() {
</View>
{/* 企业定制入口 */}
<View className='enterprise-section dashed-card mt-20'>
<View className='star-badge' />
<View className='enterprise-section surface-card mt-20'>
<View className='flex-between'>
<View className='flex-column'>
<View className='flex-center'>
@@ -357,7 +354,7 @@ export default function ProfilePage() {
</View>
<Text className='enterprise-desc'></Text>
</View>
<View className='btn-gradient enterprise-btn'>
<View className='btn-primary enterprise-btn'>
<Text></Text>
</View>
</View>
@@ -368,18 +365,17 @@ export default function ProfilePage() {
{/* 登录弹窗 */}
{showLogin && (
<View className='modal-overlay'>
<View className='login-card dashed-card'>
<View className='star-badge' />
<View className='login-card surface-card'>
<Text className='login-title'></Text>
{loginStep === 'entry' ? (
<>
<Text className='login-desc'></Text>
<View className='login-actions'>
<View className='btn-outline' onTap={handleCloseLogin}>
<View className='btn-secondary' onTap={handleCloseLogin}>
<Text></Text>
</View>
<View className='btn-gradient' onTap={handleLogin}>
<View className='btn-primary' onTap={handleLogin}>
<Text></Text>
</View>
</View>
@@ -406,10 +402,10 @@ export default function ProfilePage() {
onInput={(e: any) => setLoginNickName(e.detail.value)}
/>
<View className='login-actions'>
<View className='btn-outline' onTap={handleCloseLogin}>
<View className='btn-secondary' onTap={handleCloseLogin}>
<Text></Text>
</View>
<View className='btn-gradient' onTap={handleSaveProfile}>
<View className='btn-primary' onTap={handleSaveProfile}>
<Text></Text>
</View>
</View>