web-component-gallery 0.1.59 → 0.1.61

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
@@ -8571,7 +8571,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
8571
8571
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8572
8572
 
8573
8573
  "use strict";
8574
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/browse/index.less\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Base64 */ \"./plugins/utils/Base64.js\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst pictureType = [\"gif\", \"jpeg\", \"png\", \"jpg\", \"bmp\", \"tif\", \"svg\", \"psd\", \"raw\", \"WMF\", \"webp\", \"apng\"];\nconst audioType = [\"mp3\", \"wma\", \"flac\", \"aac\", \"mmf\", \"amr\", \"m4a\", \"m4r\", \"ogg\", \"mp2\", \"wav\"];\nconst videoType = [\"avi\", \"flv\", \"mpg\", \"mpeg\", \"mpe\", \"m1v\", \"m2v\", \"mpv2\", \"mp2v\", \"dat\", \"ts\", \"tp\", \"tpr\", \"pva\", \"pss\", \"mp4\", \"m4v\", \"m4p\", \"m4b\", \"3gp\", \"3gpp\", \"3g2\", \"3gp2\", \"ogg\", \"mov\", \"qt\", \"amr\", \"rm\", \"ram\", \"rmvb\", \"rpm\"];\nconst BrowseProps = {\n data: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].array, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].object]).def([])\n};\nconst renderContent = (h, item, https) => {\n const type = item.url.slice(item.url.lastIndexOf('.') + 1).toLowerCase();\n const CustomTag = pictureType.includes(type) && 'img' || audioType.includes(type) && 'audio' || videoType.includes(type) && 'video' || 'iframe';\n const attrs = {\n src: https.FILEURL + item.url\n };\n CustomTag === 'iframe' && (attrs.src = https.KKFILEURL + encodeURIComponent(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__.Base64.encode(attrs.src)));\n return h(CustomTag, {\n \"attrs\": {\n ...attrs\n }\n });\n};\nconst Browse = {\n name: 'Browse',\n props: BrowseProps,\n render(h, content) {\n let {\n data,\n $https\n } = this;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n data = [];\n }\n }\n return h(\"div\", {\n \"class\": \"Browse\"\n }, [data instanceof Array ? data.map(dataItem => renderContent(h, dataItem, $https)) : renderContent(h, data, $https)]);\n }\n};\nBrowse.install = function (Vue) {\n Vue.component('Browse', Browse);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Browse);\n\n//# sourceURL=webpack://mui/./plugins/lib/browse/index.jsx?");
8574
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/browse/index.less\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Base64 */ \"./plugins/utils/Base64.js\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/Utils */ \"./plugins/utils/Utils.js\");\n\n\n\n\nconst pictureType = [\"gif\", \"jpeg\", \"png\", \"jpg\", \"bmp\", \"tif\", \"svg\", \"psd\", \"raw\", \"WMF\", \"webp\", \"apng\"];\nconst audioType = [\"mp3\", \"wma\", \"flac\", \"aac\", \"mmf\", \"amr\", \"m4a\", \"m4r\", \"ogg\", \"mp2\", \"wav\"];\nconst videoType = [\"avi\", \"flv\", \"mpg\", \"mpeg\", \"mpe\", \"m1v\", \"m2v\", \"mpv2\", \"mp2v\", \"dat\", \"ts\", \"tp\", \"tpr\", \"pva\", \"pss\", \"mp4\", \"m4v\", \"m4p\", \"m4b\", \"3gp\", \"3gpp\", \"3g2\", \"3gp2\", \"ogg\", \"mov\", \"qt\", \"amr\", \"rm\", \"ram\", \"rmvb\", \"rpm\"];\nconst BrowseProps = {\n data: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].object]).def([]),\n /** 限制高度 */\n astrictH: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].number])\n};\nconst renderContent = (h, item, https, astrictH) => {\n const type = item.url.slice(item.url.lastIndexOf('.') + 1).toLowerCase();\n const CustomTag = pictureType.includes(type) && 'img' || audioType.includes(type) && 'audio' || videoType.includes(type) && 'video' || 'iframe';\n const attrs = {\n src: https.FILEURL + item.url\n };\n CustomTag === 'iframe' && (attrs.src = https.KKFILEURL + encodeURIComponent(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__.Base64.encode(attrs.src)));\n if (astrictH) {\n const style = (0,_utils_Utils__WEBPACK_IMPORTED_MODULE_2__.getPictureAttrs)(attrs.src, astrictH);\n attrs.style = `width: ${style.width}px; height: ${style.height}px;`;\n }\n return h(CustomTag, {\n \"attrs\": {\n ...attrs\n }\n });\n};\nconst Browse = {\n name: 'Browse',\n props: BrowseProps,\n render(h, content) {\n let {\n data,\n $https,\n astrictH\n } = this;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n data = [];\n }\n }\n return h(\"div\", {\n \"class\": \"Browse\"\n }, [data instanceof Array ? data.map(dataItem => renderContent(h, dataItem, $https, astrictH)) : renderContent(h, data, $https, astrictH)]);\n }\n};\nBrowse.install = function (Vue) {\n Vue.component('Browse', Browse);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Browse);\n\n//# sourceURL=webpack://mui/./plugins/lib/browse/index.jsx?");
8575
8575
 
8576
8576
  /***/ }),
8577
8577
 
@@ -8615,7 +8615,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
8615
8615
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8616
8616
 
8617
8617
  "use strict";
