feat(manager/plans + biz-project): 审核 dialog 项目编号改远程 el-select

后端 (BizProjectController):
- 新增 GET /business/project/projectNoOptions
- 返回 [{projectNo, projectName}], 仅 project_no 非空, 按 projectNo 倒序
- 不加 @PreAuthorize (manager 是业务角色, 与 specialPlan/options 一致)

前端 (manager/Plans.vue):
- 模板: 项目编号 el-input → el-select (filterable, 显示 projectNo / projectName)
- script: 加 projectNoOptions ref + loadProjectNoOptions() 函数
- onAudit: 每次打开 dialog 调 loadProjectNoOptions 拿最新 options
This commit is contained in:
郭庆泰
2026-08-18 01:08:28 +08:00
parent 1d288fbe6c
commit 8bee167704
2 changed files with 35 additions and 1 deletions
@@ -84,6 +84,28 @@ public class BizProjectController extends BaseController
return getDataTable(list);
}
/**
* 项目编号下拉选项 (供 manager/Plans 审核 dialog "通过时" 选项目编号用)
* 返回 [{projectNo, projectName}], 仅 project_no 非空的项目, 按 project_no DESC
* 注: 不加 @PreAuthorize, 与 BizSpecialPlanController.options 一致 — manager 是业务角色
*/
@GetMapping("/projectNoOptions")
public AjaxResult projectNoOptions()
{
List<BizProject> all = bizProjectService.selectList(new BizProject());
java.util.List<java.util.Map<String, Object>> opts = new java.util.ArrayList<>();
for (BizProject p : all) {
if (p.getProjectNo() == null || p.getProjectNo().isEmpty()) continue;
java.util.Map<String, Object> m = new java.util.LinkedHashMap<>();
m.put("projectNo", p.getProjectNo());
m.put("projectName", p.getProjectName());
opts.add(m);
}
// 按 projectNo 倒序 (新 → 旧)
opts.sort((a, b) -> String.valueOf(b.get("projectNo")).compareTo(String.valueOf(a.get("projectNo"))));
return success(opts);
}
/**
* sponsor 专属项目列表 (按当前登录 sponsor 的 user_id 过滤)
* GET /business/project/sponsorList