| 问题描述 | 保存之后,项目创建人、项目创建人电话没有显示出来 |
|---|---|
| 一级模块 | 项目信息填报 |
| 二级模块 | / |
| 涉及类型 | 全部类型 |
| 严重性 | 严重 |
| 当前状态 | 5.1.已关闭 |
| 研发处理人员 | 陈键泽/洪陈解 |
| 复测情况 | 复测通过 |
本行 manifest 中未提取到对应截图,以下分析基于代码走读。
projectDetail.vue 第 1917-1935 行 init() 方法baseInfo.vue 第 571-577 行 init() 方法(同类修复)说明:本条缺陷当前状态为“已关闭 / 复测通过”。走读 backup730 代码发现,新建项目页面初始化时对“项目创建人”和“项目创建人电话”采用了两种不同的赋值方式:“创建人”直接从本地登录态同步赋值,而“创建人电话”需要额外调用一次 projectBaseApi.getPhone() 接口异步获取,且该调用是“发出去就不管”(未 await),也没有在电话获取完成前禁用“保存”按钮:
async init() {
return new Promise((resolve) => {
if (this.currentStatus == 'add') {
this.form.creator = userInfo.userAlias
this.form.createTime = new Date()
this.form.bakPstatus = '0'
this.form.implVoList = []
// 未 await,保存按钮此时已经可点
projectBaseApi.getPhone({ userId: userInfo.userId }).then(res => {
this.form.creatorPhone = res.data
})
this.readOnly = false
resolve()
}
...
async init() {
return new Promise(async (resolve) => {
if (this.currentStatus == 'add') {
this.form.creator = userInfo.userAlias
this.form.createTime = new Date()
this.form.bakPstatus = '0'
this.form.implVoList = []
// 等待电话号码回填完成后再放开保存入口
try {
const res = await projectBaseApi.getPhone({ userId: userInfo.userId })
this.form.creatorPhone = res.data
} catch (e) {
this.$message.error('获取创建人联系电话失败,请刷新页面重试')
}
this.readOnly = false
resolve()
}
...
getProjectById 重新整体覆盖 this.form(baseInfo.vue 第 578-583 行 this.form = res.data),如果后端返回体在某些分支下漏填 creator/creatorPhone,也会表现为同样的现象。建议本次修复同时在后端 ProjectImplAppService.getProjectById() 返回前补充一次显式非空校验/日志埋点,双向锁定问题面,避免复测通过后在其他数据状态下复现。