@bit-sun/business-component 4.0.12-alpha.11 → 4.0.12-alpha.12

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.
@@ -10,3 +10,5 @@ export declare const getVisibleFieldsCount: (modalTableProps: any) => any;
10
10
  export declare const hasMoreQueryFields: (modalTableProps: any) => boolean;
11
11
  export declare const getRealStr: (oldSelect: any, newSelect: any, record: any) => any;
12
12
  export declare const getTableHeigth: (list: any) => number;
13
+ export declare const getCurrentSRKs: (selectMode: any, labelInValue: boolean, value: any) => any;
14
+ export declare const getRenderSource: (currentSRKs: any, items: any) => any[];
package/dist/index.esm.js CHANGED
@@ -4083,6 +4083,7 @@ var ColSpan = 6; // 查询条件 每行col = 24 /columnsPerRow
4083
4083
  var handleSourceName = function handleSourceName(sName) {
4084
4084
  return sName;
4085
4085
  };
4086
+ // ------------------------------------------处理样式相关--开始----------------------------------------
4086
4087
  var getFormRowInfo = function getFormRowInfo(list) {
4087
4088
  var totalRows = Math.ceil(list.length / columnsPerRow); // 计算总行数
4088
4089
  var lastRowColumns = (list.length + 1) % columnsPerRow; // 计算最后一行的实际列数
@@ -4123,6 +4124,34 @@ var getTableHeigth = function getTableHeigth(list) {
4123
4124
  if (totalRows == 1) return 358; // modal弹窗760 调整为700 适应小屏
4124
4125
  return 411 - totalRows * 10;
4125
4126
  };
4127
+ // ------------------------------------------处理样式相关--结束----------------------------------------
4128
+ // ------------------------------------------处理数据相关--开始----------------------------------------
4129
+ var getCurrentSRKs = function getCurrentSRKs(selectMode, labelInValue, value) {
4130
+ return selectMode ? labelInValue ? value === null || value === void 0 ? void 0 : value.map(function (s) {
4131
+ return (s === null || s === void 0 ? void 0 : s.value) || s;
4132
+ }) : value : labelInValue ? (value === null || value === void 0 ? void 0 : value.value) && [value === null || value === void 0 ? void 0 : value.value] || [] : value && [value] || [];
4133
+ };
4134
+ var getRenderSource = function getRenderSource(currentSRKs, items) {
4135
+ // 创建映射对象 用于记录原始选中顺序
4136
+ var orderMap = new Map();
4137
+ currentSRKs.forEach(function (value, index) {
4138
+ orderMap.set(value, index);
4139
+ });
4140
+ // 被选中数据集合,获取之后排序
4141
+ var selectedOption = (items === null || items === void 0 ? void 0 : items.filter(function (option) {
4142
+ return currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.includes(option.value);
4143
+ })) || [];
4144
+ var selectedOptionSort = (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.sort(function (a, b) {
4145
+ var _orderMap$get, _orderMap$get2;
4146
+ return ((_orderMap$get = orderMap.get(a.value)) !== null && _orderMap$get !== void 0 ? _orderMap$get : Infinity) - ((_orderMap$get2 = orderMap.get(b.value)) !== null && _orderMap$get2 !== void 0 ? _orderMap$get2 : Infinity);
4147
+ })) || [];
4148
+ // 未选中数据集合
4149
+ var otherOptions = (items === null || items === void 0 ? void 0 : items.filter(function (option) {
4150
+ return !(currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.includes(option.value));
4151
+ })) || [];
4152
+ return [].concat(_toConsumableArray(selectedOptionSort), _toConsumableArray(otherOptions));
4153
+ };
4154
+ // ------------------------------------------处理数据相关--结束----------------------------------------
4126
4155
 
4127
4156
  var zhankaitiaojian = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%2224px%22%20height%3D%2224px%22%20viewBox%3D%220%200%2024%2024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%3Ctitle%3Ezhankaitiaojian-icon%3C%2Ftitle%3E%20%20%20%20%3Cdefs%3E%20%20%20%20%20%20%20%20%3Crect%20id%3D%22path-1%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2224%22%20height%3D%2224%22%3E%3C%2Frect%3E%20%20%20%20%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22%E9%A1%B5%E9%9D%A2-1%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cg%20id%3D%22icon%22%20transform%3D%22translate%28-702.000000%2C%20-498.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22zhankaitiaojian-icon%22%20transform%3D%22translate%28702.000000%2C%20498.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmask%20id%3D%22mask-2%22%20fill%3D%22white%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cuse%20xlink%3Ahref%3D%22%23path-1%22%3E%3C%2Fuse%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fmask%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cuse%20id%3D%22%E8%92%99%E7%89%88%22%20fill%3D%22%23D8D8D8%22%20opacity%3D%220%22%20xlink%3Ahref%3D%22%23path-1%22%3E%3C%2Fuse%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M12.0142082%2C6%20L18%2C11.9972435%20L12.0142082%2C18%20L11.04209%2C17.0260337%20L16.0562218%2C11.9972435%20L11.04209%2C6.97396631%20L12.0142082%2C6%20Z%20M6.97257658%2C6%20L12.9583683%2C11.9972435%20L6.97257658%2C18%20L6.00091666%2C17.0260337%20L11.0150485%2C11.9972435%20L6%2C6.97396631%20L6.97257658%2C6%20Z%22%20id%3D%22%E5%BD%A2%E7%8A%B6%22%20fill%3D%22%23005CFF%22%20fill-rule%3D%22nonzero%22%20mask%3D%22url%28%23mask-2%29%22%20transform%3D%22translate%2812.000000%2C%2012.000000%29%20rotate%28-270.000000%29%20translate%28-12.000000%2C%20-12.000000%29%20%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E";
4128
4157
 
@@ -4588,6 +4617,19 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
4588
4617
  });
