0509新功能优化

This commit is contained in:
lzm
2026-05-08 17:38:50 +08:00
parent 9ea02751de
commit 92c5071fab
18 changed files with 695 additions and 345 deletions

View File

@@ -31,7 +31,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="规划内容">
<el-form-item label="项目任务包">
<el-input :model-value="formData.planningContent" disabled />
</el-form-item>
</el-col>
@@ -39,17 +39,53 @@
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="规划金额(元)">
<el-form-item label="合同产值数量">
<el-input :model-value="formatQuantityText(formData.contractValueQuantity)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合同产值单价">
<el-input :model-value="formatQuantityText(formData.contractValueUnitPrice)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="分项合同产值(元)">
<el-input :model-value="formatAmountText(formData.planningAmount)" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="增值税率(%)">
<el-input :model-value="formatPercentText(formData.vatRate)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="增值税(元)">
<el-input :model-value="formatAmountText(formData.vatAmount)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="管理费率(%)">
<el-input :model-value="formatPercentText(formData.managementFeeRate)" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="实施团队">
<el-form-item label="管理费(元)">
<el-input :model-value="formatAmountText(formData.managementFee)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目预算产值(元)">
<el-input :model-value="formatAmountText(formData.projectBudgetOutputValue)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="意向实施团队">
<el-input :model-value="formData.implementationTeam || '-'" disabled />
</el-form-item>
</el-col>
@@ -247,7 +283,6 @@
<el-button plain type="primary" @click="addGuideDetailRow">
<template #icon><i class="el-icon-plus"></i></template>新增明细
</el-button>
<span class="text-12px text-gray-400">💡 提示数字字段已隐藏加减箭头以优化显示支持直接输入或复制粘贴</span>
</div>
<el-table :data="guideDetails" border max-height="460" class="optimized-table">
@@ -544,8 +579,13 @@ const createFormData = (): PlanningApi.ProjectPlanningVO => ({
calculationMethod: '',
planningContent: '',
planningAmount: undefined,
contractValueQuantity: undefined,
contractValueUnitPrice: undefined,
managementFeeRate: undefined,
managementFee: undefined,
vatRate: undefined,
vatAmount: undefined,
projectBudgetOutputValue: undefined,
implementationTeam: '',
planningStartYear: undefined,
planningArea: undefined,
@@ -639,6 +679,9 @@ const normalizeFormData = (data: PlanningApi.ProjectPlanningVO): PlanningApi.Pro
...data,
ownershipType: normalizeOwnershipType(data.ownershipType) || data.ownershipType || '',
calculationMethod: normalizeCalculationMethod(data.calculationMethod) || data.calculationMethod || '',
contractValueQuantity: data.contractValueQuantity ?? 1,
contractValueUnitPrice: data.contractValueUnitPrice ?? data.planningAmount,
vatRate: data.vatRate ?? 0.06,
designStage: normalizeDesignStage(data.designStage),
virtualCalculationMethod: normalizeVirtualCalculationMethod(data.virtualCalculationMethod),
reviewOutsourceFlag: data.reviewOutsourceFlag ?? false,
@@ -785,6 +828,13 @@ const formatFactorText = (value?: number, digits = 4) => {
return Number(value).toFixed(digits)
}
const formatQuantityText = (value?: number, digits = 4) => {
if (value === undefined || value === null) {
return '-'
}
return Number(value).toFixed(digits)
}
const setGuideDetailPercentValue = (
row: GuideDetailRow,
field: 'complexityFactor' | 'designRatio',
@@ -940,8 +990,11 @@ const buildSavePayload = (): PlanningApi.ProjectPlanningSaveVO => ({
ownershipType: formData.value.ownershipType,
calculationMethod: formData.value.calculationMethod,
planningContent: formData.value.planningContent,
planningAmount: formData.value.planningAmount,
sortNo: formData.value.sortNo,
contractValueQuantity: formData.value.contractValueQuantity,
contractValueUnitPrice: formData.value.contractValueUnitPrice,
managementFeeRate: formData.value.managementFeeRate,
vatRate: formData.value.vatRate,
implementationTeam: formData.value.implementationTeam,
planningStartYear: formData.value.planningStartYear,
planningArea: showGuideDetailSection.value
@@ -1104,4 +1157,4 @@ const submitForm = async () => {
:deep(.text-primary) {
color: var(--el-color-primary);
}
</style>
</style>