export interface StatusTreeNode {
  status: string
  statusName: string
  quantity: number
  children: StatusTreeNode[] | null
}

export interface SearchForm {
  platform?: string
  craftCode?: string | string[]
  thirdSkuCode?: string
  supplierProductNo?: string
  batchArrangeNumber?: string
  orderNumber?: string
  customerOrderNumber?: string
  shopOrderNumber?: string
  productMark?: string | number | (string | number)[]
  multi?: boolean | null
  timeType?: number | null
  startTime?: string | null
  endTime?: string | null
  logisticsWayCode?: string
  receiverCountry?: string | string[]
  factoryOrderNumber?: string
  userMark?: string
  sku?: string
  trackingNumber?: string
  replaceShipment?: number | string
  shipmentType?: number | string
  tagsIdArr?: string[]
  source?: string
  size?: string
  logisticsCompanyCode?: string
  interceptStatus?: boolean
  standardDesignImage?: number
}

export interface FactoryOrderNewListData {
  id: number
  orderNumber?: string
  customerOrderNumber?: string
  shopOrderNumber?: string
  status?: string
  statusName?: string
  customerTags?: { name: string }[]
  logisticsWayCode?: string
  logisticsWayName?: string
  totalWeight?: number
  totalProductNum?: number
  logisticsSourceNo?: string
  receiverName?: string
  receiverPhone?: string
  receiverCode?: string
  receiverAddress?: string
  createTime?: string
  acceptTime?: string
  finishTime?: string
}

export interface ProductListData {
  id: number
  orderId?: number
  productImage?: string
  productName?: string
  variantSku?: string
  stockSku?: string
  craftCode?: string
  craftName?: string
  styleNo?: string
  price?: number
  quantity?: number
  weight?: number
  availableQuantity?: number
  stockQuantity?: number
  occupiedQuantity?: number
  customsNameEnglish?: string
  customsNameChinese?: string
  customsWeight?: number
  customsValue?: number
  remark?: string
}

export interface LogListData {
  id: number
  bizId?: number | string
  employeeName?: string
  description?: string
  createTime?: string
}

export interface BatchManageData {
  id: number
  factoryId?: number
  batchArrangeNum?: string
  billType?: string
  url?: string
  tiffUrl?: string
  syntheticStatus?: boolean
  downloadStatus?: boolean
  productNum?: number
  materialNum?: number
  craftType?: string
  employeeAccount?: string
  employeeId?: number
  createTime?: string
  failReason?: string
  failTime?: string
  automaticComposing?: boolean
  composingParam?: string
  printProductOrder?: boolean
  printPickOrder?: boolean
  prnUrl?: string
  prnDownloadStatus?: string
  enableArrange?: boolean
  standardDesignImage?: number
}

export interface RestockData {
  id: number
  warehouseName?: string
  skuImage?: string
  productName?: string
  styleNo?: string
  stockSku?: string
  shortageQuantity?: number
  availableQuantity?: number
  stockQuantity?: number
  occupiedQuantity?: number
}

export interface PickCompleteData {
  id: number
  warehouseName?: string
  skuImage?: string
  productName?: string
  styleNo?: string
  stockSku?: string
  pickQuantity?: number
  availableStock?: number
  stockQuantity?: number
  producingQuantity?: number
  occupiedQuantity?: number
  pickStatus?: 'success' | 'partial' | 'fail'
}

export interface PickFailData {
  id: number
  warehouseName?: string
  skuImage?: string
  productName?: string
  styleNo?: string
  stockSku?: string
  currentStock?: number
  occupiedQuantity?: number
  currentAvailableStock?: number
  producingQuantity?: number
  suggestOutQuantity?: number
  afterOutStock?: number
  afterOutOccupied?: number
  afterOutAvailable?: number
}