8618
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es/descriptions */ \"./node_modules/ant-design-vue/es/descriptions/index.js\");\n/* harmony import */ var _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../browse/index.jsx */ \"./plugins/lib/browse/index.jsx\");\n/* harmony import */ var _utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Filter.js */ \"./plugins/utils/Filter.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/descriptions/index.less\");\n\n\n\n\nconst {\n Item: DescriptionsItem\n} = ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nconst descDefaultAttrs = {\n size: 'middle',\n bordered: true\n};\nconst DescriptionsProps = {\n title: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].string,\n column: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].number, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object]).def(3),\n descDetails: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object,\n descSettings: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].array,\n descAttrs: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object\n};\nconst renderContent = (h, item, details) => {\n const CustomTag = item.type === 'file' && _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || 'span';\n const data = item.hasOwnProperty('multiProps') ? item.multiProps.map(propsItem => (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[propsItem], 'Array')).flat() : (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[item.props], 'Array');\n const props = {\n data\n };\n return h(CustomTag, {\n \"props\": {\n ...props\n }\n }, [item.customRender && item.customRender(details[item.props], details) || details[item.props] || '暂无']);\n};\nconst DescriptionsList = {\n name: 'Descriptions',\n props: DescriptionsProps,\n render(h, content) {\n const {\n title,\n column,\n descAttrs,\n descDetails,\n descSettings,\n $slots,\n $scopedSlots\n } = this;\n return h(\"div\", {\n \"class\": \"Descriptions\",\n \"ref\": \"Descriptions\"\n }, [h(ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"title\": title,\n \"column\": column,\n ...{\n ...descDefaultAttrs,\n ...descAttrs\n }\n }\n }, [descSettings.map((descItem, key) => {\n return h(DescriptionsItem, {\n \"key\": key,\n \"attrs\": {\n \"span\": descItem.span ?? 1\n }\n }, [h(\"div\", {\n \"slot\": \"label\"\n }, [$slots[`${descItem.props}Lable`] ?? descItem.label]), $scopedSlots[`${descItem.props}`] ? $scopedSlots[`${descItem.props}`](descDetails) : renderContent(h, descItem, descDetails)]);\n })])]);\n },\n mounted() {\n window.addEventListener('resize', this.setDescContentWidth());\n },\n methods: {\n setDescContentWidth() {\n const elementG = this.$refs.Descriptions.querySelectorAll('.ant-descriptions-item-content');\n const width = document.querySelector('.ant-descriptions-row').offsetWidth;\n const labelWidth = document.querySelector('.ant-descriptions-item-label').offsetWidth;\n const {\n column,\n descSettings\n } = this;\n for (let i = 0; i < elementG.length; i++) {\n const contentWidth = (descSettings[i].span ? width * (descSettings[i].span / column) : width / column) - labelWidth + 'px';\n const element = elementG[i];\n element.style = `\n width: ${contentWidth};\n min-width: ${contentWidth};\n max-width: ${contentWidth};\n `;\n }\n }\n }\n};\nDescriptionsList.install = function (Vue) {\n Vue.component('DescriptionsList', DescriptionsList);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (DescriptionsList);\n\n//# sourceURL=webpack://mui/./plugins/lib/descriptions/index.jsx?");
8618
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es/descriptions */ \"./node_modules/ant-design-vue/es/descriptions/index.js\");\n/* harmony import */ var _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../browse/index.jsx */ \"./plugins/lib/browse/index.jsx\");\n/* harmony import */ var _utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Filter.js */ \"./plugins/utils/Filter.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/descriptions/index.less\");\n\n\n\n\nconst {\n Item: DescriptionsItem\n} = ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nconst descDefaultAttrs = {\n size: 'middle',\n bordered: true\n};\nconst DescriptionsProps = {\n title: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].string,\n column: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].number, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object]).def(3),\n descDetails: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object,\n descSettings: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].array,\n descAttrs: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object\n};\nconst renderContent = (h, item, details) => {\n const CustomTag = item.type === 'file' && _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || 'span';\n const data = item.hasOwnProperty('multiProps') ? item.multiProps.map(propsItem => (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[propsItem], 'Array')).flat() : (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[item.props], 'Array');\n const props = {\n data,\n astrictH: 104\n };\n return h(CustomTag, {\n \"props\": {\n ...props\n }\n }, [item.customRender && item.customRender(details[item.props], details) || details[item.props] || '暂无']);\n};\nconst DescriptionsList = {\n name: 'Descriptions',\n props: DescriptionsProps,\n render(h, content) {\n const {\n title,\n column,\n descAttrs,\n descDetails,\n descSettings,\n $slots,\n $scopedSlots\n } = this;\n return h(\"div\", {\n \"class\": \"Descriptions\",\n \"ref\": \"Descriptions\"\n }, [h(ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"title\": title,\n \"column\": column,\n ...{\n ...descDefaultAttrs,\n ...descAttrs\n }\n }\n }, [descSettings.map((descItem, key) => {\n return h(DescriptionsItem, {\n \"key\": key,\n \"attrs\": {\n \"span\": descItem.span ?? 1\n }\n }, [h(\"div\", {\n \"slot\": \"label\"\n }, [$slots[`${descItem.props}Lable`] ?? descItem.label]), $scopedSlots[`${descItem.props}`] ? $scopedSlots[`${descItem.props}`](descDetails) : renderContent(h, descItem, descDetails)]);\n })])]);\n },\n mounted() {\n window.addEventListener('resize', this.setDescContentWidth());\n },\n methods: {\n setDescContentWidth() {\n const elementG = this.$refs.Descriptions.querySelectorAll('.ant-descriptions-item-content');\n const width = document.querySelector('.ant-descriptions-row').offsetWidth;\n const labelWidth = document.querySelector('.ant-descriptions-item-label').offsetWidth;\n const {\n column,\n descSettings\n } = this;\n for (let i = 0; i < elementG.length; i++) {\n const contentWidth = (descSettings[i].span ? width * (descSettings[i].span / column) : width / column) - labelWidth + 'px';\n const element = elementG[i];\n element.style = `\n width: ${contentWidth};\n min-width: ${contentWidth};\n max-width: ${contentWidth};\n `;\n }\n }\n }\n};\nDescriptionsList.install = function (Vue) {\n Vue.component('DescriptionsList', DescriptionsList);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (DescriptionsList);\n\n//# sourceURL=webpack://mui/./plugins/lib/descriptions/index.jsx?");
8619
8619
 
8620
8620
  /***/ }),
8621
8621
 
@@ -8670,7 +8670,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_
8670
8670
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8671
8671
 
8672
8672
  "use strict";
8673
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modal/index.jsx */ \"./plugins/lib/modal/index.jsx\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n modalComponents: {}\n };\n },\n render(h, content) {\n const {\n $props,\n modalComponents\n } = this;\n const {\n activeKey,\n checkedKey,\n componentsArr\n } = $props;\n const IframeComponents = componentsArr.map(componentItem => {\n const isActive = activeKey === componentItem[checkedKey];\n return this.getIframeComponent(componentItem, isActive);\n });\n const modalKeys = Object.keys(modalComponents);\n const ModalOperates = modalKeys.map(modalKey => {\n return h(_modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n \"props\": {\n ...{\n ...modalComponents[modalKey],\n cancelHandle: () => this.closeModalHandle(modalKey)\n }\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [IframeComponents, ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n activeKeyAndParams: {\n handler(newVal, oldVal) {\n this.postCompMessage();\n },\n deep: true\n }\n },\n computed: {\n activeKeyAndParams() {\n const {\n activeKey,\n postMessage,\n componentsArr\n } = this;\n return {\n activeKey,\n postMessage,\n componentsArr\n };\n }\n },\n created() {\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n });\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && this.postCompMessage(params);\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.closeModalHandle(closeModal);\n this.switchModalHandle(name, params);\n });\n },\n mounted() {\n this.postCompMessage();\n },\n methods: {\n postCompMessage(data = {}) {\n const {\n componentsArr,\n activeKey,\n postMessage\n } = this;\n componentsArr.length && this.postIframeMessage(componentsArr, {\n type: 'refreshPage',\n activeKey,\n data\n });\n },\n closeModalHandle(name) {\n this.modalComponents[name].visible = false;\n delete this.modalComponents[name];\n },\n switchModalHandle(name, data) {\n const {\n operatesArr,\n checkedKey\n } = this;\n const activeModal = operatesArr.find(operatesItem => operatesItem[checkedKey] === name);\n activeModal && this.postIframeMessage(operatesArr, {\n type: 'refreshModal',\n activeKey: name,\n data\n });\n return activeModal;\n },\n postIframeMessage(components, iframeConfig) {\n const {\n type,\n activeKey,\n data = {}\n } = iframeConfig;\n this.$nextTick(() => {\n const {\n checkedKey,\n linkurlKey,\n postMessage\n } = this;\n const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])[linkurlKey];\n const timer = setTimeout(() => {\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n iframe.onload = function () {\n iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n };\n iframeWin && iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n clearTimeout(timer);\n }, 60);\n });\n },\n getIframeComponent(componentItem, isActive) {\n const h = this.$createElement;\n const {\n linkurlKey,\n checkedKey\n } = this;\n return h(\"iframe\", {\n \"attrs\": {\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"src\": componentItem[linkurlKey]\n },\n \"ref\": componentItem[linkurlKey],\n \"key\": componentItem[checkedKey],\n \"style\": {\n border: 'none',\n display: isActive ? 'block' : 'none'\n }\n });\n }\n }\n};\nIframeContainer.install = function (Vue) {\n Vue.prototype.$IframeBus = _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n Vue.component('IframePage', IframeContainer);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (IframeContainer);\n\n//# sourceURL=webpack://mui/./plugins/lib/iframe/index.jsx?");
8673
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modal/index.jsx */ \"./plugins/lib/modal/index.jsx\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n modalComponents: {}\n };\n },\n render(h, content) {\n const {\n $props,\n modalComponents\n } = this;\n const {\n activeKey,\n checkedKey,\n componentsArr\n } = $props;\n const IframeComponents = componentsArr.map(componentItem => {\n const isActive = activeKey === componentItem[checkedKey];\n return this.getIframeComponent(componentItem, isActive);\n });\n const modalKeys = Object.keys(modalComponents);\n const ModalOperates = modalKeys.map(modalKey => {\n return h(_modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n \"props\": {\n ...{\n ...modalComponents[modalKey],\n cancelHandle: () => this.closeModalHandle(modalKey)\n }\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [IframeComponents, ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n activeKeyAndParams: {\n handler(newVal, oldVal) {\n this.postCompMessage();\n },\n deep: true\n }\n },\n computed: {\n activeKeyAndParams() {\n const {\n activeKey,\n postMessage,\n componentsArr\n } = this;\n return {\n activeKey,\n postMessage,\n componentsArr\n };\n }\n },\n created() {\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n });\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && this.postCompMessage(params);\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.closeModalHandle(closeModal);\n this.switchModalHandle(name, params);\n });\n },\n mounted() {\n this.postCompMessage();\n },\n methods: {\n postCompMessage(data = {}) {\n const {\n componentsArr,\n activeKey,\n postMessage\n } = this;\n componentsArr.length && this.postIframeMessage(componentsArr, {\n type: 'refreshPage',\n activeKey,\n data\n });\n },\n closeModalHandle(name) {\n this.modalComponents[name].visible = false;\n delete this.modalComponents[name];\n },\n switchModalHandle(name, data) {\n const {\n operatesArr,\n checkedKey\n } = this;\n const activeModal = operatesArr.find(operatesItem => operatesItem[checkedKey] === name);\n activeModal && this.postIframeMessage(operatesArr, {\n type: 'refreshModal',\n activeKey: name,\n data\n });\n return activeModal;\n },\n postIframeMessage(components, iframeConfig) {\n const {\n type,\n activeKey,\n data = {}\n } = iframeConfig;\n this.$nextTick(() => {\n const {\n checkedKey,\n linkurlKey,\n postMessage\n } = this;\n const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])?.[linkurlKey];\n const timer = setTimeout(() => {\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n iframe.onload = function () {\n iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n };\n iframeWin && iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n clearTimeout(timer);\n }, 60);\n });\n },\n getIframeComponent(componentItem, isActive) {\n const h = this.$createElement;\n const {\n linkurlKey,\n checkedKey\n } = this;\n return h(\"iframe\", {\n \"attrs\": {\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"src\": componentItem[linkurlKey]\n },\n \"ref\": componentItem[linkurlKey],\n \"key\": componentItem[checkedKey],\n \"style\": {\n border: 'none',\n display: isActive ? 'block' : 'none'\n }\n });\n }\n }\n};\nIframeContainer.install = function (Vue) {\n Vue.prototype.$IframeBus = _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n Vue.component('IframePage', IframeContainer);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (IframeContainer);\n\n//# sourceURL=webpack://mui/./plugins/lib/iframe/index.jsx?");
8674
8674
 
