{"remainingRequest":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\artfess-module\\src\\components\\common\\DemensionSelector.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\artfess-module\\src\\components\\common\\DemensionSelector.vue","mtime":1675232038590},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport utils from \"@/utils.js\";\r\nimport { setTimeout } from \"timers\";\r\n\r\nexport default {\r\n name: \"demension-selector\",\r\n props: {\r\n value: {\r\n type: Array,\r\n default: () => {\r\n return [];\r\n }\r\n },\r\n data: Array,\r\n single: {\r\n type: Boolean,\r\n default: false\r\n },\r\n //服务端分页\r\n pagination: {\r\n type: Object,\r\n default: () => {\r\n return {\r\n page: 1,\r\n pageSize: 50,\r\n total: 31214\r\n };\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n loading: false,\r\n searchWord: null,\r\n //客户端分页\r\n paging: {\r\n page: 1,\r\n pageSize: 50\r\n },\r\n selectedId: null,\r\n selects: []\r\n };\r\n },\r\n watch: {\r\n data: function(newVal) {\r\n if (newVal && newVal.length > 0) {\r\n this.syncCheckedStatus();\r\n }\r\n }\r\n },\r\n created() {\r\n // 组件初始化时,复制一份分页信息\r\n this.oldPaging = { ...this.paging };\r\n },\r\n methods: {\r\n // 同步已选行到已选数据中去\r\n syncSelection2selects() {\r\n // 复制一份当前已选数据\r\n let tmpSelects = [...this.selects];\r\n // 先将当前页中的数据从已选数据中移除\r\n this.data.forEach(m => {\r\n tmpSelects.remove(m);\r\n });\r\n // 将剩余的已选数据与当前页选中的数据合并\r\n tmpSelects = [...tmpSelects, ...this.$refs.demTable.selection];\r\n // 数组去重\r\n this.selects = tmpSelects.unique(\"id\");\r\n },\r\n // 同步已选数据在Table中的选中状态\r\n syncCheckedStatus() {\r\n this.selectedId = null;\r\n if (this.single) {\r\n this.selects.length === 1 && (this.selectedId = this.selects[0].id);\r\n } else {\r\n if (!this.$refs.demTable || !this.$refs.demTable.selection) {\r\n throw \"未获取到维度列表,无法选择维度。\";\r\n }\r\n this.$refs.demTable.clearSelection();\r\n this.selects.length > 0 &&\r\n setTimeout(() => {\r\n this.selects.forEach(m => {\r\n if (\r\n this.data.some(n => {\r\n return utils.objectEquals(m, n);\r\n })\r\n ) {\r\n this.$refs.demTable.toggleRowSelection(m);\r\n }\r\n });\r\n });\r\n }\r\n },\r\n onShow() {\r\n // 每一次显示选择器时,重置当前选中数据为外部的v-model对象\r\n this.selects = [...this.value];\r\n this.reset();\r\n },\r\n onHide(sure) {\r\n // 在隐藏选择器时,如果点击的是确定按钮,则将当前选中数据更新到外部的v-model对象上\r\n if (sure) {\r\n this.$emit(\"input\", this.selects);\r\n }\r\n },\r\n // 加载数据,根据当前的搜索关键词及分页条件\r\n load() {\r\n this.loading = true;\r\n this.$emit(\r\n \"load\",\r\n {\r\n searchWord: this.searchWord,\r\n paging: this.paging\r\n },\r\n () => {\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n // 搜索事件\r\n search() {\r\n if (!this.searchWord || this.loading) {\r\n return;\r\n }\r\n this.paging = this.oldPaging;\r\n this.load();\r\n },\r\n // 重置事件\r\n reset() {\r\n this.searchWord = null;\r\n this.paging = this.oldPaging;\r\n this.load();\r\n },\r\n handleRowClick(row, column, event) {\r\n if (this.single) {\r\n this.selects = [row];\r\n this.selectedId = row.id;\r\n } else {\r\n if (!this.$refs.demTable || !this.$refs.demTable.selection) {\r\n throw \"未获取到维度列表,无法选择维度。\";\r\n }\r\n let _tag = true;\r\n this.$refs.demTable.selection.forEach(m => {\r\n if (m === row) {\r\n // 已选中该行时,取消选中状态\r\n this.$refs.demTable.toggleRowSelection(row, false);\r\n _tag = false;\r\n }\r\n });\r\n // 非取消选中情况下,将当前行设置为选中状态\r\n _tag && this.$refs.demTable.toggleRowSelection(row);\r\n this.syncSelection2selects();\r\n }\r\n },\r\n handleTableSelect() {\r\n this.syncSelection2selects();\r\n },\r\n handleSizeChange(size) {\r\n this.paging.pageSize = size;\r\n this.load();\r\n },\r\n handleCurrentChange(currentPage) {\r\n this.paging.page = currentPage;\r\n this.load();\r\n },\r\n move(direct) {\r\n let selectedAry = this.$refs.selectTree.getCheckedNodes();\r\n // 将调整顺序之后的数组赋值给Tree\r\n this.selects = utils.arrayMove(this.selects, selectedAry, direct);\r\n setTimeout(() => {\r\n // 调整顺序后恢复勾选状态\r\n this.$refs.selectTree.setCheckedNodes(selectedAry);\r\n });\r\n },\r\n removeSelected() {\r\n let selectedAry = this.$refs.selectTree.getCheckedNodes();\r\n selectedAry.forEach(item => {\r\n this.selects.remove(item);\r\n });\r\n this.syncCheckedStatus();\r\n },\r\n clearAllSelects() {\r\n this.selects = [];\r\n this.syncCheckedStatus();\r\n }\r\n }\r\n};\r\n",null]}