/**
 * 请求参数内容
 */
export interface WorkListReqParams {
  /**
   * 查询起始，按创建时间查询，YYYY-MM-DD
   */
  begin_from?: Date
  /**
   * 查询至，按创建时间查询，YYYY-MM-DD
   */
  end_to?: Date
  /**
   * 页码
   */
  page_no: number
  /**
   * 每页条数
   */
  page_size: number
  /**
   * 精确通过项目编号查找文档
   */
  prj_id?: string
  /**
   * 任务状态，0=进行中，1=已过期，2=已完成
   */
  status?: number
  process_type?: number
  name?: string
}

/**
 * 回复消息内容
 */
export interface WorkListResParams {
  /**
   * 列表
   */
  list: Work[]
  /**
   * 总页数
   */
  page_count: number
  /**
   * 页码，从1开始
   */
  page_no: number
  /**
   * 总条目数
   */
  total: number
  [property: string]: any
}

export interface Work {
  /**
   * 任务完成时间
   */
  completed_at?: string
  /**
   * 过期时间
   */
  due_at?: string
  /**
   * 任务表单，如果任务有相关表单要填写，这个用于定义表单的格式
   */
  form?: { [key: string]: any }
  /**
   * 任务id
   */
  id: string
  /**
   * 项目负责人id
   */
  leader_id: string
  /**
   * 项目负责人名称
   */
  leader_name: string
  /**
   * 任务名称
   */
  name: string
  /**
   * 任务相关id，相关参数，
   * * project-detail：项目详情预览
   * - prj_id: 项目id
   * * project-plan：任务清单预览
   * - prj_id: 项目id
   * * project-plan-draft：任务草稿预览
   * - prj_id: 项目id
   * * project-outcome：任务交付物详情
   * - prj_id: 项目id
   * - outcome_id：交付物id
   * * project-week-report：项目周报详情
   * - prj_id: 项目id
   * - report_id: 周报id
   */
  params: { [key: string]: any }
  /**
   * 项目id
   */
  prj_id: string
  /**
   * 项目名称
   */
  prj_name: string
  /**
   * 处理类型，1=待办，2=待阅
   */
  process_type?: number
  /**
   * 任务创建时间
   */
  started_at: string
  /**
   * 任务目标，project-detail：项目详情预览
   * project-plan：任务清单预览
   * project-plan-draft：任务草稿预览
   * project-outcome：任务交付物详情
   * project-week-report：项目周报详情
   */
  target_type: string
  [property: string]: any
}

/**
 * 回复消息内容
 */
export interface WorkDetailResParams {
  /**
   * 任务完成时间
   */
  completed_at?: string
  /**
   * 待阅类任务的文本，待阅任务的详情待阅文本
   */
  desc?: string
  /**
   * 过期时间
   */
  due_at?: string
  /**
   * 任务表单，如果任务有相关表单要填写，这个用于定义表单的格式
   */
  form?: Form
  /**
   * 任务id
   */
  id?: string
  /**
   * 项目负责人id
   */
  leader_id?: string
  /**
   * 项目负责人名称
   */
  leader_name?: string
  /**
   * 任务名称
   */
  name?: string
  /**
   * 任务相关id，相关参数，
   * * project-detail：项目详情预览
   * - prj_id: 项目id
   * * project-plan：任务清单预览
   * - prj_id: 项目id
   * * project-plan-draft：任务草稿预览
   * - prj_id: 项目id
   * * project-outcome：任务交付物详情
   * - prj_id: 项目id
   * - outcome_id：交付物id
   * * project-week-report：项目周报详情
   * - prj_id: 项目id
   * - report_id: 周报id
   */
  params?: { [key: string]: any }
  /**
   * 项目id
   */
  prj_id?: string
  /**
   * 项目名称
   */
  prj_name?: string
  /**
   * 处理类型，1=待办，2=待阅
   */
  process_type?: number
  /**
   * 任务创建时间
   */
  started_at?: string
  /**
   * 任务目标，project-detail：项目详情预览
   * project-plan：任务清单预览
   * project-plan-draft：任务草稿预览
   * project-outcome：任务交付物详情
   * project-week-report：项目周报详情
   */
  target_type?: string
  status: number
}

/**
 * 任务表单，如果任务有相关表单要填写，这个用于定义表单的格式
 */
export interface Form {
  /**
   * 表单id
   */
  id: string
  /**
   * 表单模板
   */
  schema: { [key: string]: any }
  /**
   * 表单标题
   */
  title: string
  [property: string]: any
}

/**
 * 请求参数内容
 */
export interface WorkSubmitReqParams {
  /**
   * 表单数据，有表单的任务，在提交任务时需要同时提交表单数据
   */
  form_data?: { [key: string]: any }
  /**
   * 任务id
   */
  id: string
  [property: string]: any
}

export interface UploadWorkFileReqParams {
  work_id: string
  filename: string
}

export interface UploadWorkFileResParams {
  url: string
  form_data: {
    [key: string]: any
  }
  object_name: string // object_name
}

export interface StatList {
  name: string
  value: number
  unit: string
  color?: string
}

export interface WorkStatResParams {
  list: StatList[]
}

export interface WorkChainReqParams {
  work_id: string
}

/**
 * 回复消息内容
 */
export interface WorkChainResParams {
  /**
   * 工作项链列表
   */
  list: WorkChain[]
}

export interface WorkChain {
  /**
   * 完成时间
   */
  completed_at?: string
  /**
   * 详情描述
   */
  desc?: string
  /**
   * 负责人id
   */
  handler_id: string
  /**
   * 负责人名称
   */
  handler_name: string
  /**
   * 工作项id
   */
  id: string
  /**
   * 工作项名
   */
  name: string
  /**
   * 工作项处理类型
   */
  process_type: number
  /**
   * 起始时间
   */
  started_at: string
  /**
   * 工作项状态
   */
  status: number
  [property: string]: any
}
