diff --git a/src/api/budget/budgetCollectionPackage.js b/src/api/budget/budgetCollectionPackage.js index e087f68..115dfe9 100644 --- a/src/api/budget/budgetCollectionPackage.js +++ b/src/api/budget/budgetCollectionPackage.js @@ -156,4 +156,5 @@ export function getEconomicClassifications(params) { method: 'get', params }) -} \ No newline at end of file +} + diff --git a/src/api/budget/departmentSubmission.js b/src/api/budget/departmentSubmission.js index de284f5..241cefd 100644 --- a/src/api/budget/departmentSubmission.js +++ b/src/api/budget/departmentSubmission.js @@ -100,3 +100,20 @@ export function getChildrenPerformanceIndicators(parentId) { params: { parent_id: parentId } }) } + +// 获取多包汇总提交数据 +export function getMultiPackageDecomposition(packageId) { + return request({ + url: `/api/ht/budget-decompositions/${packageId}`, + method: 'get' + }) +} + +// 提交多包汇总分解表(原多包汇总提交) +export function submitMultiPackageDecomposition(data) { + return request({ + url: '/api/ht/budget-decompositions/multi-package', + method: 'post', + data + }) +} diff --git a/src/views/budget/collection/components/BigPackageDetailView.vue b/src/views/budget/collection/components/BigPackageDetailView.vue new file mode 100644 index 0000000..7ef0339 --- /dev/null +++ b/src/views/budget/collection/components/BigPackageDetailView.vue @@ -0,0 +1,388 @@ + + + + + + + 大包基本信息 + + + + + 预算包名称: + {{ packageData.name || '-' }} + + + 预算年度: + {{ packageData.budget_year ? packageData.budget_year.year + '年' : '-' }} + + + 负责科室: + {{ getDepartmentName(packageData.department_id) }} + + + 分配金额: + {{ formatCurrency(packageData.allocated_amount) }} 万元 + + + 层级: + + {{ getLevelText(packageData.level) }} + + + + 创建时间: + {{ formatDate(packageData.created_at) }} + + + + + + + + + 下级预算包情况 + + + + + + + {{ scope.row.name }} + + + + + + {{ getLevelText(scope.row.level) }} + + + + + + {{ getDepartmentName(scope.row.department_id) }} + + + + + {{ formatCurrency(scope.row.allocated_amount) }} + + + + + + {{ formatCurrency(scope.row.decomposed_amount) }} + + - + + + + + {{ formatDate(scope.row.created_at) }} + + + + + + + + + + 经济分类汇总 + + + + + + + {{ scope.row.name }} + + + + + {{ formatCurrency(scope.row.amount) }} + + + + + {{ getPercentage(scope.row.amount, packageData.allocated_amount) }}% + + + + + + + + + + 统计信息 + + + + + 下级预算包数量 + {{ childPackages.length }} 个 + + + 经济分类数量 + {{ economicSummary.length }} 个 + + + 总分配金额 + {{ formatCurrency(packageData.allocated_amount) }} 万元 + + + 总分解金额 + {{ formatCurrency(getTotalDecomposedAmount()) }} 万元 + + + + + + + + + + \ No newline at end of file diff --git a/src/views/budget/collection/components/BudgetSubmissionForm.vue b/src/views/budget/collection/components/BudgetSubmissionForm.vue index ea2fcbe..a4b8a3b 100644 --- a/src/views/budget/collection/components/BudgetSubmissionForm.vue +++ b/src/views/budget/collection/components/BudgetSubmissionForm.vue @@ -800,8 +800,8 @@ export default { console.warn('获取项目名称失败:', error.message) } - // 加载父级package的submission信息 - if (this.packageData.level == 2) { + // 加载package的submission信息 + if (this.packageData.level == 1 || this.packageData.level == 2) { this.parentSubmissionInfo = { application_basis: (this.packageData.application_basis) || '', application_purpose: (this.packageData.application_purpose) || '', diff --git a/src/views/budget/collection/components/LeadDepartmentSummaryForm.vue b/src/views/budget/collection/components/LeadDepartmentSummaryForm.vue index 6076a8b..6a6d89a 100644 --- a/src/views/budget/collection/components/LeadDepartmentSummaryForm.vue +++ b/src/views/budget/collection/components/LeadDepartmentSummaryForm.vue @@ -879,6 +879,7 @@ export default { }, async initFormData() { + console.log('initFormData', this.packageData) this.formData.packageId = this.packageData.id this.formData.leadDepartmentName = this.packageData.lead_department ? this.packageData.lead_department.name : '' this.formData.budgetYear = this.packageData.budget_year ? this.packageData.budget_year.year + '年' : '' @@ -1198,7 +1199,7 @@ export default { otherNotes: data.otherNotes || data.other_notes || '' } - console.log('从API获取的汇总数据:', this.formData) + console.log('从API获取的数据:', this.formData) // 填充经济分类汇总数据 if (data.economicSummary && data.economicSummary.length > 0) { diff --git a/src/views/budget/collection/components/MultiPackageSubmitForm.vue b/src/views/budget/collection/components/MultiPackageSubmitForm.vue new file mode 100644 index 0000000..8efa2bb --- /dev/null +++ b/src/views/budget/collection/components/MultiPackageSubmitForm.vue @@ -0,0 +1,1929 @@ + + + + + + + + + 多包汇总选择 + + 主包:{{ mainPackage.name }} + + + + + + 请选择要一并汇总的其他大包(可多选): + + {{ allSelected ? '取消全选' : '全选' }} + + + + + + + + + {{ pkg.name }} + 主包 + + + 分配金额:{{ formatCurrency(pkg.allocated_amount) }}万元 | + 中包数量:{{ pkg.children ? pkg.children.length : 0 }}个 + + + + + + + + + + + + + 总分配金额:{{ formatCurrency(totalAllocatedAmount) }}万元 + + + 包含中包总数:{{ totalMediumPackages }}个 + + + + + + + + + + + 包含中包明细 + + + + + + + + + {{ scope.row.parentPackageName }} + + + + + + {{ scope.row.name }} + + + + + + + {{ scope.row.department ? scope.row.department.name : '-' }} + + + + + + + + {{ formatCurrency(scope.row.allocated_amount) }}万元 + + + + + + + + {{ getSubmissionStatusText(scope.row.submission) }} + + + + + + + + + + + + + + 汇总基本信息 + + + + + + 预算年度: + {{ formData.budgetYear || '暂无' }} + + + + + 汇总大包数: + {{ selectedPackages.length }}个 + + + + + 汇总金额: + {{ formatCurrency(totalAllocatedAmount) }}万元 + + + + + + + + + + 申请信息 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 中包申请信息 + + + + + + {{ scope.row.parentPackageName }} + + + + + + {{ scope.row.packageName }} + + + + + + {{ scope.row.departmentName }} + + + + + + + + 申请依据:{{ scope.row.applicationBasis }} + + + 申请目的:{{ scope.row.applicationPurpose }} + + + 申请理由:{{ scope.row.applicationReason }} + + + 项目内容:{{ scope.row.projectContent }} + + + 暂无申请信息 + + + + + + + + + + + + + 经济分类汇总 + + + 全选 + + 勾选需要填写的经济分类 + + + + + + + + + + + + + + + + {{ scope.row.categoryName }} + + + + + + + {{ formatCurrency(scope.row.amount) }} + - + + + + + + + + + + + 金额:{{ formatCurrency(detail.amount) }} 万元 + + + 测算依据: + {{ detail.calculationBasis || '暂无' }} + + + + + + + 暂无中包提交此经济分类 + + + + + + + + {{ scope.row.calculationBasis || '-' }} + - + + + + + + + + + 经济分类汇总金额总计:{{ formatCurrency(totalEconomicAmount) }} 万元, + + {{ totalEconomicAmount > totalAllocatedAmount ? '超出' : '不足' }}分配金额 + {{ formatCurrency(Math.abs(totalEconomicAmount - totalAllocatedAmount)) }} 万元 + + + + + + + + + 项目实施进度安排 + + + + + + + + + + + 中包项目实施进度安排 + + + + + + {{ scope.row.parentPackageName }} + + + + + + {{ scope.row.packageName }} + + + + + + {{ scope.row.departmentName }} + + + + + + + {{ scope.row.implementationSchedule || '暂无实施进度安排' }} + + + + + + + + + + + + 项目预计取得绩效 + + 添加指标 + + + + + + + + + + + + + {{ scope.row.level1 || '-' }} + + + + + + + + + {{ scope.row.level2 || '-' }} + + + + + + + + + + + + {{ scope.row.level3 || '-' }} + + + + + + + + + + + + + + {{ scope.row.symbol || '-' }} + + + + + + + {{ scope.row.halfYearValue || '-' }} + + + + + + + {{ scope.row.fullYearValue || '-' }} + + + + + + + {{ scope.row.unit || '-' }} + + + + + + + + + + + + + + + + + + + 中包项目预计取得绩效 + + + + + + {{ scope.row.parentPackageName }} + + + + + + {{ scope.row.packageName }} + + + + + + {{ scope.row.departmentName }} + + + + + + + + + + + + + + + + + + 暂无绩效指标 + + + + + + + + + + + + 其他需要说明事项 + + + + + + + + + + + 中包其他需要说明事项 + + + + + + {{ scope.row.parentPackageName }} + + + + + + {{ scope.row.packageName }} + + + + + + {{ scope.row.departmentName }} + + + + + + + {{ scope.row.otherNotes || '暂无其他需要说明事项' }} + + + + + + + + + + + + {{ isViewMode ? '关闭' : '取消' }} + + 提交多包汇总 + + + + + + + + + \ No newline at end of file diff --git a/src/views/budget/collection/package.vue b/src/views/budget/collection/package.vue index eb43298..18c2eea 100644 --- a/src/views/budget/collection/package.vue +++ b/src/views/budget/collection/package.vue @@ -117,7 +117,7 @@ - + 删除 - 仅查看 + + 多包汇总提交 + + + 查看详情 + @@ -238,7 +257,7 @@ - + 删除 - 仅查看 + + 多包汇总提交 + + + 查看详情 + @@ -430,7 +468,16 @@ - {{ scope.row.mediumPackageName }} + + {{ scope.row.mediumPackageName }} + + {{ scope.row.mediumPackageName }} @@ -508,7 +555,16 @@ - {{ scope.row.projectFullName }} + + {{ scope.row.projectFullName }} + + {{ scope.row.projectFullName }} @@ -591,7 +647,16 @@ - {{ scope.row.projectFullName ? scope.row.projectFullName : scope.row.projectName }} + + {{ scope.row.projectFullName ? scope.row.projectFullName : scope.row.projectName }} + + {{ scope.row.projectFullName ? scope.row.projectFullName : scope.row.projectName }} @@ -755,11 +820,258 @@ + + + + + + + + + + + + + + + + + + + + + + 经济分类基本信息 + + + + + + 经济分类名称: + {{ currentEconomicData.name || '暂无' }} + + + + + 分类代码: + {{ currentEconomicData.code || '暂无' }} + + + + + 预算年度: + {{ getEconomicBudgetYear() }} + + + + + + + + 所属预算包: + {{ getEconomicPackageName() }} + + + + + 负责科室: + {{ getDepartmentName(currentEconomicData.department_id) }} + + + + + 金额: + {{ formatCurrency(currentEconomicData.allocated_amount) }} 万元 + + + + + + + + + + 计算依据详情 + + + + + 测算依据: + {{ currentEconomicData.calculation_basis || '暂无计算依据' }} + + + + 计算公式: + {{ currentEconomicData.calculation_formula }} + + + + 单价: + {{ currentEconomicData.unit_price }} 元 + + + + 数量: + {{ currentEconomicData.quantity }} {{ currentEconomicData.unit || '个' }} + + + + + + + + + 分解情况汇总 + + + + + + + {{ scope.row.itemName }} + + + + + {{ formatCurrency(scope.row.amount) }} + + + + + {{ getPercentage(scope.row.amount, currentEconomicData.allocated_amount) }}% + + + + + {{ scope.row.description || '-' }} + + + + + + + + + + 统计信息 + + + + + 预算金额 + {{ formatCurrency(currentEconomicData.allocated_amount) }} + 万元 + + + 已分解金额 + {{ formatCurrency(getTotalBreakdownAmount()) }} + 万元 + + + 分解项目数 + {{ getEconomicBreakdownData().length }} + 个 + + + 分解比例 + {{ getBreakdownPercentage() }} + % + + + + + + + + + + + + + + + + + + +