From fa0156726861565f5095bb60b5bd304790703f4b Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 11 Nov 2025 15:42:31 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(erp):=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A1=B9=E7=9B=AE=E5=8F=98=E6=9B=B4=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 项目计划变更(erp_project_change、erp_project_change_budget、erp_project_change_progress) - 实现项目变更表单的与初始化、数据加载保存功能 - 添加预算行的增删改操作及表格展示 - 集成项目里程碑变更的时间调整与完成度设置 - 支持暂存与提交两种操作模式,并校验用户权限 - 实现根据项目ID自动加载项目计划信息功能 - 添加返回按钮与表单重置逻辑,优化用户体验 --- src/api/oa/erp/erpProjectChange/index.ts | 99 +++ src/api/oa/erp/erpProjectChange/types.ts | 521 +++++++++++ .../oa/erp/erpProjectChangeBudget/index.ts | 76 ++ .../oa/erp/erpProjectChangeBudget/types.ts | 156 ++++ .../oa/erp/erpProjectChangeProgress/index.ts | 76 ++ .../oa/erp/erpProjectChangeProgress/types.ts | 171 ++++ src/views/oa/crm/crmQuoteInfo/edit.vue.backup | 839 ++++++++++++++++++ src/views/oa/erp/erpProjectChange/edit.vue | 423 +++++++++ src/views/oa/erp/erpProjectChange/index.vue | 492 ++++++++++ .../oa/erp/erpProjectChangeBudget/index.vue | 305 +++++++ .../oa/erp/erpProjectChangeProgress/index.vue | 374 ++++++++ src/views/oa/erp/erpProjectPlan/gantt.vue | 411 +++++++++ 12 files changed, 3943 insertions(+) create mode 100644 src/api/oa/erp/erpProjectChange/index.ts create mode 100644 src/api/oa/erp/erpProjectChange/types.ts create mode 100644 src/api/oa/erp/erpProjectChangeBudget/index.ts create mode 100644 src/api/oa/erp/erpProjectChangeBudget/types.ts create mode 100644 src/api/oa/erp/erpProjectChangeProgress/index.ts create mode 100644 src/api/oa/erp/erpProjectChangeProgress/types.ts create mode 100644 src/views/oa/crm/crmQuoteInfo/edit.vue.backup create mode 100644 src/views/oa/erp/erpProjectChange/edit.vue create mode 100644 src/views/oa/erp/erpProjectChange/index.vue create mode 100644 src/views/oa/erp/erpProjectChangeBudget/index.vue create mode 100644 src/views/oa/erp/erpProjectChangeProgress/index.vue create mode 100644 src/views/oa/erp/erpProjectPlan/gantt.vue diff --git a/src/api/oa/erp/erpProjectChange/index.ts b/src/api/oa/erp/erpProjectChange/index.ts new file mode 100644 index 0000000..ea51c0f --- /dev/null +++ b/src/api/oa/erp/erpProjectChange/index.ts @@ -0,0 +1,99 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { ErpProjectChangeVO, ErpProjectChangeForm, ErpProjectChangeQuery } from '@/api/oa/erp/erpProjectChange/types'; + +/** + * 查询项目变更申请列表 + * @param query + * @returns {*} + */ + +export const listErpProjectChange = (query?: ErpProjectChangeQuery): AxiosPromise => { + return request({ + url: '/oa/erp/erpProjectChange/list', + method: 'get', + params: query + }); +}; + +/** + * 查询项目变更申请详细 + * @param projectChangeId + */ +export const getErpProjectChange = (projectChangeId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/erpProjectChange/' + projectChangeId, + method: 'get' + }); +}; + +/** + * 新增项目变更申请 + * @param data + */ +export const addErpProjectChange = (data: ErpProjectChangeForm) => { + return request({ + url: '/oa/erp/erpProjectChange', + method: 'post', + data: data + }); +}; + +/** + * 修改项目变更申请 + * @param data + */ +export const updateErpProjectChange = (data: ErpProjectChangeForm) => { + return request({ + url: '/oa/erp/erpProjectChange', + method: 'put', + data: data + }); +}; + +/** + * 删除项目变更申请 + * @param projectChangeId + */ +export const delErpProjectChange = (projectChangeId: string | number | Array) => { + return request({ + url: '/oa/erp/erpProjectChange/' + projectChangeId, + method: 'delete' + }); +}; + +/** + * 下拉框查询项目变更申请列表 + * @param query + * @returns {*} + */ +export function getErpProjectChangeList (query) { + return request({ + url: '/oa/erp/erpProjectChange/getErpProjectChangeList', + method: 'get', + params: query + }); +}; + +/** + * 根据项目ID准备项目变更信息(带出项目信息和项目计划阶段) + * @param projectId + */ +export const prepareProjectChangeWithInfo = (projectId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/erpProjectChange/prepareWithInfo/' + projectId, + method: 'get' + }); +}; + +/** + * 提交项目变更并发起审批流 + * @param data + */ +export const submitProjectChangeAndFlowStart = (data: ErpProjectChangeForm) => { + return request({ + url: '/oa/erp/erpProjectChange/submitAndFlowStart', + method: 'post', + data: data + }); +}; diff --git a/src/api/oa/erp/erpProjectChange/types.ts b/src/api/oa/erp/erpProjectChange/types.ts new file mode 100644 index 0000000..b7426eb --- /dev/null +++ b/src/api/oa/erp/erpProjectChange/types.ts @@ -0,0 +1,521 @@ +/** + * 预算变更明细接口 + */ +export interface ErpProjectChangeBudget { + /** + * 预算变更ID + */ + changeBudgetId?: string | number; + + /** + * 变更申请ID + */ + projectChangeId?: string | number; + + /** + * 预算详情ID + */ + budgetDetailId?: string | number; + + /** + * 科目名称 + */ + subjectName?: string; + + /** + * 变更前预算 + */ + budgetBefore?: number; + + /** + * 变更后预算 + */ + budgetAfter?: number; + + /** + * 已使用金额 + */ + amountUsed?: number; + + /** + * 费用调整原因 + */ + adjustmentReason?: string; + + /** + * 排序顺序 + */ + sortOrder?: number; + + /** + * 备注 + */ + remark?: string; +} + +/** + * 进度变更明细接口 + */ +export interface ErpProjectChangeProgress { + /** + * 进度变更ID + */ + changeProgressId?: string | number; + + /** + * 变更申请ID + */ + projectChangeId?: string | number; + + /** + * 计划阶段ID + */ + planStageId?: string | number; + + /** + * 项目阶段(字典project_phases) + */ + projectPhases?: string; + + /** + * 项目里程碑 + */ + milestoneName?: string; + + /** + * 原计划时间起 + */ + originalStart?: string; + + /** + * 原计划时间止 + */ + originalEnd?: string; + + /** + * 变更后时间起 + */ + changedStart?: string; + + /** + * 变更后时间止 + */ + changedEnd?: string; + + /** + * 里程碑完成程度 + */ + completionDegree?: number; + + /** + * 排序顺序 + */ + sortOrder?: number; + + /** + * 备注 + */ + remark?: string; +} + +export interface ErpProjectChangeVO { + /** + * 项目变更ID + */ + projectChangeId: string | number; + + /** + * 项目ID + */ + projectId: string | number; + + /** + * 项目编号 + */ + projectCode: string; + + /** + * 项目名称 + */ + projectName: string; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + projectCategory: string; + + /** + * 变更类型(多选)(1预算变更 2计划变更 3范围变更 4需求变更 5合同变更) + */ + changeType: string; + + /** + * 变更次数 + */ + changeNumber: number; + + /** + * 项目经理ID + */ + projectManagerId: string | number; + + /** + * 项目经理姓名 + */ + projectManagerName: string; + + /** + * 部门负责人ID + */ + deptHeadId: string | number; + + /** + * 部门负责人姓名 + */ + deptHeadName: string; + + /** + * 分管副总ID + */ + responsibleVpId: string | number; + + /** + * 分管副总姓名 + */ + responsibleVpName: string; + + /** + * 申请变更时间 + */ + applyChangeDate: string; + + /** + * 项目合同额 + */ + contractAmount: number; + + /** + * 项目合同净额 + */ + contractNetAmount: number; + + /** + * 项目当前情况 + */ + currentStatus: string; + + /** + * 变更原因 + */ + changeReason: string; + + /** + * 后续工作 + */ + followUpWork: string; + + /** + * 项目变更状态(1暂存 2审批中 3可用) + */ + projectChangeStatus: string; + + /** + * 流程状态 + */ + flowStatus: string; + + /** + * 备注 + */ + remark: string; + + /** + * 激活标识(1是 0否) + */ + activeFlag: string; + + /** + * 创建人 + */ + createBy: number; + + /** + * 创建时间 + */ + createTime: string; + + /** + * 预算变更明细列表 + */ + budgetList?: ErpProjectChangeBudget[]; + + /** + * 进度变更明细列表 + */ + progressList?: ErpProjectChangeProgress[]; + +} + +export interface ErpProjectChangeForm extends BaseEntity { + /** + * 项目变更ID + */ + projectChangeId?: string | number; + + /** + * 项目ID + */ + projectId?: string | number; + + /** + * 项目编号 + */ + projectCode?: string; + + /** + * 项目名称 + */ + projectName?: string; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + projectCategory?: string; + + /** + * 变更类型(多选)(1预算变更 2计划变更 3范围变更 4需求变更 5合同变更) + */ + changeType?: string; + + /** + * 变更次数 + */ + changeNumber?: number; + + /** + * 项目经理ID + */ + projectManagerId?: string | number; + + /** + * 项目经理姓名 + */ + projectManagerName?: string; + + /** + * 部门负责人ID + */ + deptHeadId?: string | number; + + /** + * 部门负责人姓名 + */ + deptHeadName?: string; + + /** + * 分管副总ID + */ + responsibleVpId?: string | number; + + /** + * 分管副总姓名 + */ + responsibleVpName?: string; + + /** + * 申请变更时间 + */ + applyChangeDate?: string; + + /** + * 项目合同额 + */ + contractAmount?: number; + + /** + * 项目合同净额 + */ + contractNetAmount?: number; + + /** + * 项目当前情况 + */ + currentStatus?: string; + + /** + * 变更原因 + */ + changeReason?: string; + + /** + * 后续工作 + */ + followUpWork?: string; + + /** + * 项目变更状态(1暂存 2审批中 3可用) + */ + projectChangeStatus?: string; + + /** + * 流程状态 + */ + flowStatus?: string; + + /** + * 备注 + */ + remark?: string; + + /** + * 激活标识(1是 0否) + */ + activeFlag?: string; + + /** + * 预算变更明细列表 + */ + budgetList?: ErpProjectChangeBudget[]; + + /** + * 进度变更明细列表 + */ + progressList?: ErpProjectChangeProgress[]; + + /** + * 流程编码 + */ + flowCode?: string; + + /** + * 流程处理人 + */ + handler?: string; + + /** + * 流程变量 + */ + variables?: any; + + /** + * 业务扩展数据 + */ + bizExt?: any; + +} + +export interface ErpProjectChangeQuery extends PageQuery { + + /** + * 项目ID + */ + projectId?: string | number; + + /** + * 项目编号 + */ + projectCode?: string; + + /** + * 项目名称 + */ + projectName?: string; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + projectCategory?: string; + + /** + * 变更类型(多选)(1预算变更 2计划变更 3范围变更 4需求变更 5合同变更) + */ + changeType?: string; + + /** + * 变更次数 + */ + changeNumber?: number; + + /** + * 项目经理ID + */ + projectManagerId?: string | number; + + /** + * 项目经理姓名 + */ + projectManagerName?: string; + + /** + * 部门负责人ID + */ + deptHeadId?: string | number; + + /** + * 部门负责人姓名 + */ + deptHeadName?: string; + + /** + * 分管副总ID + */ + responsibleVpId?: string | number; + + /** + * 分管副总姓名 + */ + responsibleVpName?: string; + + /** + * 申请变更时间 + */ + applyChangeDate?: string; + + /** + * 项目合同额 + */ + contractAmount?: number; + + /** + * 项目合同净额 + */ + contractNetAmount?: number; + + /** + * 项目当前情况 + */ + currentStatus?: string; + + /** + * 变更原因 + */ + changeReason?: string; + + /** + * 后续工作 + */ + followUpWork?: string; + + /** + * 项目变更状态(1暂存 2审批中 3可用) + */ + projectChangeStatus?: string; + + /** + * 流程状态 + */ + flowStatus?: string; + + /** + * 激活标识(1是 0否) + */ + activeFlag?: string; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/oa/erp/erpProjectChangeBudget/index.ts b/src/api/oa/erp/erpProjectChangeBudget/index.ts new file mode 100644 index 0000000..f3bfbf2 --- /dev/null +++ b/src/api/oa/erp/erpProjectChangeBudget/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { ErpProjectChangeBudgetVO, ErpProjectChangeBudgetForm, ErpProjectChangeBudgetQuery } from '@/api/oa/erp/erpProjectChangeBudget/types'; + +/** + * 查询项目预算变更明细列表 + * @param query + * @returns {*} + */ + +export const listErpProjectChangeBudget = (query?: ErpProjectChangeBudgetQuery): AxiosPromise => { + return request({ + url: '/oa/erp/erpProjectChangeBudget/list', + method: 'get', + params: query + }); +}; + +/** + * 查询项目预算变更明细详细 + * @param changeBudgetId + */ +export const getErpProjectChangeBudget = (changeBudgetId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/erpProjectChangeBudget/' + changeBudgetId, + method: 'get' + }); +}; + +/** + * 新增项目预算变更明细 + * @param data + */ +export const addErpProjectChangeBudget = (data: ErpProjectChangeBudgetForm) => { + return request({ + url: '/oa/erp/erpProjectChangeBudget', + method: 'post', + data: data + }); +}; + +/** + * 修改项目预算变更明细 + * @param data + */ +export const updateErpProjectChangeBudget = (data: ErpProjectChangeBudgetForm) => { + return request({ + url: '/oa/erp/erpProjectChangeBudget', + method: 'put', + data: data + }); +}; + +/** + * 删除项目预算变更明细 + * @param changeBudgetId + */ +export const delErpProjectChangeBudget = (changeBudgetId: string | number | Array) => { + return request({ + url: '/oa/erp/erpProjectChangeBudget/' + changeBudgetId, + method: 'delete' + }); +}; + +/** + * 下拉框查询项目预算变更明细列表 + * @param query + * @returns {*} + */ +export function getErpProjectChangeBudgetList (query) { + return request({ + url: '/oa/erp/erpProjectChangeBudget/getErpProjectChangeBudgetList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/erpProjectChangeBudget/types.ts b/src/api/oa/erp/erpProjectChangeBudget/types.ts new file mode 100644 index 0000000..21cbfa2 --- /dev/null +++ b/src/api/oa/erp/erpProjectChangeBudget/types.ts @@ -0,0 +1,156 @@ +export interface ErpProjectChangeBudgetVO { + /** + * 预算变更ID + */ + changeBudgetId: string | number; + + /** + * 变更申请ID + */ + projectChangeId: string | number; + + /** + * 预算详情ID + */ + budgetDetailId: string | number; + + /** + * 科目名称(材料费、人工费、安装费、差旅费、其他费用) + */ + subjectName: string; + + /** + * 变更前预算 + */ + budgetBefore: number; + + /** + * 变更后预算 + */ + budgetAfter: number; + + /** + * 已使用金额 + */ + amountUsed: number; + + /** + * 费用调整原因 + */ + adjustmentReason: string; + + /** + * 排序顺序 + */ + sortOrder: number; + + /** + * 备注 + */ + remark: string; + +} + +export interface ErpProjectChangeBudgetForm extends BaseEntity { + /** + * 预算变更ID + */ + changeBudgetId?: string | number; + + /** + * 变更申请ID + */ + projectChangeId?: string | number; + + /** + * 预算详情ID + */ + budgetDetailId?: string | number; + + /** + * 科目名称(材料费、人工费、安装费、差旅费、其他费用) + */ + subjectName?: string; + + /** + * 变更前预算 + */ + budgetBefore?: number; + + /** + * 变更后预算 + */ + budgetAfter?: number; + + /** + * 已使用金额 + */ + amountUsed?: number; + + /** + * 费用调整原因 + */ + adjustmentReason?: string; + + /** + * 排序顺序 + */ + sortOrder?: number; + + /** + * 备注 + */ + remark?: string; + +} + +export interface ErpProjectChangeBudgetQuery extends PageQuery { + + /** + * 变更申请ID + */ + projectChangeId?: string | number; + + /** + * 预算详情ID + */ + budgetDetailId?: string | number; + + /** + * 科目名称(材料费、人工费、安装费、差旅费、其他费用) + */ + subjectName?: string; + + /** + * 变更前预算 + */ + budgetBefore?: number; + + /** + * 变更后预算 + */ + budgetAfter?: number; + + /** + * 已使用金额 + */ + amountUsed?: number; + + /** + * 费用调整原因 + */ + adjustmentReason?: string; + + /** + * 排序顺序 + */ + sortOrder?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/oa/erp/erpProjectChangeProgress/index.ts b/src/api/oa/erp/erpProjectChangeProgress/index.ts new file mode 100644 index 0000000..ff88b8b --- /dev/null +++ b/src/api/oa/erp/erpProjectChangeProgress/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { ErpProjectChangeProgressVO, ErpProjectChangeProgressForm, ErpProjectChangeProgressQuery } from '@/api/oa/erp/erpProjectChangeProgress/types'; + +/** + * 查询项目进度变更明细列表 + * @param query + * @returns {*} + */ + +export const listErpProjectChangeProgress = (query?: ErpProjectChangeProgressQuery): AxiosPromise => { + return request({ + url: '/oa/erp/erpProjectChangeProgress/list', + method: 'get', + params: query + }); +}; + +/** + * 查询项目进度变更明细详细 + * @param changeProgressId + */ +export const getErpProjectChangeProgress = (changeProgressId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/erpProjectChangeProgress/' + changeProgressId, + method: 'get' + }); +}; + +/** + * 新增项目进度变更明细 + * @param data + */ +export const addErpProjectChangeProgress = (data: ErpProjectChangeProgressForm) => { + return request({ + url: '/oa/erp/erpProjectChangeProgress', + method: 'post', + data: data + }); +}; + +/** + * 修改项目进度变更明细 + * @param data + */ +export const updateErpProjectChangeProgress = (data: ErpProjectChangeProgressForm) => { + return request({ + url: '/oa/erp/erpProjectChangeProgress', + method: 'put', + data: data + }); +}; + +/** + * 删除项目进度变更明细 + * @param changeProgressId + */ +export const delErpProjectChangeProgress = (changeProgressId: string | number | Array) => { + return request({ + url: '/oa/erp/erpProjectChangeProgress/' + changeProgressId, + method: 'delete' + }); +}; + +/** + * 下拉框查询项目进度变更明细列表 + * @param query + * @returns {*} + */ +export function getErpProjectChangeProgressList (query) { + return request({ + url: '/oa/erp/erpProjectChangeProgress/getErpProjectChangeProgressList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/erpProjectChangeProgress/types.ts b/src/api/oa/erp/erpProjectChangeProgress/types.ts new file mode 100644 index 0000000..d098f37 --- /dev/null +++ b/src/api/oa/erp/erpProjectChangeProgress/types.ts @@ -0,0 +1,171 @@ +export interface ErpProjectChangeProgressVO { + /** + * 进度变更ID + */ + changeProgressId: string | number; + + /** + * 变更申请ID + */ + projectChangeId: string | number; + + /** + * 计划阶段ID + */ + planStageId: string | number; + + /** + * 项目里程碑 + */ + milestoneName: string; + + /** + * 原计划时间起 + */ + originalStart: string; + + /** + * 原计划时间止 + */ + originalEnd: string; + + /** + * 变更后时间起 + */ + changedStart: string; + + /** + * 变更后时间止 + */ + changedEnd: string; + + /** + * 里程碑完成程度(百分比) + */ + completionDegree: number; + + /** + * 排序顺序 + */ + sortOrder: number; + + /** + * 备注 + */ + remark: string; + +} + +export interface ErpProjectChangeProgressForm extends BaseEntity { + /** + * 进度变更ID + */ + changeProgressId?: string | number; + + /** + * 变更申请ID + */ + projectChangeId?: string | number; + + /** + * 计划阶段ID + */ + planStageId?: string | number; + + /** + * 项目里程碑 + */ + milestoneName?: string; + + /** + * 原计划时间起 + */ + originalStart?: string; + + /** + * 原计划时间止 + */ + originalEnd?: string; + + /** + * 变更后时间起 + */ + changedStart?: string; + + /** + * 变更后时间止 + */ + changedEnd?: string; + + /** + * 里程碑完成程度(百分比) + */ + completionDegree?: number; + + /** + * 排序顺序 + */ + sortOrder?: number; + + /** + * 备注 + */ + remark?: string; + +} + +export interface ErpProjectChangeProgressQuery extends PageQuery { + + /** + * 变更申请ID + */ + projectChangeId?: string | number; + + /** + * 计划阶段ID + */ + planStageId?: string | number; + + /** + * 项目里程碑 + */ + milestoneName?: string; + + /** + * 原计划时间起 + */ + originalStart?: string; + + /** + * 原计划时间止 + */ + originalEnd?: string; + + /** + * 变更后时间起 + */ + changedStart?: string; + + /** + * 变更后时间止 + */ + changedEnd?: string; + + /** + * 里程碑完成程度(百分比) + */ + completionDegree?: number; + + /** + * 排序顺序 + */ + sortOrder?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/views/oa/crm/crmQuoteInfo/edit.vue.backup b/src/views/oa/crm/crmQuoteInfo/edit.vue.backup new file mode 100644 index 0000000..24e7817 --- /dev/null +++ b/src/views/oa/crm/crmQuoteInfo/edit.vue.backup @@ -0,0 +1,839 @@ + + + + + diff --git a/src/views/oa/erp/erpProjectChange/edit.vue b/src/views/oa/erp/erpProjectChange/edit.vue new file mode 100644 index 0000000..385eeb7 --- /dev/null +++ b/src/views/oa/erp/erpProjectChange/edit.vue @@ -0,0 +1,423 @@ + + + diff --git a/src/views/oa/erp/erpProjectChange/index.vue b/src/views/oa/erp/erpProjectChange/index.vue new file mode 100644 index 0000000..2ca74d7 --- /dev/null +++ b/src/views/oa/erp/erpProjectChange/index.vue @@ -0,0 +1,492 @@ + + + diff --git a/src/views/oa/erp/erpProjectChangeBudget/index.vue b/src/views/oa/erp/erpProjectChangeBudget/index.vue new file mode 100644 index 0000000..c09ccaf --- /dev/null +++ b/src/views/oa/erp/erpProjectChangeBudget/index.vue @@ -0,0 +1,305 @@ + + + diff --git a/src/views/oa/erp/erpProjectChangeProgress/index.vue b/src/views/oa/erp/erpProjectChangeProgress/index.vue new file mode 100644 index 0000000..1ac72f9 --- /dev/null +++ b/src/views/oa/erp/erpProjectChangeProgress/index.vue @@ -0,0 +1,374 @@ + + + diff --git a/src/views/oa/erp/erpProjectPlan/gantt.vue b/src/views/oa/erp/erpProjectPlan/gantt.vue new file mode 100644 index 0000000..d7341f7 --- /dev/null +++ b/src/views/oa/erp/erpProjectPlan/gantt.vue @@ -0,0 +1,411 @@ + + + + + From 3f0abdc86a88b71b18256c87f3e91a196fc316ba Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 11 Nov 2025 15:43:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(erpProjectPlan):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=A1=E5=88=92=E7=94=98=E7=89=B9=E5=9B=BE?= =?UTF-8?q?=E5=92=8C=E8=AE=A1=E5=88=92=E5=8F=98=E6=9B=B4=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在项目计划编辑页面添加实际开始和结束时间字段 - 引入项目信息类型定义并优化项目选择逻辑 - 新增项目计划甘特图展示页面路由配置 - 添加项目变更编辑页面路由配置 - 扩展项目计划列表操作列,新增计划变更和甘特图按钮 - 实现项目计划变更和甘特图跳转逻辑 - 调整操作列宽度以适应新增按钮 - 优化 handleProjectChange 方法支持部分字段同步控制 --- src/router/index.ts | 23 +++++- src/views/oa/erp/erpProjectPlan/edit.vue | 85 ++++++++++++++++++----- src/views/oa/erp/erpProjectPlan/index.vue | 23 +++++- 3 files changed, 112 insertions(+), 19 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 84cb70c..a512d98 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -115,7 +115,20 @@ export const constantRoutes: RouteRecordRaw[] = [ component: () => import('@/views/oa/erp/erpProjectPlan/edit.vue'), name: 'ErpProjectPlanView', meta: { title: '项目计划查看', activeMenu: '/oa/erp/erpProjectPlan' } - } + }, + + { + path: 'erpProjectPlan/gantt/:projectPlanId', + component: () => import('@/views/oa/erp/erpProjectPlan/gantt.vue'), + name: 'ErpProjectPlanGantt', + meta: { title: '项目计划甘特图', activeMenu: '/oa/erp/erpProjectPlan' } + }, + { + path: 'erpProjectChange/edit/:projectChangeId', + component: () => import('@/views/oa/erp/erpProjectChange/edit.vue'), + name: 'ErpProjectChangeEdit', + meta: { title: '项目变更编辑', activeMenu: '/oa/erp/erpProjectPlan' } + }, ] }, { @@ -128,7 +141,13 @@ export const constantRoutes: RouteRecordRaw[] = [ component: () => import('@/views/oa/crm/crmQuoteInfo/edit.vue'), name: 'crmQuoteInfoEdit', meta: { title: '报价单编辑', activeMenu: '/oa/crm/crmQuoteInfo' } - } + }, + { + path: 'crmQuoteInfo/view/:quoteId', + component: () => import('@/views/oa/crm/crmQuoteInfo/edit.vue'), + name: 'crmQuoteInfoView', + meta: { title: '报价单查看', activeMenu: '/oa/crm/crmQuoteInfo' } + }, ] }, { diff --git a/src/views/oa/erp/erpProjectPlan/edit.vue b/src/views/oa/erp/erpProjectPlan/edit.vue index 6071315..16188d5 100644 --- a/src/views/oa/erp/erpProjectPlan/edit.vue +++ b/src/views/oa/erp/erpProjectPlan/edit.vue @@ -93,7 +93,7 @@ 添加阶段 - + @@ -140,11 +140,33 @@ - + + + + + + + - + @@ -372,6 +378,21 @@ approvalRecordRef.value?.init(row.projectPlanId); } + /** 项目计划变更按钮操作 */ + const handlePlanChange = (row: ErpProjectPlanVO) => { + // 跳转到项目变更编辑页面,传递项目 ID + router.push(`/oa/erp/erpProjectChange/edit/0?projectId=${row.projectId}`); + } + + /** 甘特图按钮 */ + const handleGantt = (row: ErpProjectPlanVO) => { + if (!row.projectPlanId) { + proxy?.$modal.msgWarning('请先保存项目计划信息'); + return; + } + router.push(`/oa/erp/erpProjectPlan/gantt/${row.projectPlanId}`); + } + /** 修改按钮操作(保留用于对话框形式) */ const handleUpdate = async (row?: ErpProjectPlanVO) => { reset(); From 2b79e3c51207c2df0a87cfd0b6da6ffcb22e7615 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 11 Nov 2025 17:07:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(erp):=20=E5=AE=9E=E7=8E=B0=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=8F=98=E6=9B=B4=E5=AE=A1=E6=89=B9=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 集成审批按钮组件,支持提交、审批记录查看等功能 - 添加表单编辑状态控制,区分查看、审批、编辑模式- 实现预算和进度表格的可- 优化日期编辑性控制选择器和输入框的禁用状态逻辑 - 调整路由配置,支持通过query参数传递变更申请ID -回调处理和数据 增加审批加载逻辑 - 完善错误提示和加载状态管理- 修复缺少必要参数时的错误提示信息 --- src/router/index.ts | 18 ++- src/views/oa/erp/erpProjectChange/edit.vue | 166 ++++++++++++++++----- 2 files changed, 140 insertions(+), 44 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index a512d98..da5fa4f 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -123,12 +123,18 @@ export const constantRoutes: RouteRecordRaw[] = [ name: 'ErpProjectPlanGantt', meta: { title: '项目计划甘特图', activeMenu: '/oa/erp/erpProjectPlan' } }, - { - path: 'erpProjectChange/edit/:projectChangeId', - component: () => import('@/views/oa/erp/erpProjectChange/edit.vue'), - name: 'ErpProjectChangeEdit', - meta: { title: '项目变更编辑', activeMenu: '/oa/erp/erpProjectPlan' } - }, + { + path: 'erpProjectChange/edit', + component: () => import('@/views/oa/erp/erpProjectChange/edit.vue'), + name: 'ErpProjectChangeEdit', + meta: { title: '项目变更', activeMenu: '/oa/erp/erpProjectPlan' } + }, + { + path: 'erpProjectChange/edit/:projectChangeId', + component: () => import('@/views/oa/erp/erpProjectChange/edit.vue'), + name: 'ErpProjectChangeEditById', + meta: { title: '项目变更编辑', activeMenu: '/oa/erp/erpProjectPlan' } + } ] }, { diff --git a/src/views/oa/erp/erpProjectChange/edit.vue b/src/views/oa/erp/erpProjectChange/edit.vue index 385eeb7..7723d71 100644 --- a/src/views/oa/erp/erpProjectChange/edit.vue +++ b/src/views/oa/erp/erpProjectChange/edit.vue @@ -1,17 +1,19 @@