import type { DefaultRow } from 'element-plus/es/components/table/src/table/defaults'

export {}

declare global {
  namespace OrderTypes {
    interface DispatchParam {
      orderId?: string
      transIds?: string[]
      driverId?: string
      transOrgId?: string
      sn?: string
      trainNum?: number
    }

    interface SearchOrderParam extends G.PageParam {
      // 订单编号
      sn?: string
      // 项目名称
      projectName?: string
      // 联系人姓名
      contacts?: string
      // 下单人联系方式
      phone?: string
      // 下单时间
      orderTimes: [ string | undefined, string | undefined ]
      orderTimeStart?: string
      orderTimeEnd?: string
      // 订单类型；字典代码：order_category，HuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出
      orderCategory?: string
      // 订单状态；字典代码：order_status，YiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消
      orderStatus?: string
      // 完结时间
      finishTimes: [ string | undefined, string | undefined ]
      finishTimeStart?: string
      finishTimeEnd?: string
      // 运输企业
      transOrgName?: string
      // 站点 Id；cst_station.id
      stationId?: string
      // 创建时间
      createTimes: [ string | undefined, string | undefined ]
      createTimeStart?: string
      createTimeEnd?: string
    }

    interface ProjectInfo {
      // Id
      id: string
      projectName: string
    }

    interface CargoPlace {
      // Id
      id: string
      zx: string
      province: string
      city: string
      area: string
      town: string
      province_name: string
      city_name: string
      area_name: string
      town_name: string
      address: string
      lng: number
      lat: number
    }

    interface PaymentRecord {
      // Id
      id?: string
      // 订单收费项 Id
      expenseItemId?: string
      // 付费方；字典代码：payer，PingTai-->平台、ChanFei-->产废方、YunShu-->运输方、XiaoNa-->消纳方、CaiGou-->采购方
      payer?: string
      // 量
      quantity?: number
      // 支付状态，MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款
      paymentStatus?: string
      // 支付时间
      payTime?: string
      // 退款时间
      refundTime?: string
      // 总金额；单位：元
      totalMoney?: string
      // 优惠金额；单位：元，有正负
      discountMoney?: string
      // 手动修正金额；单位：元，有正负
      reviseMoney?: string
      // 结算金额；单位：元
      settleMoney?: string
      // 结算方式，YueJie-->月结、YuE-->余额、XianFu-->现付
      settlementWay?: string
      // 付款人 Id；sys_user.id
      payerUserId?: string
      payerName?: string
      // 付款人客户 Id；cst_customer.id
      payerCustomerId?: string
      // 付款方资金账户 Id
      payerMoneyAccountId?: string

      // 收费项目类型，QiTa-->其他、ChanPin-->产品、YunFei-->运费
      expenseItemCategory?: string
      // 付费项名称
      expenseItemName?: string
      // 计费策略；字典代码：expense_strategy，MianFei-->免费、TanXing-->弹性、GuDing-->固定、Che-->车、Fang-->方、JuLi-->距离
      expenseStrategy?: string
      // 税率
      taxRate?: string
      // 计量单位；字典代码：unit
      unit?: string
      // 单价；单位：元，弹性模式-->每档价格
      unitPrice?: string
      // 起步价；单位：元，<= 起步量 固定费用
      initialPrice?: string
      // 起步量
      initialQuantity?: number
      // 每档的量
      everyQuantity?: number
    }

    interface TransRecode {
      // Id
      id?: string
      // 车次
      trainNum?: number
      // 运输状态；字典代码：trans_status，DaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消
      transStatus?: string
      // 车道名称
      lane?: string
      // 指派司机时间
      assignmentDriverTime?: string
      // 司机确认接单时间
      driverConfirmTime?: string
      // 开始运输时间
      transTime?: string
      // 完结时间
      finishTime?: string
      // 看料员 Id；sys_user.id
      checkerId?: string
      checkerName?: string
      // 勘料状态；字典代码：check_status，Wu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料
      checkStatus?: string
      // 勘料时间
      checkTime?: string
      // 勘料照片
      checkPhoto?: string
      // 勘料员备注
      checkerMemo?: string
      // 司机 Id
      driverId?: string
      driverName?: string
      // 司机所属客户 Id；cst_customer.id
      driverCustomerId?: string
      // 司机所属用户 Id
      driverUserId?: string
      // 归属客户 Id；cst_customer.id
      truckCustomerId?: string
      // 归属组织
      truckOrgId?: string
      // 车辆 Id
      truckId?: string
      // 车牌号
      truckLicensePlate?: string
      // 历史皮重
      historyTareWeight?: number
      // 毛重；单位：千克
      roughWeight?: number
      // 皮重；单位：千克
      tareWeight?: number
      // 净重；单位：千克
      settleWeight?: number
      // 运距；单位：米
      transDistance?: number
      // 进场车头照片
      inFrontPhoto?: string
      // 进场车斗照片
      inBodyPhoto?: string
      // 出场车头照片
      outFrontPhoto?: string
      // 出场车斗照片
      outBodyPhoto?: string
      // 进场时间
      inTime?: string
      // 出场时间
      outTime?: string
      paymentRecords?: PaymentRecord[]
    }

    interface SearchOrderResult {
      // Id
      id?: string
      // 订单编号
      sn?: string
      // 项目 Id
      projectId?: string
      // 下单人 Id；sys_user.id
      userId?: string
      // 下单人客户 Id；cst_customer.id
      customerId?: string
      // 下单人姓名
      contacts?: string
      // 下单人联系方式
      phone?: string
      // 下单时间
      orderTime?: string
      // 订单类型；字典代码：order_category，HuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出
      orderCategory?: string
      // 订单状态；字典代码：order_status，YiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消
      orderStatus?: string
      // 完结时间
      finishTime?: string
      // 运输企业 Id；cst_org.id
      transOrgId?: string
      transOrgName?: string
      // 运输方客户 Id
      transCustomerId?: string
      transCustomerName?: string
      // 指派清运公司时间
      assignmentTransTime?: string
      // 站点 Id；cst_station.id
      stationId?: string
      // 站点名称；cst_station.station.name
      stationName?: string
      // 运距；单位：米
      transDistance?: number
      // 预估量
      estimatedQuantity?: number
      // 预估车数
      estimatedTrainNum?: number
      // 产品 Id
      goodsId?: string
      // 产品名称
      goodsName?: string
      // 计量单位；字典代码：unit
      unit?: string
      // 客户备注
      customerMemo?: string
      // 创建时间
      createTime?: string
      projectInfo?: ProjectInfo
      cargoPlace?: CargoPlace
      transRecodes?: TransRecode[]
    }

    interface TableData extends DefaultRow {
      rowCount: number
      // Id
      id?: string
      orderId?: string
      // 订单编号
      sn?: string
      // 下单时间
      orderTime?: string
      // 下单人姓名
      contacts?: string
      // 下单人联系方式
      phone?: string
      projectName?: string
      // 站点名称；cst_station.station.name
      stationName?: string
      transOrgName?: string
      // 运距；单位：米
      transDistance?: number
      // 产品名称
      goodsName?: string
      // 计量单位；字典代码：unit
      unit?: string
      // 客户备注
      customerMemo?: string

      trainNum?: string
      truckLicensePlate?: string
      driverName?: string
      driverPhone?: string
      settleWeight?: string
      roughWeight?: string
      tareWeight?: string
      inTime?: string
      outTime?: string
      transTime?: string
      // 完结时间
      finishTime?: string
      paymentStatus?: string
      paymentStatusTxt?: string
      transStatus?: string
      transStatusTxt?: string
      checkStatus?: string
      checkStatusTxt?: string
      transOrgId?: string

    }

    interface AddOrderParam {
      // Id
      id?: string
      // 订单编号
      sn?: string
      // 项目 Id
      projectId?: string
      // 下单人 Id；sys_user.id
      userId?: string
      // 下单人客户 Id；cst_customer.id
      customerId?: string
      // 下单人姓名
      contacts?: string
      // 下单人联系方式
      phone?: string
      // 下单时间
      orderTime?: string
      // 订单类型；字典代码：order_category，HuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出
      orderCategory?: string
      // 订单状态；字典代码：order_status，YiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消
      orderStatus?: string
      // 完结时间
      finishTime?: string
      // 运输企业 Id；cst_org.id
      transOrgId?: string
      // 运输方客户 Id
      transCustomerId?: string
      // 指派清运公司时间
      assignmentTransTime?: string
      // 站点 Id；cst_station.id
      stationId?: string
      // 站点名称；cst_station.station.name
      stationName?: string
      // 运距；单位：米
      transDistance?: number
      // 预估量
      estimatedQuantity?: number
      // 预估车数
      estimatedTrainNum?: number
      // 产品 Id
      goodsId?: string
      // 产品名称
      goodsName?: string
      // 计量单位；字典代码：unit
      unit?: string
      // 客户备注
      customerMemo?: string
      // 创建人 Id； sys_user.id
      creatorId?: string
      // 修改人 Id； sys_user.id
      modifierId?: string
      // 创建时间
      createTime?: string
      // 修改时间
      modifyTime?: string
      // 是否删除； 0-->未删除、1-->已删除
      deleted?: boolean
    }

    interface ModifyOrderParam {
      // Id
      id?: string
      // 订单编号
      sn?: string
      // 项目 Id
      projectId?: string
      // 下单人 Id；sys_user.id
      userId?: string
      // 下单人客户 Id；cst_customer.id
      customerId?: string
      // 下单人姓名
      contacts?: string
      // 下单人联系方式
      phone?: string
      // 下单时间
      orderTime?: string
      // 订单类型；字典代码：order_category，HuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出
      orderCategory?: string
      // 订单状态；字典代码：order_status，YiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消
      orderStatus?: string
      // 完结时间
      finishTime?: string
      // 运输企业 Id；cst_org.id
      transOrgId?: string
      // 运输方客户 Id
      transCustomerId?: string
      // 指派清运公司时间
      assignmentTransTime?: string
      // 站点 Id；cst_station.id
      stationId?: string
      // 站点名称；cst_station.station.name
      stationName?: string
      // 运距；单位：米
      transDistance?: number
      // 预估量
      estimatedQuantity?: number
      // 预估车数
      estimatedTrainNum?: number
      // 产品 Id
      goodsId?: string
      // 产品名称
      goodsName?: string
      // 计量单位；字典代码：unit
      unit?: string
      // 客户备注
      customerMemo?: string
      // 创建人 Id； sys_user.id
      creatorId?: string
      // 修改人 Id； sys_user.id
      modifierId?: string
      // 创建时间
      createTime?: string
      // 修改时间
      modifyTime?: string
      // 是否删除； 0-->未删除、1-->已删除
      deleted?: boolean
    }

    interface AssignmentDriver {
      orderId?: string
      orderTransId?: string[]
      driverId?: string
    }

    interface TruckComingLeavingParam {
      orderTransId?: string
      weight?: number
      frontPhoto?: string
      bodyPhoto?: string
    }

    interface CheckParam {
      orderTransId?: string
      checkPhoto?: string[]
      checkerMemo?: string
    }
  }
}
