import { PhaseItem, PhaseTitle } from "@/enums/api"
import { Task } from "./plan-task"

// 获取项目列表请求参数
export interface ProjectListReqParams {
  page_no: number // 页码
  page_size: number // 每页条数
  name?: string // 根据项目名称过滤（模糊匹配）
  type_id?: string // 根据项目子类型id过滤
  leader_id?: string // 根据项目负责人账号id过滤
  region_id?: number // 根据所在地区id过滤
  customer_name?: string // 根据客户名称过滤
  phase_id?: string // 根据项目阶段过滤
  start_at_from?: string // 项目启动时间（查询起始）YYYY-MM-DD HH:NN:SS
  start_at_to?: string // 项目启动时间（查询至）YYYY-MM-DD HH:NN:SS
  deliver_at_from?: string // 项目交付时间（查询起始）YYYY-MM-DD HH:NN:SS
  deliver_at_to?: string // 项目交付时间（查询至）YYYY-MM-DD HH:NN:SS
}

export interface Members {
  account_id?: string // 项目组成员账号id
  role_id?: string // 项目组成员角色id
  name?: string
  role_name?: string
  memo?: string // 说明
  isCreated?: boolean
}

// 添加项目信息请求参数
export interface AddProjectReqParams {
  name: string // 项目名称
  customer_id?: string // 客户id
  region_id: number // 所在地区id
  type_id: number // 项目子类型id
  template_id?: string // 项目模板，通过模板可以自动生成项目任务计划
  // contract_amount?: number // 合同金额（万元）
  deliver_at?: string // 预计交付时间（YYYY-MM-DD）
  contract_id?: string // 合同编号
  // industry_id: string // 所属行业id
  // leader_id: string // 项目负责人账号id
  // bizman_id: string // 商务负责人id
  intro?: string // 项目简介
  members?: Members[] // 项目组成员
  checker_ids: string[]
}

// 修改项目信息请求参数
export interface ModifyProjectReqParams {
  id: string // 项目编号
  name?: string // 项目名称
  customer_id?: string // 客户id
  region_id?: number // 所在地区id
  type_id?: number // 项目子类型id
  // contract_amount?: number // 合同金额（万元）
  deliver_at?: string // 预计交付时间（YYYY-MM-DD）
  contract_id?: string // 合同编号
  // industry_id?: string // 所属行业id
  leader_id?: string // 项目负责人账号id
  bizman_id?: string // 商务负责人id
  intro?: string // 项目简介
  members?: Members[] // 项目组成员
}

// 审核立项项目请求参数
export interface CheckStartProjectReqParams {
  id: string // 项目编号
  pass: boolean // 是否通过
  comment: string // 审核意见
}

// 项目列表返回具体参数
export interface Project {
  id: string // 项目编号
  name: string // 项目名称
  customer_name: string // 客户名称
  phase_id: PhaseItem // 当前阶段编码
  phase_name: string // 项目阶段
  region_id: number // 所属区域编号
  region_name: string // 所属区域名称
  type_id: number // 项目子类型编号
  type_name: string // 项目子类型名称
  contract_amount?: number // 合同金额（万元）
  deliver_at?: string // 预计交付时间 YYYY-MM-DD
  industry_id: string // 所属行业编号
  industry_name: string // 所属行业名称
  leader_id: string // 项目负责人账号
  leader_name: string // 项目负责人姓名
  bizman_id: string // 商务负责人id
  bizman_name: string // 商务负责人姓名
  created_at: string // 创建日期 YYYY-MM-DD
  started_at?: string // 项目启动日期 YYYY-MM-DD
  works?: { id: string; name: string }[] // 本人任务
  progress: number
}

// 项目列表返回参数
export interface ProjectListResParams extends BaseResParams {
  page_count: number // 当前页数量
  page_no: number // 当前页码
  total: number // 总数
  list: Project[]
}

// 添加项目成功返回参数
export interface AddProjectResParams extends BaseResParams {
  id: string
}

export interface OverviewProject {
  customer_id: string // 客户编号
  region_name: string // 客户所在地区名称
  industry_name: string // 客户所属行业名称
  level_id: string // 客户级别id
  level_name: string // 客户级别名称
  phase_id: PhaseItem // 当前阶段编码
  phase_name: PhaseTitle // 当前阶段名称
  progress: number // 进度百分比
  intro?: string // 项目简介
  updated_at?: string
  contract_id?: string
  contract_name?: string
  members?: Members[] // 项目组成员
  customer_region_name?: string // 客户商务负责人id
  customer_bizman_name?: string // 客户商务负责人名称
  id: string // 项目编号
  name: string // 项目名称
  customer_name: string // 客户名称
  region_id: number // 所属区域编号
  type_id: number // 项目子类型编号
  type_name: string // 项目子类型名称
  contract_amount?: number // 合同金额（万元）
  deliver_at?: string // 预计交付时间 YYYY-MM-DD
  industry_id: string // 所属行业编号
  leader_id: string // 项目负责人账号
  leader_name: string // 项目负责人姓名
  bizman_id: string // 商务负责人id
  bizman_name: string // 商务负责人姓名
  created_at: string // 创建日期 YYYY-MM-DD
  started_at?: string // 项目启动日期 YYYY-MM-DD
  works?: { id: string; name: string }[] // 本人任务
}

// 项目概览返回参数
export interface OverviewProjectResParams extends  OverviewProject {}

// 项目动态具体参数
export interface ProjectLog {
  /**
   * 内容，含html标签，可表示富文本
   */
  content: string
  /**
   * 账号id
   */
  creator_id?: string
  /**
   * 账号名称
   */
  creator_name?: string
  /**
   * id
   */
  id: string
  /**
   * 项目id
   */
  prj_id: string
  prj_name: string
  /**
   * 任务id
   */
  task_id?: string
  /**
   * 时间
   */
  ts: string
}

// 获取项目列表请求参数
export interface ProjectLogsReqParams {
  /**
   * 查询起始时间，YYYY-MM-DD格式
   */
  begin_at?: Date
  /**
   * 查询结束时间，YYYY-MM-DD格式
   */
  end_at?: Date
  /**
   * 项目id
   */
  id?: string
  /**
   * 页码，从1开始
   */
  page_no: number
  /**
   * 每页条数
   */
  page_size: number
  [property: string]: any
}

// 项目列表返回参数
export interface ProjectLogsResParams extends BaseResParams {
  page_count: number // 当前页数量
  page_no: number // 当前页码
  total: number // 总数
  list: ProjectLog[]
}

// 项目列表返回参数
export interface ProjectMilestoneResParams extends BaseResParams {
  progress: number
  tasks: Task[]
}

export interface Checker {
  /**
   * 超时时限（天），超时后产生提醒
   */
  due_day: number
  /**
   * 账号
   */
  id: string
  name: string
  /**
   * 名称
   */
  isCreated?: boolean
}

export interface ProjectCheckersResParams {
  checkers: Checker[]
}
