项目基础信息、合约规划、指导价法明细、项目成本测算字段调整、菜单名称调整、专业人员报表与导出内容修复

This commit is contained in:
lzm
2026-05-15 17:57:24 +08:00
parent 5cb913cb0a
commit 4a0ff37963
10 changed files with 124 additions and 103 deletions

View File

@@ -105,7 +105,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工程总面积(m²)" prop="planningArea">
<el-form-item label="建筑面积(m²)" prop="planningArea">
<el-input
v-if="showGuideDetailSection"
:model-value="formatAmountText(guideDetailSummary.designArea)"
@@ -300,30 +300,36 @@
</el-table-column>
<el-table-column align="center" label="设计部位" min-width="120" fixed="left">
<template #default="{ row }">
<el-select v-model="row.designPart" class="!w-1/1" placeholder="请选择">
<el-option
v-for="item in DESIGN_PART_OPTIONS"
:key="String(item.value)"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-tooltip
:content="row.designPart"
:disabled="!hasValue(row.designPart)"
placement="top"
>
<el-select v-model="row.designPart" class="!w-1/1" placeholder="请选择">
<el-option
v-for="item in DESIGN_PART_OPTIONS"
:key="String(item.value)"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-tooltip>
</template>
</el-table-column>
<el-table-column align="center" label="建筑类型" min-width="140" fixed="left">
<el-table-column align="center" label="设计内容/设计类型" min-width="210" fixed="left">
<template #default="{ row }">
<el-tooltip
:content="row.buildingType"
:disabled="!hasValue(row.buildingType)"
placement="top"
>
<el-input v-model="row.buildingType" maxlength="100" placeholder="建筑类型" />
<el-input v-model="row.buildingType" maxlength="100" placeholder="请输入设计内容/设计类型" />
</el-tooltip>
</template>
</el-table-column>
<!-- 2. 取消 controls 的核心数值列 -->
<el-table-column align="center" label="指导单价(元)" min-width="110">
<el-table-column align="center" label="内部指导单价(元/m²)" min-width="150">
<template #default="{ row }">
<el-tooltip
:content="formatAmountText(row.internalGuidanceUnitPrice)"
@@ -357,55 +363,60 @@
</el-tooltip>
</template>
</el-table-column>
<el-table-column align="center" label="楼栋/户型数" min-width="100">
<template #default="{ row }">
<el-input-number
v-model="row.buildingOrUnitCount"
:min="0"
:precision="0"
:controls="false"
class="!w-1/1"
/>
</template>
</el-table-column>
<!-- 3. 多级表头折叠系数配置 -->
<el-table-column label="调整系数配置" align="center">
<el-table-column align="center" label="套图" min-width="85">
<el-table-column align="center" label="楼栋/户型数" min-width="110">
<template #default="{ row }">
<el-input-number
v-model="row.buildingOrUnitCount"
:min="0"
:precision="0"
:controls="false"
class="!w-1/1"
/>
</template>
</el-table-column>
<el-table-column align="center" label="套图系数" min-width="100">
<template #default="{ row }">
<el-input-number v-model="row.drawingSetFactor" :min="0" :precision="2" :controls="false" class="!w-1/1" />
</template>
</el-table-column>
<el-table-column align="center" label="规模" min-width="85">
<el-table-column align="center" label="规模系数" min-width="100">
<template #default="{ row }">
<el-input-number v-model="row.scaleFactor" :min="0" :precision="2" :controls="false" class="!w-1/1" />
</template>
</el-table-column>
<el-table-column align="center" label="修改" min-width="85">
<el-table-column align="center" label="修改系数" min-width="100">
<template #default="{ row }">
<el-input-number v-model="row.modificationFactor" :min="0" :precision="2" :controls="false" class="!w-1/1" />
</template>
</el-table-column>
<el-table-column align="center" label="复杂(%)" min-width="90">
<el-table-column align="center" label="复杂系数/复杂等级" min-width="150">
<template #default="{ row }">
<el-input-number
:model-value="toPercentValue(row.complexityFactor)"
v-model="row.complexityFactor"
:min="0"
:precision="2"
:controls="false"
class="!w-1/1"
@update:model-value="setGuideDetailPercentValue(row, 'complexityFactor', $event)"
/>
</template>
</el-table-column>
<el-table-column align="center" label="计" min-width="80">
<el-table-column align="center" label="计" min-width="80">
<template #default="{ row }">
<span class="text-gray-500">{{ formatFactorText(getGuideDetailTotalAdjustmentFactor(row)) }}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column align="center" label="设计占比(%)" min-width="100">
<!-- 4. 结果列靠右显示用浅色背景区分 -->
<el-table-column align="right" label="考核产值面积小计(m²)" min-width="150" class-name="bg-gray-50">
<template #default="{ row }">
<span class="font-bold">{{ formatAmountText(getGuideDetailAssessmentArea(row)) }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="设计阶段占比(%)" min-width="120">
<template #default="{ row }">
<el-input-number
:model-value="toPercentValue(row.designRatio)"
@@ -418,13 +429,7 @@
</template>
</el-table-column>
<!-- 4. 结果列靠右显示用浅色背景区分 -->
<el-table-column align="right" label="考核面积(m²)" min-width="110" class-name="bg-gray-50">
<template #default="{ row }">
<span class="font-bold">{{ formatAmountText(getGuideDetailAssessmentArea(row)) }}</span>
</template>
</el-table-column>
<el-table-column align="right" label="考核产值(元)" min-width="120" class-name="bg-gray-50">
<el-table-column align="right" label="考核产值小计(元)" min-width="130" class-name="bg-gray-50">
<template #default="{ row }">
<span class="font-bold text-primary">{{ formatAmountText(getGuideDetailAssessmentOutputValue(row)) }}</span>
</template>
@@ -469,17 +474,17 @@
<el-row :gutter="16" class="mt-16px">
<el-col :span="8">
<el-form-item label="汇总设计面积(m²)">
<el-form-item label="设计面积总计(m²)">
<el-input :model-value="formatAmountText(guideDetailSummary.designArea)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="汇总考核面积(m²)">
<el-form-item label="考核产值面积总计(m²)">
<el-input :model-value="formatAmountText(guideDetailSummary.assessmentArea)" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="汇总考核产值(元)">
<el-form-item label="考核产值总计(元)">
<el-input
:model-value="formatAmountText(guideDetailSummary.assessmentOutputValue)"
disabled
@@ -578,7 +583,7 @@
<el-descriptions-item label="设计部位">
{{ activeRemarkRow.designPart || '-' }}
</el-descriptions-item>
<el-descriptions-item label="建筑类型">
<el-descriptions-item label="设计内容/设计类型">
{{ activeRemarkRow.buildingType || '-' }}
</el-descriptions-item>
<el-descriptions-item label="考核产值(元)">
@@ -934,7 +939,7 @@ const formatQuantityText = (value?: number, digits = 4) => {
const setGuideDetailPercentValue = (
row: GuideDetailRow,
field: 'complexityFactor' | 'designRatio',
field: 'designRatio',
value?: number | string | null
) => {
row[field] = fromPercentValue(value, 4)
@@ -953,7 +958,7 @@ const formRules = reactive<FormRules>({
return
}
if (!hasValue(value)) {
callback(new Error('工程总面积不能为空'))
callback(new Error('建筑面积不能为空'))
return
}
callback()
@@ -1153,7 +1158,7 @@ const validateGuideDetails = () => {
return false
}
if (!row.buildingType) {
message.warning(`${rowText}建筑类型不能为空`)
message.warning(`${rowText}设计内容/设计类型不能为空`)
return false
}
if (!hasValue(row.designArea)) {
@@ -1177,11 +1182,11 @@ const validateGuideDetails = () => {
return false
}
if (!hasValue(row.complexityFactor)) {
message.warning(`${rowText}复杂系数不能为空`)
message.warning(`${rowText}复杂系数/复杂等级不能为空`)
return false
}
if (!hasValue(row.designRatio)) {
message.warning(`${rowText}设计占比不能为空`)
message.warning(`${rowText}设计阶段占比不能为空`)
return false
}
}