UNPKG

@wufengteam/wform

Version:

@wufengteam/wform

467 lines (466 loc) 18.9 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _antd = require("antd"); var _lodash = _interopRequireDefault(require("lodash.difference")); var _utils = require("../../../utils"); var _MemberList = _interopRequireDefault(require("../MemberList")); var _DeptTree = _interopRequireDefault(require("../DeptTree")); require("./index.css"); var _constants = require("../../constants"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /* eslint-disable */ var Search = _antd.Input.Search; var cssPrefix = "".concat(_utils.prefix, "-add-member-by-dept-modal"); var AddMemberByDeptModal = function AddMemberByDeptModal(props) { var _a, _b; var visible = props.visible, onCancel = props.onCancel, defaultValue = props.defaultValue, _onOk = props.onOk, _props$selectType = props.selectType, selectType = _props$selectType === void 0 ? 'single' : _props$selectType; var _useState = (0, _react.useState)(defaultValue), _useState2 = _slicedToArray(_useState, 2), sMemberList = _useState2[0], setSMemberList = _useState2[1]; // 选中的成员信息 var _useState3 = (0, _react.useState)([]), _useState4 = _slicedToArray(_useState3, 2), sMemberNodeKey = _useState4[0], setSMemberNodeKey = _useState4[1]; // 成员下选中的部门 var _useState5 = (0, _react.useState)([]), _useState6 = _slicedToArray(_useState5, 2), treeData = _useState6[0], setTreeData = _useState6[1]; var _useState7 = (0, _react.useState)(''), _useState8 = _slicedToArray(_useState7, 2), searchUserName = _useState8[0], setUserName = _useState8[1]; var _useState9 = (0, _react.useState)([]), _useState10 = _slicedToArray(_useState9, 2), memberOptions = _useState10[0], setMemberOptions = _useState10[1]; var _React$useState = _react.default.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), indeterminate = _React$useState2[0], setIndeterminate = _React$useState2[1]; var _React$useState3 = _react.default.useState(false), _React$useState4 = _slicedToArray(_React$useState3, 2), checkAll = _React$useState4[0], setCheckAll = _React$useState4[1]; var _useState11 = (0, _react.useState)(0), _useState12 = _slicedToArray(_useState11, 2), memberTotal = _useState12[0], setMemberTotal = _useState12[1]; var _useState13 = (0, _react.useState)(0), _useState14 = _slicedToArray(_useState13, 2), curPageNum = _useState14[0], setCurPageNum = _useState14[1]; var _useState15 = (0, _react.useState)(false), _useState16 = _slicedToArray(_useState15, 2), recursive = _useState16[0], setRecursive = _useState16[1]; // 是否包含子部门 var _ref = ((_a = props === null || props === void 0 ? void 0 : props.getEngineApis) === null || _a === void 0 ? void 0 : _a.call(props)) || {}, _ref$customEngineApi = _ref.customEngineApi, customEngineApi = _ref$customEngineApi === void 0 ? {} : _ref$customEngineApi; (0, _react.useEffect)(function () { if (defaultValue) { setSMemberList(defaultValue); } }, [JSON.stringify(defaultValue)]); var formateTreeData = function formateTreeData() { var srcData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; if (!Array.isArray(srcData)) return []; var data = (srcData || []).map(function (item) { var orgId = item.orgId, orgName = item.orgName, _item$children = item.children, children = _item$children === void 0 ? [] : _item$children; var obj = item; if (children === null || children === void 0 ? void 0 : children.length) { obj.children = formateTreeData(children); } return Object.assign(Object.assign({}, item), { key: orgId, title: orgName }); }); return data; }; var modalCancel = function modalCancel() { setCurPageNum(1); onCancel(); }; var updateMemberInfo = function updateMemberInfo(checkValues) { // 返回非当前选中的部门数据 var userValues = memberOptions.map(function (it) { return it.value; }); var sUserValues = sMemberList.map(function (it) { return it.staffId; }); var oterValues = (0, _lodash.default)(sUserValues, userValues); var otherMemberList = []; oterValues.forEach(function (valueStr) { // 其他的部门的职位信息 var tempList = sMemberList.filter(function (memItem) { return memItem.staffId === valueStr; }); if (tempList && tempList.length > 0) { otherMemberList.push(tempList[0]); } }); var curSMemberList = []; checkValues.forEach(function (value) { var hasMemberList = memberOptions.filter(function (it) { return (it === null || it === void 0 ? void 0 : it.staffId) === value; }); if (hasMemberList.length) { curSMemberList.push(hasMemberList[0]); // 两个数组扩展,数据有重复,所以只取第一个 } }); if (selectType === 'single') { setSMemberList([].concat(curSMemberList)); } else { setSMemberList([].concat(otherMemberList, curSMemberList)); } }; /** * 成员的全选 * @param e */ var onCheckAllChange = function onCheckAllChange(e) { setIndeterminate(false); setCheckAll(e.target.checked); if (e.target.checked) { var checkValues = memberOptions.map(function (item) { return item === null || item === void 0 ? void 0 : item.staffId; }); updateMemberInfo(checkValues); } else { updateMemberInfo([]); } }; /** * 选择的成员数据 * @param params * @returns、 */ var sMemberKeys = (0, _react.useMemo)(function () { var cKeys = sMemberList.map(function (item) { return item === null || item === void 0 ? void 0 : item.staffId; }) || []; return cKeys; }, [sMemberList]); /** * 处理人员数据 * @param srcData * @returns */ var formatGroups = function formatGroups() { var srcData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var memberList = []; if (srcData && Array.isArray(srcData) && (srcData === null || srcData === void 0 ? void 0 : srcData.length)) { srcData.forEach(function (item) { var _item$staffId = item.staffId, staffId = _item$staffId === void 0 ? '' : _item$staffId, _item$staffName = item.staffName, staffName = _item$staffName === void 0 ? '' : _item$staffName; if (staffName && staffId) { memberList.push(Object.assign(Object.assign({}, item), { label: staffName, value: staffId })); } }); } return memberList; }; /** * 根据部门获取人员数据 * @param pageIndex * @param orgId */ var getUserByOrgIdRunning = function getUserByOrgIdRunning(params) { var _a; (_a = customEngineApi === null || customEngineApi === void 0 ? void 0 : customEngineApi.staffs) === null || _a === void 0 ? void 0 : _a.call(customEngineApi, Object.assign({ pageLen: 20, state: 'A', recursive: recursive }, params)).then(function (res) { var _res$list = res.list, list = _res$list === void 0 ? [] : _res$list, total = res.total; var _params$pageIndex = params.pageIndex, pageIndex = _params$pageIndex === void 0 ? 0 : _params$pageIndex; var formatList = formatGroups(list); var tempMemData = formatList; if (pageIndex === 0) { setMemberOptions(formatList); } else { tempMemData = [].concat(_toConsumableArray(memberOptions), _toConsumableArray(formatList)); } setMemberOptions(tempMemData); setCurPageNum(pageIndex + 1); setMemberTotal(total); if (checkAll) { // 如果当前全选的情况下 setSMemberList([].concat(_toConsumableArray(sMemberList), _toConsumableArray(formatList))); } }); }; /** * 切换部门的情况 * @param sKeys */ var onMemberSelect = function onMemberSelect(sKeys, includeChildren) { if (sKeys.length) { setSMemberNodeKey(sKeys); getUserByOrgIdRunning({ orgId: sKeys[0], pageIndex: 0, recursive: includeChildren }); } setRecursive(includeChildren); }; /** * 获取部门数据 */ var getOrgInfoByAsync = function getOrgInfoByAsync(orgId) { var _a; var params = { orgId: orgId }; (_a = customEngineApi === null || customEngineApi === void 0 ? void 0 : customEngineApi.getOrgInfoByAsync) === null || _a === void 0 ? void 0 : _a.call(customEngineApi, params).then(function (res) { var _a, _b; var data = formateTreeData(res); setTreeData(data); if (data && Array.isArray(data) && data.length) { setSMemberNodeKey([(_a = data[0]) === null || _a === void 0 ? void 0 : _a.orgId]); getUserByOrgIdRunning({ pageIndex: curPageNum, orgId: (_b = data[0]) === null || _b === void 0 ? void 0 : _b.orgId }); } }); }; (0, _react.useEffect)(function () { if (visible && !treeData.length) { getOrgInfoByAsync('0'); } }, [visible]); var deleteMemberList = function deleteMemberList(staffId) { var otherMemberInfo = sMemberList.filter(function (item) { return item.staffId !== staffId; }); setSMemberList(otherMemberInfo); }; var updateTreeData = function updateTreeData(list, key, children) { return list.map(function (node) { if ("".concat(node.key) === "".concat(key)) { return Object.assign(Object.assign({}, node), { children: children }); } if (node.children) { return Object.assign(Object.assign({}, node), { children: updateTreeData(node.children, key, children) }); } return node; }); }; var loadOrgData = function loadOrgData(_ref2) { var key = _ref2.key, children = _ref2.children; return new Promise(function (resolve) { var _a; if (children) { resolve(); return; } var params = { orgId: key }; (_a = customEngineApi === null || customEngineApi === void 0 ? void 0 : customEngineApi.getOrgInfoByAsync) === null || _a === void 0 ? void 0 : _a.call(customEngineApi, params).then(function (res) { var data = formateTreeData(res); setTreeData(function (origin) { return updateTreeData(origin, key, data); }); setTimeout(function () { resolve(); }, 500); }); }); }; return /*#__PURE__*/_react.default.createElement(_antd.Modal, { title: "\u6DFB\u52A0\u4EBA\u5458", width: 729, bodyStyle: { padding: '0' }, visible: visible, onCancel: modalCancel, maskClosable: false, okText: "\u786E\u5B9A", cancelText: "\u53D6\u6D88", onOk: function onOk() { if (_onOk) { _onOk(sMemberList); } } }, /*#__PURE__*/_react.default.createElement("div", { className: "".concat(cssPrefix, "-content") }, /*#__PURE__*/_react.default.createElement(_antd.Row, { className: "".concat(cssPrefix, "-select") }, /*#__PURE__*/_react.default.createElement(_antd.Col, { span: 12, style: { height: '100%', borderRight: 'solid 1px #E5E5E5', padding: '12px' } }, /*#__PURE__*/_react.default.createElement(_DeptTree.default, { loadData: loadOrgData, treeData: treeData, onSelect: onMemberSelect, selectedKeys: sMemberNodeKey, onCheckChange: function onCheckChange(value) { setRecursive(value); } })), /*#__PURE__*/_react.default.createElement(_antd.Col, { span: 12, style: { height: '100%' } }, /*#__PURE__*/_react.default.createElement(_antd.Space, { direction: "vertical", style: { width: '100%', padding: '12px' } }, /*#__PURE__*/_react.default.createElement(Search, { value: searchUserName, placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22", onChange: function onChange(e) { setUserName(e.target.value); }, onSearch: function onSearch(value) { getUserByOrgIdRunning({ pageIndex: 0, staffName: value, orgId: sMemberNodeKey[0] }); } }), memberOptions && memberOptions.length ? ( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, selectType === 'multiple' && ( /*#__PURE__*/_react.default.createElement(_antd.Checkbox, { indeterminate: indeterminate, onChange: onCheckAllChange, checked: checkAll, style: { marginTop: '8px' } }, "\u5168\u9009")), /*#__PURE__*/_react.default.createElement(_MemberList.default, { height: 302, value: sMemberKeys, data: memberOptions, total: memberTotal, loadMoreFun: function loadMoreFun() { getUserByOrgIdRunning({ pageIndex: curPageNum, staffName: searchUserName, orgId: sMemberNodeKey[0] }); }, onChange: function onChange(checkedValue) { if (selectType === 'single') { if (checkedValue.length) { updateMemberInfo([checkedValue[checkedValue.length - 1]]); } else { updateMemberInfo([]); } } else { updateMemberInfo(checkedValue); var allCheck = checkedValue.length === memberTotal; if (allCheck) { setCheckAll(true); } else { if (checkedValue.length) { setIndeterminate(true); } else { setIndeterminate(false); } setCheckAll(false); } } } }))) : ( /*#__PURE__*/_react.default.createElement(_antd.Empty, { style: { marginTop: '40px' } }))))), Array.isArray(sMemberList) && sMemberList.length > 0 && ( /*#__PURE__*/_react.default.createElement("div", { className: "".concat(cssPrefix, "-result") }, /*#__PURE__*/_react.default.createElement(_antd.Row, { justify: "end", style: { marginBottom: '5px' } }, /*#__PURE__*/_react.default.createElement("a", { onClick: function onClick() { setSMemberList([]); } }, "\u6E05\u7A7A")), /*#__PURE__*/_react.default.createElement(_antd.Space, { size: 4, wrap: true, style: { width: '100%', height: '55px', overflowY: 'auto' } }, (_b = sMemberList === null || sMemberList === void 0 ? void 0 : sMemberList.map) === null || _b === void 0 ? void 0 : _b.call(sMemberList, function (mItem, index) { var staffId = mItem.staffId, staffName = mItem.staffName; return /*#__PURE__*/_react.default.createElement(_antd.Tag, { key: staffId, icon: /*#__PURE__*/_react.default.createElement("span", { style: { width: '18px', height: '18px', marginRight: '2px', background: _constants.COLOR_DATA[index % 8], display: 'inline-flex', justifyContent: 'center', color: '#fff', borderRadius: '100%', alignItems: 'center', fontSize: '9px' } }, (0, _utils.getFirstChar)(staffName)), closable: true, style: { color: '#1C242E', background: '#F2F3F5', padding: '2px' }, onClose: function onClose() { deleteMemberList(staffId); } }, staffName); })))))); }; var _default = exports.default = AddMemberByDeptModal;