web-component-gallery 1.1.44 → 1.1.45
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 +3 -3
- package/dist/dateTime.umd.js +1 -81
- package/dist/index.umd.js +3 -3
- package/dist/tree.umd.js +1 -1
- package/lib/iframe/index.jsx +1 -1
- package/lib/tree/Directory.js +1 -1
- package/package.json +1 -1
- package/plugins/lib/iframe/index.jsx +1 -1
- package/plugins/utils/Filter.js +0 -22
- package/plugins/utils/Tree.js +17 -5
- package/utils/Filter.js +0 -22
- package/utils/Tree.js +126 -113
package/dist/amap.umd.js
CHANGED
|
@@ -9163,7 +9163,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_
|
|
|
9163
9163
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9164
9164
|
|
|
9165
9165
|
"use strict";
|
|
9166
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__ = __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 ant_design_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/spin/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\n// const IconFont = Icon.createFromIconfontCN({\n// scriptUrl: '//at.alicdn.com/t/c/font_4641025_trbtf28ob8g.js'\n// })\n\n// Spin.setDefaultIndicator({\n// indicator: {\n// render() {\n// return <IconFont type=\"icon-loading\" />\n// }\n// }\n// })\n\nant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setDefaultIndicator({\n indicator: {\n render() {\n const h = arguments[0];\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"type\": \"loading\"\n }\n });\n }\n }\n});\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n /** 页面加载状态 */\n compSpinning: true,\n componentAdd: true,\n /** 弹窗加载状态 */\n modalSpinning: true,\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 }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.modalSpinning,\n \"tip\": \"加载中...\"\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)])]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.compSpinning,\n \"tip\": \"加载中...\"\n }\n }, [IframeComponents]), ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n componentsArr: {\n handler(newVal, oldVal) {\n this.componentAdd = newVal.length > oldVal.length;\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_3__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && (this.componentAdd = true, this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n }));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && (this.componentAdd = false, this.postCompMessage(params));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.componentAdd = false;\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 {\n ...activeModal,\n ...(data.attrs ?? {})\n };\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 activeComp = components.find(componentsItem => activeKey === componentsItem[checkedKey]);\n const refKey = activeComp[linkurlKey];\n const isModal = refKey.includes('?type=modal');\n const spinningKey = isModal ? 'modalSpinning' : 'compSpinning';\n const iframeRef = () => {\n const _self = this;\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n const iframeOptions = {\n type,\n params: {\n data,\n name: activeKey,\n title: isModal ? activeComp.title : activeComp.meta
|
|
9166
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__ = __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 ant_design_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/spin/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\n// const IconFont = Icon.createFromIconfontCN({\n// scriptUrl: '//at.alicdn.com/t/c/font_4641025_trbtf28ob8g.js'\n// })\n\n// Spin.setDefaultIndicator({\n// indicator: {\n// render() {\n// return <IconFont type=\"icon-loading\" />\n// }\n// }\n// })\n\nant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setDefaultIndicator({\n indicator: {\n render() {\n const h = arguments[0];\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"type\": \"loading\"\n }\n });\n }\n }\n});\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n /** 页面加载状态 */\n compSpinning: true,\n componentAdd: true,\n /** 弹窗加载状态 */\n modalSpinning: true,\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 }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.modalSpinning,\n \"tip\": \"加载中...\"\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)])]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.compSpinning,\n \"tip\": \"加载中...\"\n }\n }, [IframeComponents]), ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n componentsArr: {\n handler(newVal, oldVal) {\n this.componentAdd = newVal.length > oldVal.length;\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_3__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && (this.componentAdd = true, this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n }));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && (this.componentAdd = false, this.postCompMessage(params));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.componentAdd = false;\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 {\n ...activeModal,\n ...(data.attrs ?? {})\n };\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 activeComp = components.find(componentsItem => activeKey === componentsItem[checkedKey]);\n const refKey = activeComp[linkurlKey];\n const isModal = refKey.includes('?type=modal');\n const spinningKey = isModal ? 'modalSpinning' : 'compSpinning';\n const iframeRef = () => {\n const _self = this;\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n const iframeOptions = {\n type,\n params: {\n data,\n name: activeKey,\n title: isModal ? activeComp.title : activeComp.meta?.title,\n routeQuery: postMessage\n }\n };\n this.componentAdd ? (this[spinningKey] = true, iframe.onload = function () {\n _self[spinningKey] = false;\n iframeWin.postMessage(iframeOptions, '*');\n }) : iframeWin.postMessage(iframeOptions, '*');\n };\n if (isModal) {\n const timer = setTimeout(() => {\n iframeRef();\n clearTimeout(timer);\n }, 0);\n return;\n }\n iframeRef();\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_3__[\"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?");
|
|
9167
9167
|
|
|
9168
9168
|
/***/ }),
|
|
9169
9169
|
|
|
@@ -9338,7 +9338,7 @@ eval("__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modul
|
|
|
9338
9338
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9339
9339
|
|
|
9340
9340
|
"use strict";
|
|
9341
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */
|
|
9341
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
|
|
9342
9342
|
|
|
9343
9343
|
/***/ }),
|
|
9344
9344
|
|
|
@@ -9349,7 +9349,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
9349
9349
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9350
9350
|
|
|
9351
9351
|
"use strict";
|
|
9352
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ filterTreeById: function() { return /* binding */ filterTreeById; },\n/* harmony export */ findCheckNodes: function() { return /* binding */ findCheckNodes; },\n/* harmony export */ getAllParents: function() { return /* binding */ getAllParents; },\n/* harmony export */
|
|
9352
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ filterTreeById: function() { return /* binding */ filterTreeById; },\n/* harmony export */ findCheckNodes: function() { return /* binding */ findCheckNodes; },\n/* harmony export */ getAllParents: function() { return /* binding */ getAllParents; },\n/* harmony export */ getTreeKeys: function() { return /* binding */ getTreeKeys; },\n/* harmony export */ joinTreeMessage: function() { return /* binding */ joinTreeMessage; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.set.difference.v2.js */ \"./node_modules/core-js/modules/esnext.set.difference.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.set.intersection.v2.js */ \"./node_modules/core-js/modules/esnext.set.intersection.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.set.is-disjoint-from.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.set.is-subset-of.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-subset-of.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.set.is-superset-of.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-superset-of.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/esnext.set.symmetric-difference.v2.js */ \"./node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/esnext.set.union.v2.js */ \"./node_modules/core-js/modules/esnext.set.union.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n/** 默认TreeData字段 */\nconst defaultReplaceFields = {\n key: 'id',\n title: 'title',\n children: 'children'\n};\n\n/**\r\n * 提取树形结构中的键值集合\r\n * @param {Array} nodes 树形数据\r\n * @param {boolean} [parent=false] 是否只提取父节点\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n * @param {string} [replaceFields.children='children'] 子节点字段名\r\n * @param {string} [replaceFields.key='id'] 键名字段名\r\n * @returns {Array} 提取的键值数组\r\n */\nfunction getTreeKeys(nodes = [], parent = false, {\n children = 'children',\n key = 'id'\n} = {}) {\n const keys = [];\n function traverse(node) {\n const shouldCollect = !parent || node[children]?.length;\n if (shouldCollect) keys.push(node[key]);\n if (node[children]?.length) {\n node[children].forEach(traverse);\n }\n }\n nodes.forEach(traverse);\n return keys;\n}\n\n/**\r\n * 查找树形结构中符合条件的节点\r\n * @param {Array} dataSource 树形数据源\r\n * @param {Array} nodeIds 需要查找的节点ID集合\r\n * @param {string} [searchField='id'] 节点ID字段名\r\n * @param {string} [hasField='children'] 子节点字段名\r\n * @returns {Array} 符合条件的节点数组\r\n */\nfunction findCheckNodes(dataSource = [], nodeIds = [], searchField = 'id', hasField = 'children') {\n const checkNodes = [];\n const idSet = new Set(nodeIds);\n function traverse(node) {\n if (idSet.has(node[searchField]) && !(hasField in node)) {\n checkNodes.push(node);\n return true;\n }\n if (Array.isArray(node[hasField])) {\n return node[hasField].some(traverse);\n }\n return false;\n }\n dataSource.some(traverse);\n return checkNodes;\n}\n\n/**\r\n * 拼接树节点指定字段为字符串\r\n * @param {Array} nodes 树形数据\r\n * @param {Array} fields 需要拼接的字段数组\r\n * @param {string} replaceField 拼接后存储的字段名\r\n * @param {string} childNode 子节点字段名\r\n * @returns {Array} 处理后的树形数据\r\n */\nfunction joinTreeMessage(nodes = [], fields = [], replaceField = 'message', childNode = 'children') {\n if (!Array.isArray(nodes) || !Array.isArray(fields)) return nodes;\n const processNode = node => {\n node[replaceField] = fields.filter(field => node[field]).map(field => node[field]).join(' ');\n if (Array.isArray(node[childNode])) {\n node[childNode].forEach(processNode);\n }\n };\n nodes.forEach(processNode);\n return nodes;\n}\n\n/**\r\n * 获取树节点对应数据\r\n * @param {Array} tree 树形数据 \r\n * @param {string|number} key 目标节点Key\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n */\nfunction filterTreeById(tree, key, {\n children = 'children',\n key: idKey = 'id'\n} = {}) {\n for (const node of tree) {\n if (node[idKey] === key) return [node];\n if (node[children]?.length) {\n const result = filterTreeById(node[children], key, {\n children,\n key: idKey\n });\n if (result.length) return result;\n }\n }\n return [];\n}\n\n/**\r\n * 获取树节点所有父级路径\r\n * @param {Array} tree 树形数据 \r\n * @param {string|number} nodeId 目标节点ID\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n * @param {boolean} [returnObjects=false] 是否返回完整对象\r\n */\nfunction getAllParents(tree, nodeId, {\n children = 'children',\n key = 'id'\n} = {}, returnObjects = false) {\n if (!tree?.length) return [];\n\n // 创建节点映射表提升查找性能\n const nodeMap = new Map();\n const buildMap = (nodes, parentId) => {\n nodes.forEach(node => {\n // 使用WeakMap存储parentId避免污染原对象\n const metaInfo = new WeakMap();\n metaInfo.set(node, {\n parentId\n });\n nodeMap.set(node[key], {\n node,\n metaInfo\n });\n if (node[children]?.length) buildMap(node[children], node[key]);\n });\n };\n buildMap(tree);\n\n // 回溯构建路径\n const path = [];\n let current = nodeMap.get(nodeId);\n while (current) {\n if (returnObjects) {\n // 直接返回原对象\n path.unshift(current.node);\n } else {\n path.unshift(current.node[key]);\n }\n current = current.metaInfo.get(current.node).parentId ? nodeMap.get(current.metaInfo.get(current.node).parentId) : null;\n }\n\n // 对象集合则返回父级\n return returnObjects ? path[0] : path;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Tree.js?");
|
|
9353
9353
|
|
|
9354
9354
|
/***/ }),
|
|
9355
9355
|
|
package/dist/dateTime.umd.js
CHANGED
|
@@ -66,7 +66,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
|
|
|
66
66
|
\*********************************/
|
|
67
67
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
68
68
|
|
|
69
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */
|
|
69
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
|
|
70
70
|
|
|
71
71
|
/***/ }),
|
|
72
72
|
|
|
@@ -230,16 +230,6 @@ eval("\n\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurr
|
|
|
230
230
|
|
|
231
231
|
/***/ }),
|
|
232
232
|
|
|
233
|
-
/***/ "./node_modules/core-js/internals/classof.js":
|
|
234
|
-
/*!***************************************************!*\
|
|
235
|
-
!*** ./node_modules/core-js/internals/classof.js ***!
|
|
236
|
-
\***************************************************/
|
|
237
|
-
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
238
|
-
|
|
239
|
-
eval("\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js/internals/to-string-tag-support.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () {\n return arguments;\n}()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) {/* empty */}\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n//# sourceURL=webpack://mui/./node_modules/core-js/internals/classof.js?");
|
|
240
|
-
|
|
241
|
-
/***/ }),
|
|
242
|
-
|
|
243
233
|
/***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
|
|
244
234
|
/*!***********************************************************************!*\
|
|
245
235
|
!*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
|
|
@@ -270,16 +260,6 @@ eval("\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerabl
|
|
|
270
260
|
|
|
271
261
|
/***/ }),
|
|
272
262
|
|
|
273
|
-
/***/ "./node_modules/core-js/internals/define-built-in-accessor.js":
|
|
274
|
-
/*!********************************************************************!*\
|
|
275
|
-
!*** ./node_modules/core-js/internals/define-built-in-accessor.js ***!
|
|
276
|
-
\********************************************************************/
|
|
277
|
-
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
278
|
-
|
|
279
|
-
eval("\n\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \"./node_modules/core-js/internals/make-built-in.js\");\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, {\n getter: true\n });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, {\n setter: true\n });\n return defineProperty.f(target, name, descriptor);\n};\n\n//# sourceURL=webpack://mui/./node_modules/core-js/internals/define-built-in-accessor.js?");
|
|
280
|
-
|
|
281
|
-
/***/ }),
|
|
282
|
-
|
|
283
263
|
/***/ "./node_modules/core-js/internals/define-built-in.js":
|
|
284
264
|
/*!***********************************************************!*\
|
|
285
265
|
!*** ./node_modules/core-js/internals/define-built-in.js ***!
|
|
@@ -820,26 +800,6 @@ eval("\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */
|
|
|
820
800
|
|
|
821
801
|
/***/ }),
|
|
822
802
|
|
|
823
|
-
/***/ "./node_modules/core-js/internals/to-string-tag-support.js":
|
|
824
|
-
/*!*****************************************************************!*\
|
|
825
|
-
!*** ./node_modules/core-js/internals/to-string-tag-support.js ***!
|
|
826
|
-
\*****************************************************************/
|
|
827
|
-
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
828
|
-
|
|
829
|
-
eval("\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\ntest[TO_STRING_TAG] = 'z';\nmodule.exports = String(test) === '[object z]';\n\n//# sourceURL=webpack://mui/./node_modules/core-js/internals/to-string-tag-support.js?");
|
|
830
|
-
|
|
831
|
-
/***/ }),
|
|
832
|
-
|
|
833
|
-
/***/ "./node_modules/core-js/internals/to-string.js":
|
|
834
|
-
/*!*****************************************************!*\
|
|
835
|
-
!*** ./node_modules/core-js/internals/to-string.js ***!
|
|
836
|
-
\*****************************************************/
|
|
837
|
-
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
838
|
-
|
|
839
|
-
eval("\n\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar $String = String;\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n//# sourceURL=webpack://mui/./node_modules/core-js/internals/to-string.js?");
|
|
840
|
-
|
|
841
|
-
/***/ }),
|
|
842
|
-
|
|
843
803
|
/***/ "./node_modules/core-js/internals/try-to-string.js":
|
|
844
804
|
/*!*********************************************************!*\
|
|
845
805
|
!*** ./node_modules/core-js/internals/try-to-string.js ***!
|
|
@@ -880,16 +840,6 @@ eval("\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */
|
|
|
880
840
|
|
|
881
841
|
/***/ }),
|
|
882
842
|
|
|
883
|
-
/***/ "./node_modules/core-js/internals/validate-arguments-length.js":
|
|
884
|
-
/*!*********************************************************************!*\
|
|
885
|
-
!*** ./node_modules/core-js/internals/validate-arguments-length.js ***!
|
|
886
|
-
\*********************************************************************/
|
|
887
|
-
/***/ (function(module) {
|
|
888
|
-
|
|
889
|
-
eval("\n\nvar $TypeError = TypeError;\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n\n//# sourceURL=webpack://mui/./node_modules/core-js/internals/validate-arguments-length.js?");
|
|
890
|
-
|
|
891
|
-
/***/ }),
|
|
892
|
-
|
|
893
843
|
/***/ "./node_modules/core-js/internals/weak-map-basic-detection.js":
|
|
894
844
|
/*!********************************************************************!*\
|
|
895
845
|
!*** ./node_modules/core-js/internals/weak-map-basic-detection.js ***!
|
|
@@ -918,36 +868,6 @@ eval("\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_m
|
|
|
918
868
|
|
|
919
869
|
eval("\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ \"./node_modules/core-js/internals/array-set-length.js\");\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({\n length: 0x100000000\n }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', {\n writable: false\n }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({\n target: 'Array',\n proto: true,\n arity: 1,\n forced: FORCED\n}, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n\n//# sourceURL=webpack://mui/./node_modules/core-js/modules/es.array.push.js?");
|
|
920
870
|
|
|
921
|
-
/***/ }),
|
|
922
|
-
|
|
923
|
-
/***/ "./node_modules/core-js/modules/web.url-search-params.delete.js":
|
|
924
|
-
/*!**********************************************************************!*\
|
|
925
|
-
!*** ./node_modules/core-js/modules/web.url-search-params.delete.js ***!
|
|
926
|
-
\**********************************************************************/
|
|
927
|
-
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
928
|
-
|
|
929
|
-
eval("\n\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) {\n // also validates `this`\n push(entries, {\n key: k,\n value: v\n });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, {\n enumerable: true,\n unsafe: true\n });\n}\n\n//# sourceURL=webpack://mui/./node_modules/core-js/modules/web.url-search-params.delete.js?");
|
|
930
|
-
|
|
931
|
-
/***/ }),
|
|
932
|
-
|
|
933
|
-
/***/ "./node_modules/core-js/modules/web.url-search-params.has.js":
|
|
934
|
-
/*!*******************************************************************!*\
|
|
935
|
-
!*** ./node_modules/core-js/modules/web.url-search-params.has.js ***!
|
|
936
|
-
\*******************************************************************/
|
|
937
|
-
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
938
|
-
|
|
939
|
-
eval("\n\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n }\n return false;\n }, {\n enumerable: true,\n unsafe: true\n });\n}\n\n//# sourceURL=webpack://mui/./node_modules/core-js/modules/web.url-search-params.has.js?");
|
|
940
|
-
|
|
941
|
-
/***/ }),
|
|
942
|
-
|
|
943
|
-
/***/ "./node_modules/core-js/modules/web.url-search-params.size.js":
|
|
944
|
-
/*!********************************************************************!*\
|
|
945
|
-
!*** ./node_modules/core-js/modules/web.url-search-params.size.js ***!
|
|
946
|
-
\********************************************************************/
|
|
947
|
-
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
948
|
-
|
|
949
|
-
eval("\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () {\n count++;\n });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n//# sourceURL=webpack://mui/./node_modules/core-js/modules/web.url-search-params.size.js?");
|
|
950
|
-
|
|
951
871
|
/***/ })
|
|
952
872
|
|
|
953
873
|
/******/ });
|
package/dist/index.umd.js
CHANGED
|
@@ -9163,7 +9163,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_
|
|
|
9163
9163
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9164
9164
|
|
|
9165
9165
|
"use strict";
|
|
9166
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__ = __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 ant_design_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/spin/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\n// const IconFont = Icon.createFromIconfontCN({\n// scriptUrl: '//at.alicdn.com/t/c/font_4641025_trbtf28ob8g.js'\n// })\n\n// Spin.setDefaultIndicator({\n// indicator: {\n// render() {\n// return <IconFont type=\"icon-loading\" />\n// }\n// }\n// })\n\nant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setDefaultIndicator({\n indicator: {\n render() {\n const h = arguments[0];\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"type\": \"loading\"\n }\n });\n }\n }\n});\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n /** 页面加载状态 */\n compSpinning: true,\n componentAdd: true,\n /** 弹窗加载状态 */\n modalSpinning: true,\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 }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.modalSpinning,\n \"tip\": \"加载中...\"\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)])]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.compSpinning,\n \"tip\": \"加载中...\"\n }\n }, [IframeComponents]), ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n componentsArr: {\n handler(newVal, oldVal) {\n this.componentAdd = newVal.length > oldVal.length;\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_3__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && (this.componentAdd = true, this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n }));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && (this.componentAdd = false, this.postCompMessage(params));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.componentAdd = false;\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 {\n ...activeModal,\n ...(data.attrs ?? {})\n };\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 activeComp = components.find(componentsItem => activeKey === componentsItem[checkedKey]);\n const refKey = activeComp[linkurlKey];\n const isModal = refKey.includes('?type=modal');\n const spinningKey = isModal ? 'modalSpinning' : 'compSpinning';\n const iframeRef = () => {\n const _self = this;\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n const iframeOptions = {\n type,\n params: {\n data,\n name: activeKey,\n title: isModal ? activeComp.title : activeComp.meta
|
|
9166
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__ = __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 ant_design_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/spin/index.js\");\n/* harmony import */ var ant_design_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./events.js */ \"./plugins/lib/iframe/events.js\");\n/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.less */ \"./plugins/lib/iframe/index.less\");\n\n\n\n\n// const IconFont = Icon.createFromIconfontCN({\n// scriptUrl: '//at.alicdn.com/t/c/font_4641025_trbtf28ob8g.js'\n// })\n\n// Spin.setDefaultIndicator({\n// indicator: {\n// render() {\n// return <IconFont type=\"icon-loading\" />\n// }\n// }\n// })\n\nant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setDefaultIndicator({\n indicator: {\n render() {\n const h = arguments[0];\n return h(ant_design_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n \"attrs\": {\n \"type\": \"loading\"\n }\n });\n }\n }\n});\n\n\nconst IframeContainerProps = {\n activeKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string,\n checkedKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('name'),\n linkurlKey: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.def('linkUrl'),\n operatesArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n componentsArr: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].array,\n postMessage: ant_design_vue_es_util_vue_types__WEBPACK_IMPORTED_MODULE_5__[\"default\"].object\n};\nconst IframeContainer = {\n name: 'IframeComp',\n props: IframeContainerProps,\n data() {\n return {\n /** 页面加载状态 */\n compSpinning: true,\n componentAdd: true,\n /** 弹窗加载状态 */\n modalSpinning: true,\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 }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.modalSpinning,\n \"tip\": \"加载中...\"\n }\n }, [this.getIframeComponent(modalComponents[modalKey], true)])]);\n });\n return h(\"div\", {\n \"class\": \"ant-pro-grid-content-page\"\n }, [h(ant_design_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"attrs\": {\n \"spinning\": this.compSpinning,\n \"tip\": \"加载中...\"\n }\n }, [IframeComponents]), ModalOperates]);\n },\n watch: {\n activeKey(newVal) {\n this.modalComponents = {};\n },\n componentsArr: {\n handler(newVal, oldVal) {\n this.componentAdd = newVal.length > oldVal.length;\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_3__[\"default\"].$on('modalOpen', ({\n name,\n params\n }) => {\n const activeModal = this.switchModalHandle(name, params);\n activeModal && (this.componentAdd = true, this.$set(this.modalComponents, name, {\n mode: params.mode,\n visible: true,\n ...activeModal\n }));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalClose', ({\n name,\n params\n }) => {\n this.closeModalHandle(name);\n params && (this.componentAdd = false, this.postCompMessage(params));\n });\n _events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].$on('modalGoBack', ({\n name,\n params\n }, closeModal) => {\n this.componentAdd = false;\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 {\n ...activeModal,\n ...(data.attrs ?? {})\n };\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 activeComp = components.find(componentsItem => activeKey === componentsItem[checkedKey]);\n const refKey = activeComp[linkurlKey];\n const isModal = refKey.includes('?type=modal');\n const spinningKey = isModal ? 'modalSpinning' : 'compSpinning';\n const iframeRef = () => {\n const _self = this;\n const iframe = this.$refs[refKey];\n const iframeWin = this.$refs[refKey]?.contentWindow;\n const iframeOptions = {\n type,\n params: {\n data,\n name: activeKey,\n title: isModal ? activeComp.title : activeComp.meta?.title,\n routeQuery: postMessage\n }\n };\n this.componentAdd ? (this[spinningKey] = true, iframe.onload = function () {\n _self[spinningKey] = false;\n iframeWin.postMessage(iframeOptions, '*');\n }) : iframeWin.postMessage(iframeOptions, '*');\n };\n if (isModal) {\n const timer = setTimeout(() => {\n iframeRef();\n clearTimeout(timer);\n }, 0);\n return;\n }\n iframeRef();\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_3__[\"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?");
|
|
9167
9167
|
|
|
9168
9168
|
/***/ }),
|
|
9169
9169
|
|
|
@@ -9338,7 +9338,7 @@ eval("__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modul
|
|
|
9338
9338
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9339
9339
|
|
|
9340
9340
|
"use strict";
|
|
9341
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */
|
|
9341
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
|
|
9342
9342
|
|
|
9343
9343
|
/***/ }),
|
|
9344
9344
|
|
|
@@ -9349,7 +9349,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
9349
9349
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9350
9350
|
|
|
9351
9351
|
"use strict";
|
|
9352
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ filterTreeById: function() { return /* binding */ filterTreeById; },\n/* harmony export */ findCheckNodes: function() { return /* binding */ findCheckNodes; },\n/* harmony export */ getAllParents: function() { return /* binding */ getAllParents; },\n/* harmony export */
|
|
9352
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ filterTreeById: function() { return /* binding */ filterTreeById; },\n/* harmony export */ findCheckNodes: function() { return /* binding */ findCheckNodes; },\n/* harmony export */ getAllParents: function() { return /* binding */ getAllParents; },\n/* harmony export */ getTreeKeys: function() { return /* binding */ getTreeKeys; },\n/* harmony export */ joinTreeMessage: function() { return /* binding */ joinTreeMessage; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.set.difference.v2.js */ \"./node_modules/core-js/modules/esnext.set.difference.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.set.intersection.v2.js */ \"./node_modules/core-js/modules/esnext.set.intersection.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.set.is-disjoint-from.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.set.is-subset-of.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-subset-of.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.set.is-superset-of.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-superset-of.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/esnext.set.symmetric-difference.v2.js */ \"./node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/esnext.set.union.v2.js */ \"./node_modules/core-js/modules/esnext.set.union.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n/** 默认TreeData字段 */\nconst defaultReplaceFields = {\n key: 'id',\n title: 'title',\n children: 'children'\n};\n\n/**\r\n * 提取树形结构中的键值集合\r\n * @param {Array} nodes 树形数据\r\n * @param {boolean} [parent=false] 是否只提取父节点\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n * @param {string} [replaceFields.children='children'] 子节点字段名\r\n * @param {string} [replaceFields.key='id'] 键名字段名\r\n * @returns {Array} 提取的键值数组\r\n */\nfunction getTreeKeys(nodes = [], parent = false, {\n children = 'children',\n key = 'id'\n} = {}) {\n const keys = [];\n function traverse(node) {\n const shouldCollect = !parent || node[children]?.length;\n if (shouldCollect) keys.push(node[key]);\n if (node[children]?.length) {\n node[children].forEach(traverse);\n }\n }\n nodes.forEach(traverse);\n return keys;\n}\n\n/**\r\n * 查找树形结构中符合条件的节点\r\n * @param {Array} dataSource 树形数据源\r\n * @param {Array} nodeIds 需要查找的节点ID集合\r\n * @param {string} [searchField='id'] 节点ID字段名\r\n * @param {string} [hasField='children'] 子节点字段名\r\n * @returns {Array} 符合条件的节点数组\r\n */\nfunction findCheckNodes(dataSource = [], nodeIds = [], searchField = 'id', hasField = 'children') {\n const checkNodes = [];\n const idSet = new Set(nodeIds);\n function traverse(node) {\n if (idSet.has(node[searchField]) && !(hasField in node)) {\n checkNodes.push(node);\n return true;\n }\n if (Array.isArray(node[hasField])) {\n return node[hasField].some(traverse);\n }\n return false;\n }\n dataSource.some(traverse);\n return checkNodes;\n}\n\n/**\r\n * 拼接树节点指定字段为字符串\r\n * @param {Array} nodes 树形数据\r\n * @param {Array} fields 需要拼接的字段数组\r\n * @param {string} replaceField 拼接后存储的字段名\r\n * @param {string} childNode 子节点字段名\r\n * @returns {Array} 处理后的树形数据\r\n */\nfunction joinTreeMessage(nodes = [], fields = [], replaceField = 'message', childNode = 'children') {\n if (!Array.isArray(nodes) || !Array.isArray(fields)) return nodes;\n const processNode = node => {\n node[replaceField] = fields.filter(field => node[field]).map(field => node[field]).join(' ');\n if (Array.isArray(node[childNode])) {\n node[childNode].forEach(processNode);\n }\n };\n nodes.forEach(processNode);\n return nodes;\n}\n\n/**\r\n * 获取树节点对应数据\r\n * @param {Array} tree 树形数据 \r\n * @param {string|number} key 目标节点Key\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n */\nfunction filterTreeById(tree, key, {\n children = 'children',\n key: idKey = 'id'\n} = {}) {\n for (const node of tree) {\n if (node[idKey] === key) return [node];\n if (node[children]?.length) {\n const result = filterTreeById(node[children], key, {\n children,\n key: idKey\n });\n if (result.length) return result;\n }\n }\n return [];\n}\n\n/**\r\n * 获取树节点所有父级路径\r\n * @param {Array} tree 树形数据 \r\n * @param {string|number} nodeId 目标节点ID\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n * @param {boolean} [returnObjects=false] 是否返回完整对象\r\n */\nfunction getAllParents(tree, nodeId, {\n children = 'children',\n key = 'id'\n} = {}, returnObjects = false) {\n if (!tree?.length) return [];\n\n // 创建节点映射表提升查找性能\n const nodeMap = new Map();\n const buildMap = (nodes, parentId) => {\n nodes.forEach(node => {\n // 使用WeakMap存储parentId避免污染原对象\n const metaInfo = new WeakMap();\n metaInfo.set(node, {\n parentId\n });\n nodeMap.set(node[key], {\n node,\n metaInfo\n });\n if (node[children]?.length) buildMap(node[children], node[key]);\n });\n };\n buildMap(tree);\n\n // 回溯构建路径\n const path = [];\n let current = nodeMap.get(nodeId);\n while (current) {\n if (returnObjects) {\n // 直接返回原对象\n path.unshift(current.node);\n } else {\n path.unshift(current.node[key]);\n }\n current = current.metaInfo.get(current.node).parentId ? nodeMap.get(current.metaInfo.get(current.node).parentId) : null;\n }\n\n // 对象集合则返回父级\n return returnObjects ? path[0] : path;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Tree.js?");
|
|
9353
9353
|
|
|
9354
9354
|
/***/ }),
|
|
9355
9355
|
|
package/dist/tree.umd.js
CHANGED
|
@@ -3401,7 +3401,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3401
3401
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
3402
3402
|
|
|
3403
3403
|
"use strict";
|
|
3404
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ filterTreeById: function() { return /* binding */ filterTreeById; },\n/* harmony export */ findCheckNodes: function() { return /* binding */ findCheckNodes; },\n/* harmony export */ getAllParents: function() { return /* binding */ getAllParents; },\n/* harmony export */
|
|
3404
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ filterTreeById: function() { return /* binding */ filterTreeById; },\n/* harmony export */ findCheckNodes: function() { return /* binding */ findCheckNodes; },\n/* harmony export */ getAllParents: function() { return /* binding */ getAllParents; },\n/* harmony export */ getTreeKeys: function() { return /* binding */ getTreeKeys; },\n/* harmony export */ joinTreeMessage: function() { return /* binding */ joinTreeMessage; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.set.difference.v2.js */ \"./node_modules/core-js/modules/esnext.set.difference.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.set.intersection.v2.js */ \"./node_modules/core-js/modules/esnext.set.intersection.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.set.is-disjoint-from.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.set.is-subset-of.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-subset-of.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.set.is-superset-of.v2.js */ \"./node_modules/core-js/modules/esnext.set.is-superset-of.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/esnext.set.symmetric-difference.v2.js */ \"./node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/esnext.set.union.v2.js */ \"./node_modules/core-js/modules/esnext.set.union.v2.js\");\n/* harmony import */ var core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_set_union_v2_js__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n/** 默认TreeData字段 */\nconst defaultReplaceFields = {\n key: 'id',\n title: 'title',\n children: 'children'\n};\n\n/**\r\n * 提取树形结构中的键值集合\r\n * @param {Array} nodes 树形数据\r\n * @param {boolean} [parent=false] 是否只提取父节点\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n * @param {string} [replaceFields.children='children'] 子节点字段名\r\n * @param {string} [replaceFields.key='id'] 键名字段名\r\n * @returns {Array} 提取的键值数组\r\n */\nfunction getTreeKeys(nodes = [], parent = false, {\n children = 'children',\n key = 'id'\n} = {}) {\n const keys = [];\n function traverse(node) {\n const shouldCollect = !parent || node[children]?.length;\n if (shouldCollect) keys.push(node[key]);\n if (node[children]?.length) {\n node[children].forEach(traverse);\n }\n }\n nodes.forEach(traverse);\n return keys;\n}\n\n/**\r\n * 查找树形结构中符合条件的节点\r\n * @param {Array} dataSource 树形数据源\r\n * @param {Array} nodeIds 需要查找的节点ID集合\r\n * @param {string} [searchField='id'] 节点ID字段名\r\n * @param {string} [hasField='children'] 子节点字段名\r\n * @returns {Array} 符合条件的节点数组\r\n */\nfunction findCheckNodes(dataSource = [], nodeIds = [], searchField = 'id', hasField = 'children') {\n const checkNodes = [];\n const idSet = new Set(nodeIds);\n function traverse(node) {\n if (idSet.has(node[searchField]) && !(hasField in node)) {\n checkNodes.push(node);\n return true;\n }\n if (Array.isArray(node[hasField])) {\n return node[hasField].some(traverse);\n }\n return false;\n }\n dataSource.some(traverse);\n return checkNodes;\n}\n\n/**\r\n * 拼接树节点指定字段为字符串\r\n * @param {Array} nodes 树形数据\r\n * @param {Array} fields 需要拼接的字段数组\r\n * @param {string} replaceField 拼接后存储的字段名\r\n * @param {string} childNode 子节点字段名\r\n * @returns {Array} 处理后的树形数据\r\n */\nfunction joinTreeMessage(nodes = [], fields = [], replaceField = 'message', childNode = 'children') {\n if (!Array.isArray(nodes) || !Array.isArray(fields)) return nodes;\n const processNode = node => {\n node[replaceField] = fields.filter(field => node[field]).map(field => node[field]).join(' ');\n if (Array.isArray(node[childNode])) {\n node[childNode].forEach(processNode);\n }\n };\n nodes.forEach(processNode);\n return nodes;\n}\n\n/**\r\n * 获取树节点对应数据\r\n * @param {Array} tree 树形数据 \r\n * @param {string|number} key 目标节点Key\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n */\nfunction filterTreeById(tree, key, {\n children = 'children',\n key: idKey = 'id'\n} = {}) {\n for (const node of tree) {\n if (node[idKey] === key) return [node];\n if (node[children]?.length) {\n const result = filterTreeById(node[children], key, {\n children,\n key: idKey\n });\n if (result.length) return result;\n }\n }\n return [];\n}\n\n/**\r\n * 获取树节点所有父级路径\r\n * @param {Array} tree 树形数据 \r\n * @param {string|number} nodeId 目标节点ID\r\n * @param {Object} [replaceFields={}] 字段映射配置\r\n * @param {boolean} [returnObjects=false] 是否返回完整对象\r\n */\nfunction getAllParents(tree, nodeId, {\n children = 'children',\n key = 'id'\n} = {}, returnObjects = false) {\n if (!tree?.length) return [];\n\n // 创建节点映射表提升查找性能\n const nodeMap = new Map();\n const buildMap = (nodes, parentId) => {\n nodes.forEach(node => {\n // 使用WeakMap存储parentId避免污染原对象\n const metaInfo = new WeakMap();\n metaInfo.set(node, {\n parentId\n });\n nodeMap.set(node[key], {\n node,\n metaInfo\n });\n if (node[children]?.length) buildMap(node[children], node[key]);\n });\n };\n buildMap(tree);\n\n // 回溯构建路径\n const path = [];\n let current = nodeMap.get(nodeId);\n while (current) {\n if (returnObjects) {\n // 直接返回原对象\n path.unshift(current.node);\n } else {\n path.unshift(current.node[key]);\n }\n current = current.metaInfo.get(current.node).parentId ? nodeMap.get(current.metaInfo.get(current.node).parentId) : null;\n }\n\n // 对象集合则返回父级\n return returnObjects ? path[0] : path;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Tree.js?");
|
|
3405
3405
|
|
|
3406
3406
|
/***/ }),
|
|
3407
3407
|
|
package/lib/iframe/index.jsx
CHANGED
package/lib/tree/Directory.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { h } from 'vue'
|
|
2
|
-
import { getTreeKey, filterTreeById } from '../../utils/Tree'
|
|
2
|
+
import { getTreeKey, filterTreeById } from '../../utils/Tree'
|
|
3
3
|
import { Tree, Menu, Input, Icon, Button, Dropdown, Popconfirm } from 'ant-design-vue'
|
|
4
4
|
import './style/Directory.less'
|
|
5
5
|
|
package/package.json
CHANGED
package/plugins/utils/Filter.js
CHANGED
|
@@ -232,28 +232,6 @@ export function findNthOccurrence(str, charToFind, n) {
|
|
|
232
232
|
return index === -1 ? -1 : index;
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
/**
|
|
236
|
-
* 先判断是否处于开发环境 后去做开发线上的处理
|
|
237
|
-
* @url 需要根据环境处理的地址
|
|
238
|
-
* @port 开发环境需要链接的端口号
|
|
239
|
-
* 根据端口号来判断是否为开发环境
|
|
240
|
-
*/
|
|
241
|
-
export function handleEnvURL(url, port) {
|
|
242
|
-
|
|
243
|
-
let newUrl
|
|
244
|
-
try {
|
|
245
|
-
newUrl = new URL(url).href
|
|
246
|
-
} catch(error) {
|
|
247
|
-
newUrl = port ?
|
|
248
|
-
location.origin.slice(0, -4) +
|
|
249
|
-
port +
|
|
250
|
-
url.slice(findNthOccurrence(url, '/', 1)) :
|
|
251
|
-
location.origin + url
|
|
252
|
-
}
|
|
253
|
-
return newUrl
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
|
|
257
235
|
/**
|
|
258
236
|
* object转化为formData
|
|
259
237
|
* @object 转化对象
|
package/plugins/utils/Tree.js
CHANGED
|
@@ -142,7 +142,11 @@ export function getAllParents(tree, nodeId, { children = 'children', key = 'id'
|
|
|
142
142
|
const nodeMap = new Map()
|
|
143
143
|
const buildMap = (nodes, parentId) => {
|
|
144
144
|
nodes.forEach(node => {
|
|
145
|
-
|
|
145
|
+
// 使用WeakMap存储parentId避免污染原对象
|
|
146
|
+
const metaInfo = new WeakMap()
|
|
147
|
+
metaInfo.set(node, { parentId })
|
|
148
|
+
nodeMap.set(node[key], { node, metaInfo })
|
|
149
|
+
|
|
146
150
|
if (node[children]?.length) buildMap(node[children], node[key])
|
|
147
151
|
})
|
|
148
152
|
}
|
|
@@ -152,9 +156,17 @@ export function getAllParents(tree, nodeId, { children = 'children', key = 'id'
|
|
|
152
156
|
const path = []
|
|
153
157
|
let current = nodeMap.get(nodeId)
|
|
154
158
|
while (current) {
|
|
155
|
-
|
|
156
|
-
|
|
159
|
+
if (returnObjects) {
|
|
160
|
+
// 直接返回原对象
|
|
161
|
+
path.unshift(current.node)
|
|
162
|
+
} else {
|
|
163
|
+
path.unshift(current.node[key])
|
|
164
|
+
}
|
|
165
|
+
current = current.metaInfo.get(current.node).parentId
|
|
166
|
+
? nodeMap.get(current.metaInfo.get(current.node).parentId)
|
|
167
|
+
: null
|
|
157
168
|
}
|
|
158
|
-
|
|
159
|
-
|
|
169
|
+
|
|
170
|
+
// 对象集合则返回父级
|
|
171
|
+
return returnObjects ? path[0] : path
|
|
160
172
|
}
|
package/utils/Filter.js
CHANGED
|
@@ -232,28 +232,6 @@ export function findNthOccurrence(str, charToFind, n) {
|
|
|
232
232
|
return index === -1 ? -1 : index;
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
/**
|
|
236
|
-
* 先判断是否处于开发环境 后去做开发线上的处理
|
|
237
|
-
* @url 需要根据环境处理的地址
|
|
238
|
-
* @port 开发环境需要链接的端口号
|
|
239
|
-
* 根据端口号来判断是否为开发环境
|
|
240
|
-
*/
|
|
241
|
-
export function handleEnvURL(url, port) {
|
|
242
|
-
|
|
243
|
-
let newUrl
|
|
244
|
-
try {
|
|
245
|
-
newUrl = new URL(url).href
|
|
246
|
-
} catch(error) {
|
|
247
|
-
newUrl = port ?
|
|
248
|
-
location.origin.slice(0, -4) +
|
|
249
|
-
port +
|
|
250
|
-
url.slice(findNthOccurrence(url, '/', 1)) :
|
|
251
|
-
location.origin + url
|
|
252
|
-
}
|
|
253
|
-
return newUrl
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
|
|
257
235
|
/**
|
|
258
236
|
* object转化为formData
|
|
259
237
|
* @object 转化对象
|
package/utils/Tree.js
CHANGED
|
@@ -6,154 +6,167 @@ const defaultReplaceFields = {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
* @param nodes
|
|
11
|
-
* @param parent
|
|
12
|
-
* @param replaceFields
|
|
9
|
+
* 提取树形结构中的键值集合
|
|
10
|
+
* @param {Array} nodes 树形数据
|
|
11
|
+
* @param {boolean} [parent=false] 是否只提取父节点
|
|
12
|
+
* @param {Object} [replaceFields={}] 字段映射配置
|
|
13
|
+
* @param {string} [replaceFields.children='children'] 子节点字段名
|
|
14
|
+
* @param {string} [replaceFields.key='id'] 键名字段名
|
|
15
|
+
* @returns {Array} 提取的键值数组
|
|
13
16
|
*/
|
|
14
|
-
export function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
})
|
|
17
|
+
export function getTreeKeys(
|
|
18
|
+
nodes = [],
|
|
19
|
+
parent = false,
|
|
20
|
+
{ children = 'children', key = 'id' } = {}
|
|
21
|
+
) {
|
|
22
|
+
const keys = []
|
|
23
|
+
|
|
24
|
+
function traverse(node) {
|
|
25
|
+
const shouldCollect = !parent || node[children]?.length
|
|
26
|
+
if (shouldCollect) keys.push(node[key])
|
|
27
|
+
|
|
28
|
+
if (node[children]?.length) {
|
|
29
|
+
node[children].forEach(traverse)
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return filterNodes
|
|
34
|
-
|
|
33
|
+
nodes.forEach(traverse)
|
|
34
|
+
return keys
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
|
|
38
39
|
/**
|
|
39
|
-
*
|
|
40
|
-
* @param {
|
|
41
|
-
* @param {
|
|
42
|
-
* @param {string}
|
|
43
|
-
* @param {string}
|
|
40
|
+
* 查找树形结构中符合条件的节点
|
|
41
|
+
* @param {Array} dataSource 树形数据源
|
|
42
|
+
* @param {Array} nodeIds 需要查找的节点ID集合
|
|
43
|
+
* @param {string} [searchField='id'] 节点ID字段名
|
|
44
|
+
* @param {string} [hasField='children'] 子节点字段名
|
|
45
|
+
* @returns {Array} 符合条件的节点数组
|
|
44
46
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
export function findCheckNodes(
|
|
48
|
+
dataSource = [],
|
|
49
|
+
nodeIds = [],
|
|
50
|
+
searchField = 'id',
|
|
51
|
+
hasField = 'children'
|
|
52
|
+
) {
|
|
53
|
+
const checkNodes = []
|
|
54
|
+
const idSet = new Set(nodeIds)
|
|
55
|
+
|
|
56
|
+
function traverse(node) {
|
|
57
|
+
if (idSet.has(node[searchField]) && !(hasField in node)) {
|
|
52
58
|
checkNodes.push(node)
|
|
53
59
|
return true
|
|
54
60
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
61
|
+
|
|
62
|
+
if (Array.isArray(node[hasField])) {
|
|
63
|
+
return node[hasField].some(traverse)
|
|
64
|
+
}
|
|
65
|
+
|
|
60
66
|
return false
|
|
61
67
|
}
|
|
62
68
|
|
|
63
|
-
|
|
69
|
+
dataSource.some(traverse)
|
|
70
|
+
return checkNodes
|
|
71
|
+
}
|
|
64
72
|
|
|
65
|
-
if (traverse(dataSource[i], nodeIds)) {
|
|
66
|
-
break
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
73
|
|
|
70
|
-
return checkNodes;
|
|
71
|
-
}
|
|
72
74
|
|
|
73
75
|
/**
|
|
74
|
-
*
|
|
75
|
-
* @param nodes
|
|
76
|
-
* @param
|
|
77
|
-
* @param replaceField
|
|
78
|
-
* @param childNode
|
|
76
|
+
* 拼接树节点指定字段为字符串
|
|
77
|
+
* @param {Array} nodes 树形数据
|
|
78
|
+
* @param {Array} fields 需要拼接的字段数组
|
|
79
|
+
* @param {string} replaceField 拼接后存储的字段名
|
|
80
|
+
* @param {string} childNode 子节点字段名
|
|
81
|
+
* @returns {Array} 处理后的树形数据
|
|
79
82
|
*/
|
|
80
|
-
export function joinTreeMessage(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
83
|
+
export function joinTreeMessage(
|
|
84
|
+
nodes = [],
|
|
85
|
+
fields = [],
|
|
86
|
+
replaceField = 'message',
|
|
87
|
+
childNode = 'children'
|
|
88
|
+
) {
|
|
89
|
+
if (!Array.isArray(nodes) || !Array.isArray(fields)) return nodes
|
|
90
|
+
|
|
91
|
+
const processNode = (node) => {
|
|
92
|
+
node[replaceField] = fields
|
|
93
|
+
.filter(field => node[field])
|
|
94
|
+
.map(field => node[field])
|
|
95
|
+
.join(' ')
|
|
96
|
+
|
|
97
|
+
if (Array.isArray(node[childNode])) {
|
|
98
|
+
node[childNode].forEach(processNode)
|
|
99
|
+
}
|
|
95
100
|
}
|
|
96
101
|
|
|
97
|
-
|
|
98
|
-
|
|
102
|
+
nodes.forEach(processNode)
|
|
99
103
|
return nodes
|
|
100
|
-
|
|
101
104
|
}
|
|
102
105
|
|
|
103
106
|
|
|
104
107
|
|
|
105
108
|
/**
|
|
106
|
-
*
|
|
107
|
-
* @param tree
|
|
108
|
-
* @param key
|
|
109
|
-
* @param replaceFields
|
|
110
|
-
* {
|
|
111
|
-
children: 'children', // 查找子级字段
|
|
112
|
-
key: 'id' // key的字段
|
|
113
|
-
}
|
|
109
|
+
* 获取树节点对应数据
|
|
110
|
+
* @param {Array} tree 树形数据
|
|
111
|
+
* @param {string|number} key 目标节点Key
|
|
112
|
+
* @param {Object} [replaceFields={}] 字段映射配置
|
|
114
113
|
*/
|
|
115
|
-
export function filterTreeById(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
114
|
+
export function filterTreeById(
|
|
115
|
+
tree,
|
|
116
|
+
key,
|
|
117
|
+
{ children = 'children', key: idKey = 'id' } = {}
|
|
118
|
+
) {
|
|
119
|
+
for (const node of tree) {
|
|
120
|
+
if (node[idKey] === key) return [node]
|
|
121
|
+
|
|
122
|
+
if (node[children]?.length) {
|
|
123
|
+
const result = filterTreeById(node[children], key, { children, key: idKey })
|
|
124
|
+
if (result.length) return result
|
|
122
125
|
}
|
|
123
|
-
|
|
124
|
-
|
|
126
|
+
}
|
|
127
|
+
return []
|
|
125
128
|
}
|
|
126
129
|
|
|
127
130
|
|
|
128
131
|
/**
|
|
129
|
-
*
|
|
130
|
-
* @param tree
|
|
131
|
-
* @param
|
|
132
|
-
* @param replaceFields
|
|
133
|
-
* {
|
|
134
|
-
children: 'children', // 查找子级字段
|
|
135
|
-
key: 'id' // key的字段
|
|
136
|
-
}
|
|
132
|
+
* 获取树节点所有父级路径
|
|
133
|
+
* @param {Array} tree 树形数据
|
|
134
|
+
* @param {string|number} nodeId 目标节点ID
|
|
135
|
+
* @param {Object} [replaceFields={}] 字段映射配置
|
|
136
|
+
* @param {boolean} [returnObjects=false] 是否返回完整对象
|
|
137
137
|
*/
|
|
138
|
-
export function getAllParents(tree, nodeId,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
138
|
+
export function getAllParents(tree, nodeId, { children = 'children', key = 'id' } = {}, returnObjects = false) {
|
|
139
|
+
if (!tree?.length) return []
|
|
140
|
+
|
|
141
|
+
// 创建节点映射表提升查找性能
|
|
142
|
+
const nodeMap = new Map()
|
|
143
|
+
const buildMap = (nodes, parentId) => {
|
|
144
|
+
nodes.forEach(node => {
|
|
145
|
+
// 使用WeakMap存储parentId避免污染原对象
|
|
146
|
+
const metaInfo = new WeakMap()
|
|
147
|
+
metaInfo.set(node, { parentId })
|
|
148
|
+
nodeMap.set(node[key], { node, metaInfo })
|
|
149
|
+
|
|
150
|
+
if (node[children]?.length) buildMap(node[children], node[key])
|
|
151
|
+
})
|
|
148
152
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
buildMap(tree)
|
|
154
|
+
|
|
155
|
+
// 回溯构建路径
|
|
156
|
+
const path = []
|
|
157
|
+
let current = nodeMap.get(nodeId)
|
|
158
|
+
while (current) {
|
|
159
|
+
if (returnObjects) {
|
|
160
|
+
// 直接返回原对象
|
|
161
|
+
path.unshift(current.node)
|
|
162
|
+
} else {
|
|
163
|
+
path.unshift(current.node[key])
|
|
155
164
|
}
|
|
156
|
-
|
|
165
|
+
current = current.metaInfo.get(current.node).parentId
|
|
166
|
+
? nodeMap.get(current.metaInfo.get(current.node).parentId)
|
|
167
|
+
: null
|
|
157
168
|
}
|
|
158
|
-
|
|
169
|
+
|
|
170
|
+
// 对象集合则返回父级
|
|
171
|
+
return returnObjects ? path[0] : path
|
|
159
172
|
}
|