UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

252 lines (226 loc) 9.42 kB
import { resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue"; 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 _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 _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 _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; } import { hasOwn } from '@fe6/shared'; import { PlusSquareOutlined, MinusSquareOutlined } from '@ant-design/icons-vue'; import Tree from '../../tree'; import Avatar from '../../avatar/index'; import Typography from '../../typography'; import Space from '../../space'; import Tag from '../../tag'; export var defaultFields = { children: 'children', title: 'name', key: 'id', value: 'userId', nodeId: 'departmentId', unionid: 'userId', alias: 'alias', position: 'position', avatar: 'avatar', roleName: 'roleName', users: 'users' }; // 通过挂载 userId 识别折叠节点,进行半选高亮的判断 // 节点挂载 value 是为了选择节点的时候全选或者反选子级所有用户 export var rendetUser = function rendetUser(showAlias, prefixClsNew, fields, userItem, beforeNode, afterNode, clickPanel) { var titleNode = null; if (showAlias) { if (userItem[fields.title]) { if (userItem[fields.alias]) { titleNode = _createVNode(Typography.Text, { "class": "".concat(prefixClsNew, "-user-title"), "ellipsis": { tooltip: "".concat(userItem[fields.title], "(").concat(userItem[fields.alias], ")") }, "content": "".concat(userItem[fields.title], "(").concat(userItem[fields.alias], ")") }, null); } else { titleNode = _createVNode(Typography.Text, { "class": "".concat(prefixClsNew, "-user-title"), "ellipsis": { tooltip: userItem[fields.title] }, "content": userItem[fields.title] }, null); } } else if (userItem[fields.alias]) { titleNode = _createVNode(Typography.Text, { "class": "".concat(prefixClsNew, "-user-title"), "ellipsis": { tooltip: userItem[fields.alias] }, "content": userItem[fields.alias] }, null); } } else { titleNode = _createVNode(Typography.Text, { "class": "".concat(prefixClsNew, "-user-title"), "ellipsis": { tooltip: "".concat(userItem[fields.title]) }, "content": "".concat(userItem[fields.title]) }, null); } var positionNode = null; if (userItem[fields.position]) { positionNode = _createVNode(Typography.Paragraph, { "type": "secondary", "styleReset": true, "size": "small", "ellipsis": { tooltip: userItem[fields.position] }, "content": userItem[fields.position] }, null); } var roleNode = null; if (userItem[fields.roleName]) { roleNode = _createVNode(Tag, { "color": "blue" }, { default: function _default() { return [userItem[fields.roleName]]; } }); } return function () { return _createVNode(Space, { "class": "".concat(prefixClsNew, "-user"), "onClick": clickPanel }, { default: function _default() { return [beforeNode && typeof beforeNode === 'function' && beforeNode(), _createVNode(Avatar, { "shape": "square", "class": "".concat(prefixClsNew, "-user-avatar"), "size": 35, "src": userItem[fields.avatar] }, null), _createVNode(Space, { "direction": "vertical", "size": 0, "class": "".concat(prefixClsNew, "-user-core") }, { default: function _default() { return [titleNode, positionNode, roleNode]; } }), afterNode && typeof afterNode === 'function' && afterNode()]; } }); }; }; // 因为多级嵌套,有可能当前级没有用户,但子级有,所以就得遍历下面所有 var getAllChildUserIdList = function getAllChildUserIdList(targets, newUserIds, fields) { targets.forEach(function (tItem) { if (hasOwn(tItem, fields.users) && tItem[fields.users].length) { tItem[fields.users].forEach(function (uItem) { if (!newUserIds.includes(uItem[fields.value])) { newUserIds.push(uItem[fields.value]); } }); } if (hasOwn(tItem, fields.children) && tItem[fields.children].length) { getAllChildUserIdList(tItem[fields.children], newUserIds, fields); } }); return newUserIds; }; export function renderTreeNodes(showAlias, treeData, fields, prefixClsNew, mode, panelClick, theLocal) { if (!treeData) { return []; } var list = Array.isArray(treeData) ? treeData : [treeData]; var reseult = []; var renderInner = function renderInner(item) { var childNode = []; if (hasOwn(item, fields.users) && item[fields.users].length) { var userChildNodes = []; item[fields.users].forEach(function (userItem) { userChildNodes.push(_createVNode(Tree.TreeNode, { "selectable": mode === 'radio', "checkable": mode === 'checkbox', "key": userItem[fields.value] }, { title: rendetUser(showAlias, prefixClsNew, fields, userItem, function () {}, function () {}, function () { return panelClick(userItem); }) })); }); childNode.push(_createVNode(Tree.TreeNode, { "selectable": false, "checkable": false }, { default: function _default() { return [userChildNodes]; }, title: function title(_ref) { var expanded = _ref.expanded; return _createVNode(Typography.Text, { "class": "".concat(prefixClsNew, "-user-member"), "type": "secondary", "size": "small" }, { default: function _default() { return [expanded ? theLocal.close : theLocal.open]; } }); }, switcherIcon: function switcherIcon(_ref2) { var expanded = _ref2.expanded; return expanded ? _createVNode(MinusSquareOutlined, { "class": "".concat(prefixClsNew, "-user-icon") }, null) : _createVNode(PlusSquareOutlined, { "class": "".concat(prefixClsNew, "-user-icon") }, null); } })); } if (hasOwn(item, fields.children) && item[fields.children].length) { item[fields.children].forEach(function (childItem) { var userId = hasOwn(childItem, fields.users) && childItem[fields.users].length ? childItem[fields.users].map(function (uItem) { return uItem[fields.value]; }) : []; // NOTE 拉取所有子节点用户,用于节点可选时候的高亮,但由于key匹配问题永远高亮不了,必须 key 设置为 userId (key={userId.join(',')}) if (hasOwn(childItem, fields.children) && childItem[fields.children].length) { userId = _toConsumableArray(new Set([].concat(userId, getAllChildUserIdList(childItem[fields.children], [], fields)))); } else { userId = _toConsumableArray(new Set(userId)); } childNode.push(_createVNode(Tree.TreeNode, { "key": childItem[fields.key], "selectable": false, "checkable": mode === 'checkbox', "title": "".concat(childItem[fields.title]), "userId": userId, "disabled": userId.length < 1, "value": userId }, { default: function _default() { return [renderInner(childItem)]; } })); }); } return childNode; }; list.forEach(function (item) { var userId = item[fields.users].map(function (uItem) { return uItem[fields.value]; }); // NOTE 拉取所有子节点用户,用于节点可选时候的高亮,但由于key匹配问题永远高亮不了,必须 key 设置为 userId (key={userId.join(',')}) userId = _toConsumableArray(new Set([].concat(userId, getAllChildUserIdList(item[fields.children], [], fields)))); reseult.push(_createVNode(Tree.TreeNode, { "selectable": false, "checkable": mode === 'checkbox', "key": item[fields.key], "userId": userId, "disabled": userId.length < 1, "value": userId, "title": "".concat(item[fields.title]) }, { default: function _default() { return [renderInner(item)]; } })); }); return reseult; }