feat: initial commit
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
import api from './client'
|
||||
import type { OrderDetail } from './orders'
|
||||
|
||||
export interface ExcelPreviewRow {
|
||||
row_index: number
|
||||
pim_id: string | null
|
||||
produkt_baureihe: string | null
|
||||
gewaehltes_produkt: string | null
|
||||
product_exists: boolean
|
||||
product_id: string | null
|
||||
medias_rendering: boolean | null
|
||||
category_key: string | null
|
||||
has_step: boolean
|
||||
is_duplicate: boolean
|
||||
duplicate_of_row: number | null
|
||||
}
|
||||
|
||||
export interface ExcelPreviewResult {
|
||||
excel_path: string
|
||||
filename: string
|
||||
category_key: string | null
|
||||
row_count: number
|
||||
existing_product_count: number
|
||||
new_product_count: number
|
||||
no_pim_id_count: number
|
||||
has_step_count: number
|
||||
no_step_count: number
|
||||
duplicate_count: number
|
||||
warnings: string[]
|
||||
rows: ExcelPreviewRow[]
|
||||
column_headers: string[]
|
||||
template_name: string | null
|
||||
}
|
||||
|
||||
export interface ParsedComponent {
|
||||
part_name: string | null
|
||||
material: string | null
|
||||
component_type: string | null
|
||||
column_index: number
|
||||
}
|
||||
|
||||
export interface ParsedRow {
|
||||
row_index: number
|
||||
ebene1: string | null
|
||||
ebene2: string | null
|
||||
baureihe: string | null
|
||||
pim_id: string | null
|
||||
produkt_baureihe: string | null
|
||||
gewaehltes_produkt: string | null
|
||||
name_cad_modell: string | null
|
||||
gewuenschte_bildnummer: string | null
|
||||
lagertyp: string | null
|
||||
medias_rendering: boolean | null
|
||||
components: ParsedComponent[]
|
||||
}
|
||||
|
||||
export interface ParsedExcelResponse {
|
||||
filename: string
|
||||
excel_path?: string
|
||||
category_key: string | null
|
||||
template_name: string | null
|
||||
row_count: number
|
||||
column_headers: string[]
|
||||
rows: ParsedRow[]
|
||||
warnings: string[]
|
||||
}
|
||||
|
||||
export interface OutputTypeSelection {
|
||||
row_index: number
|
||||
output_type_ids: string[]
|
||||
}
|
||||
|
||||
export interface ExcelFinalizeRequest {
|
||||
excel_path: string
|
||||
included_row_indices: number[]
|
||||
output_type_selections: OutputTypeSelection[]
|
||||
notes?: string | null
|
||||
template_id?: string | null
|
||||
}
|
||||
|
||||
export async function uploadExcel(file: File): Promise<ExcelPreviewResult> {
|
||||
const form = new FormData()
|
||||
form.append('file', file)
|
||||
const res = await api.post<ExcelPreviewResult>('/uploads/excel', form, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
})
|
||||
return res.data
|
||||
}
|
||||
|
||||
export async function finalizeExcelImport(data: ExcelFinalizeRequest): Promise<OrderDetail> {
|
||||
const res = await api.post<OrderDetail>('/uploads/excel/finalize', data)
|
||||
return res.data
|
||||
}
|
||||
|
||||
export async function uploadStep(file: File) {
|
||||
const form = new FormData()
|
||||
form.append('file', file)
|
||||
const res = await api.post('/uploads/step', form, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
})
|
||||
return res.data
|
||||
}
|
||||
Reference in New Issue
Block a user