fix: 계약관리 API 응답 파싱 오류 수정
- Laravel ApiResponse 래퍼 구조 반영 ({ success, data })
- getContractList: response.data.data로 페이지네이션 데이터 접근
- getContractStats: response.data로 통계 데이터 접근
- getContractStageCounts: response.data로 단계별 건수 접근
- getContract/getContractDetail: response.data로 단건 데이터 접근
- createContract/updateContract: response.data로 생성/수정 결과 접근
This commit is contained in:
@@ -215,23 +215,27 @@ export async function getContractList(filter?: ContractFilter): Promise<{
|
||||
}
|
||||
|
||||
const response = await apiClient.get<{
|
||||
data: ApiContract[];
|
||||
current_page: number;
|
||||
per_page: number;
|
||||
total: number;
|
||||
last_page: number;
|
||||
success: boolean;
|
||||
data: {
|
||||
data: ApiContract[];
|
||||
current_page: number;
|
||||
per_page: number;
|
||||
total: number;
|
||||
last_page: number;
|
||||
};
|
||||
}>('/construction/contracts', { params: queryParams });
|
||||
|
||||
const items = (response.data || []).map(transformContract);
|
||||
const paginatedData = response.data;
|
||||
const items = (paginatedData.data || []).map(transformContract);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
items,
|
||||
total: response.total || 0,
|
||||
page: response.current_page || 1,
|
||||
size: response.per_page || 20,
|
||||
totalPages: response.last_page || 1,
|
||||
total: paginatedData.total || 0,
|
||||
page: paginatedData.current_page || 1,
|
||||
size: paginatedData.per_page || 20,
|
||||
totalPages: paginatedData.last_page || 1,
|
||||
},
|
||||
};
|
||||
} catch (error) {
|
||||
@@ -250,14 +254,18 @@ export async function getContractStats(): Promise<{
|
||||
error?: string;
|
||||
}> {
|
||||
try {
|
||||
const response = await apiClient.get<ApiContractStats>('/construction/contracts/stats');
|
||||
const response = await apiClient.get<{
|
||||
success: boolean;
|
||||
data: ApiContractStats;
|
||||
}>('/construction/contracts/stats');
|
||||
|
||||
const statsData = response.data;
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
total: response.total_count || 0,
|
||||
pending: response.pending_count || 0,
|
||||
completed: response.completed_count || 0,
|
||||
total: statsData.total_count || 0,
|
||||
pending: statsData.pending_count || 0,
|
||||
completed: statsData.completed_count || 0,
|
||||
},
|
||||
};
|
||||
} catch (error) {
|
||||
@@ -276,17 +284,21 @@ export async function getContractStageCounts(): Promise<{
|
||||
error?: string;
|
||||
}> {
|
||||
try {
|
||||
const response = await apiClient.get<ApiContractStageCount>('/construction/contracts/stage-counts');
|
||||
const response = await apiClient.get<{
|
||||
success: boolean;
|
||||
data: ApiContractStageCount;
|
||||
}>('/construction/contracts/stage-counts');
|
||||
|
||||
const stageData = response.data;
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
estimateSelected: response.estimate_selected || 0,
|
||||
estimateProgress: response.estimate_progress || 0,
|
||||
delivery: response.delivery || 0,
|
||||
installation: response.installation || 0,
|
||||
inspection: response.inspection || 0,
|
||||
other: response.other || 0,
|
||||
estimateSelected: stageData.estimate_selected || 0,
|
||||
estimateProgress: stageData.estimate_progress || 0,
|
||||
delivery: stageData.delivery || 0,
|
||||
installation: stageData.installation || 0,
|
||||
inspection: stageData.inspection || 0,
|
||||
other: stageData.other || 0,
|
||||
},
|
||||
};
|
||||
} catch (error) {
|
||||
@@ -305,8 +317,10 @@ export async function getContract(id: string): Promise<{
|
||||
error?: string;
|
||||
}> {
|
||||
try {
|
||||
const response = await apiClient.get<ApiContract>(`/construction/contracts/${id}`);
|
||||
return { success: true, data: transformContract(response) };
|
||||
const response = await apiClient.get<{ success: boolean; data: ApiContract }>(
|
||||
`/construction/contracts/${id}`
|
||||
);
|
||||
return { success: true, data: transformContract(response.data) };
|
||||
} catch (error) {
|
||||
console.error('계약 조회 오류:', error);
|
||||
return { success: false, error: '계약 정보를 찾을 수 없습니다.' };
|
||||
@@ -323,8 +337,10 @@ export async function getContractDetail(id: string): Promise<{
|
||||
error?: string;
|
||||
}> {
|
||||
try {
|
||||
const response = await apiClient.get<ApiContract>(`/construction/contracts/${id}`);
|
||||
return { success: true, data: transformContractDetail(response) };
|
||||
const response = await apiClient.get<{ success: boolean; data: ApiContract }>(
|
||||
`/construction/contracts/${id}`
|
||||
);
|
||||
return { success: true, data: transformContractDetail(response.data) };
|
||||
} catch (error) {
|
||||
console.error('계약 상세 조회 오류:', error);
|
||||
return { success: false, error: '계약 상세 정보를 불러오는데 실패했습니다.' };
|
||||
@@ -342,8 +358,11 @@ export async function createContract(data: ContractFormData): Promise<{
|
||||
}> {
|
||||
try {
|
||||
const apiData = transformToApiRequest(data);
|
||||
const response = await apiClient.post<ApiContract>('/construction/contracts', apiData);
|
||||
return { success: true, data: transformContract(response) };
|
||||
const response = await apiClient.post<{ success: boolean; data: ApiContract }>(
|
||||
'/construction/contracts',
|
||||
apiData
|
||||
);
|
||||
return { success: true, data: transformContract(response.data) };
|
||||
} catch (error) {
|
||||
console.error('계약 등록 오류:', error);
|
||||
return { success: false, error: '계약 등록에 실패했습니다.' };
|
||||
@@ -364,8 +383,11 @@ export async function updateContract(
|
||||
}> {
|
||||
try {
|
||||
const apiData = transformToApiRequest(data);
|
||||
const response = await apiClient.put<ApiContract>(`/construction/contracts/${id}`, apiData);
|
||||
return { success: true, data: transformContract(response) };
|
||||
const response = await apiClient.put<{ success: boolean; data: ApiContract }>(
|
||||
`/construction/contracts/${id}`,
|
||||
apiData
|
||||
);
|
||||
return { success: true, data: transformContract(response.data) };
|
||||
} catch (error) {
|
||||
console.error('계약 수정 오류:', error);
|
||||
return { success: false, error: '계약 수정에 실패했습니다.' };
|
||||
|
||||
Reference in New Issue
Block a user