From a9c3903864082979d6a815d94c5f1002aab04a04 Mon Sep 17 00:00:00 2001 From: TianyangZhang Date: Fri, 15 May 2026 17:03:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(wf):=20=E4=BB=85=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E8=B4=9F=E8=B4=A3=E4=BA=BA=E5=B2=97=E4=BD=8D=E5=8F=AF=E5=8F=91?= =?UTF-8?q?=E8=B5=B7=E8=AF=B7=E5=81=87=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按岗位筛选发起流程入口:调 system.userPost.list 取当前用户全部 岗位,命中"部门负责人"才放行 wf_leave。支持一个用户挂多个岗位。 后续要按岗位限流其他工单只需在 restrictedKeys 增加 key。 注意:仅前端隐藏入口,未做后端校验。 Co-Authored-By: Claude Opus 4.7 (1M context) --- src/views/wf/myticket.vue | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/views/wf/myticket.vue b/src/views/wf/myticket.vue index c6873ab2..2e915692 100644 --- a/src/views/wf/myticket.vue +++ b/src/views/wf/myticket.vue @@ -218,12 +218,24 @@ export default { this.getWfOptions(); }, methods: { - getWfOptions() { + async getWfOptions() { let permissions = this.$TOOL.data.get("PERMISSIONS"); + let userInfo = this.$TOOL.data.get("USER_INFO"); + let isDeptHead = false; + try { + const userPosts = await this.$API.system.userPost.list.req({ user: userInfo.id, page: 0 }); + isDeptHead = (userPosts || []).some(up => up.post_ && up.post_.name === "部门负责人"); + } catch (e) { + console.error("获取用户岗位失败:", e); + } + const restrictedKeys = { wf_leave: isDeptHead }; const groups = {}; this.$API.wf.workflow.list.req({ page: 0 }).then((res) => { res.forEach((item) => { if(item.key && permissions.includes(item.key)) { + if (item.key in restrictedKeys && !restrictedKeys[item.key]) { + return; + } let cate = item.cate; if (!cate){cate="未分组"} if (!groups[cate]) {