@bit-sun/business-component 4.2.0-alpha.8 → 4.2.0-alpha.9
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.
- package/.umirc.ts +9 -9
- package/dist/index.esm.js +69 -12
- package/dist/index.js +65 -8
- package/package.json +1 -1
- package/src/components/Functional/SearchSelect/index.tsx +62 -7
package/.umirc.ts
CHANGED
|
@@ -35,7 +35,7 @@ export default defineConfig({
|
|
|
35
35
|
proxy: {
|
|
36
36
|
'/bop/api/': {
|
|
37
37
|
// target: 'http://bitsun.product.app.business-operation-platform.v1-dev:8050', // 开发环境
|
|
38
|
-
target: 'https://
|
|
38
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 测试环境
|
|
39
39
|
// target: 'http://yxzttest.yangzijiang.com/', // 扬子江测试环境
|
|
40
40
|
// target: 'http://yxzt.yangzijiang.com/', // 扬子江测试环境
|
|
41
41
|
changeOrigin: true,
|
|
@@ -48,37 +48,37 @@ export default defineConfig({
|
|
|
48
48
|
// target: 'http://bitsun.product.app.business-operation-platform.v1-dev:8050', // 开发环境
|
|
49
49
|
// 英伦
|
|
50
50
|
// target: 'http://47.100.87.54:9102/', // 开发环境
|
|
51
|
-
target: 'https://
|
|
51
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 测试环境
|
|
52
52
|
// target: 'http://www.i-baby.net/', // 生产
|
|
53
53
|
changeOrigin: true,
|
|
54
54
|
// pathRewrite: { '^/wms-ops/': '/wms-ops/' }, // 开发环境
|
|
55
55
|
},
|
|
56
56
|
'/user/': {
|
|
57
|
-
target: 'https://
|
|
57
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 开发环境
|
|
58
58
|
changeOrigin: true,
|
|
59
59
|
},
|
|
60
60
|
'/drp-ops/': {
|
|
61
|
-
target: 'https://
|
|
61
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 开发环境
|
|
62
62
|
changeOrigin: true,
|
|
63
63
|
},
|
|
64
64
|
'/channel-manage/': {
|
|
65
|
-
target: 'https://
|
|
65
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 开发环境
|
|
66
66
|
changeOrigin: true,
|
|
67
67
|
},
|
|
68
68
|
'/items/': {
|
|
69
|
-
target: 'https://
|
|
69
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 开发环境
|
|
70
70
|
changeOrigin: true,
|
|
71
71
|
},
|
|
72
72
|
'/stock/': {
|
|
73
|
-
target: 'https://
|
|
73
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 开发环境
|
|
74
74
|
changeOrigin: true,
|
|
75
75
|
},
|
|
76
76
|
'/basic/': {
|
|
77
|
-
target: 'https://
|
|
77
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 开发环境
|
|
78
78
|
changeOrigin: true,
|
|
79
79
|
},
|
|
80
80
|
'/srm-ops/': {
|
|
81
|
-
target: 'https://
|
|
81
|
+
target: 'https://ocean-test.bitsun-inc.com/', // 开发环境
|
|
82
82
|
changeOrigin: true,
|
|
83
83
|
},
|
|
84
84
|
},
|
package/dist/index.esm.js
CHANGED
|
@@ -2,7 +2,7 @@ import axios from 'axios';
|
|
|
2
2
|
import request$1 from 'umi-request';
|
|
3
3
|
import cookie from 'js-cookie';
|
|
4
4
|
import { message as message$1, Tooltip, Image, Popover, Card, Avatar, Badge, Menu, Input, InputNumber, Space, Button, Dropdown, Upload, Checkbox, Modal, ConfigProvider, Tag, Select, Spin, Form, Table, Empty, Row, Col, Tabs, TreeSelect, DatePicker, Typography, Alert, Breadcrumb, Drawer as Drawer$1, List, Radio, Tree, Result, Affix, Cascader, TimePicker, Divider, Switch, Collapse } from 'antd';
|
|
5
|
-
import _, { omit, uniqBy, escapeRegExp, isNil,
|
|
5
|
+
import _, { omit, uniqBy, escapeRegExp, isNil, cloneDeep, isEmpty, isBoolean, debounce, throttle } from 'lodash';
|
|
6
6
|
import memoizeOne from 'memoize-one';
|
|
7
7
|
import { formatMessage, history, useLocation, Link, useModel, setLocale, useIntl, request as request$3 } from 'umi';
|
|
8
8
|
import isEqual from 'lodash/isEqual';
|
|
@@ -21,7 +21,7 @@ import { SortableHandle, SortableElement, SortableContainer } from 'react-sortab
|
|
|
21
21
|
import { arrayMoveImmutable } from 'array-move';
|
|
22
22
|
import classNames from 'classnames';
|
|
23
23
|
import ProLayout from '@ant-design/pro-layout';
|
|
24
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
24
|
+
import cloneDeep$1 from 'lodash/cloneDeep';
|
|
25
25
|
import debounce$1 from 'lodash/debounce';
|
|
26
26
|
import { DndProvider, useDrop, useDrag } from 'react-dnd';
|
|
27
27
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
@@ -5743,6 +5743,29 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
5743
5743
|
removeListener();
|
|
5744
5744
|
};
|
|
5745
5745
|
}, [isModalVisible]);
|
|
5746
|
+
var safeJSONParse = function safeJSONParse(str) {
|
|
5747
|
+
try {
|
|
5748
|
+
return JSON.parse(str);
|
|
5749
|
+
} catch (error) {
|
|
5750
|
+
console.warn('JSON解析失败:', error);
|
|
5751
|
+
return null;
|
|
5752
|
+
}
|
|
5753
|
+
};
|
|
5754
|
+
// 获取回显的value值 如果开启了搜索条件 则需要过滤掉搜索条件
|
|
5755
|
+
var getShowValue = function getShowValue(value) {
|
|
5756
|
+
var newValue = cloneDeep(value);
|
|
5757
|
+
if (selectProps.useSearchCondition && newValue) {
|
|
5758
|
+
// 回显的时候 把搜索项的内容去掉
|
|
5759
|
+
if (selectMode) {
|
|
5760
|
+
newValue = newValue.filter(function (item) {
|
|
5761
|
+
var parsedItem = safeJSONParse(decodeURIComponent(item));
|
|
5762
|
+
// 过滤掉JSON对象(搜索条件),保留非JSON数据(实际选择项)
|
|
5763
|
+
return !parsedItem || !(parsedItem && _typeof(parsedItem) === 'object' && !Array.isArray(parsedItem));
|
|
5764
|
+
});
|
|
5765
|
+
}
|
|
5766
|
+
}
|
|
5767
|
+
return newValue;
|
|
5768
|
+
};
|
|
5746
5769
|
var showModal = function showModal() {
|
|
5747
5770
|
if (sDisabled) return;
|
|
5748
5771
|
setSelectOpen(false);
|
|
@@ -5752,12 +5775,13 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
5752
5775
|
// 回显
|
|
5753
5776
|
if (value) {
|
|
5754
5777
|
if (selectMode) {
|
|
5755
|
-
|
|
5778
|
+
var newValue = getShowValue(value);
|
|
5779
|
+
setSelectedRowKeys(labelInValue ? newValue.map(function (i) {
|
|
5756
5780
|
return i.key;
|
|
5757
|
-
}) :
|
|
5758
|
-
setSelectedRows(labelInValue ?
|
|
5781
|
+
}) : newValue);
|
|
5782
|
+
setSelectedRows(labelInValue ? newValue.map(function (i) {
|
|
5759
5783
|
return _defineProperty(_defineProperty(_defineProperty({}, mappingValueField, i.key), "value", i.key), "text", i.label);
|
|
5760
|
-
}) :
|
|
5784
|
+
}) : newValue.map(function (i) {
|
|
5761
5785
|
return _defineProperty(_defineProperty({}, mappingValueField, i), "value", i);
|
|
5762
5786
|
}));
|
|
5763
5787
|
setPopValue(labelInValue ? value.map(function (i) {
|
|
@@ -5794,7 +5818,24 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
5794
5818
|
formaData(selectedValue, source);
|
|
5795
5819
|
} else {
|
|
5796
5820
|
var formatResult = selectMode ? [] : null;
|
|
5797
|
-
|
|
5821
|
+
// 支持使用查询条件 筛选
|
|
5822
|
+
if (selectProps.useSearchCondition) {
|
|
5823
|
+
var formValue = form.getFieldsValue();
|
|
5824
|
+
// 一次性处理数据转换和过滤
|
|
5825
|
+
var processedFormValue = Object.keys(formValue).reduce(function (acc, key) {
|
|
5826
|
+
var value = formValue[key];
|
|
5827
|
+
// 过滤空值(确保trim函数存在)
|
|
5828
|
+
var trimmedValue = typeof value === 'string' ? value.trim() : value;
|
|
5829
|
+
if (trimmedValue && trimmedValue !== '') {
|
|
5830
|
+
acc[key] = trimmedValue;
|
|
5831
|
+
}
|
|
5832
|
+
return acc;
|
|
5833
|
+
}, {});
|
|
5834
|
+
var result = encodeURIComponent(JSON.stringify(processedFormValue));
|
|
5835
|
+
onChange(isEmpty(processedFormValue) ? formatResult : selectMode ? [result] : result, selectedValue);
|
|
5836
|
+
} else {
|
|
5837
|
+
onChange(formatResult, selectedValue);
|
|
5838
|
+
}
|
|
5798
5839
|
}
|
|
5799
5840
|
};
|
|
5800
5841
|
var handleOk = function handleOk() {
|
|
@@ -5824,7 +5865,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
5824
5865
|
setConfirmLoading(false);
|
|
5825
5866
|
});
|
|
5826
5867
|
} else {
|
|
5827
|
-
handleSelectOver(popvalue);
|
|
5868
|
+
handleSelectOver(selectedRows.length ? popvalue : []);
|
|
5828
5869
|
handleCancel();
|
|
5829
5870
|
}
|
|
5830
5871
|
};
|
|
@@ -6450,9 +6491,25 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
6450
6491
|
confirmLoading: confirmLoading,
|
|
6451
6492
|
onOk: handleOk,
|
|
6452
6493
|
onCancel: handleCancel,
|
|
6453
|
-
footer: selectMode || (modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.modalRadioNeedFooter) ? [/*#__PURE__*/React$1.createElement(
|
|
6494
|
+
footer: selectMode || (modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.modalRadioNeedFooter) ? [selectProps.useSearchCondition ? (/*#__PURE__*/React$1.createElement("div", {
|
|
6495
|
+
key: "instructions",
|
|
6496
|
+
style: {
|
|
6497
|
+
position: 'absolute',
|
|
6498
|
+
width: 'calc(100% - 500px)',
|
|
6499
|
+
textAlign: 'left'
|
|
6500
|
+
}
|
|
6501
|
+
}, /*#__PURE__*/React$1.createElement("div", null, "\u64CD\u4F5C\u8BF4\u660E\uFF1A\u7ED3\u679C\u96C6\u8FC7\u591A\u65F6\uFF0C\u53EF\u65E0\u9700\u9009\u62E9\u5177\u4F53\u6570\u636E\uFF0C\u7CFB\u7EDF\u5C06\u76F4\u63A5\u6309\u5DF2\u8BBE\u7B5B\u9009\u6761\u4EF6\u67E5\u8BE2"), /*#__PURE__*/React$1.createElement(Input, {
|
|
6502
|
+
style: {
|
|
6503
|
+
marginTop: '3px',
|
|
6504
|
+
height: '22px'
|
|
6505
|
+
},
|
|
6506
|
+
value: value
|
|
6507
|
+
}))) : /*#__PURE__*/React$1.createElement(React$1.Fragment, null), /*#__PURE__*/React$1.createElement(Button, {
|
|
6454
6508
|
key: "back",
|
|
6455
|
-
onClick: handleCancel
|
|
6509
|
+
onClick: handleCancel,
|
|
6510
|
+
style: {
|
|
6511
|
+
margin: selectProps.useSearchCondition ? '10px 0' : 0
|
|
6512
|
+
}
|
|
6456
6513
|
}, "\u53D6\u6D88"), /*#__PURE__*/React$1.createElement(Button, {
|
|
6457
6514
|
key: "submit",
|
|
6458
6515
|
type: "primary",
|
|
@@ -20215,7 +20272,7 @@ var searchMenuData = function searchMenuData(router, name, callBack) {
|
|
|
20215
20272
|
}
|
|
20216
20273
|
var btnAuth = JSON.parse(localStorage.getItem(getMenuAuthDataKey()) || '[]');
|
|
20217
20274
|
var resultList = [];
|
|
20218
|
-
var newRouter = cloneDeep(router);
|
|
20275
|
+
var newRouter = cloneDeep$1(router);
|
|
20219
20276
|
var _deep = function deep(router) {
|
|
20220
20277
|
if (router && Array.isArray(router)) {
|
|
20221
20278
|
router.forEach(function (item) {
|
|
@@ -21156,7 +21213,7 @@ var GlobalHeaderCom = function GlobalHeaderCom(props) {
|
|
|
21156
21213
|
};
|
|
21157
21214
|
var initRoute = function initRoute(router, name) {
|
|
21158
21215
|
var resultList = [];
|
|
21159
|
-
var newRouter = cloneDeep
|
|
21216
|
+
var newRouter = cloneDeep(router);
|
|
21160
21217
|
var btnAuth = JSON.parse(localStorage.getItem(getMenuAuthDataKey()) || '[]');
|
|
21161
21218
|
var _deep = function deep(router) {
|
|
21162
21219
|
if (router && Array.isArray(router)) {
|
package/dist/index.js
CHANGED
|
@@ -5766,6 +5766,29 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
|
|
|
5766
5766
|
removeListener();
|
|
5767
5767
|
};
|
|
5768
5768
|
}, [isModalVisible]);
|
|
5769
|
+
var safeJSONParse = function safeJSONParse(str) {
|
|
5770
|
+
try {
|
|
5771
|
+
return JSON.parse(str);
|
|
5772
|
+
} catch (error) {
|
|
5773
|
+
console.warn('JSON解析失败:', error);
|
|
5774
|
+
return null;
|
|
5775
|
+
}
|
|
5776
|
+
};
|
|
5777
|
+
// 获取回显的value值 如果开启了搜索条件 则需要过滤掉搜索条件
|
|
5778
|
+
var getShowValue = function getShowValue(value) {
|
|
5779
|
+
var newValue = _.cloneDeep(value);
|
|
5780
|
+
if (selectProps.useSearchCondition && newValue) {
|
|
5781
|
+
// 回显的时候 把搜索项的内容去掉
|
|
5782
|
+
if (selectMode) {
|
|
5783
|
+
newValue = newValue.filter(function (item) {
|
|
5784
|
+
var parsedItem = safeJSONParse(decodeURIComponent(item));
|
|
5785
|
+
// 过滤掉JSON对象(搜索条件),保留非JSON数据(实际选择项)
|
|
5786
|
+
return !parsedItem || !(parsedItem && _typeof(parsedItem) === 'object' && !Array.isArray(parsedItem));
|
|
5787
|
+
});
|
|
5788
|
+
}
|
|
5789
|
+
}
|
|
5790
|
+
return newValue;
|
|
5791
|
+
};
|
|
5769
5792
|
var showModal = function showModal() {
|
|
5770
5793
|
if (sDisabled) return;
|
|
5771
5794
|
setSelectOpen(false);
|
|
@@ -5775,12 +5798,13 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
|
|
|
5775
5798
|
// 回显
|
|
5776
5799
|
if (value) {
|
|
5777
5800
|
if (selectMode) {
|
|
5778
|
-
|
|
5801
|
+
var newValue = getShowValue(value);
|
|
5802
|
+
setSelectedRowKeys(labelInValue ? newValue.map(function (i) {
|
|
5779
5803
|
return i.key;
|
|
5780
|
-
}) :
|
|
5781
|
-
setSelectedRows(labelInValue ?
|
|
5804
|
+
}) : newValue);
|
|
5805
|
+
setSelectedRows(labelInValue ? newValue.map(function (i) {
|
|
5782
5806
|
return _defineProperty(_defineProperty(_defineProperty({}, mappingValueField, i.key), "value", i.key), "text", i.label);
|
|
5783
|
-
}) :
|
|
5807
|
+
}) : newValue.map(function (i) {
|
|
5784
5808
|
return _defineProperty(_defineProperty({}, mappingValueField, i), "value", i);
|
|
5785
5809
|
}));
|
|
5786
5810
|
setPopValue(labelInValue ? value.map(function (i) {
|
|
@@ -5817,7 +5841,24 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
|
|
|
5817
5841
|
formaData(selectedValue, source);
|
|
5818
5842
|
} else {
|
|
5819
5843
|
var formatResult = selectMode ? [] : null;
|
|
5820
|
-
|
|
5844
|
+
// 支持使用查询条件 筛选
|
|
5845
|
+
if (selectProps.useSearchCondition) {
|
|
5846
|
+
var formValue = form.getFieldsValue();
|
|
5847
|
+
// 一次性处理数据转换和过滤
|
|
5848
|
+
var processedFormValue = Object.keys(formValue).reduce(function (acc, key) {
|
|
5849
|
+
var value = formValue[key];
|
|
5850
|
+
// 过滤空值(确保trim函数存在)
|
|
5851
|
+
var trimmedValue = typeof value === 'string' ? value.trim() : value;
|
|
5852
|
+
if (trimmedValue && trimmedValue !== '') {
|
|
5853
|
+
acc[key] = trimmedValue;
|
|
5854
|
+
}
|
|
5855
|
+
return acc;
|
|
5856
|
+
}, {});
|
|
5857
|
+
var result = encodeURIComponent(JSON.stringify(processedFormValue));
|
|
5858
|
+
onChange(_.isEmpty(processedFormValue) ? formatResult : selectMode ? [result] : result, selectedValue);
|
|
5859
|
+
} else {
|
|
5860
|
+
onChange(formatResult, selectedValue);
|
|
5861
|
+
}
|
|
5821
5862
|
}
|
|
5822
5863
|
};
|
|
5823
5864
|
var handleOk = function handleOk() {
|
|
@@ -5847,7 +5888,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
|
|
|
5847
5888
|
setConfirmLoading(false);
|
|
5848
5889
|
});
|
|
5849
5890
|
} else {
|
|
5850
|
-
handleSelectOver(popvalue);
|
|
5891
|
+
handleSelectOver(selectedRows.length ? popvalue : []);
|
|
5851
5892
|
handleCancel();
|
|
5852
5893
|
}
|
|
5853
5894
|
};
|
|
@@ -6473,9 +6514,25 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
|
|
|
6473
6514
|
confirmLoading: confirmLoading,
|
|
6474
6515
|
onOk: handleOk,
|
|
6475
6516
|
onCancel: handleCancel,
|
|
6476
|
-
footer: selectMode || (modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.modalRadioNeedFooter) ? [/*#__PURE__*/React__default['default'].createElement(
|
|
6517
|
+
footer: selectMode || (modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.modalRadioNeedFooter) ? [selectProps.useSearchCondition ? (/*#__PURE__*/React__default['default'].createElement("div", {
|
|
6518
|
+
key: "instructions",
|
|
6519
|
+
style: {
|
|
6520
|
+
position: 'absolute',
|
|
6521
|
+
width: 'calc(100% - 500px)',
|
|
6522
|
+
textAlign: 'left'
|
|
6523
|
+
}
|
|
6524
|
+
}, /*#__PURE__*/React__default['default'].createElement("div", null, "\u64CD\u4F5C\u8BF4\u660E\uFF1A\u7ED3\u679C\u96C6\u8FC7\u591A\u65F6\uFF0C\u53EF\u65E0\u9700\u9009\u62E9\u5177\u4F53\u6570\u636E\uFF0C\u7CFB\u7EDF\u5C06\u76F4\u63A5\u6309\u5DF2\u8BBE\u7B5B\u9009\u6761\u4EF6\u67E5\u8BE2"), /*#__PURE__*/React__default['default'].createElement(antd.Input, {
|
|
6525
|
+
style: {
|
|
6526
|
+
marginTop: '3px',
|
|
6527
|
+
height: '22px'
|
|
6528
|
+
},
|
|
6529
|
+
value: value
|
|
6530
|
+
}))) : /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null), /*#__PURE__*/React__default['default'].createElement(antd.Button, {
|
|
6477
6531
|
key: "back",
|
|
6478
|
-
onClick: handleCancel
|
|
6532
|
+
onClick: handleCancel,
|
|
6533
|
+
style: {
|
|
6534
|
+
margin: selectProps.useSearchCondition ? '10px 0' : 0
|
|
6535
|
+
}
|
|
6479
6536
|
}, "\u53D6\u6D88"), /*#__PURE__*/React__default['default'].createElement(antd.Button, {
|
|
6480
6537
|
key: "submit",
|
|
6481
6538
|
type: "primary",
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@ import { useDebounceFn } from 'ahooks';
|
|
|
4
4
|
import { Input, Button, Modal, Select, Divider, message, Spin, Form, Table, Checkbox, TreeSelect, Tooltip, Tag, Row, Col, Space, Tabs, Empty, DatePicker } from 'antd';
|
|
5
5
|
import { SearchOutlined, CopyOutlined, CaretLeftOutlined } from '@ant-design/icons';
|
|
6
6
|
import request from '@/utils/request';
|
|
7
|
-
import _, { escapeRegExp, isNil, values } from "lodash"
|
|
7
|
+
import _, { escapeRegExp, isNil, values, cloneDeep, isEmpty } from "lodash"
|
|
8
8
|
import './index.less';
|
|
9
9
|
import { BusinessSearchSelect, QueryMutipleInput, QueryMutipleSearchSelect } from '@/index';
|
|
10
10
|
import { handleSourceName, getFormRowInfo, hasMoreQueryFields, defaultVisibleFieldsCount, getRealStr, getTableHeigth, getCurrentSRKs, getRenderSource, handleParams, convertUrlQueryParams, convertBodyParams, formatSelectedValue, convertResData, makeUniqueValue, handleSelectOptionsShowValue, LightHeightOption, maxTagPlaceholder, getShowStr, handleTableColumns } from './utils';
|
|
@@ -362,6 +362,30 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
|
|
|
362
362
|
};
|
|
363
363
|
},[isModalVisible])
|
|
364
364
|
|
|
365
|
+
const safeJSONParse = (str: string) => {
|
|
366
|
+
try {
|
|
367
|
+
return JSON.parse(str);
|
|
368
|
+
} catch (error) {
|
|
369
|
+
console.warn('JSON解析失败:', error);
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// 获取回显的value值 如果开启了搜索条件 则需要过滤掉搜索条件
|
|
375
|
+
const getShowValue = (value: any) => {
|
|
376
|
+
let newValue = cloneDeep(value);
|
|
377
|
+
if(selectProps.useSearchCondition && newValue) {
|
|
378
|
+
// 回显的时候 把搜索项的内容去掉
|
|
379
|
+
if(selectMode) {
|
|
380
|
+
newValue = newValue.filter((item: any) => {
|
|
381
|
+
const parsedItem = safeJSONParse(decodeURIComponent(item));
|
|
382
|
+
// 过滤掉JSON对象(搜索条件),保留非JSON数据(实际选择项)
|
|
383
|
+
return !parsedItem || !(parsedItem && typeof parsedItem === 'object' && !Array.isArray(parsedItem));
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return newValue;
|
|
388
|
+
}
|
|
365
389
|
const showModal = () => {
|
|
366
390
|
if(sDisabled) return;
|
|
367
391
|
|
|
@@ -373,8 +397,9 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
|
|
|
373
397
|
// 回显
|
|
374
398
|
if (value) {
|
|
375
399
|
if (selectMode) {
|
|
376
|
-
|
|
377
|
-
|
|
400
|
+
const newValue = getShowValue(value);
|
|
401
|
+
setSelectedRowKeys(labelInValue ? newValue.map(i => i.key) : newValue)
|
|
402
|
+
setSelectedRows(labelInValue ? newValue.map(i => ({ [mappingValueField]: i.key, value: i.key, text: i.label })) : newValue.map(i => ({ [mappingValueField]: i, value: i })))
|
|
378
403
|
setPopValue(labelInValue ? value.map(i => ({ value: i.key, text: i.label })) : value.map(i => ({ value: i })));
|
|
379
404
|
setIndeterminate(!!value.length && value.length < itemsTotal);
|
|
380
405
|
setCheckedAll(itemsTotal && value.length === itemsTotal);
|
|
@@ -395,8 +420,25 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
|
|
|
395
420
|
setSelectDataSource(source,source?.length)
|
|
396
421
|
formaData(selectedValue, source);
|
|
397
422
|
} else {
|
|
398
|
-
|
|
399
|
-
|
|
423
|
+
var formatResult = selectMode ? [] : null;
|
|
424
|
+
// 支持使用查询条件 筛选
|
|
425
|
+
if (selectProps.useSearchCondition) {
|
|
426
|
+
var formValue = form.getFieldsValue();
|
|
427
|
+
// 一次性处理数据转换和过滤
|
|
428
|
+
var processedFormValue = Object.keys(formValue).reduce(function (acc, key) {
|
|
429
|
+
var value = formValue[key];
|
|
430
|
+
// 过滤空值(确保trim函数存在)
|
|
431
|
+
var trimmedValue = typeof value === 'string' ? value.trim() : value;
|
|
432
|
+
if (trimmedValue && trimmedValue !== '') {
|
|
433
|
+
acc[key] = trimmedValue;
|
|
434
|
+
}
|
|
435
|
+
return acc;
|
|
436
|
+
}, {});
|
|
437
|
+
const result = encodeURIComponent(JSON.stringify(processedFormValue))
|
|
438
|
+
onChange(isEmpty(processedFormValue) ? formatResult : selectMode ? [result] : result, selectedValue);
|
|
439
|
+
} else {
|
|
440
|
+
onChange(formatResult, selectedValue);
|
|
441
|
+
}
|
|
400
442
|
}
|
|
401
443
|
}
|
|
402
444
|
const handleOk = () => {
|
|
@@ -426,7 +468,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
|
|
|
426
468
|
setConfirmLoading(false)
|
|
427
469
|
})
|
|
428
470
|
} else {
|
|
429
|
-
handleSelectOver(popvalue)
|
|
471
|
+
handleSelectOver(selectedRows.length ? popvalue : [])
|
|
430
472
|
handleCancel();
|
|
431
473
|
}
|
|
432
474
|
};
|
|
@@ -934,7 +976,20 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
|
|
|
934
976
|
footer={
|
|
935
977
|
selectMode || modalTableProps?.modalRadioNeedFooter
|
|
936
978
|
? [
|
|
937
|
-
|
|
979
|
+
selectProps.useSearchCondition ? (
|
|
980
|
+
<div
|
|
981
|
+
key="instructions"
|
|
982
|
+
style={{
|
|
983
|
+
position: 'absolute',
|
|
984
|
+
width: 'calc(100% - 500px)',
|
|
985
|
+
textAlign: 'left'
|
|
986
|
+
}}
|
|
987
|
+
>
|
|
988
|
+
<div>操作说明:结果集过多时,可无需选择具体数据,系统将直接按已设筛选条件查询</div>
|
|
989
|
+
<Input style={{marginTop: '3px', height: '22px'}} value={value} />
|
|
990
|
+
</div>
|
|
991
|
+
) : <></>,
|
|
992
|
+
<Button key="back" onClick={handleCancel} style={{margin: selectProps.useSearchCondition ? '10px 0' : 0}}>
|
|
938
993
|
取消
|
|
939
994
|
</Button>,
|
|
940
995
|
<Button
|