@cloudbase/weda-ui 3.4.4 → 3.4.6

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.
Files changed (147) hide show
  1. package/dist/configs/components/chart/bar.json +113 -8
  2. package/dist/configs/components/chart/line.js +113 -8
  3. package/dist/configs/components/chart/pie.json +113 -8
  4. package/dist/configs/components/chart/statisticsCard.json +57 -0
  5. package/dist/configs/components/dataView.js +7 -7
  6. package/dist/configs/components/form/input.json +48 -2
  7. package/dist/configs/components/form/richText.json +2 -1
  8. package/dist/configs/components/form/uploader.json +62 -14
  9. package/dist/configs/components/graphicCard.json +1 -1
  10. package/dist/configs/components/grid/col.js +4 -1
  11. package/dist/configs/components/grid/grid.js +8 -3
  12. package/dist/configs/components/grid/row.js +51 -3
  13. package/dist/configs/components/listView.js +113 -9
  14. package/dist/configs/components/navLayout.json +1 -1
  15. package/dist/configs/components/repeater.js +4 -1
  16. package/dist/configs/components/table.json +125 -9
  17. package/dist/configs/components/wd-bubble.js +6 -0
  18. package/dist/configs/components/wd-button.js +6 -0
  19. package/dist/configs/components/wd-divider.js +7 -18
  20. package/dist/configs/components/wd-icon.js +7 -0
  21. package/dist/configs/components/wd-image.js +7 -0
  22. package/dist/configs/components/wd-link.js +7 -2
  23. package/dist/configs/components/wd-text.js +14 -6
  24. package/dist/configs/index.js +0 -2
  25. package/dist/docs/common/componentList.js +1 -1
  26. package/dist/style/index.scss +1 -1
  27. package/dist/web/actions/showModal/index.js +1 -1
  28. package/dist/web/components/calendar/index.js +2 -2
  29. package/dist/web/components/chart/common/data-transform.js +1 -1
  30. package/dist/web/components/chart/statisticsCard/index.js +1 -1
  31. package/dist/web/components/flow/components/index.js +0 -4
  32. package/dist/web/components/flow/frame/index.js +4 -3
  33. package/dist/web/components/flow/frame/types.js +11 -5
  34. package/dist/web/components/flow/frame/utils.js +60 -1
  35. package/dist/web/components/flow/modules/chart/Chart.js +2 -3
  36. package/dist/web/components/flow/modules/chart/index.css +0 -3
  37. package/dist/web/components/flow/modules/combination/index.js +1 -1
  38. package/dist/web/components/flow/modules/operations/components/button/index.js +11 -0
  39. package/dist/web/components/flow/modules/operations/components/button/style.css +5 -0
  40. package/dist/web/components/flow/modules/operations/components/index.js +6 -0
  41. package/dist/web/components/flow/modules/operations/components/popup/index.js +100 -0
  42. package/dist/web/components/flow/modules/operations/components/popup/style.css +154 -0
  43. package/dist/web/components/flow/modules/operations/components/popup/types.js +1 -0
  44. package/dist/web/components/flow/modules/operations/components/user-select/index.js +43 -0
  45. package/dist/web/components/flow/modules/operations/components/user-select/style.css +4 -0
  46. package/dist/web/components/flow/modules/operations/components/user-select/types.js +1 -0
  47. package/dist/web/components/flow/modules/operations/config/approval-form-config.js +140 -0
  48. package/dist/web/components/flow/modules/operations/config/control-config.js +218 -0
  49. package/dist/web/components/flow/modules/operations/config/index.js +2 -0
  50. package/dist/web/components/flow/modules/operations/config/types.js +1 -0
  51. package/dist/web/components/flow/modules/operations/control.js +26 -0
  52. package/dist/web/components/flow/modules/operations/controls-items/add-assignee-btn.js +33 -0
  53. package/dist/web/components/flow/modules/operations/controls-items/apply-cc-btn.js +12 -0
  54. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/comment/index.js +188 -0
  55. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/comment/style.css +51 -0
  56. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/drawer-form/index.js +64 -0
  57. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/drawer-form/types.js +1 -0
  58. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/drawer-form/view-model.js +83 -0
  59. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/field/index.js +16 -0
  60. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/field/style.css +56 -0
  61. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/index.js +47 -0
  62. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/style.css +60 -0
  63. package/dist/web/components/flow/modules/operations/controls-items/cancel-apply-btn.js +15 -0
  64. package/dist/web/components/flow/modules/operations/controls-items/check-list-popup/index.js +11 -0
  65. package/dist/web/components/flow/modules/operations/controls-items/check-list-popup/style.css +26 -0
  66. package/dist/web/components/flow/modules/operations/controls-items/flow-task-info-modal.js +98 -0
  67. package/dist/web/components/flow/modules/operations/controls-items/index.js +18 -0
  68. package/dist/web/components/flow/modules/operations/controls-items/initiation-btn.js +25 -0
  69. package/dist/web/components/flow/modules/operations/controls-items/revoke-modal/index.js +50 -0
  70. package/dist/web/components/flow/modules/operations/controls-items/revoke-modal/style.css +28 -0
  71. package/dist/web/components/flow/modules/operations/controls-items/roll-back-modal.js +104 -0
  72. package/dist/web/components/flow/modules/operations/controls-items/types.js +1 -0
  73. package/dist/web/components/flow/modules/operations/index.js +2 -0
  74. package/dist/web/components/flow/modules/operations/style.css +20 -0
  75. package/dist/web/components/flow/modules/operations/view-model.js +137 -0
  76. package/dist/web/components/flow/services/ideData/instance.js +2 -2
  77. package/dist/web/components/flow/services/ideData/pageDetail.js +1 -0
  78. package/dist/web/components/form/select/dropdown-select/h5.js +1 -1
  79. package/dist/web/components/form/select/dropdown-select/index.css +7 -0
  80. package/dist/web/components/form/select/index.js +2 -7
  81. package/dist/web/components/form/textarea/index.js +1 -1
  82. package/dist/web/components/form/uploader/index.css +19 -0
  83. package/dist/web/components/form/uploader/index.js +21 -3
  84. package/dist/web/components/form/uploader/uploader.h5.js +14 -8
  85. package/dist/web/components/form/uploader/uploader.pc.js +29 -16
  86. package/dist/web/components/form/uploaderFile/index.css +9 -5
  87. package/dist/web/components/form/uploaderFile/uploadFile.h5.js +23 -21
  88. package/dist/web/components/form/uploaderFile/uploadFile.pc.js +14 -10
  89. package/dist/web/components/form/userOrgSelect/common/fetch-data-service.js +0 -1
  90. package/dist/web/components/form/userOrgSelect/component/depart-select/index.js +1 -1
  91. package/dist/web/components/form/userOrgSelect/component/user-select-h5/index.js +43 -22
  92. package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-select-h5.js +15 -4
  93. package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-model.js +2 -2
  94. package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-select-pc.js +4 -2
  95. package/dist/web/components/grid/col.js +81 -18
  96. package/dist/web/components/grid/grid.js +1 -1
  97. package/dist/web/components/grid/row.js +4 -2
  98. package/dist/web/components/index.js +1 -1
  99. package/dist/web/components/listView/index.js +98 -100
  100. package/dist/web/components/lottery/index.js +122 -123
  101. package/dist/web/components/richTextView/index.css +2 -0
  102. package/dist/web/components/swiper/index.js +14 -8
  103. package/dist/web/components/table/BaseTable.js +3 -3
  104. package/dist/web/components/table/ExportFileModalByApi/index.js +1 -1
  105. package/dist/web/components/table/ImportFileModal/index.js +1 -1
  106. package/dist/web/components/table/ImportFileModalByApi/index.js +1 -1
  107. package/dist/web/components/wd-bubble/wd-bubble.js +11 -3
  108. package/dist/web/components/wd-button/wd-button.js +22 -13
  109. package/dist/web/components/wd-divider/wd-divider.js +10 -7
  110. package/dist/web/components/wd-icon/wd-icon.js +12 -3
  111. package/dist/web/components/wd-image/index.js +12 -5
  112. package/dist/web/components/wd-link/wd-link.js +11 -3
  113. package/dist/web/components/wd-text/wd-text.js +15 -3
  114. package/dist/web/utils/hooks/use-cloud-id-temp-url.js +7 -2
  115. package/dist/web/utils/platform.js +9 -2
  116. package/dist/web/utils/tool.js +11 -0
  117. package/dist/web/utils/widget-api/index.js +3 -0
  118. package/package.json +7 -5
  119. package/dist/configs/components/auth.json +0 -17
  120. package/dist/web/components/flow/components/FlowUserSelect/index.css +0 -116
  121. package/dist/web/components/flow/components/FlowUserSelect/index.js +0 -115
  122. package/dist/web/components/flow/components/HighlightTextarea/index.css +0 -42
  123. package/dist/web/components/flow/components/HighlightTextarea/index.js +0 -131
  124. package/dist/web/components/flow/components/UserSelectModel/UserSelect.js +0 -74
  125. package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.css +0 -8
  126. package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.js +0 -86
  127. package/dist/web/components/flow/components/UserSelectModel/index.js +0 -18
  128. package/dist/web/components/flow/components/WedaUserTransfer/index.css +0 -3
  129. package/dist/web/components/flow/components/WedaUserTransfer/index.js +0 -162
  130. package/dist/web/components/flow/modules/control/ApprovalDrawer.css +0 -144
  131. package/dist/web/components/flow/modules/control/ApprovalDrawer.js +0 -178
  132. package/dist/web/components/flow/modules/control/ApprovalPopup.css +0 -115
  133. package/dist/web/components/flow/modules/control/ApprovalPopup.js +0 -241
  134. package/dist/web/components/flow/modules/control/Control.css +0 -29
  135. package/dist/web/components/flow/modules/control/Control.js +0 -93
  136. package/dist/web/components/flow/modules/control/ControlMobile.css +0 -69
  137. package/dist/web/components/flow/modules/control/ControlMobile.js +0 -133
  138. package/dist/web/components/flow/modules/control/FlowTaskInfoModal.css +0 -3
  139. package/dist/web/components/flow/modules/control/FlowTaskInfoModal.js +0 -31
  140. package/dist/web/components/flow/modules/control/constants/index.js +0 -35
  141. package/dist/web/components/flow/modules/control/index.js +0 -15
  142. package/dist/web/components/flow/modules/control/provider/index.js +0 -17
  143. package/dist/web/components/flow/modules/control/provider/useControlModel.js +0 -256
  144. package/dist/web/components/flow/modules/control/provider/useMobileModel.js +0 -86
  145. package/dist/web/components/flow/modules/control/provider/useRevokeAndBackHook.js +0 -82
  146. package/dist/web/components/flow/modules/control/utils/ControlModelUtils.js +0 -57
  147. package/dist/web/components/flow/modules/control/utils/index.js +0 -2
