This commit is contained in:
2026-09-13 02:28:46 +08:00
parent df5492a48a
commit 42f9530a59
27 changed files with 979 additions and 149 deletions
+45 -13
View File
@@ -3,6 +3,11 @@ import * as auth from '../../utils/auth'
import { UserInfo, QuotaItem } from '../../types/models'
import { QuotaType, STORAGE_KEYS } from '../../utils/config'
import { formatDate } from '../../utils/format'
import { setTabBarSelected } from '../../utils/tabbar'
import { logger } from '../../utils/logger'
// 日志模块名
const LOG = 'profile'
function getZodiac(birthDay: number): string {
if (!birthDay) return ''
@@ -64,18 +69,18 @@ Page({
},
syncTabBar() {
const tabBar = (this as any).getTabBar && (this as any).getTabBar()
// 红点由 tabBar 自身在登录态下同步,这里只更新选中态
if (tabBar) tabBar.setData({ selected: 4 })
setTabBarSelected(4)
},
fetchUser() {
request<UserInfo>({ url: '/user/info', showError: false })
.then((user) => {
logger.debug(LOG, '用户信息加载成功')
wx.setStorageSync(STORAGE_KEYS.USER_INFO, user)
this.setData({ userInfo: user, zodiac: getZodiac(user.birth_day) })
})
.catch(() => {})
.catch((e: any) => logger.warn(LOG, '用户信息加载失败, code=', e && e.code))
},
fetchQuota() {
@@ -83,8 +88,9 @@ Page({
.then((res) => {
const upload = res.quotas.find((q) => q.quota_type === QuotaType.UPLOAD)
if (upload) this.setData({ uploadRemain: upload.remain })
logger.debug(LOG, '额度加载成功, 上传剩余=', upload ? upload.remain : 0)
})
.catch(() => {})
.catch((e: any) => logger.warn(LOG, '额度加载失败(静默降级), code=', e && e.code))
},
onEdit() {
@@ -120,7 +126,7 @@ Page({
wx.showActionSheet({
itemList: ['男', '女'],
success: (res) => this.setData({ 'editForm.sex': res.tapIndex + 1 }),
fail: () => {}, // 取消选择属正常操作,不必抛错日志
fail: (e) => logger.debug(LOG, '取消性别选择, err=', e && e.errMsg),
})
},
@@ -164,39 +170,65 @@ Page({
}
this.setData({ saving: true })
logger.debug(LOG, '提交资料变更, 字段=', Object.keys(body).join(','))
request({ url: '/user/profile', method: 'PUT', data: body })
.then(() => {
logger.info(LOG, '资料保存成功')
wx.showToast({ title: '已保存', icon: 'success' })
finish()
})
.catch(() => this.setData({ avatarUploading: false, saving: false }))
.catch((e: any) => {
logger.warn(LOG, '资料保存失败, code=', e && e.code)
this.setData({ avatarUploading: false, saving: false })
})
}
if (this.data.avatarChanged && avatar) {
this.setData({ avatarUploading: true })
uploadFile<{ avatar: string }>(avatar, 'file', '/user/avatar/upload')
.then(() => saveProfile())
.catch(() => this.setData({ avatarUploading: false, saving: false }))
.then(() => {
logger.info(LOG, '头像上传成功')
saveProfile()
})
.catch((e: any) => {
logger.warn(LOG, '头像上传失败, code=', e && e.code)
this.setData({ avatarUploading: false, saving: false })
})
} else {
saveProfile()
}
},
onTapMall() {
wx.navigateTo({ url: '/pages/mall/mall' })
wx.navigateTo({
url: '/pages/mall/mall',
fail: (e) => logger.warn(LOG, 'navigateTo 商城失败, err=', e && e.errMsg),
})
},
onTapOrder() {
wx.navigateTo({ url: '/pages/order/order' })
wx.navigateTo({
url: '/pages/order/order',
fail: (e) => logger.warn(LOG, 'navigateTo 订单失败, err=', e && e.errMsg),
})
},
onTapNotification() {
wx.navigateTo({ url: '/pages/notification/notification' })
wx.navigateTo({
url: '/pages/notification/notification',
fail: (e) => logger.warn(LOG, 'navigateTo 通知失败, err=', e && e.errMsg),
})
},
onTapCollect() {
wx.setStorageSync(STORAGE_KEYS.OPEN_COLLECT, 1)
wx.switchTab({ url: '/pages/outfit/outfit' })
wx.switchTab({
url: '/pages/outfit/outfit',
fail: (e) => logger.warn(LOG, 'switchTab 穿搭失败, err=', e && e.errMsg),
})
},
onTapFlow() {
wx.navigateTo({ url: '/pages/mall/mall?tab=flow' })
wx.navigateTo({
url: '/pages/mall/mall?tab=flow',
fail: (e) => logger.warn(LOG, 'navigateTo 流水失败, err=', e && e.errMsg),
})
},
onTapService() {
wx.showToast({ title: '客服与反馈敬请期待', icon: 'none' })