web-component-gallery 1.1.45 → 1.1.46

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
@@ -8679,7 +8679,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */
8679
8679
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8680
8680
 
8681
8681
  "use strict";
8682
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/table/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/pagination/index.js\");\n\nconst IconFont = ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createFromIconfontCN({\n scriptUrl: '//at.alicdn.com/t/c/font_4640977_auv55jur50b.js'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Table: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Pagination: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n name: 'uTable',\n data() {\n return {\n pagination: {\n total: 0,\n size: 10,\n current: 1\n },\n tableScrollBody: 600\n };\n },\n props: {\n // 紧凑型和宽松型 \n // relax 宽松型\n // compact 紧凑型\n tableStyle: {\n type: String,\n default: 'compact'\n },\n // compact 紧凑型情况下是否有分割线\n tableSplit: {\n type: Boolean,\n default: true\n },\n // 表格数据\n datas: {\n type: Array,\n default: () => []\n },\n // 选中数据项\n selectedRowKeys: {\n type: Array,\n default: () => []\n },\n // 分页默认值\n paginationParams: {\n type: Object,\n default: () => ({\n total: 0,\n size: 10,\n current: 1\n })\n },\n // 配置分页数据\n pageSizeOptions: {\n type: Array,\n default: () => ['10', '15', '20', '30', '50']\n }\n },\n computed: {\n setAttrs() {\n const h = this.$createElement;\n return {\n pagination: false,\n rowKey: (record, i) => record.id ?? `${this.pagination.current}${i}`,\n rowSelection: {\n selectedRowKeys: this.selectedRowKeys,\n onChange: this.onSelectChange\n },\n locale: {\n emptyText: h(\"div\", {\n \"class\": \"WebComponentTable__List__Empty\"\n }, [h(IconFont, {\n \"attrs\": {\n \"type\": \"icon-zanwushuju\"\n }\n }), h(\"span\", [\"\\u6682\\u65E0\\u6570\\u636E\"])])\n },\n ...this.$attrs\n };\n },\n tableSize() {\n return this.tableStyle == 'compact' ? 'middle' : 'default';\n }\n },\n watch: {\n paginationParams(newValue) {\n this.pagination = {\n ...newValue\n };\n }\n },\n mounted() {\n this.pagination = {\n ...this.paginationParams\n };\n const scrollTimer = setTimeout(() => {\n this.getScrollBodyH();\n clearTimeout(scrollTimer);\n }, 300);\n window.addEventListener('resize', () => this.getScrollBodyH());\n this.removeDomElement();\n },\n destroyed() {\n // window.removeEventListener( 'resize' )\n },\n methods: {\n /** 根据内容高度计算滚动长度 */\n getScrollBodyH() {\n this.tableScrollBody = this.$refs.Table.clientHeight - this.$refs.TableHead.offsetHeight - this.$refs.TablePagination.offsetHeight - 16 - this.$refs.TableListTitle.offsetHeight - document.querySelector('.ant-table-thead').offsetHeight - 20;\n /** 20为获取高度时抹掉的小数点后两位的浮动空间(存在叠加多个获取错误的情况) */\n console.log(this.$refs.Table.clientHeight, this.tableScrollBody, 'tableScrollBody滚动高度');\n },\n /** 根据高度判断dom元素是否加载 进行删除 */\n removeDomElement() {\n let domElement;\n this.$refs.Table.querySelectorAll('div').forEach(node => {\n node.className == 'ant-table-title' && (domElement = node);\n });\n !this.$scopedSlots.ATableHead && this.$refs.TableHead.remove();\n !this.$scopedSlots.ATableTitle && (domElement.style.padding = '0');\n },\n onSelectChange(selectedKey, selectedRecord) {\n this.$emit('selectedRecords', selectedKey, selectedRecord);\n },\n paginationChange(current, pageSize) {\n this.pagination = {\n ...this.pagination,\n size: pageSize,\n current\n };\n this.$emit('pageSizeChange', this.pagination);\n }\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8682
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/table/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/pagination/index.js\");\n\nconst IconFont = ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createFromIconfontCN({\n scriptUrl: '//at.alicdn.com/t/c/font_4640977_auv55jur50b.js'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Table: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Pagination: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n name: 'uTable',\n data() {\n return {\n pagination: {\n total: 0,\n size: 10,\n current: 1\n },\n tableScrollBody: 600\n };\n },\n props: {\n // 紧凑型和宽松型 \n // relax 宽松型\n // compact 紧凑型\n tableStyle: {\n type: String,\n default: 'compact'\n },\n // compact 紧凑型情况下是否有分割线\n tableSplit: {\n type: Boolean,\n default: true\n },\n // 表格数据\n datas: {\n type: Array,\n default: () => []\n },\n // 选中数据项\n selectedRowKeys: {\n type: Array,\n default: () => []\n },\n // 分页默认值\n paginationParams: {\n type: Object,\n default: () => ({\n total: 0,\n size: 10,\n current: 1\n })\n },\n // 配置分页数据\n pageSizeOptions: {\n type: Array,\n default: () => ['10', '15', '20', '30', '50']\n }\n },\n computed: {\n setAttrs() {\n const h = this.$createElement;\n return {\n pagination: false,\n rowKey: (record, i) => record.id ?? `${this.pagination.current}${i}`,\n rowSelection: {\n selectedRowKeys: this.selectedRowKeys,\n onChange: this.onSelectChange\n },\n locale: {\n emptyText: h(\"div\", {\n \"class\": \"WebComponentTable__List__Empty\"\n }, [h(IconFont, {\n \"attrs\": {\n \"type\": \"icon-zanwushuju\"\n }\n }), h(\"span\", [\"\\u6682\\u65E0\\u6570\\u636E\"])])\n },\n scroll: {\n y: this.tableScrollBody,\n x: this.$attrs.scrollX\n },\n ...this.$attrs\n };\n },\n tableSize() {\n return this.tableStyle == 'compact' ? 'middle' : 'default';\n }\n },\n watch: {\n paginationParams(newValue) {\n this.pagination = {\n ...newValue\n };\n }\n },\n mounted() {\n this.pagination = {\n ...this.paginationParams\n };\n const scrollTimer = setTimeout(() => {\n this.getScrollBodyH();\n clearTimeout(scrollTimer);\n }, 300);\n window.addEventListener('resize', () => this.getScrollBodyH());\n this.removeDomElement();\n },\n destroyed() {\n // window.removeEventListener( 'resize' )\n },\n methods: {\n /** 根据内容高度计算滚动长度 */\n getScrollBodyH() {\n this.tableScrollBody = this.$refs.Table.clientHeight - this.$refs.TableHead.offsetHeight - this.$refs.TablePagination.offsetHeight - 16 - this.$refs.TableListTitle.offsetHeight - document.querySelector('.ant-table-thead').offsetHeight - 20;\n /** 20为获取高度时抹掉的小数点后两位的浮动空间(存在叠加多个获取错误的情况) */\n console.log(this.$refs.Table.clientHeight, this.tableScrollBody, 'tableScrollBody滚动高度');\n },\n /** 根据高度判断dom元素是否加载 进行删除 */\n removeDomElement() {\n let domElement;\n this.$refs.Table.querySelectorAll('div').forEach(node => {\n node.className == 'ant-table-title' && (domElement = node);\n });\n !this.$scopedSlots.ATableHead && this.$refs.TableHead.remove();\n !this.$scopedSlots.ATableTitle && (domElement.style.padding = '0');\n },\n onSelectChange(selectedKey, selectedRecord) {\n this.$emit('selectedRecords', selectedKey, selectedRecord);\n },\n paginationChange(current, pageSize) {\n this.pagination = {\n ...this.pagination,\n size: pageSize,\n current\n };\n this.$emit('pageSizeChange', this.pagination);\n }\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8683
8683
 
