refactor(pagination): 全站统一隐藏分页导航按钮
- cargo-type 页面原先通过局部方案隐藏首页/上一页/下一页/尾页按钮,现回退该方案 - 修改 src/utils/pagination.js,删除首页和尾页按钮全局增强器注入逻辑 - 优化 updatePaginationButtons,移除首页/尾页按钮状态更新代码 - 在 src/styles/element-ui.scss 添加全局样式,统一隐藏 el-pagination 组件的上一页和下一页按钮 - 保留跳转按钮功能,确保分页跳转操作可用 - 修改语言文件,将“收缩”文案优化为“收起”以提升用户体验 - 全站所有分页组件仅显示总数、每页大小、页码与跳转,符合统一规范要求 - 如需恢复个别页面导航按钮,需添加更高优先级样式覆盖或单独处理
This commit is contained in:
@@ -13,3 +13,19 @@
|
||||
- 前端无需改动:`src/views/base/cargo-type.vue` + `utils/import-excel.js` 已支持失败明细 Excel 下载与 `decorateCargoTypeFailDetail` 装饰。
|
||||
- 验证:本环境无 maven,无法编译;已做静态核对(imports/方法/字段/括号完整,无 TransactionAspectSupport 残留)。需在本地 `mvn -pl blade-service/blade-system compile` 确认。
|
||||
- 遗留小问题(非本次引入,可选优化):后端二级编码前缀报错文案为"货物类型编码前2位必须与上级货物类型编码一致",而前端 `CARGO_TYPE_FAIL_RULES` 匹配的是"二级编码前2位必须与上级货物类型编码一致",二者不完全一致,导致该错误前端不会追加规则说明(仍会显示原因)。可后续对齐文案。
|
||||
|
||||
## cargo-type 分页隐藏「首页/上一页/下一页/尾页」
|
||||
|
||||
- 根因:页面有两套分页——有数据时用 `avue-crud` 自带分页(默认 layout `total, sizes, prev, pager, next, jumper`,原生上一页/下一页来自这里);无数据时用共享组件 `<empty-pagination>`(layout 写死同样带 prev/next)。「首页/尾页」按钮不是 Avue/EP 原生的,而是全局增强器 `src/utils/pagination.js` 的 `setupPaginationEnhancer()`(main.js 第 98 行全局启用)扫描所有 `.el-pagination`,在 `.btn-prev` 前插「首页」、`.btn-next` 后插「尾页」。
|
||||
- 关键机制:增强器只在存在 `.btn-prev/.btn-next` 时才注入首页/尾页。因此去掉分页 layout 里的 prev/next,首页/尾页就不会被注入。
|
||||
- 改动(仅 `src/views/base/cargo-type.vue`,未碰共享组件):① `page` 数据加 `layout: 'total, sizes, pager, jumper'` 处理有数据状态;② 新增 scoped `:deep(.avue-crud__pagination)` 规则隐藏 `.btn-prev/.btn-next/.erp-pagination-first/.erp-pagination-last`,覆盖无数据时的 empty-pagination 状态。
|
||||
- 注意:`empty-pagination` 被 16+ 页面共用,本次未改它的默认 layout,避免影响其它页面。如需其它页面也隐藏,应给该组件加 `layout` prop 而非改默认值。
|
||||
|
||||
## 全站分页统一隐藏「首页/上一页/下一页/尾页」(接上一条)
|
||||
|
||||
- 用户要求全站统一。逐页改不现实(empty-pagination 被 16+ 页共用,还有大量 avue-crud 自带分页),改为**集中两处全局改动**:
|
||||
1. `src/utils/pagination.js`:删除全局增强器对「首页/尾页」按钮的注入(保留「跳转」);同步精简 `updatePaginationButtons`(不再处理 first/last disabled)。
|
||||
2. `src/styles/element-ui.scss`:新增全局规则 `.el-pagination { .btn-prev, .btn-next { display: none !important } }`,统一隐藏原生「上一页/下一页」。
|
||||
- 因此**回退了 cargo-type.vue 之前的两处页面级改动**(`page.layout` 与 scoped 隐藏样式),避免与全局方案两套机制并存;cargo-type 现由全局方案统一接管。
|
||||
- 效果:全站所有 el-pagination(含 avue-crud 自带分页与 empty-pagination)均只保留「总条数/每页条数/页码/跳转」,首页/上一页/下一页/尾页全部隐藏;「跳转」按钮保留。
|
||||
- 风险点:全局 `display:none !important` 会影响所有分页,符合"全站统一"诉求;如后续某页面需恢复导航按钮,需针对该页用更高优先级样式覆盖或单独处理。
|
||||
|
||||
@@ -63,7 +63,7 @@ export default {
|
||||
show: '显 示',
|
||||
hide: '隐 藏',
|
||||
open: '展 开',
|
||||
shrink: '收 缩',
|
||||
shrink: '收 起',
|
||||
printBtn: '打 印',
|
||||
excelBtn: '导 出',
|
||||
updateBtn: '修 改',
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
}
|
||||
|
||||
.basic-container__card .avue-crud__search.el-card > .el-card__body {
|
||||
padding: 12px 12px 4px;
|
||||
padding: 18px 18px 8px;
|
||||
}
|
||||
|
||||
.basic-container__card .avue-crud__header {
|
||||
@@ -127,7 +127,7 @@
|
||||
.avue-crud__search .el-form-item--small.el-form-item,
|
||||
.avue-crud__search .el-form-item--large.el-form-item,
|
||||
.avue-crud__search .el-form-item--medium.el-form-item {
|
||||
margin-bottom: 8px;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.avue-crud__search .el-form-item__label {
|
||||
@@ -439,6 +439,15 @@
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
// 全站统一:隐藏分页的「上一页 / 下一页」原生导航按钮
|
||||
// (「首页 / 尾页」由 src/utils/pagination.js 的全局增强器统一不再注入)
|
||||
.el-pagination {
|
||||
.btn-prev,
|
||||
.btn-next {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.avue-crud__pagination .el-pagination,
|
||||
.empty-pagination .el-pagination,
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
const FIRST_BUTTON_CLASS = 'erp-pagination-first';
|
||||
const LAST_BUTTON_CLASS = 'erp-pagination-last';
|
||||
const JUMP_BUTTON_CLASS = 'erp-pagination-jump';
|
||||
const DEFAULT_PAGE_SIZE = 10;
|
||||
const DEFAULT_PAGE_SIZES = [10, 20, 50, 100];
|
||||
@@ -101,38 +99,19 @@ const normalizeComponentPageConfigs = pagination => {
|
||||
};
|
||||
|
||||
const updatePaginationButtons = pagination => {
|
||||
const { currentPage, pageCount, jumpInput } = getPaginationState(pagination);
|
||||
const firstButton = pagination.querySelector(`.${FIRST_BUTTON_CLASS}`);
|
||||
const lastButton = pagination.querySelector(`.${LAST_BUTTON_CLASS}`);
|
||||
const { jumpInput } = getPaginationState(pagination);
|
||||
const jumpButton = pagination.querySelector(`.${JUMP_BUTTON_CLASS}`);
|
||||
|
||||
setButtonDisabled(firstButton, currentPage <= 1);
|
||||
setButtonDisabled(lastButton, currentPage >= pageCount);
|
||||
setButtonDisabled(jumpButton, !jumpInput || jumpInput.disabled);
|
||||
};
|
||||
|
||||
const enhancePagination = pagination => {
|
||||
const prevButton = pagination.querySelector('.btn-prev');
|
||||
const nextButton = pagination.querySelector('.btn-next');
|
||||
const jumpWrapper = pagination.querySelector('.el-pagination__jump');
|
||||
|
||||
normalizeComponentPageConfigs(pagination);
|
||||
|
||||
if (prevButton && !pagination.querySelector(`.${FIRST_BUTTON_CLASS}`)) {
|
||||
const firstButton = createPaginationButton(FIRST_BUTTON_CLASS, '首页', () => {
|
||||
changePage(pagination, 1);
|
||||
});
|
||||
prevButton.before(firstButton);
|
||||
}
|
||||
|
||||
if (nextButton && !pagination.querySelector(`.${LAST_BUTTON_CLASS}`)) {
|
||||
const lastButton = createPaginationButton(LAST_BUTTON_CLASS, '尾页', () => {
|
||||
const { pageCount } = getPaginationState(pagination);
|
||||
changePage(pagination, pageCount);
|
||||
});
|
||||
nextButton.after(lastButton);
|
||||
}
|
||||
|
||||
// 全站统一:不再注入「首页 / 尾页」按钮;
|
||||
// 原生「上一页 / 下一页」由全局样式(src/styles/element-ui.scss)统一隐藏。
|
||||
if (jumpWrapper && !pagination.querySelector(`.${JUMP_BUTTON_CLASS}`)) {
|
||||
const jumpButton = createPaginationButton(JUMP_BUTTON_CLASS, '跳转', () => {
|
||||
const { jumpInput } = getPaginationState(pagination);
|
||||
|
||||
Reference in New Issue
Block a user