@hzab/list-render 1.10.17 → 1.10.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +5 -4
- package/package.json +1 -1
- package/src/list-render.jsx +14 -3
- package/src/pagination-render/index.jsx +53 -51
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -255,9 +255,11 @@ const Slots = {
|
|
|
255
255
|
|
|
256
256
|
- 默认参数参考 antd pagination 组件
|
|
257
257
|
|
|
258
|
-
| 属性名称 | 属性类型 | 必须 | 默认值 | 描述
|
|
259
|
-
| --------------- | -------- | ---- | ----------------- |
|
|
260
|
-
| pageSizeOptions | Array | 否 | [10, 20, 50, 100] | 可选 pageSize 数组
|
|
258
|
+
| 属性名称 | 属性类型 | 必须 | 默认值 | 描述 |
|
|
259
|
+
| --------------- | -------- | ---- | ----------------- | ------------------------------------------- |
|
|
260
|
+
| pageSizeOptions | Array | 否 | [10, 20, 50, 100] | 可选 pageSize 数组 |
|
|
261
|
+
| isAllSelect | boolean | 否 | false | 是否使用全部 |
|
|
262
|
+
| isAllSelectKey | string | 否 | "isAllSelect" | 选中全部时告知后端的字段名称,实际值为 true |
|
|
261
263
|
|
|
262
264
|
#### getFieldListOpt
|
|
263
265
|
|
|
@@ -566,7 +568,6 @@ async function test() {
|
|
|
566
568
|
## 命令
|
|
567
569
|
|
|
568
570
|
- Mac 执行该命令,设置 pre-commit 为可执行文件
|
|
569
|
-
|
|
570
571
|
- npm run mac-chmod
|
|
571
572
|
- chmod +x .husky && chmod +x .husky/pre-commit
|
|
572
573
|
|
package/package.json
CHANGED
package/src/list-render.jsx
CHANGED
|
@@ -5,7 +5,7 @@ model 不要定义在组件外部,避免出现 query 异常的情况。
|
|
|
5
5
|
import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
6
6
|
import { Button, message } from "antd";
|
|
7
7
|
import _, { cloneDeep } from "lodash";
|
|
8
|
-
import
|
|
8
|
+
import axiosI, { isCancel, getCancelTokenSource } from "@hzab/data-model/src/axios";
|
|
9
9
|
|
|
10
10
|
import QueryRender from "./query-render";
|
|
11
11
|
import Pagination from "./pagination-render";
|
|
@@ -61,6 +61,8 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
61
61
|
* */
|
|
62
62
|
appendUrlQueryKey = URL_PARAM_NAME,
|
|
63
63
|
} = props;
|
|
64
|
+
const { isAllSelect = false, isAllSelectKey = "isAllSelect" } = props.paginationConf || {};
|
|
65
|
+
|
|
64
66
|
const pageSizeOptions = props.paginationConf?.pageSizeOptions || pageSizeOptionMap[props.layout] || [10, 20, 50, 100];
|
|
65
67
|
// const [pageSizeOptions, setPageSizeOptions] = useState(
|
|
66
68
|
// props.paginationConf?.pageSizeOptions || pageSizeOptionMap[props.layout] || [10, 20, 50, 100],
|
|
@@ -179,9 +181,16 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
179
181
|
// 重新获取 source
|
|
180
182
|
getListSourceRef.current = getCancelTokenSource();
|
|
181
183
|
|
|
184
|
+
//处理分页特殊情况 - 全部
|
|
185
|
+
const getListSource = cloneDeep(mergedQueries);
|
|
186
|
+
if (isAllSelect && getListSource.pageSize === Infinity) {
|
|
187
|
+
getListSource[isAllSelectKey] = true;
|
|
188
|
+
getListSource.pageSize = undefined;
|
|
189
|
+
}
|
|
190
|
+
|
|
182
191
|
return model
|
|
183
192
|
?.getList(
|
|
184
|
-
|
|
193
|
+
getListSource,
|
|
185
194
|
{},
|
|
186
195
|
{
|
|
187
196
|
cancelToken: getListSourceRef.current?.token,
|
|
@@ -195,7 +204,9 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
195
204
|
setListLoading(false);
|
|
196
205
|
})
|
|
197
206
|
.catch((err) => {
|
|
198
|
-
|
|
207
|
+
// 兼容新老版本 data-model isCancel 取法
|
|
208
|
+
const _isCancel = isCancel || axiosI.isCancel;
|
|
209
|
+
if (typeof _isCancel === "function" && _isCancel(err)) {
|
|
199
210
|
console.info(`请求已取消:`, "", err.message);
|
|
200
211
|
return Promise.reject(err);
|
|
201
212
|
}
|
|
@@ -1,51 +1,53 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
import { Pagination } from "antd";
|
|
3
|
-
|
|
4
|
-
import "./index.less";
|
|
5
|
-
|
|
6
|
-
function PaginationRender(props) {
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { Pagination } from "antd";
|
|
3
|
+
|
|
4
|
+
import "./index.less";
|
|
5
|
+
|
|
6
|
+
function PaginationRender(props) {
|
|
7
|
+
const { config } = props;
|
|
8
|
+
const { isAllSelect = false } = config || {};
|
|
9
|
+
const [pageSize, setPageSize] = useState(props.query?.pageSize || props.pageSizeOptions[0]);
|
|
10
|
+
const [pageNum, setPageNumber] = useState(props.query?.pageNum || 1);
|
|
11
|
+
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const { query } = props;
|
|
14
|
+
if (!query) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (query.pageSize && query.pageSize !== pageSize) {
|
|
18
|
+
setPageSize(query.pageSize);
|
|
19
|
+
}
|
|
20
|
+
if (query.pageNum && query.pageNum !== pageNum) {
|
|
21
|
+
setPageNumber(query.pageNum);
|
|
22
|
+
}
|
|
23
|
+
}, [props.query?.pageNum, props.query?.pageSize]);
|
|
24
|
+
|
|
25
|
+
function onChange(page, size) {
|
|
26
|
+
let _size = size;
|
|
27
|
+
let _page = page;
|
|
28
|
+
if (pageSize !== size) {
|
|
29
|
+
_page = 1;
|
|
30
|
+
}
|
|
31
|
+
setPageSize(_size);
|
|
32
|
+
setPageNumber(_page);
|
|
33
|
+
props.onChange && props.onChange(_page, _size);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<div className="pagination-render-wrap">
|
|
38
|
+
<Pagination
|
|
39
|
+
{...(props.config || {})}
|
|
40
|
+
className={`pagination-render ${isAllSelect ? "pagination-infinity" : null} ${pageSize == Infinity ? "pagination-infinity-checked" : ""}`}
|
|
41
|
+
current={pageNum}
|
|
42
|
+
pageSize={pageSize}
|
|
43
|
+
onChange={onChange}
|
|
44
|
+
pageSizeOptions={isAllSelect ? [...props.pageSizeOptions, Infinity] : props.pageSizeOptions}
|
|
45
|
+
total={props.total}
|
|
46
|
+
showTotal={(total) => `总条数 ${total} 条`}
|
|
47
|
+
showSizeChanger
|
|
48
|
+
/>
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export default PaginationRender;
|