Add GET /cell-products/{id}/lineage-qc, frontend client, readonly dialog,
and a 查看质检 action on outbound cell rows.
Co-authored-by: Cursor <cursoragent@cursor.com>
130 lines
3.5 KiB
TypeScript
130 lines
3.5 KiB
TypeScript
import request from '@/utils/http'
|
|
|
|
export function fetchCellProductList(params?: {
|
|
page?: number
|
|
pageSize?: number
|
|
keyword?: string
|
|
productStatus?: string
|
|
passage?: string
|
|
sourceType?: string
|
|
}) {
|
|
return request.get<{
|
|
list: any[]
|
|
total: number
|
|
page: number
|
|
pageSize: number
|
|
totalPages: number
|
|
}>({ url: '/web/admin/cell-products', params })
|
|
}
|
|
|
|
export function fetchCellProductDetail(id: string) {
|
|
return request.get<any>({ url: `/web/admin/cell-products/${id}` })
|
|
}
|
|
|
|
export function fetchCreateCellProduct(data: Record<string, any>) {
|
|
return request.post({ url: '/web/admin/cell-products', params: data })
|
|
}
|
|
|
|
export function fetchUpdateCellProduct(id: string, data: Record<string, any>) {
|
|
return request.put({ url: `/web/admin/cell-products/${id}`, params: data })
|
|
}
|
|
|
|
export function fetchDeleteCellProduct(id: string) {
|
|
return request.del({ url: `/web/admin/cell-products/${id}` })
|
|
}
|
|
|
|
export function fetchNextCellProductCode(count = 1) {
|
|
return request.get<{ code: string; codes?: string[] }>({
|
|
url: '/web/admin/cell-products/next-code',
|
|
params: count > 1 ? { count } : undefined
|
|
})
|
|
}
|
|
|
|
export function fetchMaxPassageProductSeq(productCode: string, passages: string[]) {
|
|
const normalized = [...new Set(passages.map((p) => p.trim()).filter(Boolean))]
|
|
return request.get<{
|
|
maxSeq?: number
|
|
nextSeq?: number
|
|
maxSeqByPassage?: Record<string, number>
|
|
nextSeqByPassage?: Record<string, number>
|
|
}>({
|
|
url: '/web/admin/cell-products/max-passage-seq',
|
|
params: {
|
|
productCode: productCode.trim(),
|
|
passages: normalized.join(',')
|
|
}
|
|
})
|
|
}
|
|
|
|
export function fetchMaxProductSuffixSeq(productCode: string) {
|
|
return request.get<{ maxSeq?: number; nextSeq?: number }>({
|
|
url: '/web/admin/cell-products/max-suffix-seq',
|
|
params: { productCode: productCode.trim() }
|
|
})
|
|
}
|
|
|
|
export function fetchCheckCellProductCode(productCode: string, excludeId?: string) {
|
|
return request.get<{ exists?: boolean; productCode?: string }>({
|
|
url: '/web/admin/cell-products/check-code',
|
|
params: {
|
|
productCode: productCode.trim(),
|
|
...(excludeId ? { excludeId } : {})
|
|
}
|
|
})
|
|
}
|
|
|
|
export function fetchCellProductChain(productId: string) {
|
|
return request.get<any>({ url: `/web/admin/cell-products/${productId}/chain` })
|
|
}
|
|
|
|
export type CellProductLineageQcTask = {
|
|
id?: string
|
|
taskNo?: string
|
|
itemName?: string
|
|
itemCode?: string
|
|
taskType?: string
|
|
taskStatus?: string
|
|
taskStatusLabel?: string
|
|
conclusion?: string
|
|
conclusionLabel?: string
|
|
remark?: string
|
|
completedTime?: string
|
|
companyName?: string
|
|
results?: Array<{ paramName?: string; paramValue?: string; paramUnit?: string }>
|
|
attachmentFiles?: Array<{ fileName?: string; fileUrl?: string; fileType?: string }>
|
|
}
|
|
|
|
export type CellProductLineageQcWorkOrder = {
|
|
id?: string
|
|
workOrderNo?: string
|
|
workOrderType?: string
|
|
workOrderStatus?: string
|
|
workOrderStatusLabel?: string
|
|
tasks?: CellProductLineageQcTask[]
|
|
}
|
|
|
|
export type CellProductLineageQcNode = {
|
|
nodeType?: 'sample' | 'cell_product' | string
|
|
id?: string
|
|
label?: string
|
|
productName?: string
|
|
passage?: string | null
|
|
receptionSource?: string | null
|
|
receptionSourceLabel?: string | null
|
|
isCurrent?: boolean
|
|
workOrders?: CellProductLineageQcWorkOrder[]
|
|
}
|
|
|
|
export type CellProductLineageQc = {
|
|
productId?: string
|
|
productCode?: string
|
|
productName?: string
|
|
nodes?: CellProductLineageQcNode[]
|
|
}
|
|
|
|
export function fetchCellProductLineageQc(productId: string) {
|
|
return request.get<CellProductLineageQc>({
|
|
url: `/web/admin/cell-products/${productId}/lineage-qc`
|
|
})
|
|
}
|