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
  factoryOrderNumber?: string
  factoryNo?: number
  factoryCode?: string
  factoryCountryCode?: string
  warehouseId?: number
  warehouseName?: string
  namespace?: string
  status?: string
  platform?: string
  shopNumber?: string
  weight?: number
  productAmount?: number
  totalAmount?: number
  productNum?: number
  shipmentType?: number
  expressSheet?: string
  trackingNumber?: string
  processNumber?: string
  userMark?: string
  receiverName?: string
  receiverPhone?: string
  receiverCountry?: string
  receiverProvince?: string
  receiverCity?: string
  receiverDistrict?: string
  receiverAddress1?: string
  receiverAddress2?: string
  receiverPostCode?: string
  trackStatus?: number
  prepaidAmount?: number
  pause?: boolean
  serviceAmount?: number
  mixed?: boolean
  tagsId?: string
  source?: string
  logisticsCompanyName?: string
  logisticsCompanyCode?: string
  selfOwned?: boolean
  createTime?: string
  updateTime?: string
  version?: number
  totalCustomsWeight?: number
  totalCustomsValue?: number
  statusName?: string
  thirdOrderNumber?: 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
}