8684
8684
  /***/ }),
8685
8685
 
@@ -8910,7 +8910,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
8910
8910
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8911
8911
 
8912
8912
  "use strict";
8913
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; },\n/* harmony export */ staticRenderFns: function() { return /* binding */ staticRenderFns; }\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n ref: \"Table\",\n class: [_vm.tableStyle, \"WebComponentTable\"]\n }, [_c(\"div\", {\n ref: \"TableHead\",\n staticClass: \"WebComponentTable__Head\"\n }, [_vm._t(\"ATableHead\")], 2), _vm._v(\" \"), _c(\"Table\", _vm._g(_vm._b({\n ref: \"TableList\",\n staticClass: \"WebComponentTable__List\",\n attrs: {\n size: _vm.tableSize,\n \"data-source\": _vm.datas,\n scroll: {\n y: _vm.tableScrollBody\n }\n },\n scopedSlots: _vm._u([_vm._l(_vm.$attrs.columns, function ({\n dataIndex\n }) {\n return {\n key: dataIndex,\n fn: function () {\n return [_vm._t(dataIndex)];\n },\n proxy: true\n };\n }), {\n key: \"customRender\",\n fn: function (text, record, i, column) {\n return [_vm._t(column.dataIndex, null, {\n customProps: record,\n text: text,\n index: i\n })];\n }\n }], null, true)\n }, \"Table\", _vm.setAttrs, false), _vm.$listeners), [_c(\"div\", {\n ref: \"TableListTitle\",\n staticClass: \"WebComponentTable__List__Title\",\n attrs: {\n slot: \"title\"\n },\n slot: \"title\"\n }, [_vm._t(\"ATableTitle\")], 2)]), _vm._v(\" \"), _c(\"div\", {\n ref: \"TablePagination\",\n staticClass: \"WebComponentTable__Pagination\"\n }, [_vm._t(\"ATablePagination\", function () {\n return [_c(\"Pagination\", {\n attrs: {\n size: \"small\",\n pageSizeOptions: _vm.pageSizeOptions,\n \"show-total\": total => `共 ${total} 条记录`,\n \"show-size-changer\": \"\",\n \"show-quick-jumper\": \"\",\n defaultCurrent: 1,\n pageSize: _vm.pagination.size,\n current: _vm.pagination.current,\n total: _vm.pagination.total\n },\n on: {\n \"update:pageSize\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n \"update:page-size\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n showSizeChange: _vm.paginationChange,\n change: _vm.paginationChange\n }\n })];\n })], 2)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8913
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; },\n/* harmony export */ staticRenderFns: function() { return /* binding */ staticRenderFns; }\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n ref: \"Table\",\n class: [_vm.tableStyle, \"WebComponentTable\"]\n }, [_c(\"div\", {\n ref: \"TableHead\",\n staticClass: \"WebComponentTable__Head\"\n }, [_vm._t(\"ATableHead\")], 2), _vm._v(\" \"), _c(\"Table\", _vm._g(_vm._b({\n ref: \"TableList\",\n staticClass: \"WebComponentTable__List\",\n attrs: {\n size: _vm.tableSize,\n \"data-source\": _vm.datas\n },\n scopedSlots: _vm._u([_vm._l(_vm.$attrs.columns, function ({\n dataIndex\n }) {\n return {\n key: dataIndex,\n fn: function () {\n return [_vm._t(dataIndex)];\n },\n proxy: true\n };\n }), {\n key: \"customRender\",\n fn: function (text, record, i, column) {\n return [_vm._t(column.dataIndex, null, {\n customProps: record,\n text: text,\n index: i\n })];\n }\n }], null, true)\n }, \"Table\", _vm.setAttrs, false), _vm.$listeners), [_c(\"div\", {\n ref: \"TableListTitle\",\n staticClass: \"WebComponentTable__List__Title\",\n attrs: {\n slot: \"title\"\n },\n slot: \"title\"\n }, [_vm._t(\"ATableTitle\")], 2)]), _vm._v(\" \"), _c(\"div\", {\n ref: \"TablePagination\",\n staticClass: \"WebComponentTable__Pagination\"\n }, [_vm._t(\"ATablePagination\", function () {\n return [_c(\"Pagination\", {\n attrs: {\n size: \"small\",\n pageSizeOptions: _vm.pageSizeOptions,\n \"show-total\": total => `共 ${total} 条记录`,\n \"show-size-changer\": \"\",\n \"show-quick-jumper\": \"\",\n defaultCurrent: 1,\n pageSize: _vm.pagination.size,\n current: _vm.pagination.current,\n total: _vm.pagination.total\n },\n on: {\n \"update:pageSize\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n \"update:page-size\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n showSizeChange: _vm.paginationChange,\n change: _vm.paginationChange\n }\n })];\n })], 2)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8914
8914
 
8915
8915
  /***/ }),
8916
8916
 
@@ -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 */ 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?");
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/* 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 getTreeKey(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/index.umd.js CHANGED
@@ -8679,7 +8679,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */
8679
8679
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8680
8680
 
8681
8681
  "use strict";
