diff --git a/frontend/src/pages/system/dictionaries/index.less b/frontend/src/pages/system/dictionaries/index.less
index 0b54a28..19502a6 100644
--- a/frontend/src/pages/system/dictionaries/index.less
+++ b/frontend/src/pages/system/dictionaries/index.less
@@ -2,12 +2,33 @@
height: 100%;
display: flex;
flex-direction: column;
+}
- // 强制覆盖全局可能存在的 max-height: none !important 限制
- // 确保 antd table 的 scroll.y 能够生效
- .ant-table-wrapper .ant-table-body {
- max-height: inherit !important;
- }
+.dictionaries-page > .ant-row {
+ flex: 1 1 0;
+ height: 0;
+ min-height: 0;
+ overflow: hidden;
+ align-items: stretch;
+}
+
+.dictionaries-page > .ant-row > .ant-col {
+ height: 100%;
+ min-height: 0;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+}
+
+.dictionaries-page > .ant-row > .ant-col > .app-page__panel-card {
+ flex: 1 1 auto;
+ height: 100%;
+ min-height: 0;
+ overflow: hidden;
+}
+
+.dictionaries-page > .ant-row > .ant-col > .app-page__panel-card > .ant-card-body {
+ min-height: 0;
}
.dictionaries-header {
@@ -86,6 +107,89 @@
opacity: 1;
}
+.dict-type-table-wrap,
+.dict-item-table-wrap {
+ flex: 1;
+ min-height: 0;
+ overflow: hidden;
+}
+
+.dictionaries-page .dict-type-table-wrap .ant-table-wrapper,
+.dictionaries-page .dict-type-table-wrap .ant-spin-container,
+.dictionaries-page .dict-type-table-wrap .ant-table,
+.dictionaries-page .dict-type-table-wrap .ant-table-container,
+.dictionaries-page .dict-item-table-wrap .ant-table-wrapper,
+.dictionaries-page .dict-item-table-wrap .ant-spin-container,
+.dictionaries-page .dict-item-table-wrap .ant-table,
+.dictionaries-page .dict-item-table-wrap .ant-table-container {
+ height: 100%;
+ min-height: 0;
+}
+
+.dictionaries-page .dict-type-table-wrap .ant-table-wrapper,
+.dictionaries-page .dict-item-table-wrap .ant-table-wrapper {
+ display: flex;
+ flex-direction: column;
+}
+
+.dictionaries-page .dict-type-table-wrap .ant-spin-nested-loading,
+.dictionaries-page .dict-item-table-wrap .ant-spin-nested-loading {
+ flex: 1 1 0;
+ height: auto;
+ min-height: 0;
+ overflow: hidden;
+}
+
+.dictionaries-page .dict-type-table-wrap .ant-spin-container,
+.dictionaries-page .dict-type-table-wrap .ant-table,
+.dictionaries-page .dict-type-table-wrap .ant-table-container,
+.dictionaries-page .dict-item-table-wrap .ant-spin-container,
+.dictionaries-page .dict-item-table-wrap .ant-table,
+.dictionaries-page .dict-item-table-wrap .ant-table-container {
+ display: flex;
+ flex-direction: column;
+}
+
+.dictionaries-page .dict-type-table-wrap .ant-table-body,
+.dictionaries-page .dict-item-table-wrap .ant-table-body {
+ flex: 1 1 auto;
+ min-height: 0;
+ overflow-y: auto !important;
+}
+
+.dictionaries-page .dict-type-pagination {
+ flex-shrink: 0;
+ justify-content: center;
+ padding: 10px 4px 0;
+ column-gap: 6px;
+ row-gap: 8px;
+ margin-top: 0 !important;
+}
+
+.dictionaries-page .dict-type-pagination .ant-pagination-simple-pager {
+ margin-inline-end: 0;
+ display: inline-flex;
+ align-items: center;
+ gap: 10px;
+}
+
+.dictionaries-page .dict-type-pagination .ant-pagination-simple-pager input {
+ margin-inline-end: 0;
+ font-size: 14px;
+}
+
+.dictionaries-page .dict-type-pagination .ant-pagination-simple-pager .ant-pagination-slash {
+ display: none;
+}
+
+.dictionaries-page .dict-type-pagination .ant-pagination-total-text {
+ margin-right: 0;
+}
+
+.dictionaries-page .dict-type-pagination .ant-pagination-options {
+ margin-inline-start: 0;
+}
+
.tabular-nums {
font-variant-numeric: tabular-nums;
}
@@ -99,9 +203,3 @@
.h-full {
height: 100%;
}
-.ant-table-wrapper .ant-spin-container {
- height: calc(100vh - 410px);
- display: flex;
- flex-direction: column;
- min-height: 0;
-}
diff --git a/frontend/src/pages/system/dictionaries/index.tsx b/frontend/src/pages/system/dictionaries/index.tsx
index 7278639..a67f796 100644
--- a/frontend/src/pages/system/dictionaries/index.tsx
+++ b/frontend/src/pages/system/dictionaries/index.tsx
@@ -193,7 +193,7 @@ export default function Dictionaries() {
-
+
setTypeParams({ ...typeParams, current: page, size })),
simple: true,
size: "small",
- position: ["bottomCenter"]
+ showQuickJumper: false,
+ position: ["bottomCenter"],
+ className: "app-global-pagination dict-type-pagination"
}}
size="small"
showHeader={false}
- scroll={{ y: "calc(100vh - 480px)" }}
+ scroll={{ y: "100%" }}
onRow={(record) => ({ onClick: () => setSelectedType(record), className: `cursor-pointer dict-type-row ${selectedType?.dictTypeId === record.dictTypeId ? "dict-type-row-selected" : ""}` })}
columns={[
{
@@ -232,7 +234,7 @@ export default function Dictionaries() {
{t("dicts.dictItem")}{selectedType ? ` - ${selectedType.typeName}` : ""}} className="app-page__panel-card flex-1 flex flex-col overflow-hidden" styles={{ body: { padding: 0, flex: 1, display: "flex", flexDirection: "column", overflow: "hidden" } }} extra={can("sys_dict:item:create") && } onClick={handleAddItem} disabled={!selectedType}>{t("common.create")}}>
{selectedType ? (
-
+
{
const mergedClassName = ['app-global-pagination', overrides.className].filter(Boolean).join(' ');
+ const mergedShowSizeChanger =
+ overrides.showSizeChanger === undefined || overrides.showSizeChanger === true
+ ? { showSearch: false }
+ : overrides.showSizeChanger;
return {
total,
current,
pageSize,
onChange,
- showSizeChanger: true,
showQuickJumper: true,
showTotal: (totalCount) => i18n.t('common.total', { total: totalCount }),
pageSizeOptions: ['10', '20', '50', '100'],
size: 'default',
position: ['bottomRight'],
...overrides,
+ showSizeChanger: mergedShowSizeChanger,
className: mergedClassName
};
};