feat: refresh profile and settings pages
This commit is contained in:
+16
-20
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user