fix: 修复项目管理前端字段与后端Entity不匹配问题

问题:
- 项目金额在新增和编辑时不会更新
- 前端表单字段与后端Entity字段不一致
- projectAmount不存在于后端,应该是budgetAmount和contractAmount
- projectManager应该是projectManagerId (Long类型)
- projectDesc应该是description

修复:
1. 修正前端表单字段
   - projectAmount → budgetAmount (预算金额)
   - 新增 contractAmount (合同金额)
   - projectManager → projectManagerId
   - projectDesc → description
   - 新增 projectShort, projectType, remark等字段

2. 优化表单UI
   - 添加项目简称字段
   - 添加项目类型下拉选择(开发/维护/咨询)
   - 预算金额和合同金额分开显示
   - 添加备注字段

3. 修正表格显示列
   - 项目金额 → 预算金额 + 合同金额(两列)

现在前后端字段完全一致!
This commit is contained in:
zhangjf 2026-02-15 19:44:47 +08:00
parent d1137f5528
commit 504da52c88
2 changed files with 50 additions and 16 deletions

View File

@ -36,9 +36,14 @@
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="projectAmount" label="项目金额" width="120"> <el-table-column prop="budgetAmount" label="预算金额" width="120">
<template #default="scope"> <template #default="scope">
{{ formatAmount(scope.row.projectAmount) }} {{ formatAmount(scope.row.budgetAmount) }}
</template>
</el-table-column>
<el-table-column prop="contractAmount" label="合同金额" width="120">
<template #default="scope">
{{ formatAmount(scope.row.contractAmount) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="startDate" label="开始日期" width="120" /> <el-table-column prop="startDate" label="开始日期" width="120" />
@ -81,13 +86,29 @@
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目金额" prop="projectAmount"> <el-form-item label="项目简称" prop="projectShort">
<el-input-number v-model="form.projectAmount" :precision="2" :min="0" style="width: 100%" /> <el-input v-model="form.projectShort" placeholder="请输入项目简称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目经理" prop="projectManager"> <el-form-item label="项目类型">
<el-input v-model="form.projectManager" placeholder="请输入项目经理" /> <el-select v-model="form.projectType" placeholder="请选择" style="width: 100%">
<el-option label="开发项目" value="development" />
<el-option label="维护项目" value="maintenance" />
<el-option label="咨询项目" value="consulting" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="预算金额" prop="budgetAmount">
<el-input-number v-model="form.budgetAmount" :precision="2" :min="0" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同金额">
<el-input-number v-model="form.contractAmount" :precision="2" :min="0" style="width: 100%" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -103,8 +124,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="项目描述" prop="projectDesc"> <el-form-item label="项目描述">
<el-input v-model="form.projectDesc" type="textarea" rows="3" placeholder="请输入项目描述" /> <el-input v-model="form.description" type="textarea" rows="3" placeholder="请输入项目描述" />
</el-form-item>
<el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" rows="2" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
@ -159,17 +183,22 @@ const form = reactive({
projectId: null, projectId: null,
projectCode: '', projectCode: '',
projectName: '', projectName: '',
projectAmount: 0, projectShort: '',
projectManager: '', customerId: null,
projectType: 'development',
projectManagerId: null,
budgetAmount: 0,
contractAmount: 0,
startDate: '', startDate: '',
endDate: '', endDate: '',
projectDesc: '' description: '',
remark: ''
}) })
const rules = { const rules = {
projectCode: [{ required: true, message: '请输入项目编码', trigger: 'blur' }], projectCode: [{ required: true, message: '请输入项目编码', trigger: 'blur' }],
projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }], projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
projectAmount: [{ required: true, message: '请输入项目金额', trigger: 'blur' }] budgetAmount: [{ required: true, message: '请输入项目预算', trigger: 'blur' }]
} }
const statusDialogVisible = ref(false) const statusDialogVisible = ref(false)
@ -224,11 +253,16 @@ const resetForm = () => {
form.projectId = null form.projectId = null
form.projectCode = '' form.projectCode = ''
form.projectName = '' form.projectName = ''
form.projectAmount = 0 form.projectShort = ''
form.projectManager = '' form.customerId = null
form.projectType = 'development'
form.projectManagerId = null
form.budgetAmount = 0
form.contractAmount = 0
form.startDate = '' form.startDate = ''
form.endDate = '' form.endDate = ''
form.projectDesc = '' form.description = ''
form.remark = ''
} }
const handleSubmit = async () => { const handleSubmit = async () => {

@ -1 +1 @@
Subproject commit 86d22460f4d127306501a7a053cb17c9245bfc7b Subproject commit 9e120359625bc1222ee4d31dd04bd64cdd1c0b35