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 +15 -4
- package/dist/index.umd.js +15 -4
- package/dist/tree.umd.js +1 -1
- package/lib/browse/index.jsx +14 -5
- package/lib/descriptions/index.jsx +4 -3
- package/lib/iframe/index.jsx +1 -1
- package/lib/tree/Directory.js +20 -4
- package/package.json +1 -1
- package/plugins/lib/browse/index.jsx +14 -5
- package/plugins/lib/descriptions/index.jsx +4 -3
- package/plugins/lib/iframe/index.jsx +1 -1
- package/plugins/lib/tree/Directory.js +20 -4
- package/plugins/utils/Utils.js +22 -0
- package/utils/Utils.js +22 -0
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
|
|
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
|
|
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
|
|
package/lib/browse/index.jsx
CHANGED
|
@@ -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]) || '暂无'}
|
package/lib/iframe/index.jsx
CHANGED
|
@@ -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
|
package/lib/tree/Directory.js
CHANGED
|
@@ -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
|
-
|
|
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
|
@@ -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
|
-
|
|
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/plugins/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
|
}
|
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
|
}
|