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 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.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?");
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 */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url).href;\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
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 */ getTreeKey: function() { return /* binding */ getTreeKey; },\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\n/** 默认TreeData字段 */\nconst defaultReplaceFields = {\n key: 'id',\n title: 'title',\n children: 'children'\n};\n\n/**\r\n * 获取树形结构所有key\r\n * @param nodes 数组对象\r\n * @param parent 是否只获取父一层的属性\r\n * @param replaceFields 自定义属性进行查询\r\n */\nfunction getTreeKey(nodes, parent = false, replaceFields = {\n children: 'children',\n key: 'id'\n}) {\n const filterNodes = [];\n function generateList(checkNodes) {\n checkNodes.forEach(e => {\n if (!parent) filterNodes.push(e[replaceFields.key]);\n if (e[replaceFields.children]?.length) {\n if (parent) filterNodes.push(e[replaceFields.key]);\n generateList(e[replaceFields.children], parent, replaceFields);\n }\n });\n }\n generateList(nodes, parent, replaceFields);\n return filterNodes;\n}\n\n/**\r\n * 根据树子节点ID过滤出最后一级child\r\n * @param {array} dataSource 树形结构数据源\r\n * @param {array} nodeIds 需要过滤的数据集\r\n * @param {string} hasField 过滤包含属性(默认为children)\r\n * @param {string} searchField 查找属性(默认为id)\r\n */\n\nfunction findCheckNodes(dataSource, nodeIds, searchField = 'id', hasField = 'children') {\n let checkNodes = [];\n function traverse(node, nodeIds) {\n if (nodeIds.includes(node[searchField]) && !node.hasOwnProperty(hasField)) {\n checkNodes.push(node);\n return true;\n }\n node[hasField] && node[hasField].forEach(childNode => {\n if (traverse(childNode, nodeIds)) return true;\n });\n return false;\n }\n for (let i = 0; i < dataSource.length; i++) {\n if (traverse(dataSource[i], nodeIds)) {\n break;\n }\n }\n return checkNodes;\n}\n\n/**\r\n * 根据要求拼接树结构字段 ( 比如:后端返回name phone,前端显示要求name后拼接phone\r\n * @param nodes 数组对象\r\n * @param fileds 哪些字段需要拼接\r\n * @param replaceField 拼接后赋值字段\r\n * @param childNode 子级结点\r\n */\nfunction joinTreeMessage(nodes, fileds, replaceField, childNode) {\n function generateList(checkNodes) {\n checkNodes.forEach(e => {\n e[replaceField] = '';\n fileds.forEach(filed => e[filed] && (e[replaceField] += ` ${e[filed]}`));\n if (e[childNode]?.length) {\n generateList(e[childNode]);\n }\n });\n }\n generateList(nodes);\n return nodes;\n}\n\n/**\r\n * 根据某个属性查找出整个树结构中匹配相同的数据\r\n * @param tree 数组对象\r\n * @param key 需要查找的属性\r\n * @param replaceFields 树结构对应子级及查找key的属性\r\n * {\r\n children: 'children', // 查找子级字段\r\n key: 'id' // key的字段\r\n }\r\n */\nfunction filterTreeById(tree, key, replaceFields = {\n children: 'children',\n key: 'id'\n}) {\n return tree.reduce((acc, node) => {\n if (node[replaceFields.key] === key) {\n return [...acc, node];\n } else if (node[replaceFields.children] && node[replaceFields.children].length > 0) {\n const filteredChildren = filterTreeById(node[replaceFields.children], key, replaceFields);\n if (filteredChildren.length > 0) return filteredChildren;\n }\n return acc;\n }, []);\n}\n\n/**\r\n * 根据最后一级子id获取全部父id\r\n * @param tree 数组对象\r\n * @param key 需要查找的属性\r\n * @param replaceFields 树结构对应子级及查找key的属性\r\n * {\r\n children: 'children', // 查找子级字段\r\n key: 'id' // key的字段\r\n }\r\n */\nfunction getAllParents(tree, nodeId, replaceFields = {}) {\n const {\n children = 'children',\n key = 'id'\n } = replaceFields;\n const toFlatArray = (tree, parentId) => {\n return tree.reduce((t, _) => {\n const child = _[children];\n return [...t, parentId ? {\n ..._,\n parentId\n } : _, ...(child && child.length ? toFlatArray(child, _[key]) : [])];\n }, []);\n };\n const getIds = flatArray => {\n let ids = [nodeId];\n let child = flatArray.find(_ => _[key] === nodeId);\n while (child && child.parentId) {\n ids = [child.parentId, ...ids];\n child = flatArray.find(_ => _[key] === child.parentId);\n }\n return ids;\n };\n return getIds(toFlatArray(tree));\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Tree.js?");
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
 
@@ -66,7 +66,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ind
66
66
  \*********************************/
67
67
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
68
68
 
69
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ colorRgba: function() { return /* binding */ colorRgba; },\n/* harmony export */ deepClone: function() { return /* binding */ deepClone; },\n/* harmony export */ findNthOccurrence: function() { return /* binding */ findNthOccurrence; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ getDay: function() { return /* binding */ getDay; },\n/* harmony export */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url).href;\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
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.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?");
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 */ handleEnvURL: function() { return /* binding */ handleEnvURL; },\n/* harmony export */ produceDataSeriesEx: function() { return /* binding */ produceDataSeriesEx; },\n/* harmony export */ setFormData: function() { return /* binding */ setFormData; },\n/* harmony export */ transferData: function() { return /* binding */ transferData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\r\n *\r\n * @param {*} day 传入天数\r\n * 距离现在n天前的日期\r\n */\n\nfunction getDay(day) {\n let today = new Date();\n let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;\n today.setTime(targetday_milliseconds); //注意,这行是关键代码\n\n let tYear = today.getFullYear();\n let tMonth = today.getMonth();\n let tDate = today.getDate();\n tMonth = doHandleMonth(tMonth + 1);\n tDate = doHandleMonth(tDate);\n return tYear + \"-\" + tMonth + \"-\" + tDate;\n}\nfunction doHandleMonth(month) {\n let m = month;\n if (month.toString().length == 1) {\n m = \"0\" + month;\n }\n return m;\n}\n\n/**\r\n *\r\n * @param {*} time 传入时间\r\n * @param {*} cFormat 可不传。格式化结构 默认 年-月-日 时:分:秒\r\n * {y}年 {m}月 {d}日 {h}时 {i}分 {s}秒 {a}星期\r\n */\nfunction formatDate(time, cFormat) {\n if (arguments.length === 0 || !time) {\n return null;\n }\n const format = cFormat || \"{y}-{m}-{d} {h}:{i}:{s}\";\n let date;\n if (typeof time === \"object\") {\n date = time;\n } else {\n let times = time;\n times = new Date(time).getTime();\n if (typeof times === \"string\") {\n if (/^[0-9]+$/.test(times)) {\n times = parseInt(times);\n } else {\n times = times.replace(new RegExp(/-/g), \"/\");\n }\n }\n if (typeof times === \"number\" && times.toString().length === 10) {\n times *= 1000;\n }\n date = new Date(times);\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n const timeStr = format.replace(/\\{([ymdhisa])+\\}/g, (result, key) => {\n const value = formatObj[key];\n // Note: getDay() returns 0 on Sunday\n if (key === \"a\") {\n return [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"][value];\n }\n if (!String.prototype.padStart) return padStart(2, value.toString());\n return value.toString().padStart(2, \"0\"); // 返回替换的字符串,padStart用于头部补全\n });\n return timeStr;\n}\n\n/**\r\n * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n * sHex为传入的十六进制的色值\r\n * alpha为rgba的透明度\r\n */\nfunction colorRgba(sHex, alpha) {\n // 十六进制颜色值的正则表达式\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;\n /* 16进制颜色转为RGB格式 */\n let sColor = sHex.toLowerCase();\n if (sColor && reg.test(sColor)) {\n if (sColor.length === 4) {\n var sColorNew = \"#\";\n for (let i = 1; i < 4; i += 1) {\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));\n }\n sColor = sColorNew;\n }\n // 处理六位的颜色值\n const sColorChange = [];\n for (let i = 1; i < 7; i += 2) {\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`));\n }\n // return sColorChange.join(',')\n return `rgba(${sColorChange.join(\",\")},${alpha})`;\n }\n return sColor;\n}\n\n/**\r\n * segment: 分段 7段\r\n * tatalpercent: 百分比 100\r\n * basevalue: 基础值 200\r\n*/\nfunction produceDataSeriesEx(segment, tatal, basevalue) {\n //需要产生segment个随机数,且segment个随机数之和等于tatal\n let arrpercent = new Array(segment).fill(0);\n for (let i = 0; i < tatal; i++) {\n //parseInt接收string,所以需要转一趟\n /**\r\n * 换成生活中的场景,就是一百个苹果分给十个人,我们可以一个一个的取出,随机分给某个人,直到分完\r\n * 在js里面,十个人即是一个长度为十的数组,每次数组随机一个位置加一,执行一百次\r\n */\n var num = parseInt((Math.random() * segment).toString());\n arrpercent[num]++;\n }\n //console.log(arr.length)\n\n let arrvalue = new Array(segment).fill(0);\n for (let i = 0; i < segment; i++) {\n arrvalue[i] = parseInt(arrpercent[i] / 100 * basevalue);\n }\n return [arrpercent, arrvalue];\n}\n\n/**\r\n * 深拷贝\r\n * obj为原始数据\r\n * 适用场景:数组套对象、对象套数组、混合嵌套等\r\n */\nfunction deepClone(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n if (obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = deepClone(item);\n return arr;\n }, []);\n }\n if (obj instanceof Object) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = deepClone(obj[key]);\n return newObj;\n }, {});\n }\n}\n\n/**\r\n * 数据转换\r\n * data为原始数据\r\n * 适用场景:根据要求格式来转换当前属性值 (转化失败则初始化为默认格式\r\n */\nfunction transferData(data, format = 'String') {\n const defaultData = {\n Number: 0,\n Boolean: false,\n String: '',\n Array: [],\n Object: {}\n };\n if (format === 'Array' || format === 'Object') {\n let parsed;\n try {\n parsed = JSON.parse(data);\n } catch (error) {\n parsed = data;\n }\n if (parsed && (parsed instanceof Array || parsed instanceof Object)) {\n return parsed;\n }\n return defaultData[format];\n } else {\n return data ?? defaultData[format];\n }\n}\n\n/**\r\n * 查找字符串\r\n * str为字符串\r\n * charToFind为查找字符\r\n * n为次数\r\n * 适用场景:查找某个字符在字符串当中某一次的位置\r\n */\nfunction findNthOccurrence(str, charToFind, n) {\n let count = 0;\n let index = str.indexOf(charToFind);\n while (count < n && index !== -1) {\n index = str.indexOf(charToFind, index + 1);\n count++;\n }\n return index === -1 ? -1 : index;\n}\n\n/**\r\n * 先判断是否处于开发环境 后去做开发线上的处理\r\n * @url 需要根据环境处理的地址\r\n * @port 开发环境需要链接的端口号\r\n * 根据端口号来判断是否为开发环境\r\n */\nfunction handleEnvURL(url, port) {\n let newUrl;\n try {\n newUrl = new URL(url).href;\n } catch (error) {\n newUrl = port ? location.origin.slice(0, -4) + port + url.slice(findNthOccurrence(url, '/', 1)) : location.origin + url;\n }\n return newUrl;\n}\n\n/**\r\n * object转化为formData\r\n * @object 转化对象\r\n */\nfunction setFormData(object) {\n const formData = new FormData();\n for (const key in object) {\n formData.append(key, object[key]);\n }\n return formData;\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Filter.js?");
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 */ getTreeKey: function() { return /* binding */ getTreeKey; },\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\n/** 默认TreeData字段 */\nconst defaultReplaceFields = {\n key: 'id',\n title: 'title',\n children: 'children'\n};\n\n/**\r\n * 获取树形结构所有key\r\n * @param nodes 数组对象\r\n * @param parent 是否只获取父一层的属性\r\n * @param replaceFields 自定义属性进行查询\r\n */\nfunction getTreeKey(nodes, parent = false, replaceFields = {\n children: 'children',\n key: 'id'\n}) {\n const filterNodes = [];\n function generateList(checkNodes) {\n checkNodes.forEach(e => {\n if (!parent) filterNodes.push(e[replaceFields.key]);\n if (e[replaceFields.children]?.length) {\n if (parent) filterNodes.push(e[replaceFields.key]);\n generateList(e[replaceFields.children], parent, replaceFields);\n }\n });\n }\n generateList(nodes, parent, replaceFields);\n return filterNodes;\n}\n\n/**\r\n * 根据树子节点ID过滤出最后一级child\r\n * @param {array} dataSource 树形结构数据源\r\n * @param {array} nodeIds 需要过滤的数据集\r\n * @param {string} hasField 过滤包含属性(默认为children)\r\n * @param {string} searchField 查找属性(默认为id)\r\n */\n\nfunction findCheckNodes(dataSource, nodeIds, searchField = 'id', hasField = 'children') {\n let checkNodes = [];\n function traverse(node, nodeIds) {\n if (nodeIds.includes(node[searchField]) && !node.hasOwnProperty(hasField)) {\n checkNodes.push(node);\n return true;\n }\n node[hasField] && node[hasField].forEach(childNode => {\n if (traverse(childNode, nodeIds)) return true;\n });\n return false;\n }\n for (let i = 0; i < dataSource.length; i++) {\n if (traverse(dataSource[i], nodeIds)) {\n break;\n }\n }\n return checkNodes;\n}\n\n/**\r\n * 根据要求拼接树结构字段 ( 比如:后端返回name phone,前端显示要求name后拼接phone\r\n * @param nodes 数组对象\r\n * @param fileds 哪些字段需要拼接\r\n * @param replaceField 拼接后赋值字段\r\n * @param childNode 子级结点\r\n */\nfunction joinTreeMessage(nodes, fileds, replaceField, childNode) {\n function generateList(checkNodes) {\n checkNodes.forEach(e => {\n e[replaceField] = '';\n fileds.forEach(filed => e[filed] && (e[replaceField] += ` ${e[filed]}`));\n if (e[childNode]?.length) {\n generateList(e[childNode]);\n }\n });\n }\n generateList(nodes);\n return nodes;\n}\n\n/**\r\n * 根据某个属性查找出整个树结构中匹配相同的数据\r\n * @param tree 数组对象\r\n * @param key 需要查找的属性\r\n * @param replaceFields 树结构对应子级及查找key的属性\r\n * {\r\n children: 'children', // 查找子级字段\r\n key: 'id' // key的字段\r\n }\r\n */\nfunction filterTreeById(tree, key, replaceFields = {\n children: 'children',\n key: 'id'\n}) {\n return tree.reduce((acc, node) => {\n if (node[replaceFields.key] === key) {\n return [...acc, node];\n } else if (node[replaceFields.children] && node[replaceFields.children].length > 0) {\n const filteredChildren = filterTreeById(node[replaceFields.children], key, replaceFields);\n if (filteredChildren.length > 0) return filteredChildren;\n }\n return acc;\n }, []);\n}\n\n/**\r\n * 根据最后一级子id获取全部父id\r\n * @param tree 数组对象\r\n * @param key 需要查找的属性\r\n * @param replaceFields 树结构对应子级及查找key的属性\r\n * {\r\n children: 'children', // 查找子级字段\r\n key: 'id' // key的字段\r\n }\r\n */\nfunction getAllParents(tree, nodeId, replaceFields = {}) {\n const {\n children = 'children',\n key = 'id'\n } = replaceFields;\n const toFlatArray = (tree, parentId) => {\n return tree.reduce((t, _) => {\n const child = _[children];\n return [...t, parentId ? {\n ..._,\n parentId\n } : _, ...(child && child.length ? toFlatArray(child, _[key]) : [])];\n }, []);\n };\n const getIds = flatArray => {\n let ids = [nodeId];\n let child = flatArray.find(_ => _[key] === nodeId);\n while (child && child.parentId) {\n ids = [child.parentId, ...ids];\n child = flatArray.find(_ => _[key] === child.parentId);\n }\n return ids;\n };\n return getIds(toFlatArray(tree));\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Tree.js?");
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 */ getTreeKey: function() { return /* binding */ getTreeKey; },\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\n/** 默认TreeData字段 */\nconst defaultReplaceFields = {\n key: 'id',\n title: 'title',\n children: 'children'\n};\n\n/**\r\n * 获取树形结构所有key\r\n * @param nodes 数组对象\r\n * @param parent 是否只获取父一层的属性\r\n * @param replaceFields 自定义属性进行查询\r\n */\nfunction getTreeKey(nodes, parent = false, replaceFields = {\n children: 'children',\n key: 'id'\n}) {\n const filterNodes = [];\n function generateList(checkNodes) {\n checkNodes.forEach(e => {\n if (!parent) filterNodes.push(e[replaceFields.key]);\n if (e[replaceFields.children]?.length) {\n if (parent) filterNodes.push(e[replaceFields.key]);\n generateList(e[replaceFields.children], parent, replaceFields);\n }\n });\n }\n generateList(nodes, parent, replaceFields);\n return filterNodes;\n}\n\n/**\r\n * 根据树子节点ID过滤出最后一级child\r\n * @param {array} dataSource 树形结构数据源\r\n * @param {array} nodeIds 需要过滤的数据集\r\n * @param {string} hasField 过滤包含属性(默认为children)\r\n * @param {string} searchField 查找属性(默认为id)\r\n */\n\nfunction findCheckNodes(dataSource, nodeIds, searchField = 'id', hasField = 'children') {\n let checkNodes = [];\n function traverse(node, nodeIds) {\n if (nodeIds.includes(node[searchField]) && !node.hasOwnProperty(hasField)) {\n checkNodes.push(node);\n return true;\n }\n node[hasField] && node[hasField].forEach(childNode => {\n if (traverse(childNode, nodeIds)) return true;\n });\n return false;\n }\n for (let i = 0; i < dataSource.length; i++) {\n if (traverse(dataSource[i], nodeIds)) {\n break;\n }\n }\n return checkNodes;\n}\n\n/**\r\n * 根据要求拼接树结构字段 ( 比如:后端返回name phone,前端显示要求name后拼接phone\r\n * @param nodes 数组对象\r\n * @param fileds 哪些字段需要拼接\r\n * @param replaceField 拼接后赋值字段\r\n * @param childNode 子级结点\r\n */\nfunction joinTreeMessage(nodes, fileds, replaceField, childNode) {\n function generateList(checkNodes) {\n checkNodes.forEach(e => {\n e[replaceField] = '';\n fileds.forEach(filed => e[filed] && (e[replaceField] += ` ${e[filed]}`));\n if (e[childNode]?.length) {\n generateList(e[childNode]);\n }\n });\n }\n generateList(nodes);\n return nodes;\n}\n\n/**\r\n * 根据某个属性查找出整个树结构中匹配相同的数据\r\n * @param tree 数组对象\r\n * @param key 需要查找的属性\r\n * @param replaceFields 树结构对应子级及查找key的属性\r\n * {\r\n children: 'children', // 查找子级字段\r\n key: 'id' // key的字段\r\n }\r\n */\nfunction filterTreeById(tree, key, replaceFields = {\n children: 'children',\n key: 'id'\n}) {\n return tree.reduce((acc, node) => {\n if (node[replaceFields.key] === key) {\n return [...acc, node];\n } else if (node[replaceFields.children] && node[replaceFields.children].length > 0) {\n const filteredChildren = filterTreeById(node[replaceFields.children], key, replaceFields);\n if (filteredChildren.length > 0) return filteredChildren;\n }\n return acc;\n }, []);\n}\n\n/**\r\n * 根据最后一级子id获取全部父id\r\n * @param tree 数组对象\r\n * @param key 需要查找的属性\r\n * @param replaceFields 树结构对应子级及查找key的属性\r\n * {\r\n children: 'children', // 查找子级字段\r\n key: 'id' // key的字段\r\n }\r\n */\nfunction getAllParents(tree, nodeId, replaceFields = {}) {\n const {\n children = 'children',\n key = 'id'\n } = replaceFields;\n const toFlatArray = (tree, parentId) => {\n return tree.reduce((t, _) => {\n const child = _[children];\n return [...t, parentId ? {\n ..._,\n parentId\n } : _, ...(child && child.length ? toFlatArray(child, _[key]) : [])];\n }, []);\n };\n const getIds = flatArray => {\n let ids = [nodeId];\n let child = flatArray.find(_ => _[key] === nodeId);\n while (child && child.parentId) {\n ids = [child.parentId, ...ids];\n child = flatArray.find(_ => _[key] === child.parentId);\n }\n return ids;\n };\n return getIds(toFlatArray(tree));\n}\n\n//# sourceURL=webpack://mui/./plugins/utils/Tree.js?");
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
 
@@ -183,7 +183,7 @@ const IframeContainer = {
183
183
  params: {
184
184
  data,
185
185
  name: activeKey,
186
- title: isModal ? activeComp.title : activeComp.meta.title,
186
+ title: isModal ? activeComp.title : activeComp.meta?.title,
187
187
  routeQuery: postMessage
188
188
  }
189
189
  }
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-component-gallery",
3
- "version": "1.1.44",
3
+ "version": "1.1.45",
4
4
  "description": "vue-library-ui组件库",
5
5
  "main": "dist/index.umd.js",
6
6
  "files": [
@@ -183,7 +183,7 @@ const IframeContainer = {
183
183
  params: {
184
184
  data,
185
185
  name: activeKey,
186
- title: isModal ? activeComp.title : activeComp.meta.title,
186
+ title: isModal ? activeComp.title : activeComp.meta?.title,
187
187
  routeQuery: postMessage
188
188
  }
189
189
  }
@@ -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 转化对象
@@ -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
- nodeMap.set(node[key], { ...node, parentId })
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
- path.unshift(returnObjects ? current : current[key])
156
- current = current.parentId ? nodeMap.get(current.parentId) : null
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
- return path
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
- * 获取树形结构所有key
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 getTreeKey(nodes, parent = false, replaceFields = { children: 'children', key: 'id' }) {
15
-
16
- const filterNodes = []
17
-
18
- function generateList(checkNodes) {
19
-
20
- checkNodes.forEach(e => {
21
-
22
- if (!parent) filterNodes.push(e[replaceFields.key])
23
- if (e[replaceFields.children]?.length) {
24
- if (parent) filterNodes.push(e[replaceFields.key])
25
- generateList(e[replaceFields.children], parent, replaceFields)
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
- generateList(nodes, parent, replaceFields)
32
-
33
- return filterNodes
34
-
33
+ nodes.forEach(traverse)
34
+ return keys
35
35
  }
36
36
 
37
37
 
38
+
38
39
  /**
39
- * 根据树子节点ID过滤出最后一级child
40
- * @param {array} dataSource 树形结构数据源
41
- * @param {array} nodeIds 需要过滤的数据集
42
- * @param {string} hasField 过滤包含属性(默认为children)
43
- * @param {string} searchField 查找属性(默认为id)
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
- export function findCheckNodes(dataSource, nodeIds, searchField = 'id', hasField = 'children') {
47
- let checkNodes = []
48
-
49
- function traverse(node, nodeIds) {
50
-
51
- if (nodeIds.includes(node[searchField]) && !node.hasOwnProperty(hasField)) {
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
- node[hasField] && node[hasField].forEach(childNode => {
57
- if (traverse(childNode, nodeIds)) return true
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
- for (let i = 0; i < dataSource.length; i++) {
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
- * 根据要求拼接树结构字段 ( 比如:后端返回name phone,前端显示要求name后拼接phone
75
- * @param nodes 数组对象
76
- * @param fileds 哪些字段需要拼接
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(nodes, fileds, replaceField, childNode) {
81
-
82
- function generateList(checkNodes) {
83
-
84
- checkNodes.forEach(e => {
85
-
86
- e[replaceField] = ''
87
-
88
- fileds.forEach(filed => e[filed] && (e[replaceField] += ` ${e[filed]}`))
89
-
90
- if (e[childNode]?.length) {
91
- generateList(e[childNode])
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
- generateList(nodes)
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 树结构对应子级及查找key的属性
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(tree, key, replaceFields = { children: 'children', key: 'id' }) {
116
- return tree.reduce((acc, node) => {
117
- if (node[replaceFields.key] === key) {
118
- return [...acc, node]
119
- } else if (node[replaceFields.children] && node[replaceFields.children].length > 0) {
120
- const filteredChildren = filterTreeById(node[replaceFields.children], key, replaceFields)
121
- if (filteredChildren.length > 0) return filteredChildren
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
- return acc
124
- }, [])
126
+ }
127
+ return []
125
128
  }
126
129
 
127
130
 
128
131
  /**
129
- * 根据最后一级子id获取全部父id
130
- * @param tree 数组对象
131
- * @param key 需要查找的属性
132
- * @param replaceFields 树结构对应子级及查找key的属性
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, replaceFields = {}) {
139
- const { children = 'children', key = 'id' } = replaceFields
140
- const toFlatArray = (tree, parentId) => {
141
- return tree.reduce((t, _) => {
142
- const child = _[children]
143
- return [
144
- ...t,
145
- parentId ? { ..._, parentId } : _,
146
- ...(child && child.length ? toFlatArray(child, _[key]) : [])]
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
- const getIds = flatArray => {
150
- let ids = [nodeId]
151
- let child = flatArray.find(_ => _[key] === nodeId)
152
- while (child && child.parentId) {
153
- ids = [child.parentId, ...ids]
154
- child = flatArray.find(_ => _[key] === child.parentId)
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
- return ids
165
+ current = current.metaInfo.get(current.node).parentId
166
+ ? nodeMap.get(current.metaInfo.get(current.node).parentId)
167
+ : null
157
168
  }
158
- return getIds(toFlatArray(tree))
169
+
170
+ // 对象集合则返回父级
171
+ return returnObjects ? path[0] : path
159
172
  }