65 lines
2.0 KiB
TypeScript
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
|
|
}
|
|
}
|
|
})
|