- Introduced new routes and controllers for managing shipping orders, including listing, saving, and previewing next order numbers. - Added design management routes and controller for handling design requests, projects, tasks, and work logs. - Implemented company code filtering for multi-tenancy support in both shipping order and design request functionalities. - Enhanced the shipping plan routes to include listing and updating plans, improving overall shipping management capabilities. These changes aim to provide comprehensive management features for shipping orders and design processes, facilitating better organization and tracking within the application.
331 lines
9.4 KiB
TypeScript
331 lines
9.4 KiB
TypeScript
import { apiClient, ApiResponse } from "./client";
|
|
|
|
// ============================================
|
|
// 설계의뢰/설변요청 (DR/ECR)
|
|
// ============================================
|
|
|
|
export async function getDesignRequestList(params?: {
|
|
source_type?: string;
|
|
status?: string;
|
|
priority?: string;
|
|
search?: string;
|
|
}): Promise<ApiResponse<any[]>> {
|
|
try {
|
|
const res = await apiClient.get("/design/requests", { params });
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function getDesignRequestDetail(id: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.get(`/design/requests/${id}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function createDesignRequest(data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post("/design/requests", data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function updateDesignRequest(id: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.put(`/design/requests/${id}`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function deleteDesignRequest(id: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.delete(`/design/requests/${id}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function addRequestHistory(id: string, data: { step: string; history_date: string; user_name: string; description: string }): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/requests/${id}/history`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// 설계 프로젝트
|
|
// ============================================
|
|
|
|
export async function getProjectList(params?: {
|
|
status?: string;
|
|
search?: string;
|
|
}): Promise<ApiResponse<any[]>> {
|
|
try {
|
|
const res = await apiClient.get("/design/projects", { params });
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function getProjectDetail(id: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.get(`/design/projects/${id}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function createProject(data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post("/design/projects", data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function updateProject(id: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.put(`/design/projects/${id}`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function deleteProject(id: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.delete(`/design/projects/${id}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// 프로젝트 태스크
|
|
// ============================================
|
|
|
|
export async function getTasksByProject(projectId: string): Promise<ApiResponse<any[]>> {
|
|
try {
|
|
const res = await apiClient.get(`/design/projects/${projectId}/tasks`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function createTask(projectId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/projects/${projectId}/tasks`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function updateTask(taskId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.put(`/design/tasks/${taskId}`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function deleteTask(taskId: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.delete(`/design/tasks/${taskId}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// 작업일지
|
|
// ============================================
|
|
|
|
export async function getWorkLogsByTask(taskId: string): Promise<ApiResponse<any[]>> {
|
|
try {
|
|
const res = await apiClient.get(`/design/tasks/${taskId}/work-logs`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function createWorkLog(taskId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/tasks/${taskId}/work-logs`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function deleteWorkLog(workLogId: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.delete(`/design/work-logs/${workLogId}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// 태스크 하위항목
|
|
// ============================================
|
|
|
|
export async function createSubItem(taskId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/tasks/${taskId}/sub-items`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function updateSubItem(subItemId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.put(`/design/sub-items/${subItemId}`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function deleteSubItem(subItemId: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.delete(`/design/sub-items/${subItemId}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// 태스크 이슈
|
|
// ============================================
|
|
|
|
export async function createIssue(taskId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/tasks/${taskId}/issues`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function updateIssue(issueId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.put(`/design/issues/${issueId}`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// ECN (설변통보)
|
|
// ============================================
|
|
|
|
export async function getEcnList(params?: {
|
|
status?: string;
|
|
search?: string;
|
|
}): Promise<ApiResponse<any[]>> {
|
|
try {
|
|
const res = await apiClient.get("/design/ecn", { params });
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function createEcn(data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post("/design/ecn", data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function updateEcn(id: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.put(`/design/ecn/${id}`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function deleteEcn(id: string): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.delete(`/design/ecn/${id}`);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// 나의 업무 (My Work)
|
|
// ============================================
|
|
|
|
export async function getMyWork(params?: {
|
|
status?: string;
|
|
project_id?: string;
|
|
}): Promise<ApiResponse<any[]>> {
|
|
try {
|
|
const res = await apiClient.get("/design/my-work", { params });
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
// ============================================
|
|
// 구매요청 / 협업요청
|
|
// ============================================
|
|
|
|
export async function createPurchaseReq(workLogId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/work-logs/${workLogId}/purchase-reqs`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function createCoopReq(workLogId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/work-logs/${workLogId}/coop-reqs`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|
|
|
|
export async function addCoopResponse(coopReqId: string, data: any): Promise<ApiResponse<any>> {
|
|
try {
|
|
const res = await apiClient.post(`/design/coop-reqs/${coopReqId}/responses`, data);
|
|
return res.data;
|
|
} catch (e: any) {
|
|
return { success: false, message: e.message };
|
|
}
|
|
}
|