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', () => {