8682
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/table/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/pagination/index.js\");\n\nconst IconFont = ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createFromIconfontCN({\n scriptUrl: '//at.alicdn.com/t/c/font_4640977_auv55jur50b.js'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Table: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Pagination: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n name: 'uTable',\n data() {\n return {\n pagination: {\n total: 0,\n size: 10,\n current: 1\n },\n tableScrollBody: 600\n };\n },\n props: {\n // 紧凑型和宽松型 \n // relax 宽松型\n // compact 紧凑型\n tableStyle: {\n type: String,\n default: 'compact'\n },\n // compact 紧凑型情况下是否有分割线\n tableSplit: {\n type: Boolean,\n default: true\n },\n // 表格数据\n datas: {\n type: Array,\n default: () => []\n },\n // 选中数据项\n selectedRowKeys: {\n type: Array,\n default: () => []\n },\n // 分页默认值\n paginationParams: {\n type: Object,\n default: () => ({\n total: 0,\n size: 10,\n current: 1\n })\n },\n // 配置分页数据\n pageSizeOptions: {\n type: Array,\n default: () => ['10', '15', '20', '30', '50']\n }\n },\n computed: {\n setAttrs() {\n const h = this.$createElement;\n return {\n pagination: false,\n rowKey: (record, i) => record.id ?? `${this.pagination.current}${i}`,\n rowSelection: {\n selectedRowKeys: this.selectedRowKeys,\n onChange: this.onSelectChange\n },\n locale: {\n emptyText: h(\"div\", {\n \"class\": \"WebComponentTable__List__Empty\"\n }, [h(IconFont, {\n \"attrs\": {\n \"type\": \"icon-zanwushuju\"\n }\n }), h(\"span\", [\"\\u6682\\u65E0\\u6570\\u636E\"])])\n },\n ...this.$attrs\n };\n },\n tableSize() {\n return this.tableStyle == 'compact' ? 'middle' : 'default';\n }\n },\n watch: {\n paginationParams(newValue) {\n this.pagination = {\n ...newValue\n };\n }\n },\n mounted() {\n this.pagination = {\n ...this.paginationParams\n };\n const scrollTimer = setTimeout(() => {\n this.getScrollBodyH();\n clearTimeout(scrollTimer);\n }, 300);\n window.addEventListener('resize', () => this.getScrollBodyH());\n this.removeDomElement();\n },\n destroyed() {\n // window.removeEventListener( 'resize' )\n },\n methods: {\n /** 根据内容高度计算滚动长度 */\n getScrollBodyH() {\n this.tableScrollBody = this.$refs.Table.clientHeight - this.$refs.TableHead.offsetHeight - this.$refs.TablePagination.offsetHeight - 16 - this.$refs.TableListTitle.offsetHeight - document.querySelector('.ant-table-thead').offsetHeight - 20;\n /** 20为获取高度时抹掉的小数点后两位的浮动空间(存在叠加多个获取错误的情况) */\n console.log(this.$refs.Table.clientHeight, this.tableScrollBody, 'tableScrollBody滚动高度');\n },\n /** 根据高度判断dom元素是否加载 进行删除 */\n removeDomElement() {\n let domElement;\n this.$refs.Table.querySelectorAll('div').forEach(node => {\n node.className == 'ant-table-title' && (domElement = node);\n });\n !this.$scopedSlots.ATableHead && this.$refs.TableHead.remove();\n !this.$scopedSlots.ATableTitle && (domElement.style.padding = '0');\n },\n onSelectChange(selectedKey, selectedRecord) {\n this.$emit('selectedRecords', selectedKey, selectedRecord);\n },\n paginationChange(current, pageSize) {\n this.pagination = {\n ...this.pagination,\n size: pageSize,\n current\n };\n this.$emit('pageSizeChange', this.pagination);\n }\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8682
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/table/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/pagination/index.js\");\n\nconst IconFont = ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createFromIconfontCN({\n scriptUrl: '//at.alicdn.com/t/c/font_4640977_auv55jur50b.js'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Table: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Pagination: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n name: 'uTable',\n data() {\n return {\n pagination: {\n total: 0,\n size: 10,\n current: 1\n },\n tableScrollBody: 600\n };\n },\n props: {\n // 紧凑型和宽松型 \n // relax 宽松型\n // compact 紧凑型\n tableStyle: {\n type: String,\n default: 'compact'\n },\n // compact 紧凑型情况下是否有分割线\n tableSplit: {\n type: Boolean,\n default: true\n },\n // 表格数据\n datas: {\n type: Array,\n default: () => []\n },\n // 选中数据项\n selectedRowKeys: {\n type: Array,\n default: () => []\n },\n // 分页默认值\n paginationParams: {\n type: Object,\n default: () => ({\n total: 0,\n size: 10,\n current: 1\n })\n },\n // 配置分页数据\n pageSizeOptions: {\n type: Array,\n default: () => ['10', '15', '20', '30', '50']\n }\n },\n computed: {\n setAttrs() {\n const h = this.$createElement;\n return {\n pagination: false,\n rowKey: (record, i) => record.id ?? `${this.pagination.current}${i}`,\n rowSelection: {\n selectedRowKeys: this.selectedRowKeys,\n onChange: this.onSelectChange\n },\n locale: {\n emptyText: h(\"div\", {\n \"class\": \"WebComponentTable__List__Empty\"\n }, [h(IconFont, {\n \"attrs\": {\n \"type\": \"icon-zanwushuju\"\n }\n }), h(\"span\", [\"\\u6682\\u65E0\\u6570\\u636E\"])])\n },\n scroll: {\n y: this.tableScrollBody,\n x: this.$attrs.scrollX\n },\n ...this.$attrs\n };\n },\n tableSize() {\n return this.tableStyle == 'compact' ? 'middle' : 'default';\n }\n },\n watch: {\n paginationParams(newValue) {\n this.pagination = {\n ...newValue\n };\n }\n },\n mounted() {\n this.pagination = {\n ...this.paginationParams\n };\n const scrollTimer = setTimeout(() => {\n this.getScrollBodyH();\n clearTimeout(scrollTimer);\n }, 300);\n window.addEventListener('resize', () => this.getScrollBodyH());\n this.removeDomElement();\n },\n destroyed() {\n // window.removeEventListener( 'resize' )\n },\n methods: {\n /** 根据内容高度计算滚动长度 */\n getScrollBodyH() {\n this.tableScrollBody = this.$refs.Table.clientHeight - this.$refs.TableHead.offsetHeight - this.$refs.TablePagination.offsetHeight - 16 - this.$refs.TableListTitle.offsetHeight - document.querySelector('.ant-table-thead').offsetHeight - 20;\n /** 20为获取高度时抹掉的小数点后两位的浮动空间(存在叠加多个获取错误的情况) */\n console.log(this.$refs.Table.clientHeight, this.tableScrollBody, 'tableScrollBody滚动高度');\n },\n /** 根据高度判断dom元素是否加载 进行删除 */\n removeDomElement() {\n let domElement;\n this.$refs.Table.querySelectorAll('div').forEach(node => {\n node.className == 'ant-table-title' && (domElement = node);\n });\n !this.$scopedSlots.ATableHead && this.$refs.TableHead.remove();\n !this.$scopedSlots.ATableTitle && (domElement.style.padding = '0');\n },\n onSelectChange(selectedKey, selectedRecord) {\n this.$emit('selectedRecords', selectedKey, selectedRecord);\n },\n paginationChange(current, pageSize) {\n this.pagination = {\n ...this.pagination,\n size: pageSize,\n current\n };\n this.$emit('pageSizeChange', this.pagination);\n }\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8683
8683
 
8684
8684
  /***/ }),
8685
8685
 
@@ -8910,7 +8910,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
8910
8910
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8911
8911
 
8912
8912
  "use strict";
8913
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; },\n/* harmony export */ staticRenderFns: function() { return /* binding */ staticRenderFns; }\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n ref: \"Table\",\n class: [_vm.tableStyle, \"WebComponentTable\"]\n }, [_c(\"div\", {\n ref: \"TableHead\",\n staticClass: \"WebComponentTable__Head\"\n }, [_vm._t(\"ATableHead\")], 2), _vm._v(\" \"), _c(\"Table\", _vm._g(_vm._b({\n ref: \"TableList\",\n staticClass: \"WebComponentTable__List\",\n attrs: {\n size: _vm.tableSize,\n \"data-source\": _vm.datas,\n scroll: {\n y: _vm.tableScrollBody\n }\n },\n scopedSlots: _vm._u([_vm._l(_vm.$attrs.columns, function ({\n dataIndex\n }) {\n return {\n key: dataIndex,\n fn: function () {\n return [_vm._t(dataIndex)];\n },\n proxy: true\n };\n }), {\n key: \"customRender\",\n fn: function (text, record, i, column) {\n return [_vm._t(column.dataIndex, null, {\n customProps: record,\n text: text,\n index: i\n })];\n }\n }], null, true)\n }, \"Table\", _vm.setAttrs, false), _vm.$listeners), [_c(\"div\", {\n ref: \"TableListTitle\",\n staticClass: \"WebComponentTable__List__Title\",\n attrs: {\n slot: \"title\"\n },\n slot: \"title\"\n }, [_vm._t(\"ATableTitle\")], 2)]), _vm._v(\" \"), _c(\"div\", {\n ref: \"TablePagination\",\n staticClass: \"WebComponentTable__Pagination\"\n }, [_vm._t(\"ATablePagination\", function () {\n return [_c(\"Pagination\", {\n attrs: {\n size: \"small\",\n pageSizeOptions: _vm.pageSizeOptions,\n \"show-total\": total => `共 ${total} 条记录`,\n \"show-size-changer\": \"\",\n \"show-quick-jumper\": \"\",\n defaultCurrent: 1,\n pageSize: _vm.pagination.size,\n current: _vm.pagination.current,\n total: _vm.pagination.total\n },\n on: {\n \"update:pageSize\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n \"update:page-size\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n showSizeChange: _vm.paginationChange,\n change: _vm.paginationChange\n }\n })];\n })], 2)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8913
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; },\n/* harmony export */ staticRenderFns: function() { return /* binding */ staticRenderFns; }\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n ref: \"Table\",\n class: [_vm.tableStyle, \"WebComponentTable\"]\n }, [_c(\"div\", {\n ref: \"TableHead\",\n staticClass: \"WebComponentTable__Head\"\n }, [_vm._t(\"ATableHead\")], 2), _vm._v(\" \"), _c(\"Table\", _vm._g(_vm._b({\n ref: \"TableList\",\n staticClass: \"WebComponentTable__List\",\n attrs: {\n size: _vm.tableSize,\n \"data-source\": _vm.datas\n },\n scopedSlots: _vm._u([_vm._l(_vm.$attrs.columns, function ({\n dataIndex\n }) {\n return {\n key: dataIndex,\n fn: function () {\n return [_vm._t(dataIndex)];\n },\n proxy: true\n };\n }), {\n key: \"customRender\",\n fn: function (text, record, i, column) {\n return [_vm._t(column.dataIndex, null, {\n customProps: record,\n text: text,\n index: i\n })];\n }\n }], null, true)\n }, \"Table\", _vm.setAttrs, false), _vm.$listeners), [_c(\"div\", {\n ref: \"TableListTitle\",\n staticClass: \"WebComponentTable__List__Title\",\n attrs: {\n slot: \"title\"\n },\n slot: \"title\"\n }, [_vm._t(\"ATableTitle\")], 2)]), _vm._v(\" \"), _c(\"div\", {\n ref: \"TablePagination\",\n staticClass: \"WebComponentTable__Pagination\"\n }, [_vm._t(\"ATablePagination\", function () {\n return [_c(\"Pagination\", {\n attrs: {\n size: \"small\",\n pageSizeOptions: _vm.pageSizeOptions,\n \"show-total\": total => `共 ${total} 条记录`,\n \"show-size-changer\": \"\",\n \"show-quick-jumper\": \"\",\n defaultCurrent: 1,\n pageSize: _vm.pagination.size,\n current: _vm.pagination.current,\n total: _vm.pagination.total\n },\n on: {\n \"update:pageSize\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n \"update:page-size\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n showSizeChange: _vm.paginationChange,\n change: _vm.paginationChange\n }\n })];\n })], 2)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
8914
8914
 
