Files
vexplor/frontend/lib/api/workInstruction.ts
kjs a5eba3a4ca feat: implement routing and work standard management features
- Added new API endpoints for retrieving routing versions and managing work standards associated with work instructions.
- Implemented functionality to update routing versions for work instructions, enhancing the flexibility of the work instruction management process.
- Introduced a new modal for editing work standards, allowing users to manage detailed work items and processes effectively.
- Updated frontend components to integrate routing and work standard functionalities, improving user experience and data management.

These changes aim to enhance the management of work instructions and their associated processes, facilitating better tracking and organization within the application.
2026-03-20 14:18:44 +09:00

138 lines
4.7 KiB
TypeScript

import { apiClient } from "@/lib/api/client";
export interface PaginatedResponse { success: boolean; data: any[]; totalCount: number; page: number; pageSize: number; }
export async function getWorkInstructionList(params?: Record<string, any>) {
const res = await apiClient.get("/work-instruction/list", { params });
return res.data as { success: boolean; data: any[] };
}
export async function previewWorkInstructionNo() {
const res = await apiClient.get("/work-instruction/preview-no");
return res.data as { success: boolean; instructionNo: string };
}
export async function saveWorkInstruction(data: any) {
const res = await apiClient.post("/work-instruction/save", data);
return res.data as { success: boolean; data?: any; message?: string };
}
export async function deleteWorkInstructions(ids: string[]) {
const res = await apiClient.post("/work-instruction/delete", { ids });
return res.data as { success: boolean; deletedCount?: number; message?: string };
}
export async function getWIItemSource(params?: Record<string, any>) {
const res = await apiClient.get("/work-instruction/source/item", { params });
return res.data as PaginatedResponse;
}
export async function getWISalesOrderSource(params?: Record<string, any>) {
const res = await apiClient.get("/work-instruction/source/sales-order", { params });
return res.data as PaginatedResponse;
}
export async function getWIProductionPlanSource(params?: Record<string, any>) {
const res = await apiClient.get("/work-instruction/source/production-plan", { params });
return res.data as PaginatedResponse;
}
export async function getEquipmentList() {
const res = await apiClient.get("/work-instruction/equipment");
return res.data as { success: boolean; data: { id: string; equipment_code: string; equipment_name: string }[] };
}
export async function getEmployeeList() {
const res = await apiClient.get("/work-instruction/employees");
return res.data as { success: boolean; data: { user_id: string; user_name: string; dept_name: string | null }[] };
}
// ─── 라우팅 & 공정작업기준 API ───
export interface RoutingProcess {
routing_detail_id: string;
seq_no: string;
process_code: string;
process_name: string;
is_required?: string;
work_type?: string;
}
export interface RoutingVersionData {
id: string;
version_name: string;
description?: string;
is_default: boolean;
processes: RoutingProcess[];
}
export interface WIWorkItemDetail {
id?: string;
work_item_id?: string;
detail_type?: string;
content?: string;
is_required?: string;
sort_order?: number;
remark?: string;
inspection_code?: string;
inspection_method?: string;
unit?: string;
lower_limit?: string;
upper_limit?: string;
duration_minutes?: number;
input_type?: string;
lookup_target?: string;
display_fields?: string;
}
export interface WIWorkItem {
id?: string;
routing_detail_id?: string;
work_phase: string;
title: string;
is_required: string;
sort_order: number;
description?: string;
detail_count?: number;
details?: WIWorkItemDetail[];
source_work_item_id?: string;
}
export interface WIWorkStandardProcess {
routing_detail_id: string;
seq_no: string;
process_code: string;
process_name: string;
workItems: WIWorkItem[];
}
export async function getRoutingVersions(wiNo: string, itemCode: string) {
const res = await apiClient.get(`/work-instruction/${wiNo}/routing-versions/${encodeURIComponent(itemCode)}`);
return res.data as { success: boolean; data: RoutingVersionData[] };
}
export async function updateWIRouting(wiNo: string, routingVersionId: string) {
const res = await apiClient.put(`/work-instruction/${wiNo}/routing`, { routingVersionId });
return res.data as { success: boolean };
}
export async function getWIWorkStandard(wiNo: string, routingVersionId: string) {
const res = await apiClient.get(`/work-instruction/${wiNo}/work-standard`, { params: { routingVersionId } });
return res.data as { success: boolean; data: { processes: WIWorkStandardProcess[]; isCustom: boolean } };
}
export async function copyWorkStandard(wiNo: string, routingVersionId: string) {
const res = await apiClient.post(`/work-instruction/${wiNo}/work-standard/copy`, { routingVersionId });
return res.data as { success: boolean };
}
export async function saveWIWorkStandard(wiNo: string, routingDetailId: string, workItems: WIWorkItem[]) {
const res = await apiClient.put(`/work-instruction/${wiNo}/work-standard/save`, { routingDetailId, workItems });
return res.data as { success: boolean };
}
export async function resetWIWorkStandard(wiNo: string) {
const res = await apiClient.delete(`/work-instruction/${wiNo}/work-standard/reset`);
return res.data as { success: boolean };
}