@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.
@@ -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;
@@ -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 ((useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) && props.fieldNames) {
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)(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service, (0, _objectSpread2.default)((0, _objectSpread2.default)({
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
- }, useRequest === null || useRequest === void 0 ? void 0 : useRequest.options), {}, {
115
+ }, finalUseRequest === null || finalUseRequest === void 0 ? void 0 : finalUseRequest.options), {}, {
108
116
  onSuccess: function onSuccess(res) {
109
- if (transformResponse && typeof transformResponse === 'function') {
110
- var responseData = transformResponse(res);
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 = (useRequest === null || useRequest === void 0 ? void 0 : useRequest.options) || {},
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
- if (useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) {
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
- }, [useRequest === null || useRequest === void 0 ? void 0 : useRequest.options]);
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)) {
@@ -157,14 +166,14 @@ var ProEnum = function ProEnum(props) {
157
166
  });
158
167
  }
159
168
  return lists;
160
- }, [dics, code]);
169
+ }, [code, JSON.stringify(dics)]); // 添加JSON.stringify(dics)作为额外依赖项
161
170
  var renderComponent = function renderComponent() {
162
171
  var list = [];
163
172
  // 优先使用组件内部自己传入的数据源或者请求得到的数据
164
173
  list = (0, _cloneDeep2.default)(dataList && dataList.length ? dataList : enumLists);
165
174
  // 对数据进行一系列的过滤等操作
166
- if (!(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) && transformResponse) {
167
- list = transformResponse(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
+ }
@@ -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;
@@ -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.18",
3
+ "version": "3.13.19-beta.2",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -1 +0,0 @@
1
- module.exports = 'test-file-stub';
@@ -1,27 +0,0 @@
1
- // Mock @zat-design/utils
2
- module.exports = {
3
- tools: {
4
- isValidUrl: jest.fn(() => true),
5
- formatCurrency: jest.fn((value) => `¥${value}`),
6
- formatDate: jest.fn((date) => new Date(date).toLocaleDateString()),
7
- },
8
- transforms: {
9
- transformDate: jest.fn((value, params) => {
10
- if (!value) return '';
11
- return new Date(value).toLocaleDateString();
12
- }),
13
- transformSwitch: jest.fn((value) => value ? '是' : '否'),
14
- transformMoney: jest.fn((value) => `¥${value || 0}`),
15
- transformPercent: jest.fn((value) => `${(value || 0) * 100}%`),
16
- },
17
- validate: {
18
- isEmail: jest.fn((email) => /\S+@\S+\.\S+/.test(email)),
19
- isPhone: jest.fn((phone) => /^1[3-9]\d{9}$/.test(phone)),
20
- isIdCard: jest.fn(() => true),
21
- },
22
- validateNameMap: {
23
- email: 'isEmail',
24
- phone: 'isPhone',
25
- idCard: 'isIdCard',
26
- },
27
- };