8915
8915
  /***/ }),
8916
8916
 
@@ -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 */ 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?");
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/* 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 getTreeKey(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/table.umd.js CHANGED
@@ -4347,7 +4347,7 @@ eval("//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareC
4347
4347
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4348
4348
 
4349
4349
  "use strict";
4350
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/table/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/pagination/index.js\");\n\nconst IconFont = ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createFromIconfontCN({\n scriptUrl: '//at.alicdn.com/t/c/font_4640977_auv55jur50b.js'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Table: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Pagination: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n name: 'uTable',\n data() {\n return {\n pagination: {\n total: 0,\n size: 10,\n current: 1\n },\n tableScrollBody: 600\n };\n },\n props: {\n // 紧凑型和宽松型 \n // relax 宽松型\n // compact 紧凑型\n tableStyle: {\n type: String,\n default: 'compact'\n },\n // compact 紧凑型情况下是否有分割线\n tableSplit: {\n type: Boolean,\n default: true\n },\n // 表格数据\n datas: {\n type: Array,\n default: () => []\n },\n // 选中数据项\n selectedRowKeys: {\n type: Array,\n default: () => []\n },\n // 分页默认值\n paginationParams: {\n type: Object,\n default: () => ({\n total: 0,\n size: 10,\n current: 1\n })\n },\n // 配置分页数据\n pageSizeOptions: {\n type: Array,\n default: () => ['10', '15', '20', '30', '50']\n }\n },\n computed: {\n setAttrs() {\n const h = this.$createElement;\n return {\n pagination: false,\n rowKey: (record, i) => record.id ?? `${this.pagination.current}${i}`,\n rowSelection: {\n selectedRowKeys: this.selectedRowKeys,\n onChange: this.onSelectChange\n },\n locale: {\n emptyText: h(\"div\", {\n \"class\": \"WebComponentTable__List__Empty\"\n }, [h(IconFont, {\n \"attrs\": {\n \"type\": \"icon-zanwushuju\"\n }\n }), h(\"span\", [\"\\u6682\\u65E0\\u6570\\u636E\"])])\n },\n ...this.$attrs\n };\n },\n tableSize() {\n return this.tableStyle == 'compact' ? 'middle' : 'default';\n }\n },\n watch: {\n paginationParams(newValue) {\n this.pagination = {\n ...newValue\n };\n }\n },\n mounted() {\n this.pagination = {\n ...this.paginationParams\n };\n const scrollTimer = setTimeout(() => {\n this.getScrollBodyH();\n clearTimeout(scrollTimer);\n }, 300);\n window.addEventListener('resize', () => this.getScrollBodyH());\n this.removeDomElement();\n },\n destroyed() {\n // window.removeEventListener( 'resize' )\n },\n methods: {\n /** 根据内容高度计算滚动长度 */\n getScrollBodyH() {\n this.tableScrollBody = this.$refs.Table.clientHeight - this.$refs.TableHead.offsetHeight - this.$refs.TablePagination.offsetHeight - 16 - this.$refs.TableListTitle.offsetHeight - document.querySelector('.ant-table-thead').offsetHeight - 20;\n /** 20为获取高度时抹掉的小数点后两位的浮动空间(存在叠加多个获取错误的情况) */\n console.log(this.$refs.Table.clientHeight, this.tableScrollBody, 'tableScrollBody滚动高度');\n },\n /** 根据高度判断dom元素是否加载 进行删除 */\n removeDomElement() {\n let domElement;\n this.$refs.Table.querySelectorAll('div').forEach(node => {\n node.className == 'ant-table-title' && (domElement = node);\n });\n !this.$scopedSlots.ATableHead && this.$refs.TableHead.remove();\n !this.$scopedSlots.ATableTitle && (domElement.style.padding = '0');\n },\n onSelectChange(selectedKey, selectedRecord) {\n this.$emit('selectedRecords', selectedKey, selectedRecord);\n },\n paginationChange(current, pageSize) {\n this.pagination = {\n ...this.pagination,\n size: pageSize,\n current\n };\n this.$emit('pageSizeChange', this.pagination);\n }\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
4350
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/icon/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/table/index.js\");\n/* harmony import */ var ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ant-design-vue/es */ \"./node_modules/ant-design-vue/es/pagination/index.js\");\n\nconst IconFont = ant_design_vue_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createFromIconfontCN({\n scriptUrl: '//at.alicdn.com/t/c/font_4640977_auv55jur50b.js'\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Table: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Pagination: ant_design_vue_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n name: 'uTable',\n data() {\n return {\n pagination: {\n total: 0,\n size: 10,\n current: 1\n },\n tableScrollBody: 600\n };\n },\n props: {\n // 紧凑型和宽松型 \n // relax 宽松型\n // compact 紧凑型\n tableStyle: {\n type: String,\n default: 'compact'\n },\n // compact 紧凑型情况下是否有分割线\n tableSplit: {\n type: Boolean,\n default: true\n },\n // 表格数据\n datas: {\n type: Array,\n default: () => []\n },\n // 选中数据项\n selectedRowKeys: {\n type: Array,\n default: () => []\n },\n // 分页默认值\n paginationParams: {\n type: Object,\n default: () => ({\n total: 0,\n size: 10,\n current: 1\n })\n },\n // 配置分页数据\n pageSizeOptions: {\n type: Array,\n default: () => ['10', '15', '20', '30', '50']\n }\n },\n computed: {\n setAttrs() {\n const h = this.$createElement;\n return {\n pagination: false,\n rowKey: (record, i) => record.id ?? `${this.pagination.current}${i}`,\n rowSelection: {\n selectedRowKeys: this.selectedRowKeys,\n onChange: this.onSelectChange\n },\n locale: {\n emptyText: h(\"div\", {\n \"class\": \"WebComponentTable__List__Empty\"\n }, [h(IconFont, {\n \"attrs\": {\n \"type\": \"icon-zanwushuju\"\n }\n }), h(\"span\", [\"\\u6682\\u65E0\\u6570\\u636E\"])])\n },\n scroll: {\n y: this.tableScrollBody,\n x: this.$attrs.scrollX\n },\n ...this.$attrs\n };\n },\n tableSize() {\n return this.tableStyle == 'compact' ? 'middle' : 'default';\n }\n },\n watch: {\n paginationParams(newValue) {\n this.pagination = {\n ...newValue\n };\n }\n },\n mounted() {\n this.pagination = {\n ...this.paginationParams\n };\n const scrollTimer = setTimeout(() => {\n this.getScrollBodyH();\n clearTimeout(scrollTimer);\n }, 300);\n window.addEventListener('resize', () => this.getScrollBodyH());\n this.removeDomElement();\n },\n destroyed() {\n // window.removeEventListener( 'resize' )\n },\n methods: {\n /** 根据内容高度计算滚动长度 */\n getScrollBodyH() {\n this.tableScrollBody = this.$refs.Table.clientHeight - this.$refs.TableHead.offsetHeight - this.$refs.TablePagination.offsetHeight - 16 - this.$refs.TableListTitle.offsetHeight - document.querySelector('.ant-table-thead').offsetHeight - 20;\n /** 20为获取高度时抹掉的小数点后两位的浮动空间(存在叠加多个获取错误的情况) */\n console.log(this.$refs.Table.clientHeight, this.tableScrollBody, 'tableScrollBody滚动高度');\n },\n /** 根据高度判断dom元素是否加载 进行删除 */\n removeDomElement() {\n let domElement;\n this.$refs.Table.querySelectorAll('div').forEach(node => {\n node.className == 'ant-table-title' && (domElement = node);\n });\n !this.$scopedSlots.ATableHead && this.$refs.TableHead.remove();\n !this.$scopedSlots.ATableTitle && (domElement.style.padding = '0');\n },\n onSelectChange(selectedKey, selectedRecord) {\n this.$emit('selectedRecords', selectedKey, selectedRecord);\n },\n paginationChange(current, pageSize) {\n this.pagination = {\n ...this.pagination,\n size: pageSize,\n current\n };\n this.$emit('pageSizeChange', this.pagination);\n }\n }\n});\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
4351
4351
 