8675
8675
  /***/ }),
8676
8676
 
@@ -8945,7 +8945,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
8945
8945
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8946
8946
 
8947
8947
  "use strict";
8948
- 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_3__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __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\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\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 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 },\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_4__[\"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_5__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(\"svg-icon\", {\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(\"svg-icon\", {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(\"svg-icon\", {\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 treeExpend && (this.NodeExpandKeys = (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields));\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_6__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"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 NodeSelectedKeys,\n NodeExpandKeys,\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_7__[\"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 \"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 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?");
8948
+ 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_3__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __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\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"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_4__[\"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_5__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(\"svg-icon\", {\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(\"svg-icon\", {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(\"svg-icon\", {\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_6__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"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_7__[\"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?");
8949
8949
 
8950
8950
  /***/ }),
8951
8951
 
@@ -9003,6 +9003,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
9003
9003
 
9004
9004
  /***/ }),
9005
9005
 
9006
+ /***/ "./plugins/utils/Utils.js":
9007
+ /*!********************************!*\
9008
+ !*** ./plugins/utils/Utils.js ***!
9009
+ \********************************/
9010
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9011
+
9012
+ "use strict";
9013
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ downLoadFn: function() { return /* binding */ downLoadFn; },\n/* harmony export */ getPictureAttrs: function() { return /* binding */ getPictureAttrs; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_1__ = __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_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var ant_design_vue_es_message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/message */ \"./node_modules/ant-design-vue/es/message/index.js\");\n\n\n\n\n\n/**\r\n * 下载文件\r\n * response: 文档流\r\n * name: 文件名称\r\n */\n\nfunction downLoadFn(response, name, type = \"application/vnd.ms-excel\") {\n let reader = new FileReader();\n reader.readAsText(response, \"utf-8\");\n reader.onload = function () {\n try {\n ant_design_vue_es_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(JSON.parse(reader.result).msg);\n } catch (err) {\n ant_design_vue_es_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"].success(\"下载中...\");\n let blob = new Blob([response], {\n type\n });\n let url = window.URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = name;\n link.click();\n window.URL.revokeObjectURL(url);\n }\n };\n}\n\n/**\r\n * 获取图片宽高 (如超出限制高度,则根据高度比计算出对应的宽度比)\r\n * url 图片地址\r\n * astrictH 限制高度\r\n */\nfunction getPictureAttrs(url, astrictH) {\n let image = new Image();\n image.src = url;\n function getPictureSize(image) {\n /** 解决图片过大还处于加载中出现的第一次获取宽高为0的情况 */\n if (image.width == 0) return setTimeout(() => getPictureSize(image), 600);\n return {\n width: image.width,\n height: image.height\n };\n }\n let style = getPictureSize(image);\n if (style.height > astrictH) {\n const scale = astrictH / style.height;\n style.width = style.width * scale;\n style.height = astrictH;\n }\n return style;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Utils.js?");
9014
+
9015
+ /***/ }),
9016
+
9006
9017
  /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!./node_modules/ant-design-vue/es/layout/style/index.less":
