@zat-design/sisyphus-react 3.13.15 → 3.13.16-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.
@@ -133,7 +133,8 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
133
133
  onDiff: onDiff,
134
134
  originRecord: originalDTO === null || originalDTO === void 0 ? void 0 : originalDTO.originRecord,
135
135
  record: originalDTO === null || originalDTO === void 0 ? void 0 : originalDTO.record,
136
- index: index
136
+ index: index,
137
+ type: props.type
137
138
  });
138
139
  }, [props[valuePropName], originalValue]);
139
140
  var isAdd = diffType === 'add';
@@ -154,10 +155,18 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
154
155
  }
155
156
  _children = viewRender;
156
157
  }
158
+ // 对于ProNumberRange类型,需要将字符串数组转换为数字数组
159
+ var processedValue = orgValue;
160
+ if (type === 'ProNumberRange' && Array.isArray(orgValue)) {
161
+ processedValue = orgValue.map(function (item) {
162
+ var num = Number(item);
163
+ return Number.isNaN(num) ? item : num;
164
+ });
165
+ }
157
166
  return /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children), {}, _defineProperty(_defineProperty({
158
167
  // @ts-ignore
159
168
  isView: true
160
- }, valuePropName, orgValue), "checked", type === 'Switch' ? originalValue : undefined))) : undefined;
169
+ }, valuePropName, processedValue), "checked", type === 'Switch' ? originalValue : undefined))) : undefined;
161
170
  }, [originalValue, children]);
162
171
  if (!isWatch || noChange) {
163
172
  return /*#__PURE__*/React.isValidElement(children) && /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children.props), rest));
@@ -180,6 +189,7 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
180
189
  'pro-form-item-add': isAdd
181
190
  });
182
191
  var open = tipOpenCalc();
