feat: add last report memory for work report form

This commit is contained in:
2026-07-04 19:07:41 +08:00
parent 5544056833
commit 8cfd69d9bb
7 changed files with 74 additions and 0 deletions

View File

@@ -201,6 +201,14 @@ public class OaProjectReportController extends BaseController {
return R.ok(iOaProjectReportService.getSummaryData(start,end));
}
/**
* 查询当前用户最近一次报工记录(用于表单记忆回填)
*/
@GetMapping("/lastReport")
public R<OaProjectReportVo> getLastReport() {
return R.ok(iOaProjectReportService.getLastReport());
}
/**
* 查询当前登录用户今日的报工记录
*/

View File

@@ -59,4 +59,9 @@ public interface OaProjectReportMapper extends BaseMapperPlus<OaProjectReportMap
@Param("workPlace") String workPlace);
List<OaProjectReportVo> getSummaryData(@Param("start") LocalDate start, @Param("end") LocalDate end);
/**
* 查询当前用户最近一次报工记录(含项目信息,用于表单记忆回填)
*/
OaProjectReportVo selectLastReportByUserId(@Param("userId") Long userId);
}

View File

@@ -45,4 +45,9 @@ public interface IOaProjectReportService {
Boolean insertReportSupplement(OaProjectReportBo bo);
TableDataInfo<OaProjectTravelCompareVo> getTravelCompareList(LocalDate start, LocalDate end, String nickName, String workPlace, PageQuery pageQuery);
/**
* 获取当前用户最近一次报工记录(用于表单记忆回填)
*/
OaProjectReportVo getLastReport();
}

View File

@@ -370,6 +370,12 @@ public class OaProjectReportServiceImpl implements IOaProjectReportService {
return baseMapper.selectVoByIdPlus(report.getReportId());
}
@Override
public OaProjectReportVo getLastReport() {
Long userId = LoginHelper.getUserId();
return baseMapper.selectLastReportByUserId(userId);
}
@Override
public Boolean insertReportSupplement(OaProjectReportBo bo) {
//补录接口前端会传入经办人id还有报工时间也就是创建时间

View File

@@ -267,6 +267,27 @@
GROUP BY u.user_id, u.nick_name, d.dept_name
ORDER BY u.nick_name
</select>
<!-- 查询当前用户最近一次报工记录(用于表单记忆回填) -->
<select id="selectLastReportByUserId" resultType="com.ruoyi.oa.domain.vo.OaProjectReportVo">
SELECT opr.report_id,
opr.user_id,
opr.work_place,
opr.project_id,
opr.content,
opr.remark,
opr.is_trip,
opr.work_type,
op.project_name,
op.project_num,
op.project_code
FROM oa_project_report opr
LEFT JOIN sys_oa_project op ON opr.project_id = op.project_id
WHERE opr.user_id = #{userId}
AND opr.del_flag = 0
ORDER BY opr.create_time DESC
LIMIT 1
</select>
<select id="selectAll" resultType="com.ruoyi.oa.domain.vo.OaProjectReportVo">
SELECT
opr.*,

View File

@@ -145,3 +145,11 @@ export function suppProjectReport (data) {
data: data
})
}
// 查询当前用户最近一次报工记录(用于表单记忆回填)
export function getLastReport () {
return request({
url: '/oa/projectReport/lastReport',
method: 'get'
})
}

View File

@@ -167,6 +167,7 @@
import {
addProjectReport,
delProjectReport,
getLastReport,
getProjectReport,
getTodayProjectReport,
listProjectReport,
@@ -448,6 +449,10 @@ export default {
this.suppVisible = false;
this.title = "添加项目报工";
this.checkTodayReport().finally(() => {
// 如果今天还没报过工,尝试加载上次报工记录回填
if (!this.hasTodayReport) {
this.loadLastReport();
}
this.open = true;
this.$nextTick(() => {
if (!this.form.reportId) {
@@ -456,6 +461,22 @@ export default {
});
});
},
/** 加载上次报工记录,回填表单关键字段(项目、工作地点、是否出差等) */
loadLastReport () {
getLastReport().then(response => {
if (response.data && response.data.projectId) {
this.form = {
...this.form,
projectId: response.data.projectId,
workPlace: response.data.workPlace || this.form.workPlace,
isTrip: response.data.isTrip,
workType: response.data.workType,
};
}
}).catch(() => {
// 加载失败不影响正常使用
});
},
/** 修改按钮操作 */
handleUpdate (row) {
this.suppVisible = false;