9007
9018
  /*!*********************************************************************************************************************************************************************!*\
9008
9019
  !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!./node_modules/ant-design-vue/es/layout/style/index.less ***!
package/dist/index.umd.js CHANGED
@@ -8571,7 +8571,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
8571
8571
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8572
8572
 
8573
8573
  "use strict";
8574
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/browse/index.less\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Base64 */ \"./plugins/utils/Base64.js\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst pictureType = [\"gif\", \"jpeg\", \"png\", \"jpg\", \"bmp\", \"tif\", \"svg\", \"psd\", \"raw\", \"WMF\", \"webp\", \"apng\"];\nconst audioType = [\"mp3\", \"wma\", \"flac\", \"aac\", \"mmf\", \"amr\", \"m4a\", \"m4r\", \"ogg\", \"mp2\", \"wav\"];\nconst videoType = [\"avi\", \"flv\", \"mpg\", \"mpeg\", \"mpe\", \"m1v\", \"m2v\", \"mpv2\", \"mp2v\", \"dat\", \"ts\", \"tp\", \"tpr\", \"pva\", \"pss\", \"mp4\", \"m4v\", \"m4p\", \"m4b\", \"3gp\", \"3gpp\", \"3g2\", \"3gp2\", \"ogg\", \"mov\", \"qt\", \"amr\", \"rm\", \"ram\", \"rmvb\", \"rpm\"];\nconst BrowseProps = {\n data: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].array, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_2__[\"default\"].object]).def([])\n};\nconst renderContent = (h, item, https) => {\n const type = item.url.slice(item.url.lastIndexOf('.') + 1).toLowerCase();\n const CustomTag = pictureType.includes(type) && 'img' || audioType.includes(type) && 'audio' || videoType.includes(type) && 'video' || 'iframe';\n const attrs = {\n src: https.FILEURL + item.url\n };\n CustomTag === 'iframe' && (attrs.src = https.KKFILEURL + encodeURIComponent(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__.Base64.encode(attrs.src)));\n return h(CustomTag, {\n \"attrs\": {\n ...attrs\n }\n });\n};\nconst Browse = {\n name: 'Browse',\n props: BrowseProps,\n render(h, content) {\n let {\n data,\n $https\n } = this;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n data = [];\n }\n }\n return h(\"div\", {\n \"class\": \"Browse\"\n }, [data instanceof Array ? data.map(dataItem => renderContent(h, dataItem, $https)) : renderContent(h, data, $https)]);\n }\n};\nBrowse.install = function (Vue) {\n Vue.component('Browse', Browse);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Browse);\n\n//# sourceURL=webpack://mui/./plugins/lib/browse/index.jsx?");
8574
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/browse/index.less\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Base64 */ \"./plugins/utils/Base64.js\");\n/* harmony import */ var _utils_Base64__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/Utils */ \"./plugins/utils/Utils.js\");\n\n\n\n\nconst pictureType = [\"gif\", \"jpeg\", \"png\", \"jpg\", \"bmp\", \"tif\", \"svg\", \"psd\", \"raw\", \"WMF\", \"webp\", \"apng\"];\nconst audioType = [\"mp3\", \"wma\", \"flac\", \"aac\", \"mmf\", \"amr\", \"m4a\", \"m4r\", \"ogg\", \"mp2\", \"wav\"];\nconst videoType = [\"avi\", \"flv\", \"mpg\", \"mpeg\", \"mpe\", \"m1v\", \"m2v\", \"mpv2\", \"mp2v\", \"dat\", \"ts\", \"tp\", \"tpr\", \"pva\", \"pss\", \"mp4\", \"m4v\", \"m4p\", \"m4b\", \"3gp\", \"3gpp\", \"3g2\", \"3gp2\", \"ogg\", \"mov\", \"qt\", \"amr\", \"rm\", \"ram\", \"rmvb\", \"rpm\"];\nconst BrowseProps = {\n data: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].object]).def([]),\n /** 限制高度 */\n astrictH: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].number])\n};\nconst renderContent = (h, item, https, astrictH) => {\n const type = item.url.slice(item.url.lastIndexOf('.') + 1).toLowerCase();\n const CustomTag = pictureType.includes(type) && 'img' || audioType.includes(type) && 'audio' || videoType.includes(type) && 'video' || 'iframe';\n const attrs = {\n src: https.FILEURL + item.url\n };\n CustomTag === 'iframe' && (attrs.src = https.KKFILEURL + encodeURIComponent(_utils_Base64__WEBPACK_IMPORTED_MODULE_1__.Base64.encode(attrs.src)));\n if (astrictH) {\n const style = (0,_utils_Utils__WEBPACK_IMPORTED_MODULE_2__.getPictureAttrs)(attrs.src, astrictH);\n attrs.style = `width: ${style.width}px; height: ${style.height}px;`;\n }\n return h(CustomTag, {\n \"attrs\": {\n ...attrs\n }\n });\n};\nconst Browse = {\n name: 'Browse',\n props: BrowseProps,\n render(h, content) {\n let {\n data,\n $https,\n astrictH\n } = this;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n data = [];\n }\n }\n return h(\"div\", {\n \"class\": \"Browse\"\n }, [data instanceof Array ? data.map(dataItem => renderContent(h, dataItem, $https, astrictH)) : renderContent(h, data, $https, astrictH)]);\n }\n};\nBrowse.install = function (Vue) {\n Vue.component('Browse', Browse);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Browse);\n\n//# sourceURL=webpack://mui/./plugins/lib/browse/index.jsx?");
8575
8575
 
8576
8576
  /***/ }),
8577
8577
 
@@ -8615,7 +8615,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
8615
8615
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8616
8616
 
8617
8617
  "use strict";
8618
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es/descriptions */ \"./node_modules/ant-design-vue/es/descriptions/index.js\");\n/* harmony import */ var _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../browse/index.jsx */ \"./plugins/lib/browse/index.jsx\");\n/* harmony import */ var _utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Filter.js */ \"./plugins/utils/Filter.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/descriptions/index.less\");\n\n\n\n\nconst {\n Item: DescriptionsItem\n} = ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nconst descDefaultAttrs = {\n size: 'middle',\n bordered: true\n};\nconst DescriptionsProps = {\n title: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].string,\n column: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].number, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object]).def(3),\n descDetails: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object,\n descSettings: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].array,\n descAttrs: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object\n};\nconst renderContent = (h, item, details) => {\n const CustomTag = item.type === 'file' && _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || 'span';\n const data = item.hasOwnProperty('multiProps') ? item.multiProps.map(propsItem => (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[propsItem], 'Array')).flat() : (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[item.props], 'Array');\n const props = {\n data\n };\n return h(CustomTag, {\n \"props\": {\n ...props\n }\n }, [item.customRender && item.customRender(details[item.props], details) || details[item.props] || '暂无']);\n};\nconst DescriptionsList = {\n name: 'Descriptions',\n props: DescriptionsProps,\n render(h, content) {\n const {\n title,\n column,\n descAttrs,\n descDetails,\n descSettings,\n $slots,\n $scopedSlots\n } = this;\n return h(\"div\", {\n \"class\": \"Descriptions\",\n \"ref\": \"Descriptions\"\n }, [h(ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"title\": title,\n \"column\": column,\n ...{\n ...descDefaultAttrs,\n ...descAttrs\n }\n }\n }, [descSettings.map((descItem, key) => {\n return h(DescriptionsItem, {\n \"key\": key,\n \"attrs\": {\n \"span\": descItem.span ?? 1\n }\n }, [h(\"div\", {\n \"slot\": \"label\"\n }, [$slots[`${descItem.props}Lable`] ?? descItem.label]), $scopedSlots[`${descItem.props}`] ? $scopedSlots[`${descItem.props}`](descDetails) : renderContent(h, descItem, descDetails)]);\n })])]);\n },\n mounted() {\n window.addEventListener('resize', this.setDescContentWidth());\n },\n methods: {\n setDescContentWidth() {\n const elementG = this.$refs.Descriptions.querySelectorAll('.ant-descriptions-item-content');\n const width = document.querySelector('.ant-descriptions-row').offsetWidth;\n const labelWidth = document.querySelector('.ant-descriptions-item-label').offsetWidth;\n const {\n column,\n descSettings\n } = this;\n for (let i = 0; i < elementG.length; i++) {\n const contentWidth = (descSettings[i].span ? width * (descSettings[i].span / column) : width / column) - labelWidth + 'px';\n const element = elementG[i];\n element.style = `\n width: ${contentWidth};\n min-width: ${contentWidth};\n max-width: ${contentWidth};\n `;\n }\n }\n }\n};\nDescriptionsList.install = function (Vue) {\n Vue.component('DescriptionsList', DescriptionsList);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (DescriptionsList);\n\n//# sourceURL=webpack://mui/./plugins/lib/descriptions/index.jsx?");
8618
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es/descriptions */ \"./node_modules/ant-design-vue/es/descriptions/index.js\");\n/* harmony import */ var _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../browse/index.jsx */ \"./plugins/lib/browse/index.jsx\");\n/* harmony import */ var _utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/Filter.js */ \"./plugins/utils/Filter.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/descriptions/index.less\");\n\n\n\n\nconst {\n Item: DescriptionsItem\n} = ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nconst descDefaultAttrs = {\n size: 'middle',\n bordered: true\n};\nconst DescriptionsProps = {\n title: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].string,\n column: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].oneOfType([ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].number, ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object]).def(3),\n descDetails: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object,\n descSettings: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].array,\n descAttrs: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_4__[\"default\"].object\n};\nconst renderContent = (h, item, details) => {\n const CustomTag = item.type === 'file' && _browse_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || 'span';\n const data = item.hasOwnProperty('multiProps') ? item.multiProps.map(propsItem => (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[propsItem], 'Array')).flat() : (0,_utils_Filter_js__WEBPACK_IMPORTED_MODULE_1__.transferData)(details[item.props], 'Array');\n const props = {\n data,\n astrictH: 104\n };\n return h(CustomTag, {\n \"props\": {\n ...props\n }\n }, [item.customRender && item.customRender(details[item.props], details) || details[item.props] || '暂无']);\n};\nconst DescriptionsList = {\n name: 'Descriptions',\n props: DescriptionsProps,\n render(h, content) {\n const {\n title,\n column,\n descAttrs,\n descDetails,\n descSettings,\n $slots,\n $scopedSlots\n } = this;\n return h(\"div\", {\n \"class\": \"Descriptions\",\n \"ref\": \"Descriptions\"\n }, [h(ant_design_vue_es_descriptions__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"title\": title,\n \"column\": column,\n ...{\n ...descDefaultAttrs,\n ...descAttrs\n }\n }\n }, [descSettings.map((descItem, key) => {\n return h(DescriptionsItem, {\n \"key\": key,\n \"attrs\": {\n \"span\": descItem.span ?? 1\n }\n }, [h(\"div\", {\n \"slot\": \"label\"\n }, [$slots[`${descItem.props}Lable`] ?? descItem.label]), $scopedSlots[`${descItem.props}`] ? $scopedSlots[`${descItem.props}`](descDetails) : renderContent(h, descItem, descDetails)]);\n })])]);\n },\n mounted() {\n window.addEventListener('resize', this.setDescContentWidth());\n },\n methods: {\n setDescContentWidth() {\n const elementG = this.$refs.Descriptions.querySelectorAll('.ant-descriptions-item-content');\n const width = document.querySelector('.ant-descriptions-row').offsetWidth;\n const labelWidth = document.querySelector('.ant-descriptions-item-label').offsetWidth;\n const {\n column,\n descSettings\n } = this;\n for (let i = 0; i < elementG.length; i++) {\n const contentWidth = (descSettings[i].span ? width * (descSettings[i].span / column) : width / column) - labelWidth + 'px';\n const element = elementG[i];\n element.style = `\n width: ${contentWidth};\n min-width: ${contentWidth};\n max-width: ${contentWidth};\n `;\n }\n }\n }\n};\nDescriptionsList.install = function (Vue) {\n Vue.component('DescriptionsList', DescriptionsList);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (DescriptionsList);\n\n//# sourceURL=webpack://mui/./plugins/lib/descriptions/index.jsx?");
8619
8619
 
