Files
weeklyreport/backend/api/maintenance/[id]/detail.get.ts

65 lines
2.0 KiB
TypeScript

import { queryOne } from '../../../utils/db'
/**
* 유지보수 업무 상세 조회
* GET /api/maintenance/[id]/detail
*/
export default defineEventHandler(async (event) => {
const taskId = Number(getRouterParam(event, 'id'))
if (!taskId) {
throw createError({ statusCode: 400, message: '업무 ID가 필요합니다.' })
}
const task = await queryOne(`
SELECT
t.*,
p.project_name,
p.project_code,
e1.employee_name as assignee_name,
e2.employee_name as created_by_name,
e3.employee_name as updated_by_name
FROM wr_maintenance_task t
LEFT JOIN wr_project_info p ON t.project_id = p.project_id
LEFT JOIN wr_employee_info e1 ON t.assignee_id = e1.employee_id
LEFT JOIN wr_employee_info e2 ON t.created_by = e2.employee_id
LEFT JOIN wr_employee_info e3 ON t.updated_by = e3.employee_id
WHERE t.task_id = $1
`, [taskId])
if (!task) {
throw createError({ statusCode: 404, message: '업무를 찾을 수 없습니다.' })
}
return {
task: {
taskId: task.task_id,
projectId: task.project_id,
projectName: task.project_name,
projectCode: task.project_code,
batchId: task.batch_id,
requestDate: task.request_date,
requestTitle: task.request_title,
requestContent: task.request_content,
requesterName: task.requester_name,
requesterContact: task.requester_contact,
taskType: task.task_type,
priority: task.priority,
status: task.status,
assigneeId: task.assignee_id,
assigneeName: task.assignee_name,
devCompletedAt: task.dev_completed_at,
opsCompletedAt: task.ops_completed_at,
clientConfirmedAt: task.client_confirmed_at,
resolutionContent: task.resolution_content,
weeklyReportId: task.weekly_report_id,
createdBy: task.created_by,
createdByName: task.created_by_name,
updatedBy: task.updated_by,
updatedByName: task.updated_by_name,
createdAt: task.created_at,
updatedAt: task.updated_at
}
}
})