web-component-gallery 1.1.23 → 1.1.24

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/amap.umd.js CHANGED
@@ -9198,7 +9198,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
9198
9198
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9199
9199
 
9200
9200
  "use strict";
9201
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_Tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Tree */ \"./plugins/utils/Tree.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/button/index.js\");\n/* harmony import */ var _style_Directory_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style/Directory.less */ \"./plugins/lib/tree/style/Directory.less\");\n/* harmony import */ var _svgIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../svgIcon */ \"./plugins/lib/svgIcon/index.js\");\n\n\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\n type: Array,\n default: () => []\n },\n treeExpandKeys: {\n type: Array,\n default: () => []\n },\n treePlus: {\n type: Boolean,\n default: true\n },\n treeActions: {\n type: Array,\n default: () => []\n },\n treeActionsPlus: {\n type: Boolean,\n default: true\n },\n replaceFields: {\n type: Object,\n default: () => ({\n children: 'children',\n key: 'id',\n title: 'title'\n })\n }\n },\n data() {\n return {\n NodeCheckedKeys: [],\n NodeSelectedKeys: [],\n NodeExpandKeys: [],\n NodeKey: [],\n NodeActions: null,\n MenuDropdown: false,\n NodeActionsStyle: {}\n };\n },\n mounted() {\n this.onInitTree();\n },\n watch: {\n treeData(newValue, oldValue) {\n this.onInitTree(!oldValue.length);\n },\n treeExpandKeys(newValue) {\n this.NodeExpandKeys = newValue;\n }\n },\n methods: {\n TreeNodeRender(node, nodeIndex, parentNode) {\n const h = this.$createElement;\n const {\n replaceFields,\n NodeActions,\n treeActions,\n NodeActionsStyle,\n NodeExpandKeys,\n NodeKey,\n treeActionsPlus,\n createTreeNode,\n handleMouseLeave,\n handleOperateClick,\n handlePlusClick\n } = this;\n const key = node[replaceFields.key];\n return h(TreeNode, {\n \"key\": key,\n \"class\": \"DirectoryTreeMenu__Node\",\n \"scopedSlots\": {\n title: props => {\n return h(\"div\", {\n \"class\": \"__Title\"\n }, [node.type != 'input' ? h(\"span\", [node[replaceFields.title]]) : h(ant_design_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"attrs\": {\n \"placeholder\": \"请输入节点名称\",\n \"default-value\": node[replaceFields.title]\n },\n \"on\": {\n ...{\n blur: ({\n target\n }) => createTreeNode(target, node),\n pressEnter: event => event.target.blur(event, true)\n }\n },\n \"ref\": \"inputNodeRef\"\n }), NodeActions && Boolean(treeActions.length) && NodeKey.includes(props.eventKey) && node.type != 'input' && h(\"div\", {\n \"ref\": \"TreeMenuActions\",\n \"class\": \"DirectoryTreeMenu__Actions\",\n \"on\": {\n ...{\n mouseenter: event => event.stopPropagation()\n }\n }\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-more\"\n },\n \"on\": {\n ...{\n click: e => e.preventDefault()\n }\n }\n }), h(\"div\", {\n \"slot\": \"overlay\",\n \"class\": \"DirectoryTreeMenu__Dropdown__Menu\"\n }, [treeActions.map((handle, i) => {\n return h(\"span\", {\n \"key\": i,\n \"on\": {\n ...{\n // this.$emit('handleOperateClick', handle, NodeActions)\n click: () => handleOperateClick(handle, {\n ...node,\n nodeIndex\n }, parentNode)\n }\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-plus\"\n },\n \"on\": {\n ...{\n click: () => handlePlusClick()\n }\n }\n })])]);\n }\n }\n }, [node[replaceFields.children] && node[replaceFields.children].length && node[replaceFields.children].map((childNode, childNodeIndex) => this.TreeNodeRender(childNode, childNodeIndex, node))]);\n },\n appendTreeNode() {\n this.treeData.push({\n type: 'input',\n append: true,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n },\n createTreeNode({\n value\n }, node) {\n this.$set(node, 'type', 'text');\n this.$emit(`handlePlus${node.append ? 'Add' : 'Update'}`, value, node.append ? node.parentOrgId : node[this.replaceFields.key]);\n const parentNodes = node.parentOrgId ? this.findItemById(this.treeData, node.parentOrgId)[this.replaceFields.children] : this.treeData;\n if (node.append) {\n const i = parentNodes.findIndex(child => child[this.replaceFields.key] == node[this.replaceFields.key]);\n parentNodes.splice(i, 1);\n }\n },\n handleOperateClick(handle, node, parentNode) {\n const key = node[this.replaceFields.key];\n let that = this;\n switch (handle.type) {\n case 'update':\n const updateNode = this.findItemById(this.treeData, key);\n this.$set(updateNode, 'type', 'input');\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'copy':\n // 明天来了优化一下\n const cloneNode = parentNode ? parentNode[this.replaceFields.children] : this.treeData;\n cloneNode.splice(node.nodeIndex + 1, 0, {\n type: 'input',\n append: true,\n parentOrgId: parentNode ? parentNode[this.replaceFields.key] : null,\n [this.replaceFields.key]: new Date().getTime(),\n [this.replaceFields.title]: node[this.replaceFields.title]\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'delete':\n this.$confirm({\n title: '确定要删除当前节点吗?',\n okText: '确定',\n cancelText: '取消',\n onOk() {\n that.$emit('handleDeleteClick', node);\n console.log('OK');\n },\n onCancel() {\n console.log('Cancel');\n }\n });\n break;\n default:\n this.$emit('handleOperateClick', handle, node);\n break;\n }\n },\n handlePlusClick() {\n const node = this.findItemById(this.treeData, this.NodeActions.id);\n console.log(node, this.NodeActions, '--NodeActions');\n const childNode = node[this.replaceFields.children] ?? [];\n childNode.push({\n type: 'input',\n append: true,\n parentOrgId: this.NodeActions.id,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.NodeExpandKeys.push(this.NodeActions.id);\n node[this.replaceFields.children] = childNode;\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n console.log(node, '--NodeActions');\n },\n findItemById(treeData, id) {\n for (let i = 0; i < treeData.length; i++) {\n if (treeData[i][this.replaceFields.key] === id) return treeData[i];\n let childNode = treeData[i][this.replaceFields.children];\n if (childNode && childNode.length > 0) {\n const foundItem = this.findItemById(treeData[i][this.replaceFields.children], id);\n if (foundItem) return foundItem;\n }\n }\n },\n onInitTree(treeExpend = true) {\n this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]]);\n this.NodeExpandKeys = this.treeExpandKeys.length && this.treeExpandKeys || treeExpend && (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields) || [];\n },\n onCheck(keys, {}) {\n this.NodeCheckedKeys = keys;\n this.$emit('onCheck', keys);\n },\n onSelect(keys, {\n nativeEvent,\n node\n }) {\n this.NodeSelectedKeys = keys;\n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.$emit('onSelect', keys);\n },\n onExpand(expandedKeys, {\n expanded,\n node\n }) {\n this.NodeExpandKeys = [].concat(expandedKeys);\n console.log(expandedKeys, expanded, node, 'Trigger Expand');\n },\n getIcon(props) {\n const h = this.$createElement;\n const {\n isLeaf,\n expanded\n } = props;\n if (isLeaf) {\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": expanded ? 'folder-open' : 'folder'\n }\n });\n },\n handleMouseEnter({\n event,\n node\n }) {\n this.NodeActions = {\n id: node._props.eventKey,\n title: node._props.title,\n parentOrgId: node.$parent.eventKey || null\n };\n // this.MenuDropdown = false \n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.NodeKey.push(node.eventKey);\n // console.log(node, 'handleMouseEnter')\n // 是否加个参数 判断是否处于打开状态\n },\n handleMouseLeave({\n event,\n node\n }) {\n if (this.NodeKey.includes(node.eventKey) && this.NodeSelectedKeys != node.eventKey) {\n const i = this.NodeKey.findIndex(key => key == node.eventKey);\n this.NodeKey.splice(i, 1);\n }\n // this.NodeKey = []\n },\n onDragEnter(node) {\n console.log(node, '--onDragEnter');\n // expandedKeys 需要受控时设置\n // this.expandedKeys = info.expandedKeys\n },\n onDrop(info) {\n const dragKey = info.dragNode.eventKey;\n const dropPos = info.node.pos.split(\"-\");\n // 拖动的位置\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const node = info.node; //目标节点\n const dragNode = info.dragNode; // 拖动节点\n const dropKey = node.eventKey;\n console.log(dragNode, node, '--dropToGap');\n if (dragNode.$parent?.eventKey !== node.$parent?.eventKey || !info.dropToGap) {\n // 阻止跨父级拖拽\n this.$message.warning(\"只能在同级排序\");\n return false;\n }\n const {\n key,\n children\n } = this.replaceFields;\n const loop = (data, eventKey, callback) => {\n data.forEach((node, i, array) => {\n if (node[key] === eventKey) {\n return callback(node, i, array);\n }\n if (node[children]) {\n return loop(node[children], eventKey, callback);\n }\n });\n };\n const data = [...this.treeData];\n let dragObj;\n let dragObjIndex;\n loop(data, dragKey, (node, i, array) => {\n dragObj = node;\n dragObjIndex = i;\n });\n let dropIndex;\n loop(data, dropKey, (node, i, array) => {\n dropIndex = i;\n console.log(node, i, dragObj, dragObjIndex, '--i');\n });\n this.$emit('onDrop', {\n [key]: dragObj[key],\n originalIndex: dragObjIndex,\n presentIndex: dropPosition === -1 ? dropIndex : dropIndex + 1\n });\n }\n },\n render() {\n const h = arguments[0];\n const {\n $attrs,\n treePlus,\n treeData,\n NodeCheckedKeys,\n NodeSelectedKeys,\n NodeExpandKeys,\n onCheck,\n onSelect,\n onExpand,\n handleMouseEnter,\n handleMouseLeave,\n onDragEnter,\n onDrop,\n TreeNodeRender,\n appendTreeNode,\n replaceFields\n } = this;\n return h(\"div\", {\n \"class\": \"DirectoryTreeMenu\"\n }, [h(\"div\", {\n \"class\": \"treeDirectory\"\n }, [h(\"span\", [$attrs.menuTitle || '目录']), treePlus && h(ant_design_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"attrs\": {\n \"icon\": \"plus\",\n \"size\": \"small\"\n },\n \"on\": {\n ...{\n click: appendTreeNode\n }\n }\n })]), h(DirectoryTree, {\n \"attrs\": {\n \"draggable\": true,\n \"default-expand-all\": true,\n \"checkedKeys\": NodeCheckedKeys,\n \"selectedKeys\": NodeSelectedKeys,\n \"expandedKeys\": NodeExpandKeys,\n \"expandAction\": \"dblclick\",\n ...$attrs,\n \"tree-node-filter-prop\": \"title\"\n },\n \"class\": \"DirectoryTreeMenu__Tree\",\n \"on\": {\n ...{\n check: onCheck,\n select: onSelect,\n expand: onExpand,\n mouseenter: handleMouseEnter,\n mouseleave: handleMouseLeave,\n dragenter: onDragEnter,\n drop: onDrop\n }\n }\n }, [treeData.map((node, nodeIndex) => TreeNodeRender(node, nodeIndex))])]);\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/Directory.js?");
9201
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_Tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Tree */ \"./plugins/utils/Tree.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/button/index.js\");\n/* harmony import */ var _style_Directory_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style/Directory.less */ \"./plugins/lib/tree/style/Directory.less\");\n/* harmony import */ var _svgIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../svgIcon */ \"./plugins/lib/svgIcon/index.js\");\n\n\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\n type: Array,\n default: () => []\n },\n treeExpandKeys: {\n type: Array,\n default: () => []\n },\n treePlus: {\n type: Boolean,\n default: true\n },\n treeActions: {\n type: Array,\n default: () => []\n },\n treeActionsPlus: {\n type: Boolean,\n default: true\n },\n replaceFields: {\n type: Object,\n default: () => ({\n children: 'children',\n key: 'id',\n title: 'title'\n })\n }\n },\n data() {\n return {\n NodeCheckedKeys: [],\n NodeSelectedKeys: [],\n NodeExpandKeys: [],\n NodeKey: [],\n NodeActions: null,\n MenuDropdown: false,\n NodeActionsStyle: {}\n };\n },\n mounted() {\n this.onInitTree();\n },\n watch: {\n treeData(newValue, oldValue) {\n this.onInitTree(!oldValue.length);\n },\n treeExpandKeys(newValue) {\n this.NodeExpandKeys = newValue;\n }\n },\n methods: {\n TreeNodeRender(node, nodeIndex, parentNode) {\n const h = this.$createElement;\n const {\n replaceFields,\n NodeActions,\n treeActions,\n NodeActionsStyle,\n NodeExpandKeys,\n NodeKey,\n treeActionsPlus,\n createTreeNode,\n handleMouseLeave,\n handleOperateClick,\n handlePlusClick\n } = this;\n const key = node[replaceFields.key];\n return h(TreeNode, {\n \"key\": key,\n \"class\": \"DirectoryTreeMenu__Node\",\n \"scopedSlots\": {\n title: props => {\n return h(\"div\", {\n \"class\": \"__Title\"\n }, [node.type != 'input' ? h(\"span\", [node[replaceFields.title]]) : h(ant_design_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"attrs\": {\n \"placeholder\": \"请输入节点名称\",\n \"default-value\": node[replaceFields.title]\n },\n \"on\": {\n ...{\n blur: ({\n target\n }) => createTreeNode(target, node),\n pressEnter: event => event.target.blur(event, true)\n }\n },\n \"ref\": \"inputNodeRef\"\n }), NodeActions && Boolean(treeActions.length) && NodeKey.includes(props.eventKey) && node.type != 'input' && h(\"div\", {\n \"ref\": \"TreeMenuActions\",\n \"class\": \"DirectoryTreeMenu__Actions\",\n \"on\": {\n ...{\n mouseenter: event => event.stopPropagation()\n }\n }\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-more\"\n },\n \"on\": {\n ...{\n click: e => e.preventDefault()\n }\n }\n }), h(\"div\", {\n \"slot\": \"overlay\",\n \"class\": \"DirectoryTreeMenu__Dropdown__Menu\"\n }, [treeActions.map((handle, i) => {\n return h(\"span\", {\n \"key\": i,\n \"on\": {\n ...{\n // this.$emit('handleOperateClick', handle, NodeActions)\n click: () => handleOperateClick(handle, {\n ...node,\n nodeIndex\n }, parentNode)\n }\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-plus\"\n },\n \"on\": {\n ...{\n click: () => handlePlusClick()\n }\n }\n })])]);\n }\n }\n }, [node[replaceFields.children] && node[replaceFields.children].length && node[replaceFields.children].map((childNode, childNodeIndex) => this.TreeNodeRender(childNode, childNodeIndex, node))]);\n },\n appendTreeNode() {\n this.treeData.push({\n type: 'input',\n append: true,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n },\n createTreeNode({\n value\n }, node) {\n this.$set(node, 'type', 'text');\n this.$emit(`handlePlus${node.append ? 'Add' : 'Update'}`, value, node.append ? node.parentOrgId : node[this.replaceFields.key]);\n const parentNodes = node.parentOrgId ? this.findItemById(this.treeData, node.parentOrgId)[this.replaceFields.children] : this.treeData;\n if (node.append) {\n const i = parentNodes.findIndex(child => child[this.replaceFields.key] == node[this.replaceFields.key]);\n parentNodes.splice(i, 1);\n }\n },\n handleOperateClick(handle, node, parentNode) {\n const key = node[this.replaceFields.key];\n let that = this;\n switch (handle.type) {\n case 'update':\n const updateNode = this.findItemById(this.treeData, key);\n this.$set(updateNode, 'type', 'input');\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'copy':\n // 明天来了优化一下\n const cloneNode = parentNode ? parentNode[this.replaceFields.children] : this.treeData;\n cloneNode.splice(node.nodeIndex + 1, 0, {\n type: 'input',\n append: true,\n parentOrgId: parentNode ? parentNode[this.replaceFields.key] : null,\n [this.replaceFields.key]: new Date().getTime(),\n [this.replaceFields.title]: node[this.replaceFields.title]\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'delete':\n this.$confirm({\n title: '确定要删除当前节点吗?',\n okText: '确定',\n cancelText: '取消',\n onOk() {\n that.$emit('handleDeleteClick', node);\n console.log('OK');\n },\n onCancel() {\n console.log('Cancel');\n }\n });\n break;\n default:\n this.$emit('handleOperateClick', handle, node);\n break;\n }\n },\n handlePlusClick() {\n const node = this.findItemById(this.treeData, this.NodeActions.id);\n console.log(node, this.NodeActions, '--NodeActions');\n const childNode = node[this.replaceFields.children] ?? [];\n childNode.push({\n type: 'input',\n append: true,\n parentOrgId: this.NodeActions.id,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.NodeExpandKeys.push(this.NodeActions.id);\n node[this.replaceFields.children] = childNode;\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n console.log(node, '--NodeActions');\n },\n findItemById(treeData, id) {\n for (let i = 0; i < treeData.length; i++) {\n if (treeData[i][this.replaceFields.key] === id) return treeData[i];\n let childNode = treeData[i][this.replaceFields.children];\n if (childNode && childNode.length > 0) {\n const foundItem = this.findItemById(treeData[i][this.replaceFields.children], id);\n if (foundItem) return foundItem;\n }\n }\n },\n onInitTree(treeExpend = true) {\n this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]]);\n this.NodeExpandKeys = this.treeExpandKeys.length && this.treeExpandKeys || treeExpend && (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields) || [];\n },\n onCheck(keys, {}) {\n this.NodeCheckedKeys = keys;\n this.$emit('onCheck', keys);\n },\n onSelect(keys, {\n nativeEvent,\n node\n }) {\n this.NodeSelectedKeys = keys;\n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.$emit('onSelect', keys);\n },\n onExpand(expandedKeys, {\n expanded,\n node\n }) {\n this.NodeExpandKeys = [].concat(expandedKeys);\n console.log(expandedKeys, expanded, node, 'Trigger Expand');\n },\n getIcon(props) {\n const h = this.$createElement;\n const {\n isLeaf,\n expanded\n } = props;\n if (isLeaf) {\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": expanded ? 'folder-open' : 'folder'\n }\n });\n },\n handleMouseEnter({\n event,\n node\n }) {\n this.NodeActions = {\n id: node._props.eventKey,\n title: node._props.title,\n parentOrgId: node.$parent.eventKey || null\n };\n // this.MenuDropdown = false \n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.NodeKey.push(node.eventKey);\n // console.log(node, 'handleMouseEnter')\n // 是否加个参数 判断是否处于打开状态\n },\n handleMouseLeave({\n event,\n node\n }) {\n if (this.NodeKey.includes(node.eventKey) && this.NodeSelectedKeys != node.eventKey) {\n const i = this.NodeKey.findIndex(key => key == node.eventKey);\n this.NodeKey.splice(i, 1);\n }\n // this.NodeKey = []\n },\n onDragEnter(node) {\n console.log(node, '--onDragEnter');\n // expandedKeys 需要受控时设置\n // this.expandedKeys = info.expandedKeys\n },\n onDrop(info) {\n const dragKey = info.dragNode.eventKey;\n const dropPos = info.node.pos.split(\"-\");\n // 拖动的位置\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const node = info.node; //目标节点\n const dragNode = info.dragNode; // 拖动节点\n const dropKey = node.eventKey;\n console.log(dragNode, node, '--dropToGap');\n if (dragNode.$parent?.eventKey !== node.$parent?.eventKey || !info.dropToGap) {\n // 阻止跨父级拖拽\n this.$message.warning(\"只能在同级排序\");\n return false;\n }\n const {\n key,\n children\n } = this.replaceFields;\n const loop = (data, eventKey, callback) => {\n data.forEach((node, i, array) => {\n if (node[key] === eventKey) {\n return callback(node, i, array);\n }\n if (node[children]) {\n return loop(node[children], eventKey, callback);\n }\n });\n };\n const data = [...this.treeData];\n let dragObj;\n let dragObjIndex;\n loop(data, dragKey, (node, i, array) => {\n dragObj = node;\n dragObjIndex = i;\n });\n let dropIndex;\n loop(data, dropKey, (node, i, array) => {\n dropIndex = i;\n console.log(node, i, dragObj, dragObjIndex, '--i');\n });\n this.$emit('onDrop', {\n [key]: dragObj[key],\n originalIndex: dragObjIndex,\n presentIndex: dropPosition === -1 ? dropIndex : dropIndex + 1\n });\n }\n },\n render() {\n const h = arguments[0];\n const {\n $attrs,\n treePlus,\n treeData,\n NodeCheckedKeys,\n NodeSelectedKeys,\n NodeExpandKeys,\n onCheck,\n onSelect,\n onExpand,\n handleMouseEnter,\n handleMouseLeave,\n onDragEnter,\n onDrop,\n TreeNodeRender,\n appendTreeNode,\n replaceFields\n } = this;\n return h(\"div\", {\n \"class\": \"DirectoryTreeMenu\"\n }, [$attrs.menuTitle && h(\"div\", {\n \"class\": \"treeDirectory\"\n }, [h(\"span\", [$attrs.menuTitle || '目录']), treePlus && h(ant_design_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"attrs\": {\n \"icon\": \"plus\",\n \"size\": \"small\"\n },\n \"on\": {\n ...{\n click: appendTreeNode\n }\n }\n })]), h(DirectoryTree, {\n \"attrs\": {\n \"draggable\": true,\n \"default-expand-all\": true,\n \"checkedKeys\": NodeCheckedKeys,\n \"selectedKeys\": NodeSelectedKeys,\n \"expandedKeys\": NodeExpandKeys,\n \"expandAction\": \"dblclick\",\n ...$attrs,\n \"tree-node-filter-prop\": \"title\"\n },\n \"class\": \"DirectoryTreeMenu__Tree\",\n \"on\": {\n ...{\n check: onCheck,\n select: onSelect,\n expand: onExpand,\n mouseenter: handleMouseEnter,\n mouseleave: handleMouseLeave,\n dragenter: onDragEnter,\n drop: onDrop\n }\n }\n }, [treeData.map((node, nodeIndex) => TreeNodeRender(node, nodeIndex))])]);\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/Directory.js?");
9202
9202
 
9203
9203
  /***/ }),