8620
8620
  /***/ }),
8621
8621
 
@@ -8670,7 +8670,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_
8670
8670
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8671
8671
 
8672
8672
  "use strict";
8673
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modal/index.jsx */ \"./plugins/lib/modal/index.jsx\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n modalComponents: {}\n };\n },\n render(h, content) {\n const {\n $props,\n modalComponents\n } = this;\n const {\n activeKey,\n checkedKey,\n componentsArr\n } = $props;\n const IframeComponents = componentsArr.map(componentItem => {\n const isActive = activeKey === componentItem[checkedKey];\n return this.getIframeComponent(componentItem, isActive);\n });\n const modalKeys = Object.keys(modalComponents);\n const ModalOperates = modalKeys.map(modalKey => {\n return h(_modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n \"props\": {\n ...{\n ...modalComponents[modalKey],\n cancelHandle: () => this.closeModalHandle(modalKey)\n }\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [IframeComponents, ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n activeKeyAndParams: {\n handler(newVal, oldVal) {\n this.postCompMessage();\n },\n deep: true\n }\n },\n computed: {\n activeKeyAndParams() {\n const {\n activeKey,\n postMessage,\n componentsArr\n } = this;\n return {\n activeKey,\n postMessage,\n componentsArr\n };\n }\n },\n created() {\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n });\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && this.postCompMessage(params);\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.closeModalHandle(closeModal);\n this.switchModalHandle(name, params);\n });\n },\n mounted() {\n this.postCompMessage();\n },\n methods: {\n postCompMessage(data = {}) {\n const {\n componentsArr,\n activeKey,\n postMessage\n } = this;\n componentsArr.length && this.postIframeMessage(componentsArr, {\n type: 'refreshPage',\n activeKey,\n data\n });\n },\n closeModalHandle(name) {\n this.modalComponents[name].visible = false;\n delete this.modalComponents[name];\n },\n switchModalHandle(name, data) {\n const {\n operatesArr,\n checkedKey\n } = this;\n const activeModal = operatesArr.find(operatesItem => operatesItem[checkedKey] === name);\n activeModal && this.postIframeMessage(operatesArr, {\n type: 'refreshModal',\n activeKey: name,\n data\n });\n return activeModal;\n },\n postIframeMessage(components, iframeConfig) {\n const {\n type,\n activeKey,\n data = {}\n } = iframeConfig;\n this.$nextTick(() => {\n const {\n checkedKey,\n linkurlKey,\n postMessage\n } = this;\n const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])[linkurlKey];\n const timer = setTimeout(() => {\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n iframe.onload = function () {\n iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n };\n iframeWin && iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n clearTimeout(timer);\n }, 60);\n });\n },\n getIframeComponent(componentItem, isActive) {\n const h = this.$createElement;\n const {\n linkurlKey,\n checkedKey\n } = this;\n return h(\"iframe\", {\n \"attrs\": {\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"src\": componentItem[linkurlKey]\n },\n \"ref\": componentItem[linkurlKey],\n \"key\": componentItem[checkedKey],\n \"style\": {\n border: 'none',\n display: isActive ? 'block' : 'none'\n }\n });\n }\n }\n};\nIframeContainer.install = function (Vue) {\n Vue.prototype.$IframeBus = _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n Vue.component('IframePage', IframeContainer);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (IframeContainer);\n\n//# sourceURL=webpack://mui/./plugins/lib/iframe/index.jsx?");
8673
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/_util/vue-types */ \"./node_modules/ant-design-vue/es/_util/vue-types/index.js\");\n/* harmony import */ var _modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modal/index.jsx */ \"./plugins/lib/modal/index.jsx\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n modalComponents: {}\n };\n },\n render(h, content) {\n const {\n $props,\n modalComponents\n } = this;\n const {\n activeKey,\n checkedKey,\n componentsArr\n } = $props;\n const IframeComponents = componentsArr.map(componentItem => {\n const isActive = activeKey === componentItem[checkedKey];\n return this.getIframeComponent(componentItem, isActive);\n });\n const modalKeys = Object.keys(modalComponents);\n const ModalOperates = modalKeys.map(modalKey => {\n return h(_modal_index_jsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n \"props\": {\n ...{\n ...modalComponents[modalKey],\n cancelHandle: () => this.closeModalHandle(modalKey)\n }\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [IframeComponents, ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n activeKeyAndParams: {\n handler(newVal, oldVal) {\n this.postCompMessage();\n },\n deep: true\n }\n },\n computed: {\n activeKeyAndParams() {\n const {\n activeKey,\n postMessage,\n componentsArr\n } = this;\n return {\n activeKey,\n postMessage,\n componentsArr\n };\n }\n },\n created() {\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n });\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && this.postCompMessage(params);\n });\n _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.closeModalHandle(closeModal);\n this.switchModalHandle(name, params);\n });\n },\n mounted() {\n this.postCompMessage();\n },\n methods: {\n postCompMessage(data = {}) {\n const {\n componentsArr,\n activeKey,\n postMessage\n } = this;\n componentsArr.length && this.postIframeMessage(componentsArr, {\n type: 'refreshPage',\n activeKey,\n data\n });\n },\n closeModalHandle(name) {\n this.modalComponents[name].visible = false;\n delete this.modalComponents[name];\n },\n switchModalHandle(name, data) {\n const {\n operatesArr,\n checkedKey\n } = this;\n const activeModal = operatesArr.find(operatesItem => operatesItem[checkedKey] === name);\n activeModal && this.postIframeMessage(operatesArr, {\n type: 'refreshModal',\n activeKey: name,\n data\n });\n return activeModal;\n },\n postIframeMessage(components, iframeConfig) {\n const {\n type,\n activeKey,\n data = {}\n } = iframeConfig;\n this.$nextTick(() => {\n const {\n checkedKey,\n linkurlKey,\n postMessage\n } = this;\n const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])?.[linkurlKey];\n const timer = setTimeout(() => {\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n iframe.onload = function () {\n iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n };\n iframeWin && iframeWin.postMessage({\n type,\n params: {\n routeQuery: postMessage,\n data,\n name: activeKey\n }\n }, '*');\n clearTimeout(timer);\n }, 60);\n });\n },\n getIframeComponent(componentItem, isActive) {\n const h = this.$createElement;\n const {\n linkurlKey,\n checkedKey\n } = this;\n return h(\"iframe\", {\n \"attrs\": {\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"src\": componentItem[linkurlKey]\n },\n \"ref\": componentItem[linkurlKey],\n \"key\": componentItem[checkedKey],\n \"style\": {\n border: 'none',\n display: isActive ? 'block' : 'none'\n }\n });\n }\n }\n};\nIframeContainer.install = function (Vue) {\n Vue.prototype.$IframeBus = _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n Vue.component('IframePage', IframeContainer);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (IframeContainer);\n\n//# sourceURL=webpack://mui/./plugins/lib/iframe/index.jsx?");
8674
8674
 
