hookehuyr

feat(user-profile): 新增参数构建工具并完善用户资料提交逻辑

- 新建src/utils/userProfile.js工具文件,封装标准化的更新用户资料请求参数构建逻辑
- 重构AddProfile和EditProfile页面的保存逻辑,统一使用工具处理表单数据
- 为AddProfile新增路由参数解析,支持带入reg_source和reg_stage_id请求参数
- 完善EditProfile表单验证,补充性别和轮椅需求的校验逻辑
- 统一项目代码格式,修正多余分号和导入语句风格
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',
12 - UPDATE_PROFILE: '/srv/?a=user&t=update_profile', 12 + UPDATE_PROFILE: '/srv/?a=user&t=update_profile',
13 } 13 }
14 14
15 /** 15 /**
...@@ -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.
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 +}