@cloudbase/weda-ui 3.4.3 → 3.4.5
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/dist/configs/components/chart/bar.json +117 -8
- package/dist/configs/components/chart/line.js +127 -18
- package/dist/configs/components/chart/pie.json +117 -8
- package/dist/configs/components/chart/statisticsCard.json +57 -0
- package/dist/configs/components/dataView.js +507 -0
- package/dist/configs/components/form/location.json +2 -1
- package/dist/configs/components/form/userTreeSelect.json +55 -0
- package/dist/configs/components/formdetail.json +12 -2
- package/dist/configs/components/graphicCard.json +1 -1
- package/dist/configs/components/grid/col.js +125 -0
- package/dist/configs/components/grid/grid.js +131 -0
- package/dist/configs/components/grid/row.js +143 -0
- package/dist/configs/components/image.js +11 -1
- package/dist/configs/components/link.js +11 -1
- package/dist/configs/components/listView.js +1092 -0
- package/dist/configs/components/navLayout.json +1 -1
- package/dist/configs/components/navigationBar.json +9 -1
- package/dist/configs/components/repeater-item.json +17 -0
- package/dist/configs/components/repeater.js +125 -0
- package/dist/configs/components/table.json +187 -29
- package/dist/configs/components/text.js +12 -1
- package/dist/configs/components/wd-bubble.js +204 -0
- package/dist/configs/components/wd-button.js +417 -0
- package/dist/configs/components/wd-divider.js +89 -0
- package/dist/configs/components/wd-icon.js +126 -0
- package/dist/configs/components/wd-image.js +164 -0
- package/dist/configs/components/wd-link.js +234 -0
- package/dist/configs/components/wd-table.js +59 -0
- package/dist/configs/components/wd-text.js +142 -0
- package/dist/configs/components/wxOpenApi/phone.js +2 -2
- package/dist/configs/components/wxOpenApi/phoneCode.js +2 -2
- package/dist/configs/index.js +34 -3
- package/dist/configs/type-utils/index.js +4 -1
- package/dist/docs/common/componentList.js +144 -0
- package/dist/docs/common/components/classes-view.js +34 -0
- package/dist/docs/common/components/event-view.js +46 -0
- package/dist/docs/common/components/json-schema-view.js +18 -0
- package/dist/docs/common/components/methods-view.js +32 -0
- package/dist/docs/common/components/properties-view.js +45 -0
- package/dist/docs/common/format.js +60 -35
- package/dist/docs/common/helper.js +1 -0
- package/dist/docs/common/tableView.js +61 -50
- package/dist/enum/index.js +521 -0
- package/dist/index.js +1 -1
- package/dist/style/index.scss +1 -0
- package/dist/web/actions/showMessage/index.css +0 -3
- package/dist/web/actions/showMessage/index.js +1 -1
- package/dist/web/actions/showModal/index.css +0 -3
- package/dist/web/components/button/index.css +2 -5
- package/dist/web/components/button/index.js +3 -3
- package/dist/web/components/calendar/index.css +29 -32
- package/dist/web/components/calendar/index.js +37 -35
- package/dist/web/components/carousel/index.css +11 -14
- package/dist/web/components/carousel/index.js +3 -1
- package/dist/web/components/chart/common/core/eChartBar.js +10 -2
- package/dist/web/components/chart/common/core/eChartLine.js +16 -8
- package/dist/web/components/chart/common/core/eChartPie.js +2 -1
- package/dist/web/components/chart/common/data-transform.js +1 -1
- package/dist/web/components/chart/statisticsCard/index.css +12 -15
- package/dist/web/components/chart/statisticsCard/index.js +7 -2
- package/dist/web/components/dataView/index.js +3 -3
- package/dist/web/components/emptyContent/index.css +26 -0
- package/dist/web/components/emptyContent/index.js +46 -0
- package/dist/web/components/flow/components/FlowModuleText/index.css +1 -4
- package/dist/web/components/flow/components/FlowUserSelect/index.css +29 -32
- package/dist/web/components/flow/components/HighlightTextarea/index.css +5 -8
- package/dist/web/components/flow/components/UserSelectModel/UserSelect.js +9 -8
- package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.css +1 -4
- package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.js +3 -4
- package/dist/web/components/flow/components/WedaUserTransfer/index.css +0 -3
- package/dist/web/components/flow/frame/getCommonFlowData.js +3 -1
- package/dist/web/components/flow/frame/index.js +18 -1
- package/dist/web/components/flow/frame/types.js +6 -0
- package/dist/web/components/flow/frame/utils.js +20 -11
- package/dist/web/components/flow/modules/basic/Basic.css +3 -6
- package/dist/web/components/flow/modules/basic/BasicMobile.css +9 -12
- package/dist/web/components/flow/modules/chart/Chart.js +2 -2
- package/dist/web/components/flow/modules/chart/index.css +23 -29
- package/dist/web/components/flow/modules/chart/isString.js +5 -0
- package/dist/web/components/flow/modules/control/ApprovalDrawer.css +44 -47
- package/dist/web/components/flow/modules/control/ApprovalPopup.css +34 -37
- package/dist/web/components/flow/modules/control/ApprovalPopup.js +12 -9
- package/dist/web/components/flow/modules/control/Control.css +7 -10
- package/dist/web/components/flow/modules/control/Control.js +31 -16
- package/dist/web/components/flow/modules/control/ControlMobile.css +41 -12
- package/dist/web/components/flow/modules/control/ControlMobile.js +28 -13
- package/dist/web/components/flow/modules/control/FlowTaskInfoModal.css +0 -3
- package/dist/web/components/flow/modules/control/FlowTaskInfoModal.js +4 -4
- package/dist/web/components/flow/modules/control/provider/useControlModel.js +20 -11
- package/dist/web/components/flow/modules/control/provider/useMobileModel.js +0 -2
- package/dist/web/components/flow/modules/control/provider/useRevokeAndBackHook.js +2 -0
- package/dist/web/components/flow/modules/control/utils/index.js +1 -0
- package/dist/web/components/flow/modules/control/utils/tools.js +3 -0
- package/dist/web/components/flow/modules/layout/index.css +0 -3
- package/dist/web/components/flow/modules/process/Process.js +1 -1
- package/dist/web/components/flow/modules/process/ProcessMobile.js +1 -1
- package/dist/web/components/flow/modules/process/index.css +49 -43
- package/dist/web/components/form/form/index.css +2 -5
- package/dist/web/components/form/form/index.js +48 -4
- package/dist/web/components/form/formcell/index.css +29 -17
- package/dist/web/components/form/input/index.css +5 -8
- package/dist/web/components/form/input/index.js +11 -0
- package/dist/web/components/form/location/common/mapChoose.css +88 -91
- package/dist/web/components/form/location/common/selectModal.css +10 -13
- package/dist/web/components/form/location/components/LocationH5/index.css +17 -20
- package/dist/web/components/form/location/components/LocationH5/location.h5.js +2 -3
- package/dist/web/components/form/location/components/LocationH5/location.module.css +0 -3
- package/dist/web/components/form/location/components/LocationPC/index.css +10 -13
- package/dist/web/components/form/location/components/LocationPC/location.PC.js +2 -3
- package/dist/web/components/form/location/index.css +0 -3
- package/dist/web/components/form/radio/index.css +0 -3
- package/dist/web/components/form/select/allTimePicker/calendar.css +15 -18
- package/dist/web/components/form/select/allTimePicker/index.css +53 -27
- package/dist/web/components/form/select/dropdown-select/h5.js +23 -12
- package/dist/web/components/form/select/dropdown-select/index.css +34 -27
- package/dist/web/components/form/select/dropdown-select/index.js +37 -4
- package/dist/web/components/form/select/dropdown-select/pc.js +57 -17
- package/dist/web/components/form/select/dropdown-select/ui.js +5 -2
- package/dist/web/components/form/select/index.css +12 -8
- package/dist/web/components/form/select/index.js +4 -9
- package/dist/web/components/form/select/status/index.css +10 -13
- package/dist/web/components/form/switch/switch.module.css +0 -3
- package/dist/web/components/form/textarea/index.css +1 -4
- package/dist/web/components/form/textarea/index.js +1 -1
- package/dist/web/components/form/tips/index.css +11 -2
- package/dist/web/components/form/uploader/index.css +14 -17
- package/dist/web/components/form/uploaderFile/index.css +64 -66
- package/dist/web/components/form/uploaderFile/uploadFile.h5.js +10 -11
- package/dist/web/components/form/uploaderFile/uploadFile.pc.js +3 -2
- package/dist/web/components/form/userOrgSelect/common/fetch-data-service.js +120 -38
- package/dist/web/components/form/userOrgSelect/common/utils.js +89 -1
- package/dist/web/components/form/userOrgSelect/component/depart-breadcrumb.js +15 -0
- package/dist/web/components/form/userOrgSelect/component/depart-select/depart-select-pc.js +63 -0
- package/dist/web/components/form/userOrgSelect/component/depart-select/index.js +96 -0
- package/dist/web/components/form/userOrgSelect/component/depart-select/org-modal-pc.js +69 -0
- package/dist/web/components/form/userOrgSelect/{user-select-pc → component}/error-tips.js +0 -0
- package/dist/web/components/form/userOrgSelect/component/index.css +323 -0
- package/dist/web/components/form/userOrgSelect/component/input-tags.js +21 -0
- package/dist/web/components/form/userOrgSelect/component/modal-search-h5.js +25 -0
- package/dist/web/components/form/userOrgSelect/component/modal-search.js +11 -0
- package/dist/web/components/form/userOrgSelect/component/modal-select-h5.js +201 -0
- package/dist/web/components/form/userOrgSelect/component/org-tree-h5.js +19 -0
- package/dist/web/components/form/userOrgSelect/component/org-tree.js +33 -0
- package/dist/web/components/form/userOrgSelect/component/selected-list-h5.js +44 -0
- package/dist/web/components/form/userOrgSelect/component/selected-list.js +15 -0
- package/dist/web/components/form/userOrgSelect/component/user-org-list.js +55 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-h5/index.js +168 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-list-h5.js +107 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-select-h5.js +59 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/error-tips.js +11 -0
- package/dist/web/components/form/userOrgSelect/{user-select-pc → component/user-select-pc}/model-user-list.js +9 -9
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/org-tree.js +10 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-model.js +75 -0
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-select-pc.js +65 -0
- package/dist/web/components/form/userOrgSelect/component/userOrgSelect.css +1160 -0
- package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +54 -87
- package/dist/web/components/form/userOrgSelect/hooks/use-depart-data.js +30 -35
- package/dist/web/components/form/userOrgSelect/hooks/use-views-data.js +48 -0
- package/dist/web/components/formdetail/index.css +34 -31
- package/dist/web/components/formdetail/index.js +12 -3
- package/dist/web/components/graphicCard/index.css +15 -18
- package/dist/web/components/grid/_utils.css +67 -0
- package/dist/web/components/grid/col.js +33 -0
- package/dist/web/components/grid/grid.css +1185 -0
- package/dist/web/components/grid/grid.js +19 -0
- package/dist/web/components/grid/row.js +14 -0
- package/dist/web/components/image/image.js +9 -1
- package/dist/web/components/image/index.css +2 -5
- package/dist/web/components/index.js +17 -3
- package/dist/web/components/link/index.css +0 -3
- package/dist/web/components/listView/index.css +21 -23
- package/dist/web/components/listView/index.js +215 -81
- package/dist/web/components/lottery/index.css +72 -75
- package/dist/web/components/modal/h5.css +19 -21
- package/dist/web/components/modal/modal.h5.js +11 -10
- package/dist/web/components/navLayout/index.css +14 -139
- package/dist/web/components/navigationBar/common.js +5 -4
- package/dist/web/components/navigationBar/h5Menu.js +12 -10
- package/dist/web/components/navigationBar/horizontalMenu.js +42 -35
- package/dist/web/components/navigationBar/index.css +130 -86
- package/dist/web/components/navigationBar/index.js +6 -4
- package/dist/web/components/navigationBar/verticalMenu.js +13 -9
- package/dist/web/components/pageLayout/PageContent/index.css +7 -10
- package/dist/web/components/pageLayout/index.css +0 -3
- package/dist/web/components/pageLayout/index.js +2 -1
- package/dist/web/components/repeater/index.js +17 -0
- package/dist/web/components/repeater-item/index.js +9 -0
- package/dist/web/components/richText/index.css +5 -8
- package/dist/web/components/richText/index.js +4 -2
- package/dist/web/components/richText/richtext.module.css +1 -4
- package/dist/web/components/richTextView/index.css +9 -10
- package/dist/web/components/swiper/index.css +10 -13
- package/dist/web/components/swiper/index.js +25 -5
- package/dist/web/components/table/BaseTable.js +355 -286
- package/dist/web/components/table/ExportFileModalByApi/index.css +9 -0
- package/dist/web/components/table/ExportFileModalByApi/index.js +150 -0
- package/dist/web/components/table/FieldRender.js +25 -18
- package/dist/web/components/table/FilterFields.js +17 -11
- package/dist/web/components/table/Form/Location.css +2 -5
- package/dist/web/components/table/ImportFileModal/csvTemplate.json +65 -6
- package/dist/web/components/table/ImportFileModalByApi/index.css +130 -0
- package/dist/web/components/table/ImportFileModalByApi/index.js +321 -0
- package/dist/web/components/table/ImportFileModalByApi/uploadCSVFile.js +115 -0
- package/dist/web/components/table/InOrOutRecordModeal.js +139 -0
- package/dist/web/components/table/SelectableBlock/index.css +0 -2
- package/dist/web/components/table/UserDepartment/viewCell.css +3 -6
- package/dist/web/components/table/baseTable.css +579 -0
- package/dist/web/components/table/hooks/useImportingStatus.js +69 -0
- package/dist/web/components/table/hooks/useInOutFieldsRecords.js +23 -0
- package/dist/web/components/table/index.css +275 -508
- package/dist/web/components/table/index.js +6 -4
- package/dist/web/components/tabs/index.css +19 -18
- package/dist/web/components/tabs/tabs.h5.js +7 -16
- package/dist/web/components/text/index.css +6 -9
- package/dist/web/components/uploaderFileView/index.css +0 -3
- package/dist/web/components/uploaderView/index.css +5 -8
- package/dist/web/components/wd-bubble/index.js +3 -17
- package/dist/web/components/wd-bubble/wd-bubble.js +17 -0
- package/dist/web/components/wd-button/convert-legacy-props.js +14 -0
- package/dist/web/components/wd-button/index.js +3 -0
- package/dist/web/components/wd-button/wd-button.js +89 -0
- package/dist/web/components/wd-config-provider/index.js +1 -0
- package/dist/web/components/wd-config-provider/wd-config-context.js +5 -0
- package/dist/web/components/wd-config-provider/wd-config-provider.js +12 -0
- package/dist/web/components/wd-divider/index.js +3 -0
- package/dist/web/components/wd-divider/wd-divider.js +29 -0
- package/dist/web/components/wd-icon/convert-legacy-props.js +14 -0
- package/dist/web/components/wd-icon/index.js +3 -0
- package/dist/web/components/wd-icon/wd-icon.js +63 -0
- package/dist/web/components/wd-image/image.js +171 -0
- package/dist/web/components/wd-image/index.js +82 -0
- package/dist/web/components/wd-link/index.js +3 -0
- package/dist/web/components/wd-link/wd-link.js +105 -0
- package/dist/web/components/wd-table/index.js +3 -0
- package/dist/web/components/wd-table/wd-table.js +24 -0
- package/dist/web/components/wd-text/convert-legacy-props.js +14 -0
- package/dist/web/components/wd-text/index.js +3 -0
- package/dist/web/components/wd-text/wd-text.js +91 -0
- package/dist/web/components/wedaVideo/index.css +2 -5
- package/dist/web/components/wedaVideo/index.js +8 -6
- package/dist/web/index.js +1 -1
- package/dist/web/utils/config-context/index.js +1 -0
- package/dist/web/utils/config-context/use-config.js +9 -0
- package/dist/web/utils/constant.js +1 -0
- package/dist/web/utils/datasource.js +19 -7
- package/dist/web/utils/file.js +22 -0
- package/dist/web/utils/hooks/CreatePortal.js +6 -0
- package/dist/web/utils/hooks/EnumHoc.js +23 -3
- package/dist/web/utils/hooks/context.js +5 -1
- package/dist/web/utils/hooks/use-cloud-id-temp-url.js +2 -1
- package/dist/web/utils/platform.js +40 -12
- package/dist/web/utils/pollingInterface.js +61 -0
- package/dist/web/utils/tcb.js +16 -0
- package/dist/web/utils/tool.js +88 -0
- package/dist/web/utils/widget-api/index.js +18 -0
- package/dist/web/weda-ui.css +128 -4
- package/package.json +51 -33
- package/dist/configs/components/dataView.json +0 -305
- package/dist/configs/components/listView.json +0 -515
- package/dist/configs/components/wd-bubble.json +0 -170
- package/dist/web/components/form/userOrgSelect/comTool.js +0 -102
- package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.pc.js +0 -155
- package/dist/web/components/form/userOrgSelect/departTreeSelect/index.js +0 -17
- package/dist/web/components/form/userOrgSelect/getUserService.js +0 -165
- package/dist/web/components/form/userOrgSelect/index.js +0 -17
- package/dist/web/components/form/userOrgSelect/user-select-pc/index.css +0 -216
- package/dist/web/components/form/userOrgSelect/user-select-pc/index.js +0 -195
- package/dist/web/components/form/userOrgSelect/user-select-pc/org-tree.js +0 -15
- package/dist/web/components/form/userOrgSelect/user-select-pc/search-user.js +0 -80
- package/dist/web/components/form/userOrgSelect/user-select-pc/selected-user-list.js +0 -12
- package/dist/web/components/form/userOrgSelect/user-select-pc/user-model.js +0 -36
- package/dist/web/components/form/userOrgSelect/userOrgSelect.css +0 -824
- package/dist/web/components/form/userOrgSelect/userTreeSelect.h5.js +0 -302
- package/dist/web/components/form/userOrgSelect/utils.js +0 -95
- package/dist/web/components/table/ImportFileModal/index.css +0 -263
- package/dist/web/components/wd-bubble/index.css +0 -21
- package/dist/web/utils/hooks/useRequest.js +0 -25
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tag, Icon, Text } from 'tea-component';
|
|
3
|
+
export const InputTags = ({ tagsList, placeholder, onClose, multiple, errInfo, disabled, platForm = 'pc', }) => {
|
|
4
|
+
return (React.createElement("div", { className: "weda-ui-user-select-input" },
|
|
5
|
+
React.createElement(React.Fragment, null,
|
|
6
|
+
tagsList && tagsList.length > 0 && !errInfo.errorStatus ? (React.createElement(React.Fragment, null,
|
|
7
|
+
React.createElement("div", { className: "weda-ui-user-select-input__values" }, (tagsList || []).map((item) => (React.createElement(React.Fragment, null, disabled ? (React.createElement(Tag, { key: item === null || item === void 0 ? void 0 : item.id, "data-testid": "defaultValueDisabled" }, (item === null || item === void 0 ? void 0 : item.content) || '-')) : (React.createElement(Tag, { key: item === null || item === void 0 ? void 0 : item.id, onClose: (e) => onClose(e, item), "data-testid": "defaultValueText" }, (item === null || item === void 0 ? void 0 : item.content) || '-')))))),
|
|
8
|
+
multiple && (React.createElement("div", { className: disabled
|
|
9
|
+
? 'weda-ui-user-select-input__extra__disabled'
|
|
10
|
+
: 'weda-ui-user-select-input__extra' }, platForm === 'pc' ? (React.createElement(React.Fragment, null,
|
|
11
|
+
React.createElement(Icon, { type: "more" }),
|
|
12
|
+
React.createElement(Text, { theme: "primary" },
|
|
13
|
+
"\u5171",
|
|
14
|
+
tagsList.length,
|
|
15
|
+
"\u4E2A"))) : (React.createElement("div", { className: "weda-select-user-dept__select-total" },
|
|
16
|
+
"\u5171",
|
|
17
|
+
tagsList.length,
|
|
18
|
+
"\u4E2A",
|
|
19
|
+
React.createElement("i", { className: "lcap-icon lcap-icon-chevronright" }))))))) : (React.createElement(Text, { className: "weda-ui-user-select-input__placeholder" }, placeholder)),
|
|
20
|
+
errInfo.errorStatus && (React.createElement(Text, { className: "weda-ui-user-select-input__placeholder" }, errInfo.errorMessage)))));
|
|
21
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import classNames from '../../../../utils/classnames';
|
|
3
|
+
export const ModalSearchH5 = (props) => {
|
|
4
|
+
const { value, onChange, onCancel, isSearch, onFocus } = props;
|
|
5
|
+
return (React.createElement("div", { className: classNames({
|
|
6
|
+
'weda-select-user-dept__dialog-search-h5': true,
|
|
7
|
+
'weda-select-user-dept__dialog-search-focus': isSearch,
|
|
8
|
+
}) },
|
|
9
|
+
React.createElement("div", { className: "weda-select-user-dept__dialog-search-box" },
|
|
10
|
+
React.createElement("input", { id: "wd-search-input", type: "text", onFocus: onFocus, value: value, onClick: (e) => {
|
|
11
|
+
e.stopPropagation();
|
|
12
|
+
}, onChange: (e) => {
|
|
13
|
+
var _a;
|
|
14
|
+
onChange((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value);
|
|
15
|
+
}, className: "weda-select-user-dept__dialog-search-input" }),
|
|
16
|
+
React.createElement("div", { className: classNames({
|
|
17
|
+
'weda-select-user-dept__dialog-label': true,
|
|
18
|
+
'weda-select-user-dept__dialog-label-value': value,
|
|
19
|
+
}) },
|
|
20
|
+
React.createElement("span", { className: "search-icon" }),
|
|
21
|
+
React.createElement("span", { className: "search-placeholder" }, "\u641C\u7D22")),
|
|
22
|
+
value && value.length > 0 && (React.createElement("div", { className: "weda-select-user-dept__dialog-input-clear", onClick: () => onChange('') },
|
|
23
|
+
React.createElement("p", { className: "weda-select-user-dept__dialog-input-clear-close" })))),
|
|
24
|
+
React.createElement("span", { className: "weda-select-user-dept__dialog-search-cancel", onClick: onCancel }, "\u53D6\u6D88")));
|
|
25
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SearchBox } from 'tea-component';
|
|
3
|
+
import { UserOrgList } from './user-org-list';
|
|
4
|
+
import './index.css';
|
|
5
|
+
export const ModalSearch = (props) => {
|
|
6
|
+
const { searchList, onReset, keyWords, onSearch, loading, errInfo, selectedList, multiple, setSelectedList, setSelectedIds, selectedIds, isUser = true, } = props;
|
|
7
|
+
return (React.createElement(React.Fragment, null,
|
|
8
|
+
React.createElement(SearchBox, { "data-testid": "SearchBox", onChange: onSearch, onSearch: (key) => onSearch(key), onClear: () => onReset(), placeholder: `搜索${isUser ? '成员' : '部门'}` }),
|
|
9
|
+
keyWords.length !== 0 && (React.createElement("div", { className: "weda-ui-user-select-container-list__end " },
|
|
10
|
+
React.createElement(UserOrgList, { isUser: isUser, userOrgList: searchList, isOrg: true, loading: loading, errorStatus: errInfo === null || errInfo === void 0 ? void 0 : errInfo.errorStatus, errorMessage: errInfo === null || errInfo === void 0 ? void 0 : errInfo.errorMessage, selectedList: selectedList, multiple: multiple, setSelectedIds: setSelectedIds, setSelectedList: setSelectedList, selectedIds: selectedIds })))));
|
|
11
|
+
};
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { Modal } from 'tea-component';
|
|
3
|
+
import { ModalSearchH5 } from './modal-search-h5';
|
|
4
|
+
import { ErrorStatus, LoadingStatus } from './error-tips';
|
|
5
|
+
import { DepartBreadcrumb } from './depart-breadcrumb';
|
|
6
|
+
import { SelectedListH5 } from './selected-list-h5';
|
|
7
|
+
import './index.css';
|
|
8
|
+
import { OrgTreeH5 } from './org-tree-h5';
|
|
9
|
+
import { UserListH5 } from './user-select-h5/user-list-h5';
|
|
10
|
+
import { getNode, getBreadNode } from '../common/utils';
|
|
11
|
+
import debounce from '../../../../utils/debounce';
|
|
12
|
+
import { fetchSearchUser, fetchUserList } from '../common/fetch-data-service';
|
|
13
|
+
const appendNode = { id: 'appendNode', content: '直属成员' };
|
|
14
|
+
export const ModalSelectH5 = (props) => {
|
|
15
|
+
var _a;
|
|
16
|
+
const { open, onClose, onConfirm, treeData, multiple = false, errorInfo, setErrorInfo, selectedUserList, setSelectedUserList, confirmUserList, request, filterParams, pageNo, setPageNo, pageSize, treeDataError, } = props;
|
|
17
|
+
const [loading, setLoading] = useState({ id: null, status: false });
|
|
18
|
+
const [pageLoading, setPageLoading] = useState(false);
|
|
19
|
+
const [listLoading, setListLoading] = useState(false);
|
|
20
|
+
const [isSearch, setIsSearch] = useState(false);
|
|
21
|
+
// 是否有搜索项
|
|
22
|
+
const [keyWords, setKeyWords] = useState('');
|
|
23
|
+
const [showTreeData, setShowTreeData] = useState([]);
|
|
24
|
+
const [breadCrumbData, setBreadCrumbData] = useState([]);
|
|
25
|
+
const [userList, setUserList] = useState([]);
|
|
26
|
+
const [isEnd, setIsEnd] = useState(false);
|
|
27
|
+
const treeNode = getNode(treeData, 'root', 'id');
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
// 仅执行一次
|
|
30
|
+
if (treeData) {
|
|
31
|
+
setShowTreeData(treeNode);
|
|
32
|
+
}
|
|
33
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
|
+
}, [treeData]);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
// 仅执行一次
|
|
37
|
+
if (open) {
|
|
38
|
+
setShowTreeData(treeNode);
|
|
39
|
+
setUserList([]);
|
|
40
|
+
setBreadCrumbData([]);
|
|
41
|
+
setPageNo(1);
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
+
}, [open]);
|
|
45
|
+
const handleFocus = (value) => {
|
|
46
|
+
setIsSearch(value);
|
|
47
|
+
};
|
|
48
|
+
//重置状态
|
|
49
|
+
const onrest = () => {
|
|
50
|
+
setIsEnd(false);
|
|
51
|
+
handleFocus(false);
|
|
52
|
+
setKeyWords('');
|
|
53
|
+
setBreadCrumbData([]);
|
|
54
|
+
setUserList([]);
|
|
55
|
+
setShowTreeData(treeNode);
|
|
56
|
+
};
|
|
57
|
+
//搜索值变化延迟响应,节流处理
|
|
58
|
+
const onSearch = debounce((key) => {
|
|
59
|
+
try {
|
|
60
|
+
setBreadCrumbData([]);
|
|
61
|
+
if (key && key.length > 0) {
|
|
62
|
+
setPageLoading(true);
|
|
63
|
+
fetchSearchUser({ key, ...filterParams }, request).then((res) => {
|
|
64
|
+
setPageLoading(false);
|
|
65
|
+
setUserList(res);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
setUserList([]);
|
|
70
|
+
setShowTreeData(treeNode);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
setPageLoading(false);
|
|
75
|
+
setErrorInfo({ errorStatus: true, errorMessage: e });
|
|
76
|
+
}
|
|
77
|
+
}, 500);
|
|
78
|
+
const cancleSearch = () => {
|
|
79
|
+
onrest();
|
|
80
|
+
};
|
|
81
|
+
const loadItem = (item) => {
|
|
82
|
+
var _a;
|
|
83
|
+
try {
|
|
84
|
+
setPageNo(1);
|
|
85
|
+
setLoading({ id: item === null || item === void 0 ? void 0 : item.id, status: true });
|
|
86
|
+
switch (item === null || item === void 0 ? void 0 : item.id) {
|
|
87
|
+
case 'isNoOrgList': {
|
|
88
|
+
const orgId = item === null || item === void 0 ? void 0 : item.id;
|
|
89
|
+
fetchUserData({ orgId, pageNo, pageSize, request, ...filterParams });
|
|
90
|
+
setBreadCrumbData(getBreadNode(breadCrumbData, item));
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
case 'appendNode': {
|
|
94
|
+
const orgId = (_a = breadCrumbData[breadCrumbData.length - 1]) === null || _a === void 0 ? void 0 : _a.id;
|
|
95
|
+
fetchUserData({ orgId, pageNo, pageSize, request, ...filterParams });
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
default: {
|
|
99
|
+
fetchUserList({ OrgId: item === null || item === void 0 ? void 0 : item.id, pageNo, pageSize, ...filterParams }, request).then((res) => {
|
|
100
|
+
setLoading({ id: null, status: false });
|
|
101
|
+
setListLoading(false);
|
|
102
|
+
if ((res === null || res === void 0 ? void 0 : res.total) > 0) {
|
|
103
|
+
appendNode['children'] = res === null || res === void 0 ? void 0 : res.records;
|
|
104
|
+
appendNode['content'] = `直属成员(${res === null || res === void 0 ? void 0 : res.total})`;
|
|
105
|
+
setShowTreeData((item === null || item === void 0 ? void 0 : item.children)
|
|
106
|
+
? [appendNode].concat(item === null || item === void 0 ? void 0 : item.children)
|
|
107
|
+
: [appendNode]);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
setShowTreeData((item === null || item === void 0 ? void 0 : item.children) ? [].concat(item === null || item === void 0 ? void 0 : item.children) : []);
|
|
111
|
+
}
|
|
112
|
+
setBreadCrumbData(getBreadNode(breadCrumbData, item));
|
|
113
|
+
});
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
setLoading({ id: null, status: false });
|
|
120
|
+
setErrorInfo({ errorStatus: true, errorMessage: e });
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const onBreadCrumbClick = (item) => {
|
|
124
|
+
var _a;
|
|
125
|
+
setKeyWords('');
|
|
126
|
+
if (!item) {
|
|
127
|
+
//根目录
|
|
128
|
+
setIsEnd(false);
|
|
129
|
+
setUserList([]);
|
|
130
|
+
setPageNo(1);
|
|
131
|
+
setShowTreeData(treeNode);
|
|
132
|
+
setBreadCrumbData([]);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
//避免重复点击请求
|
|
136
|
+
if ((item === null || item === void 0 ? void 0 : item.id) !== ((_a = breadCrumbData[breadCrumbData.length - 1]) === null || _a === void 0 ? void 0 : _a.id) ||
|
|
137
|
+
showTreeData.length === 0) {
|
|
138
|
+
setListLoading(true);
|
|
139
|
+
setIsEnd(false);
|
|
140
|
+
// 部门目录
|
|
141
|
+
loadItem(item);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const onScrollBottom = debounce(() => {
|
|
146
|
+
var _a;
|
|
147
|
+
if (!(keyWords && keyWords.length > 0)) {
|
|
148
|
+
const orgId = ((_a = breadCrumbData[breadCrumbData.length - 1]) === null || _a === void 0 ? void 0 : _a.id) || 'isNoOrgList';
|
|
149
|
+
setLoading({ id: orgId, status: true });
|
|
150
|
+
fetchUserData({ orgId, pageNo, pageSize, request, ...filterParams });
|
|
151
|
+
}
|
|
152
|
+
}, 1000);
|
|
153
|
+
const fetchUserData = ({ orgId, pageNo, pageSize, request, ...resetProps }) => {
|
|
154
|
+
if (orgId && !isEnd) {
|
|
155
|
+
fetchUserList({ OrgId: orgId, pageNo, pageSize, ...resetProps }, request).then((res) => {
|
|
156
|
+
setLoading({ id: null, status: false });
|
|
157
|
+
if ((res === null || res === void 0 ? void 0 : res.total) > 0) {
|
|
158
|
+
const currentUserData = userList.concat(res === null || res === void 0 ? void 0 : res.records);
|
|
159
|
+
setUserList(currentUserData);
|
|
160
|
+
setShowTreeData([]);
|
|
161
|
+
if ((res === null || res === void 0 ? void 0 : res.total) <= currentUserData.length) {
|
|
162
|
+
setIsEnd(true);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
setPageNo(pageNo + 1);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const onTouchMove = (e) => {
|
|
172
|
+
document.getElementById('wd-search-input').blur();
|
|
173
|
+
e.stopPropagation();
|
|
174
|
+
};
|
|
175
|
+
return (React.createElement(Modal, { visible: open, onClose: () => {
|
|
176
|
+
onrest();
|
|
177
|
+
onClose();
|
|
178
|
+
}, destroyOnClose: true, className: `weda-ui weda-select-user-dept__dialog` },
|
|
179
|
+
React.createElement(Modal.Body, { className: ((_a = selectedUserList[0]) === null || _a === void 0 ? void 0 : _a.userId) ? 'is-selected-value' : '' },
|
|
180
|
+
React.createElement("div", { className: "weda-select-user-dept__dialog-header" }, '选择成员'),
|
|
181
|
+
React.createElement(ModalSearchH5, { value: keyWords, onChange: (key) => {
|
|
182
|
+
setKeyWords(key);
|
|
183
|
+
onSearch(key);
|
|
184
|
+
}, onCancel: cancleSearch, isSearch: isSearch, onFocus: (e) => {
|
|
185
|
+
handleFocus(true);
|
|
186
|
+
e.stopPropagation();
|
|
187
|
+
} }),
|
|
188
|
+
(errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.errorStatus) ? (React.createElement(ErrorStatus, { description: (errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.errorMessage) || null })) : (React.createElement(React.Fragment, null, treeData && treeData.length > 0 && !pageLoading ? (React.createElement("div", { className: "weda-select-user-dept__dialog-content" },
|
|
189
|
+
!(keyWords && keyWords.length > 0) && (React.createElement(DepartBreadcrumb, { data: breadCrumbData, onBreadCrumbClick: (item) => onBreadCrumbClick(item) })),
|
|
190
|
+
listLoading ? (React.createElement(React.Fragment, null,
|
|
191
|
+
React.createElement("div", { className: "weda-select-user-dept__dialog-list" },
|
|
192
|
+
React.createElement(LoadingStatus, null)))) : (React.createElement(React.Fragment, null, showTreeData &&
|
|
193
|
+
showTreeData.length > 0 &&
|
|
194
|
+
!(keyWords && keyWords.length > 0) ? (React.createElement(OrgTreeH5, { treeData: showTreeData, loading: loading, loadItem: (item) => loadItem(item), treeDataError: treeDataError, onTouchMove: onTouchMove })) : (React.createElement(UserListH5, { userList: userList, selectedList: selectedUserList, setSelectedList: setSelectedUserList, loading: loading, multiple: multiple, isEnd: isEnd, isSearch: keyWords ? true : false, onScrollBottom: onScrollBottom, onTouchMove: onTouchMove })))))) : (React.createElement("div", { className: "weda-select-user-dept__dialog-list" },
|
|
195
|
+
React.createElement(LoadingStatus, null)))))),
|
|
196
|
+
React.createElement(Modal.Footer, null,
|
|
197
|
+
React.createElement(SelectedListH5, { selectedList: selectedUserList, setSelectedList: setSelectedUserList, confirmUserList: confirmUserList, onClose: () => {
|
|
198
|
+
onrest();
|
|
199
|
+
onClose();
|
|
200
|
+
}, onConfirm: onConfirm }))));
|
|
201
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { LoadingStatus, ErrorStatus } from './error-tips';
|
|
3
|
+
import './index.css';
|
|
4
|
+
import { IconFont } from 'tdesign-icons-react';
|
|
5
|
+
import classNames from '../../../../utils/classnames';
|
|
6
|
+
export const OrgTreeH5 = (props) => {
|
|
7
|
+
const { treeData, treeDataError, loading, loadItem, onTouchMove } = props;
|
|
8
|
+
return (React.createElement("div", { className: classNames('weda-select-user-dept__dialog-list'), onTouchMove: (e) => onTouchMove(e) }, treeDataError ? (React.createElement(ErrorStatus, { description: treeDataError || null })) : (React.createElement(React.Fragment, null, treeData && treeData.length > 0 && !treeDataError ? ((treeData || []).map((item, index) => (React.createElement("div", { className: "weda-select-user-dept__list-item", key: index + (item === null || item === void 0 ? void 0 : item.id), onClick: () => {
|
|
9
|
+
!(item === null || item === void 0 ? void 0 : item.isUser) ? loadItem(item) : null;
|
|
10
|
+
} },
|
|
11
|
+
React.createElement("div", { className: "weda-select-user-dept__list-item-wrap" },
|
|
12
|
+
React.createElement("div", { className: (item === null || item === void 0 ? void 0 : item.id) === 'appendNode'
|
|
13
|
+
? 'weda-select-user-dept__item-detail weda-select-user-dept__item-detail-is-user'
|
|
14
|
+
: 'weda-select-user-dept__item-detail weda-select-user-dept__item-detail-is-org' },
|
|
15
|
+
React.createElement("div", { className: "item-name" }, item === null || item === void 0 ? void 0 : item.content),
|
|
16
|
+
loading.id !== item.id && (React.createElement("div", { className: "lcap-icon lcap-icon-chevronright" })),
|
|
17
|
+
loading.id === item.id && (loading === null || loading === void 0 ? void 0 : loading.status) && (React.createElement("div", null,
|
|
18
|
+
React.createElement(IconFont, { name: "loading", className: `user_loading weda-grid-navigation__fonticon` }))))))))) : (React.createElement(LoadingStatus, null))))));
|
|
19
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tree } from 'tea-component';
|
|
3
|
+
import { LoadingStatus, ErrorStatus } from './error-tips';
|
|
4
|
+
import './index.css';
|
|
5
|
+
export const OrgTree = (props) => {
|
|
6
|
+
const { selectedOrgId = [], treeData, treeDataError, onActive,
|
|
7
|
+
//是否展示 Checkbox
|
|
8
|
+
selectable = false,
|
|
9
|
+
//是否多选
|
|
10
|
+
mutiple = false, } = props;
|
|
11
|
+
// 切换选中组织节点
|
|
12
|
+
const onChange = (ids, checked, nodeId) => {
|
|
13
|
+
//是否取消选中
|
|
14
|
+
if (selectedOrgId.indexOf(nodeId) !== -1) {
|
|
15
|
+
const actionIds = selectedOrgId.filter((e) => e !== nodeId);
|
|
16
|
+
onActive(actionIds);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
//单选情况下
|
|
20
|
+
if (!mutiple) {
|
|
21
|
+
onActive([nodeId]);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
onActive(selectedOrgId.concat([nodeId]));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return (React.createElement(React.Fragment, null, treeDataError ? (React.createElement(ErrorStatus, { description: treeDataError || null })) : (React.createElement(React.Fragment, null, treeData && treeData.length > 0 && !treeDataError ? (React.createElement(Tree, { className: "depart-tree", data: treeData, fullActivable: true, activable: true, selectable: selectable, selectedIds: selectedOrgId, activeIds: selectedOrgId, selectStrictly: true, onActive: (ids, context) => {
|
|
29
|
+
onChange(ids, context === null || context === void 0 ? void 0 : context.active, context === null || context === void 0 ? void 0 : context.nodeId);
|
|
30
|
+
}, onSelect: (ids, context) => {
|
|
31
|
+
onChange(ids, context === null || context === void 0 ? void 0 : context.selected, context === null || context === void 0 ? void 0 : context.nodeId);
|
|
32
|
+
} })) : (React.createElement(LoadingStatus, null))))));
|
|
33
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Button as TButton, Popover, Tag, Bubble } from 'tea-component';
|
|
3
|
+
export const SelectedListH5 = (props) => {
|
|
4
|
+
const { selectedList, setSelectedList, onClose, onConfirm, confirmUserList } = props;
|
|
5
|
+
const [showDetail, setShowDetail] = useState(false);
|
|
6
|
+
return (React.createElement("div", null,
|
|
7
|
+
selectedList.length > 0 && (React.createElement("div", { className: "weda-select-user-dept__select-result", onClick: () => {
|
|
8
|
+
setShowDetail(true);
|
|
9
|
+
} },
|
|
10
|
+
React.createElement("div", { className: "weda-select-user-dept__select-label" }, "\u5DF2\u9009\u62E9"),
|
|
11
|
+
React.createElement("div", { className: "weda-select-user-dept__result-list" }, selectedList.map((d) => (React.createElement(Tag, { key: (d === null || d === void 0 ? void 0 : d.userId) || (d === null || d === void 0 ? void 0 : d.value) }, d === null || d === void 0 ? void 0 : d.content)))),
|
|
12
|
+
React.createElement(Popover, { trigger: "click", visible: showDetail, popupContainer: () => document.querySelector('#tea-overlay-root'), overlay: React.createElement("div", { className: "weda-ui-custom-picker" },
|
|
13
|
+
React.createElement("div", { className: "weda-ui-custom-backdrop", "data-testid": "allTime-backdrop" }),
|
|
14
|
+
React.createElement("div", { className: "weda-ui-custom-picker__inner" },
|
|
15
|
+
React.createElement("div", { className: "weda-ui-custom-picker__header" },
|
|
16
|
+
React.createElement("div", { "data-testid": "allTime-cancel", className: "weda-ui-custom-picker__header-cancle", onClick: (e) => {
|
|
17
|
+
setShowDetail(false);
|
|
18
|
+
//onClose();
|
|
19
|
+
e.stopPropagation();
|
|
20
|
+
} }, "\u53D6\u6D88"),
|
|
21
|
+
React.createElement("div", { className: "weda-ui-custom-picker__header-title" }, "\u5DF2\u9009\u62E9"),
|
|
22
|
+
React.createElement("div", { "data-testid": "allTime-confirm", className: "weda-ui-custom-picker__header-confirm", onClick: (e) => {
|
|
23
|
+
setShowDetail(false);
|
|
24
|
+
//onConfirm();
|
|
25
|
+
e.stopPropagation();
|
|
26
|
+
} }, "\u786E\u8BA4")),
|
|
27
|
+
React.createElement("div", { className: "weda-ui-custom-picker__body" },
|
|
28
|
+
React.createElement("ul", { className: "weda-user-select-h5 weda-ui-custom-picker__list " }, selectedList.map((d) => (React.createElement("li", { className: "weda-ui-custom-picker__list-item", key: (d === null || d === void 0 ? void 0 : d.userId) || (d === null || d === void 0 ? void 0 : d.value) },
|
|
29
|
+
React.createElement("span", { className: "weda-ui-custom-picker__list-label" }, d === null || d === void 0 ? void 0 : d.content),
|
|
30
|
+
React.createElement("i", { className: "weda-ui-custom-picker__list-dismiss", onClick: () => {
|
|
31
|
+
setSelectedList(selectedList.filter((e) => (e === null || e === void 0 ? void 0 : e.userId) !== (d === null || d === void 0 ? void 0 : d.userId)));
|
|
32
|
+
} })))))))) },
|
|
33
|
+
React.createElement("div", { className: "weda-select-user-dept__select-total" },
|
|
34
|
+
"\u5171",
|
|
35
|
+
selectedList.length,
|
|
36
|
+
"\u4EBA",
|
|
37
|
+
React.createElement("i", { className: "lcap-icon lcap-icon-chevronright" }))))),
|
|
38
|
+
React.createElement("div", { className: "weda-select-user-dept__btn-group" },
|
|
39
|
+
React.createElement(TButton, { type: "weak", onClick: onClose, className: "wd-btn--outline" }, "\u53D6\u6D88"),
|
|
40
|
+
React.createElement(Bubble, { content: selectedList.length === 0 && confirmUserList.length === 0
|
|
41
|
+
? '请选择成员'
|
|
42
|
+
: null, className: "weda-select-user-dept__bubble" },
|
|
43
|
+
React.createElement(TButton, { type: "primary", onClick: onConfirm, disabled: selectedList.length === 0 && confirmUserList.length == 0 }, "\u786E\u5B9A")))));
|
|
44
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TagGroup, Tag, Text } from 'tea-component';
|
|
3
|
+
import './index.css';
|
|
4
|
+
export const SelectedList = (props) => {
|
|
5
|
+
const { selectedList, onClose, isUser = true } = props;
|
|
6
|
+
// const { selectedList, setSelectedUserList } =
|
|
7
|
+
// React.useContext(UserOrgContext) || {};
|
|
8
|
+
// const onClose = (item) => {
|
|
9
|
+
// //检查是否当前页用户被关闭
|
|
10
|
+
// setSelectedUserList(selectedUserList.filter((e) => e?.id !== item?.id));
|
|
11
|
+
// };
|
|
12
|
+
return (React.createElement("div", { className: "weda-ui-user-select-result" }, selectedList && selectedList.length > 0 ? (React.createElement(TagGroup, null, (selectedList || []).map((item) => (React.createElement(Tag, { key: item === null || item === void 0 ? void 0 : item.id, onClose: () => onClose(item) }, item === null || item === void 0 ? void 0 : item.content))))) : (React.createElement(Text, { className: "weda-ui-user-select-input__placeholder", theme: "label" },
|
|
13
|
+
"\u65E0\u9009\u4E2D",
|
|
14
|
+
isUser ? '成员' : '部门'))));
|
|
15
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* eslint-disable prettier/prettier */
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Radio, List, Checkbox, useClassNames, Text } from 'tea-component';
|
|
4
|
+
import './index.css';
|
|
5
|
+
import { ErrorStatus, NullStatus, LoadingStatus } from './error-tips';
|
|
6
|
+
// 用户组织展示列表
|
|
7
|
+
export const UserOrgList = ({ isUser = true, userOrgList, isOrg, loading, errorStatus, errorMessage, selectedList, multiple, setSelectedList, setSelectedIds, selectedIds, }) => {
|
|
8
|
+
const { Margin } = useClassNames();
|
|
9
|
+
const onChange = (value, item) => {
|
|
10
|
+
if (value) {
|
|
11
|
+
setSelectedIds
|
|
12
|
+
? setSelectedIds((selectedIds || []).concat([item === null || item === void 0 ? void 0 : item.id]))
|
|
13
|
+
: false;
|
|
14
|
+
setSelectedList((selectedList || []).concat([item]));
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
setSelectedIds
|
|
18
|
+
? setSelectedIds(selectedIds.filter((e) => e !== (item === null || item === void 0 ? void 0 : item.id)))
|
|
19
|
+
: false;
|
|
20
|
+
setSelectedList(selectedList.filter((e) => e.id !== (item === null || item === void 0 ? void 0 : item.id)));
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
return (React.createElement(List, { className: "weda-ui-user-select-list" },
|
|
24
|
+
React.createElement(List.Item, null, loading ? (React.createElement(LoadingStatus, null)) : (React.createElement(React.Fragment, null, errorStatus ? (React.createElement(ErrorStatus, { description: errorMessage || null })) : (React.createElement(React.Fragment, null, userOrgList && userOrgList.length > 0 ? (React.createElement(React.Fragment, null, multiple ? (React.createElement("div", null,
|
|
25
|
+
React.createElement(Checkbox.Group, { layout: "column", value: selectedIds }, (userOrgList || []).map((item) => {
|
|
26
|
+
var _a;
|
|
27
|
+
return (React.createElement(React.Fragment, null,
|
|
28
|
+
React.createElement(Checkbox, { name: item === null || item === void 0 ? void 0 : item.id, onChange: (value) => onChange(value, item) }, item === null || item === void 0 ? void 0 :
|
|
29
|
+
item.content,
|
|
30
|
+
isOrg && isUser && (React.createElement(Text, { theme: "label", className: Margin.Left['2n'] }, (_a = item === null || item === void 0 ? void 0 : item.mainOrg[0]) === null || _a === void 0 ? void 0 : _a.OrgName)))));
|
|
31
|
+
})))) : (React.createElement(React.Fragment, null, (userOrgList || []).map((item, index) => {
|
|
32
|
+
var _a;
|
|
33
|
+
return (React.createElement(Radio.Group, { value: selectedIds[0], key: index, layout: "column", onChange: (value) => {
|
|
34
|
+
// 被选中过,取消选中
|
|
35
|
+
if ((selectedIds || []).indexOf(value) !== -1) {
|
|
36
|
+
setSelectedIds
|
|
37
|
+
? setSelectedIds(selectedIds.filter((e) => e !== (item === null || item === void 0 ? void 0 : item.id)))
|
|
38
|
+
: false;
|
|
39
|
+
setSelectedList(selectedList.filter((e) => e.id !== value));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const list = [].concat([item]);
|
|
43
|
+
setSelectedIds
|
|
44
|
+
? setSelectedIds([].concat([item === null || item === void 0 ? void 0 : item.id]))
|
|
45
|
+
: false;
|
|
46
|
+
setSelectedList(list);
|
|
47
|
+
}
|
|
48
|
+
} },
|
|
49
|
+
React.createElement(Radio, { name: item === null || item === void 0 ? void 0 : item.id }, item === null || item === void 0 ? void 0 :
|
|
50
|
+
item.content,
|
|
51
|
+
isOrg && isUser && (React.createElement(Text, { theme: "label", className: Margin.Left['2n'] }, (_a = item === null || item === void 0 ? void 0 : item.mainOrg[0]) === null || _a === void 0 ? void 0 : _a.OrgName)))));
|
|
52
|
+
}))))) : (React.createElement(NullStatus, { description: isOrg
|
|
53
|
+
? `无相关${isUser ? '成员' : '部门'}`
|
|
54
|
+
: `无可选${isUser ? '成员' : '部门'}`, size: 's' })))))))));
|
|
55
|
+
};
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import { UserSelectPC } from '../user-select-pc/user-select-pc';
|
|
3
|
+
import { UserTreeSelectH5 as UserSelectH5 } from './user-select-h5';
|
|
4
|
+
import '../userOrgSelect.css';
|
|
5
|
+
import { isInIde, filterStrList, getUserInfo, usePlatform, } from '../../../../../utils/platform';
|
|
6
|
+
import { useSyncValue } from '../../../../../utils/hooks/useSyncValue';
|
|
7
|
+
import isObjectEqual from '../../../../../utils/isObjectEqual';
|
|
8
|
+
import { getUserListByIds, defaultRequest, } from '../../common/fetch-data-service';
|
|
9
|
+
import { emptyArray, emptyObject } from '../../../../../utils/constant';
|
|
10
|
+
import { useViewData } from '../../hooks/use-views-data';
|
|
11
|
+
import { useDepartData } from '../../hooks/use-depart-data';
|
|
12
|
+
import { parseStrToArr } from '../../common/utils';
|
|
13
|
+
export default function UserTreeSelect(props) {
|
|
14
|
+
const { events = emptyObject, defaultValue = emptyArray, confirmValue = '', defaultValueType = 'noneUser', onChange = null, multiple = false, request = defaultRequest, where, confirmAction, } = props;
|
|
15
|
+
const platform = usePlatform();
|
|
16
|
+
const [errInfo, setErrInfo] = useState({
|
|
17
|
+
errorStatus: false,
|
|
18
|
+
errorMessage: null,
|
|
19
|
+
});
|
|
20
|
+
const [open, setOpen] = useState(false);
|
|
21
|
+
const [selectUserIds, setSelectUserIds] = useSyncValue(defaultValue, isObjectEqual);
|
|
22
|
+
// 两次默认值不同, 需要刷新
|
|
23
|
+
const prevDefaultRef = React.useRef(null);
|
|
24
|
+
//弹窗中被选中用户集合
|
|
25
|
+
const [selectedUserList, setSelectedUserList] = useState([]);
|
|
26
|
+
//弹窗中被选中用户id集合
|
|
27
|
+
const [selectedUserIds, setSelectedUserIds] = useState([]);
|
|
28
|
+
// 最终选定用户集合
|
|
29
|
+
const [confirmUserList, setConfirmUserList] = useState([]);
|
|
30
|
+
//组织下展示用户页码
|
|
31
|
+
const [pageNo, setPageNo] = useState(1);
|
|
32
|
+
//组织下展示用户页大小
|
|
33
|
+
const pageSize = 200;
|
|
34
|
+
const { filterParams } = useViewData(where);
|
|
35
|
+
const { treeData, error } = useDepartData({ request });
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
// 仅执行一次
|
|
38
|
+
if (defaultValueType === 'loginUser') {
|
|
39
|
+
getLoginUserInfo();
|
|
40
|
+
}
|
|
41
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
42
|
+
}, [defaultValueType]);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (defaultValueType === 'confirmUser') {
|
|
45
|
+
setSelectUserIds(confirmValue);
|
|
46
|
+
}
|
|
47
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
+
}, [defaultValueType, confirmValue]);
|
|
49
|
+
const getLoginUserInfo = async () => {
|
|
50
|
+
if (isInIde()) {
|
|
51
|
+
setConfirmUserList([{ userName: '显示登录人名称', id: 'loginmock' }]);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const logginUserInfo = await getUserInfo();
|
|
55
|
+
setSelectUserIds(multiple ? [logginUserInfo === null || logginUserInfo === void 0 ? void 0 : logginUserInfo.userId] : logginUserInfo === null || logginUserInfo === void 0 ? void 0 : logginUserInfo.userId);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const getDefaultUser = async (defaultValue) => {
|
|
59
|
+
try {
|
|
60
|
+
setErrInfo({ errorStatus: false, errorMessage: null });
|
|
61
|
+
// 避免ide mock值请求数据异常
|
|
62
|
+
if (defaultValue && defaultValue.length !== 0 && !isInIde()) {
|
|
63
|
+
const userSelectList = await getUserListByIds({
|
|
64
|
+
selectUserIds: filterStrList(parseStrToArr(defaultValue)) || [],
|
|
65
|
+
IsNoRelatedOrgFlag: false,
|
|
66
|
+
request,
|
|
67
|
+
});
|
|
68
|
+
setConfirmUserList(userSelectList);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
setConfirmUserList([]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
setErrInfo({ errorStatus: true, errorMessage: e });
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
try {
|
|
80
|
+
if (!isObjectEqual(prevDefaultRef.current, selectUserIds)) {
|
|
81
|
+
getDefaultUser(selectUserIds);
|
|
82
|
+
prevDefaultRef.current = selectUserIds;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (e) { }
|
|
86
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
87
|
+
}, [defaultValueType, selectUserIds]);
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
var _a;
|
|
90
|
+
setSelectedUserList(confirmUserList);
|
|
91
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(setOnChangeValue(multiple, confirmUserList));
|
|
92
|
+
(_a = events === null || events === void 0 ? void 0 : events.change) === null || _a === void 0 ? void 0 : _a.call(events, setOnChangeValue(multiple, confirmUserList, true));
|
|
93
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
94
|
+
}, [confirmUserList]);
|
|
95
|
+
//确定 关闭弹窗
|
|
96
|
+
const onConfirm = () => {
|
|
97
|
+
confirmAction === null || confirmAction === void 0 ? void 0 : confirmAction({
|
|
98
|
+
userIds: setOnChangeValue(multiple, selectedUserList),
|
|
99
|
+
users: setOnChangeValue(multiple, selectedUserList, true),
|
|
100
|
+
});
|
|
101
|
+
setConfirmUserList(selectedUserList);
|
|
102
|
+
setOpen(false);
|
|
103
|
+
};
|
|
104
|
+
//取消 关闭弹窗
|
|
105
|
+
const onCancel = () => {
|
|
106
|
+
setSelectedUserIds([]);
|
|
107
|
+
setSelectedUserList([]);
|
|
108
|
+
setOpen(false);
|
|
109
|
+
};
|
|
110
|
+
const restProps = {
|
|
111
|
+
errInfo,
|
|
112
|
+
open,
|
|
113
|
+
setOpen,
|
|
114
|
+
selectedUserList,
|
|
115
|
+
setSelectedUserList,
|
|
116
|
+
confirmUserList,
|
|
117
|
+
setConfirmUserList,
|
|
118
|
+
selectedUserIds,
|
|
119
|
+
setSelectedUserIds,
|
|
120
|
+
pageNo,
|
|
121
|
+
setPageNo,
|
|
122
|
+
pageSize,
|
|
123
|
+
onConfirm,
|
|
124
|
+
onCancel,
|
|
125
|
+
platform,
|
|
126
|
+
filterParams,
|
|
127
|
+
treeData,
|
|
128
|
+
error,
|
|
129
|
+
};
|
|
130
|
+
if ((props === null || props === void 0 ? void 0 : props.showType) === 'pc') {
|
|
131
|
+
return React.createElement(UserSelectPC, { ...restProps, ...props });
|
|
132
|
+
}
|
|
133
|
+
if ((props === null || props === void 0 ? void 0 : props.showType) === 'h5') {
|
|
134
|
+
return React.createElement(UserSelectH5, { ...restProps, ...props });
|
|
135
|
+
}
|
|
136
|
+
return platform === 'h5' ? (React.createElement(UserSelectH5, { ...restProps, ...props })) : (React.createElement(UserSelectPC, { ...restProps, ...props }));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* 设置onChange值
|
|
140
|
+
* @param multiple 是否是多选
|
|
141
|
+
* @param confirmUserList 已选用户列表
|
|
142
|
+
* @param isEventChange 是否是event事件
|
|
143
|
+
*/
|
|
144
|
+
function setOnChangeValue(multiple, confirmUserList, isEventChange = false) {
|
|
145
|
+
var _a, _b;
|
|
146
|
+
if (isEventChange) {
|
|
147
|
+
return multiple
|
|
148
|
+
? {
|
|
149
|
+
value: confirmUserList.length > 0
|
|
150
|
+
? confirmUserList.map((e) => {
|
|
151
|
+
return e === null || e === void 0 ? void 0 : e.id;
|
|
152
|
+
})
|
|
153
|
+
: null,
|
|
154
|
+
data: confirmUserList,
|
|
155
|
+
}
|
|
156
|
+
: {
|
|
157
|
+
value: ((_a = confirmUserList[0]) === null || _a === void 0 ? void 0 : _a.id) || null,
|
|
158
|
+
data: confirmUserList[0] || null,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return multiple
|
|
162
|
+
? confirmUserList.length > 0
|
|
163
|
+
? confirmUserList.map((e) => {
|
|
164
|
+
return e === null || e === void 0 ? void 0 : e.id;
|
|
165
|
+
})
|
|
166
|
+
: null
|
|
167
|
+
: (_b = confirmUserList[0]) === null || _b === void 0 ? void 0 : _b.id;
|
|
168
|
+
}
|