8675
8675
  /***/ }),
8676
8676
 
@@ -8945,7 +8945,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
8945
8945
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8946
8946
 
8947
8947
  "use strict";
8948
- 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_3__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __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\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\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 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 },\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_4__[\"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_5__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(\"svg-icon\", {\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(\"svg-icon\", {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(\"svg-icon\", {\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 treeExpend && (this.NodeExpandKeys = (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields));\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_6__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"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 NodeSelectedKeys,\n NodeExpandKeys,\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_7__[\"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 \"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 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?");
8948
+ 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_3__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __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\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"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_4__[\"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_5__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(\"svg-icon\", {\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(\"svg-icon\", {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(\"svg-icon\", {\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_6__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"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_7__[\"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?");
8949
8949
 
8950
8950
  /***/ }),
8951
8951
 
@@ -9003,6 +9003,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
9003
9003
 
9004
9004
  /***/ }),
9005
9005
 
9006
+ /***/ "./plugins/utils/Utils.js":
9007
+ /*!********************************!*\
9008
+ !*** ./plugins/utils/Utils.js ***!
9009
+ \********************************/
9010
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9011
+
9012
+ "use strict";
9013
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ downLoadFn: function() { return /* binding */ downLoadFn; },\n/* harmony export */ getPictureAttrs: function() { return /* binding */ getPictureAttrs; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_1__ = __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_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var ant_design_vue_es_message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ant-design-vue/es/message */ \"./node_modules/ant-design-vue/es/message/index.js\");\n\n\n\n\n\n/**\r\n * 下载文件\r\n * response: 文档流\r\n * name: 文件名称\r\n */\n\nfunction downLoadFn(response, name, type = \"application/vnd.ms-excel\") {\n let reader = new FileReader();\n reader.readAsText(response, \"utf-8\");\n reader.onload = function () {\n try {\n ant_design_vue_es_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(JSON.parse(reader.result).msg);\n } catch (err) {\n ant_design_vue_es_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"].success(\"下载中...\");\n let blob = new Blob([response], {\n type\n });\n let url = window.URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = name;\n link.click();\n window.URL.revokeObjectURL(url);\n }\n };\n}\n\n/**\r\n * 获取图片宽高 (如超出限制高度,则根据高度比计算出对应的宽度比)\r\n * url 图片地址\r\n * astrictH 限制高度\r\n */\nfunction getPictureAttrs(url, astrictH) {\n let image = new Image();\n image.src = url;\n function getPictureSize(image) {\n /** 解决图片过大还处于加载中出现的第一次获取宽高为0的情况 */\n if (image.width == 0) return setTimeout(() => getPictureSize(image), 600);\n return {\n width: image.width,\n height: image.height\n };\n }\n let style = getPictureSize(image);\n if (style.height > astrictH) {\n const scale = astrictH / style.height;\n style.width = style.width * scale;\n style.height = astrictH;\n }\n return style;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Utils.js?");
9014
+
9015
+ /***/ }),
9016
+
9006
9017
  /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!./node_modules/ant-design-vue/es/layout/style/index.less":
9007
9018
  /*!*********************************************************************************************************************************************************************!*\
9008
9019
  !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!./node_modules/ant-design-vue/es/layout/style/index.less ***!
package/dist/tree.umd.js CHANGED
@@ -3346,7 +3346,7 @@ eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source cod
3346
3346
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3347
3347
 
3348
3348
  "use strict";
3349
- 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_3__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __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\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].DirectoryTree;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'DirectoryTreeMenu',\n props: {\n treeData: {\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 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 },\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_4__[\"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_5__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(\"svg-icon\", {\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(\"svg-icon\", {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(\"svg-icon\", {\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 treeExpend && (this.NodeExpandKeys = (0,_utils_Tree__WEBPACK_IMPORTED_MODULE_1__.getTreeKey)(this.treeData, true, this.replaceFields));\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_6__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"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 NodeSelectedKeys,\n NodeExpandKeys,\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_7__[\"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 \"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 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?");
3349
+ 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_3__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/tree/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/input/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/dropdown/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_7__ = __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\n\n\n\n\n\n/* 明天来了做一下@快捷指向 */\n\nconst TreeNode = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"].TreeNode;\nconst DirectoryTree = ant_design_vue__WEBPACK_IMPORTED_MODULE_3__[\"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_4__[\"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_5__[\"default\"], {\n \"attrs\": {\n \"trigger\": ['click'],\n \"overlayClassName\": \"DirectoryTreeMenu__Dropdown\"\n }\n }, [h(\"svg-icon\", {\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(\"svg-icon\", {\n \"attrs\": {\n \"icon-class\": handle.svg\n }\n }), \" \", handle.text]);\n })])]), treeActionsPlus && h(\"svg-icon\", {\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_6__[\"default\"], {\n \"attrs\": {\n \"type\": \"home\"\n }\n });\n }\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_6__[\"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_7__[\"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?");
3350
3350
 
3351
3351
  /***/ }),
3352
3352
 
@@ -4,16 +4,20 @@ import './index.less'
4
4
 
5
5
  import { Base64 } from '../../utils/Base64'
6
6
 
7
+ import { getPictureAttrs } from '../../utils/Utils'
8
+
7
9
  const pictureType = [ "gif", "jpeg", "png", "jpg", "bmp", "tif", "svg", "psd", "raw", "WMF", "webp", "apng" ]
8
10
  const audioType = [ "mp3", "wma", "flac", "aac", "mmf", "amr", "m4a", "m4r", "ogg", "mp2", "wav" ]
9
11
  const videoType = [ "avi", "flv", "mpg", "mpeg", "mpe", "m1v", "m2v", "mpv2", "mp2v", "dat", "ts", "tp", "tpr", "pva", "pss", "mp4", "m4v",
10
12
  "m4p", "m4b", "3gp", "3gpp", "3g2", "3gp2", "ogg", "mov", "qt", "amr", "rm", "ram", "rmvb", "rpm" ]
11
13
 
12
14
  const BrowseProps = {
13
- data: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]).def([])
15
+ data: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]).def([]),
16
+ /** 限制高度 */
17
+ astrictH: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
14
18
  }
