hookehuyr

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

- 新建src/utils/userProfile.js工具文件,封装标准化的更新用户资料请求参数构建逻辑
- 重构AddProfile和EditProfile页面的保存逻辑,统一使用工具处理表单数据
- 为AddProfile新增路由参数解析,支持带入reg_source和reg_stage_id请求参数
- 完善EditProfile表单验证,补充性别和轮椅需求的校验逻辑
- 统一项目代码格式,修正多余分号和导入语句风格
/*
* @Date: 2024-01-01 00:00:00
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-09-02 20:33:00
* @LastEditTime: 2026-05-20 11:23:02
* @FilePath: /lls_program/src/api/user.js
* @Description: 用户相关接口
*/
import { fn, fetch } from './fn';
import { fn, fetch } from './fn'
const Api = {
GET_PROFILE: '/srv/?a=user&t=get_profile',
UPDATE_PROFILE: '/srv/?a=user&t=update_profile',
GET_PROFILE: '/srv/?a=user&t=get_profile',
UPDATE_PROFILE: '/srv/?a=user&t=update_profile',
}
/**
......@@ -28,7 +28,7 @@ const Api = {
* @returns {boolean} response.data.user.wheelchair_needed - 是否需要轮椅
* @returns {number} response.data.user.gender - 用户性别 (0=女, 1=男)
*/
export const getUserProfileAPI = (params) => fn(fetch.get(Api.GET_PROFILE, params));
export const getUserProfileAPI = params => fn(fetch.get(Api.GET_PROFILE, params))
/**
* @description: 更新个人信息
......@@ -38,5 +38,7 @@ export const getUserProfileAPI = (params) => fn(fetch.get(Api.GET_PROFILE, param
* @param {string} params.avatar_url - 用户头像URL
* @param {boolean} params.wheelchair_needed - 是否需要轮椅
* @param {number} params.gender - 用户性别 (0=女, 1=男)
* @param {string} [params.reg_source] - 注册来源
* @param {number} [params.reg_stage_id] - 注册关卡ID
*/
export const updateUserProfileAPI = (params) => fn(fetch.post(Api.UPDATE_PROFILE, params));
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.
/*
* @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) {
payload[key] = key === 'reg_stage_id' ? Number(value) : value
}
})
return payload
}