From 47f5244e68ad5f27c48c35e8f962c791c6fdd744 Mon Sep 17 00:00:00 2001 From: shenzhouyu Date: Fri, 6 Mar 2026 13:21:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=87=E9=BE=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/project/gantt.js | 57 +---- .../project/modules/projectModelForm.vue | 57 ++++- .../modules/projectModelFormDetail.vue | 30 ++- .../project/modules/projectPartModelTable.vue | 26 ++- .../modules/projectPartModelTableDetail.vue | 36 ++- .../modules/project/projectPartIndex.vue | 118 ++++++++-- .../modules/project/projectPartProgress.vue | 209 +++++++++++++++--- 7 files changed, 423 insertions(+), 110 deletions(-) diff --git a/src/api/project/gantt.js b/src/api/project/gantt.js index cc4ab48..99a43a1 100644 --- a/src/api/project/gantt.js +++ b/src/api/project/gantt.js @@ -12,60 +12,11 @@ export const getProjectGanttData = data => createAPI(`/project/pmprojectpartmode * @param {Object} data - 查询参数 * @returns {Promise} API响应 */ -export const getGanttLegend = data => createAPI(`/project/gantt/getGanttLegend`, 'get', data); +export const getGanttLegend = data => createAPI(`/project/pmprojectpartmodeldetail/getGanttLegend`, 'get', data); /** - * 获取项目进度数据 - * @param {Object} data - 查询参数 - * @returns {Promise} API响应 - */ -export const getProjectProgress = data => createAPI(`/project/gantt/getProjectProgress`, 'get', data); - -/** - * 更新项目任务进度 - * @param {Object} data - 任务数据 - * @returns {Promise} API响应 - */ -export const updateProjectTask = data => createAPI(`/project/gantt/updateProjectTask`, 'post', data); - -/** - * 批量更新项目任务 - * @param {Object} data - 批量任务数据 - * @returns {Promise} API响应 - */ -export const batchUpdateProjectTasks = data => createAPI(`/project/gantt/batchUpdateProjectTasks`, 'post', data); - -/** - * 获取项目时间范围 - * @param {Object} data - 查询参数 - * @returns {Promise} API响应 - */ -export const getProjectTimeRange = data => createAPI(`/project/gantt/getProjectTimeRange`, 'get', data); - -/** - * 导出项目进度报告 - * @param {Object} data - 导出参数 - * @returns {Promise} API响应 - */ -export const exportProjectProgress = data => createAPI(`/project/gantt/exportProjectProgress`, 'get', data); - -/** - * 获取项目任务详情 - * @param {Object} data - 查询参数 - * @returns {Promise} API响应 - */ -export const getProjectTaskDetail = data => createAPI(`/project/gantt/getProjectTaskDetail`, 'get', data); - -/** - * 删除项目任务 - * @param {Object} data - 删除参数 - * @returns {Promise} API响应 - */ -export const deleteProjectTask = data => createAPI(`/project/gantt/deleteProjectTask/${data.taskId}`, 'delete', data); - -/** - * 获取项目统计信息 - * @param {Object} data - 查询参数 + * 更新甘特图图例数据 + * @param {Object} data - 图例列表 [{ label, color }, ...] * @returns {Promise} API响应 */ -export const getProjectStatistics = data => createAPI(`/project/gantt/getProjectStatistics`, 'get', data); \ No newline at end of file +export const updateGanttLegend = data => createAPI(`/project/pmprojectpartmodeldetail/updateGanttLegend`, 'post', data); diff --git a/src/views/modules/project/modules/projectModelForm.vue b/src/views/modules/project/modules/projectModelForm.vue index 85e03d9..b60b332 100644 --- a/src/views/modules/project/modules/projectModelForm.vue +++ b/src/views/modules/project/modules/projectModelForm.vue @@ -4,18 +4,23 @@ width="600px"> - + + + + + + - + @@ -23,6 +28,12 @@ + + + + + + @input=" value=>{model.detailDaysNumber= value.match(/^[1-9]\d*$/) ? value.match(/^[1-9]\d*$/)[0] : '';calculatePlanEndDate}"> @@ -28,7 +28,7 @@ + format='yyyy-MM-dd' style="width: 98%;" @change="calculatePlanEndDate"> @@ -89,6 +89,7 @@ import { userList } from '../../../../api/user.js' import { getRoleByUserId } from '@/api/role.js' import UserChooseComponent from '../../../../components/selector/user/userChooseComponent.vue' import { updateProjectModelDetail } from '@/api/project/project.js' +import moment from 'moment' export default { name: 'projectModelFormDetail', @@ -388,6 +389,31 @@ export default { }) }, + calculatePlanEndDate() { + if (this.model.detailPlanStartDate && this.model.detailDaysNumber) { + const planEndDate = this.addDays(this.model.detailPlanStartDate, this.model.detailDaysNumber, 'add') + this.$set(this.model, 'detailPlanEndDate', planEndDate) + } else if (!this.model.detailPlanStartDate || !this.model.detailDaysNumber) { + // 如果计划开始时间或天数为空,清空计划完成时间 + this.$set(this.model, 'detailPlanEndDate', '') + } + this.handleActualDateChange(this.model.detailExcalCompletionDate) + }, + addDays(dateString, daysToAdd, type) { + // 将字符串转换为日期对象 + let date = new Date(dateString) + // 累加天数 + if (type == 'add') { + date.setDate(date.getDate() + parseInt(daysToAdd)) + } else { + date.setDate(date.getDate() - parseInt(daysToAdd)) + } + const convertedDate = moment(date).format('YYYY-MM-DD') + console.log('dfsys', convertedDate) + + // 返回新的日期对象或格式化后的日期字符串 + return convertedDate + }, // 处理实际完成日期变化,自动设置状态 handleActualDateChange(actualDate) { if (actualDate && this.model.detailPlanEndDate) { diff --git a/src/views/modules/project/modules/projectPartModelTable.vue b/src/views/modules/project/modules/projectPartModelTable.vue index d0d1433..7d0312d 100644 --- a/src/views/modules/project/modules/projectPartModelTable.vue +++ b/src/views/modules/project/modules/projectPartModelTable.vue @@ -1,11 +1,11 @@