15
19
 
16
- const renderContent = (h, item, https) => {
20
+ const renderContent = (h, item, https, astrictH) => {
17
21
 
18
22
  const type = item.url.slice(item.url.lastIndexOf('.') + 1).toLowerCase()
19
23
 
@@ -28,6 +32,11 @@ const renderContent = (h, item, https) => {
28
32
 
29
33
  CustomTag === 'iframe'
30
34
  && ( attrs.src = https.KKFILEURL + encodeURIComponent( Base64.encode( attrs.src ) ) )
35
+
36
+ if(astrictH) {
37
+ const style = getPictureAttrs(attrs.src, astrictH)
38
+ attrs.style = `width: ${style.width}px; height: ${style.height}px;`
39
+ }
31
40
 
32
41
  return (
33
42
  <CustomTag {...{ attrs }} />
@@ -38,7 +47,7 @@ const Browse = {
38
47
  name: 'Browse',
39
48
  props: BrowseProps,
40
49
  render(h, content) {
41
- let { data, $https } = this
50
+ let { data, $https, astrictH } = this
42
51
  if(typeof(data) === 'string') {
43
52
  try {
44
53
  data = JSON.parse(data)
@@ -48,8 +57,8 @@ const Browse = {
48
57
  <div class="Browse">
49
58
  {
50
59
  data instanceof Array ?
51
- data.map( dataItem => renderContent(h, dataItem, $https) ) :
52
- renderContent(h, data, $https)
60
+ data.map( dataItem => renderContent(h, dataItem, $https, astrictH) ) :
61
+ renderContent(h, data, $https, astrictH)
53
62
  }
54
63
  </div>
55
64
  )
@@ -13,7 +13,7 @@ import './index.less'
13
13
  const descDefaultAttrs = {
14
14
  size: 'middle',
15
15
  bordered: true
16
- }
16
+ }
17
17
 
18
18
  const DescriptionsProps = {
19
19
  title: PropTypes.string,
@@ -30,8 +30,9 @@ const renderContent = (h, item, details) => {
30
30
  item.multiProps.map( propsItem => transferData(details[propsItem], 'Array') ).flat() :
31
31
  transferData(details[item.props], 'Array')
32
32
  const props = {
33
- data
34
- }
33
+ data,
34
+ astrictH: 104
35
+ }
35
36
  return (
36
37
  <CustomTag {...{ props }}>
37
38
  { (item.customRender && item.customRender(details[item.props], details) || details[item.props]) || '暂无'}
@@ -128,7 +128,7 @@ const IframeContainer = {
128
128
  const { type, activeKey, data = {} } = iframeConfig
129
129
  this.$nextTick(() => {
130
130
  const { checkedKey, linkurlKey, postMessage } = this
131
- const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])[linkurlKey]
131
+ const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])?.[linkurlKey]
132
132
  const timer = setTimeout( () => {
133
133
  const iframe = this.$refs[refKey]
134
134
  const iframeWin = this.$refs[refKey]?.contentWindow
@@ -13,15 +13,19 @@ export default {
13
13
  props: {
14
14
  treeData: {
15
15
  type: Array,
16
- default: () => []
17
- },
16
+ default: () => ([])
17
+ },
18
+ treeExpandKeys: {
19
+ type: Array,
20
+ default: () => ([])
21
+ },
18
22
  treePlus: {
19
23
  type: Boolean,
20
24
  default: true
21
25
  },
22
26
  treeActions: {
23
27
  type: Array,
24
- default: () => []
28
+ default: () => ([])
25
29
  },
26
30
  treeActionsPlus: {
27
31
  type: Boolean,
@@ -38,6 +42,7 @@ export default {
38
42
  },
39
43
  data() {
40
44
  return {
45
+ NodeCheckedKeys: [],
41
46
  NodeSelectedKeys: [],
42
47
  NodeExpandKeys: [],
43
48
  NodeKey: [],
@@ -52,6 +57,9 @@ export default {
52
57
  watch: {
53
58
  treeData(newValue, oldValue) {
54
59
  this.onInitTree( !oldValue.length )
60
+ },
61
+ treeExpandKeys(newValue) {
62
+ this.NodeExpandKeys = newValue
55
63
  }
56
64
  },
57
65
  methods: {
@@ -249,7 +257,11 @@ export default {
249
257
  },
250
258
  onInitTree(treeExpend = true) {
251
259
  this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]])
252
- treeExpend && ( this.NodeExpandKeys = getTreeKey(this.treeData, true, this.replaceFields) )
260
+ this.NodeExpandKeys = ( this.treeExpandKeys.length && this.treeExpandKeys ) || ( treeExpend && getTreeKey(this.treeData, true, this.replaceFields) ) || []
261
+ },
262
+ onCheck(keys, {}) {
263
+ this.NodeCheckedKeys = keys
264
+ this.$emit('onCheck', keys)
253
265
  },
254
266
  onSelect(keys, { nativeEvent, node }) {
255
267
  this.NodeSelectedKeys = keys
@@ -353,8 +365,10 @@ export default {
353
365
  $attrs,
354
366
  treePlus,
355
367
  treeData,
368
+ NodeCheckedKeys,
356
369
  NodeSelectedKeys,
357
370
  NodeExpandKeys,
371
+ onCheck,
358
372
  onSelect,
359
373
  onExpand,
360
374
  handleMouseEnter,
@@ -375,11 +389,13 @@ export default {
375
389
  draggable
376
390
  class="DirectoryTreeMenu__Tree"
377
391
  default-expand-all
392
+ checkedKeys={NodeCheckedKeys}
378
393
  selectedKeys={NodeSelectedKeys}
379
394
  expandedKeys={NodeExpandKeys}
380
395
  expandAction="dblclick"
381
396
  {...{
382
397
  on: {
398
+ check: onCheck,
383
399
  select: onSelect,
384
400
  expand: onExpand,
385
401
  mouseenter: handleMouseEnter,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-component-gallery",
3
- "version": "0.1.59",
3
+ "version": "0.1.61",
4
4
  "description": "vue-library-ui组件库",
5
5
  "main": "dist/index.umd.js",
6
6
  "files": [
@@ -4,16 +4,20 @@ import './index.less'
4
4
 
5
5
  import { Base64 } from '../../utils/Base64'
6
6
 
7
+ import { getPictureAttrs } from '../../utils/Utils'
8
+
7
9
  const pictureType = [ "gif", "jpeg", "png", "jpg", "bmp", "tif", "svg", "psd", "raw", "WMF", "webp", "apng" ]
8
10
  const audioType = [ "mp3", "wma", "flac", "aac", "mmf", "amr", "m4a", "m4r", "ogg", "mp2", "wav" ]
9
11
  const videoType = [ "avi", "flv", "mpg", "mpeg", "mpe", "m1v", "m2v", "mpv2", "mp2v", "dat", "ts", "tp", "tpr", "pva", "pss", "mp4", "m4v",
10
12
  "m4p", "m4b", "3gp", "3gpp", "3g2", "3gp2", "ogg", "mov", "qt", "amr", "rm", "ram", "rmvb", "rpm" ]
11
13
 
12
14
  const BrowseProps = {
13
- data: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]).def([])
15
+ data: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]).def([]),
16
+ /** 限制高度 */
17
+ astrictH: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
14
18
  }
15
19
 
16
- const renderContent = (h, item, https) => {
20
+ const renderContent = (h, item, https, astrictH) => {
17
21
 
18
22
  const type = item.url.slice(item.url.lastIndexOf('.') + 1).toLowerCase()
19
23
 
@@ -28,6 +32,11 @@ const renderContent = (h, item, https) => {
28
32
 
29
33
  CustomTag === 'iframe'
30
34
  && ( attrs.src = https.KKFILEURL + encodeURIComponent( Base64.encode( attrs.src ) ) )
35
+
36
+ if(astrictH) {
37
+ const style = getPictureAttrs(attrs.src, astrictH)
38
+ attrs.style = `width: ${style.width}px; height: ${style.height}px;`
39
+ }
31
40
 
32
41
  return (
33
42
  <CustomTag {...{ attrs }} />
@@ -38,7 +47,7 @@ const Browse = {
38
47
  name: 'Browse',
39
48
  props: BrowseProps,
40
49
  render(h, content) {
41
- let { data, $https } = this
50
+ let { data, $https, astrictH } = this
42
51
  if(typeof(data) === 'string') {
43
52
  try {
44
53
  data = JSON.parse(data)
@@ -48,8 +57,8 @@ const Browse = {
48
57
  <div class="Browse">
49
58
  {
50
59
  data instanceof Array ?
51
- data.map( dataItem => renderContent(h, dataItem, $https) ) :
52
- renderContent(h, data, $https)
60
+ data.map( dataItem => renderContent(h, dataItem, $https, astrictH) ) :
61
+ renderContent(h, data, $https, astrictH)
53
62
  }
54
63
  </div>
55
64
  )
@@ -13,7 +13,7 @@ import './index.less'
13
13
  const descDefaultAttrs = {
14
14
  size: 'middle',
15
15
  bordered: true
16
- }
16
+ }
17
17
 
18
18
  const DescriptionsProps = {
19
19
  title: PropTypes.string,
@@ -30,8 +30,9 @@ const renderContent = (h, item, details) => {
30
30
  item.multiProps.map( propsItem => transferData(details[propsItem], 'Array') ).flat() :
31
31
  transferData(details[item.props], 'Array')
32
32
  const props = {
33
- data
34
- }
33
+ data,
34
+ astrictH: 104
35
+ }
35
36
  return (
36
37
  <CustomTag {...{ props }}>
37
38
  { (item.customRender && item.customRender(details[item.props], details) || details[item.props]) || '暂无'}
@@ -128,7 +128,7 @@ const IframeContainer = {
128
128
  const { type, activeKey, data = {} } = iframeConfig
129
129
  this.$nextTick(() => {
130
130
  const { checkedKey, linkurlKey, postMessage } = this
131
- const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])[linkurlKey]
131
+ const refKey = components.find(componentsItem => activeKey === componentsItem[checkedKey])?.[linkurlKey]
132
132
  const timer = setTimeout( () => {
133
133
  const iframe = this.$refs[refKey]
134
134
  const iframeWin = this.$refs[refKey]?.contentWindow
@@ -13,15 +13,19 @@ export default {
13
13
  props: {
14
14
  treeData: {
15
15
  type: Array,
16
- default: () => []
17
- },
16
+ default: () => ([])
17
+ },
18
+ treeExpandKeys: {
19
+ type: Array,
20
+ default: () => ([])
21
+ },
18
22
  treePlus: {
19
23
  type: Boolean,
20
24
  default: true
21
25
  },
22
26
  treeActions: {
23
27
  type: Array,
24
- default: () => []
28
+ default: () => ([])
25
29
  },
26
30
  treeActionsPlus: {
27
31
  type: Boolean,
@@ -38,6 +42,7 @@ export default {
38
42
  },
39
43
  data() {
40
44
  return {
45
+ NodeCheckedKeys: [],
41
46
  NodeSelectedKeys: [],
42
47
  NodeExpandKeys: [],
43
48
  NodeKey: [],
@@ -52,6 +57,9 @@ export default {
52
57
  watch: {
53
58
  treeData(newValue, oldValue) {
54
59
  this.onInitTree( !oldValue.length )
60
+ },
61
+ treeExpandKeys(newValue) {
62
+ this.NodeExpandKeys = newValue
55
63
  }
56
64
  },
57
65
  methods: {
@@ -249,7 +257,11 @@ export default {
249
257
  },
250
258
  onInitTree(treeExpend = true) {
251
259
  this.treeData && (this.NodeSelectedKeys = [this.treeData.at(0)?.[this.replaceFields.key]])
252
- treeExpend && ( this.NodeExpandKeys = getTreeKey(this.treeData, true, this.replaceFields) )
260
+ this.NodeExpandKeys = ( this.treeExpandKeys.length && this.treeExpandKeys ) || ( treeExpend && getTreeKey(this.treeData, true, this.replaceFields) ) || []
261
+ },
262
+ onCheck(keys, {}) {
263
+ this.NodeCheckedKeys = keys
264
+ this.$emit('onCheck', keys)
253
265
  },
254
266
  onSelect(keys, { nativeEvent, node }) {
255
267
  this.NodeSelectedKeys = keys
@@ -353,8 +365,10 @@ export default {
353
365
  $attrs,
354
366
  treePlus,
355
367
  treeData,
368
+ NodeCheckedKeys,
356
369
  NodeSelectedKeys,
357
370
  NodeExpandKeys,
371
+ onCheck,
358
372
  onSelect,
359
373
  onExpand,
360
374
  handleMouseEnter,
@@ -375,11 +389,13 @@ export default {
375
389
  draggable
376
390
  class="DirectoryTreeMenu__Tree"
377
391
  default-expand-all
392
+ checkedKeys={NodeCheckedKeys}
378
393
  selectedKeys={NodeSelectedKeys}
379
394
  expandedKeys={NodeExpandKeys}
380
395
  expandAction="dblclick"
381
396
  {...{
382
397
  on: {
398
+ check: onCheck,
383
399
  select: onSelect,
384
400
  expand: onExpand,
385
401
  mouseenter: handleMouseEnter,
@@ -26,4 +26,26 @@ export function downLoadFn( response, name, type = "application/vnd.ms-excel" )
26
26
  window.URL.revokeObjectURL( url )
27
27
  }
28
28
  }
29
+ }
30
+
31
+ /**
32
+ * 获取图片宽高 (如超出限制高度,则根据高度比计算出对应的宽度比)
33
+ * url 图片地址
34
+ * astrictH 限制高度
35
+ */
36
+ export function getPictureAttrs( url, astrictH ) {
37
+ let image = new Image()
38
+ image.src = url
39
+ function getPictureSize(image) {
40
+ /** 解决图片过大还处于加载中出现的第一次获取宽高为0的情况 */
41
+ if(image.width == 0) return setTimeout(() =>getPictureSize(image), 600)
42
+ return { width: image.width, height: image.height }
43
+ }
44
+ let style = getPictureSize(image)
45
+ if(style.height > astrictH) {
46
+ const scale = astrictH / style.height
47
+ style.width = style.width * scale
48
+ style.height = astrictH
49
+ }
50
+ return style
29
51
  }
package/utils/Utils.js CHANGED
@@ -26,4 +26,26 @@ export function downLoadFn( response, name, type = "application/vnd.ms-excel" )
26
26
  window.URL.revokeObjectURL( url )
27
27
  }
28
28
  }
29
+ }
30
+
31
+ /**
32
+ * 获取图片宽高 (如超出限制高度,则根据高度比计算出对应的宽度比)
33
+ * url 图片地址
34
+ * astrictH 限制高度
35
+ */
36
+ export function getPictureAttrs( url, astrictH ) {
37
+ let image = new Image()
38
+ image.src = url
39
+ function getPictureSize(image) {
40
+ /** 解决图片过大还处于加载中出现的第一次获取宽高为0的情况 */
41
+ if(image.width == 0) return setTimeout(() =>getPictureSize(image), 600)
42
+ return { width: image.width, height: image.height }
43
+ }
44
+ let style = getPictureSize(image)
45
+ if(style.height > astrictH) {
46
+ const scale = astrictH / style.height
47
+ style.width = style.width * scale
48
+ style.height = astrictH
49
+ }
50
+ return style
29
51
  }