@zat-design/sisyphus-react 3.13.15-beta.4 → 3.13.15-beta.6

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.
@@ -105,8 +105,15 @@ export var useTransformColumns = function useTransformColumns(params) {
105
105
  newValue = normalize === null || normalize === void 0 ? void 0 : normalize(newValue);
106
106
  }
107
107
  // 根据模式选择值管理方式
108
- names ? form.setFieldValue(columnName, newValue) // 独立字段模式
109
- : internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index); // 数组值模式
108
+ if (names) {
109
+ // 独立字段模式:设置单个字段值 + 触发整体校验
110
+ form.setFieldValue(columnName, newValue);
111
+ // 确保触发Group整体的校验
112
+ internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index);
113
+ } else {
114
+ // 数组值模式
115
+ internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index);
116
+ }
110
117
  var values = form.getFieldValue(namePath);
111
118
  var originRow = (namePath === null || namePath === void 0 ? void 0 : namePath.length) ? _cloneDeep(values) : undefined;
112
119
  onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, args);
@@ -3,8 +3,8 @@ import _Tooltip from "antd/es/tooltip";
3
3
  import "antd/es/cascader/style";
4
4
  import _Cascader from "antd/es/cascader";
5
5
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
6
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
7
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
6
+ import "antd/es/message/style";
7
+ import _message from "antd/es/message";
8
8
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
9
9
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
10
10
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
@@ -16,7 +16,8 @@ import _find2 from "lodash/find";
16
16
  import _omit from "lodash/omit";
17
17
  var _excluded = ["className", "hasDetail", "detailMaxLength", "fieldNames", "value", "disabled", "dataSource", "onChange", "useRequest", "transformResponse", "level", "isView", "enumCode", "code", "tooltip", "separator", "detailPlaceholder", "scrollFollowParent", "desensitization", "otherProps"];
18
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
- import { useEffect, useState, memo, useMemo } from 'react';
19
+ import { useEffect, useState, memo, useMemo, useCallback } from 'react';
20
+ import { useRequest as useRequestFunc, useDeepCompareEffect } from 'ahooks';
20
21
  import { transformDataName } from './utils/index';
21
22
  import { useProConfig } from '../../../../ProConfigProvider';
22
23
  import Input from '../../base/Input';
@@ -57,7 +58,7 @@ var getViewLabel = function getViewLabel(_ref) {
57
58
  return viewLabel;
58
59
  };
59
60
  var ProCascader = function ProCascader(props) {
60
- var _props$otherProps, _value$slice, _ref5, _ref5$filter, _defaultLabel$filter, _locale$ProAddressBar, _locale$ProAddressBar2;
61
+ var _props$otherProps, _useRequest$options3, _value$slice, _ref7, _ref7$filter, _defaultLabel$filter, _locale$ProAddressBar, _locale$ProAddressBar2;
61
62
  var _ref2 = useProConfig('ProAddressBar') || {},
62
63
  configDetailMaxLength = _ref2.detailMaxLength,
63
64
  configEnumCode = _ref2.enumCode,
@@ -120,10 +121,6 @@ var ProCascader = function ProCascader(props) {
120
121
  }
121
122
  return disabled;
122
123
  }, [disabled]);
123
- var _useRequest = _objectSpread({}, useRequest),
124
- service = _useRequest.service,
125
- _useRequest$defaultPa = _useRequest.defaultParams,
126
- defaultParams = _useRequest$defaultPa === void 0 ? {} : _useRequest$defaultPa;
127
124
  var _useState = useState([]),
128
125
  _useState2 = _slicedToArray(_useState, 2),
129
126
  serviceData = _useState2[0],