@@ -1,74 +0,0 @@
1
- import React, { useEffect, useRef } from 'react';
2
- import UserTreeSelect from '../../../form/userOrgSelect/component/user-select-h5';
3
- export function UserSelect(props) {
4
- const { multiple = true, isMobile = false, placeholder, visible = false, onClose, } = props;
5
- const visibleRef = useRef(visible);
6
- useEffect(() => {
7
- const onBodyClick = (e) => {
8
- const element = e.target;
9
- if (element.closest('.wedatea2td-icon-close') ||
10
- element.closest('.wedatea2td-btn--weak')) {
11
- onClose === null || onClose === void 0 ? void 0 : onClose();
12
- }
13
- };
14
- const evtOptions = { passive: true, capture: true };
15
- document.addEventListener('click', onBodyClick, evtOptions);
16
- return () => {
17
- document.removeEventListener('click', onBodyClick, evtOptions);
18
- };
19
- }, []);
20
- const { userSelectRef } = usePcUserSelectRef(visible);
21
- const onTreeSelectChange = (value) => {
22
- var _a, _b;
23
- const selectedData = multiple ? value.data : [value.data];
24
- const userList = selectedData === null || selectedData === void 0 ? void 0 : selectedData.map((user) => ({
25
- text: (user === null || user === void 0 ? void 0 : user.userName) || (user === null || user === void 0 ? void 0 : user.content) || '-',
26
- value: user.userId,
27
- }));
28
- (_a = props === null || props === void 0 ? void 0 : props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, userList || []);
29
- (_b = props === null || props === void 0 ? void 0 : props.originOnChange) === null || _b === void 0 ? void 0 : _b.call(props, value);
30
- if (visibleRef.current !== true) {
31
- onClose === null || onClose === void 0 ? void 0 : onClose();
32
- }
33
- };
34
- const commonProps = {
35
- labelVisible: false,
36
- decorator: null,
37
- multiple,
38
- size: 'auto-width',
39
- defaultValue: props.value || [],
40
- events: {
41
- change: onTreeSelectChange,
42
- },
43
- placeholder,
44
- style: {
45
- display: 'none',
46
- },
47
- };
48
- const mobileProps = {
49
- modelType: 'model',
50
- showType: 'h5',
51
- dropDownStyle: { width: '190px' },
52
- modelOpen: visible,
53
- };
54
- const pcProps = {
55
- showType: 'pc',
56
- outerRef: userSelectRef,
57
- onClose,
58
- };
59
- const selectProps = { ...commonProps, ...(isMobile ? mobileProps : pcProps) };
60
- return React.createElement(UserTreeSelect, { ...selectProps });
61
- }
62
- /**
63
- * 针对Pc改版后的选人组件设置的自定义hook
64
- */
65
- function usePcUserSelectRef(visible) {
66
- const userSelectRef = useRef();
67
- useEffect(() => {
68
- var _a, _b, _c;
69
- if (visible) {
70
- (_c = (_b = (_a = userSelectRef.current) === null || _a === void 0 ? void 0 : _a.methods) === null || _b === void 0 ? void 0 : _b.open) === null || _c === void 0 ? void 0 : _c.call(_b);
71
- }
72
- }, [visible]);
73
- return { userSelectRef };
74
- }
@@ -1,8 +0,0 @@
1
- .flow-user-select-mobile {
2
- height: calc(100% - 52px);
3
- }
4
- .flow-user-select-mobile .page-info__wrapper-mobile {
5
- position: relative;
6
- height: 100%;
7
- background: #f2f2f2;
8
- }
@@ -1,86 +0,0 @@
1
- import React, { useState, useEffect, useRef } from 'react';
2
- import { safeJsonParse } from '../../../../utils/tool';
3
- import { UserSelect } from './UserSelect';
4
- import './UserSelectMobile.css';
5
- export const UserSelectMobile = (props) => {
6
- const { visible, approveField, mode, close, values } = props;
7
- const [selected, setSelected] = useState(values);
8
- const visibleRef = useRef(visible);
9
- useEffect(() => {
10
- const selectedAvatar = sessionStorage.getItem('selected');
11
- selectedAvatar && setSelected(safeJsonParse(selectedAvatar));
12
- }, []);
13
- const handleHighLightSelected = (selectedIds, selectedUser, flowData) => {
14
- let v = '';
15
- const { opinionUserMap, approveInfo } = flowData;
16
- selectedIds.forEach((id) => {
17
- const user = selectedUser.find((user) => (user === null || user === void 0 ? void 0 : user.UserId) === id) || {};
18
- const name = `@${user === null || user === void 0 ? void 0 : user.Name}`;
19
- v = `${v + name} `;
20
- if (!opinionUserMap[id]) {
21
- opinionUserMap[id] = name;
22
- }
23
- });
24
- flowData.approveInfo = approveInfo + v;
25
- flowData.opinionUserMap = { ...opinionUserMap };
26
- };
27
- const saveSelect = (selectedIds, selectedUser) => {
28
- var _a;
29
- const flowData = (_a = safeJsonParse(sessionStorage.getItem('FlowActionsMobile'))) !== null && _a !== void 0 ? _a : {};
30
- if (approveField === 'assigneeIds') {
31
- flowData.assigneeIds = selectedIds;
32
- sessionStorage.setItem('hasSignSubmit', 'hasSignSubmit');
33
- }
34
- else if (approveField === 'highLightApprovers') {
35
- handleHighLightSelected(selectedIds || [], selectedUser, flowData);
36
- }
37
- else {
38
- flowData[approveField] = selectedIds;
39
- }
40
- sessionStorage.setItem('FlowActionsMobile', JSON.stringify(flowData));
41
- sessionStorage.setItem(approveField, JSON.stringify(selectedUser));
42
- if (visibleRef.current !== true) {
43
- close === null || close === void 0 ? void 0 : close();
44
- }
45
- };
46
- const onUserSelectChange = (rows) => {
47
- var _a;
48
- const isMultiple = mode === 'multiple';
49
- const ids = isMultiple ? rows.value : [rows.value];
50
- const users = (_a = rows.data) === null || _a === void 0 ? void 0 : _a.map((user) => ({
51
- Name: (user === null || user === void 0 ? void 0 : user.userName) || (user === null || user === void 0 ? void 0 : user.content) || '-',
52
- UserId: user.userId,
53
- }));
54
- saveSelect(ids, users);
55
- };
56
- useEffect(() => {
57
- let lastTouchEnd = 0;
58
- const touchstartFn = (event) => {
59
- if (event.touches.length > 1) {
60
- event.preventDefault();
61
- }
62
- };
63
- const touchendFn = (event) => {
64
- const now = new Date().getTime();
65
- if (now - lastTouchEnd <= 300) {
66
- event.preventDefault();
67
- }
68
- lastTouchEnd = now;
69
- };
70
- const gesturestartFn = (event) => {
71
- event.preventDefault();
72
- };
73
- document.addEventListener('touchstart', touchstartFn);
74
- document.addEventListener('touchend', touchendFn, false);
75
- // 阻止双指放大
76
- document.addEventListener('gesturestart', gesturestartFn);
77
- return () => {
78
- document.removeEventListener('touchstart', touchstartFn);
79
- document.removeEventListener('touchend', touchendFn);
80
- document.removeEventListener('gesturestart', gesturestartFn);
81
- };
82
- }, []);
83
- return visible ? (React.createElement(UserSelect, { visible: true, isMobile: true, multiple: mode === 'multiple', value: selected, originOnChange: onUserSelectChange, onClose: () => {
84
- close === null || close === void 0 ? void 0 : close();
85
- } })) : null;
86
- };
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import { WedaUserTransfer } from '../WedaUserTransfer';
3
- import { FlowUserSelect } from '../FlowUserSelect';
4
- import { UserSelect } from './UserSelect';
5
- import { UserSelectMobile } from './UserSelectMobile';
6
- const useOld = false;
7
- export function UserSelectModel(props) {
8
- if (props.mobileModel) {
9
- if (useOld) {
10
- return React.createElement(FlowUserSelect, { ...props });
11
- }
12
- return React.createElement(UserSelectMobile, { ...props });
13
- }
14
- if (useOld) {
15
- return React.createElement(WedaUserTransfer, { ...props, setOptions: props === null || props === void 0 ? void 0 : props.onChange });
16
- }
17
- return React.createElement(UserSelect, { ...props });
18
- }
@@ -1,3 +0,0 @@
1
- .weda-workbench__flow-user-search {
2
- background-color: #fff !important;
3
- }
@@ -1,162 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import { Transfer, Table, SearchBox, Bubble, Text, Modal, Button, LoadingTip, } from 'tea-component';
3
- import to from 'await-to-js';
4
- import { useGlobalContext } from '../../../../utils/hooks/context';
5
- import { getWedaUserList } from '../../services';
6
- import './index.css';
7
- const { selectable, removeable, scrollable, radioable } = Table.addons;
8
- export function WedaUserTransfer({ visible, onClose, setOptions, multiple = true, isMobile = false, onSelectedChange, value, tableClassName, }) {
9
- var _a;
10
- const [targetKeys, setTargetKeys] = useState([]);
11
- const [selectedRows, setSelectedRows] = useState([]);
12
- const [inputValue, setInputValue] = useState('');
13
- const [userList, setUserList] = useState([]);
14
- const originUserList = useRef([]);
15
- const [loading, setLoading] = useState(false);
16
- const { callWedaApi, IS_WEDA_IDE } = useGlobalContext();
17
- useEffect(() => {
18
- getWedaUser({ PageNo: 1, PageSize: 200 });
19
- }, []);
20
- useEffect(() => {
21
- if (!visible) {
22
- onSearchUser('');
23
- }
24
- }, [visible]);
25
- useEffect(() => {
26
- var _a;
27
- if (isMobile) {
28
- setTargetKeys(value);
29
- }
30
- else {
31
- setTargetKeys(value === null || value === void 0 ? void 0 : value.map((i) => i === null || i === void 0 ? void 0 : i.value));
32
- }
33
- if ((_a = originUserList.current) === null || _a === void 0 ? void 0 : _a.length) {
34
- const initSelected = value === null || value === void 0 ? void 0 : value.map((i) => {
35
- var _a;
36
- return (_a = originUserList.current) === null || _a === void 0 ? void 0 : _a.find((user) => {
37
- if (isMobile)
38
- return (user === null || user === void 0 ? void 0 : user.UserId) === i;
39
- return (user === null || user === void 0 ? void 0 : user.UserId) === (i === null || i === void 0 ? void 0 : i.value);
40
- });
41
- });
42
- setSelectedRows(initSelected || []);
43
- }
44
- }, [value, (_a = originUserList.current) === null || _a === void 0 ? void 0 : _a.length]);
45
- const getWedaUser = async (params) => {
46
- setLoading(true);
47
- const [err, result] = await to(getWedaUserList(params, { callWedaApi, IS_WEDA_IDE }));
48
- setLoading(false);
49
- if (!err) {
50
- originUserList.current = (result === null || result === void 0 ? void 0 : result.UserList) || [];
51
- setUserList((result === null || result === void 0 ? void 0 : result.UserList) || []);
52
- }
53
- };
54
- const onSourceTableChange = (keys, context) => {
55
- if (multiple) {
56
- setTargetKeys(keys);
57
- const selectedRows = transSelectedRows(context);
58
- setSelectedRows(selectedRows);
59
- onSelectedChange === null || onSelectedChange === void 0 ? void 0 : onSelectedChange({ keys, rows: selectedRows });
60
- }
61
- else {
62
- setTargetKeys([keys]);
63
- setSelectedRows([context === null || context === void 0 ? void 0 : context.record]);
64
- onSelectedChange === null || onSelectedChange === void 0 ? void 0 : onSelectedChange({ keys: [keys], rows: [context === null || context === void 0 ? void 0 : context.record] });
65
- }
66
- };
67
- const transSelectedRows = (context) => {
68
- const { checked, record, recordKey } = context;
69
- const index = selectedRows.findIndex((val) => (val === null || val === void 0 ? void 0 : val.UserId) === recordKey);
70
- const newSelectedRows = selectedRows.concat();
71
- if (checked) {
72
- newSelectedRows.push(record);
73
- }
74
- else {
75
- newSelectedRows.splice(index, 1);
76
- }
77
- return newSelectedRows;
78
- };
79
- const onSearchUser = (value) => {
80
- var _a;
81
- setInputValue(value);
82
- if (value) {
83
- const list = (_a = originUserList.current) === null || _a === void 0 ? void 0 : _a.filter((item) => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.Name) === null || _a === void 0 ? void 0 : _a.includes(value); });
84
- setUserList(list);
85
- }
86
- else {
87
- setUserList(originUserList.current);
88
- }
89
- };
90
- const onSubmitUser = () => {
91
- setOptions(selectedRows.map((item) => ({
92
- text: item.Name,
93
- value: item.UserId,
94
- })));
95
- onCloseModal();
96
- };
97
- const onRemoveUser = (key) => {
98
- setTargetKeys(targetKeys === null || targetKeys === void 0 ? void 0 : targetKeys.filter((i) => i !== key));
99
- setSelectedRows(selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.filter((i) => i.UserId !== key));
100
- };
101
- const onCloseModal = () => {
102
- setTargetKeys([]);
103
- setSelectedRows([]);
104
- onClose === null || onClose === void 0 ? void 0 : onClose();
105
- };
106
- if (isMobile) {
107
- if (loading) {
108
- return React.createElement(LoadingTip, { loadingText: "\u52A0\u8F7D\u4E2D" });
109
- }
110
- return (React.createElement(React.Fragment, null,
111
- React.createElement(SearchBox, { className: "weda-workbench__flow-user-search", value: inputValue, onChange: (value) => onSearchUser(value) }),
112
- React.createElement(SourceTable, { dataSource: userList, targetKeys: targetKeys, onChange: onSourceTableChange, multiple: multiple, className: tableClassName })));
113
- }
114
- return (React.createElement(Modal, { visible: visible, caption: "\u4EBA\u5458\u9009\u62E9", onClose: onCloseModal, size: "l" },
115
- React.createElement(Modal.Body, null,
116
- React.createElement(Transfer, { leftCell: React.createElement(Transfer.Cell, { scrollable: false, title: "\u8BF7\u9009\u62E9\u7528\u6237", header: React.createElement(SearchBox, { value: inputValue, onChange: (value) => onSearchUser(value) }) },
117
- React.createElement(SourceTable, { dataSource: userList, targetKeys: targetKeys, onChange: onSourceTableChange, multiple: multiple, className: tableClassName })), rightCell: React.createElement(Transfer.Cell, { title: `已选择 (${(targetKeys === null || targetKeys === void 0 ? void 0 : targetKeys.length) || 0})` },
118
- React.createElement(TargetTable, { dataSource: selectedRows, onRemove: onRemoveUser })) })),
119
- React.createElement(Modal.Footer, null,
120
- React.createElement(Button, { type: "primary", onClick: onSubmitUser }, "\u786E\u5B9A"),
121
- React.createElement(Button, { type: "weak", onClick: onCloseModal }, "\u53D6\u6D88"))));
122
- }
123
- const columns = [
124
- {
125
- key: 'Name',
126
- header: '用户名',
127
- render: (record) => (record === null || record === void 0 ? void 0 : record.Name) ? (React.createElement(Bubble, { content: record === null || record === void 0 ? void 0 : record.Name },
128
- React.createElement(Text, { overflow: true, style: { cursor: 'pointer' } }, record === null || record === void 0 ? void 0 : record.Name))) : (React.createElement(Text, null, "-")),
129
- },
130
- {
131
- key: 'UserDepartment',
132
- header: '所属部门',
133
- render: (record) => {
134
- var _a, _b;
135
- const showStr = (_a = record === null || record === void 0 ? void 0 : record.Orgs) === null || _a === void 0 ? void 0 : _a.map((i) => (i === null || i === void 0 ? void 0 : i.OrgName) || '').join();
136
- return ((_b = record === null || record === void 0 ? void 0 : record.Orgs) === null || _b === void 0 ? void 0 : _b.length) ? (React.createElement(Bubble, { content: showStr },
137
- React.createElement(Text, { overflow: true, style: { cursor: 'pointer' } }, showStr))) : (React.createElement(Text, null, "-"));
138
- },
139
- },
140
- ];
141
- function SourceTable({ dataSource, targetKeys, onChange, multiple, className, }) {
142
- const addons = [
143
- scrollable({
144
- maxHeight: 310,
145
- }),
146
- multiple
147
- ? selectable({
148
- value: targetKeys,
149
- onChange,
150
- rowSelect: true,
151
- })
152
- : radioable({
153
- value: targetKeys === null || targetKeys === void 0 ? void 0 : targetKeys[0],
154
- onChange,
155
- rowSelect: true,
156
- }),
157
- ];
158
- return (React.createElement(Table, { records: dataSource, recordKey: "UserId", rowDisabled: (record) => record.status === 'stopped', rowClassName: (record) => record.status, columns: columns, addons: addons, className: className }));
159
- }
160
- function TargetTable({ dataSource, onRemove }) {
161
- return (React.createElement(Table, { records: dataSource, recordKey: "UserId", columns: columns, addons: [removeable({ onRemove })] }));
162
- }
@@ -1,144 +0,0 @@
1
- .approval-drawer.drawer {
2
- width: 500px !important;
3
- top: 0px !important;
4
- box-shadow: 0px 25px 25px rgba(0, 0, 0, 0.5) !important;
5
- background-color: #fff;
6
- }
7
- .approval-drawer.drawer .wedatea2td-form.approval-form__drawer {
8
- display: block;
9
- }
10
- .approval-drawer.drawer
11
- .wedatea2td-form.approval-form__drawer
12
- .wedatea2td-form__label {
13
- padding-top: 5px !important;
14
- padding-bottom: 5px !important;
15
- min-width: auto !important;
16
- line-height: 1.5 !important;
17
- }
18
- .approval-drawer.drawer
19
- .wedatea2td-form.approval-form__drawer
20
- .wedatea2td-form__label
21
- label {
22
- font-size: 14px;
23
- color: #666;
24
- }
25
- .approval-drawer.drawer
26
- .wedatea2td-form.approval-form__drawer
27
- .wedatea2td-form__controls {
28
- width: 100%;
29
- font-size: 12px;
30
- }
31
- .approval-drawer.drawer
32
- .wedatea2td-form.approval-form__drawer
33
- .wedatea2td-form__controls--text {
34
- padding-top: 5px !important;
35
- padding-bottom: 16px !important;
36
- line-height: 1.5 !important;
37
- }
38
- .approval-drawer.drawer
39
- .wedatea2td-form.approval-form__drawer
40
- .wedatea2td-form__controls--text
41
- .wedatea2td-btn {
42
- padding: 0 20px !important;
43
- height: 28px !important;
44
- line-height: 28px !important;
45
- min-width: auto !important;
46
- }
47
- .approval-drawer.drawer
48
- .wedatea2td-form.approval-form__drawer
49
- .wedatea2td-form__controls--text
50
- .wedatea2td-btn.wedatea2td-btn--link {
51
- padding: 0 !important;
52
- }
53
- .approval-drawer.drawer
54
- .wedatea2td-form.approval-form__drawer
55
- .form-item__plain {
56
- font-size: 14px;
57
- color: #333;
58
- }
59
- .approval-drawer.drawer
60
- .wedatea2td-form.approval-form__drawer
61
- .btn-wrapper__black
62
- button {
63
- border-radius: 4px;
64
- }
65
- .approval-drawer.drawer
66
- .wedatea2td-form.approval-form__drawer
67
- .btn-wrapper__black.person-btn__wrapper
68
- button {
69
- margin-right: 8px;
70
- margin-bottom: 6px;
71
- }
72
- .approval-drawer.drawer
73
- .wedatea2td-form.approval-form__drawer
74
- .upload-item__label
75
- .wedatea2td-form__label {
76
- padding-top: 12px !important;
77
- }
78
- .approval-drawer.drawer
79
- .wedatea2td-form.approval-form__drawer
80
- .form-item__textarea {
81
- width: 356px;
82
- height: 108px;
83
- border-radius: 4px;
84
- }
85
- .approval-drawer.drawer .btn-wrapper button {
86
- border-radius: 4px;
87
- }
88
- .approval-drawer.drawer .btn-wrapper button:first-child {
89
- margin-right: 10px;
90
- }
91
- .approval-drawer.drawer .person-item {
92
- display: inline-block;
93
- vertical-align: middle;
94
- height: 30px;
95
- box-sizing: border-box;
96
- margin-right: 8px;
97
- margin-bottom: 6px;
98
- padding: 4px;
99
- border: 1px solid #dcdee6;
100
- border-radius: 4px;
101
- font-size: 12px;
102
- }
103
- .approval-drawer.drawer .person-item span {
104
- padding: 0 8px;
105
- }
106
- .approval-drawer.drawer .person-item .wedatea2td-icon-dismiss {
107
- cursor: pointer;
108
- }
109
- .approval-drawer.drawer .wedatea2td-drawer__body {
110
- padding: 28px;
111
- }
112
- .approval-drawer.drawer .wedatea2td-drawer__footer {
113
- flex: 0 0 76px;
114
- padding: 20px;
115
- background-color: #fff;
116
- }
117
- .approval-drawer.drawer .wedatea2td-drawer__footer .btn-wrapper button {
118
- height: 36px;
119
- width: 106px;
120
- }
121
- .approval-drawer.drawer .apass-upload-file-item__title {
122
- max-width: 220px;
123
- overflow: hidden;
124
- text-overflow: ellipsis;
125
- display: inline-block;
126
- }
127
- .ccUsers-wrapper .person-item {
128
- display: inline-block;
129
- vertical-align: middle;
130
- height: 30px;
131
- box-sizing: border-box;
132
- margin-right: 8px;
133
- margin-bottom: 6px;
134
- padding: 4px;
135
- border: 1px solid #dcdee6;
136
- border-radius: 4px;
137
- font-size: 12px;
138
- }
139
- .ccUsers-wrapper .person-item span {
140
- padding: 0 8px;
141
- }
142
- .ccUsers-wrapper .person-item .wedatea2td-icon-dismiss {
143
- cursor: pointer;
144
- }
@@ -1,178 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { Drawer, Button, Form, Icon } from 'tea-component';
3
- import { HighlightTextarea, UserSelectModel } from '../../components';
4
- import { useControlContext } from './provider';
5
- import './ApprovalDrawer.css';
6
- const ExtraDOM = (props) => {
7
- const {
8
- // fileList,
9
- approveInfo, onChange,
10
- // appCode,
11
- type, operationName, statusFlag, setStatusFlag, statusMessage, setStatusMessage, opinionUserMap, setOpinionUserMap, setHighlightPositionMap, } = props;
12
- const approveInfoLabel = type === 'handle' ? `${operationName}意见` : '审批意见';
13
- return (React.createElement(Form.Item, { label: approveInfoLabel, required: type === 'reject', status: statusFlag, message: statusMessage },
14
- React.createElement(HighlightTextarea, { value: approveInfo, placeholder: `请输入您的${approveInfoLabel},可@通知他人`, opinionUserMap: opinionUserMap, setOpinionUserMap: setOpinionUserMap, setHighlightPositionMap: setHighlightPositionMap, onChange: (value) => {
15
- onChange('approveInfo', value);
16
- setStatusFlag('');
17
- setStatusMessage(null);
18
- if (type === 'reject' && !value.trim()) {
19
- setStatusFlag('error');
20
- setStatusMessage(`请输入${approveInfoLabel}`);
21
- }
22
- if (value.length > 500) {
23
- setStatusFlag('error');
24
- setStatusMessage(`${approveInfoLabel}长度不可超过500,请检查`);
25
- }
26
- } })));
27
- };
28
- const ApprovePerson = (props) => {
29
- const { label, approvers, show, onChange } = props;
30
- const removeItem = (index) => {
31
- const approversAvatar = approvers.filter((item, idx) => idx !== index);
32
- onChange(approversAvatar);
33
- };
34
- return (React.createElement(Form.Item, { label: label, className: "btn-wrapper__black person-btn__wrapper" },
35
- React.createElement(Button, { onClick: show },
36
- React.createElement("span", { style: { fontSize: '16px', lineHeight: '16px' } }, "+"),
37
- " ",
38
- '人员'),
39
- approvers.length > 0
40
- ? approvers.map(({ text }, index) => (React.createElement("div", { className: "person-item", key: `person-${index}` },
41
- React.createElement("span", null, text),
42
- React.createElement(Icon, { type: "dismiss", onClick: () => removeItem(index) }))))
43
- : null));
44
- };
45
- export const ApprovalDrawer = (props) => {
46
- var _a, _b, _c, _d, _e, _f;
47
- const { pageInfo, flowDetail } = props;
48
- const { handleType, approveDrawerVisible, submitLoading, onTriggerFlowEvent, onApproveDrawerVisibleChange, } = useControlContext();
49
- const { startAppCode: appCode, currentNodeName: nodeName, operationName, currentApproverName, } = flowDetail || {};
50
- const { buttons, showCarbonCopy } = pageInfo || {};
51
- const [fileList, setFileList] = useState((_a = props.fileList) !== null && _a !== void 0 ? _a : []);
52
- const [approveInfo, setApproveInfo] = useState((_b = props.approveInfo) !== null && _b !== void 0 ? _b : '');
53
- const [opinionUserMap, setOpinionUserMap] = useState({});
54
- const [highlightPositionMap, setHighlightPositionMap] = useState({});
55
- const [approvers, setApprovers] = useState((_c = props.approvers) !== null && _c !== void 0 ? _c : []);
56
- const [modalVisible, setModalVisible] = useState(false);
57
- const [statusFlag, setStatusFlag] = useState('');
58
- const [statusMessage, setStatusMessage] = useState(null);
59
- const showModal = () => setModalVisible(true);
60
- const hideModal = () => setModalVisible(false);
61
- const stateMap = {
62
- fileList: {
63
- default: [],
64
- fn: setFileList,
65
- },
66
- // addTag: {
67
- // default: false,
68
- // fn: setTagStatus,
69
- // },
70
- approveInfo: {
71
- default: '',
72
- fn: setApproveInfo,
73
- },
74
- approvers: {
75
- default: [],
76
- fn: setApprovers,
77
- },
78
- statusFlag: {
79
- default: '',
80
- fn: setStatusFlag,
81
- },
82
- statusMessage: {
83
- default: null,
84
- fn: setStatusMessage,
85
- },
86
- };
87
- const approvalType = {
88
- agree: {
89
- title: `${(buttons === null || buttons === void 0 ? void 0 : buttons[1]) || '同意'}`,
90
- dom: true,
91
- personLabel: '抄送',
92
- },
93
- reject: {
94
- title: `${(buttons === null || buttons === void 0 ? void 0 : buttons[2]) || '拒绝'}`,
95
- dom: true,
96
- personLabel: '抄送',
97
- },
98
- transfer: {
99
- title: '转办',
100
- dom: false,
101
- personLabel: '转办',
102
- },
103
- handle: {
104
- title: '处理',
105
- dom: true,
106
- personLabel: '处理',
107
- },
108
- };
109
- useEffect(() => {
110
- if (!approveDrawerVisible) {
111
- Object.values(stateMap).forEach(({ default: defaultValue, fn }) => fn(defaultValue));
112
- }
113
- else {
114
- // postUserInfo().then((res) => {
115
- // if (res?.data) {
116
- // setApprover(res?.data?.name);
117
- // }
118
- // });
119
- }
120
- }, [approveDrawerVisible]);
121
- const handleSubmit = () => {
122
- var _a;
123
- // const getIdReg = /^(\d+)&(?:user|group),(?:.+)$/;
124
- if (submitLoading)
125
- return;
126
- const obj = {
127
- operationComment: approveInfo,
128
- opinionUserMap,
129
- highlightPositionList: JSON.stringify(highlightPositionMap),
130
- attachmentInfo: JSON.stringify(fileList),
131
- ccUserIds: approvers.map((item) => item.value).join(','),
132
- turnToUserId: (_a = approvers === null || approvers === void 0 ? void 0 : approvers[0]) === null || _a === void 0 ? void 0 : _a.value,
133
- };
134
- switch (handleType) {
135
- case 'agree':
136
- Reflect.deleteProperty(obj, 'turnToUserId');
137
- break;
138
- case 'reject':
139
- Reflect.deleteProperty(obj, 'ccUserIds');
140
- Reflect.deleteProperty(obj, 'turnToUserId');
141
- break;
142
- case 'transfer':
143
- Reflect.deleteProperty(obj, 'ccUserIds');
144
- break;
145
- }
146
- onTriggerFlowEvent(obj);
147
- };
148
- const onChange = (key, value) => {
149
- stateMap[key].fn(value);
150
- };
151
- return (React.createElement(React.Fragment, null,
152
- React.createElement(Drawer, { showMask: true, size: 'l', className: "approval-drawer drawer", outerClickClosable: false, visible: approveDrawerVisible, title: handleType === 'handle'
153
- ? `${operationName}意见`
154
- : `审批意见-${(_d = approvalType === null || approvalType === void 0 ? void 0 : approvalType[handleType]) === null || _d === void 0 ? void 0 : _d.title}`, onClose: onApproveDrawerVisibleChange, footer: React.createElement("div", { className: "btn-wrapper" },
155
- React.createElement(Button, { className: "submit-btn", type: "primary", loading: submitLoading, onClick: () => {
156
- if (handleType === 'reject' && !approveInfo.trim()) {
157
- setStatusFlag('error');
158
- setStatusMessage('请输入审批意见');
159
- return;
160
- }
161
- if (approveInfo.length > 500) {
162
- setStatusFlag('error');
163
- setStatusMessage('审批意见长度不可超过500,请检查');
164
- return;
165
- }
166
- handleSubmit();
167
- } }, "\u63D0\u4EA4"),
168
- React.createElement(Button, { onClick: onApproveDrawerVisibleChange }, "\u53D6\u6D88")) },
169
- React.createElement(Form, { className: "approval-form__drawer" },
170
- React.createElement(Form.Item, { label: '当前节点' },
171
- React.createElement("span", { className: "form-item__plain" }, nodeName)),
172
- React.createElement(Form.Item, { label: handleType === 'handle' ? '处理人' : '审批人' },
173
- React.createElement("span", { className: "form-item__plain" }, currentApproverName || '--')),
174
- ((_e = approvalType === null || approvalType === void 0 ? void 0 : approvalType[handleType]) === null || _e === void 0 ? void 0 : _e.dom) ? (React.createElement(ExtraDOM, { type: handleType, appCode: appCode, onChange: onChange, fileList: fileList, approveInfo: approveInfo, operationName: operationName, statusFlag: statusFlag, setStatusFlag: setStatusFlag, statusMessage: statusMessage, setStatusMessage: setStatusMessage, opinionUserMap: opinionUserMap, setOpinionUserMap: setOpinionUserMap, setHighlightPositionMap: setHighlightPositionMap })) : null,
175
- handleType !== 'reject' &&
176
- (showCarbonCopy || handleType === 'transfer') ? (React.createElement(ApprovePerson, { approvers: approvers, label: (_f = approvalType === null || approvalType === void 0 ? void 0 : approvalType[handleType]) === null || _f === void 0 ? void 0 : _f.personLabel, show: showModal, onChange: (val) => onChange('approvers', val) })) : null)),
177
- React.createElement(UserSelectModel, { visible: modalVisible, onChange: (val) => onChange('approvers', val), onClose: hideModal, value: approvers === null || approvers === void 0 ? void 0 : approvers.map((item) => item === null || item === void 0 ? void 0 : item.value) })));
178
- };