@cloudbase/weda-ui 3.30.0 → 3.31.0
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/README.md +77 -0
- package/dist/configs/components/button.d.ts +5 -4
- package/dist/configs/components/calendar.d.ts +1 -1
- package/dist/configs/components/chart/bar.d.ts +1 -1
- package/dist/configs/components/chart/line.d.ts +1 -1
- package/dist/configs/components/chart/pie.d.ts +1 -1
- package/dist/configs/components/chart/statisticsCard.d.ts +2 -2
- package/dist/configs/components/form-date.d.ts +2 -2
- package/dist/configs/components/form-depart-tree-select.d.ts +2 -2
- package/dist/configs/components/form-email.d.ts +2 -2
- package/dist/configs/components/form-image-uploader.d.ts +2 -2
- package/dist/configs/components/form-input.d.ts +4 -4
- package/dist/configs/components/form-location.d.ts +6 -6
- package/dist/configs/components/form-multi-region.d.ts +2 -2
- package/dist/configs/components/form-phone.d.ts +2 -2
- package/dist/configs/components/form-region.d.ts +2 -2
- package/dist/configs/components/form-select-multiple.d.ts +2 -2
- package/dist/configs/components/form-select.d.ts +2 -2
- package/dist/configs/components/form-text-area.d.ts +2 -2
- package/dist/configs/components/form-time.d.ts +2 -2
- package/dist/configs/components/form-url.d.ts +2 -2
- package/dist/configs/components/form-user-tree-select.d.ts +2 -2
- package/dist/configs/components/grid/col.d.ts +6 -6
- package/dist/configs/components/grid/row.d.ts +4 -4
- package/dist/configs/components/image.d.ts +4 -4
- package/dist/configs/components/link.d.ts +1 -0
- package/dist/configs/components/modal.d.ts +1 -0
- package/dist/configs/components/qr_code.d.ts +1 -1
- package/dist/configs/components/swiper.d.ts +2 -0
- package/dist/configs/components/swiper.js +25 -6
- package/dist/configs/components/tabs.d.ts +1 -0
- package/dist/configs/components/wd-bubble.d.ts +7 -6
- package/dist/configs/components/wd-button.d.ts +1 -1
- package/dist/configs/components/wd-calendar.d.ts +1 -1
- package/dist/configs/components/wd-canvas.d.ts +1 -1
- package/dist/configs/components/wd-card.d.ts +1 -0
- package/dist/configs/components/wd-cascader.d.ts +9 -9
- package/dist/configs/components/wd-checkbox.d.ts +3 -3
- package/dist/configs/components/wd-code-editor.d.ts +3 -3
- package/dist/configs/components/wd-date-range.d.ts +8 -8
- package/dist/configs/components/wd-date.d.ts +8 -8
- package/dist/configs/components/wd-department.d.ts +11 -11
- package/dist/configs/components/wd-drawer.d.ts +1 -0
- package/dist/configs/components/wd-form-arr.d.ts +3 -3
- package/dist/configs/components/wd-form-detail.d.ts +2 -2
- package/dist/configs/components/wd-form-obj.d.ts +3 -3
- package/dist/configs/components/wd-form.d.ts +7 -6
- package/dist/configs/components/wd-icon.d.ts +2 -2
- package/dist/configs/components/wd-image.d.ts +4 -4
- package/dist/configs/components/wd-input-email.d.ts +35 -35
- package/dist/configs/components/wd-input-number.d.ts +10 -10
- package/dist/configs/components/wd-input-phone.d.ts +37 -35
- package/dist/configs/components/wd-input-phone.js +22 -3
- package/dist/configs/components/wd-input-url.d.ts +35 -35
- package/dist/configs/components/wd-input.d.ts +5 -5
- package/dist/configs/components/wd-layout.d.ts +1 -0
- package/dist/configs/components/wd-link.d.ts +1 -0
- package/dist/configs/components/wd-location.d.ts +5 -5
- package/dist/configs/components/wd-member.d.ts +13 -13
- package/dist/configs/components/wd-menu-layout.d.ts +7 -6
- package/dist/configs/components/wd-modal.d.ts +1 -0
- package/dist/configs/components/wd-progress.d.ts +7 -6
- package/dist/configs/components/wd-radio.d.ts +3 -3
- package/dist/configs/components/wd-rating.d.ts +6 -6
- package/dist/configs/components/wd-region.d.ts +9 -9
- package/dist/configs/components/wd-rich-text.d.ts +3 -3
- package/dist/configs/components/wd-select-multiple.d.ts +10 -10
- package/dist/configs/components/wd-select.d.ts +9 -9
- package/dist/configs/components/wd-side-tab.d.ts +2 -1
- package/dist/configs/components/wd-switch.d.ts +6 -6
- package/dist/configs/components/wd-table.d.ts +10 -9
- package/dist/configs/components/wd-tag-select.d.ts +7 -7
- package/dist/configs/components/wd-text.d.ts +3 -3
- package/dist/configs/components/wd-textarea.d.ts +3 -3
- package/dist/configs/components/wd-time.d.ts +8 -8
- package/dist/configs/components/wd-top-tab.d.ts +2 -1
- package/dist/configs/components/wd-tree.d.ts +1 -0
- package/dist/configs/components/wd-upload-file.d.ts +5 -5
- package/dist/configs/components/wd-upload-image.d.ts +13 -13
- package/dist/configs/components/wedaVideo.d.ts +2 -2
- package/dist/configs/components/wxOpenApi/phone.d.ts +2 -2
- package/dist/configs/components/wxOpenApi/phoneCode.d.ts +1 -1
- package/dist/configs/components/wxOpenApi/share.d.ts +2 -2
- package/dist/configs/components/wxOpenApi/userInfo.d.ts +4 -4
- package/dist/configs/index.d.ts +533 -528
- package/dist/configs/type-utils/index.d.ts +1 -1
- package/dist/configs/type-utils/type-form.js +2 -2
- package/dist/style/index.css +4 -0
- package/dist/style/index.scss +1 -1
- package/dist/style/weda-ui.min.css +2 -2
- package/dist/web/components/chart/common/chart-custom-connector.d.ts +1 -0
- package/dist/web/components/flow/common/hooks/useFlowConfig.d.ts +1 -0
- package/dist/web/components/flow/modules/basic/Basic.d.ts +1 -0
- package/dist/web/components/flow/modules/basic/BasicMobile.d.ts +1 -0
- package/dist/web/components/flow/modules/combination/index.d.ts +1 -0
- package/dist/web/components/flow/modules/operations/control.d.ts +1 -0
- package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/drawer-form/index.d.ts +1 -0
- package/dist/web/components/flow/modules/operations/controls-items/flow-task-info-modal/view-model.d.ts +1 -0
- package/dist/web/components/flow/modules/operations/controls-items/flow-task-info-modal.d.ts +1 -0
- package/dist/web/components/flow/modules/operations/controls-items/index.d.ts +1 -0
- package/dist/web/components/flow/modules/operations/view-model.d.ts +1 -0
- package/dist/web/components/flow/process/constants.d.ts +3 -3
- package/dist/web/components/form/enumSelect/NormalSelect.d.ts +1 -0
- package/dist/web/components/form/location/common/useLocationInfo.d.ts +1 -0
- package/dist/web/components/form/select/h5.d.ts +1 -1
- package/dist/web/components/form/uploaderFile/uploadFile.h5.js +2 -2
- package/dist/web/components/form/userOrgSelect/component/depart-breadcrumb.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/depart-select/org-modal-pc.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/error-tips.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/input-tags.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/modal-search-h5.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/modal-search.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/modal-select-h5.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/org-tree-h5.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/org-tree.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/selected-list-h5.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/selected-list.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/user-org-list.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-list-h5.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/error-tips.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/model-user-list.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/org-tree.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-model.d.ts +1 -0
- package/dist/web/components/form-date/index.d.ts +9 -9
- package/dist/web/components/form-depart-tree-select/index.d.ts +9 -9
- package/dist/web/components/form-email/index.d.ts +7 -7
- package/dist/web/components/form-image-uploader/index.d.ts +9 -9
- package/dist/web/components/form-input/index.d.ts +14 -14
- package/dist/web/components/form-input-hooks/index.d.ts +1 -1
- package/dist/web/components/form-location/index.d.ts +13 -13
- package/dist/web/components/form-multi-region/index.d.ts +7 -7
- package/dist/web/components/form-phone/index.d.ts +7 -7
- package/dist/web/components/form-radio/index.d.ts +7 -7
- package/dist/web/components/form-region/index.d.ts +7 -7
- package/dist/web/components/form-rich-text/index.d.ts +5 -5
- package/dist/web/components/form-select/index.d.ts +12 -12
- package/dist/web/components/form-select-multiple/index.d.ts +11 -11
- package/dist/web/components/form-switch/index.d.ts +4 -4
- package/dist/web/components/form-text-area/index.d.ts +8 -8
- package/dist/web/components/form-time/index.d.ts +8 -8
- package/dist/web/components/form-upload-file/index.d.ts +10 -10
- package/dist/web/components/form-url/index.d.ts +7 -7
- package/dist/web/components/form-user-tree-select/index.d.ts +10 -10
- package/dist/web/components/grid/col.d.ts +2 -2
- package/dist/web/components/grid/row.d.ts +1 -1
- package/dist/web/components/lottery/index.d.ts +2 -2
- package/dist/web/components/pageLayout/PageContent/index.d.ts +1 -0
- package/dist/web/components/phone/index.d.ts +1 -0
- package/dist/web/components/phoneCode/index.d.ts +1 -0
- package/dist/web/components/share/index.d.ts +1 -0
- package/dist/web/components/swiper/index.d.ts +1 -1
- package/dist/web/components/swiper/index.js +35 -16
- package/dist/web/components/table/BaseTable.d.ts +1 -0
- package/dist/web/components/table/FieldRender.d.ts +2 -1
- package/dist/web/components/table/FilterFields.d.ts +1 -0
- package/dist/web/components/table/Form/Enum.d.ts +1 -0
- package/dist/web/components/table/Form/Location.d.ts +1 -0
- package/dist/web/components/table/QuoteModal.d.ts +1 -0
- package/dist/web/components/table/UserDepartment/ViewCell.d.ts +1 -0
- package/dist/web/components/table/UserDepartment/utils.d.ts +1 -0
- package/dist/web/components/userInfo/index.d.ts +1 -0
- package/dist/web/components/wd-calendar/MonthSelect.d.ts +1 -0
- package/dist/web/components/wd-code-editor/lang/index.d.ts +1 -1
- package/dist/web/components/wd-config-provider/wd-config-context.d.ts +1 -1
- package/dist/web/components/wd-date/elements/interface.d.ts +1 -1
- package/dist/web/components/wd-department/_design/wd-department-select.d.ts +1 -0
- package/dist/web/components/wd-form/hooks/use-auth-value.d.ts +1 -0
- package/dist/web/components/wd-form/hooks/use-auth-value.js +3 -1
- package/dist/web/components/wd-form/hooks/use-remote-value.js +39 -8
- package/dist/web/components/wd-form/index.js +35 -1
- package/dist/web/components/wd-form/wd-form.d.ts +1 -0
- package/dist/web/components/wd-form-cell/wd-form-cell.d.ts +1 -0
- package/dist/web/components/wd-form-item/wd-input-group.d.ts +1 -0
- package/dist/web/components/wd-form-item/wd-input-wrap.d.ts +1 -0
- package/dist/web/components/wd-image/ImagePreview.d.ts +1 -0
- package/dist/web/components/wd-input/wd-input.d.ts +23 -23
- package/dist/web/components/wd-input-email/wd-input-email.d.ts +15 -15
- package/dist/web/components/wd-input-group/wd-input-group.d.ts +1 -0
- package/dist/web/components/wd-input-phone/wd-input-phone.d.ts +23 -23
- package/dist/web/components/wd-input-url/wd-input-url.d.ts +15 -15
- package/dist/web/components/wd-layout/wd-layout.d.ts +1 -0
- package/dist/web/components/wd-location/_design/wd-location.d.ts +1 -0
- package/dist/web/components/wd-member/_design/wd-member-select.d.ts +1 -0
- package/dist/web/components/wd-radio/wd-radio.d.ts +1 -0
- package/dist/web/components/wd-region/_design/wd-region.d.ts +1 -0
- package/dist/web/components/wd-retry/wd-retry.d.ts +1 -0
- package/dist/web/components/wd-select/_design/wd-select.d.ts +1 -0
- package/dist/web/components/wd-select/hooks/useChooseList.d.ts +1 -1
- package/dist/web/components/wd-select/relationSelect/relationalSetting.d.ts +1 -0
- package/dist/web/components/wd-table/components/ExportFileModalByApi/index.d.ts +1 -0
- package/dist/web/components/wd-table/components/FieldRender/Form/Enum.d.ts +1 -0
- package/dist/web/components/wd-table/components/FieldRender/Form/Location.d.ts +1 -0
- package/dist/web/components/wd-table/components/FieldRender/ImagePreview.d.ts +1 -0
- package/dist/web/components/wd-table/components/FieldRender/QuoteModal.d.ts +1 -0
- package/dist/web/components/wd-table/components/FieldRender/UserDepartment/ViewCell.d.ts +1 -0
- package/dist/web/components/wd-table/components/FieldRender/UserDepartment/utils.d.ts +1 -0
- package/dist/web/components/wd-table/components/FieldRender/index.d.ts +3 -2
- package/dist/web/components/wd-table/components/FieldRender/index.js +6 -3
- package/dist/web/components/wd-table/components/FilterFieldsPanel/Fields.d.ts +1 -0
- package/dist/web/components/wd-table/components/FilterFieldsPanel/FilterFieldItem.d.ts +1 -0
- package/dist/web/components/wd-table/components/FilterFieldsPanel/InputAdornment.d.ts +1 -0
- package/dist/web/components/wd-table/components/FilterFieldsPanel/SelectSearch.d.ts +1 -0
- package/dist/web/components/wd-table/components/FilterFieldsPanel/filterFieldsGenerate.js +24 -1
- package/dist/web/components/wd-table/components/FilterFieldsPanel/index.js +187 -168
- package/dist/web/components/wd-table/components/ImportFileModalByApi/index.d.ts +1 -0
- package/dist/web/components/wd-table/components/InOrOutRecordModal.d.ts +1 -0
- package/dist/web/components/wd-table/components/Pagination/index.d.ts +1 -0
- package/dist/web/components/wd-table/components/SearchBox/index.d.ts +1 -0
- package/dist/web/components/wd-table/hooks/useAuthFields.d.ts +1 -0
- package/dist/web/components/wd-table/hooks/useAuthFields.js +12 -4
- package/dist/web/components/wd-table/hooks/useTableData.js +4 -4
- package/dist/web/components/wd-table/wd-table.js +3 -1
- package/dist/web/components/wd-tabs/tabs-h5.d.ts +1 -0
- package/dist/web/components/wd-tabs/tabs-pc.d.ts +1 -0
- package/dist/web/components/wd-tabs/tabs.d.ts +1 -0
- package/dist/web/components/wd-tag/_design.d.ts +1 -0
- package/dist/web/components/wd-tree/utils.d.ts +19 -19
- package/dist/web/components/wd-upload-file/_design/wd-upload-file.d.ts +1 -0
- package/dist/web/components/wd-upload-image/_design/wd-upload-image.d.ts +1 -0
- package/dist/web/utils/config-context/use-config.d.ts +1 -1
- package/dist/web/utils/datasource.d.ts +1 -0
- package/dist/web/utils/datasource.js +13 -25
- package/dist/web/utils/getPageQuery.d.ts +1 -0
- package/dist/web/utils/i18n/locale/en_US.d.ts +1 -0
- package/dist/web/utils/i18n/locale/zh_CN.d.ts +1 -0
- package/package.json +7 -3
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect, forwardRef } from 'react';
|
|
2
|
+
import { useState, useEffect, forwardRef, useRef, useCallback, useMemo } from 'react';
|
|
3
3
|
import { Row, Col, ConfigProvider, Drawer } from 'tea-component';
|
|
4
4
|
import { dateCalculation } from '../../../../utils/date';
|
|
5
|
-
import isObjectEqual from '../../../../utils/isObjectEqual';
|
|
6
5
|
import { useConfig } from '../../../../utils/config-context';
|
|
7
6
|
import { FilterFieldItem } from './FilterFieldItem';
|
|
8
7
|
import { arrayInputType } from './Fields';
|
|
@@ -14,6 +13,8 @@ import { useSetWidgetApi } from '../../../../utils/widget-api/use-set-widget-api
|
|
|
14
13
|
const escapeRegExp = (string) => {
|
|
15
14
|
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
16
15
|
};
|
|
16
|
+
// 提升静态 JSX 到组件外部,避免每次渲染重新创建
|
|
17
|
+
const HiddenSubmitInput = _jsx("input", { type: "submit", style: { display: 'none' } });
|
|
17
18
|
const getFilterConfig = (data) => data.map(({ name, label, value, fieldCalculationOption = [], fieldCalculation }) => ({
|
|
18
19
|
name,
|
|
19
20
|
label,
|
|
@@ -21,6 +22,96 @@ const getFilterConfig = (data) => data.map(({ name, label, value, fieldCalculati
|
|
|
21
22
|
filterType: fieldCalculation === null || fieldCalculation === void 0 ? void 0 : fieldCalculation.value,
|
|
22
23
|
filterTypeOption: fieldCalculationOption === null || fieldCalculationOption === void 0 ? void 0 : fieldCalculationOption.map((i) => i === null || i === void 0 ? void 0 : i.value),
|
|
23
24
|
}));
|
|
25
|
+
// 处理 scope 类型的筛选条件
|
|
26
|
+
const handleScopeFilter = (item, searchValues) => {
|
|
27
|
+
if (item.filterType === 'number') {
|
|
28
|
+
if (item.value[0]) {
|
|
29
|
+
searchValues.push({ key: item.name, val: Number(item.value[0]), rel: 'gte' });
|
|
30
|
+
}
|
|
31
|
+
if (item.value[1]) {
|
|
32
|
+
searchValues.push({ key: item.name, val: Number(item.value[1]), rel: 'lte' });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
searchValues.push({ key: item.name, val: item.value[0], rel: 'gte' });
|
|
37
|
+
// @ts-ignore 兼容字符串和数字
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
|
|
39
|
+
searchValues.push({ key: item.name, val: item.value[1] + 999, rel: 'lte' });
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
// 处理字符串类型的默认筛选条件
|
|
43
|
+
const handleStringFilter = (item, searchValues) => {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
const searchItem = { key: item.name, val: item.value, rel: item.fieldCalculation.value };
|
|
46
|
+
if (arrayInputType.includes(item.fieldCalculation.value) && ((_a = searchItem === null || searchItem === void 0 ? void 0 : searchItem.val) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
47
|
+
searchValues.push(searchItem);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
searchItem.val = (_b = textToString(item.value)) === null || _b === void 0 ? void 0 : _b.trim();
|
|
51
|
+
searchValues.push(searchItem);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
// 处理默认筛选条件
|
|
55
|
+
const handleDefaultFilter = (item, searchValues) => {
|
|
56
|
+
const searchItem = { key: item.name, val: item.value, rel: item.fieldCalculation.value };
|
|
57
|
+
if (item.filterType === 'string') {
|
|
58
|
+
handleStringFilter(item, searchValues);
|
|
59
|
+
}
|
|
60
|
+
else if (item.filterType === 'number') {
|
|
61
|
+
searchItem.val = Number(item.value);
|
|
62
|
+
searchValues.push(searchItem);
|
|
63
|
+
}
|
|
64
|
+
else if (['date', 'datetime', 'time'].includes(item.filterType)) {
|
|
65
|
+
searchItem.val = item.value;
|
|
66
|
+
dateCalculation(searchItem, item.filterType).forEach((calcItem) => {
|
|
67
|
+
searchValues.push(calcItem);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
searchValues.push(searchItem);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
// 处理单个筛选项
|
|
75
|
+
const processFilterItem = (item, searchValues) => {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
switch (item.fieldCalculation.value) {
|
|
78
|
+
case 'scope':
|
|
79
|
+
handleScopeFilter(item, searchValues);
|
|
80
|
+
break;
|
|
81
|
+
case 'exclude':
|
|
82
|
+
searchValues.push({
|
|
83
|
+
key: item.name,
|
|
84
|
+
val: `^((?!${item.filterType === 'string' ? escapeRegExp(item.value) : item.value}).)*$`,
|
|
85
|
+
rel: 'regex',
|
|
86
|
+
});
|
|
87
|
+
break;
|
|
88
|
+
case 'startWith':
|
|
89
|
+
searchValues.push({ key: item.name, val: `^${(_a = item.value) === null || _a === void 0 ? void 0 : _a.trim()}`, rel: 'regex' });
|
|
90
|
+
break;
|
|
91
|
+
case 'regex':
|
|
92
|
+
searchValues.push({ key: item.name, val: `^${escapeRegExp(item.value)}`, rel: item.fieldCalculation.value });
|
|
93
|
+
break;
|
|
94
|
+
case 'nsearch_ci':
|
|
95
|
+
if (item.filterType === 'string') {
|
|
96
|
+
if (Array.isArray(item.value) && item.value.length) {
|
|
97
|
+
searchValues.push({ key: item.name, val: item.value, rel: item.fieldCalculation.value });
|
|
98
|
+
}
|
|
99
|
+
else if (item.value) {
|
|
100
|
+
searchValues.push({
|
|
101
|
+
key: item.name,
|
|
102
|
+
val: (_b = textToString(item.value)) === null || _b === void 0 ? void 0 : _b.trim(),
|
|
103
|
+
rel: item.fieldCalculation.value,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
searchValues.push({ key: item.name, val: `${escapeRegExp(item.value)}`, rel: item.fieldCalculation.value });
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
default:
|
|
112
|
+
handleDefaultFilter(item, searchValues);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
24
115
|
// 筛选表单
|
|
25
116
|
export const FilterFieldsPanel = forwardRef(function Comp(props, ref) {
|
|
26
117
|
const { filterFields, fetchData, openMobileFilter, setOpenMobileFilter, setFilterConfig, supportManyRelated } = props;
|
|
@@ -31,158 +122,86 @@ export const FilterFieldsPanel = forwardRef(function Comp(props, ref) {
|
|
|
31
122
|
const [collapse, setCollapse] = useState(true);
|
|
32
123
|
const [initFilterData, setInitFilterData] = useState([]);
|
|
33
124
|
const [filterData, setFilterData] = useState([]);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// 筛选字段改变,重新初始化筛选面板
|
|
43
|
-
if (!isObjectEqual(result, initFilterData)) {
|
|
44
|
-
const initFilterData = JSON.parse(JSON.stringify(result));
|
|
45
|
-
setInitFilterData(initFilterData);
|
|
46
|
-
setFilterData(initFilterData);
|
|
47
|
-
setFilterConfig(getFilterConfig(initFilterData));
|
|
48
|
-
// 如果配置有值则执行查询
|
|
49
|
-
if (initFilterData.some((i) => i.value)) {
|
|
50
|
-
searchHandle(initFilterData);
|
|
51
|
-
}
|
|
52
|
-
// 如果折叠的查询条件中有值,则展开面板
|
|
53
|
-
if ((_a = initFilterData === null || initFilterData === void 0 ? void 0 : initFilterData.filter((i, index) => index >= maxlength)) === null || _a === void 0 ? void 0 : _a.some((j) => j.value)) {
|
|
54
|
-
setCollapse(false);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
|
-
}, [filterFields]);
|
|
59
|
-
const searchHandle = (searchData = filterData) => {
|
|
60
|
-
let searchValues = [];
|
|
61
|
-
const filterValues = searchData.filter((i) => {
|
|
62
|
-
if (Array.isArray(i.value) && i.filterType === 'number' && i.fieldCalculation.value === 'scope') {
|
|
63
|
-
// 若筛选字段为number类型,且为范围选择时,只要有一个值则返回
|
|
64
|
-
return i.value[0] || i.value[1];
|
|
65
|
-
}
|
|
66
|
-
return i.value !== null && i.value !== undefined && i.value !== '';
|
|
125
|
+
// 使用 useRef 追踪上一次的 filterFields,避免死循环
|
|
126
|
+
const prevFilterFieldsRef = useRef('');
|
|
127
|
+
// 使用 useCallback + 函数式 setState,保持回调稳定,避免子组件不必要的重渲染
|
|
128
|
+
const updateFilterData = useCallback((filterFieldItemConfig) => {
|
|
129
|
+
setFilterData((prevData) => {
|
|
130
|
+
const newData = prevData.map((i) => (i.id === filterFieldItemConfig.id ? filterFieldItemConfig : i));
|
|
131
|
+
setFilterConfig(getFilterConfig(newData));
|
|
132
|
+
return newData;
|
|
67
133
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
searchValues.push({
|
|
86
|
-
$and: [{ [i.name]: { [(_b = i === null || i === void 0 ? void 0 : i.fieldCalculation) === null || _b === void 0 ? void 0 : _b.value]: '1' } }],
|
|
87
|
-
});
|
|
88
|
-
}
|
|
134
|
+
}, [setFilterConfig]);
|
|
135
|
+
// searchHandle 使用 useCallback 优化,合并多次遍历为单次遍历
|
|
136
|
+
const searchHandle = useCallback((searchData) => {
|
|
137
|
+
var _a, _b, _c;
|
|
138
|
+
// 确保 searchData 是数组,防止事件对象被误传入
|
|
139
|
+
const data = Array.isArray(searchData) ? searchData : filterData;
|
|
140
|
+
let searchValues = [];
|
|
141
|
+
const andConditions = [];
|
|
142
|
+
const filterValues = [];
|
|
143
|
+
// 单次遍历处理所有逻辑,避免多次 filter/forEach
|
|
144
|
+
for (const item of data) {
|
|
145
|
+
// 处理空/非空筛选条件
|
|
146
|
+
if (['$empty', '$nempty'].includes((_a = item === null || item === void 0 ? void 0 : item.fieldCalculation) === null || _a === void 0 ? void 0 : _a.value)) {
|
|
147
|
+
andConditions.push({ [item.name]: { [(_b = item === null || item === void 0 ? void 0 : item.fieldCalculation) === null || _b === void 0 ? void 0 : _b.value]: '1' } });
|
|
148
|
+
continue;
|
|
89
149
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (i.filterType === 'number') {
|
|
97
|
-
if (i.value[0]) {
|
|
98
|
-
searchValues.push({
|
|
99
|
-
key: i.name,
|
|
100
|
-
val: Number(i.value[0]),
|
|
101
|
-
rel: 'gte',
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
if (i.value[1]) {
|
|
105
|
-
searchValues.push({
|
|
106
|
-
key: i.name,
|
|
107
|
-
val: Number(i.value[1]),
|
|
108
|
-
rel: 'lte',
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
searchValues.push({
|
|
114
|
-
key: i.name,
|
|
115
|
-
val: i.value[0],
|
|
116
|
-
rel: 'gte',
|
|
117
|
-
});
|
|
118
|
-
searchValues.push({
|
|
119
|
-
key: i.name,
|
|
120
|
-
// @ts-ignore 兼容字符串和数字
|
|
121
|
-
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
|
|
122
|
-
val: i.value[1] + 999,
|
|
123
|
-
rel: 'lte',
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
break;
|
|
127
|
-
case 'exclude':
|
|
128
|
-
searchValues.push({
|
|
129
|
-
key: i.name,
|
|
130
|
-
val: `^((?!${i.filterType === 'string' ? escapeRegExp(i.value) : i.value}).)*$`,
|
|
131
|
-
rel: 'regex',
|
|
132
|
-
});
|
|
133
|
-
break;
|
|
134
|
-
case 'startWith':
|
|
135
|
-
searchValues.push({ key: i.name, val: `^${(_a = i.value) === null || _a === void 0 ? void 0 : _a.trim()}`, rel: 'regex' });
|
|
136
|
-
break;
|
|
137
|
-
case 'regex':
|
|
138
|
-
searchValues.push({ key: i.name, val: `^${escapeRegExp(i.value)}`, rel: i.fieldCalculation.value });
|
|
139
|
-
break;
|
|
140
|
-
case 'nsearch_ci':
|
|
141
|
-
searchValues.push({ key: i.name, val: `${escapeRegExp(i.value)}`, rel: i.fieldCalculation.value });
|
|
142
|
-
break;
|
|
143
|
-
default: {
|
|
144
|
-
const searchItem = {
|
|
145
|
-
key: i.name,
|
|
146
|
-
val: i.value,
|
|
147
|
-
rel: i.fieldCalculation.value,
|
|
148
|
-
};
|
|
149
|
-
if (i.filterType === 'string') {
|
|
150
|
-
if (arrayInputType.includes(i.fieldCalculation.value) && ((_b = searchItem === null || searchItem === void 0 ? void 0 : searchItem.val) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
151
|
-
searchValues.push(searchItem);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
searchItem.val = (_c = textToString(i.value)) === null || _c === void 0 ? void 0 : _c.trim();
|
|
155
|
-
searchValues.push(searchItem);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else if (i.filterType === 'number') {
|
|
159
|
-
searchItem.val = Number(i.value);
|
|
160
|
-
searchValues.push(searchItem);
|
|
161
|
-
}
|
|
162
|
-
else if (['date', 'datetime', 'time'].includes(i.filterType)) {
|
|
163
|
-
searchItem.val = i.value;
|
|
164
|
-
dateCalculation(searchItem, i.filterType).forEach((i) => {
|
|
165
|
-
searchValues.push(i);
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
searchValues.push(searchItem);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
150
|
+
// 判断是否有值
|
|
151
|
+
const hasValue = Array.isArray(item.value) && item.filterType === 'number' && ((_c = item.fieldCalculation) === null || _c === void 0 ? void 0 : _c.value) === 'scope'
|
|
152
|
+
? item.value[0] || item.value[1]
|
|
153
|
+
: item.value !== null && item.value !== undefined && item.value !== '';
|
|
154
|
+
if (hasValue) {
|
|
155
|
+
filterValues.push(item);
|
|
172
156
|
}
|
|
173
|
-
}
|
|
174
|
-
|
|
157
|
+
}
|
|
158
|
+
// 添加 $and 条件
|
|
159
|
+
if (andConditions.length) {
|
|
160
|
+
searchValues.push({ $and: andConditions });
|
|
161
|
+
}
|
|
162
|
+
// 值筛选条件 - 使用提取的处理函数
|
|
163
|
+
for (const item of filterValues) {
|
|
164
|
+
processFilterItem(item, searchValues);
|
|
165
|
+
}
|
|
166
|
+
// 添加 format 字段
|
|
167
|
+
searchValues = searchValues.map((item) => {
|
|
175
168
|
var _a;
|
|
176
|
-
const format = (_a = filterValues.find((j) => j.name ===
|
|
177
|
-
return { ...
|
|
169
|
+
const format = (_a = filterValues.find((j) => j.name === item.key)) === null || _a === void 0 ? void 0 : _a.filterType;
|
|
170
|
+
return { ...item, format };
|
|
178
171
|
});
|
|
179
172
|
fetchData(searchValues);
|
|
180
|
-
};
|
|
181
|
-
|
|
173
|
+
}, [filterData, fetchData]);
|
|
174
|
+
// 初始化 useEffect
|
|
175
|
+
useEffect(() => {
|
|
176
|
+
var _a;
|
|
177
|
+
// 序列化当前 filterFields 用于比较
|
|
178
|
+
const currentFilterFieldsStr = JSON.stringify(filterFields);
|
|
179
|
+
// 如果和上一次相同,跳过处理
|
|
180
|
+
if (currentFilterFieldsStr === prevFilterFieldsRef.current) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const result = filterFieldsGenerate(filterFields);
|
|
184
|
+
const newFilterData = JSON.parse(JSON.stringify(result));
|
|
185
|
+
// 更新 ref 记录当前值
|
|
186
|
+
prevFilterFieldsRef.current = currentFilterFieldsStr;
|
|
187
|
+
setInitFilterData(newFilterData);
|
|
188
|
+
setFilterData(newFilterData);
|
|
189
|
+
setFilterConfig(getFilterConfig(newFilterData));
|
|
190
|
+
// 如果配置有值则执行查询
|
|
191
|
+
if (newFilterData.some((i) => i.value)) {
|
|
192
|
+
searchHandle(newFilterData);
|
|
193
|
+
}
|
|
194
|
+
// 如果折叠的查询条件中有值,则展开面板
|
|
195
|
+
if ((_a = newFilterData === null || newFilterData === void 0 ? void 0 : newFilterData.filter((i, index) => index >= maxlength)) === null || _a === void 0 ? void 0 : _a.some((j) => j.value)) {
|
|
196
|
+
setCollapse(false);
|
|
197
|
+
}
|
|
198
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
199
|
+
}, [filterFields]);
|
|
200
|
+
const onFormSubmit = useCallback((e) => {
|
|
182
201
|
e.preventDefault();
|
|
183
202
|
searchHandle();
|
|
184
|
-
};
|
|
185
|
-
const resetFilter = () => {
|
|
203
|
+
}, [searchHandle]);
|
|
204
|
+
const resetFilter = useCallback(() => {
|
|
186
205
|
const result = initFilterData.map((i) => ({ ...i, value: '' }));
|
|
187
206
|
setFilterData(result);
|
|
188
207
|
setFilterConfig(getFilterConfig(result));
|
|
@@ -190,29 +209,29 @@ export const FilterFieldsPanel = forwardRef(function Comp(props, ref) {
|
|
|
190
209
|
if (isH5) {
|
|
191
210
|
setOpenMobileFilter(false);
|
|
192
211
|
}
|
|
193
|
-
};
|
|
212
|
+
}, [initFilterData, setFilterConfig, fetchData, isH5, setOpenMobileFilter]);
|
|
213
|
+
// Memo 化事件对象,避免每次渲染创建新对象导致子组件重渲染
|
|
214
|
+
const resetEvents = useMemo(() => ({ tap: resetFilter }), [resetFilter]);
|
|
215
|
+
const searchEvents = useMemo(() => ({ tap: searchHandle }), [searchHandle]);
|
|
216
|
+
const toggleCollapseHandler = useCallback(() => {
|
|
217
|
+
setCollapse((prev) => !prev);
|
|
218
|
+
}, []);
|
|
219
|
+
const toggleCollapseEvents = useMemo(() => ({
|
|
220
|
+
tap: toggleCollapseHandler,
|
|
221
|
+
}), [toggleCollapseHandler]);
|
|
222
|
+
const mobileSearchHandler = useCallback(() => {
|
|
223
|
+
searchHandle();
|
|
224
|
+
setOpenMobileFilter(false);
|
|
225
|
+
}, [searchHandle, setOpenMobileFilter]);
|
|
226
|
+
const mobileSearchEvents = useMemo(() => ({
|
|
227
|
+
tap: mobileSearchHandler,
|
|
228
|
+
}), [mobileSearchHandler]);
|
|
229
|
+
const drawerCloseHandler = useCallback(() => {
|
|
230
|
+
setOpenMobileFilter(false);
|
|
231
|
+
}, [setOpenMobileFilter]);
|
|
194
232
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
195
233
|
useSetWidgetApi(() => ({ resetFilter }), [initFilterData], ref);
|
|
196
|
-
return (_jsxs(ConfigProvider, { classPrefix: "wedatea2td", children: [isH5 && (_jsx(Drawer, { className: `${classPrefix}-table-mobile-filter-drawer ${classPrefix}-table-wrap-filter ${classPrefix}-h5-table-wrap-filter`, title: "\u7B5B\u9009\u5668", visible: isH5 && openMobileFilter, onClose: () => {
|
|
197
|
-
setOpenMobileFilter(false);
|
|
198
|
-
}, children: _jsxs("div", { children: [_jsx("div", { className: `${classPrefix}-table-wrap-filter__body`, children: filterData === null || filterData === void 0 ? void 0 : filterData.map((i) => (_jsx(FilterFieldItem, { ...i, updateFilterData: updateFilterData, fields: filterFields, supportManyRelated: supportManyRelated }, i.id))) }), _jsx("div", { className: `${classPrefix}-table-wrap-filter__footer`, children: _jsxs("div", { className: `${classPrefix}-table-wrap-filter__btn`, children: [_jsx("div", { className: `${classPrefix}-table-wrap-filter__btn-item`, children: _jsx(WdButton, { theme: "primary", variant: "outline", size: "lg", text: "\u91CD\u7F6E", events: {
|
|
199
|
-
tap: resetFilter,
|
|
200
|
-
} }) }), _jsx("div", { className: `${classPrefix}-table-wrap-filter__btn-item`, children: _jsx(WdButton, { theme: "primary", size: "lg", text: "\u786E\u5B9A", events: {
|
|
201
|
-
tap: () => {
|
|
202
|
-
searchHandle();
|
|
203
|
-
setOpenMobileFilter(false);
|
|
204
|
-
},
|
|
205
|
-
} }) })] }) })] }) })), !isH5 && !!filterData.length && (_jsx("form", { className: `${classPrefix}-table-wrap-filter`, onSubmit: onFormSubmit, "data-testid": "filter-form", children: _jsxs(Row, { gap: 20, verticalAlign: 'top', style: { justifyContent: 'space-between' }, children: [_jsx(_Fragment, { children: filterData === null || filterData === void 0 ? void 0 : filterData.map((i, index) => (_jsx(Col, { span: 6, style: {
|
|
234
|
+
return (_jsxs(ConfigProvider, { classPrefix: "wedatea2td", children: [isH5 && (_jsx(Drawer, { className: `${classPrefix}-table-mobile-filter-drawer ${classPrefix}-table-wrap-filter ${classPrefix}-h5-table-wrap-filter`, title: "\u7B5B\u9009\u5668", visible: isH5 && openMobileFilter, onClose: drawerCloseHandler, children: _jsxs("div", { children: [_jsx("div", { className: `${classPrefix}-table-wrap-filter__body`, children: filterData === null || filterData === void 0 ? void 0 : filterData.map((i) => (_jsx(FilterFieldItem, { ...i, updateFilterData: updateFilterData, fields: filterFields, supportManyRelated: supportManyRelated }, i.id))) }), _jsx("div", { className: `${classPrefix}-table-wrap-filter__footer`, children: _jsxs("div", { className: `${classPrefix}-table-wrap-filter__btn`, children: [_jsx("div", { className: `${classPrefix}-table-wrap-filter__btn-item`, children: _jsx(WdButton, { theme: "primary", variant: "outline", size: "lg", text: "\u91CD\u7F6E", events: resetEvents }) }), _jsx("div", { className: `${classPrefix}-table-wrap-filter__btn-item`, children: _jsx(WdButton, { theme: "primary", size: "lg", text: "\u786E\u5B9A", events: mobileSearchEvents }) })] }) })] }) })), !isH5 && !!filterData.length && (_jsx("form", { className: `${classPrefix}-table-wrap-filter`, onSubmit: onFormSubmit, "data-testid": "filter-form", children: _jsxs(Row, { gap: 20, verticalAlign: 'top', style: { justifyContent: 'space-between' }, children: [_jsx(_Fragment, { children: filterData === null || filterData === void 0 ? void 0 : filterData.map((i, index) => (_jsx(Col, { span: 6, style: {
|
|
206
235
|
display: `${index > num && collapse ? 'none' : 'block'}`,
|
|
207
|
-
}, children: _jsx(FilterFieldItem, { ...i, updateFilterData: updateFilterData, fields: filterFields, supportManyRelated: supportManyRelated }) }, i.id))) }), _jsx(Col, { span: 24, style: { flex: '1', textAlign: 'right' }, children: _jsxs("div", { className: `${classPrefix}-space`, children: [_jsx("div", { className: `${classPrefix}-space-item`, children: _jsx(WdButton, { size: "md", theme: "secondary", text: "\u91CD\u7F6E", events: {
|
|
208
|
-
tap: resetFilter,
|
|
209
|
-
} }) }), _jsxs("div", { className: `${classPrefix}-space-item`, children: [_jsx("input", { type: "submit", style: { display: 'none' } }), _jsx(WdButton, { size: "md", theme: "primary", text: "\u67E5\u8BE2", events: {
|
|
210
|
-
tap: () => {
|
|
211
|
-
searchHandle();
|
|
212
|
-
},
|
|
213
|
-
} })] }), filterData.length > maxlength && (_jsx("div", { className: `${classPrefix}-space-item`, children: _jsx(WdButton, { icon: collapse ? 'td:chevron-down' : 'td:chevron-up', iconType: "icon-only", theme: "secondary", variant: "text", size: "md", events: {
|
|
214
|
-
tap: () => {
|
|
215
|
-
setCollapse(!collapse);
|
|
216
|
-
},
|
|
217
|
-
} }) }))] }) }, "search-button")] }) }))] }));
|
|
236
|
+
}, children: _jsx(FilterFieldItem, { ...i, updateFilterData: updateFilterData, fields: filterFields, supportManyRelated: supportManyRelated }) }, i.id))) }), _jsx(Col, { span: 24, style: { flex: '1', textAlign: 'right' }, children: _jsxs("div", { className: `${classPrefix}-space`, children: [_jsx("div", { className: `${classPrefix}-space-item`, children: _jsx(WdButton, { size: "md", theme: "secondary", text: "\u91CD\u7F6E", events: resetEvents }) }), _jsxs("div", { className: `${classPrefix}-space-item`, children: [HiddenSubmitInput, _jsx(WdButton, { size: "md", theme: "primary", text: "\u67E5\u8BE2", events: searchEvents })] }), filterData.length > maxlength && (_jsx("div", { className: `${classPrefix}-space-item`, children: _jsx(WdButton, { icon: collapse ? 'td:chevron-down' : 'td:chevron-up', iconType: "icon-only", theme: "secondary", variant: "text", size: "md", events: toggleCollapseEvents }) }))] }) }, "search-button")] }) }))] }));
|
|
218
237
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
1
2
|
import useSWR from 'swr';
|
|
2
3
|
import { getAuthFields } from '../../../utils/datasource';
|
|
3
4
|
export const useAuthFields = ({ dbName, dbFieldNames, isNewData, isModel, connectorMethod, isNoDataSourceBind, isExpression = false, isApis = false, columnSetsKey, }) => {
|
|
@@ -13,16 +14,23 @@ export const useAuthFields = ({ dbName, dbFieldNames, isNewData, isModel, connec
|
|
|
13
14
|
}
|
|
14
15
|
return [isModel, dbName, connectorMethod === null || connectorMethod === void 0 ? void 0 : connectorMethod.name, columnSetsKey];
|
|
15
16
|
}, async () => {
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
var _a;
|
|
18
|
+
const data = await getAuthFields(dbName, dbFieldNames, true, !!isNewData, isModel, connectorMethod, false);
|
|
19
|
+
if (!((_a = data === null || data === void 0 ? void 0 : data.showFields) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
18
20
|
throw {
|
|
19
21
|
message: '数据源字段返回异常',
|
|
20
22
|
};
|
|
21
23
|
}
|
|
22
|
-
return
|
|
24
|
+
return data;
|
|
23
25
|
});
|
|
26
|
+
// 用 useMemo 稳定数组引用:data?.xxx || [] 会在 data 为 undefined 时每次返回新 [],
|
|
27
|
+
// 该引用会传给上层 wd-table 的 useMemo(columns) 作为依赖,造成无意义的 columns 重算。
|
|
28
|
+
// 仅当 data 引用变化时才重建空数组兜底。
|
|
29
|
+
const authFields = useMemo(() => (data === null || data === void 0 ? void 0 : data.showFields) || [], [data]);
|
|
30
|
+
const noAuthFields = useMemo(() => (data === null || data === void 0 ? void 0 : data.noAuthFields) || [], [data]);
|
|
24
31
|
return {
|
|
25
|
-
authFields
|
|
32
|
+
authFields,
|
|
33
|
+
noAuthFields,
|
|
26
34
|
isError: error,
|
|
27
35
|
fieldsLoading: !error && !data,
|
|
28
36
|
};
|
|
@@ -31,8 +31,8 @@ export const useTableData = ({ dataSourceAPI, connectorMethod, query, events, is
|
|
|
31
31
|
const result = await dataSourceAPI.getRecordListV2(query, { swr });
|
|
32
32
|
data = {
|
|
33
33
|
...data,
|
|
34
|
-
total: result.total,
|
|
35
|
-
records: result.records || [],
|
|
34
|
+
total: result === null || result === void 0 ? void 0 : result.total,
|
|
35
|
+
records: (result === null || result === void 0 ? void 0 : result.records) || [],
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -41,8 +41,8 @@ export const useTableData = ({ dataSourceAPI, connectorMethod, query, events, is
|
|
|
41
41
|
const result = await dataSourceAPI.getRecordList(query, { swr });
|
|
42
42
|
data = {
|
|
43
43
|
...data,
|
|
44
|
-
total: result.total,
|
|
45
|
-
records: result.records || [],
|
|
44
|
+
total: result === null || result === void 0 ? void 0 : result.total,
|
|
45
|
+
records: (result === null || result === void 0 ? void 0 : result.records) || [],
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
setIsError(false);
|
|
@@ -152,7 +152,7 @@ export const WdTable = forwardRef(function TableComp(tableProps, ref) {
|
|
|
152
152
|
});
|
|
153
153
|
const columnSetsKey = columnSets === null || columnSets === void 0 ? void 0 : columnSets.map((i) => i.key);
|
|
154
154
|
// 过滤权限字段
|
|
155
|
-
const { authFields, fieldsLoading, isError: fieldsError, } = useAuthFields({
|
|
155
|
+
const { authFields, noAuthFields, fieldsLoading, isError: fieldsError, } = useAuthFields({
|
|
156
156
|
dbName,
|
|
157
157
|
dbFieldNames,
|
|
158
158
|
isNewData,
|
|
@@ -204,6 +204,7 @@ export const WdTable = forwardRef(function TableComp(tableProps, ref) {
|
|
|
204
204
|
return [];
|
|
205
205
|
}
|
|
206
206
|
let baseColumns = getTableColumns({
|
|
207
|
+
noAuthFields,
|
|
207
208
|
fields,
|
|
208
209
|
columnSets,
|
|
209
210
|
slots,
|
|
@@ -267,6 +268,7 @@ export const WdTable = forwardRef(function TableComp(tableProps, ref) {
|
|
|
267
268
|
customOptionTitle,
|
|
268
269
|
classPrefix,
|
|
269
270
|
resizeColumns,
|
|
271
|
+
noAuthFields,
|
|
270
272
|
]);
|
|
271
273
|
// 主键
|
|
272
274
|
const recordKey = getRecordKey({
|
|
@@ -102,18 +102,18 @@ declare const initData: ({ data, parent, showIcon, expendIcon, foldIcon, leafIco
|
|
|
102
102
|
parent?: TreeNode;
|
|
103
103
|
iconShow?: string;
|
|
104
104
|
pos?: string;
|
|
105
|
+
value: string;
|
|
105
106
|
label: string;
|
|
107
|
+
disabled: boolean;
|
|
106
108
|
children: {
|
|
107
|
-
label: string;
|
|
108
|
-
children: any[];
|
|
109
109
|
value: string;
|
|
110
|
+
label: string;
|
|
110
111
|
disabled: boolean;
|
|
112
|
+
children: any[];
|
|
111
113
|
foldIcon: string;
|
|
112
114
|
expendIcon: string;
|
|
113
115
|
leafIcon: string;
|
|
114
116
|
}[];
|
|
115
|
-
value: string;
|
|
116
|
-
disabled: boolean;
|
|
117
117
|
foldIcon: string;
|
|
118
118
|
expendIcon: string;
|
|
119
119
|
leafIcon: string;
|
|
@@ -146,37 +146,36 @@ declare const getTreeInfo: (params: IFindNodeParams, checkable: boolean) => {
|
|
|
146
146
|
checkedState?: boolean;
|
|
147
147
|
selectedState?: boolean;
|
|
148
148
|
expandedtate?: boolean;
|
|
149
|
-
expanded: string[];
|
|
150
149
|
event: string;
|
|
151
|
-
selected: string[];
|
|
152
|
-
checked: string[];
|
|
153
150
|
currentNode: {
|
|
154
151
|
data?: {
|
|
155
|
-
label: string;
|
|
156
|
-
children: any[];
|
|
157
152
|
value: string;
|
|
153
|
+
label: string;
|
|
158
154
|
disabled: boolean;
|
|
155
|
+
children: any[];
|
|
159
156
|
foldIcon: string;
|
|
160
157
|
expendIcon: string;
|
|
161
158
|
leafIcon: string;
|
|
162
159
|
}[];
|
|
163
160
|
};
|
|
161
|
+
selected: string[];
|
|
164
162
|
selectedPositions: string[];
|
|
165
163
|
selectedNodes: {
|
|
166
|
-
label: string;
|
|
167
|
-
children: any[];
|
|
168
164
|
value: string;
|
|
165
|
+
label: string;
|
|
169
166
|
disabled: boolean;
|
|
167
|
+
children: any[];
|
|
170
168
|
foldIcon: string;
|
|
171
169
|
expendIcon: string;
|
|
172
170
|
leafIcon: string;
|
|
173
171
|
}[];
|
|
172
|
+
expanded: string[];
|
|
174
173
|
expandedPositions: string[];
|
|
175
174
|
expandedNodes: {
|
|
176
|
-
label: string;
|
|
177
|
-
children: any[];
|
|
178
175
|
value: string;
|
|
176
|
+
label: string;
|
|
179
177
|
disabled: boolean;
|
|
178
|
+
children: any[];
|
|
180
179
|
foldIcon: string;
|
|
181
180
|
expendIcon: string;
|
|
182
181
|
leafIcon: string;
|
|
@@ -184,20 +183,21 @@ declare const getTreeInfo: (params: IFindNodeParams, checkable: boolean) => {
|
|
|
184
183
|
searched: string[];
|
|
185
184
|
searchedPositions: string[];
|
|
186
185
|
searchedNodes: {
|
|
187
|
-
label: string;
|
|
188
|
-
children: any[];
|
|
189
186
|
value: string;
|
|
187
|
+
label: string;
|
|
190
188
|
disabled: boolean;
|
|
189
|
+
children: any[];
|
|
191
190
|
foldIcon: string;
|
|
192
191
|
expendIcon: string;
|
|
193
192
|
leafIcon: string;
|
|
194
193
|
}[];
|
|
194
|
+
checked: string[];
|
|
195
195
|
checkedPositions: string[];
|
|
196
196
|
checkedNodes: {
|
|
197
|
-
label: string;
|
|
198
|
-
children: any[];
|
|
199
197
|
value: string;
|
|
198
|
+
label: string;
|
|
200
199
|
disabled: boolean;
|
|
200
|
+
children: any[];
|
|
201
201
|
foldIcon: string;
|
|
202
202
|
expendIcon: string;
|
|
203
203
|
leafIcon: string;
|
|
@@ -205,10 +205,10 @@ declare const getTreeInfo: (params: IFindNodeParams, checkable: boolean) => {
|
|
|
205
205
|
childChecked: string[];
|
|
206
206
|
childCheckedPositions: string[];
|
|
207
207
|
childCheckedNodes: {
|
|
208
|
-
label: string;
|
|
209
|
-
children: any[];
|
|
210
208
|
value: string;
|
|
209
|
+
label: string;
|
|
211
210
|
disabled: boolean;
|
|
211
|
+
children: any[];
|
|
212
212
|
foldIcon: string;
|
|
213
213
|
expendIcon: string;
|
|
214
214
|
leafIcon: string;
|