feat: 添加项目负责人联系信息字段及自动填充功能

- 在 Report、ReportDTO、ReportVO、ReportUpdateDTO 实体类中新增 contactPerson 和 contactPhone 字段
- 在 UserInfoVO 中新增 dealerContactPerson 和 dealerContactPhone 字段以展示经销商联系人信息
- 修改 ReportServiceImpl,在创建报备时自动填充默认的项目负责人信息(取自经销商信息)
- 更新 MyBatis 映射文件,确保数据库字段的正确映射和持久化
- 在前端 Report.vue 中添加相应的表单字段和表格列,并在新增时自动填充默认值
- 调整对话框宽度以适配新增字段
This commit is contained in:
andy committed 2026-02-03 17:01:46 +08:00
1 parent 8d82781bb3
commit e39c6816fc
11 files changed
+165 -6

No files matched your search

+56 -3
View File
@@ -45,6 +45,8 @@
<el-table-column prop="schoolName" label="学校名称" />
<el-table-column prop="product" label="所属产品" show-overflow-tooltip />
<el-table-column prop="projectType" label="项目类型" show-overflow-tooltip />
<el-table-column prop="contactPerson" label="负责人" show-overflow-tooltip />
<el-table-column prop="contactPhone" label="负责人电话" show-overflow-tooltip />
<el-table-column prop="description" label="报备说明" show-overflow-tooltip />
<el-table-column prop="status" label="状态">
<template #default="{ row }">
@@ -118,7 +120,7 @@
</el-card>
<!-- 提交报备对话框 -->
<el-dialog v-model="dialogVisible" title="提交报备" width="600px" @close="handleDialogClose">
<el-dialog v-model="dialogVisible" title="提交报备" width="650px" @close="handleDialogClose">
<el-form ref="formRef" :model="formData" :rules="rules" label-width="100px">
<el-form-item label="学校" prop="schoolName">
<el-autocomplete
@@ -151,6 +153,20 @@
clearable
/>
</el-form-item>
<el-form-item label="负责人" prop="contactPerson">
<el-input
v-model="formData.contactPerson"
placeholder="请输入负责人姓名"
clearable
/>
</el-form-item>
<el-form-item label="负责人电话" prop="contactPhone">
<el-input
v-model="formData.contactPhone"
placeholder="请输入负责人电话"
clearable
/>
</el-form-item>
<el-form-item label="报备说明" prop="description">
<el-input
v-model="formData.description"
@@ -210,6 +226,20 @@
clearable
/>
</el-form-item>
<el-form-item label="负责人" prop="contactPerson">
<el-input
v-model="editFormData.contactPerson"
placeholder="请输入负责人姓名"
clearable
/>
</el-form-item>
<el-form-item label="负责人电话" prop="contactPhone">
<el-input
v-model="editFormData.contactPhone"
placeholder="请输入负责人电话"
clearable
/>
</el-form-item>
<el-form-item label="报备说明" prop="description">
<el-input
v-model="editFormData.description"
@@ -254,6 +284,12 @@
<el-descriptions-item label="项目类型">
{{ currentReport?.projectType || '-' }}
</el-descriptions-item>
<el-descriptions-item label="项目负责人">
{{ currentReport?.contactPerson || '-' }}
</el-descriptions-item>
<el-descriptions-item label="项目电话">
{{ currentReport?.contactPhone || '-' }}
</el-descriptions-item>
<el-descriptions-item label="状态" :span="2">
<el-tag v-if="currentReport?.status === 0" type="warning">待审核</el-tag>
<el-tag v-else-if="currentReport?.status === 1" type="success">已通过</el-tag>
@@ -398,7 +434,9 @@ const formData = reactive<ReportForm>({
schoolName: '',
product: '',
projectType: '',
description: ''
description: '',
contactPerson: '',
contactPhone: ''
})
const auditForm = reactive({
@@ -410,6 +448,8 @@ const editFormData = reactive<ReportUpdateForm>({
product: '',
projectType: '',
description: '',
contactPerson: '',
contactPhone: '',
status: 1,
cancelReason: ''
})
@@ -559,6 +599,13 @@ const handleReset = () => {
// 新增按钮
const handleAdd = () => {
// 自动填充经销商的联系人和电话
if (userStore.userInfo?.dealerContactPerson) {
formData.contactPerson = userStore.userInfo.dealerContactPerson
}
if (userStore.userInfo?.dealerContactPhone) {
formData.contactPhone = userStore.userInfo.dealerContactPhone
}
dialogVisible.value = true
}
@@ -583,6 +630,8 @@ const handleEdit = (row: Report) => {
editFormData.product = row.product || ''
editFormData.projectType = row.projectType || ''
editFormData.description = row.description || ''
editFormData.contactPerson = row.contactPerson || ''
editFormData.contactPhone = row.contactPhone || ''
editFormData.status = row.status
editFormData.cancelReason = row.cancelReason || ''
editDialogVisible.value = true
@@ -595,6 +644,8 @@ const handleEditDialogClose = () => {
product: '',
projectType: '',
description: '',
contactPerson: '',
contactPhone: '',
status: 1,
cancelReason: ''
})
@@ -683,7 +734,9 @@ const handleDialogClose = () => {
schoolName: '',
product: '',
projectType: '',
description: ''
description: '',
contactPerson: '',
contactPhone: ''
})
selectedSchool.value = null
}