ERP-node/frontend/lib/api/barcodeApi.ts

116 lines
3.2 KiB
TypeScript
Raw Permalink Normal View History

2026-03-04 20:51:00 +09:00
import { apiClient } from "./client";
import {
BarcodeLabelMaster,
BarcodeLabelLayout,
GetBarcodeLabelsParams,
GetBarcodeLabelsResponse,
CreateBarcodeLabelRequest,
UpdateBarcodeLabelRequest,
} from "@/types/barcode";
const BASE_URL = "/admin/barcode-labels";
export interface BarcodeLabelTemplate {
template_id: string;
template_name_kor: string;
template_name_eng: string | null;
width_mm: number;
height_mm: number;
layout_json: string;
sort_order: number;
}
export const barcodeApi = {
/** 바코드 라벨 목록 조회 */
getLabels: async (params: GetBarcodeLabelsParams) => {
const response = await apiClient.get<{
success: boolean;
data: GetBarcodeLabelsResponse;
}>(BASE_URL, { params });
return response.data;
},
/** 바코드 라벨 상세 조회 */
getLabelById: async (labelId: string) => {
const response = await apiClient.get<{
success: boolean;
data: BarcodeLabelMaster;
}>(`${BASE_URL}/${labelId}`);
return response.data;
},
/** 라벨 레이아웃 조회 */
getLayout: async (labelId: string) => {
const response = await apiClient.get<{
success: boolean;
data: BarcodeLabelLayout;
}>(`${BASE_URL}/${labelId}/layout`);
return response.data;
},
/** 라벨 레이아웃 저장 */
saveLayout: async (labelId: string, layout: BarcodeLabelLayout) => {
const response = await apiClient.put<{
success: boolean;
message: string;
}>(`${BASE_URL}/${labelId}/layout`, layout);
return response.data;
},
/** 기본 템플릿 목록 */
getTemplates: async () => {
const response = await apiClient.get<{
success: boolean;
data: BarcodeLabelTemplate[];
}>(`${BASE_URL}/templates`);
return response.data;
},
/** 템플릿 상세 (레이아웃 적용용) */
getTemplateById: async (templateId: string) => {
const response = await apiClient.get<{
success: boolean;
data: BarcodeLabelTemplate & { layout: BarcodeLabelLayout };
}>(`${BASE_URL}/templates/${templateId}`);
return response.data;
},
/** 바코드 라벨 생성 (templateId 선택 시 해당 레이아웃 적용) */
createLabel: async (data: CreateBarcodeLabelRequest & { templateId?: string }) => {
const response = await apiClient.post<{
success: boolean;
data: { labelId: string };
message: string;
}>(BASE_URL, data);
return response.data;
},
/** 바코드 라벨 수정 */
updateLabel: async (labelId: string, data: UpdateBarcodeLabelRequest) => {
const response = await apiClient.put<{
success: boolean;
message: string;
}>(`${BASE_URL}/${labelId}`, data);
return response.data;
},
/** 바코드 라벨 삭제 */
deleteLabel: async (labelId: string) => {
const response = await apiClient.delete<{
success: boolean;
message: string;
}>(`${BASE_URL}/${labelId}`);
return response.data;
},
/** 바코드 라벨 복사 */
copyLabel: async (labelId: string) => {
const response = await apiClient.post<{
success: boolean;
data: { labelId: string };
message: string;
}>(`${BASE_URL}/${labelId}/copy`);
return response.data;
},
};