작업계획서대로 진행
This commit is contained in:
77
backend/api/business/list.get.ts
Normal file
77
backend/api/business/list.get.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
import { query } from '../../utils/db'
|
||||
|
||||
/**
|
||||
* 사업 목록 조회
|
||||
* GET /api/business/list
|
||||
*
|
||||
* Query params:
|
||||
* - status: 상태 필터 (active, completed, suspended)
|
||||
* - businessName: 사업명 검색
|
||||
* - businessCode: 사업코드 검색
|
||||
* - clientName: 발주처 검색
|
||||
*/
|
||||
export default defineEventHandler(async (event) => {
|
||||
const params = getQuery(event)
|
||||
|
||||
const status = params.status as string | null
|
||||
const businessName = params.businessName as string | null
|
||||
const businessCode = params.businessCode as string | null
|
||||
const clientName = params.clientName as string | null
|
||||
|
||||
const conditions: string[] = []
|
||||
const values: any[] = []
|
||||
let paramIndex = 1
|
||||
|
||||
if (status) {
|
||||
conditions.push(`b.business_status = $${paramIndex++}`)
|
||||
values.push(status)
|
||||
}
|
||||
|
||||
if (businessName) {
|
||||
conditions.push(`b.business_name ILIKE $${paramIndex++}`)
|
||||
values.push(`%${businessName}%`)
|
||||
}
|
||||
|
||||
if (businessCode) {
|
||||
conditions.push(`b.business_code ILIKE $${paramIndex++}`)
|
||||
values.push(`%${businessCode}%`)
|
||||
}
|
||||
|
||||
if (clientName) {
|
||||
conditions.push(`b.client_name ILIKE $${paramIndex++}`)
|
||||
values.push(`%${clientName}%`)
|
||||
}
|
||||
|
||||
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''
|
||||
|
||||
const sql = `
|
||||
SELECT
|
||||
b.*,
|
||||
e.employee_name as created_by_name,
|
||||
(SELECT COUNT(*) FROM wr_project_info WHERE business_id = b.business_id) as project_count
|
||||
FROM wr_business b
|
||||
LEFT JOIN wr_employee_info e ON b.created_by = e.employee_id
|
||||
${whereClause}
|
||||
ORDER BY b.created_at DESC
|
||||
`
|
||||
|
||||
const businesses = await query(sql, values)
|
||||
|
||||
return {
|
||||
businesses: businesses.map((b: any) => ({
|
||||
businessId: b.business_id,
|
||||
businessName: b.business_name,
|
||||
businessCode: b.business_code,
|
||||
clientName: b.client_name,
|
||||
contractStartDate: b.contract_start_date,
|
||||
contractEndDate: b.contract_end_date,
|
||||
businessStatus: b.business_status,
|
||||
description: b.description,
|
||||
projectCount: Number(b.project_count),
|
||||
createdBy: b.created_by,
|
||||
createdByName: b.created_by_name,
|
||||
createdAt: b.created_at,
|
||||
updatedAt: b.updated_at
|
||||
}))
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user