/** * 项目相关 API */ import { buildUrl } from '@/utils/url' /** * 获取项目列表 * @param {Object} params 请求参数 * @param {number} params.pageNum 页码 * @param {number} params.pageSize 每页数量 * @param {string} params.orderByColumn 排序字段 * @param {string} params.isAsc 排序方式(ascending/descending) * @param {number[]} params.statusList 项目状态列表 * @param {string} params.createId 创建人ID * @param {string} params.ownerId 负责人ID * @param {string[]} params.keys 搜索关键词数组 * @returns {Promise} 返回项目列表 */ export const getProjectList = (params = {}) => { // 处理特殊字段映射 const mappedParams = { ...params }; // 将overdue映射为devOverdue if (mappedParams.overdue !== undefined) { mappedParams.devOverdue = mappedParams.overdue; delete mappedParams.overdue; } // 将projectName映射为name if (mappedParams.projectName !== undefined) { mappedParams.name = mappedParams.projectName; delete mappedParams.projectName; } // 将projectId映射为no(用于搜索) if (mappedParams.projectId !== undefined && !mappedParams.no) { mappedParams.no = mappedParams.projectId; // 注意:这里不删除projectId,因为可能还有其他用途 } // 使用统一URL构建工具,keys数组使用bracket格式 const url = buildUrl('bst/project/list', mappedParams); return uni.$uv.http.get(url, { custom: { auth: true // 启用 token 认证 } }); }; /** * 获取项目详情 * @param {string} id 项目ID * @returns {Promise} 返回项目详情 */ export const getProjectDetail = (id) => { return uni.$uv.http.get(`bst/project/${id}`, { custom: { auth: true } }); }; /** * 创建项目 * @param {Object} data 项目数据 * @returns {Promise} 创建结果 */ export const createProject = (data) => { return uni.$uv.http.post('bst/project', data, { custom: { auth: true, catch: true // 允许在 catch 中处理错误 } }); }; /** * 更新项目 * @param {Object} data 项目数据(需包含 id) * @returns {Promise} 更新结果 */ export const updateProject = (data) => { return uni.$uv.http.put('bst/project', data, { custom: { auth: true, catch:true } }); }; /** * 删除项目 * @param {string|string[]} ids 项目ID或ID数组 * @returns {Promise} 删除结果 */ export const deleteProject = (ids) => { const idsParam = Array.isArray(ids) ? ids.join(',') : ids; return uni.$uv.http.delete(`bst/project/${idsParam}`, {}, { custom: { auth: true, catch:true } }); }; /** * 开始项目开发 * @param {Object} data * @param {string} data.id 项目ID * @param {string} data.expectedCompleteDate 预计完成日期(YYYY-MM-DD) * @returns {Promise} 操作结果 */ export const startProjectDevelopment = (data) => { return uni.$uv.http.put('bst/project/start', data, { custom: { auth: true, catch:true } }); };