task-276(验收反馈): 分页组件全站统一(jumper+按钮高亮样式)+MenusPage补分页+最低价筛选同排+视频筛选加固+移除侧边栏收起按钮+gitignore战役脚本规则

This commit is contained in:
2026-09-06 02:16:47 +08:00
parent 6e2e4bf8e7
commit 3b5adff2e3
14 changed files with 87 additions and 64 deletions
@@ -123,7 +123,7 @@ onMounted(loadGroups)
</el-table-column>
</el-table>
<div class="table-footer">
<el-pagination background layout="prev, pager, next" :total="total" :page-size="pageSize" :current-page="page" @current-change="changePage" />
<el-pagination background layout="prev, pager, next, jumper" :total="total" :page-size="pageSize" :current-page="page" @current-change="changePage" />
</div>
</el-card>
<GroupEditorDialog
@@ -22,6 +22,15 @@ import {
const loading = ref(false)
const rows = ref<MenuManageNode[]>([])
// 客户端分页:列表展示统一带分页组件。
const page = ref(1)
const pageSize = 10
const total = computed(() => rows.value.length)
const pagedRows = computed(() => rows.value.slice((page.value - 1) * pageSize, page.value * pageSize))
function changePage(p: number) {
page.value = p
}
const createVisible = ref(false)
const saving = ref(false)
const editingNode = ref<MenuManageNode | null>(null)
@@ -181,7 +190,7 @@ onMounted(loadMenus)
</div>
<el-card shadow="never">
<p class="menu-drag-tip">拖动每行左侧的手柄可调整同级菜单的显示顺序松开后自动保存</p>
<el-table v-loading="loading" :data="rows" row-key="id" default-expand-all stripe>
<el-table v-loading="loading" :data="pagedRows" row-key="id" default-expand-all stripe>
<el-table-column label="排序" min-width="64">
<template #default="{ row }">
<span
@@ -218,6 +227,16 @@ onMounted(loadMenus)
</template>
</el-table-column>
</el-table>
<div class="table-footer">
<el-pagination
background
layout="prev, pager, next, jumper"
:total="total"
:page-size="pageSize"
:current-page="page"
@current-change="changePage"
/>
</div>
</el-card>
<el-dialog v-model="createVisible" :title="dialogTitle" width="520px">
@@ -352,7 +352,7 @@ onMounted(loadTree)
</el-table-column>
</el-table>
<div class="table-footer">
<el-pagination background layout="prev, pager, next" :total="searchTotal" :page-size="PRODUCT_CATEGORY_DEFAULT_PAGE_SIZE" :current-page="searchPage" @current-change="searchChangePage" />
<el-pagination background layout="prev, pager, next, jumper" :total="searchTotal" :page-size="PRODUCT_CATEGORY_DEFAULT_PAGE_SIZE" :current-page="searchPage" @current-change="searchChangePage" />
</div>
</el-card>
@@ -390,13 +390,13 @@ onMounted(() => {
<el-option v-for="code in COUNTRIES" :key="code" :label="asinCountryLabel(code)" :value="code" />
</el-select>
</div>
<div class="f-item">
<label>最低价 </label>
<el-input v-model="filter.minimumPriceFrom" placeholder="数值" clearable @keyup.enter="apply" />
</div>
<div class="f-item">
<label>最低价 </label>
<el-input v-model="filter.minimumPriceTo" placeholder="数值" clearable @keyup.enter="apply" />
<div class="f-item price-range">
<label>最低价</label>
<div class="price-range-row">
<el-input v-model="filter.minimumPriceFrom" placeholder="≥ 最低值" clearable @keyup.enter="apply" />
<span class="range-sep"></span>
<el-input v-model="filter.minimumPriceTo" placeholder="≤ 最高值" clearable @keyup.enter="apply" />
</div>
</div>
<div class="f-item btn-row">
<el-button type="primary" @click="apply">查询</el-button>
@@ -541,6 +541,11 @@ onMounted(() => {
.f-item { display: flex; flex-direction: column; gap: 6px; width: 190px; }
.f-item label { color: var(--el-text-color-secondary); font-size: 12px; }
.f-item.btn-row { flex-direction: row; align-items: flex-end; gap: 8px; width: auto; }
/* 最低价范围筛选:≥ 与 ≤ 并排同一行。 */
.f-item.price-range { width: 300px; }
.price-range-row { display: flex; align-items: center; gap: 8px; width: 100%; }
.price-range-row .el-input { flex: 1; }
.range-sep { color: var(--el-text-color-secondary); font-size: 12px; flex: none; }
.table-footer { display: flex; justify-content: space-between; align-items: center; padding-top: 14px; }
.table-footer span { color: var(--el-text-color-secondary); font-size: 12.5px; }
.asin-cell { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 12px; }
@@ -118,7 +118,7 @@ onMounted(load)
</el-table-column>
</el-table>
<div class="table-footer">
<el-pagination background layout="prev, pager, next" :total="total" :page-size="pageSize" :current-page="page" @current-change="changePage" />
<el-pagination background layout="prev, pager, next, jumper" :total="total" :page-size="pageSize" :current-page="page" @current-change="changePage" />
</div>
</el-card>
@@ -270,7 +270,6 @@ onMounted(load)
<el-pagination
background
layout="prev, pager, next, jumper"
small
:total="totalTasks"
:page-size="pageSize"
:current-page="page"
@@ -379,7 +378,7 @@ onMounted(load)
.f-item { display: flex; flex-direction: column; gap: 6px; width: 220px; }
.f-item label { color: var(--el-text-color-secondary); font-size: 12px; }
.f-item.wide { width: 340px; }
.f-item.btn-row { flex-direction: row; align-items: flex-end; gap: 8px; width: auto; }
.f-item.btn-row { flex-direction: row; align-items: flex-end; gap: 8px; width: auto; margin-left: auto; flex: none; }
.video-summary-row { display: flex; justify-content: space-between; align-items: center; color: var(--el-text-color-secondary); font-size: 13px; }
.task-card-grid { display: flex; flex-direction: column; gap: 14px; }
.task-card { border: 1px solid var(--el-border-color); border-radius: 12px; background: #fff; box-shadow: 0 1px 2px rgba(39, 67, 94, 0.04), 0 14px 30px -24px rgba(39, 67, 94, 0.28); overflow: hidden; }
@@ -280,7 +280,6 @@ onMounted(load)
<el-pagination
background
layout="prev, pager, next, jumper"
small
:total="totalShops"
:page-size="pageSize"
:current-page="page"
@@ -348,7 +347,7 @@ onMounted(load)
<div v-if="allResultRows.length > cardPageSize" class="table-footer">
<el-pagination
background
layout="prev, pager, next"
layout="prev, pager, next, jumper"
:total="allResultRows.length"
:page-size="cardPageSize"
:current-page="cardPage"