@@ -132,53 +129,104 @@ var ProCascader = function ProCascader(props) {
132
129
  _useState4 = _slicedToArray(_useState3, 2),
133
130
  defaultLabel = _useState4[0],
134
131
  setDefaultLabel = _useState4[1];
135
- var getFirstLevelOptions = /*#__PURE__*/function () {
136
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
137
- var _yield$service, data, newData, transFormData, serviceData;
138
- return _regeneratorRuntime().wrap(function _callee$(_context) {
139
- while (1) switch (_context.prev = _context.next) {
140
- case 0:
141
- _context.next = 2;
142
- return service(defaultParams);
143
- case 2:
144
- _yield$service = _context.sent;
145
- data = _yield$service.data;
146
- newData = data;
147
- if (transformResponse) {
148
- newData = transformResponse(data);
149
- }
150
- transFormData = transformDataName(newData, {
151
- label: fieldNames.label,
152
- value: fieldNames.value,
153
- children: (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || 'children'
154
- });
155
- serviceData = isAddressMode && realLevel === 2 ? _filterDataSource(transFormData, level, fieldNames) : transFormData;
156
- setServiceData(serviceData);
157
- case 9:
158
- case "end":
159
- return _context.stop();
160
- }
161
- }, _callee);
162
- }));
163
- return function getFirstLevelOptions() {
164
- return _ref4.apply(this, arguments);
165
- };
166
- }();
132
+ // 默认成功处理函数
133
+ var defaultOnSuccessFun = function defaultOnSuccessFun(res) {
134
+ var _ref4 = res || {},
135
+ _ref4$status = _ref4.status,
136
+ status = _ref4$status === void 0 ? 200 : _ref4$status,
137
+ msg = _ref4.message,
138
+ data = _ref4.data;
139
+ if (status !== 200) {
140
+ _message.error(msg);
141
+ return;
142
+ }
143
+ var newData = data;
144
+ if (transformResponse) {
145
+ newData = transformResponse(data);
146
+ }
147
+ var transFormData = transformDataName(newData, {
148
+ label: fieldNames.label,
149
+ value: fieldNames.value,
150
+ children: (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || 'children'
151
+ });
152
+ var serviceData = isAddressMode && realLevel === 2 ? _filterDataSource(transFormData, level, fieldNames) : transFormData;
153
+ setServiceData(serviceData);
154
+ };
155
+ // 数据转换处理
156
+ var successTransformDataHandle = useCallback(function (res) {
157
+ if (transformResponse && typeof transformResponse === 'function') {
158
+ return transformResponse(res);
159
+ }
160
+ var _ref5 = res || {},
161
+ _ref5$status = _ref5.status,
162
+ status = _ref5$status === void 0 ? 200 : _ref5$status,
163
+ msg = _ref5.message,
164
+ data = _ref5.data;
165
+ if (status !== 200) {
166
+ _message.error(msg);
167
+ return;
168
+ }
169
+ return data;
170
+ }, [transformResponse]);
171
+ // 使用ahooks的useRequest
172
+ var fetchFunction = useRequestFunc(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service, _objectSpread(_objectSpread({
173
+ manual: true,
174
+ debounceWait: 300
175
+ }, useRequest === null || useRequest === void 0 ? void 0 : useRequest.options), {}, {
176
+ onSuccess: function onSuccess(data) {
177
+ var _useRequest$options, _useRequest$options$o, _useRequest$options2;
178
+ if (transformResponse && typeof transformResponse === 'function') {
179
+ var responseData = transformResponse(data);
180
+ var transFormData = transformDataName(responseData, {
181
+ label: fieldNames.label,
182
+ value: fieldNames.value,
183
+ children: (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || 'children'
184
+ });
185
+ var _serviceData = isAddressMode && realLevel === 2 ? _filterDataSource(transFormData, level, fieldNames) : transFormData;
186
+ setServiceData(_serviceData);
187
+ } else {
188
+ defaultOnSuccessFun(data);
189
+ }
190
+ // 执行传入的onSuccess
191
+ useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options = useRequest.options) === null || _useRequest$options === void 0 ? void 0 : (_useRequest$options$o = _useRequest$options.onSuccess) === null || _useRequest$options$o === void 0 ? void 0 : _useRequest$options$o.call(_useRequest$options, data, useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options2 = useRequest.options) === null || _useRequest$options2 === void 0 ? void 0 : _useRequest$options2.defaultParams);
192
+ }
193
+ }));
194
+ // 缓存数据处理
195
+ var cacheList = (useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options3 = useRequest.options) === null || _useRequest$options3 === void 0 ? void 0 : _useRequest$options3.cacheKey) ? successTransformDataHandle(fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.data) : [];
167
196
  // 提取出来默认每次都执行
