hookehuyr

refactor(分页): 调整分页构建逻辑,无分页控件时不启用分页

移除按固定大小分片的兜底逻辑,确保无分页控件时不显示分页组件
......@@ -18,3 +18,4 @@
- `onFailed` 时清除该标记,避免误判后续提交动作。
- `index.vue` 在 `onSubmit` 顶部拦截“下一页意图”,短路真实提交,仅做翻页与状态重置。
- 保持分页最后一页提示与按钮颜色逻辑同步。
- 分页构建逻辑调整:当表单中不存在 `paginator` 控件时不启用分页,移除按固定大小(8个字段)分片的兜底逻辑,确保无分页控件时不显示分页组件。
......
......@@ -109,17 +109,18 @@ export function usePagination(formDataRef, options = {}) {
navs.push(normalizePaginatorProps())
}
// 若未显式分页,仅按固定大小分片,并为每一页设置默认导航
if (pages.length <= 1) {
const size = 8
const keys = formDataRef.value.filter(i => i.component_props?.tag !== 'paginator').map(i => i.key)
const chunked = []
for (let i = 0; i < keys.length; i += size) {
chunked.push(keys.slice(i, i + size))
}
pages_raw.value = chunked.length ? chunked : [keys]
page_nav_props_by_index.value = (chunked.length ? chunked : [keys]).map(() => normalizePaginatorProps())
// 无显式分页符时,不启用分页(单页展现,不再进行固定大小分片)
// 这样可确保没有 paginator 控件时,分页组件不会显示
const has_paginator = formDataRef.value.some(i => i.component_props?.tag === 'paginator')
if (!has_paginator) {
const keys = formDataRef.value
.filter(i => i.component_props?.tag !== 'paginator')
.map(i => i.key)
pages_raw.value = [keys]
// 单页仍提供默认导航配置,供最后页按钮样式读取,但不会显示分页组件
page_nav_props_by_index.value = [normalizePaginatorProps()]
} else {
// 有分页符时按分组结果设置
pages_raw.value = pages
page_nav_props_by_index.value = navs
}
......