日期: 2026-08-05
范围: web-admin 职位管理页 + GET /web/admin/posts 列表 enrichment
状态: 设计已确认,待实现
职位管理(/#/system-manage/system/post)已有查看弹窗(SystemViewDialog)与「关联用户」能力,但列表中:
采用 列表接口批量 enrichment:
list_posts 对本页职位一次性查询 sys_user_post + sys_user,在每行附加只读字段 boundUserNames: string[]。/posts/{id}/users。姓名取值:优先 nick_name,为空则回退 user_no;过滤已删除用户(del_flag=0)。排序:与绑定表查询顺序一致即可(稳定、可预期)。
在职位列表项(及 _row_to_dict 用于列表场景)增加:
| 字段 | 类型 | 说明 |
|---|---|---|
boundUserNames |
string[] |
关联用户显示名;无人则为 [] |
单条 create/update 成功返回可不强制带该字段;前端以列表刷新为准。
backend/app/crud/post.py(或与 user.py 协作的批量查询函数)。list_posts 取得本页 SysPost 行后,按 post_id IN (...) + tenant_no 批量查绑定与用户昵称,再写入各行 dict。boundUserNames;写接口忽略该字段。web-admin/src/views/system/post/index.vue
职位名称列
el-button link type="primary",文案为 row.postName。@click → 已有 handleView(row)。关联人员列
boundUserNames 用顿号 、 拼接;空数组显示 —(formatDisplayOrDash 或等价)。white-space: normal、word-break: break-word,全部显示、超宽换行;不使用 show-overflow-tooltip 省略。刷新
handlePostBindSubmit 成功后调用 loadData(),保证人名与绑定一致。web-admin/src/types/api.d.ts → Api.Post.PostItem 增加可选或必填:
boundUserNames?: string[]
列表接口保证返回数组时,前端按 row.boundUserNames || [] 防御即可。
—。loadData)。