From f5dc459e642c35c171066cc98bd8addbc0219bee Mon Sep 17 00:00:00 2001 From: agent Date: Wed, 4 Nov 2026 00:53:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E7=AE=A1=E7=90=86=EF=BC=9A?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E5=AD=90=E8=8F=9C=E5=8D=95=E6=94=B6=E6=95=9B?= =?UTF-8?q?=E4=B8=BA=E3=80=8C=E5=BE=85=E5=8A=9E=E5=AE=A1=E6=A0=B8=20+=20?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=A7=84=E5=88=99=E3=80=8D=EF=BC=88=E5=8F=98?= =?UTF-8?q?=E4=BD=93=20A=20=E8=90=BD=E5=9C=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按任务切菜单,不再按表切(见 docs/adr/0007): - 待办审核(reviewList):左侧模块导航带待办数,右侧该模块申报清单, 行内「通过 / 驳回」,顶部常驻该模块审批链(第几级、每级谁审), 详情抽屉里看审批进度,再进「查看申报内容」 - 审批规则(reviewFlow):一个模块一行,右边是生效审批链的逐级 chip, 可换链、可编辑链;同一模块多条绑定显式告警(后端 limit 1 只认一条) - 删除「审核流分配管理」页与其编辑弹窗、审核列表的裸字段编辑弹窗 - 新增 utils/reviewChains.ts:把 模块 → 链 → 层级 的 join 收成一处, 两个页面共用,避免各写一套 - 模块清单继续以注册表为唯一来源 --- src/api/gxmu/reviewList/index.ts | 19 +- src/api/gxmu/reviewList/model/index.ts | 20 +- .../gxmu/reviewFlow/components/search.vue | 42 - src/views/gxmu/reviewFlow/index.vue | 501 +++++----- .../components/reviewFlowConfigEdit.vue | 334 ------- .../reviewFlowConfig/components/search.vue | 42 - src/views/gxmu/reviewFlowConfig/index.vue | 233 ----- .../reviewList/components/reviewListEdit.vue | 191 ---- .../gxmu/reviewList/components/search.vue | 81 +- src/views/gxmu/reviewList/index.vue | 859 ++++++++++++++---- src/views/gxmu/utils/reviewChains.ts | 182 ++++ 11 files changed, 1239 insertions(+), 1265 deletions(-) delete mode 100644 src/views/gxmu/reviewFlow/components/search.vue delete mode 100644 src/views/gxmu/reviewFlowConfig/components/reviewFlowConfigEdit.vue delete mode 100644 src/views/gxmu/reviewFlowConfig/components/search.vue delete mode 100644 src/views/gxmu/reviewFlowConfig/index.vue delete mode 100644 src/views/gxmu/reviewList/components/reviewListEdit.vue create mode 100644 src/views/gxmu/utils/reviewChains.ts diff --git a/src/api/gxmu/reviewList/index.ts b/src/api/gxmu/reviewList/index.ts index ced56e7..7d6a347 100644 --- a/src/api/gxmu/reviewList/index.ts +++ b/src/api/gxmu/reviewList/index.ts @@ -1,6 +1,10 @@ import request from '@/utils/request'; import type { ApiResult, PageResult } from '@/api'; -import type { ReviewList, ReviewListParam } from './model'; +import type { + ReviewList, + ReviewListParam, + ReviewPendingSummary +} from './model'; import { MODULES_API_URL } from '@/config/setting'; /** @@ -35,6 +39,19 @@ export async function pageGroupReviewList(params: ReviewListParam) { return Promise.reject(new Error(res.data.message)); } +/** + * 当前用户的待办统计(按模块) + */ +export async function getPendingSummary() { + const res = await request.get>( + MODULES_API_URL + '/gxmu/review-list/pending-summary' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + /** * 查询审核列表列表 */ diff --git a/src/api/gxmu/reviewList/model/index.ts b/src/api/gxmu/reviewList/model/index.ts index 52bacbf..ba584aa 100644 --- a/src/api/gxmu/reviewList/model/index.ts +++ b/src/api/gxmu/reviewList/model/index.ts @@ -4,7 +4,7 @@ import type { PageParam } from '@/api'; * 审核列表 */ export interface ReviewList { - // + // id?: number; // 模块 module?: string; @@ -39,6 +39,20 @@ export interface ReviewList { reviewFlowList?: ReviewList[]; } +/** + * 当前用户待办统计(按模块) + */ +export interface ReviewPendingSummary { + // 待办总数 + total: number; + // 按模块分组的待办数 + modules: { + module: string; + moduleName: string; + count: number; + }[]; +} + /** * 审核列表搜索条件 */ @@ -48,4 +62,8 @@ export interface ReviewListParam extends PageParam { keywords?: string; module?: string; pk?: number; + // 状态(0待审核 1通过 2驳回) + status?: number; + // 审批人 + userId?: number; } diff --git a/src/views/gxmu/reviewFlow/components/search.vue b/src/views/gxmu/reviewFlow/components/search.vue deleted file mode 100644 index 82fea9d..0000000 --- a/src/views/gxmu/reviewFlow/components/search.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - diff --git a/src/views/gxmu/reviewFlow/index.vue b/src/views/gxmu/reviewFlow/index.vue index 55831c5..f9f6bae 100644 --- a/src/views/gxmu/reviewFlow/index.vue +++ b/src/views/gxmu/reviewFlow/index.vue @@ -1,222 +1,317 @@ - + + .rr-head__title { + margin: 0; + font-size: 18px; + font-weight: 600; + } + + .rr-head__sub { + margin: 6px 0 0; + font-size: 12px; + color: rgba(0, 0, 0, 0.45); + max-width: 720px; + line-height: 1.7; + } + + .rr-alert { + margin-bottom: 12px; + } + + .rr-module { + display: flex; + flex-direction: column; + gap: 2px; + } + + .rr-module span { + font-size: 12px; + color: rgba(0, 0, 0, 0.45); + } + + .rr-tag { + align-self: flex-start; + margin-top: 2px; + } + + .rr-chain__head { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 6px; + } + + .rr-chain__name { + font-size: 12px; + color: rgba(0, 0, 0, 0.45); + } + + .rr-chain__levels { + display: flex; + flex-wrap: wrap; + gap: 6px; + } + + .rr-lv { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 3px 9px; + border-radius: 6px; + background: #f5f7fa; + font-size: 12px; + } + + .rr-lv em { + font-style: normal; + width: 16px; + height: 16px; + border-radius: 50%; + background: #1590ff; + color: #fff; + font-size: 11px; + display: inline-flex; + align-items: center; + justify-content: center; + } + + .rr-lv u { + text-decoration: none; + color: rgba(0, 0, 0, 0.45); + } + + .rr-empty { + font-size: 12px; + color: rgba(0, 0, 0, 0.45); + } + + .rr-dim { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; + } + diff --git a/src/views/gxmu/reviewFlowConfig/components/reviewFlowConfigEdit.vue b/src/views/gxmu/reviewFlowConfig/components/reviewFlowConfigEdit.vue deleted file mode 100644 index 4b750f4..0000000 --- a/src/views/gxmu/reviewFlowConfig/components/reviewFlowConfigEdit.vue +++ /dev/null @@ -1,334 +0,0 @@ - - - - diff --git a/src/views/gxmu/reviewFlowConfig/components/search.vue b/src/views/gxmu/reviewFlowConfig/components/search.vue deleted file mode 100644 index 82fea9d..0000000 --- a/src/views/gxmu/reviewFlowConfig/components/search.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - diff --git a/src/views/gxmu/reviewFlowConfig/index.vue b/src/views/gxmu/reviewFlowConfig/index.vue deleted file mode 100644 index a2d82b1..0000000 --- a/src/views/gxmu/reviewFlowConfig/index.vue +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - diff --git a/src/views/gxmu/reviewList/components/reviewListEdit.vue b/src/views/gxmu/reviewList/components/reviewListEdit.vue deleted file mode 100644 index 4de53ff..0000000 --- a/src/views/gxmu/reviewList/components/reviewListEdit.vue +++ /dev/null @@ -1,191 +0,0 @@ - - - - diff --git a/src/views/gxmu/reviewList/components/search.vue b/src/views/gxmu/reviewList/components/search.vue index 8c38de0..44d8228 100644 --- a/src/views/gxmu/reviewList/components/search.vue +++ b/src/views/gxmu/reviewList/components/search.vue @@ -1,81 +1,47 @@ + + diff --git a/src/views/gxmu/reviewList/index.vue b/src/views/gxmu/reviewList/index.vue index 2b12815..24652ad 100644 --- a/src/views/gxmu/reviewList/index.vue +++ b/src/views/gxmu/reviewList/index.vue @@ -1,6 +1,80 @@