4352
4352
  /***/ }),
4353
4353
 
@@ -4358,7 +4358,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ant_
4358
4358
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4359
4359
 
4360
4360
  "use strict";
4361
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; },\n/* harmony export */ staticRenderFns: function() { return /* binding */ staticRenderFns; }\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n ref: \"Table\",\n class: [_vm.tableStyle, \"WebComponentTable\"]\n }, [_c(\"div\", {\n ref: \"TableHead\",\n staticClass: \"WebComponentTable__Head\"\n }, [_vm._t(\"ATableHead\")], 2), _vm._v(\" \"), _c(\"Table\", _vm._g(_vm._b({\n ref: \"TableList\",\n staticClass: \"WebComponentTable__List\",\n attrs: {\n size: _vm.tableSize,\n \"data-source\": _vm.datas,\n scroll: {\n y: _vm.tableScrollBody\n }\n },\n scopedSlots: _vm._u([_vm._l(_vm.$attrs.columns, function ({\n dataIndex\n }) {\n return {\n key: dataIndex,\n fn: function () {\n return [_vm._t(dataIndex)];\n },\n proxy: true\n };\n }), {\n key: \"customRender\",\n fn: function (text, record, i, column) {\n return [_vm._t(column.dataIndex, null, {\n customProps: record,\n text: text,\n index: i\n })];\n }\n }], null, true)\n }, \"Table\", _vm.setAttrs, false), _vm.$listeners), [_c(\"div\", {\n ref: \"TableListTitle\",\n staticClass: \"WebComponentTable__List__Title\",\n attrs: {\n slot: \"title\"\n },\n slot: \"title\"\n }, [_vm._t(\"ATableTitle\")], 2)]), _vm._v(\" \"), _c(\"div\", {\n ref: \"TablePagination\",\n staticClass: \"WebComponentTable__Pagination\"\n }, [_vm._t(\"ATablePagination\", function () {\n return [_c(\"Pagination\", {\n attrs: {\n size: \"small\",\n pageSizeOptions: _vm.pageSizeOptions,\n \"show-total\": total => `共 ${total} 条记录`,\n \"show-size-changer\": \"\",\n \"show-quick-jumper\": \"\",\n defaultCurrent: 1,\n pageSize: _vm.pagination.size,\n current: _vm.pagination.current,\n total: _vm.pagination.total\n },\n on: {\n \"update:pageSize\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n \"update:page-size\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n showSizeChange: _vm.paginationChange,\n change: _vm.paginationChange\n }\n })];\n })], 2)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
4361
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; },\n/* harmony export */ staticRenderFns: function() { return /* binding */ staticRenderFns; }\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n ref: \"Table\",\n class: [_vm.tableStyle, \"WebComponentTable\"]\n }, [_c(\"div\", {\n ref: \"TableHead\",\n staticClass: \"WebComponentTable__Head\"\n }, [_vm._t(\"ATableHead\")], 2), _vm._v(\" \"), _c(\"Table\", _vm._g(_vm._b({\n ref: \"TableList\",\n staticClass: \"WebComponentTable__List\",\n attrs: {\n size: _vm.tableSize,\n \"data-source\": _vm.datas\n },\n scopedSlots: _vm._u([_vm._l(_vm.$attrs.columns, function ({\n dataIndex\n }) {\n return {\n key: dataIndex,\n fn: function () {\n return [_vm._t(dataIndex)];\n },\n proxy: true\n };\n }), {\n key: \"customRender\",\n fn: function (text, record, i, column) {\n return [_vm._t(column.dataIndex, null, {\n customProps: record,\n text: text,\n index: i\n })];\n }\n }], null, true)\n }, \"Table\", _vm.setAttrs, false), _vm.$listeners), [_c(\"div\", {\n ref: \"TableListTitle\",\n staticClass: \"WebComponentTable__List__Title\",\n attrs: {\n slot: \"title\"\n },\n slot: \"title\"\n }, [_vm._t(\"ATableTitle\")], 2)]), _vm._v(\" \"), _c(\"div\", {\n ref: \"TablePagination\",\n staticClass: \"WebComponentTable__Pagination\"\n }, [_vm._t(\"ATablePagination\", function () {\n return [_c(\"Pagination\", {\n attrs: {\n size: \"small\",\n pageSizeOptions: _vm.pageSizeOptions,\n \"show-total\": total => `共 ${total} 条记录`,\n \"show-size-changer\": \"\",\n \"show-quick-jumper\": \"\",\n defaultCurrent: 1,\n pageSize: _vm.pagination.size,\n current: _vm.pagination.current,\n total: _vm.pagination.total\n },\n on: {\n \"update:pageSize\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n \"update:page-size\": function ($event) {\n return _vm.$set(_vm.pagination, \"size\", $event);\n },\n showSizeChange: _vm.paginationChange,\n change: _vm.paginationChange\n }\n })];\n })], 2)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack://mui/./plugins/lib/table/index.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
4362
4362
 
4363
4363
  /***/ }),