4589
4618
  })) : [];
4590
4619
  }
4620
+ // 补充搜索项--选中的数据添加到数据源中去
4621
+ var currentSRKs = getCurrentSRKs(selectMode, labelInValue, value);
4622
+ if ((currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.length) && (currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.some(function (s) {
4623
+ var _source;
4624
+ return !((_source = source) === null || _source === void 0 ? void 0 : _source.find(function (r) {
4625
+ return r.value == s;
4626
+ }));
4627
+ }))) {
4628
+ var selectedOption = items.filter(function (option) {
4629
+ return currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.includes(option.value);
4630
+ }) || [];
4631
+ source = (source || []).concat(selectedOption);
4632
+ }
4591
4633
  // 数据源 不可以有重复key
4592
4634
  source = Array.isArray(source) ? _.uniqBy(source, 'value') : [];
4593
4635
  if (callback) {
@@ -5168,10 +5210,15 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5168
5210
  setSelectOpen(visible);
5169
5211
  // 关闭下拉框 如果首次本身就不展示数据的 没有选中数据-需要清空查询数据源; 首次展示的默认展示
5170
5212
  if (!visible && !(value === null || value === void 0 ? void 0 : value.length)) {
5171
- resetSelectDataSource();
5213
+ setTimeout(function () {
5214
+ // 延时 是为了避免 执行时候出现下拉框弹两次的问题-可以看到数据源从展示到显示空数据框的问题
5215
+ resetSelectDataSource();
5216
+ }, 200);
5172
5217
  }
5173
5218
  };
