userProfile.js
1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
* @Date: 2026-05-20 11:40:00
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2026-05-20 11:40:00
* @FilePath: /lls_program/src/utils/userProfile.js
* @Description: 用户资料相关工具函数
*/
/**
* @description 构建更新个人资料请求参数
* @param {Object} formData - 页面表单数据
* @param {Object} extraParams - 额外补充参数
* @returns {Object} 仅包含接口需要的字段
*/
export const buildUpdateUserProfilePayload = (formData, extraParams = {}) => {
const payload = {
nickname: (formData?.nickname || '').trim(),
avatar_url: formData?.avatar_url || '',
birth_date: formData?.birth_date || '',
wheelchair_needed: Boolean(formData?.wheelchair_needed),
gender: formData?.gender,
}
const optionalKeys = ['reg_source', 'reg_stage_id']
optionalKeys.forEach(key => {
const value = extraParams[key]
if (value !== '' && value !== undefined && value !== null) {
// reg_stage_id 需要保持数值类型,其他来源字段按原样透传即可。
payload[key] = key === 'reg_stage_id' ? Number(value) : value
}
})
return payload
}
/**
* @description 判断用户是否已完善扫码打卡所需的个人资料
* @param {Object} user - 用户资料
* @returns {boolean} 是否已完善
*/
export const isUserProfileComplete = (user = {}) => {
// 扫码打卡只关心能否继续后续流程所需的关键资料是否齐全,
// 不把 session、年龄限制等页面外规则混进这里。
return Boolean(
user?.nickname &&
user?.birth_date &&
user?.gender !== null &&
user?.gender !== undefined &&
user?.wheelchair_needed !== null &&
user?.wheelchair_needed !== undefined
)
}