168
197
  if (transformResponse) {
169
198
  realDataSource = transformResponse(realDataSource);
170
199
  }
171
- useEffect(function () {
172
- if (service) {
173
- // 传入useRequest时,初次加载级联第一级数据源
174
- getFirstLevelOptions();
200
+ // 设置缓存数据
201
+ useDeepCompareEffect(function () {
202
+ var _useRequest$options4;
203
+ if (!(serviceData === null || serviceData === void 0 ? void 0 : serviceData.length) && (useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options4 = useRequest.options) === null || _useRequest$options4 === void 0 ? void 0 : _useRequest$options4.cacheKey)) {
204
+ if (cacheList === null || cacheList === void 0 ? void 0 : cacheList.length) {
205
+ setServiceData(cacheList);
206
+ }
207
+ }
208
+ }, [fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.data]);
209
+ // 初始化请求数据
210
+ useDeepCompareEffect(function () {
211
+ var _useRequest$options5;
212
+ if (!(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service)) {
213
+ return;
214
+ }
215
+ var _ref6 = (useRequest === null || useRequest === void 0 ? void 0 : useRequest.options) || {},
216
+ manual = _ref6.manual;
217
+ if (manual || (cacheList === null || cacheList === void 0 ? void 0 : cacheList.length)) {
218
+ return;
175
219
  }
176
- }, [service]);
220
+ // 向后兼容性:优先使用 options.defaultParams,fallback 到 useRequest.defaultParams
221
+ var defaultParams = (useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options5 = useRequest.options) === null || _useRequest$options5 === void 0 ? void 0 : _useRequest$options5.defaultParams) || (useRequest === null || useRequest === void 0 ? void 0 : useRequest.defaultParams);
222
+ var params = Array.isArray(defaultParams) ? defaultParams === null || defaultParams === void 0 ? void 0 : defaultParams[0] : defaultParams || {};
223
+ fetchFunction.run(params);
224
+ }, [useRequest === null || useRequest === void 0 ? void 0 : useRequest.options]);
177
225
  useEffect(function () {
178
226
  if (realIsView && value) {
179
227
  var _realDataSource;
180
228
  // 传入dataSource + 查看时初始化展示
181
- if (service) {
229
+ if (useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) {
182
230
  setDefaultLabel(getViewLabel({
183
231
  dataSource: serviceData,
184
232
  value: isAddressMode && hasDetail ? value === null || value === void 0 ? void 0 : value.slice(0, realLevel) : value
@@ -217,9 +265,9 @@ var ProCascader = function ProCascader(props) {
217
265
  var addressValue = isAddressMode ? value && ((_value$slice = value.slice(0, realLevel)) === null || _value$slice === void 0 ? void 0 : _value$slice.some(function (item) {
218
266
  return !!item;
219
267
  })) ? value.slice(0, realLevel) : undefined : value;
220
- var viewValue = isAddressMode ? ((_ref5 = [].concat(_toConsumableArray(defaultLabel), [value === null || value === void 0 ? void 0 : value[realLevel]])) === null || _ref5 === void 0 ? void 0 : (_ref5$filter = _ref5.filter(function (item) {
268
+ var viewValue = isAddressMode ? ((_ref7 = [].concat(_toConsumableArray(defaultLabel), [value === null || value === void 0 ? void 0 : value[realLevel]])) === null || _ref7 === void 0 ? void 0 : (_ref7$filter = _ref7.filter(function (item) {
221
269
  return !!item;
222
- })) === null || _ref5$filter === void 0 ? void 0 : _ref5$filter.join(separator)) || '-' : (defaultLabel === null || defaultLabel === void 0 ? void 0 : (_defaultLabel$filter = defaultLabel.filter(function (item) {
270
+ })) === null || _ref7$filter === void 0 ? void 0 : _ref7$filter.join(separator)) || '-' : (defaultLabel === null || defaultLabel === void 0 ? void 0 : (_defaultLabel$filter = defaultLabel.filter(function (item) {
223
271
  return !!item;
224
272
  })) === null || _defaultLabel$filter === void 0 ? void 0 : _defaultLabel$filter.join(separator)) || '-';
225
273
  var _findSelectedOptions = function findSelectedOptions(options, value) {
@@ -250,8 +298,8 @@ var ProCascader = function ProCascader(props) {
250
298
  return null;
251
299
  };
252
300
  var _selectedOptions = useMemo(function () {
253
- return _findSelectedOptions(service ? serviceData : realDataSource, addressValue);
254
- }, [service, serviceData, realDataSource, addressValue]);
301
+ return _findSelectedOptions((useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) ? serviceData : realDataSource, addressValue);
302
+ }, [useRequest === null || useRequest === void 0 ? void 0 : useRequest.service, serviceData, realDataSource, addressValue]);
255
303
  var handleAddressChange = function handleAddressChange(e) {
256
304
  var cascaderValue = value === null || value === void 0 ? void 0 : value.slice(0, realLevel);
257
305
  if (onChange) {
@@ -276,8 +324,9 @@ var ProCascader = function ProCascader(props) {
276
324
  className: hasDetail ? '' : 'no-detail',
277
325
  placeholder: locale === null || locale === void 0 ? void 0 : (_locale$ProAddressBar = locale.ProAddressBar) === null || _locale$ProAddressBar === void 0 ? void 0 : _locale$ProAddressBar.placeholder,
278
326
  value: addressValue,
279
- options: service ? serviceData : realDataSource,
327
+ options: (useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) ? serviceData : realDataSource,
280
328
  disabled: lastDisabled[0],
329
+ loading: fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.loading,
281
330
  displayRender: displayRender,
282
331
  showSearch: {
283
332
  filter: handlefilter,
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { DefaultOptionType } from 'rc-select/lib/Select';
3
- import { Service } from 'ahooks/lib/useRequest/src/types';
3
+ import { Service, Options } from 'ahooks/lib/useRequest/src/types';
4
4
  export interface FieldNamesType {
5
5
  label: string;
6
6
  value: string;
@@ -19,10 +19,18 @@ export interface ProCascaderType {
19
19
  fieldNames?: FieldNamesType;
20
20
  dataSource?: DefaultOptionType[];
21
21
  useRequest?: {
22
- loadData?: boolean;
23
- service: Service<any, any>;
22
+ /**
23
+ * @description 请求服务函数
24
+ */
25
+ service?: Service<any, any>;
26
+ /**
27
+ * @description 请求选项
28
+ */
29
+ options?: Options<any, any>;
30
+ /**
31
+ * @deprecated 保留向后兼容性,使用 options.defaultParams 替代
32
+ */
24
33
  defaultParams?: any;
25
- parentKey?: string;
26
34
  };
27
35
  onChange?: (value: string[], selectedOptions?: any[]) => void;
28
36
  transformResponse?: (data: any[]) => any[];
@@ -26,8 +26,7 @@ var ProStepItem = function ProStepItem(_ref) {
26
26
  var _useStep = useStep(),
27
27
  register = _useStep.register,
28
28
  collapse = _useStep.collapse,
29
- globalLazyLoad = _useStep.lazyLoad,
30
- unNotify = _useStep.unNotify;
29
+ globalLazyLoad = _useStep.lazyLoad;
31
30
  var lazyLoad = stepLazyLoad !== null && stepLazyLoad !== void 0 ? stepLazyLoad : globalLazyLoad;
32
31
  useEffect(function () {
33
32
  // Schedule registration to avoid re-render issues
@@ -40,7 +39,6 @@ var ProStepItem = function ProStepItem(_ref) {
40
39
  }, restProps));
41
40
  }, 0);
42
41
  return function () {
43
- unNotify([id]);
44
42
  clearTimeout(timeoutId);
45
43
  };
46
44
  }, [id, title, order, lazyLoad, restProps, register]);
@@ -113,8 +113,15 @@ var useTransformColumns = exports.useTransformColumns = function useTransformCol
113
113
  newValue = normalize === null || normalize === void 0 ? void 0 : normalize(newValue);
114
114
  }
115
115
  // 根据模式选择值管理方式
116
- names ? form.setFieldValue(columnName, newValue) // 独立字段模式
117
- : internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index); // 数组值模式
116
+ if (names) {
117
+ // 独立字段模式:设置单个字段值 + 触发整体校验
118
+ form.setFieldValue(columnName, newValue);
119
+ // 确保触发Group整体的校验
120
+ internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index);
121
+ } else {
122
+ // 数组值模式
123
+ internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index);
124
+ }
118
125
  var values = form.getFieldValue(namePath);
119
126
  var originRow = (namePath === null || namePath === void 0 ? void 0 : namePath.length) ? (0, _cloneDeep2.default)(values) : undefined;
120
127
  onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, args);
@@ -10,8 +10,8 @@ var _tooltip = _interopRequireDefault(require("antd/es/tooltip"));
10
10
  require("antd/es/cascader/style");
11
11
  var _cascader = _interopRequireDefault(require("antd/es/cascader"));
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
- var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+ require("antd/es/message/style");
14
+ var _message2 = _interopRequireDefault(require("antd/es/message"));
15
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -23,6 +23,7 @@ var _find = _interopRequireDefault(require("lodash/find"));
23
23
  var _omit2 = _interopRequireDefault(require("lodash/omit"));
24
24
  var _jsxRuntime = require("react/jsx-runtime");
25
25
  var _react = require("react");
26
+ var _ahooks = require("ahooks");
26
27
  var _index = require("./utils/index");
27
28
  var _ProConfigProvider = require("../../../../ProConfigProvider");
28
29
  var _Input = _interopRequireDefault(require("../../base/Input"));
@@ -64,7 +65,7 @@ var getViewLabel = function getViewLabel(_ref) {
64
65
  return viewLabel;
65
66
  };
66
67
  var ProCascader = function ProCascader(props) {
67
- var _props$otherProps, _value$slice, _ref5, _ref5$filter, _defaultLabel$filter, _locale$ProAddressBar, _locale$ProAddressBar2;
68
+ var _props$otherProps, _useRequest$options3, _value$slice, _ref7, _ref7$filter, _defaultLabel$filter, _locale$ProAddressBar, _locale$ProAddressBar2;
68
69
  var _ref2 = (0, _ProConfigProvider.useProConfig)('ProAddressBar') || {},
69
70
  configDetailMaxLength = _ref2.detailMaxLength,
70
71
  configEnumCode = _ref2.enumCode,
@@ -127,10 +128,6 @@ var ProCascader = function ProCascader(props) {
127
128
  }
128
129
  return disabled;
129
130
  }, [disabled]);
130
- var _useRequest = (0, _objectSpread3.default)({}, useRequest),
131
- service = _useRequest.service,
132
- _useRequest$defaultPa = _useRequest.defaultParams,
133
- defaultParams = _useRequest$defaultPa === void 0 ? {} : _useRequest$defaultPa;
134
131
  var _useState = (0, _react.useState)([]),
135
132
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
136
133
  serviceData = _useState2[0],
@@ -139,53 +136,104 @@ var ProCascader = function ProCascader(props) {
139
136
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
140
137
  defaultLabel = _useState4[0],
141
138
  setDefaultLabel = _useState4[1];
142
- var getFirstLevelOptions = /*#__PURE__*/function () {
143
- var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
144
- var _yield$service, data, newData, transFormData, serviceData;
145
- return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
146
- while (1) switch (_context.prev = _context.next) {
147
- case 0:
148
- _context.next = 2;
149
- return service(defaultParams);
150
- case 2:
151
- _yield$service = _context.sent;
152
- data = _yield$service.data;
153
- newData = data;
154
- if (transformResponse) {
155
- newData = transformResponse(data);
156
- }
157
- transFormData = (0, _index.transformDataName)(newData, {
158
- label: fieldNames.label,
159
- value: fieldNames.value,
160
- children: (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || 'children'
161
- });
162
- serviceData = isAddressMode && realLevel === 2 ? _filterDataSource(transFormData, level, fieldNames) : transFormData;
163
- setServiceData(serviceData);
164
- case 9:
165
- case "end":
166
- return _context.stop();
167
- }
168
- }, _callee);
169
- }));
170
- return function getFirstLevelOptions() {
171
- return _ref4.apply(this, arguments);
172
- };
173
- }();
139
+ // 默认成功处理函数
140
+ var defaultOnSuccessFun = function defaultOnSuccessFun(res) {
141
+ var _ref4 = res || {},
142
+ _ref4$status = _ref4.status,
143
+ status = _ref4$status === void 0 ? 200 : _ref4$status,
144
+ msg = _ref4.message,
145
+ data = _ref4.data;
146
+ if (status !== 200) {
147
+ _message2.default.error(msg);
148
+ return;
149
+ }
150
+ var newData = data;
151
+ if (transformResponse) {
152
+ newData = transformResponse(data);
153
+ }
154
+ var transFormData = (0, _index.transformDataName)(newData, {
155
+ label: fieldNames.label,
156
+ value: fieldNames.value,
157
+ children: (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || 'children'
158
+ });
159
+ var serviceData = isAddressMode && realLevel === 2 ? _filterDataSource(transFormData, level, fieldNames) : transFormData;
160
+ setServiceData(serviceData);
161
+ };
162
+ // 数据转换处理
163
+ var successTransformDataHandle = (0, _react.useCallback)(function (res) {
164
+ if (transformResponse && typeof transformResponse === 'function') {
165
+ return transformResponse(res);
166
+ }
167
+ var _ref5 = res || {},
168
+ _ref5$status = _ref5.status,
169
+ status = _ref5$status === void 0 ? 200 : _ref5$status,
170
+ msg = _ref5.message,
171
+ data = _ref5.data;
172
+ if (status !== 200) {
173
+ _message2.default.error(msg);
174
+ return;
175
+ }
176
+ return data;
177
+ }, [transformResponse]);
178
+ // 使用ahooks的useRequest
179
+ var fetchFunction = (0, _ahooks.useRequest)(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service, (0, _objectSpread3.default)((0, _objectSpread3.default)({
180
+ manual: true,
181
+ debounceWait: 300
182
+ }, useRequest === null || useRequest === void 0 ? void 0 : useRequest.options), {}, {
183
+ onSuccess: function onSuccess(data) {
184
+ var _useRequest$options, _useRequest$options$o, _useRequest$options2;
185
+ if (transformResponse && typeof transformResponse === 'function') {
186
+ var responseData = transformResponse(data);
187
+ var transFormData = (0, _index.transformDataName)(responseData, {
188
+ label: fieldNames.label,
189
+ value: fieldNames.value,
190
+ children: (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.children) || 'children'
191
+ });
192
+ var _serviceData = isAddressMode && realLevel === 2 ? _filterDataSource(transFormData, level, fieldNames) : transFormData;
193
+ setServiceData(_serviceData);
194
+ } else {
195
+ defaultOnSuccessFun(data);
196
+ }
197
+ // 执行传入的onSuccess
198
+ useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options = useRequest.options) === null || _useRequest$options === void 0 ? void 0 : (_useRequest$options$o = _useRequest$options.onSuccess) === null || _useRequest$options$o === void 0 ? void 0 : _useRequest$options$o.call(_useRequest$options, data, useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options2 = useRequest.options) === null || _useRequest$options2 === void 0 ? void 0 : _useRequest$options2.defaultParams);
199
+ }
200
+ }));
201
+ // 缓存数据处理
202
+ var cacheList = (useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options3 = useRequest.options) === null || _useRequest$options3 === void 0 ? void 0 : _useRequest$options3.cacheKey) ? successTransformDataHandle(fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.data) : [];
174
203
  // 提取出来默认每次都执行
175
204
  if (transformResponse) {
176
205
  realDataSource = transformResponse(realDataSource);
177
206
  }
178
- (0, _react.useEffect)(function () {
179
- if (service) {
180
- // 传入useRequest时,初次加载级联第一级数据源
181
- getFirstLevelOptions();
207
+ // 设置缓存数据
208
+ (0, _ahooks.useDeepCompareEffect)(function () {
209
+ var _useRequest$options4;
210
+ if (!(serviceData === null || serviceData === void 0 ? void 0 : serviceData.length) && (useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options4 = useRequest.options) === null || _useRequest$options4 === void 0 ? void 0 : _useRequest$options4.cacheKey)) {
211
+ if (cacheList === null || cacheList === void 0 ? void 0 : cacheList.length) {
212
+ setServiceData(cacheList);
213
+ }
214
+ }
215
+ }, [fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.data]);
216
+ // 初始化请求数据
217
+ (0, _ahooks.useDeepCompareEffect)(function () {
218
+ var _useRequest$options5;
219
+ if (!(useRequest === null || useRequest === void 0 ? void 0 : useRequest.service)) {
220
+ return;
221
+ }
222
+ var _ref6 = (useRequest === null || useRequest === void 0 ? void 0 : useRequest.options) || {},
223
+ manual = _ref6.manual;
224
+ if (manual || (cacheList === null || cacheList === void 0 ? void 0 : cacheList.length)) {
225
+ return;
182
226
  }
183
- }, [service]);
227
+ // 向后兼容性:优先使用 options.defaultParams,fallback 到 useRequest.defaultParams
228
+ var defaultParams = (useRequest === null || useRequest === void 0 ? void 0 : (_useRequest$options5 = useRequest.options) === null || _useRequest$options5 === void 0 ? void 0 : _useRequest$options5.defaultParams) || (useRequest === null || useRequest === void 0 ? void 0 : useRequest.defaultParams);
229
+ var params = Array.isArray(defaultParams) ? defaultParams === null || defaultParams === void 0 ? void 0 : defaultParams[0] : defaultParams || {};
230
+ fetchFunction.run(params);
231
+ }, [useRequest === null || useRequest === void 0 ? void 0 : useRequest.options]);
184
232
  (0, _react.useEffect)(function () {
185
233
  if (realIsView && value) {
186
234
  var _realDataSource;
187
235
  // 传入dataSource + 查看时初始化展示
188
- if (service) {
236
+ if (useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) {
189
237
  setDefaultLabel(getViewLabel({
190
238
  dataSource: serviceData,
191
239
  value: isAddressMode && hasDetail ? value === null || value === void 0 ? void 0 : value.slice(0, realLevel) : value
@@ -224,9 +272,9 @@ var ProCascader = function ProCascader(props) {
224
272
  var addressValue = isAddressMode ? value && ((_value$slice = value.slice(0, realLevel)) === null || _value$slice === void 0 ? void 0 : _value$slice.some(function (item) {
225
273
  return !!item;
226
274
  })) ? value.slice(0, realLevel) : undefined : value;
227
- var viewValue = isAddressMode ? ((_ref5 = [].concat((0, _toConsumableArray2.default)(defaultLabel), [value === null || value === void 0 ? void 0 : value[realLevel]])) === null || _ref5 === void 0 ? void 0 : (_ref5$filter = _ref5.filter(function (item) {
275
+ var viewValue = isAddressMode ? ((_ref7 = [].concat((0, _toConsumableArray2.default)(defaultLabel), [value === null || value === void 0 ? void 0 : value[realLevel]])) === null || _ref7 === void 0 ? void 0 : (_ref7$filter = _ref7.filter(function (item) {
228
276
  return !!item;
229
- })) === null || _ref5$filter === void 0 ? void 0 : _ref5$filter.join(separator)) || '-' : (defaultLabel === null || defaultLabel === void 0 ? void 0 : (_defaultLabel$filter = defaultLabel.filter(function (item) {
277
+ })) === null || _ref7$filter === void 0 ? void 0 : _ref7$filter.join(separator)) || '-' : (defaultLabel === null || defaultLabel === void 0 ? void 0 : (_defaultLabel$filter = defaultLabel.filter(function (item) {
230
278
  return !!item;
231
279
  })) === null || _defaultLabel$filter === void 0 ? void 0 : _defaultLabel$filter.join(separator)) || '-';
232
280
  var _findSelectedOptions = function findSelectedOptions(options, value) {
@@ -257,8 +305,8 @@ var ProCascader = function ProCascader(props) {
257
305
  return null;
258
306
  };
259
307
  var _selectedOptions = (0, _react.useMemo)(function () {
260
- return _findSelectedOptions(service ? serviceData : realDataSource, addressValue);
261
- }, [service, serviceData, realDataSource, addressValue]);
308
+ return _findSelectedOptions((useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) ? serviceData : realDataSource, addressValue);
309
+ }, [useRequest === null || useRequest === void 0 ? void 0 : useRequest.service, serviceData, realDataSource, addressValue]);
262
310
  var handleAddressChange = function handleAddressChange(e) {
263
311
  var cascaderValue = value === null || value === void 0 ? void 0 : value.slice(0, realLevel);
264
312
  if (onChange) {
@@ -283,8 +331,9 @@ var ProCascader = function ProCascader(props) {
283
331
  className: hasDetail ? '' : 'no-detail',
284
332
  placeholder: _locale.default === null || _locale.default === void 0 ? void 0 : (_locale$ProAddressBar = _locale.default.ProAddressBar) === null || _locale$ProAddressBar === void 0 ? void 0 : _locale$ProAddressBar.placeholder,
285
333
  value: addressValue,
286
- options: service ? serviceData : realDataSource,
334
+ options: (useRequest === null || useRequest === void 0 ? void 0 : useRequest.service) ? serviceData : realDataSource,
287
335
  disabled: lastDisabled[0],
336
+ loading: fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.loading,
288
337
  displayRender: displayRender,
289
338
  showSearch: {
290
339
  filter: handlefilter,
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { DefaultOptionType } from 'rc-select/lib/Select';
3
- import { Service } from 'ahooks/lib/useRequest/src/types';
3
+ import { Service, Options } from 'ahooks/lib/useRequest/src/types';
4
4
  export interface FieldNamesType {
5
5
  label: string;
6
6
  value: string;
@@ -19,10 +19,18 @@ export interface ProCascaderType {
19
19
  fieldNames?: FieldNamesType;
20
20
  dataSource?: DefaultOptionType[];
21
21
  useRequest?: {
22
- loadData?: boolean;
23
- service: Service<any, any>;
22
+ /**
23
+ * @description 请求服务函数
24
+ */
25
+ service?: Service<any, any>;
26
+ /**
27
+ * @description 请求选项
28
+ */
29
+ options?: Options<any, any>;
30
+ /**
31
+ * @deprecated 保留向后兼容性,使用 options.defaultParams 替代
32
+ */
24
33
  defaultParams?: any;
25
- parentKey?: string;
26
34
  };
27
35
  onChange?: (value: string[], selectedOptions?: any[]) => void;
28
36
  transformResponse?: (data: any[]) => any[];
@@ -34,8 +34,7 @@ var ProStepItem = function ProStepItem(_ref) {
34
34
  var _useStep = (0, _index.useStep)(),
35
35
  register = _useStep.register,
36
36
  collapse = _useStep.collapse,
37
- globalLazyLoad = _useStep.lazyLoad,
38
- unNotify = _useStep.unNotify;
37
+ globalLazyLoad = _useStep.lazyLoad;
39
38
  var lazyLoad = stepLazyLoad !== null && stepLazyLoad !== void 0 ? stepLazyLoad : globalLazyLoad;
40
39
  (0, _react.useEffect)(function () {
41
40
  // Schedule registration to avoid re-render issues
@@ -48,7 +47,6 @@ var ProStepItem = function ProStepItem(_ref) {
48
47
  }, restProps));
49
48
  }, 0);
50
49
  return function () {
51
- unNotify([id]);
52
50
  clearTimeout(timeoutId);
53
51
  };
54
52
  }, [id, title, order, lazyLoad, restProps, register]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zat-design/sisyphus-react",
3
- "version": "3.13.15-beta.4",
3
+ "version": "3.13.15-beta.6",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",