feat(home,my): 首页和我的页从缓存回显用户信息
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
90f84cc7df
commit
e25e797b35
@@ -59,7 +59,13 @@
|
||||
overflow: hidden;
|
||||
border-radius: 24rpx;
|
||||
margin-right: 15rpx;
|
||||
background-color: red;
|
||||
color: #FFFFFF;
|
||||
font-size: 40rpx;
|
||||
font-weight: bold;
|
||||
line-height: 88rpx;
|
||||
text-align: center;
|
||||
border: 5rpx solid #ffffff;
|
||||
background-color: #1385FA;
|
||||
}
|
||||
|
||||
.userInfo {
|
||||
@@ -70,8 +76,9 @@
|
||||
color: #252535;
|
||||
height: 32rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bolder;
|
||||
line-height: 32rpx;
|
||||
margin-bottom: 20rpx;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.userSex {
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
import { get } from '../../utils/request/index'
|
||||
import { calcAge } from '../../utils/idCard/index'
|
||||
import type { UserInfo } from '../../api/index'
|
||||
|
||||
/** 页面展示用用户信息 */
|
||||
interface PageUserInfo {
|
||||
realname: string
|
||||
sex_dictText: string
|
||||
age: number
|
||||
height: number
|
||||
}
|
||||
|
||||
/** 将体重数字拆成整数 + 小数字符串 */
|
||||
const splitWeight = (weight: number): { int: number; decimal: string } => {
|
||||
@@ -10,10 +20,25 @@ const splitWeight = (weight: number): { int: number; decimal: string } => {
|
||||
Page({
|
||||
data: {
|
||||
record: null,
|
||||
userInfo: null as PageUserInfo | null,
|
||||
},
|
||||
|
||||
onShow() {
|
||||
|
||||
this._loadUserInfo()
|
||||
},
|
||||
|
||||
// 从缓存回显用户信息
|
||||
_loadUserInfo() {
|
||||
const raw = wx.getStorageSync('userInfo') as UserInfo | null
|
||||
if (!raw?.userId) return
|
||||
this.setData({
|
||||
userInfo: {
|
||||
realname: raw.realname ?? '',
|
||||
sex_dictText: raw.sex === 1 ? '男' : raw.sex === 2 ? '女' : '',
|
||||
age: calcAge(raw.birthday),
|
||||
height: raw.height ?? 0,
|
||||
},
|
||||
})
|
||||
},
|
||||
|
||||
onShareAppMessage(): WechatMiniprogram.Page.ICustomShareContent {
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
<view class="title_2">设备智联 · 掌握健康</view>
|
||||
</view>
|
||||
|
||||
<view class="user">
|
||||
<view class="userAvatar"></view>
|
||||
<view class="user" wx:if="{{ userInfo }}">
|
||||
<view class="userAvatar">{{ userInfo.realname[0] }}</view>
|
||||
<view class="userInfo">
|
||||
<view class="userName">张晓敏</view>
|
||||
<view class="userSex">男·36岁<text>丨</text>172cm</view>
|
||||
<view class="userName">{{ userInfo.realname }}</view>
|
||||
<view class="userSex">{{ userInfo.sex_dictText }}·{{ userInfo.age }}岁<text>丨</text>{{ userInfo.height }}cm</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
import { calcAge } from '../../utils/idCard/index'
|
||||
import type { UserInfo } from '../../api/index'
|
||||
|
||||
/** 页面展示用用户信息 */
|
||||
interface PageUserInfo {
|
||||
realname: string
|
||||
sex_dictText: string
|
||||
age: number
|
||||
height: number
|
||||
}
|
||||
|
||||
// pages/my/my.ts
|
||||
Page({
|
||||
|
||||
@@ -7,6 +18,7 @@ Page({
|
||||
data: {
|
||||
// 导航栏背景色,根据滚动位置动态变化
|
||||
navBgColor: 'rgba(255,255,255,0)',
|
||||
userInfo: null as PageUserInfo | null,
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -44,7 +56,21 @@ Page({
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
this._loadUserInfo()
|
||||
},
|
||||
|
||||
// 从缓存回显用户信息
|
||||
_loadUserInfo() {
|
||||
const raw = wx.getStorageSync('userInfo') as UserInfo | null
|
||||
if (!raw?.userId) return
|
||||
this.setData({
|
||||
userInfo: {
|
||||
realname: raw.realname ?? '',
|
||||
sex_dictText: raw.sex === 1 ? '男' : raw.sex === 2 ? '女' : '',
|
||||
age: calcAge(raw.birthday),
|
||||
height: raw.height ?? 0,
|
||||
},
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
<image src="/images/my/bg.png" mode="aspectFit" />
|
||||
</view>
|
||||
|
||||
<view class="user">
|
||||
<view class="userAvatar">张</view>
|
||||
<view class="user" wx:if="{{ userInfo }}">
|
||||
<view class="userAvatar">{{ userInfo.realname[0] }}</view>
|
||||
<view class="userInfo">
|
||||
<view class="userName">陈沐辰</view>
|
||||
<view class="userName">{{ userInfo.realname }}</view>
|
||||
<view class="userSex">
|
||||
<text class="meta-text">男·36岁</text>
|
||||
<text class="meta-text">{{ userInfo.sex_dictText }}·{{ userInfo.age }}岁</text>
|
||||
<text class="meta-divider">|</text>
|
||||
<text class="meta-text">172cm</text>
|
||||
<text class="meta-text">{{ userInfo.height }}cm</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -38,3 +38,17 @@ export const parseIdCard = (idCard: string): IdCardParsed => {
|
||||
sex,
|
||||
}
|
||||
}
|
||||
|
||||
/** 从生日字符串(YYYY-MM-DD)计算周岁 */
|
||||
export const calcAge = (birthday: string): number => {
|
||||
if (!birthday) return 0
|
||||
const parts = birthday.split('-').map(Number)
|
||||
const [year, month, day] = parts
|
||||
if (!year || !month || !day) return 0
|
||||
const now = new Date()
|
||||
let age = now.getFullYear() - year
|
||||
const nowMonth = now.getMonth() + 1
|
||||
const nowDay = now.getDate()
|
||||
if (nowMonth < month || (nowMonth === month && nowDay < day)) age -= 1
|
||||
return Math.max(0, age)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user