From 5ed6779ec61012f2ed9250a1c6f052ec95ff6694 Mon Sep 17 00:00:00 2001 From: yelan Date: Wed, 30 Sep 2026 18:05:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(workbench):=20=E9=A6=96=E9=A1=B5=E5=BE=85?= =?UTF-8?q?=E5=8A=9E=E4=B8=8A=E9=99=90=E6=94=B9=E4=B8=BA=203=20=E6=9D=A1?= =?UTF-8?q?=E5=B9=B6=E4=BF=AE=E6=AD=A3=E8=B6=8B=E5=8A=BF=E5=9B=BE=E5=B0=BA?= =?UTF-8?q?=E5=AF=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TODO_LIMIT 由 5 调整为 3,同步更新接口文档默认值 - 趋势图 viewBox 与画布尺寸对齐原型 560×190 - 趋势卡改为弹性布局,图表贴底避免留白 --- clinical-web/docs/workbench-home-api.md | 4 +- clinical-web/src/api/workbench/home.ts | 8 ++-- .../home/components/SigningTrendPanel.vue | 37 +++++++++++++++---- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/clinical-web/docs/workbench-home-api.md b/clinical-web/docs/workbench-home-api.md index a2561df..8c44c43 100644 --- a/clinical-web/docs/workbench-home-api.md +++ b/clinical-web/docs/workbench-home-api.md @@ -13,7 +13,7 @@ ## 2. 已接入的请求 ```http -GET /api/v1/workbench/overview?campusId={UUID}&period={7|14|30}&todoLimit=5&rankingLimit=10 +GET /api/v1/workbench/overview?campusId={UUID}&period={7|14|30}&todoLimit=3&rankingLimit=10 X-Token: {登录令牌} ``` @@ -21,7 +21,7 @@ X-Token: {登录令牌} | ------------ | ---- | ------------------------- | ----------------------------------------------------------------- | | campusId | 是 | 当前工作台院区对应的 UUID | 必须在当前用户数据范围内 | | period | 是 | 7、14 或 30 | 同时决定趋势和文档排名统计周期 | -| todoLimit | 否 | 5 | 待办返回数量,范围 1–20;与原型首页展示上限一致(`.slice(0, 5)`) | +| todoLimit | 否 | 3 | 待办返回数量,范围 1–20;原型首页展示上限是 5(`.slice(0, 5)`),仓库按布局收成 3 条 | | rankingLimit | 否 | 10 | 排名返回数量,范围 1–20 | 请求通过 utils/request.ts 的单例发送,实际浏览器路径为 /api/v1/workbench/overview,由 Vite 开发代理转发到后端。 diff --git a/clinical-web/src/api/workbench/home.ts b/clinical-web/src/api/workbench/home.ts index c3b6c37..305a0a0 100644 --- a/clinical-web/src/api/workbench/home.ts +++ b/clinical-web/src/api/workbench/home.ts @@ -353,10 +353,12 @@ function createRanking( /** * 首页「我的待办」最多几条。 * - * 照抄原型 `renderDash()` 的 `tasks.slice(0, 5)`(最多 5 条)。 - * 仓库多一步:把这个上限同时作为 `todoLimit` 传给后端,避免取回一批再丢掉。 + * 原型 `renderDash()` 是 `tasks.slice(0, 5)`(最多 5 条)。 + * 仓库收成 **3 条**(2026-09-30 定):趋势卡与待办卡同行,待办越多行高越高, + * 图是按宽度定高的、贴底后会在标题与图之间留大片空白 —— 3 条时两张卡高度基本齐平。 + * 该上限同时作为 `todoLimit` 传给后端,避免取回一批再丢掉。 */ -const TODO_LIMIT = 5 +const TODO_LIMIT = 3 const RANKING_LIMIT = 10 let campusIds: Map | null = null let campusIdsRequest: Promise> | null = null diff --git a/clinical-web/src/views/workbench/home/components/SigningTrendPanel.vue b/clinical-web/src/views/workbench/home/components/SigningTrendPanel.vue index 3566c45..703a679 100644 --- a/clinical-web/src/views/workbench/home/components/SigningTrendPanel.vue +++ b/clinical-web/src/views/workbench/home/components/SigningTrendPanel.vue @@ -12,12 +12,16 @@ const emit = defineEmits<{ }>() /* - * 几何照抄原型 svgLine():四边留白 34、横向等分虚线(图上共 4 条)、 - * **没有 Y 轴刻度数字**(数值直接标在点上)。 - * viewBox 620×210 与原型 560×190 同为 2.95:1,缩放比例一致,所以只换 padding、不动 viewBox。 + * 几何照抄原型 svgLine():`viewBox 560×190` + 四边留白 34、 + * 横向等分虚线(图上共 4 条)、**没有 Y 轴刻度数字**(数值直接标在点上)。 + * + * 尺寸必须和原型一致:SVG 只给 `width:100%`、**不给高度**, + * 高度由 viewBox 比例算出来(560:190)。写死高度会让默认的 `xMidYMid meet` + * 把图形等比缩到中间 —— 实测 833px 宽的卡片里图形只占 620px,左右各空 16.9% + * (原型只空 6.1%),整块图又矮又窄。 */ -const chartWidth = 620 -const chartHeight = 210 +const chartWidth = 560 +const chartHeight = 190 const chartPadding = 34 const plotWidth = chartWidth - chartPadding * 2 @@ -79,7 +83,7 @@ const hasData = computed(() => props.points.some((point) => point.value > 0))
- + @@ -125,13 +129,26 @@ const hasData = computed(() => props.points.some((point) => point.value > 0))