export interface UserGuideStep {
  title: string
  description: string
  points: string[]
}

export type XmInfoLike = {
  projectName?: unknown
  preparedBy?: unknown
  reviewedBy?: unknown
  preparedDate?: unknown
  projectIndustry?: unknown
  preparedCompany?: unknown
  overview?: unknown
  desc?: unknown
}

export type HtBaseInfoLike = {
  quality?: unknown
  duration?: unknown
}

export interface ScaleRowLike {
  id: string
  amount: number | null
  landArea: number | null
}

export interface XmInfoStorageLike extends XmInfoLike {
  detailRows?: ScaleRowLike[]
  totalAmount?: number
  roughCalcEnabled?: boolean
}

export interface XmScaleStorageLike {
  detailRows?: ScaleRowLike[]
}

export interface ContractCardItem {
  id: string
  name?: string
  order?: number
}

export interface ZxFwRowLike {
  id: string
  process?: unknown
  subtotal?: unknown
  finalFee?: unknown
  investScale?: unknown
  landScale?: unknown
  workload?: unknown
  hourly?: unknown
}

export interface WorkContentRowLike {
  id?: unknown
  content?: unknown
  checked?: unknown
  custom?: unknown
  serviceGroup?: unknown
  serviceid?: unknown
  isAddTrigger?: unknown
}

export interface WorkContentStateLike {
  detailRows?: WorkContentRowLike[]
}

export interface ZxFwStorageLike {
  selectedIds?: string[]
  selectedCodes?: string[]
  detailRows?: ZxFwRowLike[]
}

export interface ScaleMethodRowLike extends ScaleRowLike {
  benchmarkBudgetBasicChecked?: unknown
  benchmarkBudgetOptionalChecked?: unknown
  basicFormula?: unknown
  optionalFormula?: unknown
  budgetFee?: unknown
  budgetFeeBasic?: unknown
  budgetFeeOptional?: unknown
  consultCategoryFactor?: unknown
  majorFactor?: unknown
  workStageFactor?: unknown
  workRatio?: unknown
  remark?: unknown
}

export interface HtFeeMainRowLike {
  id?: unknown
  name?: unknown
}

export interface RateMethodRowLike {
  rate?: unknown
  budgetFee?: unknown
}

export interface QuantityMethodRowLike {
  id?: unknown
  feeItem?: unknown
  unit?: unknown
  quantity?: unknown
  unitPrice?: unknown
  budgetFee?: number | null
  remark?: unknown
}

export interface WorkloadMethodRowLike {
  id: string
  budgetAdoptedUnitPrice?: unknown
  workload?: unknown
  basicFee?: unknown
  consultCategoryFactor?: unknown
  serviceFee?: unknown
  remark?: unknown
}

export interface HourlyMethodRowLike {
  id: string
  adoptedBudgetUnitPrice?: unknown
  personnelCount?: unknown
  workdayCount?: unknown
  serviceBudget?: unknown
  remark?: unknown
}

export interface DetailRowsStorageLike<T> {
  detailRows?: T[]
  roughCalcEnabled?: boolean
  totalAmount?: number
}

export interface FactorRowLike {
  id: string
  standardFactor?: unknown
  budgetValue?: unknown
  remark?: unknown
}

export interface ExportScaleRow {
  major: number
  cost: number | null
  area: number | null
}

export interface ExportMethod1Detail {
  proNum: number
  major: number
  cost: number
  basicFee: number
  basicFormula: string
  basicFee_basic: number
  optionalFormula: string
  basicFee_optional: number
  serviceCoe: number
  majorCoe: number
  processCoe: number
  proportion: number
  fee: number
  remark: string
}

export interface ExportMethod1 {
  proAmount: number
  cost: number
  basicFee: number
  basicFee_basic: number
  basicFee_optional: number
  fee: number
  det: ExportMethod1Detail[]
}

export interface ExportMethod2Detail {
  proNum: number
  major: number
  area: number
  basicFee: number
  basicFormula: string
  basicFee_basic: number
  optionalFormula: string
  basicFee_optional: number
  serviceCoe: number
  majorCoe: number
  processCoe: number
  proportion: number
  fee: number
  remark: string
}

export interface ExportMethod2 {
  proAmount: number
  area: number
  basicFee: number
  basicFee_basic: number
  basicFee_optional: number
  fee: number
  det: ExportMethod2Detail[]
}

export interface ExportMethod3Detail {
  task: number
  price: number
  amount: number
  basicFee: number
  serviceCoe: number
  fee: number
  remark: string
}

export interface ExportMethod3 {
  basicFee: number
  fee: number
  det: ExportMethod3Detail[]
}

export interface ExportMethod4Detail {
  expert: number
  price: number
  person_num: number
  work_day: number
  fee: number
  remark: string
}

export interface ExportMethod4 {
  person_num: number
  work_day: number
  fee: number
  det: ExportMethod4Detail[]
}

export interface ExportService {
  id: number
  fee: number
  finalFee: number
  process: number
  tasks: ExportTaskGroup[]
  method1?: ExportMethod1
  method2?: ExportMethod2
  method3?: ExportMethod3
  method4?: ExportMethod4
}

export interface ExportTaskGroup {
  serviceid?: number
  text: string[]
}

export interface ExportServiceCoe {
  serviceid: number
  coe: number
  remark: string
}

export interface ExportMajorCoe {
  majorid: number
  coe: number
  remark: string
}

export interface ExportContract {
  name: string
  serviceFee: number
  addtionalFee: number
  reserveFee: number
  fee: number
  quality: string
  duration: string
  scale: ExportScaleRow[]
  serviceCoes: ExportServiceCoe[]
  majorCoes: ExportMajorCoe[]
  services: ExportService[]
  addtional: ExportAdditional | null
  reserve: ExportReserve | null
}

export interface ExportMethod0 {
  coe: number
  fee: number
}

export interface ExportMethod5Detail {
  name: string
  unit: string
  amount: number
  price: number
  fee: number
  remark: string
}

export interface ExportMethod5 {
  fee: number
  det: ExportMethod5Detail[]
}

export interface ExportAdditionalDetail {
  id: number | string
  code?: unknown
  name: string
  fee: number
  tasks: ExportTaskGroup[]
  m0?: ExportMethod0
  m4?: ExportMethod4
  m5?: ExportMethod5
}

export interface ExportAdditional {
  code?: unknown
  name: string
  fee: number
  det: ExportAdditionalDetail[]
}

export interface ExportReserve {
  code?: unknown
  name: string
  fee: number
  tasks: ExportTaskGroup[]
  m0?: ExportMethod0
  m4?: ExportMethod4
  m5?: ExportMethod5
}

export interface ExportReportPayload {
  name: string
  writer: string
  reviewer: string
  company: string
  date: string
  industry: number
  fee: number
  scaleCost: number
  overview: string
  desc: string
  scale: ExportScaleRow[]
  serviceCoes: ExportServiceCoe[]
  majorCoes: ExportMajorCoe[]
  contracts: ExportContract[]
}
