import type { PageParam, PageResult } from '#/packages/effects/request/src';

import { requestClient } from '#/api/request';

export namespace MesPdProjectApi {
  /** 产品设计项目 */
  export interface Project {
    id?: number;
    /** 任务编码 */
    taskCode?: string;
    /** 任务名称 */
    taskName?: string;
    /** 产品编码 */
    productCode?: string;
    /** 产品名称 */
    productName?: string;
    /** 版本号 */
    version?: string;
    /** 状态 */
    status?: number;
    /** 主设计师（用户ID） */
    chiefDesigner?: number;
    /** 主设计师名称 */
    chiefDesignerNickname?: string;
    /** 审核人（用户ID） */
    reviewer?: number;
    /** 审核人名称 */
    reviewerNickname?: string;
    /** 计划完成时间 */
    planFinishTime?: number;
    /** 备注 */
    remark?: string;
    /** 创建时间 */
    createTime?: number;
  }

  export interface PageParams extends PageParam {
    taskCode?: string;
    taskName?: string;
    productCode?: string;
    productName?: string;
    status?: number;
    planFinishTime?: number[];
  }
}

export function getPdProjectPage(params: MesPdProjectApi.PageParams) {
  return requestClient.get<PageResult<MesPdProjectApi.Project>>(
    '/mes/pd/project/page',
    { params },
  );
}

export function getPdProject(id: number) {
  return requestClient.get<MesPdProjectApi.Project>(
    `/mes/pd/project/get?id=${id}`,
  );
}

export function createPdProject(data: MesPdProjectApi.Project) {
  return requestClient.post<number>('/mes/pd/project/create', data);
}

export function updatePdProject(data: MesPdProjectApi.Project) {
  return requestClient.put('/mes/pd/project/update', data);
}

export function deletePdProject(id: number) {
  return requestClient.delete(`/mes/pd/project/delete?id=${id}`);
}

export function exportPdProject(params: MesPdProjectApi.PageParams) {
  return requestClient.download('/mes/pd/project/export-excel', { params });
}

/** 发布（待发布→待上传） */
export function publishPdProject(id: number) {
  return requestClient.put('/mes/pd/project/publish', undefined, {
    params: { id },
  });
}

/** 上传资料（待上传→待审核），后端自动创建资料审核记录 */
export function uploadPdProject(id: number) {
  return requestClient.put('/mes/pd/project/upload', undefined, {
    params: { id },
  });
}

/** 审核（待审核→待归档） */
export function auditPdProject(id: number) {
  return requestClient.put('/mes/pd/project/audit', undefined, {
    params: { id },
  });
}

/** 归档（待归档→已归档），后端自动创建归档台账记录 */
export function archivePdProject(id: number) {
  return requestClient.put('/mes/pd/project/archive', undefined, {
    params: { id },
  });
}