4364
4364
 
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 */ 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?");
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/* 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 getTreeKey(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
 
@@ -9,7 +9,6 @@
9
9
  ref="TableList"
10
10
  :size="tableSize"
11
11
  :data-source="datas"
12
- :scroll="{ y: tableScrollBody }"
13
12
  v-on="$listeners"
14
13
  v-bind="setAttrs"
15
14
  class="WebComponentTable__List"
@@ -124,6 +123,7 @@ export default {
124
123
  <span>暂无数据</span>
125
124
  </div>
126
125
  },
126
+ scroll: { y: this.tableScrollBody, x: this.$attrs.scrollX },
127
127
  ...this.$attrs
128
128
  }
129
129
  },
@@ -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.45",
3
+ "version": "1.1.46",
4
4
  "description": "vue-library-ui组件库",
5
5
  "main": "dist/index.umd.js",
6
6
  "files": [
@@ -9,7 +9,6 @@
9
9
  ref="TableList"
10
10
  :size="tableSize"
11
11
  :data-source="datas"
12
- :scroll="{ y: tableScrollBody }"
13
12
  v-on="$listeners"
14
13
  v-bind="setAttrs"
15
14
  class="WebComponentTable__List"
@@ -124,6 +123,7 @@ export default {
124
123
  <span>暂无数据</span>
125
124
  </div>
126
125
  },
126
+ scroll: { y: this.tableScrollBody, x: this.$attrs.scrollX },
127
127
  ...this.$attrs
128
128
  }
129
129
  },
@@ -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
 
@@ -0,0 +1,105 @@
1
+ // src/utils/http.js
2
+ import axios from 'axios'
3
+
4
+ // 创建 Axios 实例
5
+ const createAxiosService = (options) => {
6
+ const service = axios.create({
7
+ baseURL: options.baseURL,
8
+ timeout: 15000
9
+ })
10
+
11
+ // 请求拦截器
12
+ service.interceptors.request.use(
13
+ config => {
14
+ // 这里添加请求前的逻辑
15
+ const token = options.token
16
+ token && (config.headers['token'] = token)
17
+
18
+ // 取消重复请求处理
19
+ const requestKey = `${config.url}-${config.method}`
20
+ cancelPendingRequest(requestKey)
21
+ const controller = new AbortController()
22
+ config.signal = controller.signal
23
+ addPendingRequest(requestKey, controller)
24
+
25
+ return config
26
+ },
27
+ error => {
28
+ return Promise.reject(error)
29
+ }
30
+ )
31
+
32
+ // 响应拦截器
33
+ service.interceptors.response.use(
34
+ response => {
35
+ // 请求完成后移除pending状态
36
+ const requestKey = `${response.config.url}-${response.config.method}`
37
+ removePendingRequest(requestKey)
38
+
39
+ // 处理业务逻辑
40
+ const { data, config, headers } = response
41
+ if (config.responseType == 'blob') return { response: data, headers }
42
+ if (data && data.code !== 200) {
43
+ return Promise.reject(response.data.message || '请求错误')
44
+ }
45
+ return response.data.data
46
+ },
47
+ error => {
48
+ // 处理HTTP错误
49
+ if (error.response) {
50
+ options.requestErrorHandler(error.response.status)
51
+ switch (error.response.status) {
52
+ case 401:
53
+ console.error('认证失效,请重新登录')
54
+ break
55
+ case 403:
56
+ console.error('无权限访问该资源')
57
+ break
58
+ case 500:
59
+ console.error('服务器内部错误,请稍后重试')
60
+ break
61
+ default:
62
+ handleNetworkError(error)
63
+ }
64
+ } else if (error.message.includes('timeout')) {
65
+ console.error('请求超时,请检查网络后重试')
66
+ } else {
67
+ console.error('未知错误,请联系管理员')
68
+ }
69
+ return Promise.reject(error)
70
+ }
71
+ )
72
+
73
+ return service
74
+ }
75
+
76
+ // 请求管理相关函数
77
+ const pendingRequests = new Map()
78
+
79
+ function addPendingRequest(key, controller) {
80
+ pendingRequests.set(key, controller)
81
+ }
82
+
83
+ function removePendingRequest(key) {
84
+ if (pendingRequests.has(key)) {
85
+ pendingRequests.delete(key)
86
+ }
87
+ }
88
+
89
+ function cancelPendingRequest(key) {
90
+ if (pendingRequests.has(key)) {
91
+ pendingRequests.get(key).abort()
92
+ pendingRequests.delete(key)
93
+ }
94
+ }
95
+
96
+ function handleNetworkError(error) {
97
+ // 处理常规网络错误
98
+ console.error('网络连接异常:', error.message)
99
+ // 可根据不同错误码细化处理
100
+ if (navigator.onLine === false) {
101
+ console.error('当前网络不可用')
102
+ }
103
+ }
104
+
105
+ export default createAxiosService
@@ -0,0 +1,38 @@
1
+ import { createAxiosService } from './Axios.js'
2
+
3
+ const axiosPlugin = {
4
+ install(Vue, options) {
5
+
6
+ const service = createAxiosService({
7
+ baseURL: window.https.WEBSWG,
8
+ token: Vue.prototype.$store.getters.token,
9
+ ...options
10
+ })
11
+
12
+ // 全局挂载
13
+ Vue.config.globalProperties.$http = service
14
+
15
+ // 提供独立的 API 方法
16
+ Vue.provide('axios', service)
17
+
18
+ // 添加自定义方法
19
+ service.uploadFile = (url, file, onProgress) => {
20
+ const formData = new FormData()
21
+ formData.append('file', file)
22
+
23
+ return service.post(url, formData, {
24
+ headers: { 'Content-Type': 'multipart/form-data' },
25
+ onUploadProgress: (progressEvent) => {
26
+ if (progressEvent.lengthComputable && onProgress) {
27
+ const percent = Math.round(
28
+ (progressEvent.loaded * 100) / progressEvent.total
29
+ )
30
+ onProgress(percent)
31
+ }
32
+ }
33
+ })
34
+ }
35
+ }
36
+ }
37
+
38
+ export default axiosPlugin
@@ -14,7 +14,7 @@ const defaultReplaceFields = {
14
14
  * @param {string} [replaceFields.key='id'] 键名字段名
15
15
  * @returns {Array} 提取的键值数组
16
16
  */
