mes/pd/project/index)mes/pd/archive/index)待发布(0) → 待上传(1) → 待审核(2) → 待归档(3) → 已归档(4)
| 状态值 | 状态名 | 允许操作 |
|---|---|---|
| 0 | 待发布 | 修改、删除、发布 |
| 1 | 待上传 | 上传资料 |
| 2 | 待审核 | 审核 |
| 3 | 待归档 | 归档 |
| 4 | 已归档 | 无 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /mes/pd/project/create | 创建设计项目 |
| PUT | /mes/pd/project/update | 更新设计项目 |
| DELETE | /mes/pd/project/delete | 删除设计项目 |
| GET | /mes/pd/project/get | 获取设计项目详情 |
| GET | /mes/pd/project/page | 获取设计项目分页 |
| GET | /mes/pd/project/export-excel | 导出设计项目Excel |
| PUT | /mes/pd/project/publish | 发布(待发布→待上传) |
| PUT | /mes/pd/project/upload | 上传资料(待上传→待审核),**自动创建资料审核记录** |
| PUT | /mes/pd/project/audit | 审核(待审核→待归档) |
| PUT | /mes/pd/project/archive | 归档(待归档→已归档),**自动创建归档台账记录** |
创建/更新请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 否(更新时必填) | 编号 |
| taskCode | String | 是 | 任务编码 |
| taskName | String | 是 | 任务名称 |
| productCode | String | 否 | 产品编码 |
| productName | String | 否 | 产品名称 |
| version | String | 否 | 版本号 |
| chiefDesigner | Long | 否 | 主设计师(用户ID) |
| reviewer | Long | 否 | 审核人(用户ID) |
| planFinishTime | LocalDateTime | 否 | 计划完成时间 |
| remark | String | 否 | 备注 |
分页请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| taskCode | String | 否 | 任务编码(模糊) |
| taskName | String | 否 | 任务名称(模糊) |
| productCode | String | 否 | 产品编码(模糊) |
| productName | String | 否 | 产品名称(模糊) |
| status | Integer | 否 | 状态 |
| planFinishTime | LocalDateTime[] | 否 | 计划完成时间范围 |
响应: 在基础字段上额外包含 chiefDesignerNickname(主设计师名称)、reviewerNickname(审核人名称)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /mes/pd/document/create | 创建设计资料 |
| PUT | /mes/pd/document/update | 更新设计资料 |
| DELETE | /mes/pd/document/delete | 删除设计资料 |
| GET | /mes/pd/document/get | 获取设计资料详情 |
| GET | /mes/pd/document/page | 获取设计资料分页 |
| GET | /mes/pd/document/export-excel | 导出设计资料Excel |
创建/更新请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 否(更新时必填) | 编号 |
| projectId | Long | 是 | 设计项目ID |
| documentType | String | 否 | 资料类型(字典 mes_pd_document_type) |
| documentName | String | 是 | 资料名称 |
| documentVersion | String | 否 | 版本 |
| fileName | String | 否 | 文件名 |
| uploadUserId | Long | 否 | 上传人(用户ID) |
| uploadTime | LocalDateTime | 否 | 上传时间 |
| fileUrl | String | 否 | 文件URL(通过 /infra/file/upload 上传后获取) |
| remark | String | 否 | 备注 |
响应: 在基础字段上额外包含 uploadUserNickname(上传人名称)、fileUrl(文件URL)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /mes/pd/document-audit/create | 创建资料审核(**上传资料时后端自动调用,前端无需单独调用**) |
| PUT | /mes/pd/document-audit/update | 更新资料审核 |
| DELETE | /mes/pd/document-audit/delete | 删除资料审核 |
| GET | /mes/pd/document-audit/get | 获取资料审核详情 |
| GET | /mes/pd/document-audit/page | 获取资料审核分页 |
| GET | /mes/pd/document-audit/export-excel | 导出资料审核Excel |
创建/更新请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 否(更新时必填) | 编号 |
| auditNo | String | 是 | 审核单号(编码规则 PD_DOCUMENT_AUDIT_CODE 自动生成) |
| documentId | Long | 是 | 资料ID |
| documentName | String | 否 | 资料名称(冗余) |
| documentVersion | String | 否 | 资料版本(冗余) |
| reviewer | Long | 否 | 审核人(用户ID,自动取项目的审核人) |
| auditStatus | Integer | 否 | 审核状态(字典 mes_pd_document_audit_status) |
| auditTime | LocalDateTime | 否 | 审核时间 |
| remark | String | 否 | 备注 |
响应: 在基础字段上额外包含 reviewerNickname(审核人名称)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /mes/pd/archive/create | 创建归档台账(**归档时后端自动调用,前端无需单独调用**) |
| PUT | /mes/pd/archive/update | 更新归档台账 |
| DELETE | /mes/pd/archive/delete | 删除归档台账 |
| GET | /mes/pd/archive/get | 获取归档台账详情 |
| GET | /mes/pd/archive/page | 获取归档台账分页 |
| GET | /mes/pd/archive/export-excel | 导出归档台账Excel |
创建/更新请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 否(更新时必填) | 编号 |
| archiveCode | String | 是 | 归档编号(编码规则 PD_ARCHIVE_CODE 自动生成) |
| projectId | Long | 是 | 设计项目ID |
| archiver | Long | 否 | 归档人(用户ID,自动取当前登录用户) |
| archiveStatus | Integer | 否 | 归档状态(字典 mes_pd_archive_status) |
| archiveTime | LocalDateTime | 否 | 归档时间(自动取当前时间) |
| remark | String | 否 | 备注 |
响应: 在基础字段上额外包含 archiverNickname(归档人名称)、taskCode(任务编码)、taskName(任务名称)
<!-- 状态标签 -->
<el-tag :type="getStatusTagType(row.status)">
{{ getStatusLabel(row.status) }}
</el-tag>
<!-- 状态流转按钮 -->
<el-button v-if="row.status === 0" @click="handlePublish(row.id)" type="primary">发布</el-button>
<el-button v-if="row.status === 1" @click="handleUpload(row.id)" type="warning">上传资料</el-button>
<el-button v-if="row.status === 2" @click="handleAudit(row.id)" type="success">审核</el-button>
<el-button v-if="row.status === 3" @click="handleArchive(row.id)" type="danger">归档</el-button>
data() {
return {
// 状态流转API映射
statusFlowApi: {
0: publishProject,
1: uploadProject,
2: auditProject,
3: archiveProject,
},
}
}
// 状态流转
handlePublish(id) {
publishProject(id).then(() => { this.getList() })
},
handleUpload(id) {
uploadProject(id).then(() => { this.getList() })
},
handleAudit(id) {
auditProject(id).then(() => { this.getList() })
},
handleArchive(id) {
archiveProject(id).then(() => { this.getList() })
},
// 资料子表 - 打开弹窗
handleDocument(projectId) {
this.documentOpen = true
this.documentProjectId = projectId
this.getDocumentList()
},
// 设计项目
export function createProject(data) { return request({ url: '/mes/pd/project/create', method: 'post', data }) }
export function updateProject(data) { return request({ url: '/mes/pd/project/update', method: 'put', data }) }
export function deleteProject(id) { return request({ url: '/mes/pd/project/delete', method: 'delete', params: { id } }) }
export function getProject(id) { return request({ url: '/mes/pd/project/get', method: 'get', params: { id } }) }
export function getProjectPage(params) { return request({ url: '/mes/pd/project/page', method: 'get', params }) }
export function exportProjectExcel(params) { return request({ url: '/mes/pd/project/export-excel', method: 'get', params, responseType: 'blob' }) }
export function publishProject(id) { return request({ url: '/mes/pd/project/publish', method: 'put', params: { id } }) }
export function uploadProject(id) { return request({ url: '/mes/pd/project/upload', method: 'put', params: { id } }) }
export function auditProject(id) { return request({ url: '/mes/pd/project/audit', method: 'put', params: { id } }) }
export function archiveProject(id) { return request({ url: '/mes/pd/project/archive', method: 'put', params: { id } }) }
// 设计资料
export function createDocument(data) { return request({ url: '/mes/pd/document/create', method: 'post', data }) }
export function updateDocument(data) { return request({ url: '/mes/pd/document/update', method: 'put', data }) }
export function deleteDocument(id) { return request({ url: '/mes/pd/document/delete', method: 'delete', params: { id } }) }
export function getDocument(id) { return request({ url: '/mes/pd/document/get', method: 'get', params: { id } }) }
export function getDocumentPage(params) { return request({ url: '/mes/pd/document/page', method: 'get', params }) }
// 文件上传(通用接口,上传后返回URL,存入资料表 fileUrl 字段)
export function uploadFile(file, directory) { return request({ url: '/infra/file/upload', method: 'post', data: { file, directory }, headers: { 'Content-Type': 'multipart/form-data' } }) }
// 资料审核(前端无需调用 create,上传资料时后端自动创建)
export function updateDocumentAudit(data) { return request({ url: '/mes/pd/document-audit/update', method: 'put', data }) }
export function deleteDocumentAudit(id) { return request({ url: '/mes/pd/document-audit/delete', method: 'delete', params: { id } }) }
export function getDocumentAuditPage(params) { return request({ url: '/mes/pd/document-audit/page', method: 'get', params }) }
// 归档台账(前端无需调用 create,归档时后端自动创建)
export function updateArchive(data) { return request({ url: '/mes/pd/archive/update', method: 'put', data }) }
export function deleteArchive(id) { return request({ url: '/mes/pd/archive/delete', method: 'delete', params: { id } }) }
export function getArchive(id) { return request({ url: '/mes/pd/archive/get', method: 'get', params: { id } }) }
export function getArchivePage(params) { return request({ url: '/mes/pd/archive/page', method: 'get', params }) }
export function exportArchiveExcel(params) { return request({ url: '/mes/pd/archive/export-excel', method: 'get', params, responseType: 'blob' }) }
<!-- 设计资料新增/编辑弹窗中添加文件上传 -->
<el-form-item label="文件" prop="fileUrl">
<UploadFile v-model="formData.fileUrl" :limit="1" />
</el-form-item>
<!-- 资料列表中显示文件链接 -->
<el-table-column label="文件" prop="fileUrl">
<template #default="{ row }">
<el-link v-if="row.fileUrl" :href="row.fileUrl" target="_blank" type="primary">
{{ row.fileName || '查看文件' }}
</el-link>
<span v-else>-</span>
</template>
</el-table-column>
// 文件上传回调
handleFileUploadSuccess(url) {
this.formData.fileUrl = url
},
UPDATE system_dict_data SET label = '待发布' WHERE dict_type = 'mes_pd_project_status' AND value = '0';
UPDATE system_dict_data SET label = '待上传' WHERE dict_type = 'mes_pd_project_status' AND value = '1';
UPDATE system_dict_data SET label = '待审核' WHERE dict_type = 'mes_pd_project_status' AND value = '2';
UPDATE system_dict_data SET label = '待归档' WHERE dict_type = 'mes_pd_project_status' AND value = '3';
UPDATE system_dict_data SET label = '已归档' WHERE dict_type = 'mes_pd_project_status' AND value = '4';
需要在编码规则管理中新增以下两条规则:
| 规则代码 | 规则名称 | 说明 |
|---|---|---|
| PD_DOCUMENT_AUDIT_CODE | 资料审核单编码 | 上传资料时自动生成审核单号 |
| PD_ARCHIVE_CODE | 归档台账编码 | 归档时自动生成归档编号 |
fileUrl 字段存储文件URL,前端通过 /infra/file/upload 通用接口上传文件后获取URLmes_pd_project_status、mes_pd_document_type、mes_pd_document_audit_status、mes_pd_archive_statusmes_pd_document_type(资料类型)的字典数据需要根据实际业务补充POST /mes/pd/document-audit/createPOST /mes/pd/archive/create