From b5750597266a34451b6bf0e2b5e64f8126484592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=87=AA=E8=BE=BE?= <980324341@qq.com> Date: Mon, 7 Sep 2026 15:34:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E5=BA=97=E9=93=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=AE=B0=E5=BD=95=E5=8D=A1=E7=89=87=E6=94=B9=E4=B8=80?= =?UTF-8?q?=E8=A1=8C4=E4=B8=AA=EF=BC=9B=E5=8D=A1=E7=89=87=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8F=B7=E6=94=B9=E4=B8=BA=E4=BB=BB=E5=8A=A1id(file?= =?UTF-8?q?=5Ftask.id,=E4=B8=8E=E6=A1=8C=E9=9D=A2=E7=AB=AF=E6=8E=A8?= =?UTF-8?q?=E9=80=81/=E5=BF=83=E8=B7=B3/=E5=9B=9E=E4=BC=A0=E5=90=8C?= =?UTF-8?q?=E4=B8=80id)=E2=80=94=E2=80=94taskId=E4=BC=98=E5=85=88,taskNo/r?= =?UTF-8?q?esultId=E5=85=9C=E5=BA=95=EF=BC=9B=E5=88=A0=E9=99=A4=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E5=90=8C=E6=AD=A5=EF=BC=9B=E6=9B=B4=E6=96=B0=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/tasks/ShopDataTasksPage.vue | 15 ++++++++++----- .../tests/align-shop-data-cards.test.ts | 4 ++-- .../tests/align-shop-data-grid.test.ts | 4 ++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/admin-frontend-vue/src/pages/tasks/ShopDataTasksPage.vue b/admin-frontend-vue/src/pages/tasks/ShopDataTasksPage.vue index b9698657..97733553 100644 --- a/admin-frontend-vue/src/pages/tasks/ShopDataTasksPage.vue +++ b/admin-frontend-vue/src/pages/tasks/ShopDataTasksPage.vue @@ -34,7 +34,7 @@ const totalShops = ref(0) const page = ref(1) // 店铺级一次全载(>200 家店铺时后端按页截断,可上调或恢复底部店铺级分页)。 const pageSize = ref(200) -// 卡片宫格分页:一行 3 个、一页 10 张卡片(在店铺分页的结果文件内翻页)。 +// 卡片宫格分页:一行 4 个、一页 10 张卡片(在店铺分页的结果文件内翻页)。 const cardPage = ref(1) const cardPageSize = ref(10) const cardJump = ref('') @@ -217,14 +217,14 @@ async function downloadBatch() { async function removeRowByRow(row: ShopDataResultRow) { // 对齐旧版:原生 confirm。 - if (!window.confirm(`确认删除店铺“${row.shopName}”的任务 ${row.taskNo || row.resultId} 及结果文件?`)) return + if (!window.confirm(`确认删除店铺“${row.shopName}”的任务 ${row.taskId || row.taskNo || row.resultId} 及结果文件?`)) return deletingKey.value = row.resultId try { await deleteShopDataResultHistory(row.resultId) ElMessage.success('删除成功') await load() } catch (error) { - ElMessage.error(error instanceof Error ? error.message : `正在删除任务 ${row.taskNo || row.resultId}...`) + ElMessage.error(error instanceof Error ? error.message : `正在删除任务 ${row.taskId || row.taskNo || row.resultId}...`) } finally { deletingKey.value = '' } @@ -335,7 +335,7 @@ onMounted(load)
- 任务 {{ row.taskNo || row.resultId }} + 任务 {{ row.taskId || row.taskNo || row.resultId }} {{ statusLabel(row.status) }}
@@ -604,7 +604,7 @@ h3 { } .shop-card-grid { display: grid; - grid-template-columns: repeat(3, 1fr); + grid-template-columns: repeat(4, 1fr); gap: 14px; } .sd-card { @@ -734,6 +734,11 @@ h3 { align-items: center; gap: 6px; } +@media (max-width: 1400px) { + .shop-card-grid { + grid-template-columns: repeat(3, 1fr); + } +} @media (max-width: 1100px) { .shop-card-grid { grid-template-columns: repeat(2, 1fr); diff --git a/admin-frontend-vue/tests/align-shop-data-cards.test.ts b/admin-frontend-vue/tests/align-shop-data-cards.test.ts index a1d9989e..48df14ae 100644 --- a/admin-frontend-vue/tests/align-shop-data-cards.test.ts +++ b/admin-frontend-vue/tests/align-shop-data-cards.test.ts @@ -9,8 +9,8 @@ test('align_shop_data_cards_per_task', () => { // 每任务一张卡:以 resultRow 迭代渲染卡片(宫格分页后绑定 pagedResultRows),不再按店铺聚合。 assert.match(page, /v-for="row in pagedResultRows"/, '逐任务卡片渲染') assert.doesNotMatch(page, /v-for="group in groups"/, '去掉按店铺聚合卡片') - // 卡片结构:店铺名头 + 任务号/状态 + 分组/最新/国家/文件 信息行 + 下载文件/删除。 - assert.match(page, /任务 {{ row\.taskNo \|\| row\.resultId }}|任务 {{ row\.taskNo/, '卡片含任务号') + // 卡片结构:店铺名头 + 任务 id/状态 + 分组/最新/国家/文件 信息行 + 下载文件/删除。 + assert.match(page, /任务 {{ row\.taskId \|\| row\.taskNo \|\| row\.resultId }}/, '卡片含任务 id(桌面端 taskid)') assert.match(page, />分组最新国家 { const src = readSource(PAGE) - assert.match(src, /grid-template-columns:\s*repeat\(3,\s*1fr\)/, '卡片容器应为 3 列宫格') + assert.match(src, /grid-template-columns:\s*repeat\(4,\s*1fr\)/, '卡片容器应为 4 列宫格') }) test('align_shop_data_grid_normal_variant_input', () => {