17
- export function getTreeKeys(
17
+ export function getTreeKey(
18
18
  nodes = [],
19
19
  parent = false,
20
20
  { children = 'children', key = 'id' } = {}
package/utils/Axios.js ADDED
@@ -0,0 +1,105 @@
1
+ // src/utils/http.js
2
+ import axios from 'axios'
3
+
4
+ // 创建 Axios 实例
5
+ const createAxiosService = (options) => {
6
+ const service = axios.create({
7
+ baseURL: options.baseURL,
8
+ timeout: 15000
9
+ })
10
+
11
+ // 请求拦截器
12
+ service.interceptors.request.use(
13
+ config => {
14
+ // 这里添加请求前的逻辑
15
+ const token = options.token
16
+ token && (config.headers['token'] = token)
17
+
18
+ // 取消重复请求处理
19
+ const requestKey = `${config.url}-${config.method}`
20
+ cancelPendingRequest(requestKey)
21
+ const controller = new AbortController()
22
+ config.signal = controller.signal
23
+ addPendingRequest(requestKey, controller)
24
+
25
+ return config
26
+ },
27
+ error => {
28
+ return Promise.reject(error)
29
+ }
30
+ )
31
+
32
+ // 响应拦截器
33
+ service.interceptors.response.use(
34
+ response => {
35
+ // 请求完成后移除pending状态
36
+ const requestKey = `${response.config.url}-${response.config.method}`
37
+ removePendingRequest(requestKey)
38
+
39
+ // 处理业务逻辑
40
+ const { data, config, headers } = response
41
+ if (config.responseType == 'blob') return { response: data, headers }
42
+ if (data && data.code !== 200) {
43
+ return Promise.reject(response.data.message || '请求错误')
44
+ }
45
+ return response.data.data
46
+ },
47
+ error => {
48
+ // 处理HTTP错误
49
+ if (error.response) {
50
+ options.requestErrorHandler(error.response.status)
51
+ switch (error.response.status) {
52
+ case 401:
53
+ console.error('认证失效,请重新登录')
54
+ break
55
+ case 403:
56
+ console.error('无权限访问该资源')
57
+ break
58
+ case 500:
59
+ console.error('服务器内部错误,请稍后重试')
60
+ break
61
+ default:
62
+ handleNetworkError(error)
63
+ }
64
+ } else if (error.message.includes('timeout')) {
65
+ console.error('请求超时,请检查网络后重试')
66
+ } else {
67
+ console.error('未知错误,请联系管理员')
68
+ }
69
+ return Promise.reject(error)
70
+ }
71
+ )
72
+
73
+ return service
74
+ }
75
+
76
+ // 请求管理相关函数
77
+ const pendingRequests = new Map()
78
+
79
+ function addPendingRequest(key, controller) {
80
+ pendingRequests.set(key, controller)
81
+ }
82
+
83
+ function removePendingRequest(key) {
84
+ if (pendingRequests.has(key)) {
85
+ pendingRequests.delete(key)
86
+ }
87
+ }
88
+
89
+ function cancelPendingRequest(key) {
90
+ if (pendingRequests.has(key)) {
91
+ pendingRequests.get(key).abort()
92
+ pendingRequests.delete(key)
93
+ }
94
+ }
95
+
96
+ function handleNetworkError(error) {
97
+ // 处理常规网络错误
98
+ console.error('网络连接异常:', error.message)
99
+ // 可根据不同错误码细化处理
100
+ if (navigator.onLine === false) {
101
+ console.error('当前网络不可用')
102
+ }
103
+ }
104
+
105
+ export default createAxiosService
@@ -0,0 +1,38 @@
1
+ import { createAxiosService } from './Axios.js'
2
+
3
+ const axiosPlugin = {
4
+ install(Vue, options) {
5
+
6
+ const service = createAxiosService({
7
+ baseURL: window.https.WEBSWG,
8
+ token: Vue.prototype.$store.getters.token,
9
+ ...options
10
+ })
11
+
12
+ // 全局挂载
13
+ Vue.config.globalProperties.$http = service
14
+
15
+ // 提供独立的 API 方法
16
+ Vue.provide('axios', service)
17
+
18
+ // 添加自定义方法
19
+ service.uploadFile = (url, file, onProgress) => {
20
+ const formData = new FormData()
21
+ formData.append('file', file)
22
+
23
+ return service.post(url, formData, {
24
+ headers: { 'Content-Type': 'multipart/form-data' },
25
+ onUploadProgress: (progressEvent) => {
26
+ if (progressEvent.lengthComputable && onProgress) {
27
+ const percent = Math.round(
28
+ (progressEvent.loaded * 100) / progressEvent.total
29
+ )
30
+ onProgress(percent)
31
+ }
32
+ }
33
+ })
34
+ }
35
+ }
36
+ }
37
+
38
+ export default axiosPlugin
package/utils/Tree.js CHANGED
@@ -14,7 +14,7 @@ const defaultReplaceFields = {
14
14
  * @param {string} [replaceFields.key='id'] 键名字段名
15
15
  * @returns {Array} 提取的键值数组
16
16
  */
17
- export function getTreeKeys(
17
+ export function getTreeKey(
18
18
  nodes = [],
19
19
  parent = false,
20
20
  { children = 'children', key = 'id' } = {}
@@ -1,145 +0,0 @@
1
- (function (win, lib) {
2
- var doc = win.document;
3
- var docEl = doc.documentElement;
4
- var metaEl = doc.querySelector('meta[name="viewport"]');
5
- var flexibleEl = doc.querySelector('meta[name="flexible"]');
6
- var dpr = 0;
7
- var scale = 0;
8
- var tid;
9
- var flexible = lib.flexible || (lib.flexible = {});
10
-
11
- if (metaEl) {
12
- console.warn("将根据已有的meta标签来设置缩放比例");
13
- var match = metaEl
14
- .getAttribute("content")
15
- .match(/initial\-scale=([\d\.]+)/);
16
- if (match) {
17
- scale = parseFloat(match[1]);
18
- dpr = parseInt(1 / scale);
19
- }
20
- } else if (flexibleEl) {
21
- var content = flexibleEl.getAttribute("content");
22
- if (content) {
23
- var initialDpr = content.match(/initial\-dpr=([\d\.]+)/);
24
- var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/);
25
- if (initialDpr) {
26
- dpr = parseFloat(initialDpr[1]);
27
- scale = parseFloat((1 / dpr).toFixed(2));
28
- }
29
- if (maximumDpr) {
30
- dpr = parseFloat(maximumDpr[1]);
31
- scale = parseFloat((1 / dpr).toFixed(2));
32
- }
33
- }
34
- }
35
-
36
- if (!dpr && !scale) {
37
- var isAndroid = win.navigator.appVersion.match(/android/gi);
38
- var isIPhone = win.navigator.appVersion.match(/iphone/gi);
39
- var devicePixelRatio = win.devicePixelRatio;
40
- if (isIPhone) {
41
- // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
42
- if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
43
- dpr = 3;
44
- } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
45
- dpr = 2;
46
- } else {
47
- dpr = 1;
48
- }
49
- } else {
50
- // 其他设备下,仍旧使用1倍的方案
51
- dpr = 1;
52
- }
53
- scale = 1 / dpr;
54
- }
55
-
56
- docEl.setAttribute("data-dpr", dpr);
57
- if (!metaEl) {
58
- metaEl = doc.createElement("meta");
59
- metaEl.setAttribute("name", "viewport");
60
- metaEl.setAttribute(
61
- "content",
62
- "initial-scale=" +
63
- scale +
64
- ", maximum-scale=" +
65
- scale +
66
- ", minimum-scale=" +
67
- scale +
68
- ", user-scalable=no"
69
- );
70
- if (docEl.firstElementChild) {
71
- docEl.firstElementChild.appendChild(metaEl);
72
- } else {
73
- var wrap = doc.createElement("div");
74
- wrap.appendChild(metaEl);
75
- doc.write(wrap.innerHTML);
76
- }
77
- }
78
-
79
- function refreshRem(scale) {
80
- scale ??= localStorage.getItem("Biz-rem-scale");
81
- scale ??= 1;
82
- var width = docEl.getBoundingClientRect().width;
83
- if (width / dpr > 540) {
84
- width = width * dpr * scale;
85
- }
86
- var rem = width / 100;
87
-
88
- // console.warn('refreshRem', rem);
89
-
90
- docEl.style.fontSize = rem + "px";
91
- flexible.rem = win.rem = rem;
92
- flexible.scale = win.scale = scale;
93
- localStorage.setItem("Biz-rem-scale", scale);
94
- }
95
-
96
- win.addEventListener(
97
- "resize",
98
- function () {
99
- clearTimeout(tid);
100
- tid = setTimeout(refreshRem, 300);
101
- },
102
- false
103
- );
104
- win.addEventListener(
105
- "pageshow",
106
- function (e) {
107
- if (e.persisted) {
108
- clearTimeout(tid);
109
- tid = setTimeout(refreshRem, 300);
110
- }
111
- },
112
- false
113
- );
114
-
115
- if (doc.readyState === "complete") {
116
- doc.body.style.fontSize = 12 * dpr + "px";
117
- } else {
118
- doc.addEventListener(
119
- "DOMContentLoaded",
120
- function (e) {
121
- doc.body.style.fontSize = 12 * dpr + "px";
122
- },
123
- false
124
- );
125
- }
126
-
127
- refreshRem();
128
-
129
- flexible.dpr = win.dpr = dpr;
130
- flexible.refreshRem = refreshRem;
131
- flexible.rem2px = function (d) {
132
- var val = parseFloat(d) * this.rem;
133
- if (typeof d === "string" && d.match(/rem$/)) {
134
- val += "px";
135
- }
136
- return val;
137
- };
138
- flexible.px2rem = function (d) {
139
- var val = parseFloat(d) / this.rem;
140
- if (typeof d === "string" && d.match(/px$/)) {
141
- val += "rem";
142
- }
143
- return val;
144
- };
145
- })(window, window["lib"] || (window["lib"] = {}));
@@ -1,39 +0,0 @@
1
- import 'amfe-flexible'
2
-
3
- export function autoFlexible(designWidth = 1920) {
4
-
5
- // designWidth 设计稿的宽度基准
6
- // 动态调整根字体大小的函数
7
- const updateRootFontSize = () => {
8
- const baseSize = 14 // 基准字体大小
9
- const minFontSize = 12 // 最小字体大小
10
- const maxFontSize = 16 // 最大字体大小
11
- const clientWidth = document.documentElement.clientWidth // 当前窗口的宽度
12
- const scale = clientWidth / designWidth // 计算当前窗口宽度与设计稿宽度的比例
13
- let newSize = baseSize * scale
14
-
15
- // 限制字体大小在最小和最大范围内
16
- if (newSize < minFontSize) {
17
- newSize = minFontSize
18
- } else if (newSize > maxFontSize) {
19
- newSize = maxFontSize
20
- }
21
-
22
- // 判断是否为弹窗,如若弹窗大小不为最大最小值则在基础上添加对应比例差
23
- const isModal = document.documentURI.includes('?type=modal')
24
- if (isModal) {
25
- newSize = newSize + baseSize * (1920 - designWidth) / 1920
26
- }
27
-
28
- console.log(newSize, '不同屏幕下字体大小')
29
-
30
- // 设置根元素的字体大小
31
- document.documentElement.style.fontSize = `${newSize}px`
32
- }
33
-
34
- // 监听窗口大小变化,并动态调整字体大小
35
- window.addEventListener('resize', () => updateRootFontSize(designWidth))
36
-
37
- // 初始化时立即设置一次字体大小
38
- updateRootFontSize(designWidth)
39
- }
package/utils/flexible.js DELETED
@@ -1,145 +0,0 @@
1
- (function (win, lib) {
2
- var doc = win.document;
3
- var docEl = doc.documentElement;
4
- var metaEl = doc.querySelector('meta[name="viewport"]');
5
- var flexibleEl = doc.querySelector('meta[name="flexible"]');
6
- var dpr = 0;
7
- var scale = 0;
8
- var tid;
9
- var flexible = lib.flexible || (lib.flexible = {});
10
-
11
- if (metaEl) {
12
- console.warn("将根据已有的meta标签来设置缩放比例");
13
- var match = metaEl
14
- .getAttribute("content")
15
- .match(/initial\-scale=([\d\.]+)/);
16
- if (match) {
17
- scale = parseFloat(match[1]);
18
- dpr = parseInt(1 / scale);
19
- }
20
- } else if (flexibleEl) {
21
- var content = flexibleEl.getAttribute("content");
22
- if (content) {
23
- var initialDpr = content.match(/initial\-dpr=([\d\.]+)/);
24
- var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/);
25
- if (initialDpr) {
26
- dpr = parseFloat(initialDpr[1]);
27
- scale = parseFloat((1 / dpr).toFixed(2));
28
- }
29
- if (maximumDpr) {
30
- dpr = parseFloat(maximumDpr[1]);
31
- scale = parseFloat((1 / dpr).toFixed(2));
32
- }
33
- }
34
- }
35
-
36
- if (!dpr && !scale) {
37
- var isAndroid = win.navigator.appVersion.match(/android/gi);
38
- var isIPhone = win.navigator.appVersion.match(/iphone/gi);
39
- var devicePixelRatio = win.devicePixelRatio;
40
- if (isIPhone) {
41
- // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
42
- if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
43
- dpr = 3;
44
- } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
45
- dpr = 2;
46
- } else {
47
- dpr = 1;
48
- }
49
- } else {
50
- // 其他设备下,仍旧使用1倍的方案
51
- dpr = 1;
52
- }
53
- scale = 1 / dpr;
54
- }
55
-
56
- docEl.setAttribute("data-dpr", dpr);
57
- if (!metaEl) {
58
- metaEl = doc.createElement("meta");
59
- metaEl.setAttribute("name", "viewport");
60
- metaEl.setAttribute(
61
- "content",
62
- "initial-scale=" +
63
- scale +
64
- ", maximum-scale=" +
65
- scale +
66
- ", minimum-scale=" +
67
- scale +
68
- ", user-scalable=no"
69
- );
70
- if (docEl.firstElementChild) {
71
- docEl.firstElementChild.appendChild(metaEl);
72
- } else {
73
- var wrap = doc.createElement("div");
74
- wrap.appendChild(metaEl);
75
- doc.write(wrap.innerHTML);
76
- }
77
- }
78
-
79
- function refreshRem(scale) {
80
- scale ??= localStorage.getItem("Biz-rem-scale");
81
- scale ??= 1;
82
- var width = docEl.getBoundingClientRect().width;
83
- if (width / dpr > 540) {
84
- width = width * dpr * scale;
85
- }
86
- var rem = width / 100;
87
-
88
- // console.warn('refreshRem', rem);
89
-
90
- docEl.style.fontSize = rem + "px";
91
- flexible.rem = win.rem = rem;
92
- flexible.scale = win.scale = scale;
93
- localStorage.setItem("Biz-rem-scale", scale);
94
- }
95
-
96
- win.addEventListener(
97
- "resize",
98
- function () {
99
- clearTimeout(tid);
100
- tid = setTimeout(refreshRem, 300);
101
- },
102
- false
103
- );
104
- win.addEventListener(
105
- "pageshow",
106
- function (e) {
107
- if (e.persisted) {
108
- clearTimeout(tid);
109
- tid = setTimeout(refreshRem, 300);
110
- }
111
- },
112
- false
113
- );
114
-
115
- if (doc.readyState === "complete") {
116
- doc.body.style.fontSize = 12 * dpr + "px";
117
- } else {
118
- doc.addEventListener(
119
- "DOMContentLoaded",
120
- function (e) {
121
- doc.body.style.fontSize = 12 * dpr + "px";
122
- },
123
- false
124
- );
125
- }
126
-
127
- refreshRem();
128
-
129
- flexible.dpr = win.dpr = dpr;
130
- flexible.refreshRem = refreshRem;
131
- flexible.rem2px = function (d) {
132
- var val = parseFloat(d) * this.rem;
133
- if (typeof d === "string" && d.match(/rem$/)) {
134
- val += "px";
135
- }
136
- return val;
137
- };
138
- flexible.px2rem = function (d) {
139
- var val = parseFloat(d) / this.rem;
140
- if (typeof d === "string" && d.match(/px$/)) {
141
- val += "rem";
142
- }
143
- return val;
144
- };
145
- })(window, window["lib"] || (window["lib"] = {}));