feat(user-profile): 新增参数构建工具并完善用户资料提交逻辑
- 新建src/utils/userProfile.js工具文件,封装标准化的更新用户资料请求参数构建逻辑 - 重构AddProfile和EditProfile页面的保存逻辑,统一使用工具处理表单数据 - 为AddProfile新增路由参数解析,支持带入reg_source和reg_stage_id请求参数 - 完善EditProfile表单验证,补充性别和轮椅需求的校验逻辑 - 统一项目代码格式,修正多余分号和导入语句风格
Showing
4 changed files
with
39 additions
and
4 deletions
| 1 | /* | 1 | /* |
| 2 | * @Date: 2024-01-01 00:00:00 | 2 | * @Date: 2024-01-01 00:00:00 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2025-09-02 20:33:00 | 4 | + * @LastEditTime: 2026-05-20 11:23:02 |
| 5 | * @FilePath: /lls_program/src/api/user.js | 5 | * @FilePath: /lls_program/src/api/user.js |
| 6 | * @Description: 用户相关接口 | 6 | * @Description: 用户相关接口 |
| 7 | */ | 7 | */ |
| 8 | -import { fn, fetch } from './fn'; | 8 | +import { fn, fetch } from './fn' |
| 9 | 9 | ||
| 10 | const Api = { | 10 | const Api = { |
| 11 | GET_PROFILE: '/srv/?a=user&t=get_profile', | 11 | GET_PROFILE: '/srv/?a=user&t=get_profile', |
| ... | @@ -28,7 +28,7 @@ const Api = { | ... | @@ -28,7 +28,7 @@ const Api = { |
| 28 | * @returns {boolean} response.data.user.wheelchair_needed - 是否需要轮椅 | 28 | * @returns {boolean} response.data.user.wheelchair_needed - 是否需要轮椅 |
| 29 | * @returns {number} response.data.user.gender - 用户性别 (0=女, 1=男) | 29 | * @returns {number} response.data.user.gender - 用户性别 (0=女, 1=男) |
| 30 | */ | 30 | */ |
| 31 | -export const getUserProfileAPI = (params) => fn(fetch.get(Api.GET_PROFILE, params)); | 31 | +export const getUserProfileAPI = params => fn(fetch.get(Api.GET_PROFILE, params)) |
| 32 | 32 | ||
| 33 | /** | 33 | /** |
| 34 | * @description: 更新个人信息 | 34 | * @description: 更新个人信息 |
| ... | @@ -38,5 +38,7 @@ export const getUserProfileAPI = (params) => fn(fetch.get(Api.GET_PROFILE, param | ... | @@ -38,5 +38,7 @@ export const getUserProfileAPI = (params) => fn(fetch.get(Api.GET_PROFILE, param |
| 38 | * @param {string} params.avatar_url - 用户头像URL | 38 | * @param {string} params.avatar_url - 用户头像URL |
| 39 | * @param {boolean} params.wheelchair_needed - 是否需要轮椅 | 39 | * @param {boolean} params.wheelchair_needed - 是否需要轮椅 |
| 40 | * @param {number} params.gender - 用户性别 (0=女, 1=男) | 40 | * @param {number} params.gender - 用户性别 (0=女, 1=男) |
| 41 | + * @param {string} [params.reg_source] - 注册来源 | ||
| 42 | + * @param {number} [params.reg_stage_id] - 注册关卡ID | ||
| 41 | */ | 43 | */ |
| 42 | -export const updateUserProfileAPI = (params) => fn(fetch.post(Api.UPDATE_PROFILE, params)); | 44 | +export const updateUserProfileAPI = params => fn(fetch.post(Api.UPDATE_PROFILE, params)) | ... | ... |
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
src/utils/userProfile.js
0 → 100644
| 1 | +/* | ||
| 2 | + * @Date: 2026-05-20 11:40:00 | ||
| 3 | + * @LastEditors: hookehuyr hookehuyr@gmail.com | ||
| 4 | + * @LastEditTime: 2026-05-20 11:40:00 | ||
| 5 | + * @FilePath: /lls_program/src/utils/userProfile.js | ||
| 6 | + * @Description: 用户资料相关工具函数 | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * @description 构建更新个人资料请求参数 | ||
| 11 | + * @param {Object} formData - 页面表单数据 | ||
| 12 | + * @param {Object} extraParams - 额外补充参数 | ||
| 13 | + * @returns {Object} 仅包含接口需要的字段 | ||
| 14 | + */ | ||
| 15 | +export const buildUpdateUserProfilePayload = (formData, extraParams = {}) => { | ||
| 16 | + const payload = { | ||
| 17 | + nickname: (formData?.nickname || '').trim(), | ||
| 18 | + avatar_url: formData?.avatar_url || '', | ||
| 19 | + birth_date: formData?.birth_date || '', | ||
| 20 | + wheelchair_needed: Boolean(formData?.wheelchair_needed), | ||
| 21 | + gender: formData?.gender, | ||
| 22 | + } | ||
| 23 | + | ||
| 24 | + const optionalKeys = ['reg_source', 'reg_stage_id'] | ||
| 25 | + optionalKeys.forEach(key => { | ||
| 26 | + const value = extraParams[key] | ||
| 27 | + if (value !== '' && value !== undefined && value !== null) { | ||
| 28 | + payload[key] = key === 'reg_stage_id' ? Number(value) : value | ||
| 29 | + } | ||
| 30 | + }) | ||
| 31 | + | ||
| 32 | + return payload | ||
| 33 | +} |
-
Please register or login to post a comment