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[]
  /** list_page 查询：客户标签 id，逗号分隔（由 tagsIdArr 转换） */
  tagsId?: string
  source?: string
  size?: string
  logisticsWayId?: number | string
  logisticsCompanyCode?: string
  interceptStatus?: boolean
  shopNumber?: string
  newStandard?: number
  productMarkList?: string[]
  /** list_page：POD 商品单面/多面，与 productMarkList 中 pod 联动 */
  podCustomizedQuantity?: string
  /** list_page：一件定制局部印单面/多面，与 productMarkList 中 custom_part 联动 */
  cpCustomizedQuantity?: string
  operationNo?: string
  /** list_page 排序字段，需与 order 同时传递 */
  prop?: string
  /** list_page 排序方向：asc 正序，desc 倒序 */
  order?: 'asc' | 'desc'
}

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
  replaceShipment?: 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
  rfcNumber?: 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
  customTagList?: { id: string; name: string }[]
}

export interface ProductListData {
  id: number
  podOrderId: number
  factoryCode?: string
  productName?: string
  baseSku?: string
  variantSku?: string
  variantImage?: string
  variant_image?: string
  productMark?: string
  diyId?: string
  templateType?: number
  customTemplateItemId?: number
  endProductId?: string
  craftSource?: number
  craftCode?: string
  craftName?: string
  craftType?: string
  customizedQuantity: number
  categoryId?: number
  categoryName?: string
  productPrice?: number
  templatePrice?: number
  craftPrice?: number
  imageAry?: string
  designImages?: string
  trimDesignImages?: string
  sizeType?: number
  num?: number
  passNum?: number
  notPassNum?: number
  payAmount?: number
  weight?: number
  inventory?: number
  occupyInventory?: number
  freezeInventory?: number
  createTime?: string
  updateTime?: string
  version?: number
  remark?: string
}
export interface operateOrderListData {
  id: number
  operationNo?: string
  podOrderId?: number
  podOrderNo?: string
  podOrderProductId?: number
  baseSku?: string
  variantSku?: string
  variantImage?: string
  thirdSpuCode?: string
  thirdSkuCode?: string
  supplierProductNo?: string
  productName?: string
  productMark?: string
  customizedQuantity?: number
  quantity?: number
  isReplenishment?: boolean
  totalProductionNum?: number
  status?: string
  outOfStock?: boolean
  arrange?: boolean
  version?: number
  createTime?: string
  updateTime?: string
  factoryNo?: number
  factoryCode?: string
  factoryCountryCode?: string
  warehouseId?: number
  namespace?: string
  statusName?: string
  [key: string]: unknown
}
export interface ExportParams extends SearchForm {
  idList?: number[]
  exportAll: boolean
  orderTracking?: boolean
}
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
  warehouseId?: number
  warehouseName?: string
  skuImage?: string
  productName?: string
  supplierProductNo?: string
  thirdSkuCode?: string
  selectedQuantity?: number
  availableInventory?: number
  inventory?: number
  producingQuantity?: number
  occupyInventory?: number
  pickingStatus?: string
  availableOrderIds?: number[]
  allOrderIds: number[]
}

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
}