9204
9204
 
@@ -9241,7 +9241,7 @@ eval("__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modul
9241
9241
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9242
9242
 
9243
9243
  "use strict";
9244
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url);\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
9244
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url);\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
9245
9245
 
9246
9246
  /***/ }),
9247
9247
 
@@ -9417,7 +9417,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
9417
9417
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9418
9418
 
9419
9419
  "use strict";
9420
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* 混入样式 */\\n/* 布局( 纯为了不想多写一行 */\\n/* 正方体盒子 */\\n/* 滚动条样式 */\\n/* 文字换行省略(默认1行)*/\\n/* flex布局 */\\n/* flex排版方式 */\\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DirectoryTreeMenu {\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Actions {\\n display: flex;\\n gap: 0 8px;\\n position: relative;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons {\\n cursor: pointer;\\n width: 16px !important;\\n height: 16px !important;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons:focus {\\n outline: none;\\n}\\n.DirectoryTreeMenu .treeDirectory {\\n width: 100%;\\n height: 40px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu .treeDirectory > span {\\n flex: 1;\\n text-align: left;\\n color: #FFFFFF;\\n font-size: 16px;\\n font-weight: 700;\\n position: relative;\\n padding-left: 12px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu .treeDirectory > span::after {\\n width: 4px;\\n height: 12px;\\n left: 0;\\n top: calc((100% - 12px) / 2);\\n content: '';\\n position: absolute;\\n background: #1677FF;\\n border-radius: 2px;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) {\\n margin-right: 12px;\\n line-height: 16px;\\n border-color: #FFFFFF;\\n width: 16px;\\n height: 16px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) i {\\n font-size: 11px;\\n color: #FFFFFF;\\n}\\n.DirectoryTreeMenu__Tree {\\n height: calc(100% - 40px);\\n overflow-y: auto;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-track {\\n border-radius: 0;\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-thumb {\\n border-radius: 0;\\n border-radius: 5px;\\n background-image: -webkit-linear-gradient(270deg, #1890ff 0%, transparent 100%);\\n -webkit-transition: all 0.2s;\\n transition: all 0.2s;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-corner {\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 6px;\\n height: 56px;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 4px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu {\\n width: 140px;\\n height: auto;\\n border-radius: 2px;\\n padding: 12px 0;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span {\\n display: flex;\\n cursor: pointer;\\n align-items: center;\\n font-size: 14px;\\n margin-bottom: 2px;\\n padding: 0 16px;\\n box-sizing: border-box;\\n width: 100%;\\n height: 26px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span:last-child {\\n margin: 0;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span .svg-icon {\\n margin-right: 8px;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper {\\n width: calc(100% - 24px);\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title {\\n display: inline-block;\\n width: calc(100% - 24px);\\n height: 100%;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title {\\n gap: 0 8px;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title > span {\\n white-space: normal;\\n width: calc(100% - 56px);\\n text-overflow: -o-ellipsis-lastline;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1;\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/style/Directory.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use%5B2%5D");
9420
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* 混入样式 */\\n/* 布局( 纯为了不想多写一行 */\\n/* 正方体盒子 */\\n/* 滚动条样式 */\\n/* 文字换行省略(默认1行)*/\\n/* flex布局 */\\n/* flex排版方式 */\\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DirectoryTreeMenu {\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Actions {\\n display: flex;\\n gap: 0 8px;\\n flex-direction: row;\\n position: relative;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons {\\n cursor: pointer;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons:focus {\\n outline: none;\\n}\\n.DirectoryTreeMenu .treeDirectory {\\n width: 100%;\\n height: 40px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu .treeDirectory > span {\\n flex: 1;\\n color: #fff;\\n text-align: left;\\n font-size: 16px;\\n font-weight: 700;\\n padding-left: 12px;\\n box-sizing: border-box;\\n position: relative;\\n}\\n.DirectoryTreeMenu .treeDirectory > span::after {\\n left: 0;\\n top: calc((100% - 12px) / 2);\\n content: '';\\n position: absolute;\\n background: #1890ff;\\n border-radius: 2px;\\n width: 4px;\\n height: 12px;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) {\\n line-height: 16px;\\n margin-right: 12px;\\n border-color: #fff;\\n width: 16px;\\n height: 16px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) i {\\n font-size: 12px;\\n color: #fff;\\n}\\n.DirectoryTreeMenu__Tree {\\n height: calc(100% - 40px);\\n overflow-y: auto;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-track {\\n border-radius: 0;\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-thumb {\\n border-radius: 0;\\n border-radius: 5px;\\n background-image: -webkit-linear-gradient(270deg, #1890ff 0%, transparent 100%);\\n -webkit-transition: all 0.2s;\\n transition: all 0.2s;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-corner {\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 6px;\\n height: 56px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu {\\n width: 140px;\\n height: auto;\\n padding: 8px 0;\\n box-sizing: border-box;\\n border-radius: 2px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span {\\n display: flex;\\n align-items: center;\\n margin-bottom: 2px;\\n font-size: 14px;\\n padding: 0 16px;\\n box-sizing: border-box;\\n cursor: pointer;\\n width: 100%;\\n height: 26px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span:last-child {\\n margin: 0;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span .svg-icon {\\n margin-right: 8px;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper {\\n width: calc(100% - 24px);\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title {\\n display: inline-block;\\n width: calc(100% - 24px);\\n height: 100%;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n gap: 0 8px;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title > span {\\n white-space: normal;\\n width: calc(100% - 56px);\\n text-overflow: -o-ellipsis-lastline;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1;\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/style/Directory.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use%5B2%5D");
9421
9421
 
9422
9422
  /***/ }),
9423
9423
 
@@ -66,7 +66,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
66
66
  \*********************************/
67
67
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
68
68
 
69
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url);\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
69
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url);\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
70
70
 
71
71
  /***/ }),
72
72
 
package/dist/index.umd.js CHANGED
@@ -9198,7 +9198,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
9198
9198
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9199
9199
 
9200
9200
  "use strict";
9201
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_Tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Tree */ \"./plugins/utils/Tree.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/button/index.js\");\n/* harmony import */ var _style_Directory_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style/Directory.less */ \"./plugins/lib/tree/style/Directory.less\");\n/* harmony import */ var _svgIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../svgIcon */ \"./plugins/lib/svgIcon/index.js\");\n\n\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\n type: Array,\n default: () => []\n },\n treeExpandKeys: {\n type: Array,\n default: () => []\n },\n treePlus: {\n type: Boolean,\n default: true\n },\n treeActions: {\n type: Array,\n default: () => []\n },\n treeActionsPlus: {\n type: Boolean,\n default: true\n },\n replaceFields: {\n type: Object,\n default: () => ({\n children: 'children',\n key: 'id',\n title: 'title'\n })\n }\n },\n data() {\n return {\n NodeCheckedKeys: [],\n NodeSelectedKeys: [],\n NodeExpandKeys: [],\n NodeKey: [],\n NodeActions: null,\n MenuDropdown: false,\n NodeActionsStyle: {}\n };\n },\n mounted() {\n this.onInitTree();\n },\n watch: {\n treeData(newValue, oldValue) {\n this.onInitTree(!oldValue.length);\n },\n treeExpandKeys(newValue) {\n this.NodeExpandKeys = newValue;\n }\n },\n methods: {\n TreeNodeRender(node, nodeIndex, parentNode) {\n const h = this.$createElement;\n const {\n replaceFields,\n NodeActions,\n treeActions,\n NodeActionsStyle,\n NodeExpandKeys,\n NodeKey,\n treeActionsPlus,\n createTreeNode,\n handleMouseLeave,\n handleOperateClick,\n handlePlusClick\n } = this;\n const key = node[replaceFields.key];\n return h(TreeNode, {\n \"key\": key,\n \"class\": \"DirectoryTreeMenu__Node\",\n \"scopedSlots\": {\n title: props => {\n return h(\"div\", {\n \"class\": \"__Title\"\n }, [node.type != 'input' ? h(\"span\", [node[replaceFields.title]]) : h(ant_design_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"attrs\": {\n \"placeholder\": \"请输入节点名称\",\n \"default-value\": node[replaceFields.title]\n },\n \"on\": {\n ...{\n blur: ({\n target\n }) => createTreeNode(target, node),\n pressEnter: event => event.target.blur(event, true)\n }\n },\n \"ref\": \"inputNodeRef\"\n }), NodeActions && Boolean(treeActions.length) && NodeKey.includes(props.eventKey) && node.type != 'input' && h(\"div\", {\n \"ref\": \"TreeMenuActions\",\n \"class\": \"DirectoryTreeMenu__Actions\",\n \"on\": {\n ...{\n mouseenter: event => event.stopPropagation()\n }\n }\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-more\"\n },\n \"on\": {\n ...{\n click: e => e.preventDefault()\n }\n }\n }), h(\"div\", {\n \"slot\": \"overlay\",\n \"class\": \"DirectoryTreeMenu__Dropdown__Menu\"\n }, [treeActions.map((handle, i) => {\n return h(\"span\", {\n \"key\": i,\n \"on\": {\n ...{\n // this.$emit('handleOperateClick', handle, NodeActions)\n click: () => handleOperateClick(handle, {\n ...node,\n nodeIndex\n }, parentNode)\n }\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-plus\"\n },\n \"on\": {\n ...{\n click: () => handlePlusClick()\n }\n }\n })])]);\n }\n }\n }, [node[replaceFields.children] && node[replaceFields.children].length && node[replaceFields.children].map((childNode, childNodeIndex) => this.TreeNodeRender(childNode, childNodeIndex, node))]);\n },\n appendTreeNode() {\n this.treeData.push({\n type: 'input',\n append: true,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n },\n createTreeNode({\n value\n }, node) {\n this.$set(node, 'type', 'text');\n this.$emit(`handlePlus${node.append ? 'Add' : 'Update'}`, value, node.append ? node.parentOrgId : node[this.replaceFields.key]);\n const parentNodes = node.parentOrgId ? this.findItemById(this.treeData, node.parentOrgId)[this.replaceFields.children] : this.treeData;\n if (node.append) {\n const i = parentNodes.findIndex(child => child[this.replaceFields.key] == node[this.replaceFields.key]);\n parentNodes.splice(i, 1);\n }\n },\n handleOperateClick(handle, node, parentNode) {\n const key = node[this.replaceFields.key];\n let that = this;\n switch (handle.type) {\n case 'update':\n const updateNode = this.findItemById(this.treeData, key);\n this.$set(updateNode, 'type', 'input');\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'copy':\n // 明天来了优化一下\n const cloneNode = parentNode ? parentNode[this.replaceFields.children] : this.treeData;\n cloneNode.splice(node.nodeIndex + 1, 0, {\n type: 'input',\n append: true,\n parentOrgId: parentNode ? parentNode[this.replaceFields.key] : null,\n [this.replaceFields.key]: new Date().getTime(),\n [this.replaceFields.title]: node[this.replaceFields.title]\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'delete':\n this.$confirm({\n title: '确定要删除当前节点吗?',\n okText: '确定',\n cancelText: '取消',\n onOk() {\n that.$emit('handleDeleteClick', node);\n console.log('OK');\n },\n onCancel() {\n console.log('Cancel');\n }\n });\n break;\n default:\n this.$emit('handleOperateClick', handle, node);\n break;\n }\n },\n handlePlusClick() {\n const node = this.findItemById(this.treeData, this.NodeActions.id);\n console.log(node, this.NodeActions, '--NodeActions');\n const childNode = node[this.replaceFields.children] ?? [];\n childNode.push({\n type: 'input',\n append: true,\n parentOrgId: this.NodeActions.id,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.NodeExpandKeys.push(this.NodeActions.id);\n node[this.replaceFields.children] = childNode;\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n console.log(node, '--NodeActions');\n },\n findItemById(treeData, id) {\n for (let i = 0; i < treeData.length; i++) {\n if (treeData[i][this.replaceFields.key] === id) return treeData[i];\n let childNode = treeData[i][this.replaceFields.children];\n if (childNode && childNode.length > 0) {\n const foundItem = this.findItemById(treeData[i][this.replaceFields.children], id);\n if (foundItem) return foundItem;\n }\n }\n },\n onInitTree(treeExpend = true) {\n this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]]);\n this.NodeExpandKeys = this.treeExpandKeys.length && this.treeExpandKeys || treeExpend && (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields) || [];\n },\n onCheck(keys, {}) {\n this.NodeCheckedKeys = keys;\n this.$emit('onCheck', keys);\n },\n onSelect(keys, {\n nativeEvent,\n node\n }) {\n this.NodeSelectedKeys = keys;\n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.$emit('onSelect', keys);\n },\n onExpand(expandedKeys, {\n expanded,\n node\n }) {\n this.NodeExpandKeys = [].concat(expandedKeys);\n console.log(expandedKeys, expanded, node, 'Trigger Expand');\n },\n getIcon(props) {\n const h = this.$createElement;\n const {\n isLeaf,\n expanded\n } = props;\n if (isLeaf) {\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": expanded ? 'folder-open' : 'folder'\n }\n });\n },\n handleMouseEnter({\n event,\n node\n }) {\n this.NodeActions = {\n id: node._props.eventKey,\n title: node._props.title,\n parentOrgId: node.$parent.eventKey || null\n };\n // this.MenuDropdown = false \n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.NodeKey.push(node.eventKey);\n // console.log(node, 'handleMouseEnter')\n // 是否加个参数 判断是否处于打开状态\n },\n handleMouseLeave({\n event,\n node\n }) {\n if (this.NodeKey.includes(node.eventKey) && this.NodeSelectedKeys != node.eventKey) {\n const i = this.NodeKey.findIndex(key => key == node.eventKey);\n this.NodeKey.splice(i, 1);\n }\n // this.NodeKey = []\n },\n onDragEnter(node) {\n console.log(node, '--onDragEnter');\n // expandedKeys 需要受控时设置\n // this.expandedKeys = info.expandedKeys\n },\n onDrop(info) {\n const dragKey = info.dragNode.eventKey;\n const dropPos = info.node.pos.split(\"-\");\n // 拖动的位置\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const node = info.node; //目标节点\n const dragNode = info.dragNode; // 拖动节点\n const dropKey = node.eventKey;\n console.log(dragNode, node, '--dropToGap');\n if (dragNode.$parent?.eventKey !== node.$parent?.eventKey || !info.dropToGap) {\n // 阻止跨父级拖拽\n this.$message.warning(\"只能在同级排序\");\n return false;\n }\n const {\n key,\n children\n } = this.replaceFields;\n const loop = (data, eventKey, callback) => {\n data.forEach((node, i, array) => {\n if (node[key] === eventKey) {\n return callback(node, i, array);\n }\n if (node[children]) {\n return loop(node[children], eventKey, callback);\n }\n });\n };\n const data = [...this.treeData];\n let dragObj;\n let dragObjIndex;\n loop(data, dragKey, (node, i, array) => {\n dragObj = node;\n dragObjIndex = i;\n });\n let dropIndex;\n loop(data, dropKey, (node, i, array) => {\n dropIndex = i;\n console.log(node, i, dragObj, dragObjIndex, '--i');\n });\n this.$emit('onDrop', {\n [key]: dragObj[key],\n originalIndex: dragObjIndex,\n presentIndex: dropPosition === -1 ? dropIndex : dropIndex + 1\n });\n }\n },\n render() {\n const h = arguments[0];\n const {\n $attrs,\n treePlus,\n treeData,\n NodeCheckedKeys,\n NodeSelectedKeys,\n NodeExpandKeys,\n onCheck,\n onSelect,\n onExpand,\n handleMouseEnter,\n handleMouseLeave,\n onDragEnter,\n onDrop,\n TreeNodeRender,\n appendTreeNode,\n replaceFields\n } = this;\n return h(\"div\", {\n \"class\": \"DirectoryTreeMenu\"\n }, [h(\"div\", {\n \"class\": \"treeDirectory\"\n }, [h(\"span\", [$attrs.menuTitle || '目录']), treePlus && h(ant_design_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"attrs\": {\n \"icon\": \"plus\",\n \"size\": \"small\"\n },\n \"on\": {\n ...{\n click: appendTreeNode\n }\n }\n })]), h(DirectoryTree, {\n \"attrs\": {\n \"draggable\": true,\n \"default-expand-all\": true,\n \"checkedKeys\": NodeCheckedKeys,\n \"selectedKeys\": NodeSelectedKeys,\n \"expandedKeys\": NodeExpandKeys,\n \"expandAction\": \"dblclick\",\n ...$attrs,\n \"tree-node-filter-prop\": \"title\"\n },\n \"class\": \"DirectoryTreeMenu__Tree\",\n \"on\": {\n ...{\n check: onCheck,\n select: onSelect,\n expand: onExpand,\n mouseenter: handleMouseEnter,\n mouseleave: handleMouseLeave,\n dragenter: onDragEnter,\n drop: onDrop\n }\n }\n }, [treeData.map((node, nodeIndex) => TreeNodeRender(node, nodeIndex))])]);\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/Directory.js?");
9201
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_Tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Tree */ \"./plugins/utils/Tree.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/button/index.js\");\n/* harmony import */ var _style_Directory_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style/Directory.less */ \"./plugins/lib/tree/style/Directory.less\");\n/* harmony import */ var _svgIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../svgIcon */ \"./plugins/lib/svgIcon/index.js\");\n\n\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\n type: Array,\n default: () => []\n },\n treeExpandKeys: {\n type: Array,\n default: () => []\n },\n treePlus: {\n type: Boolean,\n default: true\n },\n treeActions: {\n type: Array,\n default: () => []\n },\n treeActionsPlus: {\n type: Boolean,\n default: true\n },\n replaceFields: {\n type: Object,\n default: () => ({\n children: 'children',\n key: 'id',\n title: 'title'\n })\n }\n },\n data() {\n return {\n NodeCheckedKeys: [],\n NodeSelectedKeys: [],\n NodeExpandKeys: [],\n NodeKey: [],\n NodeActions: null,\n MenuDropdown: false,\n NodeActionsStyle: {}\n };\n },\n mounted() {\n this.onInitTree();\n },\n watch: {\n treeData(newValue, oldValue) {\n this.onInitTree(!oldValue.length);\n },\n treeExpandKeys(newValue) {\n this.NodeExpandKeys = newValue;\n }\n },\n methods: {\n TreeNodeRender(node, nodeIndex, parentNode) {\n const h = this.$createElement;\n const {\n replaceFields,\n NodeActions,\n treeActions,\n NodeActionsStyle,\n NodeExpandKeys,\n NodeKey,\n treeActionsPlus,\n createTreeNode,\n handleMouseLeave,\n handleOperateClick,\n handlePlusClick\n } = this;\n const key = node[replaceFields.key];\n return h(TreeNode, {\n \"key\": key,\n \"class\": \"DirectoryTreeMenu__Node\",\n \"scopedSlots\": {\n title: props => {\n return h(\"div\", {\n \"class\": \"__Title\"\n }, [node.type != 'input' ? h(\"span\", [node[replaceFields.title]]) : h(ant_design_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"attrs\": {\n \"placeholder\": \"请输入节点名称\",\n \"default-value\": node[replaceFields.title]\n },\n \"on\": {\n ...{\n blur: ({\n target\n }) => createTreeNode(target, node),\n pressEnter: event => event.target.blur(event, true)\n }\n },\n \"ref\": \"inputNodeRef\"\n }), NodeActions && Boolean(treeActions.length) && NodeKey.includes(props.eventKey) && node.type != 'input' && h(\"div\", {\n \"ref\": \"TreeMenuActions\",\n \"class\": \"DirectoryTreeMenu__Actions\",\n \"on\": {\n ...{\n mouseenter: event => event.stopPropagation()\n }\n }\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-more\"\n },\n \"on\": {\n ...{\n click: e => e.preventDefault()\n }\n }\n }), h(\"div\", {\n \"slot\": \"overlay\",\n \"class\": \"DirectoryTreeMenu__Dropdown__Menu\"\n }, [treeActions.map((handle, i) => {\n return h(\"span\", {\n \"key\": i,\n \"on\": {\n ...{\n // this.$emit('handleOperateClick', handle, NodeActions)\n click: () => handleOperateClick(handle, {\n ...node,\n nodeIndex\n }, parentNode)\n }\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-plus\"\n },\n \"on\": {\n ...{\n click: () => handlePlusClick()\n }\n }\n })])]);\n }\n }\n }, [node[replaceFields.children] && node[replaceFields.children].length && node[replaceFields.children].map((childNode, childNodeIndex) => this.TreeNodeRender(childNode, childNodeIndex, node))]);\n },\n appendTreeNode() {\n this.treeData.push({\n type: 'input',\n append: true,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n },\n createTreeNode({\n value\n }, node) {\n this.$set(node, 'type', 'text');\n this.$emit(`handlePlus${node.append ? 'Add' : 'Update'}`, value, node.append ? node.parentOrgId : node[this.replaceFields.key]);\n const parentNodes = node.parentOrgId ? this.findItemById(this.treeData, node.parentOrgId)[this.replaceFields.children] : this.treeData;\n if (node.append) {\n const i = parentNodes.findIndex(child => child[this.replaceFields.key] == node[this.replaceFields.key]);\n parentNodes.splice(i, 1);\n }\n },\n handleOperateClick(handle, node, parentNode) {\n const key = node[this.replaceFields.key];\n let that = this;\n switch (handle.type) {\n case 'update':\n const updateNode = this.findItemById(this.treeData, key);\n this.$set(updateNode, 'type', 'input');\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'copy':\n // 明天来了优化一下\n const cloneNode = parentNode ? parentNode[this.replaceFields.children] : this.treeData;\n cloneNode.splice(node.nodeIndex + 1, 0, {\n type: 'input',\n append: true,\n parentOrgId: parentNode ? parentNode[this.replaceFields.key] : null,\n [this.replaceFields.key]: new Date().getTime(),\n [this.replaceFields.title]: node[this.replaceFields.title]\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'delete':\n this.$confirm({\n title: '确定要删除当前节点吗?',\n okText: '确定',\n cancelText: '取消',\n onOk() {\n that.$emit('handleDeleteClick', node);\n console.log('OK');\n },\n onCancel() {\n console.log('Cancel');\n }\n });\n break;\n default:\n this.$emit('handleOperateClick', handle, node);\n break;\n }\n },\n handlePlusClick() {\n const node = this.findItemById(this.treeData, this.NodeActions.id);\n console.log(node, this.NodeActions, '--NodeActions');\n const childNode = node[this.replaceFields.children] ?? [];\n childNode.push({\n type: 'input',\n append: true,\n parentOrgId: this.NodeActions.id,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.NodeExpandKeys.push(this.NodeActions.id);\n node[this.replaceFields.children] = childNode;\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n console.log(node, '--NodeActions');\n },\n findItemById(treeData, id) {\n for (let i = 0; i < treeData.length; i++) {\n if (treeData[i][this.replaceFields.key] === id) return treeData[i];\n let childNode = treeData[i][this.replaceFields.children];\n if (childNode && childNode.length > 0) {\n const foundItem = this.findItemById(treeData[i][this.replaceFields.children], id);\n if (foundItem) return foundItem;\n }\n }\n },\n onInitTree(treeExpend = true) {\n this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]]);\n this.NodeExpandKeys = this.treeExpandKeys.length && this.treeExpandKeys || treeExpend && (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields) || [];\n },\n onCheck(keys, {}) {\n this.NodeCheckedKeys = keys;\n this.$emit('onCheck', keys);\n },\n onSelect(keys, {\n nativeEvent,\n node\n }) {\n this.NodeSelectedKeys = keys;\n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.$emit('onSelect', keys);\n },\n onExpand(expandedKeys, {\n expanded,\n node\n }) {\n this.NodeExpandKeys = [].concat(expandedKeys);\n console.log(expandedKeys, expanded, node, 'Trigger Expand');\n },\n getIcon(props) {\n const h = this.$createElement;\n const {\n isLeaf,\n expanded\n } = props;\n if (isLeaf) {\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": expanded ? 'folder-open' : 'folder'\n }\n });\n },\n handleMouseEnter({\n event,\n node\n }) {\n this.NodeActions = {\n id: node._props.eventKey,\n title: node._props.title,\n parentOrgId: node.$parent.eventKey || null\n };\n // this.MenuDropdown = false \n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.NodeKey.push(node.eventKey);\n // console.log(node, 'handleMouseEnter')\n // 是否加个参数 判断是否处于打开状态\n },\n handleMouseLeave({\n event,\n node\n }) {\n if (this.NodeKey.includes(node.eventKey) && this.NodeSelectedKeys != node.eventKey) {\n const i = this.NodeKey.findIndex(key => key == node.eventKey);\n this.NodeKey.splice(i, 1);\n }\n // this.NodeKey = []\n },\n onDragEnter(node) {\n console.log(node, '--onDragEnter');\n // expandedKeys 需要受控时设置\n // this.expandedKeys = info.expandedKeys\n },\n onDrop(info) {\n const dragKey = info.dragNode.eventKey;\n const dropPos = info.node.pos.split(\"-\");\n // 拖动的位置\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const node = info.node; //目标节点\n const dragNode = info.dragNode; // 拖动节点\n const dropKey = node.eventKey;\n console.log(dragNode, node, '--dropToGap');\n if (dragNode.$parent?.eventKey !== node.$parent?.eventKey || !info.dropToGap) {\n // 阻止跨父级拖拽\n this.$message.warning(\"只能在同级排序\");\n return false;\n }\n const {\n key,\n children\n } = this.replaceFields;\n const loop = (data, eventKey, callback) => {\n data.forEach((node, i, array) => {\n if (node[key] === eventKey) {\n return callback(node, i, array);\n }\n if (node[children]) {\n return loop(node[children], eventKey, callback);\n }\n });\n };\n const data = [...this.treeData];\n let dragObj;\n let dragObjIndex;\n loop(data, dragKey, (node, i, array) => {\n dragObj = node;\n dragObjIndex = i;\n });\n let dropIndex;\n loop(data, dropKey, (node, i, array) => {\n dropIndex = i;\n console.log(node, i, dragObj, dragObjIndex, '--i');\n });\n this.$emit('onDrop', {\n [key]: dragObj[key],\n originalIndex: dragObjIndex,\n presentIndex: dropPosition === -1 ? dropIndex : dropIndex + 1\n });\n }\n },\n render() {\n const h = arguments[0];\n const {\n $attrs,\n treePlus,\n treeData,\n NodeCheckedKeys,\n NodeSelectedKeys,\n NodeExpandKeys,\n onCheck,\n onSelect,\n onExpand,\n handleMouseEnter,\n handleMouseLeave,\n onDragEnter,\n onDrop,\n TreeNodeRender,\n appendTreeNode,\n replaceFields\n } = this;\n return h(\"div\", {\n \"class\": \"DirectoryTreeMenu\"\n }, [$attrs.menuTitle && h(\"div\", {\n \"class\": \"treeDirectory\"\n }, [h(\"span\", [$attrs.menuTitle || '目录']), treePlus && h(ant_design_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"attrs\": {\n \"icon\": \"plus\",\n \"size\": \"small\"\n },\n \"on\": {\n ...{\n click: appendTreeNode\n }\n }\n })]), h(DirectoryTree, {\n \"attrs\": {\n \"draggable\": true,\n \"default-expand-all\": true,\n \"checkedKeys\": NodeCheckedKeys,\n \"selectedKeys\": NodeSelectedKeys,\n \"expandedKeys\": NodeExpandKeys,\n \"expandAction\": \"dblclick\",\n ...$attrs,\n \"tree-node-filter-prop\": \"title\"\n },\n \"class\": \"DirectoryTreeMenu__Tree\",\n \"on\": {\n ...{\n check: onCheck,\n select: onSelect,\n expand: onExpand,\n mouseenter: handleMouseEnter,\n mouseleave: handleMouseLeave,\n dragenter: onDragEnter,\n drop: onDrop\n }\n }\n }, [treeData.map((node, nodeIndex) => TreeNodeRender(node, nodeIndex))])]);\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/Directory.js?");
9202
9202
 
9203
9203
  /***/ }),
