OfficeSystem/api/task.js
2025-11-24 09:18:45 +08:00

208 lines
6.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 任务相关 API
*/
/**
* 获取任务列表
* @param {Object} params 请求参数
* @param {string} params.ownerId 所属人id
* @param {boolean} params.overdue 是否获取逾期任务
* @param {number[]} params.statusList 任务状态列表4对应已完成
* @param {string} params.expireTimeStart 过期时间开始范围格式yyyy-MM-dd HH:mm:ss
* @param {string} params.expireTimeEnd 过期时间结束范围格式yyyy-MM-dd HH:mm:ss
* @param {number} params.pageNum 页码
* @param {number} params.pageSize 每页数量
* @param {string} params.orderByColumn 排序字段
* @param {string} params.isAsc 排序方式ascending/descending
* @param {string} params.projectId 项目ID
* @param {string} params.type 任务类型
* @param {string} params.level 优先级
* @param {string} params.createId 创建人ID
* @param {string[]} params.passDateRange 通过日期范围 [开始日期, 结束日期]
* @param {string} params.status 任务状态
* @returns {Promise} 返回任务列表
*/
export const getTaskList = (params = {}) => {
const queryParams = [];
// 分页参数
if (params.pageNum !== undefined) {
queryParams.push(`pageNum=${params.pageNum}`);
}
if (params.pageSize !== undefined) {
queryParams.push(`pageSize=${params.pageSize}`);
}
// 排序参数
if (params.orderByColumn !== undefined && params.orderByColumn !== '') {
queryParams.push(`orderByColumn=${encodeURIComponent(params.orderByColumn)}`);
}
if (params.isAsc !== undefined && params.isAsc !== '') {
queryParams.push(`isAsc=${encodeURIComponent(params.isAsc)}`);
}
// 项目ID
if (params.projectId !== undefined && params.projectId !== '') {
queryParams.push(`projectId=${params.projectId}`);
}
// 任务类型
if (params.type !== undefined && params.type !== '') {
queryParams.push(`type=${params.type}`);
}
// 优先级
if (params.level !== undefined && params.level !== '') {
queryParams.push(`level=${params.level}`);
}
// 创建人ID
if (params.createId !== undefined && params.createId !== '') {
queryParams.push(`createId=${params.createId}`);
}
// 负责人ID
if (params.ownerId !== undefined && params.ownerId !== '') {
queryParams.push(`ownerId=${params.ownerId}`);
}
// 状态列表
if (params.statusList !== undefined && Array.isArray(params.statusList) && params.statusList.length > 0) {
// 将数组转换为重复参数格式,例如 [1,2] => "statusList=1&statusList=2"
params.statusList.forEach(status => {
queryParams.push(`statusList=${status}`);
});
}
// 任务状态(单个)
if (params.status !== undefined && params.status !== '') {
queryParams.push(`status=${params.status}`);
}
// 是否逾期
if (params.overdue !== undefined) {
queryParams.push(`overdue=${params.overdue}`);
}
// 过期时间范围
if (params.expireTimeStart !== undefined && params.expireTimeStart !== null && params.expireTimeStart !== '') {
queryParams.push(`expireTimeStart=${encodeURIComponent(params.expireTimeStart)}`);
}
if (params.expireTimeEnd !== undefined && params.expireTimeEnd !== null && params.expireTimeEnd !== '') {
queryParams.push(`expireTimeEnd=${encodeURIComponent(params.expireTimeEnd)}`);
}
// 通过日期范围
if (params.passDateRange !== undefined && Array.isArray(params.passDateRange) && params.passDateRange.length > 0) {
params.passDateRange.forEach((date, index) => {
if (date) {
queryParams.push(`passDateRange[${index}]=${encodeURIComponent(date)}`);
}
});
}
const queryString = queryParams.length > 0 ? `?${queryParams.join('&')}` : '';
return uni.$uv.http.get(`bst/task/list${queryString}`, {
custom: {
auth: true // 启用 token 认证
}
});
};
/**
* 获取任务详情
* @param {string} id 任务ID
* @returns {Promise} 返回任务详情
*/
export const getTaskDetail = (id) => {
return uni.$uv.http.get(`bst/task/${id}`, {
custom: {
auth: true // 启用 token 认证
}
});
};
/**
* 提交任务
* @param {Object} params 请求参数
* @param {string} params.id 任务ID
* @param {string} params.submitAttaches 附件, 逗号分隔的URL字符串
* @param {string} params.submitRemark 备注
* @returns {Promise} 返回提交结果
*/
export const submitTask = ({ id, submitAttaches, submitRemark }) => {
return uni.$uv.http.put('/bst/task/submit', {
id: id,
submitAttaches: submitAttaches || '',
submitRemark: submitRemark || ''
}, {
custom: {
auth: true // 启用 token 认证
}
});
};
/**
* 申请任务延期(发起审核)
* @param {Object} payload 请求数据
* @param {string|number} payload.bstId 任务ID
* @param {string} payload.bstType 审核类型
* @param {string} payload.createRemark 申请说明
* @param {string} payload.data 业务数据JSON字符串
* @returns {Promise} 返回接口响应
*/
export const applyTaskDelay = (payload) => {
return uni.$uv.http.post('/bst/verify', payload, {
custom: {
auth: true
}
});
};
/**
* 创建任务
* @param {Object} payload 任务数据
* @returns {Promise} 请求结果
*/
export const createTask = (payload) => {
return uni.$uv.http.post('/bst/task', payload, {
custom: {
auth: true,
catch: true // 允许在 catch 中处理错误
}
});
};
/**
* 取消任务
* @param {Object} params 请求参数
* @param {string} params.id 任务ID
* @param {string} params.cancelRemark 取消备注
* @returns {Promise} 返回取消结果
*/
export const cancelTask = ({ id, cancelRemark }) => {
return uni.$uv.http.put('/bst/task/cancel', {
id: id,
cancelRemark: cancelRemark || ''
}, {
custom: {
auth: true, // 启用 token 认证
catch: true
}
});
};
/**
* 获取全部项目列表
* @returns {Promise<Array>} 项目列表
*/
export const getProjectListAll = () => {
return uni.$uv.http.get('/bst/project/listAll', {
custom: {
auth: true
}
});
};