@zat-design/sisyphus-react 3.13.18 → 3.13.19-beta.2

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.
@@ -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: {
@@ -58,7 +59,7 @@ var reducer = function reducer(state, action) {
58
59
  case 'setProEnumDic':
59
60
  return _objectSpread(_objectSpread({}, state), {}, {
60
61
  ProEnum: _objectSpread(_objectSpread({}, state.ProEnum), {}, {
61
- dics: _objectSpread(_objectSpread({}, (_state$ProEnum = state.ProEnum) === null || _state$ProEnum === void 0 ? void 0 : _state$ProEnum.dataSource), action.payload)
62
+ dics: _objectSpread(_objectSpread({}, ((_state$ProEnum = state.ProEnum) === null || _state$ProEnum === void 0 ? void 0 : _state$ProEnum.dataSource) || {}), action.payload)
62
63
  })
63
64
  });
64
65
  default:
@@ -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),
@@ -189,7 +189,6 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
189
189
  'pro-form-item-add': isAdd
190
190
  });
191
191
  var open = tipOpenCalc();
192
- // debugger;
193
192
  return _jsx(_Tooltip, {
194
193
  open: open,
195
194
  getPopupContainer: function getPopupContainer(trigger) {
@@ -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;
@@ -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 ((useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) && props.fieldNames) {
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(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service, _objectSpread(_objectSpread({
104
+ var _useRequestFunc = useRequestFunc(finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.service, _objectSpread(_objectSpread({
97
105
  manual: true,
98
106
  cacheTime: -1
99
- }, useRequest === null || useRequest === void 0 ? void 0 : useRequest.options), {}, {
107
+ }, finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options), {}, {
100
108
  onSuccess: function onSuccess(res) {
101
- if (transformResponse && typeof transformResponse === 'function') {
102
- var responseData = transformResponse(res);
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 = (useRequest === null || useRequest === void 0 ? void 0 : useRequest.options) || {},
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
- if (useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) {
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
- }, [useRequest === null || useRequest === void 0 ? void 0 : useRequest.options]);
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)) {
@@ -149,14 +158,14 @@ var ProEnum = function ProEnum(props) {
149
158
  });
150
159
  }
151
160
  return lists;
152
- }, [dics, code]);
161
+ }, [code, JSON.stringify(dics)]); // 添加JSON.stringify(dics)作为额外依赖项
153
162
  var renderComponent = function renderComponent() {
154
163
  var list = [];
155
164
  // 优先使用组件内部自己传入的数据源或者请求得到的数据
156
165
  list = _cloneDeep(dataList && dataList.length ? dataList : enumLists);
157
166
  // 对数据进行一系列的过滤等操作
158
- if (!(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) && transformResponse) {
159
- list = transformResponse(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
+ }
@@ -2,6 +2,11 @@
2
2
  @import (reference) '~antd/es/style/themes/index.less';
3
3
 
4
4
  .pro-number-range {
5
+ display: block;
6
+ .@{ant-prefix}-space-compact {
7
+ display: block;
8
+ }
9
+
5
10
  .range-split {
6
11
  width: 32px !important;
7
12
  text-align: center !important;
@@ -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),
@@ -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: {
@@ -67,7 +68,7 @@ var reducer = function reducer(state, action) {
67
68
  case 'setProEnumDic':
68
69
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
69
70
  ProEnum: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state.ProEnum), {}, {
70
- dics: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (_state$ProEnum = state.ProEnum) === null || _state$ProEnum === void 0 ? void 0 : _state$ProEnum.dataSource), action.payload)
71
+ dics: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ((_state$ProEnum = state.ProEnum) === null || _state$ProEnum === void 0 ? void 0 : _state$ProEnum.dataSource) || {}), action.payload)
71
72
  })
72
73
  });
73
74
  default:
@@ -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;