From 6b29c694f96309efcaf346acddfeb2a12c200807 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Fri, 5 Dec 2025 14:26:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor(erp):=20=E7=BB=9F=E4=B8=80=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=9B=B8=E5=85=B3=E6=A8=A1=E5=9D=97=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=A1=B5=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84=E5=92=8C=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 统一新增、编辑、查看模式的路由参数处理逻辑,使用ref对象存储routeParams - 所有模块审批按钮组件绑定参数改为使用routeParams.type确保一致性 - 替换项目选择控件为统一的ProjectSelect弹窗组件,提升交互体验 - 在项目变更、项目计划、项目验收模块中新增打开项目选择弹窗及回调处理方法 - 项目名称字段统一改为只读输入框,附带打开项目弹窗图标,避免使用ElSelect - 优化提交逻辑,增加项目经理权限校验及超级管理员绕过权限判断 - 合并暂存与提交审批逻辑,统一使用submitForm方法控制状态和流程启动 - 添加表单验证前置处理,防止无效提交 - 加入通知列表页刷新机制,确保操作后列表页数据更新 - 取消多余计算属性及loading状态,改用单一buttonLoading管理加载状态 - 代码中增加注释,提升可读性和维护性 - 移除部分重复代码,简化数据加载流程,统一loading提示逻辑 - 表单初始化和数据加载保持与项目信息模块一致的业务逻辑处理 - 审批记录和流程进度调用方式统一 - 修改样式调整卡片组件上边距,使页面布局更紧凑一致 --- src/views/oa/erp/erpProjectChange/edit.vue | 298 ++++----- src/views/oa/erp/erpProjectChange/index.vue | 90 ++- src/views/oa/erp/erpProjectPlan/edit.vue | 261 +++----- src/views/oa/erp/erpProjectPlan/index.vue | 50 +- src/views/oa/erp/projectAcceptance/edit.vue | 240 +++---- src/views/oa/erp/projectAcceptance/index.vue | 622 ++++++++++--------- src/views/oa/erp/projectReceiving/edit.vue | 229 +++---- src/views/oa/erp/projectReceiving/index.vue | 618 +++++++++--------- 8 files changed, 1229 insertions(+), 1179 deletions(-) diff --git a/src/views/oa/erp/erpProjectChange/edit.vue b/src/views/oa/erp/erpProjectChange/edit.vue index 1a998e7..be6cb07 100644 --- a/src/views/oa/erp/erpProjectChange/edit.vue +++ b/src/views/oa/erp/erpProjectChange/edit.vue @@ -1,26 +1,33 @@ + + diff --git a/src/views/oa/erp/erpProjectChange/index.vue b/src/views/oa/erp/erpProjectChange/index.vue index 0337c53..fbed037 100644 --- a/src/views/oa/erp/erpProjectChange/index.vue +++ b/src/views/oa/erp/erpProjectChange/index.vue @@ -149,8 +149,8 @@ - - + + @@ -161,8 +161,12 @@ - - + + @@ -173,8 +177,12 @@ - - + + + + diff --git a/src/views/oa/erp/erpProjectPlan/edit.vue b/src/views/oa/erp/erpProjectPlan/edit.vue index 98439a9..a5f2bbe 100644 --- a/src/views/oa/erp/erpProjectPlan/edit.vue +++ b/src/views/oa/erp/erpProjectPlan/edit.vue @@ -1,35 +1,43 @@ diff --git a/src/views/oa/erp/erpProjectPlan/index.vue b/src/views/oa/erp/erpProjectPlan/index.vue index af45039..b24ade4 100644 --- a/src/views/oa/erp/erpProjectPlan/index.vue +++ b/src/views/oa/erp/erpProjectPlan/index.vue @@ -97,7 +97,11 @@ v-hasPermi="['oa/erp:erpProjectPlan:query']" > - + @@ -212,10 +216,11 @@ import { listUser } from '@/api/system/user'; import { getErpProjectInfoList } from '@/api/oa/erp/projectInfo'; import { getErpContractInfoList } from '@/api/oa/erp/contractInfo'; import { onActivated } from 'vue'; -import { useRouter } from 'vue-router'; +import { useRoute, useRouter } from 'vue-router'; import ApprovalRecord from '@/components/Process/approvalRecord.vue'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const route = useRoute(); const router = useRouter(); const { active_flag, project_plan_status, project_phases, collection_stage, wf_business_status } = toRefs( proxy?.useDict('active_flag', 'project_plan_status', 'project_phases', 'collection_stage', 'wf_business_status') @@ -246,7 +251,7 @@ const dialog = reactive({ // 列显隐信息 const columns = ref([ - { key: 0, label: `序号`, visible: false }, + { key: 0, label: `序号`, visible: true }, { key: 1, label: `项目计划编号`, visible: true }, { key: 2, label: `项目编号`, visible: true }, { key: 3, label: `项目名称`, visible: true }, @@ -383,24 +388,40 @@ const handleProjectChangeInDialog = (projectId: number) => { } }; -/** 新增按钮操作 */ +/** 新增按钮操作(与项目信息保持一致) */ const handleAdd = () => { - router.push('/oa/erp/erpProjectPlan/edit/0'); + proxy.$tab.closePage(route); + router.push({ + path: '/project/erpProjectPlanStage/edit', + query: { type: 'add' } + }); }; -/** 查看按钮操作 */ +/** 查看按钮操作(与项目信息保持一致) */ const handleView = (row: ErpProjectPlanVO) => { - router.push(`/oa/erp/erpProjectPlan/view/${row.projectPlanId}?type=view`); + proxy.$tab.closePage(route); + router.push({ + path: '/project/erpProjectPlanStage/edit', + query: { id: row.projectPlanId, type: 'view' } + }); }; -/** 编辑按钮操作 */ +/** 编辑按钮操作(与项目信息保持一致) */ const handleEdit = (row: ErpProjectPlanVO) => { - router.push(`/oa/erp/erpProjectPlan/edit/${row.projectPlanId}?type=edit`); + proxy.$tab.closePage(route); + router.push({ + path: '/project/erpProjectPlanStage/edit', + query: { id: row.projectPlanId, type: 'update' } + }); }; /** 审批完成后维护延期与进度 */ const handleProgress = (row: ErpProjectPlanVO) => { - router.push(`/oa/erp/erpProjectPlan/edit/${row.projectPlanId}?type=edit`); + proxy.$tab.closePage(route); + router.push({ + path: '/project/erpProjectPlanStage/edit', + query: { id: row.projectPlanId, type: 'update' } + }); }; // 查看审批记录 @@ -408,10 +429,13 @@ const handleApprovalRecord = (row: ErpProjectPlanVO) => { approvalRecordRef.value?.init(row.projectPlanId); }; -/** 项目计划变更按钮操作 */ +/** 项目计划变更按钮操作(与项目信息保持一致) */ const handlePlanChange = (row: ErpProjectPlanVO) => { - // 跳转到项目变更编辑页面,传递项目 ID - router.push(`/oa/erp/erpProjectChange/edit/0?projectId=${row.projectId}`); + proxy.$tab.closePage(route); + router.push({ + path: '/project/erpProjectChange/edit', + query: { type: 'add', projectId: row.projectId } + }); }; /** 甘特图按钮 */ diff --git a/src/views/oa/erp/projectAcceptance/edit.vue b/src/views/oa/erp/projectAcceptance/edit.vue index d3b36de..ec0cf1d 100644 --- a/src/views/oa/erp/projectAcceptance/edit.vue +++ b/src/views/oa/erp/projectAcceptance/edit.vue @@ -7,8 +7,8 @@ @handleApprovalRecord="handleApprovalRecord" :buttonLoading="buttonLoading" :id="form.acceptanceId" - :status="approvalStatus" - :pageType="pageTypeForButton" + :status="form.flowStatus" + :pageType="routeParams.type" :mode="false" /> @@ -23,22 +23,13 @@ - - - + + + @@ -89,16 +80,19 @@ + + - + + diff --git a/src/views/oa/erp/projectAcceptance/index.vue b/src/views/oa/erp/projectAcceptance/index.vue index f59a5ed..02c81f0 100644 --- a/src/views/oa/erp/projectAcceptance/index.vue +++ b/src/views/oa/erp/projectAcceptance/index.vue @@ -1,333 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + diff --git a/src/views/oa/erp/projectReceiving/edit.vue b/src/views/oa/erp/projectReceiving/edit.vue index 93b8bb2..2e4c3f3 100644 --- a/src/views/oa/erp/projectReceiving/edit.vue +++ b/src/views/oa/erp/projectReceiving/edit.vue @@ -7,8 +7,8 @@ @handleApprovalRecord="handleApprovalRecord" :buttonLoading="buttonLoading" :id="form.receivingId" - :status="approvalStatus" - :pageType="pageTypeForButton" + :status="form.flowStatus" + :pageType="routeParams.type" :mode="false" /> @@ -23,22 +23,13 @@ - - - + + + @@ -83,16 +74,19 @@ + + - + + diff --git a/src/views/oa/erp/projectReceiving/index.vue b/src/views/oa/erp/projectReceiving/index.vue index 5612431..6b96ec6 100644 --- a/src/views/oa/erp/projectReceiving/index.vue +++ b/src/views/oa/erp/projectReceiving/index.vue @@ -1,327 +1,347 @@