From 991cbb5278ac20b0fcea609d503a0bf5856eb06b Mon Sep 17 00:00:00 2001 From: dk <1260500659@qq.com> Date: Thu, 7 May 2026 11:02:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BA=A7=E5=93=81=E9=9C=80=E6=B1=82):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9C=80=E6=B1=82=E6=A0=91=E7=9A=84=E5=BA=8F?= =?UTF-8?q?=E5=8F=B7=E5=B1=95=E7=A4=BA=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/product/requirement/index.vue | 39 ++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/src/views/product/requirement/index.vue b/src/views/product/requirement/index.vue index 792e3f3..d3ced8c 100644 --- a/src/views/product/requirement/index.vue +++ b/src/views/product/requirement/index.vue @@ -147,6 +147,17 @@ function getPriorityTagType(priority?: number | null): UI.ThemeColor { return priorityTagTypeMap[priority] || 'info'; } +function flattenTree(nodes: Api.Product.Requirement[]): Api.Product.Requirement[] { + const result: Api.Product.Requirement[] = []; + for (const node of nodes) { + result.push(node); + if (node.children?.length) { + result.push(...flattenTree(node.children)); + } + } + return result; +} + function collectAllRequirementIds(nodes: Api.Product.Requirement[]): string[] { const ids: string[] = []; for (const node of nodes) { @@ -186,11 +197,25 @@ function getRowActions(row: Api.Product.Requirement): Api.Product.RequirementLif } const columns = computed(() => [ - { prop: 'index', type: 'index', label: '序号', width: 64 }, + { + type: 'index', + label: '序号', + width: 64, + align: 'center', + index: (index: number): number => { + const flatList = flattenTree(treeData.value); + const row = flatList[index]; + if (!row || row.parentId !== '0') { + return 0; + } + const parentIndex = treeData.value.findIndex(item => item.id === row.id); + return parentIndex >= 0 ? (pagination.pageNo - 1) * pagination.pageSize + parentIndex + 1 : 0; + } + }, { prop: 'title', label: '标题', - minWidth: 220, + minWidth: 200, formatter: (row: Api.Product.Requirement) => { const isTerminal = isTerminalStatus(row.statusCode); const className = 'requirement-title'; @@ -625,13 +650,15 @@ watch( - +