192
+ // debugger;
183
193
  return _jsx(_Tooltip, {
184
194
  open: open,
185
195
  getPopupContainer: function getPopupContainer(trigger) {
@@ -7,7 +7,7 @@ import type { NamePath } from 'antd/es/form/interface';
7
7
  import type { ColumnType, TableProps } from 'antd/es/table';
8
8
  import type { FormInstance, FormItemProps } from 'antd/es/form';
9
9
  import type { ProFormValueType, FunctionArgs, ProRule } from '../ProForm/components/render/propsType';
10
- import type { DiffOriginalParams } from '../ProForm/utils/diffOriginal';
10
+ import type { DiffOriginalParams } from './utils/diffOriginal';
11
11
  /**
12
12
  * 操作类型定义
13
13
  */
@@ -4,6 +4,7 @@ export interface DiffOriginalParams {
4
4
  originalValue: any;
5
5
  value: any;
6
6
  form: FormInstance;
7
+ type?: string;
7
8
  onDiff?: ({ originValue, originRecord, value, record, index, }: {
8
9
  originValue: any;
9
10
  originRecord: any;
@@ -3,6 +3,54 @@ import _isFunction from "lodash/isFunction";
3
3
  import _isEqual from "lodash/isEqual";
4
4
  import { validate } from '@zat-design/utils';
5
5
  var isEmpty = validate.isEmpty;
6
+ // 数字类型标准化函数
7
+ var normalizeNumberValue = function normalizeNumberValue(value) {
8
+ if (value === null || value === undefined || value === '') return null;
9
+ var num = Number(value);
10
+ return Number.isNaN(num) ? null : num;
11
+ };
12
+ // InputNumber 比较策略
13
+ var inputNumberStrategy = {
14
+ compare: function compare(val1, val2) {
15
+ var num1 = normalizeNumberValue(val1);
16
+ var num2 = normalizeNumberValue(val2);
17
+ return num1 === num2;
18
+ }
19
+ };
20
+ // ProNumberRange 比较策略
21
+ var proNumberRangeStrategy = {
22
+ compare: function compare(val1, val2) {
23
+ if (!Array.isArray(val1) || !Array.isArray(val2)) return false;
24
+ if (val1.length !== val2.length) return false;
25
+ return val1.every(function (item, index) {
26
+ var num1 = normalizeNumberValue(item);
27
+ var num2 = normalizeNumberValue(val2[index]);
28
+ return num1 === num2;
29
+ });
30
+ }
31
+ };
32
+ // 数字类型处理函数
33
+ var handleNumberTypeDiff = function handleNumberTypeDiff(params) {
34
+ var originalValue = params.originalValue,
35
+ value = params.value,
36
+ type = params.type;
37
+ var isEmptyVal = isEmpty(value);
38
+ var isEmptyOrg = isEmpty(originalValue);
39
+ // 都为空视为相等
40
+ if (isEmptyOrg && isEmptyVal) return 'same';
41
+ // 如果原始值为空 且当前有值的话 视为新增
42
+ if (isEmptyOrg && !isEmptyVal) return 'add';
43
+ // 根据类型选择对应的比较策略
44
+ var compareStrategy;
45
+ if (type === 'InputNumber') {
46
+ compareStrategy = inputNumberStrategy;
47
+ } else if (type === 'ProNumberRange') {
48
+ compareStrategy = proNumberRangeStrategy;
49
+ } else {
50
+ return 'changed'; // 未知类型视为已改变
51
+ }
52
+ return compareStrategy.compare(value, originalValue) ? 'same' : 'changed';
53
+ };
6
54
  // 过滤对象中undefined字段
7
55
  // 防止{a: '1'} {a: '1', b: undefined | null}被认为不相等
8
56
  var filterObject = function filterObject(data) {
@@ -36,7 +84,8 @@ export var diffOriginal = function diffOriginal(params) {
36
84
  onDiff = params.onDiff,
37
85
  originRecord = params.originRecord,
38
86
  record = params.record,
39
- index = params.index;
87
+ index = params.index,
88
+ type = params.type;
40
89
  // 支持传入自定义比较事件
41
90
  if (_isFunction(onDiff)) {
42
91
  var diffRes = onDiff({
@@ -54,6 +103,11 @@ export var diffOriginal = function diffOriginal(params) {
54
103
  return diffRes;
55
104
  }
56
105
  }
106
+ // 数字类型特殊处理
107
+ if (['InputNumber', 'ProNumberRange'].includes(type)) {
108
+ return handleNumberTypeDiff(params);
109
+ }
110
+ // 其他类型使用原有逻辑
57
111
  var _value = filterObject(value);
58
112
  var _originalValue = filterObject(originalValue);
59
113
  var isEmptyVal = isEmpty(_value);
@@ -58,8 +58,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
58
58
  value: _value,
59
59
  originalValue: _originalValue,
60
60
  form: form,
61
- onDiff: onDiff
62
- // name: namesStr || name,
61
+ onDiff: onDiff,
62
+ type: props.type
63
63
  });
64
64
  }, [isWatch, noChange, props[valuePropName], originalValue, _typeof(onDiff)]);
65
65
  var isAdd = diffType === 'add';
@@ -3,6 +3,7 @@ export interface DiffOriginalParams {
3
3
  originalValue: any;
4
4
  value: any;
5
5
  form: FormInstance;
6
+ type?: string;
6
7
  onDiff?: (originalValue: any, currentValue: any) => DiffType | boolean | undefined;
7
8
  }
8
9
  export type DiffType = 'same' | 'add' | 'changed';
@@ -2,6 +2,54 @@ import _isObject from "lodash/isObject";
2
2
  import _isFunction from "lodash/isFunction";
3
3
  import _isEqual from "lodash/isEqual";
4
4
  import { isEmpty } from '../../utils';
5
+ // 数字类型标准化函数
6
+ var normalizeNumberValue = function normalizeNumberValue(value) {
7
+ if (value === null || value === undefined || value === '') return null;
8
+ var num = Number(value);
9
+ return Number.isNaN(num) ? null : num;
10
+ };
11
+ // InputNumber 比较策略
12
+ var inputNumberStrategy = {
13
+ compare: function compare(val1, val2) {
14
+ var num1 = normalizeNumberValue(val1);
15
+ var num2 = normalizeNumberValue(val2);
16
+ return num1 === num2;
17
+ }
18
+ };
19
+ // ProNumberRange 比较策略
20
+ var proNumberRangeStrategy = {
21
+ compare: function compare(val1, val2) {
22
+ if (!Array.isArray(val1) || !Array.isArray(val2)) return false;
23
+ if (val1.length !== val2.length) return false;
24
+ return val1.every(function (item, index) {
25
+ var num1 = normalizeNumberValue(item);
26
+ var num2 = normalizeNumberValue(val2[index]);
27
+ return num1 === num2;
28
+ });
29
+ }
30
+ };
31
+ // 数字类型处理函数
32
+ var handleNumberTypeDiff = function handleNumberTypeDiff(params) {
33
+ var originalValue = params.originalValue,
34
+ value = params.value,
35
+ type = params.type;
36
+ var isEmptyVal = isEmpty(value);
37
+ var isEmptyOrg = isEmpty(originalValue);
38
+ // 都为空视为相等
39
+ if (isEmptyOrg && isEmptyVal) return 'same';
40
+ // 如果原始值为空 且当前有值的话 视为新增
41
+ if (isEmptyOrg && !isEmptyVal) return 'add';
42
+ // 根据类型选择对应的比较策略
43
+ var compareStrategy;
44
+ if (type === 'InputNumber') {
45
+ compareStrategy = inputNumberStrategy;
46
+ } else if (type === 'ProNumberRange') {
47
+ compareStrategy = proNumberRangeStrategy;
48
+ } else {
49
+ return 'changed'; // 未知类型视为已改变
50
+ }
51
+ return compareStrategy.compare(value, originalValue) ? 'same' : 'changed';
52
+ };
5
53
  // 过滤对象中undefined字段
6
54
  // 防止{a: '1'} {a: '1', b: undefined | null}被认为不相等
7
55
  var filterObject = function filterObject(data) {
@@ -32,7 +80,8 @@ var filterObject = function filterObject(data) {
32
80
  export var diffOriginal = function diffOriginal(params) {
33
81
  var originalValue = params.originalValue,
34
82
  value = params.value,
35
- onDiff = params.onDiff;
83
+ onDiff = params.onDiff,
84
+ type = params.type;
36
85
  // 支持传入自定义比较事件
37
86
  if (_isFunction(onDiff)) {
38
87
  var diffRes = onDiff(originalValue, value);
@@ -44,6 +93,10 @@ export var diffOriginal = function diffOriginal(params) {
44
93
  return diffRes;
45
94
  }
46
95
  }
96
+ if (['InputNumber', 'ProNumberRange'].includes(type)) {
97
+ return handleNumberTypeDiff(params);
98
+ }
99
+ // 其他类型使用原有逻辑
47
100
  var _value = filterObject(value);
48
101
  var _originalValue = filterObject(originalValue);
49
102
  var isEmptyVal = isEmpty(_value);
@@ -48,9 +48,66 @@ var findSelectNameValues = function findSelectNameValues(_ref) {
48
48
  }
49
49
  });
50
50
  var diffList = _difference(selectValues, mode === 'multiple' ? value : [value]);
51
- return dataSource.filter(function (item) {
51
+ var result = dataSource.filter(function (item) {
52
52
  return !diffList.includes(labelInValue ? item : item[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] || (item === null || item === void 0 ? void 0 : item.value));
53
53
  });
54
+ var isSingle = list === null || list === void 0 ? void 0 : list.find(function (item) {
55
+ return item === null || item === void 0 ? void 0 : item._isEditing;
56
+ });
57
+ // 修复单行编辑模式下,选择器无法过滤的问题
58
+ if (mode === 'multiple' && isSingle) {
59
+ // 找到当前编辑行
60
+ var editingRow = list.find(function (item) {
61
+ return item === null || item === void 0 ? void 0 : item._isEditing;
62
+ });
63
+ // 收集其他行的已选择值
64
+ var otherRowsValues = [];
65
+ list.forEach(function (item) {
66
+ if (item !== editingRow) {
67
+ // 排除当前编辑行
68
+ var _result = item;
69
+ var _iterator2 = _createForOfIteratorHelper(selectName),
70
+ _step2;
71
+ try {
72
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
73
+ var key = _step2.value;
74
+ _result = _result[key];
75
+ }
76
+ } catch (err) {
77
+ _iterator2.e(err);
78
+ } finally {
79
+ _iterator2.f();
80
+ }
81
+ if (_result) {
82
+ otherRowsValues.push.apply(otherRowsValues, _toConsumableArray(Array.isArray(_result) ? _result : [_result]));
83
+ }
84
+ }
85
+ });
86
+ // 获取当前编辑行的已选择值
87
+ var currentRowValues = [];
88
+ if (editingRow) {
89
+ var _result2 = editingRow;
90
+ var _iterator3 = _createForOfIteratorHelper(selectName),
91
+ _step3;
92
+ try {
93
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
94
+ var key = _step3.value;
95
+ _result2 = _result2[key];
96
+ }
97
+ } catch (err) {
98
+ _iterator3.e(err);
99
+ } finally {
100
+ _iterator3.f();
101
+ }
102
+ currentRowValues = Array.isArray(_result2) ? _result2 : _result2 ? [_result2] : [];
103
+ }
104
+ // 从dataSource中过滤掉其他行的值,但保留当前行的值
105
+ var _diffList = _difference(otherRowsValues, currentRowValues);
106
+ return dataSource.filter(function (item) {
107
+ return !_diffList.includes(labelInValue ? item : item[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] || (item === null || item === void 0 ? void 0 : item.value));
108
+ });
109
+ }
110
+ return result;
54
111
  };
55
112
  /**
56
113
  * 返回当前组件可以显示的数据源
@@ -141,7 +141,8 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
141
141
  onDiff: onDiff,
142
142
  originRecord: originalDTO === null || originalDTO === void 0 ? void 0 : originalDTO.originRecord,
143
143
  record: originalDTO === null || originalDTO === void 0 ? void 0 : originalDTO.record,
144
- index: index
144
+ index: index,
145
+ type: props.type
145
146
  });
146
147
  }, [props[valuePropName], originalValue]);
147
148
  var isAdd = diffType === 'add';
@@ -162,10 +163,18 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
162
163
  }
163
164
  _children = viewRender;
164
165
  }
166
+ // 对于ProNumberRange类型,需要将字符串数组转换为数字数组
167
+ var processedValue = orgValue;
168
+ if (type === 'ProNumberRange' && Array.isArray(orgValue)) {
169
+ processedValue = orgValue.map(function (item) {
170
+ var num = Number(item);
171
+ return Number.isNaN(num) ? item : num;
172
+ });
173
+ }
165
174
  return /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, children), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)({
166
175
  // @ts-ignore
167
176
  isView: true
168
- }, valuePropName, orgValue), "checked", type === 'Switch' ? originalValue : undefined))) : undefined;
177
+ }, valuePropName, processedValue), "checked", type === 'Switch' ? originalValue : undefined))) : undefined;
169
178
  }, [originalValue, children]);
170
179
  if (!isWatch || noChange) {
171
180
  return /*#__PURE__*/_react.default.isValidElement(children) && /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, children.props), rest));
@@ -188,6 +197,7 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
188
197
  'pro-form-item-add': isAdd
189
198
  });
190
199
  var open = tipOpenCalc();
200
+ // debugger;
191
201
  return (0, _jsxRuntime.jsx)(_tooltip.default, {
192
202
  open: open,
193
203
  getPopupContainer: function getPopupContainer(trigger) {
@@ -7,7 +7,7 @@ import type { NamePath } from 'antd/es/form/interface';
7
7
  import type { ColumnType, TableProps } from 'antd/es/table';
8
8
  import type { FormInstance, FormItemProps } from 'antd/es/form';
9
9
  import type { ProFormValueType, FunctionArgs, ProRule } from '../ProForm/components/render/propsType';
10
- import type { DiffOriginalParams } from '../ProForm/utils/diffOriginal';
10
+ import type { DiffOriginalParams } from './utils/diffOriginal';
11
11
  /**
12
12
  * 操作类型定义
13
13
  */
@@ -4,6 +4,7 @@ export interface DiffOriginalParams {
4
4
  originalValue: any;
5
5
  value: any;
6
6
  form: FormInstance;
7
+ type?: string;
7
8
  onDiff?: ({ originValue, originRecord, value, record, index, }: {
8
9
  originValue: any;
9
10
  originRecord: any;
@@ -10,6 +10,54 @@ var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
10
10
  var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
11
11
  var _utils = require("@zat-design/utils");
12
12
  var isEmpty = _utils.validate.isEmpty;
13
+ // 数字类型标准化函数
14
+ var normalizeNumberValue = function normalizeNumberValue(value) {
15
+ if (value === null || value === undefined || value === '') return null;
16
+ var num = Number(value);
17
+ return Number.isNaN(num) ? null : num;
18
+ };
19
+ // InputNumber 比较策略
20
+ var inputNumberStrategy = {
21
+ compare: function compare(val1, val2) {
22
+ var num1 = normalizeNumberValue(val1);
23
+ var num2 = normalizeNumberValue(val2);
24
+ return num1 === num2;
25
+ }
26
+ };
27
+ // ProNumberRange 比较策略
28
+ var proNumberRangeStrategy = {
29
+ compare: function compare(val1, val2) {
30
+ if (!Array.isArray(val1) || !Array.isArray(val2)) return false;
31
+ if (val1.length !== val2.length) return false;
32
+ return val1.every(function (item, index) {
33
+ var num1 = normalizeNumberValue(item);
34
+ var num2 = normalizeNumberValue(val2[index]);
35
+ return num1 === num2;
36
+ });
37
+ }
38
+ };
39
+ // 数字类型处理函数
40
+ var handleNumberTypeDiff = function handleNumberTypeDiff(params) {
41
+ var originalValue = params.originalValue,
42
+ value = params.value,
43
+ type = params.type;
44
+ var isEmptyVal = isEmpty(value);
45
+ var isEmptyOrg = isEmpty(originalValue);
46
+ // 都为空视为相等
47
+ if (isEmptyOrg && isEmptyVal) return 'same';
48
+ // 如果原始值为空 且当前有值的话 视为新增
49
+ if (isEmptyOrg && !isEmptyVal) return 'add';
50
+ // 根据类型选择对应的比较策略
51
+ var compareStrategy;
52
+ if (type === 'InputNumber') {
53
+ compareStrategy = inputNumberStrategy;
54
+ } else if (type === 'ProNumberRange') {
55
+ compareStrategy = proNumberRangeStrategy;
56
+ } else {
57
+ return 'changed'; // 未知类型视为已改变
58
+ }
59
+ return compareStrategy.compare(value, originalValue) ? 'same' : 'changed';
60
+ };
13
61
  // 过滤对象中undefined字段
14
62
  // 防止{a: '1'} {a: '1', b: undefined | null}被认为不相等
15
63
  var filterObject = function filterObject(data) {
@@ -43,7 +91,8 @@ var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
43
91
  onDiff = params.onDiff,
44
92
  originRecord = params.originRecord,
45
93
  record = params.record,
46
- index = params.index;
94
+ index = params.index,
95
+ type = params.type;
47
96
  // 支持传入自定义比较事件
48
97
  if ((0, _isFunction2.default)(onDiff)) {
49
98
  var diffRes = onDiff({
@@ -61,6 +110,11 @@ var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
61
110
  return diffRes;
62
111
  }
63
112
  }
113
+ // 数字类型特殊处理
114
+ if (['InputNumber', 'ProNumberRange'].includes(type)) {
115
+ return handleNumberTypeDiff(params);
116
+ }
117
+ // 其他类型使用原有逻辑
64
118
  var _value = filterObject(value);
65
119
  var _originalValue = filterObject(originalValue);
66
120
  var isEmptyVal = isEmpty(_value);
@@ -66,8 +66,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
66
66
  value: _value,
67
67
  originalValue: _originalValue,
68
68
  form: form,
69
- onDiff: onDiff
70
- // name: namesStr || name,
69
+ onDiff: onDiff,
70
+ type: props.type
71
71
  });
72
72
  }, [isWatch, noChange, props[valuePropName], originalValue, (0, _typeof2.default)(onDiff)]);
73
73
  var isAdd = diffType === 'add';
@@ -3,6 +3,7 @@ export interface DiffOriginalParams {
3
3
  originalValue: any;
4
4
  value: any;
5
5
  form: FormInstance;
6
+ type?: string;
6
7
  onDiff?: (originalValue: any, currentValue: any) => DiffType | boolean | undefined;
7
8
  }
8
9
  export type DiffType = 'same' | 'add' | 'changed';
@@ -9,6 +9,54 @@ var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
9
9
  var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
10
10
  var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
11
11
  var _utils = require("../../utils");
12
+ // 数字类型标准化函数
13
+ var normalizeNumberValue = function normalizeNumberValue(value) {
14
+ if (value === null || value === undefined || value === '') return null;
15
+ var num = Number(value);
16
+ return Number.isNaN(num) ? null : num;
17
+ };
18
+ // InputNumber 比较策略
19
+ var inputNumberStrategy = {
20
+ compare: function compare(val1, val2) {
21
+ var num1 = normalizeNumberValue(val1);
22
+ var num2 = normalizeNumberValue(val2);
23
+ return num1 === num2;
24
+ }
25
+ };
26
+ // ProNumberRange 比较策略
27
+ var proNumberRangeStrategy = {
28
+ compare: function compare(val1, val2) {
29
+ if (!Array.isArray(val1) || !Array.isArray(val2)) return false;
30
+ if (val1.length !== val2.length) return false;
31
+ return val1.every(function (item, index) {
32
+ var num1 = normalizeNumberValue(item);
33
+ var num2 = normalizeNumberValue(val2[index]);
34
+ return num1 === num2;
35
+ });
36
+ }
37
+ };
38
+ // 数字类型处理函数
39
+ var handleNumberTypeDiff = function handleNumberTypeDiff(params) {
40
+ var originalValue = params.originalValue,
41
+ value = params.value,
42
+ type = params.type;
43
+ var isEmptyVal = (0, _utils.isEmpty)(value);
44
+ var isEmptyOrg = (0, _utils.isEmpty)(originalValue);
45
+ // 都为空视为相等
46
+ if (isEmptyOrg && isEmptyVal) return 'same';
47
+ // 如果原始值为空 且当前有值的话 视为新增
48
+ if (isEmptyOrg && !isEmptyVal) return 'add';
49
+ // 根据类型选择对应的比较策略
50
+ var compareStrategy;
51
+ if (type === 'InputNumber') {
52
+ compareStrategy = inputNumberStrategy;
53
+ } else if (type === 'ProNumberRange') {
54
+ compareStrategy = proNumberRangeStrategy;
55
+ } else {
56
+ return 'changed'; // 未知类型视为已改变
57
+ }
58
+ return compareStrategy.compare(value, originalValue) ? 'same' : 'changed';
59
+ };
12
60
  // 过滤对象中undefined字段
13
61
  // 防止{a: '1'} {a: '1', b: undefined | null}被认为不相等
14
62
  var filterObject = function filterObject(data) {
@@ -39,7 +87,8 @@ var filterObject = function filterObject(data) {
39
87
  var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
40
88
  var originalValue = params.originalValue,
41
89
  value = params.value,
42
- onDiff = params.onDiff;
90
+ onDiff = params.onDiff,
91
+ type = params.type;
43
92
  // 支持传入自定义比较事件
44
93
  if ((0, _isFunction2.default)(onDiff)) {
45
94
  var diffRes = onDiff(originalValue, value);
@@ -51,6 +100,10 @@ var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
51
100
  return diffRes;
52
101
  }
53
102
  }
103
+ if (['InputNumber', 'ProNumberRange'].includes(type)) {
104
+ return handleNumberTypeDiff(params);
105
+ }
106
+ // 其他类型使用原有逻辑
54
107
  var _value = filterObject(value);
55
108
  var _originalValue = filterObject(originalValue);
56
109
  var isEmptyVal = (0, _utils.isEmpty)(_value);
@@ -55,9 +55,66 @@ var findSelectNameValues = function findSelectNameValues(_ref) {
55
55
  }
56
56
  });
57
57
  var diffList = (0, _difference2.default)(selectValues, mode === 'multiple' ? value : [value]);
58
- return dataSource.filter(function (item) {
58
+ var result = dataSource.filter(function (item) {
59
59
  return !diffList.includes(labelInValue ? item : item[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] || (item === null || item === void 0 ? void 0 : item.value));
60
60
  });
61
+ var isSingle = list === null || list === void 0 ? void 0 : list.find(function (item) {
62
+ return item === null || item === void 0 ? void 0 : item._isEditing;
63
+ });
64
+ // 修复单行编辑模式下,选择器无法过滤的问题
65
+ if (mode === 'multiple' && isSingle) {
66
+ // 找到当前编辑行
67
+ var editingRow = list.find(function (item) {
68
+ return item === null || item === void 0 ? void 0 : item._isEditing;
69
+ });
70
+ // 收集其他行的已选择值
71
+ var otherRowsValues = [];
72
+ list.forEach(function (item) {
73
+ if (item !== editingRow) {
74
+ // 排除当前编辑行
75
+ var _result = item;
76
+ var _iterator2 = (0, _createForOfIteratorHelper2.default)(selectName),
77
+ _step2;
78
+ try {
79
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
80
+ var key = _step2.value;
81
+ _result = _result[key];
82
+ }
83
+ } catch (err) {
84
+ _iterator2.e(err);
85
+ } finally {
86
+ _iterator2.f();
87
+ }
88
+ if (_result) {
89
+ otherRowsValues.push.apply(otherRowsValues, (0, _toConsumableArray2.default)(Array.isArray(_result) ? _result : [_result]));
90
+ }
91
+ }
92
+ });
93
+ // 获取当前编辑行的已选择值
94
+ var currentRowValues = [];
95
+ if (editingRow) {
96
+ var _result2 = editingRow;
97
+ var _iterator3 = (0, _createForOfIteratorHelper2.default)(selectName),
98
+ _step3;
99
+ try {
100
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
101
+ var key = _step3.value;
102
+ _result2 = _result2[key];
103
+ }
104
+ } catch (err) {
105
+ _iterator3.e(err);
106
+ } finally {
107
+ _iterator3.f();
108
+ }
109
+ currentRowValues = Array.isArray(_result2) ? _result2 : _result2 ? [_result2] : [];
110
+ }
111
+ // 从dataSource中过滤掉其他行的值,但保留当前行的值
112
+ var _diffList = (0, _difference2.default)(otherRowsValues, currentRowValues);
113
+ return dataSource.filter(function (item) {
114
+ return !_diffList.includes(labelInValue ? item : item[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] || (item === null || item === void 0 ? void 0 : item.value));
115
+ });
116
+ }
117
+ return result;
61
118
  };
62
119
  /**
63
120
  * 返回当前组件可以显示的数据源
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zat-design/sisyphus-react",
3
- "version": "3.13.15",
3
+ "version": "3.13.16-beta.2",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -28,7 +28,7 @@
28
28
  "postpublish": "git clean -fd",
29
29
  "release": "yarn build && npm publish",
30
30
  "release:beta": "yarn build && npm publish --tag=beta",
31
- "start": "dumi dev",
31
+ "start": "export NODE_OPTIONS=--openssl-legacy-provider && dumi dev",
32
32
  "test": "umi-test",
33
33
  "test:coverage": "umi-test --coverage",
34
34
  "tsc": "tsc --noEmit"
@@ -67,7 +67,7 @@
67
67
  "@dnd-kit/sortable": "^7.0.2",
68
68
  "@dnd-kit/utilities": "^3.2.1",
69
69
  "@pansy/react-watermark": "^3.1.13",
70
- "@zat-design/utils": "1.1.37",
70
+ "@zat-design/utils": "1.1.41",
71
71
  "ahooks": "3.8.4",
72
72
  "antd": "4.24.16",
73
73
  "big.js": "^6.2.1",