@zat-design/sisyphus-react 3.13.18-beta.9 → 3.13.19-beta.1
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/babel.config.js +11 -1
- package/dist/index.esm.css +6 -0
- package/dist/less.esm.css +6 -0
- package/es/ProConfigProvider/index.js +10 -1
- package/es/ProEditTable/components/RenderField/ListChangedWrapper.js +0 -1
- package/es/ProEnum/hooks/useEnumRequest.js +2 -2
- package/es/ProEnum/hooks/useFrequentEnumRequest.d.ts +14 -0
- package/es/ProEnum/hooks/useFrequentEnumRequest.js +78 -0
- package/es/ProEnum/index.js +21 -12
- package/es/ProEnum/propsType.d.ts +29 -0
- package/es/ProEnum/utils/frequentEnum.d.ts +40 -0
- package/es/ProEnum/utils/frequentEnum.js +79 -0
- package/es/ProForm/components/combination/Group/hooks/index.js +2 -7
- package/es/ProForm/components/combination/ProNumberRange/style/index.less +5 -0
- package/es/ProTree/components/ProTreeSelect/index.js +0 -1
- package/jest.config.js +46 -4
- package/lib/ProConfigProvider/index.js +10 -1
- package/lib/ProEditTable/components/RenderField/ListChangedWrapper.js +0 -1
- package/lib/ProEnum/hooks/useEnumRequest.js +2 -2
- package/lib/ProEnum/hooks/useFrequentEnumRequest.d.ts +14 -0
- package/lib/ProEnum/hooks/useFrequentEnumRequest.js +85 -0
- package/lib/ProEnum/index.js +20 -11
- package/lib/ProEnum/propsType.d.ts +29 -0
- package/lib/ProEnum/utils/frequentEnum.d.ts +40 -0
- package/lib/ProEnum/utils/frequentEnum.js +88 -0
- package/lib/ProForm/components/combination/Group/hooks/index.js +2 -7
- package/lib/ProForm/components/combination/ProNumberRange/style/index.less +5 -0
- package/lib/ProTree/components/ProTreeSelect/index.js +0 -1
- package/package.json +2 -2
package/babel.config.js
CHANGED
@@ -1,3 +1,13 @@
|
|
1
1
|
module.exports = {
|
2
|
-
presets: [
|
2
|
+
presets: [
|
3
|
+
['@babel/preset-env', { loose: true }],
|
4
|
+
['@babel/preset-react', { runtime: 'automatic' }],
|
5
|
+
'@babel/preset-typescript'
|
6
|
+
],
|
7
|
+
plugins: [
|
8
|
+
['@babel/plugin-proposal-decorators', { legacy: true }],
|
9
|
+
['@babel/plugin-proposal-class-properties', { loose: true }],
|
10
|
+
['@babel/plugin-transform-private-methods', { loose: true }],
|
11
|
+
['@babel/plugin-transform-private-property-in-object', { loose: true }],
|
12
|
+
]
|
3
13
|
};
|
package/dist/index.esm.css
CHANGED
@@ -2613,6 +2613,12 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
2613
2613
|
width: 55%;
|
2614
2614
|
margin-left: 2px;
|
2615
2615
|
}
|
2616
|
+
.pro-number-range {
|
2617
|
+
display: block;
|
2618
|
+
}
|
2619
|
+
.pro-number-range .ant-space-compact {
|
2620
|
+
display: block;
|
2621
|
+
}
|
2616
2622
|
.pro-number-range .range-split {
|
2617
2623
|
width: 32px !important;
|
2618
2624
|
text-align: center !important;
|
package/dist/less.esm.css
CHANGED
@@ -2613,6 +2613,12 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
2613
2613
|
width: 55%;
|
2614
2614
|
margin-left: 2px;
|
2615
2615
|
}
|
2616
|
+
.pro-number-range {
|
2617
|
+
display: block;
|
2618
|
+
}
|
2619
|
+
.pro-number-range .ant-space-compact {
|
2620
|
+
display: block;
|
2621
|
+
}
|
2616
2622
|
.pro-number-range .range-split {
|
2617
2623
|
width: 32px !important;
|
2618
2624
|
text-align: center !important;
|
@@ -9,6 +9,7 @@ import enUS from 'antd/es/locale/en_US';
|
|
9
9
|
import 'moment/locale/zh-cn';
|
10
10
|
import merge from 'lodash/merge';
|
11
11
|
import useEnumRequest from '../ProEnum/hooks/useEnumRequest';
|
12
|
+
import useFrequentEnumRequest from '../ProEnum/hooks/useFrequentEnumRequest';
|
12
13
|
import { setLanguage } from '../locale';
|
13
14
|
var initialState = {
|
14
15
|
ProEnum: {
|
@@ -66,12 +67,14 @@ var reducer = function reducer(state, action) {
|
|
66
67
|
}
|
67
68
|
};
|
68
69
|
export var ProConfigProvider = function ProConfigProvider(props) {
|
69
|
-
var _props$value, _props$value2;
|
70
|
+
var _props$value, _props$value2, _props$value3, _props$value4;
|
70
71
|
var _useReducer = useReducer(reducer, initialState),
|
71
72
|
_useReducer2 = _slicedToArray(_useReducer, 2),
|
72
73
|
state = _useReducer2[0],
|
73
74
|
dispatch = _useReducer2[1];
|
74
75
|
var enumRes = useEnumRequest(_objectSpread(_objectSpread(_objectSpread({}, state.ProEnum), props === null || props === void 0 ? void 0 : (_props$value = props.value) === null || _props$value === void 0 ? void 0 : _props$value.ProEnum), props === null || props === void 0 ? void 0 : (_props$value2 = props.value) === null || _props$value2 === void 0 ? void 0 : _props$value2.globalConfig), dispatch);
|
76
|
+
// 处理频繁枚举请求
|
77
|
+
var frequentEnumRes = useFrequentEnumRequest(_objectSpread(_objectSpread(_objectSpread({}, state.ProEnum), props === null || props === void 0 ? void 0 : (_props$value3 = props.value) === null || _props$value3 === void 0 ? void 0 : _props$value3.ProEnum), props === null || props === void 0 ? void 0 : (_props$value4 = props.value) === null || _props$value4 === void 0 ? void 0 : _props$value4.globalConfig), dispatch);
|
75
78
|
useEffect(function () {
|
76
79
|
// 本地配置取出
|
77
80
|
var localConfigStr = localStorage.getItem('localConfig');
|
@@ -92,6 +95,12 @@ export var ProConfigProvider = function ProConfigProvider(props) {
|
|
92
95
|
(props === null || props === void 0 ? void 0 : props.onSuccess) && (props === null || props === void 0 ? void 0 : props.onSuccess(enumRes === null || enumRes === void 0 ? void 0 : enumRes.data, enumRes === null || enumRes === void 0 ? void 0 : enumRes.params));
|
93
96
|
}
|
94
97
|
}, [enumRes === null || enumRes === void 0 ? void 0 : enumRes.loading]);
|
98
|
+
// 处理频繁枚举的成功回调
|
99
|
+
useEffect(function () {
|
100
|
+
if (frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.data) {
|
101
|
+
(props === null || props === void 0 ? void 0 : props.onSuccess) && (props === null || props === void 0 ? void 0 : props.onSuccess(frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.data, frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.params));
|
102
|
+
}
|
103
|
+
}, [frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.loading]);
|
95
104
|
return _jsx(ProConfigContext.Provider, {
|
96
105
|
value: {
|
97
106
|
state: merge(state, props.value),
|
@@ -94,7 +94,7 @@ var useEnumRequest = function useEnumRequest(props, dispatch) {
|
|
94
94
|
if (!response[key] || !Array.isArray(response[key])) {
|
95
95
|
return;
|
96
96
|
}
|
97
|
-
var options = _toConsumableArray(response[key])
|
97
|
+
var options = _toConsumableArray(response[key]);
|
98
98
|
if (ignoreCodes.includes(key)) {
|
99
99
|
response[key] = options;
|
100
100
|
} else {
|
@@ -215,7 +215,7 @@ var useEnumRequest = function useEnumRequest(props, dispatch) {
|
|
215
215
|
// 只返回fieldNames对象的key
|
216
216
|
if (clear) {
|
217
217
|
Object.keys(response).forEach(function (key) {
|
218
|
-
var options = _toConsumableArray(response[key])
|
218
|
+
var options = _toConsumableArray(response[key]);
|
219
219
|
if (ignoreCodes.includes(key)) {
|
220
220
|
response[key] = options;
|
221
221
|
} else {
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { FrequentEnumConfig } from '../propsType';
|
2
|
+
type StorageType = 'localStorage' | 'sessionStorage';
|
3
|
+
interface UseFrequentEnumRequestProps {
|
4
|
+
frequentEnums?: FrequentEnumConfig;
|
5
|
+
fieldNames: any;
|
6
|
+
clear: boolean;
|
7
|
+
storage: StorageType;
|
8
|
+
cacheKey: string;
|
9
|
+
dispatch: any;
|
10
|
+
dics: any;
|
11
|
+
dataSource: any;
|
12
|
+
}
|
13
|
+
declare const useFrequentEnumRequest: (props: UseFrequentEnumRequestProps, dispatch: any) => import("ahooks/lib/useRequest/src/types").Result<any, any>;
|
14
|
+
export default useFrequentEnumRequest;
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
4
|
+
import { useDeepCompareEffect, useRequest as useRequestFunc } from 'ahooks';
|
5
|
+
import { replaceFrequentEnumCache } from '../utils/frequentEnum';
|
6
|
+
var useFrequentEnumRequest = function useFrequentEnumRequest(props, dispatch) {
|
7
|
+
var frequentEnums = props.frequentEnums,
|
8
|
+
fieldNames = props.fieldNames,
|
9
|
+
_props$clear = props.clear,
|
10
|
+
clear = _props$clear === void 0 ? true : _props$clear,
|
11
|
+
_props$storage = props.storage,
|
12
|
+
storage = _props$storage === void 0 ? 'localStorage' : _props$storage,
|
13
|
+
_props$cacheKey = props.cacheKey,
|
14
|
+
cacheKey = _props$cacheKey === void 0 ? 'zat-design-pro-component-cacheKey' : _props$cacheKey,
|
15
|
+
dics = props.dics,
|
16
|
+
dataSource = props.dataSource;
|
17
|
+
var frequentEnumRes = useRequestFunc((frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.service) || function () {
|
18
|
+
return Promise.resolve({
|
19
|
+
data: {}
|
20
|
+
});
|
21
|
+
}, _objectSpread(_objectSpread({
|
22
|
+
manual: true,
|
23
|
+
cacheTime: 0,
|
24
|
+
staleTime: 0
|
25
|
+
}, frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.options), {}, {
|
26
|
+
onSuccess: function () {
|
27
|
+
var _onSuccess = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(res) {
|
28
|
+
var _response;
|
29
|
+
var response, enumData, updatedCacheData;
|
30
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
31
|
+
while (1) switch (_context.prev = _context.next) {
|
32
|
+
case 0:
|
33
|
+
response = res; // 使用frequentEnums的独立transformResponse处理
|
34
|
+
if ((frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.transformResponse) && typeof frequentEnums.transformResponse === 'function') {
|
35
|
+
response = frequentEnums.transformResponse(res);
|
36
|
+
}
|
37
|
+
// 确保response.data存在,如果不存在则使用response本身
|
38
|
+
enumData = ((_response = response) === null || _response === void 0 ? void 0 : _response.data) || response; // 替换缓存中的指定枚举
|
39
|
+
updatedCacheData = replaceFrequentEnumCache({
|
40
|
+
storage: storage,
|
41
|
+
cacheKey: cacheKey,
|
42
|
+
enums: (frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.enums) || [],
|
43
|
+
newData: enumData,
|
44
|
+
fieldNames: fieldNames,
|
45
|
+
clear: clear
|
46
|
+
}); // 同步数据到全局状态
|
47
|
+
dispatch({
|
48
|
+
type: 'setProEnumDic',
|
49
|
+
payload: _objectSpread(_objectSpread(_objectSpread({}, dics), dataSource), updatedCacheData.data)
|
50
|
+
});
|
51
|
+
case 5:
|
52
|
+
case "end":
|
53
|
+
return _context.stop();
|
54
|
+
}
|
55
|
+
}, _callee);
|
56
|
+
}));
|
57
|
+
function onSuccess(_x) {
|
58
|
+
return _onSuccess.apply(this, arguments);
|
59
|
+
}
|
60
|
+
return onSuccess;
|
61
|
+
}(),
|
62
|
+
onError: function onError(error) {
|
63
|
+
console.warn('ProEnum: Frequent enum request failed:', error);
|
64
|
+
}
|
65
|
+
}));
|
66
|
+
// 处理频繁枚举请求
|
67
|
+
useDeepCompareEffect(function () {
|
68
|
+
var _frequentEnums$enums;
|
69
|
+
if (frequentEnums && (frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.service) && (frequentEnums === null || frequentEnums === void 0 ? void 0 : (_frequentEnums$enums = frequentEnums.enums) === null || _frequentEnums$enums === void 0 ? void 0 : _frequentEnums$enums.length)) {
|
70
|
+
var _ref = (frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.options) || {},
|
71
|
+
defaultParams = _ref.defaultParams;
|
72
|
+
var params = Array.isArray(defaultParams) ? defaultParams === null || defaultParams === void 0 ? void 0 : defaultParams[0] : defaultParams || {};
|
73
|
+
frequentEnumRes.run(params);
|
74
|
+
}
|
75
|
+
}, [frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.options]);
|
76
|
+
return frequentEnumRes;
|
77
|
+
};
|
78
|
+
export default useFrequentEnumRequest;
|
package/es/ProEnum/index.js
CHANGED
@@ -18,7 +18,7 @@ import _isString from "lodash/isString";
|
|
18
18
|
import _isFunction from "lodash/isFunction";
|
19
19
|
import _cloneDeep from "lodash/cloneDeep";
|
20
20
|
var _excluded = ["code", "type", "dataSource", "useRequest", "value", "component", "onChange", "transformResponse", "otherProps", "isView"],
|
21
|
-
_excluded2 = ["fieldNames", "clear", "cacheKey", "showCodeName"];
|
21
|
+
_excluded2 = ["fieldNames", "clear", "storage", "cacheKey", "showCodeName", "useRequest", "transformResponse"];
|
22
22
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
23
23
|
import { useDeepCompareEffect, useRequest as useRequestFunc } from 'ahooks';
|
24
24
|
import React, { useState, useEffect, useMemo } from 'react';
|
@@ -27,7 +27,7 @@ import { useProConfig } from '../ProConfigProvider';
|
|
27
27
|
import ProEnumTag from './components/Tag';
|
28
28
|
import ProEnumGroup from './components/Group';
|
29
29
|
import Container from '../ProForm/components/Container';
|
30
|
-
import { isObject } from './utils';
|
30
|
+
import { isObject, getEnumData } from './utils';
|
31
31
|
import getEnumLabel from './utils/getEnumLabel';
|
32
32
|
import useEnum from './hooks/useEnum';
|
33
33
|
import locale from '../locale';
|
@@ -56,10 +56,18 @@ var ProEnum = function ProEnum(props) {
|
|
56
56
|
fieldNames = _ref2.fieldNames,
|
57
57
|
_ref2$clear = _ref2.clear,
|
58
58
|
clear = _ref2$clear === void 0 ? true : _ref2$clear,
|
59
|
+
_ref2$storage = _ref2.storage,
|
60
|
+
storage = _ref2$storage === void 0 ? 'localStorage' : _ref2$storage,
|
59
61
|
_ref2$cacheKey = _ref2.cacheKey,
|
60
62
|
cacheKey = _ref2$cacheKey === void 0 ? 'zat-design-pro-component-cacheKey' : _ref2$cacheKey,
|
61
63
|
showCodeName = _ref2.showCodeName,
|
64
|
+
configUseRequest = _ref2.useRequest,
|
65
|
+
configTransformResponse = _ref2.transformResponse,
|
62
66
|
resProps = _objectWithoutProperties(_ref2, _excluded2);
|
67
|
+
// 优先使用props中的配置,如果没有则使用全局配置
|
68
|
+
var finalUseRequest = useRequest || configUseRequest;
|
69
|
+
var finalTransformResponse = transformResponse || configTransformResponse;
|
70
|
+
var cacheData = getEnumData(storage, cacheKey);
|
63
71
|
var _isView = isView !== undefined && isView !== null ? isView : (_otherProps$isView = otherProps === null || otherProps === void 0 ? void 0 : otherProps.isView) !== null && _otherProps$isView !== void 0 ? _otherProps$isView : configIsView;
|
64
72
|
enumProps.showCodeName = (_enumProps$showCodeNa = enumProps.showCodeName) !== null && _enumProps$showCodeNa !== void 0 ? _enumProps$showCodeNa : showCodeName;
|
65
73
|
var label = 'label';
|
@@ -85,7 +93,7 @@ var ProEnum = function ProEnum(props) {
|
|
85
93
|
fieldValue = 'value';
|
86
94
|
}
|
87
95
|
// 这种时候优先级最高、完全走自定义
|
88
|
-
if ((
|
96
|
+
if ((finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service) && props.fieldNames) {
|
89
97
|
var _props$fieldNames5, _props$fieldNames6;
|
90
98
|
if ((_props$fieldNames5 = props.fieldNames) === null || _props$fieldNames5 === void 0 ? void 0 : _props$fieldNames5.label) label = props.fieldNames.label;
|
91
99
|
if ((_props$fieldNames6 = props.fieldNames) === null || _props$fieldNames6 === void 0 ? void 0 : _props$fieldNames6.value) fieldValue = props.fieldNames.value;
|
@@ -93,13 +101,13 @@ var ProEnum = function ProEnum(props) {
|
|
93
101
|
var _useProConfig = useProConfig('ProEnum'),
|
94
102
|
_useProConfig$dics = _useProConfig.dics,
|
95
103
|
dics = _useProConfig$dics === void 0 ? {} : _useProConfig$dics;
|
96
|
-
var _useRequestFunc = useRequestFunc(
|
104
|
+
var _useRequestFunc = useRequestFunc(finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service, _objectSpread(_objectSpread({
|
97
105
|
manual: true,
|
98
106
|
cacheTime: -1
|
99
|
-
},
|
107
|
+
}, finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options), {}, {
|
100
108
|
onSuccess: function onSuccess(res) {
|
101
|
-
if (
|
102
|
-
var responseData =
|
109
|
+
if (finalTransformResponse && typeof finalTransformResponse === 'function') {
|
110
|
+
var responseData = finalTransformResponse(res);
|
103
111
|
if (_typeof(responseData) !== 'object') {
|
104
112
|
var _locale$ProEnum;
|
105
113
|
return _message.error((_locale$ProEnum = locale.ProEnum) === null || _locale$ProEnum === void 0 ? void 0 : _locale$ProEnum.errorMessage);
|
@@ -130,13 +138,14 @@ var ProEnum = function ProEnum(props) {
|
|
130
138
|
run = _useRequestFunc.run;
|
131
139
|
// 自定义请求
|
132
140
|
useDeepCompareEffect(function () {
|
133
|
-
var _ref3 = (
|
141
|
+
var _ref3 = (finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options) || {},
|
134
142
|
defaultParams = _ref3.defaultParams;
|
135
143
|
var params = Array.isArray(defaultParams) ? defaultParams === null || defaultParams === void 0 ? void 0 : defaultParams[0] : defaultParams || {};
|
136
|
-
|
144
|
+
// 如果缓存数据存在,则不请求
|
145
|
+
if ((finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service) && (!Object.keys(cacheData).length || (cacheData === null || cacheData === void 0 ? void 0 : cacheData.data) && !Object.keys(cacheData === null || cacheData === void 0 ? void 0 : cacheData.data).length)) {
|
137
146
|
run(params);
|
138
147
|
}
|
139
|
-
}, [
|
148
|
+
}, [finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options]);
|
140
149
|
var enumLists = useMemo(function () {
|
141
150
|
var lists = [];
|
142
151
|
if (_isString(code)) {
|
@@ -155,8 +164,8 @@ var ProEnum = function ProEnum(props) {
|
|
155
164
|
// 优先使用组件内部自己传入的数据源或者请求得到的数据
|
156
165
|
list = _cloneDeep(dataList && dataList.length ? dataList : enumLists);
|
157
166
|
// 对数据进行一系列的过滤等操作
|
158
|
-
if (!(
|
159
|
-
list =
|
167
|
+
if (!(finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service) && finalTransformResponse) {
|
168
|
+
list = finalTransformResponse(list);
|
160
169
|
if (!Array.isArray(list)) {
|
161
170
|
var _locale$ProEnum3;
|
162
171
|
console.error((_locale$ProEnum3 = locale.ProEnum) === null || _locale$ProEnum3 === void 0 ? void 0 : _locale$ProEnum3.errorArrayMessage);
|
@@ -27,6 +27,30 @@ export interface DataOptionType {
|
|
27
27
|
*/
|
28
28
|
[key: string]: any;
|
29
29
|
}
|
30
|
+
/**
|
31
|
+
* @description 频繁变动的枚举配置
|
32
|
+
*/
|
33
|
+
export interface FrequentEnumConfig {
|
34
|
+
/**
|
35
|
+
* @description 需要替换的缓存枚举code列表
|
36
|
+
*/
|
37
|
+
enums: string[];
|
38
|
+
/**
|
39
|
+
* @description 请求服务函数
|
40
|
+
*/
|
41
|
+
service: Service<any, any>;
|
42
|
+
/**
|
43
|
+
* @description 请求选项配置
|
44
|
+
*/
|
45
|
+
options?: Options<any, any>;
|
46
|
+
/**
|
47
|
+
* @description 对频繁枚举返回数据进行格式化(独立于全局transformResponse)
|
48
|
+
* @param data 后台返回的数据
|
49
|
+
* @returns 格式化后的枚举数据
|
50
|
+
* @default -
|
51
|
+
*/
|
52
|
+
transformResponse?: (data: any) => Record<string, DataOptionType[]> | Promise<Record<string, DataOptionType[]>>;
|
53
|
+
}
|
30
54
|
/**
|
31
55
|
* @description ProEnum配置类型
|
32
56
|
*/
|
@@ -108,6 +132,11 @@ export interface ProEnumConfigType {
|
|
108
132
|
ignoreCodes?: string[];
|
109
133
|
};
|
110
134
|
};
|
135
|
+
/**
|
136
|
+
* @description 频繁变动的枚举配置
|
137
|
+
* @default -
|
138
|
+
*/
|
139
|
+
frequentEnums?: FrequentEnumConfig;
|
111
140
|
/**
|
112
141
|
* @description 字典数据
|
113
142
|
* @default {}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import type { FrequentEnumConfig } from '../propsType';
|
2
|
+
type StorageType = 'localStorage' | 'sessionStorage';
|
3
|
+
/**
|
4
|
+
* 替换频繁枚举缓存数据的参数接口
|
5
|
+
*/
|
6
|
+
export interface ReplaceFrequentEnumCacheParams {
|
7
|
+
/** 存储类型 */
|
8
|
+
storage: StorageType;
|
9
|
+
/** 缓存key */
|
10
|
+
cacheKey: string;
|
11
|
+
/** 需要替换的枚举code列表 */
|
12
|
+
enums: string[];
|
13
|
+
/** 新的枚举数据 */
|
14
|
+
newData: any;
|
15
|
+
/** 字段映射 */
|
16
|
+
fieldNames: any;
|
17
|
+
/** 是否清洗数据 */
|
18
|
+
clear: boolean;
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* 替换频繁枚举缓存数据
|
22
|
+
* @param params 参数对象
|
23
|
+
* @returns 更新后的缓存数据
|
24
|
+
*/
|
25
|
+
export declare function replaceFrequentEnumCache(params: ReplaceFrequentEnumCacheParams): any;
|
26
|
+
/**
|
27
|
+
* 验证频繁枚举配置
|
28
|
+
* @param config 频繁枚举配置
|
29
|
+
* @returns 是否有效
|
30
|
+
*/
|
31
|
+
export declare function validateFrequentEnumConfig(config: FrequentEnumConfig): boolean;
|
32
|
+
/**
|
33
|
+
* 合并频繁枚举数据到全局状态
|
34
|
+
* @param cacheData 缓存数据
|
35
|
+
* @param dics 现有字典数据
|
36
|
+
* @param dataSource 数据源
|
37
|
+
* @returns 合并后的数据
|
38
|
+
*/
|
39
|
+
export declare function mergeFrequentEnumData(cacheData: any, dics: any, dataSource: any): any;
|
40
|
+
export {};
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
2
|
+
import { getEnumData, setEnumData, cacheFieldNames } from './index';
|
3
|
+
/**
|
4
|
+
* 替换频繁枚举缓存数据
|
5
|
+
* @param params 参数对象
|
6
|
+
* @returns 更新后的缓存数据
|
7
|
+
*/
|
8
|
+
export function replaceFrequentEnumCache(params) {
|
9
|
+
var _params$storage = params.storage,
|
10
|
+
storage = _params$storage === void 0 ? 'localStorage' : _params$storage,
|
11
|
+
_params$cacheKey = params.cacheKey,
|
12
|
+
cacheKey = _params$cacheKey === void 0 ? 'zat-design-pro-component-cacheKey' : _params$cacheKey,
|
13
|
+
_params$enums = params.enums,
|
14
|
+
enums = _params$enums === void 0 ? [] : _params$enums,
|
15
|
+
_params$newData = params.newData,
|
16
|
+
newData = _params$newData === void 0 ? {} : _params$newData,
|
17
|
+
_params$fieldNames = params.fieldNames,
|
18
|
+
fieldNames = _params$fieldNames === void 0 ? {
|
19
|
+
label: 'label',
|
20
|
+
value: 'value',
|
21
|
+
children: 'children'
|
22
|
+
} : _params$fieldNames,
|
23
|
+
_params$clear = params.clear,
|
24
|
+
clear = _params$clear === void 0 ? true : _params$clear;
|
25
|
+
// 参数验证
|
26
|
+
if (!storage || !cacheKey) {
|
27
|
+
console.warn('ProEnum: storage and cacheKey are required for replaceFrequentEnumCache');
|
28
|
+
return {
|
29
|
+
data: {}
|
30
|
+
};
|
31
|
+
}
|
32
|
+
if (!enums.length) {
|
33
|
+
console.warn('ProEnum: enums array is empty, no data to replace');
|
34
|
+
return {
|
35
|
+
data: {}
|
36
|
+
};
|
37
|
+
}
|
38
|
+
var cacheData = getEnumData(storage, cacheKey) || {
|
39
|
+
data: {}
|
40
|
+
};
|
41
|
+
// 确保cacheData.data存在
|
42
|
+
if (!cacheData.data) {
|
43
|
+
cacheData.data = {};
|
44
|
+
}
|
45
|
+
// 只替换指定的枚举
|
46
|
+
enums.forEach(function (code) {
|
47
|
+
if (newData[code]) {
|
48
|
+
var processedData = newData[code];
|
49
|
+
// 应用数据清洗逻辑
|
50
|
+
if (clear && Array.isArray(processedData)) {
|
51
|
+
processedData = processedData.map(function (item) {
|
52
|
+
return cacheFieldNames(fieldNames, item);
|
53
|
+
});
|
54
|
+
}
|
55
|
+
cacheData.data[code] = processedData;
|
56
|
+
}
|
57
|
+
});
|
58
|
+
setEnumData(storage, cacheKey, cacheData);
|
59
|
+
return cacheData;
|
60
|
+
}
|
61
|
+
/**
|
62
|
+
* 验证频繁枚举配置
|
63
|
+
* @param config 频繁枚举配置
|
64
|
+
* @returns 是否有效
|
65
|
+
*/
|
66
|
+
export function validateFrequentEnumConfig(config) {
|
67
|
+
var _config$enums;
|
68
|
+
return !!((config === null || config === void 0 ? void 0 : (_config$enums = config.enums) === null || _config$enums === void 0 ? void 0 : _config$enums.length) && (config === null || config === void 0 ? void 0 : config.service));
|
69
|
+
}
|
70
|
+
/**
|
71
|
+
* 合并频繁枚举数据到全局状态
|
72
|
+
* @param cacheData 缓存数据
|
73
|
+
* @param dics 现有字典数据
|
74
|
+
* @param dataSource 数据源
|
75
|
+
* @returns 合并后的数据
|
76
|
+
*/
|
77
|
+
export function mergeFrequentEnumData(cacheData, dics, dataSource) {
|
78
|
+
return _objectSpread(_objectSpread(_objectSpread({}, dics), dataSource), cacheData.data);
|
79
|
+
}
|
@@ -165,14 +165,9 @@ export var useTransformColumns = function useTransformColumns(params) {
|
|
165
165
|
getValueProps: transform === null || transform === void 0 ? void 0 : transform.getValueProps,
|
166
166
|
fieldProps: _objectSpread(_objectSpread(_objectSpread({}, column === null || column === void 0 ? void 0 : column.fieldProps), reactiveProps === null || reactiveProps === void 0 ? void 0 : reactiveProps.fieldProps), {}, {
|
167
167
|
onChange: handleChange,
|
168
|
-
onBlur: handleBlur
|
169
|
-
}, names ? {
|
170
|
-
value: form.getFieldValue(columnName)
|
171
|
-
} // 独立字段模式
|
172
|
-
: {
|
168
|
+
onBlur: handleBlur,
|
173
169
|
value: value === null || value === void 0 ? void 0 : value[index]
|
174
|
-
}
|
175
|
-
)
|
170
|
+
})
|
176
171
|
});
|
177
172
|
});
|
178
173
|
};
|
@@ -216,7 +216,6 @@ export var ProTreeSelect = function ProTreeSelect(props, ref) {
|
|
216
216
|
if (fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.data, useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options2 = useRequest.options) === null || _useRequest$options2 === void 0 ? void 0 : _useRequest$options2.cacheKey) {
|
217
217
|
if (transformResponse && typeof transformResponse === 'function') {
|
218
218
|
var responseData = transformResponse(fetchFunction.data);
|
219
|
-
// debugger;
|
220
219
|
var resultData = transferDataSource(responseData, showCodeName);
|
221
220
|
setState({
|
222
221
|
selectList: countChild(resultData),
|
package/jest.config.js
CHANGED
@@ -1,8 +1,50 @@
|
|
1
|
-
const React = require('react');
|
2
|
-
|
3
1
|
module.exports = {
|
4
2
|
setupFiles: ['jest-canvas-mock'],
|
5
|
-
|
6
|
-
|
3
|
+
setupFilesAfterEnv: ['<rootDir>/tests/setup.ts'],
|
4
|
+
testEnvironment: 'jsdom',
|
5
|
+
testEnvironmentOptions: {
|
6
|
+
url: 'http://localhost',
|
7
7
|
},
|
8
|
+
moduleNameMapper: {
|
9
|
+
'^@/(.*)$': '<rootDir>/src/$1',
|
10
|
+
'^@zat-design/sisyphus-react$': '<rootDir>/src/index.ts',
|
11
|
+
'\\.(css|less|scss)$': 'identity-obj-proxy',
|
12
|
+
'\\.(png|jpg|jpeg|gif|svg)$': '<rootDir>/tests/__mocks__/fileMock.js',
|
13
|
+
'@zat-design/utils': '<rootDir>/tests/__mocks__/zatUtils.js',
|
14
|
+
},
|
15
|
+
collectCoverageFrom: [
|
16
|
+
'src/**/*.{ts,tsx}',
|
17
|
+
'!src/**/*.d.ts',
|
18
|
+
'!src/**/demos/**',
|
19
|
+
'!src/**/test/**',
|
20
|
+
'!src/old/**',
|
21
|
+
'!src/style/**',
|
22
|
+
'!src/**/symbolIcon.js',
|
23
|
+
'!src/index.ts',
|
24
|
+
'!src/tokens.ts',
|
25
|
+
'!src/utils/**',
|
26
|
+
'!src/locale/**',
|
27
|
+
],
|
28
|
+
testMatch: [
|
29
|
+
'<rootDir>/src/**/__tests__/**/*.{ts,tsx}',
|
30
|
+
'<rootDir>/src/**/*.(test|spec).{ts,tsx}',
|
31
|
+
],
|
32
|
+
testTimeout: 15000,
|
33
|
+
transform: {
|
34
|
+
'^.+\\.(ts|tsx)$': 'babel-jest',
|
35
|
+
'^.+\\.(js|jsx)$': 'babel-jest',
|
36
|
+
},
|
37
|
+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
|
38
|
+
transformIgnorePatterns: [
|
39
|
+
'node_modules/(?!(antd|@ant-design|@pansy|rc-.+|@babel/runtime|@zat-design)/)',
|
40
|
+
],
|
41
|
+
coverageThreshold: {
|
42
|
+
global: {
|
43
|
+
branches: 80,
|
44
|
+
functions: 80,
|
45
|
+
lines: 80,
|
46
|
+
statements: 80,
|
47
|
+
},
|
48
|
+
},
|
49
|
+
coverageReporters: ['text', 'lcov', 'html'],
|
8
50
|
};
|
@@ -18,6 +18,7 @@ var _en_US = _interopRequireDefault(require("antd/es/locale/en_US"));
|
|
18
18
|
require("moment/locale/zh-cn");
|
19
19
|
var _merge = _interopRequireDefault(require("lodash/merge"));
|
20
20
|
var _useEnumRequest = _interopRequireDefault(require("../ProEnum/hooks/useEnumRequest"));
|
21
|
+
var _useFrequentEnumRequest = _interopRequireDefault(require("../ProEnum/hooks/useFrequentEnumRequest"));
|
21
22
|
var _locale = require("../locale");
|
22
23
|
var initialState = {
|
23
24
|
ProEnum: {
|
@@ -75,12 +76,14 @@ var reducer = function reducer(state, action) {
|
|
75
76
|
}
|
76
77
|
};
|
77
78
|
var ProConfigProvider = exports.ProConfigProvider = function ProConfigProvider(props) {
|
78
|
-
var _props$value, _props$value2;
|
79
|
+
var _props$value, _props$value2, _props$value3, _props$value4;
|
79
80
|
var _useReducer = (0, _react.useReducer)(reducer, initialState),
|
80
81
|
_useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
|
81
82
|
state = _useReducer2[0],
|
82
83
|
dispatch = _useReducer2[1];
|
83
84
|
var enumRes = (0, _useEnumRequest.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, state.ProEnum), props === null || props === void 0 ? void 0 : (_props$value = props.value) === null || _props$value === void 0 ? void 0 : _props$value.ProEnum), props === null || props === void 0 ? void 0 : (_props$value2 = props.value) === null || _props$value2 === void 0 ? void 0 : _props$value2.globalConfig), dispatch);
|
85
|
+
// 处理频繁枚举请求
|
86
|
+
var frequentEnumRes = (0, _useFrequentEnumRequest.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, state.ProEnum), props === null || props === void 0 ? void 0 : (_props$value3 = props.value) === null || _props$value3 === void 0 ? void 0 : _props$value3.ProEnum), props === null || props === void 0 ? void 0 : (_props$value4 = props.value) === null || _props$value4 === void 0 ? void 0 : _props$value4.globalConfig), dispatch);
|
84
87
|
(0, _react.useEffect)(function () {
|
85
88
|
// 本地配置取出
|
86
89
|
var localConfigStr = localStorage.getItem('localConfig');
|
@@ -101,6 +104,12 @@ var ProConfigProvider = exports.ProConfigProvider = function ProConfigProvider(p
|
|
101
104
|
(props === null || props === void 0 ? void 0 : props.onSuccess) && (props === null || props === void 0 ? void 0 : props.onSuccess(enumRes === null || enumRes === void 0 ? void 0 : enumRes.data, enumRes === null || enumRes === void 0 ? void 0 : enumRes.params));
|
102
105
|
}
|
103
106
|
}, [enumRes === null || enumRes === void 0 ? void 0 : enumRes.loading]);
|
107
|
+
// 处理频繁枚举的成功回调
|
108
|
+
(0, _react.useEffect)(function () {
|
109
|
+
if (frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.data) {
|
110
|
+
(props === null || props === void 0 ? void 0 : props.onSuccess) && (props === null || props === void 0 ? void 0 : props.onSuccess(frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.data, frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.params));
|
111
|
+
}
|
112
|
+
}, [frequentEnumRes === null || frequentEnumRes === void 0 ? void 0 : frequentEnumRes.loading]);
|
104
113
|
return (0, _jsxRuntime.jsx)(ProConfigContext.Provider, {
|
105
114
|
value: {
|
106
115
|
state: (0, _merge.default)(state, props.value),
|
@@ -197,7 +197,6 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
197
197
|
'pro-form-item-add': isAdd
|
198
198
|
});
|
199
199
|
var open = tipOpenCalc();
|
200
|
-
// debugger;
|
201
200
|
return (0, _jsxRuntime.jsx)(_tooltip.default, {
|
202
201
|
open: open,
|
203
202
|
getPopupContainer: function getPopupContainer(trigger) {
|
@@ -101,7 +101,7 @@ var useEnumRequest = function useEnumRequest(props, dispatch) {
|
|
101
101
|
if (!response[key] || !Array.isArray(response[key])) {
|
102
102
|
return;
|
103
103
|
}
|
104
|
-
var options = (0, _toConsumableArray2.default)(response[key])
|
104
|
+
var options = (0, _toConsumableArray2.default)(response[key]);
|
105
105
|
if (ignoreCodes.includes(key)) {
|
106
106
|
response[key] = options;
|
107
107
|
} else {
|
@@ -222,7 +222,7 @@ var useEnumRequest = function useEnumRequest(props, dispatch) {
|
|
222
222
|
// 只返回fieldNames对象的key
|
223
223
|
if (clear) {
|
224
224
|
Object.keys(response).forEach(function (key) {
|
225
|
-
var options = (0, _toConsumableArray2.default)(response[key])
|
225
|
+
var options = (0, _toConsumableArray2.default)(response[key]);
|
226
226
|
if (ignoreCodes.includes(key)) {
|
227
227
|
response[key] = options;
|
228
228
|
} else {
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { FrequentEnumConfig } from '../propsType';
|
2
|
+
type StorageType = 'localStorage' | 'sessionStorage';
|
3
|
+
interface UseFrequentEnumRequestProps {
|
4
|
+
frequentEnums?: FrequentEnumConfig;
|
5
|
+
fieldNames: any;
|
6
|
+
clear: boolean;
|
7
|
+
storage: StorageType;
|
8
|
+
cacheKey: string;
|
9
|
+
dispatch: any;
|
10
|
+
dics: any;
|
11
|
+
dataSource: any;
|
12
|
+
}
|
13
|
+
declare const useFrequentEnumRequest: (props: UseFrequentEnumRequestProps, dispatch: any) => import("ahooks/lib/useRequest/src/types").Result<any, any>;
|
14
|
+
export default useFrequentEnumRequest;
|
@@ -0,0 +1,85 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.default = void 0;
|
8
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
11
|
+
var _ahooks = require("ahooks");
|
12
|
+
var _frequentEnum = require("../utils/frequentEnum");
|
13
|
+
var useFrequentEnumRequest = function useFrequentEnumRequest(props, dispatch) {
|
14
|
+
var frequentEnums = props.frequentEnums,
|
15
|
+
fieldNames = props.fieldNames,
|
16
|
+
_props$clear = props.clear,
|
17
|
+
clear = _props$clear === void 0 ? true : _props$clear,
|
18
|
+
_props$storage = props.storage,
|
19
|
+
storage = _props$storage === void 0 ? 'localStorage' : _props$storage,
|
20
|
+
_props$cacheKey = props.cacheKey,
|
21
|
+
cacheKey = _props$cacheKey === void 0 ? 'zat-design-pro-component-cacheKey' : _props$cacheKey,
|
22
|
+
dics = props.dics,
|
23
|
+
dataSource = props.dataSource;
|
24
|
+
var frequentEnumRes = (0, _ahooks.useRequest)((frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.service) || function () {
|
25
|
+
return Promise.resolve({
|
26
|
+
data: {}
|
27
|
+
});
|
28
|
+
}, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
29
|
+
manual: true,
|
30
|
+
cacheTime: 0,
|
31
|
+
staleTime: 0
|
32
|
+
}, frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.options), {}, {
|
33
|
+
onSuccess: function () {
|
34
|
+
var _onSuccess = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(res) {
|
35
|
+
var _response;
|
36
|
+
var response, enumData, updatedCacheData;
|
37
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
38
|
+
while (1) switch (_context.prev = _context.next) {
|
39
|
+
case 0:
|
40
|
+
response = res; // 使用frequentEnums的独立transformResponse处理
|
41
|
+
if ((frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.transformResponse) && typeof frequentEnums.transformResponse === 'function') {
|
42
|
+
response = frequentEnums.transformResponse(res);
|
43
|
+
}
|
44
|
+
// 确保response.data存在,如果不存在则使用response本身
|
45
|
+
enumData = ((_response = response) === null || _response === void 0 ? void 0 : _response.data) || response; // 替换缓存中的指定枚举
|
46
|
+
updatedCacheData = (0, _frequentEnum.replaceFrequentEnumCache)({
|
47
|
+
storage: storage,
|
48
|
+
cacheKey: cacheKey,
|
49
|
+
enums: (frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.enums) || [],
|
50
|
+
newData: enumData,
|
51
|
+
fieldNames: fieldNames,
|
52
|
+
clear: clear
|
53
|
+
}); // 同步数据到全局状态
|
54
|
+
dispatch({
|
55
|
+
type: 'setProEnumDic',
|
56
|
+
payload: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, dics), dataSource), updatedCacheData.data)
|
57
|
+
});
|
58
|
+
case 5:
|
59
|
+
case "end":
|
60
|
+
return _context.stop();
|
61
|
+
}
|
62
|
+
}, _callee);
|
63
|
+
}));
|
64
|
+
function onSuccess(_x) {
|
65
|
+
return _onSuccess.apply(this, arguments);
|
66
|
+
}
|
67
|
+
return onSuccess;
|
68
|
+
}(),
|
69
|
+
onError: function onError(error) {
|
70
|
+
console.warn('ProEnum: Frequent enum request failed:', error);
|
71
|
+
}
|
72
|
+
}));
|
73
|
+
// 处理频繁枚举请求
|
74
|
+
(0, _ahooks.useDeepCompareEffect)(function () {
|
75
|
+
var _frequentEnums$enums;
|
76
|
+
if (frequentEnums && (frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.service) && (frequentEnums === null || frequentEnums === void 0 ? void 0 : (_frequentEnums$enums = frequentEnums.enums) === null || _frequentEnums$enums === void 0 ? void 0 : _frequentEnums$enums.length)) {
|
77
|
+
var _ref = (frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.options) || {},
|
78
|
+
defaultParams = _ref.defaultParams;
|
79
|
+
var params = Array.isArray(defaultParams) ? defaultParams === null || defaultParams === void 0 ? void 0 : defaultParams[0] : defaultParams || {};
|
80
|
+
frequentEnumRes.run(params);
|
81
|
+
}
|
82
|
+
}, [frequentEnums === null || frequentEnums === void 0 ? void 0 : frequentEnums.options]);
|
83
|
+
return frequentEnumRes;
|
84
|
+
};
|
85
|
+
var _default = exports.default = useFrequentEnumRequest;
|
package/lib/ProEnum/index.js
CHANGED
@@ -40,7 +40,7 @@ var _locale = _interopRequireDefault(require("../locale"));
|
|
40
40
|
require("./style/index.less");
|
41
41
|
var _useFieldProps2 = require("../ProForm/utils/useFieldProps");
|
42
42
|
var _excluded = ["code", "type", "dataSource", "useRequest", "value", "component", "onChange", "transformResponse", "otherProps", "isView"],
|
43
|
-
_excluded2 = ["fieldNames", "clear", "cacheKey", "showCodeName"];
|
43
|
+
_excluded2 = ["fieldNames", "clear", "storage", "cacheKey", "showCodeName", "useRequest", "transformResponse"];
|
44
44
|
var ProEnum = function ProEnum(props) {
|
45
45
|
var _otherProps$isView, _enumProps$showCodeNa;
|
46
46
|
var code = props.code,
|
@@ -64,10 +64,18 @@ var ProEnum = function ProEnum(props) {
|
|
64
64
|
fieldNames = _ref2.fieldNames,
|
65
65
|
_ref2$clear = _ref2.clear,
|
66
66
|
clear = _ref2$clear === void 0 ? true : _ref2$clear,
|
67
|
+
_ref2$storage = _ref2.storage,
|
68
|
+
storage = _ref2$storage === void 0 ? 'localStorage' : _ref2$storage,
|
67
69
|
_ref2$cacheKey = _ref2.cacheKey,
|
68
70
|
cacheKey = _ref2$cacheKey === void 0 ? 'zat-design-pro-component-cacheKey' : _ref2$cacheKey,
|
69
71
|
showCodeName = _ref2.showCodeName,
|
72
|
+
configUseRequest = _ref2.useRequest,
|
73
|
+
configTransformResponse = _ref2.transformResponse,
|
70
74
|
resProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
|
75
|
+
// 优先使用props中的配置,如果没有则使用全局配置
|
76
|
+
var finalUseRequest = useRequest || configUseRequest;
|
77
|
+
var finalTransformResponse = transformResponse || configTransformResponse;
|
78
|
+
var cacheData = (0, _utils.getEnumData)(storage, cacheKey);
|
71
79
|
var _isView = isView !== undefined && isView !== null ? isView : (_otherProps$isView = otherProps === null || otherProps === void 0 ? void 0 : otherProps.isView) !== null && _otherProps$isView !== void 0 ? _otherProps$isView : configIsView;
|
72
80
|
enumProps.showCodeName = (_enumProps$showCodeNa = enumProps.showCodeName) !== null && _enumProps$showCodeNa !== void 0 ? _enumProps$showCodeNa : showCodeName;
|
73
81
|
var label = 'label';
|
@@ -93,7 +101,7 @@ var ProEnum = function ProEnum(props) {
|
|
93
101
|
fieldValue = 'value';
|
94
102
|
}
|
95
103
|
// 这种时候优先级最高、完全走自定义
|
96
|
-
if ((
|
104
|
+
if ((finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service) && props.fieldNames) {
|
97
105
|
var _props$fieldNames5, _props$fieldNames6;
|
98
106
|
if ((_props$fieldNames5 = props.fieldNames) === null || _props$fieldNames5 === void 0 ? void 0 : _props$fieldNames5.label) label = props.fieldNames.label;
|
99
107
|
if ((_props$fieldNames6 = props.fieldNames) === null || _props$fieldNames6 === void 0 ? void 0 : _props$fieldNames6.value) fieldValue = props.fieldNames.value;
|
@@ -101,13 +109,13 @@ var ProEnum = function ProEnum(props) {
|
|
101
109
|
var _useProConfig = (0, _ProConfigProvider.useProConfig)('ProEnum'),
|
102
110
|
_useProConfig$dics = _useProConfig.dics,
|
103
111
|
dics = _useProConfig$dics === void 0 ? {} : _useProConfig$dics;
|
104
|
-
var _useRequestFunc = (0, _ahooks.useRequest)(
|
112
|
+
var _useRequestFunc = (0, _ahooks.useRequest)(finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
105
113
|
manual: true,
|
106
114
|
cacheTime: -1
|
107
|
-
},
|
115
|
+
}, finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options), {}, {
|
108
116
|
onSuccess: function onSuccess(res) {
|
109
|
-
if (
|
110
|
-
var responseData =
|
117
|
+
if (finalTransformResponse && typeof finalTransformResponse === 'function') {
|
118
|
+
var responseData = finalTransformResponse(res);
|
111
119
|
if ((0, _typeof2.default)(responseData) !== 'object') {
|
112
120
|
var _locale$ProEnum;
|
113
121
|
return _message2.default.error((_locale$ProEnum = _locale.default.ProEnum) === null || _locale$ProEnum === void 0 ? void 0 : _locale$ProEnum.errorMessage);
|
@@ -138,13 +146,14 @@ var ProEnum = function ProEnum(props) {
|
|
138
146
|
run = _useRequestFunc.run;
|
139
147
|
// 自定义请求
|
140
148
|
(0, _ahooks.useDeepCompareEffect)(function () {
|
141
|
-
var _ref3 = (
|
149
|
+
var _ref3 = (finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options) || {},
|
142
150
|
defaultParams = _ref3.defaultParams;
|
143
151
|
var params = Array.isArray(defaultParams) ? defaultParams === null || defaultParams === void 0 ? void 0 : defaultParams[0] : defaultParams || {};
|
144
|
-
|
152
|
+
// 如果缓存数据存在,则不请求
|
153
|
+
if ((finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service) && (!Object.keys(cacheData).length || (cacheData === null || cacheData === void 0 ? void 0 : cacheData.data) && !Object.keys(cacheData === null || cacheData === void 0 ? void 0 : cacheData.data).length)) {
|
145
154
|
run(params);
|
146
155
|
}
|
147
|
-
}, [
|
156
|
+
}, [finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options]);
|
148
157
|
var enumLists = (0, _react.useMemo)(function () {
|
149
158
|
var lists = [];
|
150
159
|
if ((0, _isString2.default)(code)) {
|
@@ -163,8 +172,8 @@ var ProEnum = function ProEnum(props) {
|
|
163
172
|
// 优先使用组件内部自己传入的数据源或者请求得到的数据
|
164
173
|
list = (0, _cloneDeep2.default)(dataList && dataList.length ? dataList : enumLists);
|
165
174
|
// 对数据进行一系列的过滤等操作
|
166
|
-
if (!(
|
167
|
-
list =
|
175
|
+
if (!(finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service) && finalTransformResponse) {
|
176
|
+
list = finalTransformResponse(list);
|
168
177
|
if (!Array.isArray(list)) {
|
169
178
|
var _locale$ProEnum3;
|
170
179
|
console.error((_locale$ProEnum3 = _locale.default.ProEnum) === null || _locale$ProEnum3 === void 0 ? void 0 : _locale$ProEnum3.errorArrayMessage);
|
@@ -27,6 +27,30 @@ export interface DataOptionType {
|
|
27
27
|
*/
|
28
28
|
[key: string]: any;
|
29
29
|
}
|
30
|
+
/**
|
31
|
+
* @description 频繁变动的枚举配置
|
32
|
+
*/
|
33
|
+
export interface FrequentEnumConfig {
|
34
|
+
/**
|
35
|
+
* @description 需要替换的缓存枚举code列表
|
36
|
+
*/
|
37
|
+
enums: string[];
|
38
|
+
/**
|
39
|
+
* @description 请求服务函数
|
40
|
+
*/
|
41
|
+
service: Service<any, any>;
|
42
|
+
/**
|
43
|
+
* @description 请求选项配置
|
44
|
+
*/
|
45
|
+
options?: Options<any, any>;
|
46
|
+
/**
|
47
|
+
* @description 对频繁枚举返回数据进行格式化(独立于全局transformResponse)
|
48
|
+
* @param data 后台返回的数据
|
49
|
+
* @returns 格式化后的枚举数据
|
50
|
+
* @default -
|
51
|
+
*/
|
52
|
+
transformResponse?: (data: any) => Record<string, DataOptionType[]> | Promise<Record<string, DataOptionType[]>>;
|
53
|
+
}
|
30
54
|
/**
|
31
55
|
* @description ProEnum配置类型
|
32
56
|
*/
|
@@ -108,6 +132,11 @@ export interface ProEnumConfigType {
|
|
108
132
|
ignoreCodes?: string[];
|
109
133
|
};
|
110
134
|
};
|
135
|
+
/**
|
136
|
+
* @description 频繁变动的枚举配置
|
137
|
+
* @default -
|
138
|
+
*/
|
139
|
+
frequentEnums?: FrequentEnumConfig;
|
111
140
|
/**
|
112
141
|
* @description 字典数据
|
113
142
|
* @default {}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import type { FrequentEnumConfig } from '../propsType';
|
2
|
+
type StorageType = 'localStorage' | 'sessionStorage';
|
3
|
+
/**
|
4
|
+
* 替换频繁枚举缓存数据的参数接口
|
5
|
+
*/
|
6
|
+
export interface ReplaceFrequentEnumCacheParams {
|
7
|
+
/** 存储类型 */
|
8
|
+
storage: StorageType;
|
9
|
+
/** 缓存key */
|
10
|
+
cacheKey: string;
|
11
|
+
/** 需要替换的枚举code列表 */
|
12
|
+
enums: string[];
|
13
|
+
/** 新的枚举数据 */
|
14
|
+
newData: any;
|
15
|
+
/** 字段映射 */
|
16
|
+
fieldNames: any;
|
17
|
+
/** 是否清洗数据 */
|
18
|
+
clear: boolean;
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* 替换频繁枚举缓存数据
|
22
|
+
* @param params 参数对象
|
23
|
+
* @returns 更新后的缓存数据
|
24
|
+
*/
|
25
|
+
export declare function replaceFrequentEnumCache(params: ReplaceFrequentEnumCacheParams): any;
|
26
|
+
/**
|
27
|
+
* 验证频繁枚举配置
|
28
|
+
* @param config 频繁枚举配置
|
29
|
+
* @returns 是否有效
|
30
|
+
*/
|
31
|
+
export declare function validateFrequentEnumConfig(config: FrequentEnumConfig): boolean;
|
32
|
+
/**
|
33
|
+
* 合并频繁枚举数据到全局状态
|
34
|
+
* @param cacheData 缓存数据
|
35
|
+
* @param dics 现有字典数据
|
36
|
+
* @param dataSource 数据源
|
37
|
+
* @returns 合并后的数据
|
38
|
+
*/
|
39
|
+
export declare function mergeFrequentEnumData(cacheData: any, dics: any, dataSource: any): any;
|
40
|
+
export {};
|
@@ -0,0 +1,88 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.mergeFrequentEnumData = mergeFrequentEnumData;
|
8
|
+
exports.replaceFrequentEnumCache = replaceFrequentEnumCache;
|
9
|
+
exports.validateFrequentEnumConfig = validateFrequentEnumConfig;
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
11
|
+
var _index = require("./index");
|
12
|
+
/**
|
13
|
+
* 替换频繁枚举缓存数据
|
14
|
+
* @param params 参数对象
|
15
|
+
* @returns 更新后的缓存数据
|
16
|
+
*/
|
17
|
+
function replaceFrequentEnumCache(params) {
|
18
|
+
var _params$storage = params.storage,
|
19
|
+
storage = _params$storage === void 0 ? 'localStorage' : _params$storage,
|
20
|
+
_params$cacheKey = params.cacheKey,
|
21
|
+
cacheKey = _params$cacheKey === void 0 ? 'zat-design-pro-component-cacheKey' : _params$cacheKey,
|
22
|
+
_params$enums = params.enums,
|
23
|
+
enums = _params$enums === void 0 ? [] : _params$enums,
|
24
|
+
_params$newData = params.newData,
|
25
|
+
newData = _params$newData === void 0 ? {} : _params$newData,
|
26
|
+
_params$fieldNames = params.fieldNames,
|
27
|
+
fieldNames = _params$fieldNames === void 0 ? {
|
28
|
+
label: 'label',
|
29
|
+
value: 'value',
|
30
|
+
children: 'children'
|
31
|
+
} : _params$fieldNames,
|
32
|
+
_params$clear = params.clear,
|
33
|
+
clear = _params$clear === void 0 ? true : _params$clear;
|
34
|
+
// 参数验证
|
35
|
+
if (!storage || !cacheKey) {
|
36
|
+
console.warn('ProEnum: storage and cacheKey are required for replaceFrequentEnumCache');
|
37
|
+
return {
|
38
|
+
data: {}
|
39
|
+
};
|
40
|
+
}
|
41
|
+
if (!enums.length) {
|
42
|
+
console.warn('ProEnum: enums array is empty, no data to replace');
|
43
|
+
return {
|
44
|
+
data: {}
|
45
|
+
};
|
46
|
+
}
|
47
|
+
var cacheData = (0, _index.getEnumData)(storage, cacheKey) || {
|
48
|
+
data: {}
|
49
|
+
};
|
50
|
+
// 确保cacheData.data存在
|
51
|
+
if (!cacheData.data) {
|
52
|
+
cacheData.data = {};
|
53
|
+
}
|
54
|
+
// 只替换指定的枚举
|
55
|
+
enums.forEach(function (code) {
|
56
|
+
if (newData[code]) {
|
57
|
+
var processedData = newData[code];
|
58
|
+
// 应用数据清洗逻辑
|
59
|
+
if (clear && Array.isArray(processedData)) {
|
60
|
+
processedData = processedData.map(function (item) {
|
61
|
+
return (0, _index.cacheFieldNames)(fieldNames, item);
|
62
|
+
});
|
63
|
+
}
|
64
|
+
cacheData.data[code] = processedData;
|
65
|
+
}
|
66
|
+
});
|
67
|
+
(0, _index.setEnumData)(storage, cacheKey, cacheData);
|
68
|
+
return cacheData;
|
69
|
+
}
|
70
|
+
/**
|
71
|
+
* 验证频繁枚举配置
|
72
|
+
* @param config 频繁枚举配置
|
73
|
+
* @returns 是否有效
|
74
|
+
*/
|
75
|
+
function validateFrequentEnumConfig(config) {
|
76
|
+
var _config$enums;
|
77
|
+
return !!((config === null || config === void 0 ? void 0 : (_config$enums = config.enums) === null || _config$enums === void 0 ? void 0 : _config$enums.length) && (config === null || config === void 0 ? void 0 : config.service));
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* 合并频繁枚举数据到全局状态
|
81
|
+
* @param cacheData 缓存数据
|
82
|
+
* @param dics 现有字典数据
|
83
|
+
* @param dataSource 数据源
|
84
|
+
* @returns 合并后的数据
|
85
|
+
*/
|
86
|
+
function mergeFrequentEnumData(cacheData, dics, dataSource) {
|
87
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, dics), dataSource), cacheData.data);
|
88
|
+
}
|
@@ -173,14 +173,9 @@ var useTransformColumns = exports.useTransformColumns = function useTransformCol
|
|
173
173
|
getValueProps: transform === null || transform === void 0 ? void 0 : transform.getValueProps,
|
174
174
|
fieldProps: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, column === null || column === void 0 ? void 0 : column.fieldProps), reactiveProps === null || reactiveProps === void 0 ? void 0 : reactiveProps.fieldProps), {}, {
|
175
175
|
onChange: handleChange,
|
176
|
-
onBlur: handleBlur
|
177
|
-
}, names ? {
|
178
|
-
value: form.getFieldValue(columnName)
|
179
|
-
} // 独立字段模式
|
180
|
-
: {
|
176
|
+
onBlur: handleBlur,
|
181
177
|
value: value === null || value === void 0 ? void 0 : value[index]
|
182
|
-
}
|
183
|
-
)
|
178
|
+
})
|
184
179
|
});
|
185
180
|
});
|
186
181
|
};
|
@@ -223,7 +223,6 @@ var ProTreeSelect = exports.ProTreeSelect = function ProTreeSelect(props, ref) {
|
|
223
223
|
if (fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.data, useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options2 = useRequest.options) === null || _useRequest$options2 === void 0 ? void 0 : _useRequest$options2.cacheKey) {
|
224
224
|
if (transformResponse && typeof transformResponse === 'function') {
|
225
225
|
var responseData = transformResponse(fetchFunction.data);
|
226
|
-
// debugger;
|
227
226
|
var resultData = transferDataSource(responseData, showCodeName);
|
228
227
|
setState({
|
229
228
|
selectList: countChild(resultData),
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@zat-design/sisyphus-react",
|
3
|
-
"version": "3.13.
|
3
|
+
"version": "3.13.19-beta.1",
|
4
4
|
"license": "MIT",
|
5
5
|
"main": "lib/index.js",
|
6
6
|
"module": "es/index.js",
|
@@ -17,7 +17,7 @@
|
|
17
17
|
"docs:deploy": "gh-pages -d docs-dist",
|
18
18
|
"lint": "npm run lint:js && npm run lint:style && npm run lint:prettier",
|
19
19
|
"lint-staged": "lint-staged",
|
20
|
-
"lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx",
|
20
|
+
"lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx --ignore-pattern '**/__tests__/**' --ignore-pattern '**/*.test.*' --ignore-pattern '**/*.spec.*'",
|
21
21
|
"lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
|
22
22
|
"lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
|
23
23
|
"lint:prettier": "prettier --check \"**/*\" --end-of-line auto",
|