5174
5219
  var renderTable = function renderTable(dataSource) {
5220
+ var currentSRKs = getCurrentSRKs(selectMode, labelInValue, value);
5221
+ var renderSource = getRenderSource(currentSRKs, items);
5175
5222
  return /*#__PURE__*/React$1.createElement("div", {
5176
5223
  className: "search_select_dropdown_table ".concat(!selectMode ? 'search_select_dropdown_table1' : '')
5177
5224
  }, /*#__PURE__*/React$1.createElement(Table, _objectSpread2(_objectSpread2({
@@ -5181,9 +5228,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5181
5228
  rowSelection: {
5182
5229
  type: 'checkbox',
5183
5230
  columnWidth: '24px',
5184
- selectedRowKeys: labelInValue ? value === null || value === void 0 ? void 0 : value.map(function (s) {
5185
- return (s === null || s === void 0 ? void 0 : s.value) || s;
5186
- }) : value,
5231
+ selectedRowKeys: currentSRKs,
5187
5232
  preserveSelectedRowKeys: true,
5188
5233
  onChange: function onChange(sks, srs) {
5189
5234
  var oldSelect = (value === null || value === void 0 ? void 0 : value.map(function (s) {
@@ -5224,7 +5269,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5224
5269
  rowSelection: {
5225
5270
  type: 'radio',
5226
5271
  columnWidth: 0,
5227
- selectedRowKeys: labelInValue ? (value === null || value === void 0 ? void 0 : value.value) && [value === null || value === void 0 ? void 0 : value.value] || [] : value && [value] || []
5272
+ selectedRowKeys: currentSRKs
5228
5273
  },
5229
5274
  onRow: function onRow(record, rowKey) {
5230
5275
  return {
@@ -5236,7 +5281,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5236
5281
  }
5237
5282
  }), {}, {
5238
5283
  columns: (selectProps === null || selectProps === void 0 ? void 0 : selectProps.renderTableColumns) || [],
5239
- dataSource: items,
5284
+ dataSource: renderSource,
5240
5285
  size: "middle",
5241
5286
  pagination: false,
5242
5287
  rowKey: mappingValueField,
package/dist/index.js CHANGED
@@ -4106,6 +4106,7 @@ var ColSpan = 6; // 查询条件 每行col = 24 /columnsPerRow
4106
4106
  var handleSourceName = function handleSourceName(sName) {
4107
4107
  return sName;
4108
4108
  };
4109
+ // ------------------------------------------处理样式相关--开始----------------------------------------
4109
4110
  var getFormRowInfo = function getFormRowInfo(list) {
4110
4111
  var totalRows = Math.ceil(list.length / columnsPerRow); // 计算总行数
4111
4112
  var lastRowColumns = (list.length + 1) % columnsPerRow; // 计算最后一行的实际列数
@@ -4146,6 +4147,34 @@ var getTableHeigth = function getTableHeigth(list) {
4146
4147
  if (totalRows == 1) return 358; // modal弹窗760 调整为700 适应小屏
4147
4148
  return 411 - totalRows * 10;
4148
4149
  };
4150
+ // ------------------------------------------处理样式相关--结束----------------------------------------
4151
+ // ------------------------------------------处理数据相关--开始----------------------------------------
4152
+ var getCurrentSRKs = function getCurrentSRKs(selectMode, labelInValue, value) {
4153
+ return selectMode ? labelInValue ? value === null || value === void 0 ? void 0 : value.map(function (s) {
4154
+ return (s === null || s === void 0 ? void 0 : s.value) || s;
4155
+ }) : value : labelInValue ? (value === null || value === void 0 ? void 0 : value.value) && [value === null || value === void 0 ? void 0 : value.value] || [] : value && [value] || [];
4156
+ };
4157
+ var getRenderSource = function getRenderSource(currentSRKs, items) {
4158
+ // 创建映射对象 用于记录原始选中顺序
4159
+ var orderMap = new Map();
4160
+ currentSRKs.forEach(function (value, index) {
4161
+ orderMap.set(value, index);
4162
+ });
4163
+ // 被选中数据集合,获取之后排序
4164
+ var selectedOption = (items === null || items === void 0 ? void 0 : items.filter(function (option) {
4165
+ return currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.includes(option.value);
4166
+ })) || [];
4167
+ var selectedOptionSort = (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.sort(function (a, b) {
4168
+ var _orderMap$get, _orderMap$get2;
4169
+ return ((_orderMap$get = orderMap.get(a.value)) !== null && _orderMap$get !== void 0 ? _orderMap$get : Infinity) - ((_orderMap$get2 = orderMap.get(b.value)) !== null && _orderMap$get2 !== void 0 ? _orderMap$get2 : Infinity);
4170
+ })) || [];
4171
+ // 未选中数据集合
4172
+ var otherOptions = (items === null || items === void 0 ? void 0 : items.filter(function (option) {
4173
+ return !(currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.includes(option.value));
4174
+ })) || [];
4175
+ return [].concat(_toConsumableArray(selectedOptionSort), _toConsumableArray(otherOptions));
4176
+ };
4177
+ // ------------------------------------------处理数据相关--结束----------------------------------------
4149
4178
 
4150
4179
  var zhankaitiaojian = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%2224px%22%20height%3D%2224px%22%20viewBox%3D%220%200%2024%2024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%3Ctitle%3Ezhankaitiaojian-icon%3C%2Ftitle%3E%20%20%20%20%3Cdefs%3E%20%20%20%20%20%20%20%20%3Crect%20id%3D%22path-1%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2224%22%20height%3D%2224%22%3E%3C%2Frect%3E%20%20%20%20%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22%E9%A1%B5%E9%9D%A2-1%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cg%20id%3D%22icon%22%20transform%3D%22translate%28-702.000000%2C%20-498.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22zhankaitiaojian-icon%22%20transform%3D%22translate%28702.000000%2C%20498.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmask%20id%3D%22mask-2%22%20fill%3D%22white%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cuse%20xlink%3Ahref%3D%22%23path-1%22%3E%3C%2Fuse%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fmask%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cuse%20id%3D%22%E8%92%99%E7%89%88%22%20fill%3D%22%23D8D8D8%22%20opacity%3D%220%22%20xlink%3Ahref%3D%22%23path-1%22%3E%3C%2Fuse%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M12.0142082%2C6%20L18%2C11.9972435%20L12.0142082%2C18%20L11.04209%2C17.0260337%20L16.0562218%2C11.9972435%20L11.04209%2C6.97396631%20L12.0142082%2C6%20Z%20M6.97257658%2C6%20L12.9583683%2C11.9972435%20L6.97257658%2C18%20L6.00091666%2C17.0260337%20L11.0150485%2C11.9972435%20L6%2C6.97396631%20L6.97257658%2C6%20Z%22%20id%3D%22%E5%BD%A2%E7%8A%B6%22%20fill%3D%22%23005CFF%22%20fill-rule%3D%22nonzero%22%20mask%3D%22url%28%23mask-2%29%22%20transform%3D%22translate%2812.000000%2C%2012.000000%29%20rotate%28-270.000000%29%20translate%28-12.000000%2C%20-12.000000%29%20%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E";
4151
4180
 
@@ -4611,6 +4640,19 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
4611
4640
  });
4612
4641
  })) : [];
4613
4642
  }
4643
+ // 补充搜索项--选中的数据添加到数据源中去
4644
+ var currentSRKs = getCurrentSRKs(selectMode, labelInValue, value);
4645
+ if ((currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.length) && (currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.some(function (s) {
4646
+ var _source;
4647
+ return !((_source = source) === null || _source === void 0 ? void 0 : _source.find(function (r) {
4648
+ return r.value == s;
4649
+ }));
4650
+ }))) {
4651
+ var selectedOption = items.filter(function (option) {
4652
+ return currentSRKs === null || currentSRKs === void 0 ? void 0 : currentSRKs.includes(option.value);
4653
+ }) || [];
4654
+ source = (source || []).concat(selectedOption);
4655
+ }
4614
4656
  // 数据源 不可以有重复key
4615
4657
  source = Array.isArray(source) ? ___default['default'].uniqBy(source, 'value') : [];
4616
4658
  if (callback) {
@@ -5191,10 +5233,15 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5191
5233
  setSelectOpen(visible);
5192
5234
  // 关闭下拉框 如果首次本身就不展示数据的 没有选中数据-需要清空查询数据源; 首次展示的默认展示
5193
5235
  if (!visible && !(value === null || value === void 0 ? void 0 : value.length)) {
5194
- resetSelectDataSource();
5236
+ setTimeout(function () {
5237
+ // 延时 是为了避免 执行时候出现下拉框弹两次的问题-可以看到数据源从展示到显示空数据框的问题
5238
+ resetSelectDataSource();
5239
+ }, 200);
5195
5240
  }
5196
5241
  };
5197
5242
  var renderTable = function renderTable(dataSource) {
5243
+ var currentSRKs = getCurrentSRKs(selectMode, labelInValue, value);
5244
+ var renderSource = getRenderSource(currentSRKs, items);
5198
5245
  return /*#__PURE__*/React__default['default'].createElement("div", {
5199
5246
  className: "search_select_dropdown_table ".concat(!selectMode ? 'search_select_dropdown_table1' : '')
5200
5247
  }, /*#__PURE__*/React__default['default'].createElement(antd.Table, _objectSpread2(_objectSpread2({
@@ -5204,9 +5251,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5204
5251
  rowSelection: {
5205
5252
  type: 'checkbox',
5206
5253
  columnWidth: '24px',
5207
- selectedRowKeys: labelInValue ? value === null || value === void 0 ? void 0 : value.map(function (s) {
5208
- return (s === null || s === void 0 ? void 0 : s.value) || s;
5209
- }) : value,
5254
+ selectedRowKeys: currentSRKs,
5210
5255
  preserveSelectedRowKeys: true,
5211
5256
  onChange: function onChange(sks, srs) {
5212
5257
  var oldSelect = (value === null || value === void 0 ? void 0 : value.map(function (s) {
@@ -5247,7 +5292,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5247
5292
  rowSelection: {
5248
5293
  type: 'radio',
5249
5294
  columnWidth: 0,
5250
- selectedRowKeys: labelInValue ? (value === null || value === void 0 ? void 0 : value.value) && [value === null || value === void 0 ? void 0 : value.value] || [] : value && [value] || []
5295
+ selectedRowKeys: currentSRKs
5251
5296
  },
5252
5297
  onRow: function onRow(record, rowKey) {
5253
5298
  return {
@@ -5259,7 +5304,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5259
5304
  }
5260
5305
  }), {}, {
5261
5306
  columns: (selectProps === null || selectProps === void 0 ? void 0 : selectProps.renderTableColumns) || [],
5262
- dataSource: items,
5307
+ dataSource: renderSource,
5263
5308
  size: "middle",
5264
5309
  pagination: false,
5265
5310
  rowKey: mappingValueField,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bit-sun/business-component",
3
- "version": "4.0.12-alpha.11",
3
+ "version": "4.0.12-alpha.12",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",
@@ -8,7 +8,7 @@ import { stringify } from 'querystring';
8
8
  import _, { escapeRegExp, isNil, values } from "lodash"
9
9
  import './index.less';
10
10
  import { BusinessSearchSelect, QueryMutipleInput } from '@/index';
11
- import { handleSourceName, getFormRowInfo, hasMoreQueryFields, defaultVisibleFieldsCount, getRealStr, ColSpan, getTableHeigth } from './utils';
11
+ import { handleSourceName, getFormRowInfo, hasMoreQueryFields, defaultVisibleFieldsCount, getRealStr, ColSpan, getTableHeigth, getCurrentSRKs, getRenderSource } from './utils';
12
12
  import { judgeIsRequestError } from '@/utils/requestUtils';
13
13
  import zhankaitiaojian from '../../../assets/zhankaitiaojian-icon.svg';
14
14
 
@@ -403,8 +403,15 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
403
403
  })
404
404
  : [];
405
405
  }
406
+ // 补充搜索项--选中的数据添加到数据源中去
407
+ const currentSRKs = getCurrentSRKs(selectMode,labelInValue,value)
408
+ if(currentSRKs?.length && currentSRKs?.some(s=> !source?.find(r=> r.value==s))) {
409
+ const selectedOption = items.filter(option => currentSRKs?.includes(option.value))||[];
410
+ source = (source||[]).concat(selectedOption)
411
+ }
406
412
  // 数据源 不可以有重复key
407
413
  source = Array.isArray(source) ? _.uniqBy(source, 'value') : [];
414
+
408
415
  if(callback) {
409
416
  callback(source)
410
417
  } else {
@@ -918,10 +925,16 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
918
925
  setSelectOpen(visible);
919
926
  // 关闭下拉框 如果首次本身就不展示数据的 没有选中数据-需要清空查询数据源; 首次展示的默认展示
920
927
  if (!visible && !value?.length) {
921
- resetSelectDataSource()
928
+ setTimeout(() => {
929
+ // 延时 是为了避免 执行时候出现下拉框弹两次的问题-可以看到数据源从展示到显示空数据框的问题
930
+ resetSelectDataSource()
931
+ }, 200)
922
932
  }
923
933
  }
924
934
  const renderTable = (dataSource) => {
935
+ const currentSRKs = getCurrentSRKs(selectMode,labelInValue,value)
936
+ const renderSource = getRenderSource(currentSRKs,items)
937
+
925
938
  return (
926
939
  <div className={`search_select_dropdown_table ${!selectMode?'search_select_dropdown_table1':''}`}>
927
940
  <Table
@@ -931,7 +944,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
931
944
  rowSelection: {
932
945
  type: 'checkbox',
933
946
  columnWidth: '24px',
934
- selectedRowKeys: labelInValue ? value?.map(s=> (s?.value||s)) : value,
947
+ selectedRowKeys: currentSRKs,
935
948
  preserveSelectedRowKeys: true, // 避免搜索之后 没有了选中前的数据 保证sks的正确性
936
949
  onChange: (sks, srs) => {
937
950
  const oldSelect = value?.map(s => ({ value: s?.value||s }))||[];
@@ -955,7 +968,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
955
968
  rowSelection: {
956
969
  type: 'radio',
957
970
  columnWidth: 0,
958
- selectedRowKeys: labelInValue ? value?.value&&[value?.value]||[] : value&&[value]||[],
971
+ selectedRowKeys: currentSRKs,
959
972
  },
960
973
  onRow: (record, rowKey) => ({
961
974
  onClick: event => {
@@ -965,7 +978,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
965
978
  })
966
979
  })}
967
980
  columns={selectProps?.renderTableColumns||[]}
968
- dataSource={items}
981
+ dataSource={renderSource}
969
982
  size="middle"
970
983
  pagination={false}
971
984
  rowKey={mappingValueField}
@@ -4,6 +4,7 @@ export const handleSourceName = (sName: any) => {
4
4
  return sName
5
5
  }
6
6
 
7
+ // ------------------------------------------处理样式相关--开始----------------------------------------
7
8
  export const getFormRowInfo = (list: any) => {
8
9
  const totalRows = Math.ceil(list.length / columnsPerRow); // 计算总行数
9
10
  const lastRowColumns = (list.length+1) % columnsPerRow; // 计算最后一行的实际列数
@@ -35,4 +36,36 @@ export const getTableHeigth = (list: any) => {
35
36
  const totalRows = Math.ceil((list?.length+1) / 4);
36
37
  if(totalRows == 1) return 358; // modal弹窗760 调整为700 适应小屏
37
38
  return 411 - totalRows*10
38
- }
39
+ }
40
+
41
+ // ------------------------------------------处理样式相关--结束----------------------------------------
42
+
43
+
44
+ // ------------------------------------------处理数据相关--开始----------------------------------------
45
+ export const getCurrentSRKs = (selectMode: any,labelInValue:boolean,value: any) => {
46
+ return selectMode ? (labelInValue ? value?.map((s: any)=> (s?.value||s)) : value) : (labelInValue ? value?.value&&[value?.value]||[] : value&&[value]||[])
47
+ }
48
+
49
+ export const getRenderSource = (currentSRKs: any, items: any) => {
50
+ // 创建映射对象 用于记录原始选中顺序
51
+ const orderMap = new Map<number, number>();
52
+ currentSRKs.forEach((value: any, index: number) => {
53
+ orderMap.set(value, index);
54
+ });
55
+
56
+ // 被选中数据集合,获取之后排序
57
+ const selectedOption = items?.filter((option: any) => currentSRKs?.includes(option.value))||[];
58
+ const selectedOptionSort = selectedOption?.sort((a: any, b: any) => {
59
+ return (orderMap.get(a.value) ?? Infinity) - (orderMap.get(b.value) ?? Infinity);
60
+ })||[];
61
+
62
+ // 未选中数据集合
63
+ const otherOptions = items?.filter((option: any) => !currentSRKs?.includes(option.value))||[];
64
+
65
+ return [
66
+ ...selectedOptionSort,
67
+ ...otherOptions
68
+ ]
69
+ }
70
+
71
+ // ------------------------------------------处理数据相关--结束----------------------------------------