9204
9204
 
@@ -9241,7 +9241,7 @@ eval("__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modul
9241
9241
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9242
9242
 
9243
9243
  "use strict";
9244
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url);\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
9244
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url);\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
9245
9245
 
9246
9246
  /***/ }),
9247
9247
 
@@ -9417,7 +9417,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
9417
9417
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9418
9418
 
9419
9419
  "use strict";
9420
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* 混入样式 */\\n/* 布局( 纯为了不想多写一行 */\\n/* 正方体盒子 */\\n/* 滚动条样式 */\\n/* 文字换行省略(默认1行)*/\\n/* flex布局 */\\n/* flex排版方式 */\\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DirectoryTreeMenu {\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Actions {\\n display: flex;\\n gap: 0 8px;\\n position: relative;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons {\\n cursor: pointer;\\n width: 16px !important;\\n height: 16px !important;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons:focus {\\n outline: none;\\n}\\n.DirectoryTreeMenu .treeDirectory {\\n width: 100%;\\n height: 40px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu .treeDirectory > span {\\n flex: 1;\\n text-align: left;\\n color: #FFFFFF;\\n font-size: 16px;\\n font-weight: 700;\\n position: relative;\\n padding-left: 12px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu .treeDirectory > span::after {\\n width: 4px;\\n height: 12px;\\n left: 0;\\n top: calc((100% - 12px) / 2);\\n content: '';\\n position: absolute;\\n background: #1677FF;\\n border-radius: 2px;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) {\\n margin-right: 12px;\\n line-height: 16px;\\n border-color: #FFFFFF;\\n width: 16px;\\n height: 16px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) i {\\n font-size: 11px;\\n color: #FFFFFF;\\n}\\n.DirectoryTreeMenu__Tree {\\n height: calc(100% - 40px);\\n overflow-y: auto;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-track {\\n border-radius: 0;\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-thumb {\\n border-radius: 0;\\n border-radius: 5px;\\n background-image: -webkit-linear-gradient(270deg, #1890ff 0%, transparent 100%);\\n -webkit-transition: all 0.2s;\\n transition: all 0.2s;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-corner {\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 6px;\\n height: 56px;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 4px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu {\\n width: 140px;\\n height: auto;\\n border-radius: 2px;\\n padding: 12px 0;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span {\\n display: flex;\\n cursor: pointer;\\n align-items: center;\\n font-size: 14px;\\n margin-bottom: 2px;\\n padding: 0 16px;\\n box-sizing: border-box;\\n width: 100%;\\n height: 26px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span:last-child {\\n margin: 0;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span .svg-icon {\\n margin-right: 8px;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper {\\n width: calc(100% - 24px);\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title {\\n display: inline-block;\\n width: calc(100% - 24px);\\n height: 100%;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title {\\n gap: 0 8px;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title > span {\\n white-space: normal;\\n width: calc(100% - 56px);\\n text-overflow: -o-ellipsis-lastline;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1;\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/style/Directory.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use%5B2%5D");
9420
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* 混入样式 */\\n/* 布局( 纯为了不想多写一行 */\\n/* 正方体盒子 */\\n/* 滚动条样式 */\\n/* 文字换行省略(默认1行)*/\\n/* flex布局 */\\n/* flex排版方式 */\\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DirectoryTreeMenu {\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Actions {\\n display: flex;\\n gap: 0 8px;\\n flex-direction: row;\\n position: relative;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons {\\n cursor: pointer;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons:focus {\\n outline: none;\\n}\\n.DirectoryTreeMenu .treeDirectory {\\n width: 100%;\\n height: 40px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu .treeDirectory > span {\\n flex: 1;\\n color: #fff;\\n text-align: left;\\n font-size: 16px;\\n font-weight: 700;\\n padding-left: 12px;\\n box-sizing: border-box;\\n position: relative;\\n}\\n.DirectoryTreeMenu .treeDirectory > span::after {\\n left: 0;\\n top: calc((100% - 12px) / 2);\\n content: '';\\n position: absolute;\\n background: #1890ff;\\n border-radius: 2px;\\n width: 4px;\\n height: 12px;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) {\\n line-height: 16px;\\n margin-right: 12px;\\n border-color: #fff;\\n width: 16px;\\n height: 16px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) i {\\n font-size: 12px;\\n color: #fff;\\n}\\n.DirectoryTreeMenu__Tree {\\n height: calc(100% - 40px);\\n overflow-y: auto;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-track {\\n border-radius: 0;\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-thumb {\\n border-radius: 0;\\n border-radius: 5px;\\n background-image: -webkit-linear-gradient(270deg, #1890ff 0%, transparent 100%);\\n -webkit-transition: all 0.2s;\\n transition: all 0.2s;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-corner {\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 6px;\\n height: 56px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu {\\n width: 140px;\\n height: auto;\\n padding: 8px 0;\\n box-sizing: border-box;\\n border-radius: 2px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span {\\n display: flex;\\n align-items: center;\\n margin-bottom: 2px;\\n font-size: 14px;\\n padding: 0 16px;\\n box-sizing: border-box;\\n cursor: pointer;\\n width: 100%;\\n height: 26px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span:last-child {\\n margin: 0;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span .svg-icon {\\n margin-right: 8px;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper {\\n width: calc(100% - 24px);\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title {\\n display: inline-block;\\n width: calc(100% - 24px);\\n height: 100%;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n gap: 0 8px;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title > span {\\n white-space: normal;\\n width: calc(100% - 56px);\\n text-overflow: -o-ellipsis-lastline;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1;\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/style/Directory.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use%5B2%5D");
9421
9421
 
9422
9422
  /***/ }),
9423
9423
 
package/dist/tree.umd.js CHANGED
@@ -3379,7 +3379,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
3379
3379
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3380
3380
 
3381
3381
  "use strict";
3382
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_Tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Tree */ \"./plugins/utils/Tree.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/button/index.js\");\n/* harmony import */ var _style_Directory_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style/Directory.less */ \"./plugins/lib/tree/style/Directory.less\");\n/* harmony import */ var _svgIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../svgIcon */ \"./plugins/lib/svgIcon/index.js\");\n\n\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\n type: Array,\n default: () => []\n },\n treeExpandKeys: {\n type: Array,\n default: () => []\n },\n treePlus: {\n type: Boolean,\n default: true\n },\n treeActions: {\n type: Array,\n default: () => []\n },\n treeActionsPlus: {\n type: Boolean,\n default: true\n },\n replaceFields: {\n type: Object,\n default: () => ({\n children: 'children',\n key: 'id',\n title: 'title'\n })\n }\n },\n data() {\n return {\n NodeCheckedKeys: [],\n NodeSelectedKeys: [],\n NodeExpandKeys: [],\n NodeKey: [],\n NodeActions: null,\n MenuDropdown: false,\n NodeActionsStyle: {}\n };\n },\n mounted() {\n this.onInitTree();\n },\n watch: {\n treeData(newValue, oldValue) {\n this.onInitTree(!oldValue.length);\n },\n treeExpandKeys(newValue) {\n this.NodeExpandKeys = newValue;\n }\n },\n methods: {\n TreeNodeRender(node, nodeIndex, parentNode) {\n const h = this.$createElement;\n const {\n replaceFields,\n NodeActions,\n treeActions,\n NodeActionsStyle,\n NodeExpandKeys,\n NodeKey,\n treeActionsPlus,\n createTreeNode,\n handleMouseLeave,\n handleOperateClick,\n handlePlusClick\n } = this;\n const key = node[replaceFields.key];\n return h(TreeNode, {\n \"key\": key,\n \"class\": \"DirectoryTreeMenu__Node\",\n \"scopedSlots\": {\n title: props => {\n return h(\"div\", {\n \"class\": \"__Title\"\n }, [node.type != 'input' ? h(\"span\", [node[replaceFields.title]]) : h(ant_design_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"attrs\": {\n \"placeholder\": \"请输入节点名称\",\n \"default-value\": node[replaceFields.title]\n },\n \"on\": {\n ...{\n blur: ({\n target\n }) => createTreeNode(target, node),\n pressEnter: event => event.target.blur(event, true)\n }\n },\n \"ref\": \"inputNodeRef\"\n }), NodeActions && Boolean(treeActions.length) && NodeKey.includes(props.eventKey) && node.type != 'input' && h(\"div\", {\n \"ref\": \"TreeMenuActions\",\n \"class\": \"DirectoryTreeMenu__Actions\",\n \"on\": {\n ...{\n mouseenter: event => event.stopPropagation()\n }\n }\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-more\"\n },\n \"on\": {\n ...{\n click: e => e.preventDefault()\n }\n }\n }), h(\"div\", {\n \"slot\": \"overlay\",\n \"class\": \"DirectoryTreeMenu__Dropdown__Menu\"\n }, [treeActions.map((handle, i) => {\n return h(\"span\", {\n \"key\": i,\n \"on\": {\n ...{\n // this.$emit('handleOperateClick', handle, NodeActions)\n click: () => handleOperateClick(handle, {\n ...node,\n nodeIndex\n }, parentNode)\n }\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-plus\"\n },\n \"on\": {\n ...{\n click: () => handlePlusClick()\n }\n }\n })])]);\n }\n }\n }, [node[replaceFields.children] && node[replaceFields.children].length && node[replaceFields.children].map((childNode, childNodeIndex) => this.TreeNodeRender(childNode, childNodeIndex, node))]);\n },\n appendTreeNode() {\n this.treeData.push({\n type: 'input',\n append: true,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n },\n createTreeNode({\n value\n }, node) {\n this.$set(node, 'type', 'text');\n this.$emit(`handlePlus${node.append ? 'Add' : 'Update'}`, value, node.append ? node.parentOrgId : node[this.replaceFields.key]);\n const parentNodes = node.parentOrgId ? this.findItemById(this.treeData, node.parentOrgId)[this.replaceFields.children] : this.treeData;\n if (node.append) {\n const i = parentNodes.findIndex(child => child[this.replaceFields.key] == node[this.replaceFields.key]);\n parentNodes.splice(i, 1);\n }\n },\n handleOperateClick(handle, node, parentNode) {\n const key = node[this.replaceFields.key];\n let that = this;\n switch (handle.type) {\n case 'update':\n const updateNode = this.findItemById(this.treeData, key);\n this.$set(updateNode, 'type', 'input');\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'copy':\n // 明天来了优化一下\n const cloneNode = parentNode ? parentNode[this.replaceFields.children] : this.treeData;\n cloneNode.splice(node.nodeIndex + 1, 0, {\n type: 'input',\n append: true,\n parentOrgId: parentNode ? parentNode[this.replaceFields.key] : null,\n [this.replaceFields.key]: new Date().getTime(),\n [this.replaceFields.title]: node[this.replaceFields.title]\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'delete':\n this.$confirm({\n title: '确定要删除当前节点吗?',\n okText: '确定',\n cancelText: '取消',\n onOk() {\n that.$emit('handleDeleteClick', node);\n console.log('OK');\n },\n onCancel() {\n console.log('Cancel');\n }\n });\n break;\n default:\n this.$emit('handleOperateClick', handle, node);\n break;\n }\n },\n handlePlusClick() {\n const node = this.findItemById(this.treeData, this.NodeActions.id);\n console.log(node, this.NodeActions, '--NodeActions');\n const childNode = node[this.replaceFields.children] ?? [];\n childNode.push({\n type: 'input',\n append: true,\n parentOrgId: this.NodeActions.id,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.NodeExpandKeys.push(this.NodeActions.id);\n node[this.replaceFields.children] = childNode;\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n console.log(node, '--NodeActions');\n },\n findItemById(treeData, id) {\n for (let i = 0; i < treeData.length; i++) {\n if (treeData[i][this.replaceFields.key] === id) return treeData[i];\n let childNode = treeData[i][this.replaceFields.children];\n if (childNode && childNode.length > 0) {\n const foundItem = this.findItemById(treeData[i][this.replaceFields.children], id);\n if (foundItem) return foundItem;\n }\n }\n },\n onInitTree(treeExpend = true) {\n this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]]);\n this.NodeExpandKeys = this.treeExpandKeys.length && this.treeExpandKeys || treeExpend && (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields) || [];\n },\n onCheck(keys, {}) {\n this.NodeCheckedKeys = keys;\n this.$emit('onCheck', keys);\n },\n onSelect(keys, {\n nativeEvent,\n node\n }) {\n this.NodeSelectedKeys = keys;\n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.$emit('onSelect', keys);\n },\n onExpand(expandedKeys, {\n expanded,\n node\n }) {\n this.NodeExpandKeys = [].concat(expandedKeys);\n console.log(expandedKeys, expanded, node, 'Trigger Expand');\n },\n getIcon(props) {\n const h = this.$createElement;\n const {\n isLeaf,\n expanded\n } = props;\n if (isLeaf) {\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": expanded ? 'folder-open' : 'folder'\n }\n });\n },\n handleMouseEnter({\n event,\n node\n }) {\n this.NodeActions = {\n id: node._props.eventKey,\n title: node._props.title,\n parentOrgId: node.$parent.eventKey || null\n };\n // this.MenuDropdown = false \n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.NodeKey.push(node.eventKey);\n // console.log(node, 'handleMouseEnter')\n // 是否加个参数 判断是否处于打开状态\n },\n handleMouseLeave({\n event,\n node\n }) {\n if (this.NodeKey.includes(node.eventKey) && this.NodeSelectedKeys != node.eventKey) {\n const i = this.NodeKey.findIndex(key => key == node.eventKey);\n this.NodeKey.splice(i, 1);\n }\n // this.NodeKey = []\n },\n onDragEnter(node) {\n console.log(node, '--onDragEnter');\n // expandedKeys 需要受控时设置\n // this.expandedKeys = info.expandedKeys\n },\n onDrop(info) {\n const dragKey = info.dragNode.eventKey;\n const dropPos = info.node.pos.split(\"-\");\n // 拖动的位置\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const node = info.node; //目标节点\n const dragNode = info.dragNode; // 拖动节点\n const dropKey = node.eventKey;\n console.log(dragNode, node, '--dropToGap');\n if (dragNode.$parent?.eventKey !== node.$parent?.eventKey || !info.dropToGap) {\n // 阻止跨父级拖拽\n this.$message.warning(\"只能在同级排序\");\n return false;\n }\n const {\n key,\n children\n } = this.replaceFields;\n const loop = (data, eventKey, callback) => {\n data.forEach((node, i, array) => {\n if (node[key] === eventKey) {\n return callback(node, i, array);\n }\n if (node[children]) {\n return loop(node[children], eventKey, callback);\n }\n });\n };\n const data = [...this.treeData];\n let dragObj;\n let dragObjIndex;\n loop(data, dragKey, (node, i, array) => {\n dragObj = node;\n dragObjIndex = i;\n });\n let dropIndex;\n loop(data, dropKey, (node, i, array) => {\n dropIndex = i;\n console.log(node, i, dragObj, dragObjIndex, '--i');\n });\n this.$emit('onDrop', {\n [key]: dragObj[key],\n originalIndex: dragObjIndex,\n presentIndex: dropPosition === -1 ? dropIndex : dropIndex + 1\n });\n }\n },\n render() {\n const h = arguments[0];\n const {\n $attrs,\n treePlus,\n treeData,\n NodeCheckedKeys,\n NodeSelectedKeys,\n NodeExpandKeys,\n onCheck,\n onSelect,\n onExpand,\n handleMouseEnter,\n handleMouseLeave,\n onDragEnter,\n onDrop,\n TreeNodeRender,\n appendTreeNode,\n replaceFields\n } = this;\n return h(\"div\", {\n \"class\": \"DirectoryTreeMenu\"\n }, [h(\"div\", {\n \"class\": \"treeDirectory\"\n }, [h(\"span\", [$attrs.menuTitle || '目录']), treePlus && h(ant_design_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"attrs\": {\n \"icon\": \"plus\",\n \"size\": \"small\"\n },\n \"on\": {\n ...{\n click: appendTreeNode\n }\n }\n })]), h(DirectoryTree, {\n \"attrs\": {\n \"draggable\": true,\n \"default-expand-all\": true,\n \"checkedKeys\": NodeCheckedKeys,\n \"selectedKeys\": NodeSelectedKeys,\n \"expandedKeys\": NodeExpandKeys,\n \"expandAction\": \"dblclick\",\n ...$attrs,\n \"tree-node-filter-prop\": \"title\"\n },\n \"class\": \"DirectoryTreeMenu__Tree\",\n \"on\": {\n ...{\n check: onCheck,\n select: onSelect,\n expand: onExpand,\n mouseenter: handleMouseEnter,\n mouseleave: handleMouseLeave,\n dragenter: onDragEnter,\n drop: onDrop\n }\n }\n }, [treeData.map((node, nodeIndex) => TreeNodeRender(node, nodeIndex))])]);\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/Directory.js?");
3382
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_Tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Tree */ \"./plugins/utils/Tree.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/button/index.js\");\n/* harmony import */ var _style_Directory_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style/Directory.less */ \"./plugins/lib/tree/style/Directory.less\");\n/* harmony import */ var _svgIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../svgIcon */ \"./plugins/lib/svgIcon/index.js\");\n\n\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\n type: Array,\n default: () => []\n },\n treeExpandKeys: {\n type: Array,\n default: () => []\n },\n treePlus: {\n type: Boolean,\n default: true\n },\n treeActions: {\n type: Array,\n default: () => []\n },\n treeActionsPlus: {\n type: Boolean,\n default: true\n },\n replaceFields: {\n type: Object,\n default: () => ({\n children: 'children',\n key: 'id',\n title: 'title'\n })\n }\n },\n data() {\n return {\n NodeCheckedKeys: [],\n NodeSelectedKeys: [],\n NodeExpandKeys: [],\n NodeKey: [],\n NodeActions: null,\n MenuDropdown: false,\n NodeActionsStyle: {}\n };\n },\n mounted() {\n this.onInitTree();\n },\n watch: {\n treeData(newValue, oldValue) {\n this.onInitTree(!oldValue.length);\n },\n treeExpandKeys(newValue) {\n this.NodeExpandKeys = newValue;\n }\n },\n methods: {\n TreeNodeRender(node, nodeIndex, parentNode) {\n const h = this.$createElement;\n const {\n replaceFields,\n NodeActions,\n treeActions,\n NodeActionsStyle,\n NodeExpandKeys,\n NodeKey,\n treeActionsPlus,\n createTreeNode,\n handleMouseLeave,\n handleOperateClick,\n handlePlusClick\n } = this;\n const key = node[replaceFields.key];\n return h(TreeNode, {\n \"key\": key,\n \"class\": \"DirectoryTreeMenu__Node\",\n \"scopedSlots\": {\n title: props => {\n return h(\"div\", {\n \"class\": \"__Title\"\n }, [node.type != 'input' ? h(\"span\", [node[replaceFields.title]]) : h(ant_design_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"attrs\": {\n \"placeholder\": \"请输入节点名称\",\n \"default-value\": node[replaceFields.title]\n },\n \"on\": {\n ...{\n blur: ({\n target\n }) => createTreeNode(target, node),\n pressEnter: event => event.target.blur(event, true)\n }\n },\n \"ref\": \"inputNodeRef\"\n }), NodeActions && Boolean(treeActions.length) && NodeKey.includes(props.eventKey) && node.type != 'input' && h(\"div\", {\n \"ref\": \"TreeMenuActions\",\n \"class\": \"DirectoryTreeMenu__Actions\",\n \"on\": {\n ...{\n mouseenter: event => event.stopPropagation()\n }\n }\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-more\"\n },\n \"on\": {\n ...{\n click: e => e.preventDefault()\n }\n }\n }), h(\"div\", {\n \"slot\": \"overlay\",\n \"class\": \"DirectoryTreeMenu__Dropdown__Menu\"\n }, [treeActions.map((handle, i) => {\n return h(\"span\", {\n \"key\": i,\n \"on\": {\n ...{\n // this.$emit('handleOperateClick', handle, NodeActions)\n click: () => handleOperateClick(handle, {\n ...node,\n nodeIndex\n }, parentNode)\n }\n }\n }, [h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(_svgIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n \"class\": \"ActionsIcons\",\n \"attrs\": {\n \"icon-class\": \"tree-plus\"\n },\n \"on\": {\n ...{\n click: () => handlePlusClick()\n }\n }\n })])]);\n }\n }\n }, [node[replaceFields.children] && node[replaceFields.children].length && node[replaceFields.children].map((childNode, childNodeIndex) => this.TreeNodeRender(childNode, childNodeIndex, node))]);\n },\n appendTreeNode() {\n this.treeData.push({\n type: 'input',\n append: true,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n },\n createTreeNode({\n value\n }, node) {\n this.$set(node, 'type', 'text');\n this.$emit(`handlePlus${node.append ? 'Add' : 'Update'}`, value, node.append ? node.parentOrgId : node[this.replaceFields.key]);\n const parentNodes = node.parentOrgId ? this.findItemById(this.treeData, node.parentOrgId)[this.replaceFields.children] : this.treeData;\n if (node.append) {\n const i = parentNodes.findIndex(child => child[this.replaceFields.key] == node[this.replaceFields.key]);\n parentNodes.splice(i, 1);\n }\n },\n handleOperateClick(handle, node, parentNode) {\n const key = node[this.replaceFields.key];\n let that = this;\n switch (handle.type) {\n case 'update':\n const updateNode = this.findItemById(this.treeData, key);\n this.$set(updateNode, 'type', 'input');\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'copy':\n // 明天来了优化一下\n const cloneNode = parentNode ? parentNode[this.replaceFields.children] : this.treeData;\n cloneNode.splice(node.nodeIndex + 1, 0, {\n type: 'input',\n append: true,\n parentOrgId: parentNode ? parentNode[this.replaceFields.key] : null,\n [this.replaceFields.key]: new Date().getTime(),\n [this.replaceFields.title]: node[this.replaceFields.title]\n });\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n break;\n case 'delete':\n this.$confirm({\n title: '确定要删除当前节点吗?',\n okText: '确定',\n cancelText: '取消',\n onOk() {\n that.$emit('handleDeleteClick', node);\n console.log('OK');\n },\n onCancel() {\n console.log('Cancel');\n }\n });\n break;\n default:\n this.$emit('handleOperateClick', handle, node);\n break;\n }\n },\n handlePlusClick() {\n const node = this.findItemById(this.treeData, this.NodeActions.id);\n console.log(node, this.NodeActions, '--NodeActions');\n const childNode = node[this.replaceFields.children] ?? [];\n childNode.push({\n type: 'input',\n append: true,\n parentOrgId: this.NodeActions.id,\n [this.replaceFields.key]: new Date().getTime()\n });\n this.NodeExpandKeys.push(this.NodeActions.id);\n node[this.replaceFields.children] = childNode;\n this.$nextTick(() => this.$refs.inputNodeRef.focus());\n console.log(node, '--NodeActions');\n },\n findItemById(treeData, id) {\n for (let i = 0; i < treeData.length; i++) {\n if (treeData[i][this.replaceFields.key] === id) return treeData[i];\n let childNode = treeData[i][this.replaceFields.children];\n if (childNode && childNode.length > 0) {\n const foundItem = this.findItemById(treeData[i][this.replaceFields.children], id);\n if (foundItem) return foundItem;\n }\n }\n },\n onInitTree(treeExpend = true) {\n this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]]);\n this.NodeExpandKeys = this.treeExpandKeys.length && this.treeExpandKeys || treeExpend && (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields) || [];\n },\n onCheck(keys, {}) {\n this.NodeCheckedKeys = keys;\n this.$emit('onCheck', keys);\n },\n onSelect(keys, {\n nativeEvent,\n node\n }) {\n this.NodeSelectedKeys = keys;\n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.$emit('onSelect', keys);\n },\n onExpand(expandedKeys, {\n expanded,\n node\n }) {\n this.NodeExpandKeys = [].concat(expandedKeys);\n console.log(expandedKeys, expanded, node, 'Trigger Expand');\n },\n getIcon(props) {\n const h = this.$createElement;\n const {\n isLeaf,\n expanded\n } = props;\n if (isLeaf) {\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"attrs\": {\n \"type\": expanded ? 'folder-open' : 'folder'\n }\n });\n },\n handleMouseEnter({\n event,\n node\n }) {\n this.NodeActions = {\n id: node._props.eventKey,\n title: node._props.title,\n parentOrgId: node.$parent.eventKey || null\n };\n // this.MenuDropdown = false \n this.NodeKey = [].concat(this.NodeSelectedKeys);\n this.NodeKey.push(node.eventKey);\n // console.log(node, 'handleMouseEnter')\n // 是否加个参数 判断是否处于打开状态\n },\n handleMouseLeave({\n event,\n node\n }) {\n if (this.NodeKey.includes(node.eventKey) && this.NodeSelectedKeys != node.eventKey) {\n const i = this.NodeKey.findIndex(key => key == node.eventKey);\n this.NodeKey.splice(i, 1);\n }\n // this.NodeKey = []\n },\n onDragEnter(node) {\n console.log(node, '--onDragEnter');\n // expandedKeys 需要受控时设置\n // this.expandedKeys = info.expandedKeys\n },\n onDrop(info) {\n const dragKey = info.dragNode.eventKey;\n const dropPos = info.node.pos.split(\"-\");\n // 拖动的位置\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const node = info.node; //目标节点\n const dragNode = info.dragNode; // 拖动节点\n const dropKey = node.eventKey;\n console.log(dragNode, node, '--dropToGap');\n if (dragNode.$parent?.eventKey !== node.$parent?.eventKey || !info.dropToGap) {\n // 阻止跨父级拖拽\n this.$message.warning(\"只能在同级排序\");\n return false;\n }\n const {\n key,\n children\n } = this.replaceFields;\n const loop = (data, eventKey, callback) => {\n data.forEach((node, i, array) => {\n if (node[key] === eventKey) {\n return callback(node, i, array);\n }\n if (node[children]) {\n return loop(node[children], eventKey, callback);\n }\n });\n };\n const data = [...this.treeData];\n let dragObj;\n let dragObjIndex;\n loop(data, dragKey, (node, i, array) => {\n dragObj = node;\n dragObjIndex = i;\n });\n let dropIndex;\n loop(data, dropKey, (node, i, array) => {\n dropIndex = i;\n console.log(node, i, dragObj, dragObjIndex, '--i');\n });\n this.$emit('onDrop', {\n [key]: dragObj[key],\n originalIndex: dragObjIndex,\n presentIndex: dropPosition === -1 ? dropIndex : dropIndex + 1\n });\n }\n },\n render() {\n const h = arguments[0];\n const {\n $attrs,\n treePlus,\n treeData,\n NodeCheckedKeys,\n NodeSelectedKeys,\n NodeExpandKeys,\n onCheck,\n onSelect,\n onExpand,\n handleMouseEnter,\n handleMouseLeave,\n onDragEnter,\n onDrop,\n TreeNodeRender,\n appendTreeNode,\n replaceFields\n } = this;\n return h(\"div\", {\n \"class\": \"DirectoryTreeMenu\"\n }, [$attrs.menuTitle && h(\"div\", {\n \"class\": \"treeDirectory\"\n }, [h(\"span\", [$attrs.menuTitle || '目录']), treePlus && h(ant_design_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"attrs\": {\n \"icon\": \"plus\",\n \"size\": \"small\"\n },\n \"on\": {\n ...{\n click: appendTreeNode\n }\n }\n })]), h(DirectoryTree, {\n \"attrs\": {\n \"draggable\": true,\n \"default-expand-all\": true,\n \"checkedKeys\": NodeCheckedKeys,\n \"selectedKeys\": NodeSelectedKeys,\n \"expandedKeys\": NodeExpandKeys,\n \"expandAction\": \"dblclick\",\n ...$attrs,\n \"tree-node-filter-prop\": \"title\"\n },\n \"class\": \"DirectoryTreeMenu__Tree\",\n \"on\": {\n ...{\n check: onCheck,\n select: onSelect,\n expand: onExpand,\n mouseenter: handleMouseEnter,\n mouseleave: handleMouseLeave,\n dragenter: onDragEnter,\n drop: onDrop\n }\n }\n }, [treeData.map((node, nodeIndex) => TreeNodeRender(node, nodeIndex))])]);\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/Directory.js?");
3383
3383
 
3384
3384
  /***/ }),
3385
3385
 
@@ -3412,7 +3412,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3412
3412
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3413
3413
 
3414
3414
  "use strict";
3415
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* 混入样式 */\\n/* 布局( 纯为了不想多写一行 */\\n/* 正方体盒子 */\\n/* 滚动条样式 */\\n/* 文字换行省略(默认1行)*/\\n/* flex布局 */\\n/* flex排版方式 */\\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DirectoryTreeMenu {\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Actions {\\n display: flex;\\n gap: 0 8px;\\n position: relative;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons {\\n cursor: pointer;\\n width: 16px !important;\\n height: 16px !important;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons:focus {\\n outline: none;\\n}\\n.DirectoryTreeMenu .treeDirectory {\\n width: 100%;\\n height: 40px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu .treeDirectory > span {\\n flex: 1;\\n text-align: left;\\n color: #FFFFFF;\\n font-size: 16px;\\n font-weight: 700;\\n position: relative;\\n padding-left: 12px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu .treeDirectory > span::after {\\n width: 4px;\\n height: 12px;\\n left: 0;\\n top: calc((100% - 12px) / 2);\\n content: '';\\n position: absolute;\\n background: #1677FF;\\n border-radius: 2px;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) {\\n margin-right: 12px;\\n line-height: 16px;\\n border-color: #FFFFFF;\\n width: 16px;\\n height: 16px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) i {\\n font-size: 11px;\\n color: #FFFFFF;\\n}\\n.DirectoryTreeMenu__Tree {\\n height: calc(100% - 40px);\\n overflow-y: auto;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-track {\\n border-radius: 0;\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-thumb {\\n border-radius: 0;\\n border-radius: 5px;\\n background-image: -webkit-linear-gradient(270deg, #1890ff 0%, transparent 100%);\\n -webkit-transition: all 0.2s;\\n transition: all 0.2s;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-corner {\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 6px;\\n height: 56px;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 4px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu {\\n width: 140px;\\n height: auto;\\n border-radius: 2px;\\n padding: 12px 0;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span {\\n display: flex;\\n cursor: pointer;\\n align-items: center;\\n font-size: 14px;\\n margin-bottom: 2px;\\n padding: 0 16px;\\n box-sizing: border-box;\\n width: 100%;\\n height: 26px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span:last-child {\\n margin: 0;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span .svg-icon {\\n margin-right: 8px;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper {\\n width: calc(100% - 24px);\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title {\\n display: inline-block;\\n width: calc(100% - 24px);\\n height: 100%;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title {\\n gap: 0 8px;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title > span {\\n white-space: normal;\\n width: calc(100% - 56px);\\n text-overflow: -o-ellipsis-lastline;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1;\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/style/Directory.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use%5B2%5D");
3415
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* 混入样式 */\\n/* 布局( 纯为了不想多写一行 */\\n/* 正方体盒子 */\\n/* 滚动条样式 */\\n/* 文字换行省略(默认1行)*/\\n/* flex布局 */\\n/* flex排版方式 */\\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DirectoryTreeMenu {\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n}\\n.DirectoryTreeMenu__Actions {\\n display: flex;\\n gap: 0 8px;\\n flex-direction: row;\\n position: relative;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons {\\n cursor: pointer;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Actions .ActionsIcons:focus {\\n outline: none;\\n}\\n.DirectoryTreeMenu .treeDirectory {\\n width: 100%;\\n height: 40px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu .treeDirectory > span {\\n flex: 1;\\n color: #fff;\\n text-align: left;\\n font-size: 16px;\\n font-weight: 700;\\n padding-left: 12px;\\n box-sizing: border-box;\\n position: relative;\\n}\\n.DirectoryTreeMenu .treeDirectory > span::after {\\n left: 0;\\n top: calc((100% - 12px) / 2);\\n content: '';\\n position: absolute;\\n background: #1890ff;\\n border-radius: 2px;\\n width: 4px;\\n height: 12px;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) {\\n line-height: 16px;\\n margin-right: 12px;\\n border-color: #fff;\\n width: 16px;\\n height: 16px;\\n display: flex;\\n gap: 0;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n}\\n.DirectoryTreeMenu .treeDirectory :deep(.ant-btn) i {\\n font-size: 12px;\\n color: #fff;\\n}\\n.DirectoryTreeMenu__Tree {\\n height: calc(100% - 40px);\\n overflow-y: auto;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-track {\\n border-radius: 0;\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-thumb {\\n border-radius: 0;\\n border-radius: 5px;\\n background-image: -webkit-linear-gradient(270deg, #1890ff 0%, transparent 100%);\\n -webkit-transition: all 0.2s;\\n transition: all 0.2s;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar-corner {\\n background-color: transparent;\\n}\\n.DirectoryTreeMenu__Tree::-webkit-scrollbar {\\n width: 6px;\\n height: 56px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu {\\n width: 140px;\\n height: auto;\\n padding: 8px 0;\\n box-sizing: border-box;\\n border-radius: 2px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span {\\n display: flex;\\n align-items: center;\\n margin-bottom: 2px;\\n font-size: 14px;\\n padding: 0 16px;\\n box-sizing: border-box;\\n cursor: pointer;\\n width: 100%;\\n height: 26px;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span:last-child {\\n margin: 0;\\n}\\n.DirectoryTreeMenu__Dropdown__Menu span .svg-icon {\\n margin-right: 8px;\\n width: 16px;\\n height: 16px;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper {\\n width: calc(100% - 24px);\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title {\\n display: inline-block;\\n width: calc(100% - 24px);\\n height: 100%;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n gap: 0 8px;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-start;\\n}\\n.DirectoryTreeMenu__Node .ant-tree-node-content-wrapper .ant-tree-title .__Title > span {\\n white-space: normal;\\n width: calc(100% - 56px);\\n text-overflow: -o-ellipsis-lastline;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1;\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://mui/./plugins/lib/tree/style/Directory.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use%5B2%5D");
3416
3416
 
3417
3417
  /***/ }),
3418
3418
 
@@ -382,11 +382,14 @@ export default {
382
382
  replaceFields
383
383
  } = this
384
384
  return (
385
- <div class="DirectoryTreeMenu">
386
- <div class="treeDirectory">
387
- <span>{$attrs.menuTitle || '目录'}</span>
388
- {treePlus && <Button icon="plus" size="small" {...{ on: { click: appendTreeNode } }} />}
389
- </div>
385
+ <div class="DirectoryTreeMenu">
386
+ {
387
+ $attrs.menuTitle &&
388
+ <div class="treeDirectory">
389
+ <span>{$attrs.menuTitle || '目录'}</span>
390
+ {treePlus && <Button icon="plus" size="small" {...{ on: { click: appendTreeNode } }} />}
391
+ </div>
392
+ }
390
393
  <DirectoryTree
391
394
  draggable
392
395
  class="DirectoryTreeMenu__Tree"
@@ -4,17 +4,16 @@
4
4
 
5
5
  .DirectoryTreeMenu {
6
6
  height: 100%;
7
- padding: 16px;
7
+ padding: @padding-md;
8
8
  box-sizing: border-box;
9
9
 
10
10
  &__Actions {
11
- display: flex;
12
- gap: 0 8px;
11
+ .flex-layout(@flexGap: 0 @padding-xs);
13
12
  position: relative;
14
13
 
15
14
  .ActionsIcons {
16
15
  cursor: pointer;
17
- .layout( 16px, 16px ) !important;
16
+ .square(16px);
18
17
 
19
18
  &:focus {
20
19
  outline: none;
@@ -28,37 +27,35 @@
28
27
 
29
28
  & > span {
30
29
  flex: 1;
30
+ color: @white;
31
31
  text-align: left;
32
- color: #FFFFFF;
33
- font-size: 16px;
32
+ font-size: @font-size-lg;
34
33
  font-weight: 700;
35
-
36
- position: relative;
37
- padding-left: 12px;
34
+ padding-left: @padding-sm;
38
35
  box-sizing: border-box;
36
+ position: relative;
39
37
 
40
38
  &::after {
41
- width: 4px;
42
- height: 12px;
43
39
  left: 0;
44
40
  top: calc((100% - 12px) / 2);
45
41
  content: '';
46
42
  position: absolute;
47
- background: #1677FF;
48
- border-radius: 2px;
43
+ background: @primary-color;
44
+ border-radius: @border-radius-sm;
45
+ .layout(4px, 12px);
49
46
  }
50
47
  }
51
48
 
52
49
  :deep(.ant-btn) {
53
- margin-right: 12px;
54
50
  line-height: 16px;
55
- border-color: #FFFFFF;
56
- .layout( 16px, 16px );
51
+ margin-right: @padding-sm;
52
+ border-color: @white;
53
+ .square(16px);
57
54
  .flex-mixins();
58
55
 
59
56
  i {
60
- font-size: 11px;
61
- color: #FFFFFF;
57
+ font-size: @font-size-sm;
58
+ color: @white;
62
59
  }
63
60
  }
64
61
  }
@@ -66,30 +63,25 @@
66
63
  &__Tree {
67
64
  height: calc(100% - 40px);
68
65
  overflow-y: auto;
69
-
70
66
  .scrollbarStyle();
71
- &::-webkit-scrollbar {
72
- width: 4px;
73
- }
74
67
  }
75
68
  }
76
69
 
77
70
  .DirectoryTreeMenu__Dropdown {
78
71
  &__Menu {
79
72
  .layout( 140px, auto );
80
- border-radius: 2px;
81
-
82
- padding: 12px 0;
73
+ padding: @padding-xs 0;
83
74
  box-sizing: border-box;
75
+ border-radius: @border-radius-sm;
84
76
 
85
77
  span {
86
78
  display: flex;
87
- cursor: pointer;
88
79
  align-items: center;
89
- font-size: 14px;
90
80
  margin-bottom: 2px;
91
- padding: 0 16px;
81
+ font-size: @font-size-base;
82
+ padding: 0 @padding-md;
92
83
  box-sizing: border-box;
84
+ cursor: pointer;
93
85
  .layout( 100%, 26px );
94
86
 
95
87
  &:last-child {
@@ -97,17 +89,9 @@
97
89
  }
98
90
 
99
91
  .svg-icon {
100
- margin-right: 8px;
101
- .layout( 16px, 16px );
102
- }
103
-
104
- // &:hover {
105
- // color: @sub-color;
106
- // background: @fill-color-fade1;
107
- // .svg-icon {
108
- // color: @sub-color;
109
- // }
110
- // }
92
+ margin-right: @padding-xs;
93
+ .square(16px);
94
+ }
111
95
  }
112
96
  }
113
97
  }
@@ -121,9 +105,8 @@
121
105
  .layout( calc( 100% - 24px ), 100% );
122
106
 
123
107
  .__Title {
124
- gap: 0 8px;
125
- .layout( 100%, 100% );
126
- .flex-mixins(@justify: flex-start);
108
+ .square(100%);
109
+ .flex-mixins(@justify: flex-start, @gap: 0 @padding-xs);
127
110
 
128
111
  & > span {
129
112
  white-space: normal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-component-gallery",
3
- "version": "1.1.23",
3
+ "version": "1.1.24",
4
4
  "description": "vue-library-ui组件库",
5
5
  "main": "dist/index.umd.js",
6
6
  "files": [
@@ -382,11 +382,14 @@ export default {
382
382
  replaceFields
383
383
  } = this
384
384
  return (
385
- <div class="DirectoryTreeMenu">
386
- <div class="treeDirectory">
387
- <span>{$attrs.menuTitle || '目录'}</span>
388
- {treePlus && <Button icon="plus" size="small" {...{ on: { click: appendTreeNode } }} />}
389
- </div>
385
+ <div class="DirectoryTreeMenu">
386
+ {
387
+ $attrs.menuTitle &&
388
+ <div class="treeDirectory">
389
+ <span>{$attrs.menuTitle || '目录'}</span>
390
+ {treePlus && <Button icon="plus" size="small" {...{ on: { click: appendTreeNode } }} />}
391
+ </div>
392
+ }
390
393
  <DirectoryTree
391
394
  draggable
392
395
  class="DirectoryTreeMenu__Tree"
@@ -4,17 +4,16 @@
4
4
 
5
5
  .DirectoryTreeMenu {
6
6
  height: 100%;
7
- padding: 16px;
7
+ padding: @padding-md;
8
8
  box-sizing: border-box;
9
9
 
10
10
  &__Actions {
11
- display: flex;
12
- gap: 0 8px;
11
+ .flex-layout(@flexGap: 0 @padding-xs);
13
12
  position: relative;
14
13
 
15
14
  .ActionsIcons {
16
15
  cursor: pointer;
17
- .layout( 16px, 16px ) !important;
16
+ .square(16px);
18
17
 
19
18
  &:focus {
20
19
  outline: none;
@@ -28,37 +27,35 @@
28
27
 
29
28
  & > span {
30
29
  flex: 1;
30
+ color: @white;
31
31
  text-align: left;
32
- color: #FFFFFF;
33
- font-size: 16px;
32
+ font-size: @font-size-lg;
34
33
  font-weight: 700;
35
-
36
- position: relative;
37
- padding-left: 12px;
34
+ padding-left: @padding-sm;
38
35
  box-sizing: border-box;
36
+ position: relative;
39
37
 
40
38
  &::after {
41
- width: 4px;
42
- height: 12px;
43
39
  left: 0;
44
40
  top: calc((100% - 12px) / 2);
45
41
  content: '';
46
42
  position: absolute;
47
- background: #1677FF;
48
- border-radius: 2px;
43
+ background: @primary-color;
44
+ border-radius: @border-radius-sm;
45
+ .layout(4px, 12px);
49
46
  }
50
47
  }
51
48
 
52
49
  :deep(.ant-btn) {
53
- margin-right: 12px;
54
50
  line-height: 16px;
55
- border-color: #FFFFFF;
56
- .layout( 16px, 16px );
51
+ margin-right: @padding-sm;
52
+ border-color: @white;
53
+ .square(16px);
57
54
  .flex-mixins();
58
55
 
59
56
  i {
60
- font-size: 11px;
61
- color: #FFFFFF;
57
+ font-size: @font-size-sm;
58
+ color: @white;
62
59
  }
63
60
  }
64
61
  }
@@ -66,30 +63,25 @@
66
63
  &__Tree {
67
64
  height: calc(100% - 40px);
68
65
  overflow-y: auto;
69
-
70
66
  .scrollbarStyle();
71
- &::-webkit-scrollbar {
72
- width: 4px;
73
- }
74
67
  }
75
68
  }
76
69
 
77
70
  .DirectoryTreeMenu__Dropdown {
78
71
  &__Menu {
79
72
  .layout( 140px, auto );
80
- border-radius: 2px;
81
-
82
- padding: 12px 0;
73
+ padding: @padding-xs 0;
83
74
  box-sizing: border-box;
75
+ border-radius: @border-radius-sm;
84
76
 
85
77
  span {
86
78
  display: flex;
87
- cursor: pointer;
88
79
  align-items: center;
89
- font-size: 14px;
90
80
  margin-bottom: 2px;
91
- padding: 0 16px;
81
+ font-size: @font-size-base;
82
+ padding: 0 @padding-md;
92
83
  box-sizing: border-box;
84
+ cursor: pointer;
93
85
  .layout( 100%, 26px );
94
86
 
95
87
  &:last-child {
@@ -97,17 +89,9 @@
97
89
  }
98
90
 
99
91
  .svg-icon {
100
- margin-right: 8px;
101
- .layout( 16px, 16px );
102
- }
103
-
104
- // &:hover {
105
- // color: @sub-color;
106
- // background: @fill-color-fade1;
107
- // .svg-icon {
108
- // color: @sub-color;
109
- // }
110
- // }
92
+ margin-right: @padding-xs;
93
+ .square(16px);
94
+ }
111
95
  }
112
96
  }
113
97
  }
@@ -121,9 +105,8 @@
121
105
  .layout( calc( 100% - 24px ), 100% );
122
106
 
123
107
  .__Title {
124
- gap: 0 8px;
125
- .layout( 100%, 100% );
126
- .flex-mixins(@justify: flex-start);
108
+ .square(100%);
109
+ .flex-mixins(@justify: flex-start, @gap: 0 @padding-xs);
127
110
 
128
111
  & > span {
129
112
  white-space: normal;
@@ -252,4 +252,20 @@ export function handleEnvURL(url, port) {
252
252
  }
253
253
  return newUrl
254
254
 
255
+ }
256
+
257
+ /**
258
+ * object转化为formData
259
+ * @object 转化对象
260
+ */
261
+ export function setFormData(object) {
262
+
263
+ const formData = new FormData()
264
+
265
+ for (const key in object) {
266
+ formData.append(key, object[key])
267
+ }
268
+
269
+ return formData
270
+
255
271
  }
package/utils/Filter.js CHANGED
@@ -252,4 +252,20 @@ export function handleEnvURL(url, port) {
252
252
  }
253
253
  return newUrl
254
254
 
255
+ }
256
+
257
+ /**
258
+ * object转化为formData
259
+ * @object 转化对象
260
+ */
261
+ export function setFormData(object) {
262
+
263
+ const formData = new FormData()
264
+
265
+ for (const key in object) {
266
+ formData.append(key, object[key])
267
+ }
268
+
269
+ return formData
270
+
255
271
  }