| | |
| | | |
| | | import { requestClient } from '#/api/request'; |
| | | |
| | | import { isPdMockEnabled } from '../mock/enabled'; |
| | | import { pdMockStore } from '../mock/store'; |
| | | |
| | | export namespace MesPdProjectApi { |
| | | /** 产品设计项目 */ |
| | | export interface Project { |
| | | id?: number; |
| | | code?: string; |
| | | name?: string; |
| | | /** 任务编码 */ |
| | | taskCode?: string; |
| | | /** 任务名称 */ |
| | | taskName?: string; |
| | | /** 产品编码 */ |
| | | productCode?: string; |
| | | /** 产品名称 */ |
| | | productName?: string; |
| | | /** 版本号 */ |
| | | version?: string; |
| | | /** 状态 */ |
| | | status?: number; |
| | | designerId?: number; |
| | | designerName?: string; |
| | | reviewerId?: number; |
| | | reviewerName?: string; |
| | | planStartDate?: number; |
| | | planEndDate?: number; |
| | | actualFinishDate?: number; |
| | | /** 主设计师(用户ID) */ |
| | | chiefDesigner?: number; |
| | | /** 主设计师名称 */ |
| | | chiefDesignerNickname?: string; |
| | | /** 审核人(用户ID) */ |
| | | reviewer?: number; |
| | | /** 审核人名称 */ |
| | | reviewerNickname?: string; |
| | | /** 计划完成时间 */ |
| | | planFinishTime?: number; |
| | | /** 备注 */ |
| | | remark?: string; |
| | | /** 创建时间 */ |
| | | createTime?: number; |
| | | /** 审核人用户编号(审核通过后写入实际审核人) */ |
| | | reviewerId?: number; |
| | | /** 审核人姓名 */ |
| | | reviewerName?: string; |
| | | /** 审核时间 */ |
| | | reviewTime?: number; |
| | | /** 审核意见(通过时的意见 / 不通过时的原因) */ |
| | | reviewRemark?: string; |
| | | } |
| | | |
| | | export interface PageParams extends PageParam { |
| | | code?: string; |
| | | name?: string; |
| | | taskCode?: string; |
| | | taskName?: string; |
| | | productCode?: string; |
| | | productName?: string; |
| | | status?: number; |
| | | designerId?: number; |
| | | planFinishTime?: number[]; |
| | | } |
| | | } |
| | | |
| | | export function getPdProjectPage(params: MesPdProjectApi.PageParams) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.getProjectPage(params); |
| | | } |
| | | return requestClient.get<PageResult<MesPdProjectApi.Project>>( |
| | | '/mes/pd/project/page', |
| | | { params }, |
| | |
| | | } |
| | | |
| | | export function getPdProject(id: number) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.getProject(id); |
| | | } |
| | | return requestClient.get<MesPdProjectApi.Project>( |
| | | `/mes/pd/project/get?id=${id}`, |
| | | ); |
| | | } |
| | | |
| | | export function createPdProject(data: MesPdProjectApi.Project) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.createProject(data); |
| | | } |
| | | return requestClient.post<number>('/mes/pd/project/create', data); |
| | | } |
| | | |
| | | export function updatePdProject(data: MesPdProjectApi.Project) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.updateProject(data); |
| | | } |
| | | return requestClient.put('/mes/pd/project/update', data); |
| | | } |
| | | |
| | | export function deletePdProject(id: number) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.deleteProject(id); |
| | | } |
| | | return requestClient.delete(`/mes/pd/project/delete?id=${id}`); |
| | | } |
| | | |
| | | export function exportPdProject(params: MesPdProjectApi.PageParams) { |
| | | if (isPdMockEnabled()) { |
| | | return Promise.resolve(new Blob()); |
| | | } |
| | | return requestClient.download('/mes/pd/project/export-excel', { params }); |
| | | } |
| | | |
| | | export function submitPdProjectReview(id: number) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.submitProjectReview(id); |
| | | } |
| | | return requestClient.put('/mes/pd/project/submit-review', undefined, { |
| | | params: { id }, |
| | | }); |
| | | } |
| | | |
| | | /** 发布(待发布→待上传) */ |
| | | export function publishPdProject(id: number) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.publishProject(id); |
| | | } |
| | | return requestClient.put('/mes/pd/project/publish', undefined, { |
| | | params: { id }, |
| | | }); |
| | | } |
| | | |
| | | export function approvePdProject(id: number) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.approveProject(id); |
| | | } |
| | | return requestClient.put('/mes/pd/project/approve', undefined, { |
| | | /** 上传资料(待上传→待审核),后端自动创建资料审核记录 */ |
| | | export function uploadPdProject(id: number) { |
| | | return requestClient.put('/mes/pd/project/upload', undefined, { |
| | | params: { id }, |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 提交审批(待审核→审批中) |
| | | * |
| | | * 审核人由「系统管理 - 审批配置」按业务类型统一配置,提交时无需指定; |
| | | * 未启用审批或未配置有效审核人时后端会抛出业务异常。 |
| | | */ |
| | | export function submitPdProjectApproval(id: number) { |
| | | return requestClient.put('/mes/pd/project/submit-approval', undefined, { |
| | | params: { id }, |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 获得设计项目的审核人编号集合 |
| | | * |
| | | * 供列表页判断当前登录用户是否应展示「审核 / 审核不通过」按钮;未配置时返回空数组。 |
| | | */ |
| | | export function getPdProjectApproverIds() { |
| | | return requestClient.get<number[]>('/mes/pd/project/approver-ids'); |
| | | } |
| | | |
| | | /** |
| | | * 审核设计项目(审批中→待归档/待审核) |
| | | * |
| | | * 仅审批配置中的审核人可调用(多人时或签);pass=false 时 reviewRemark(不通过原因)必填。 |
| | | */ |
| | | export function auditPdProject( |
| | | id: number, |
| | | pass: boolean, |
| | | reviewRemark?: string, |
| | | ) { |
| | | return requestClient.put('/mes/pd/project/audit', { |
| | | id, |
| | | pass, |
| | | reviewRemark, |
| | | }); |
| | | } |
| | | |
| | | /** 归档(待归档→已归档),后端自动创建归档台账记录 */ |
| | | export function archivePdProject(id: number) { |
| | | if (isPdMockEnabled()) { |
| | | return pdMockStore.archiveProject(id); |
| | | } |
| | | return requestClient.put('/mes/pd/project/archive', undefined, { |
| | | params: { id }, |
| | | }); |