{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\AtTable.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\AtTable.vue","mtime":1667327528887},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport Sortable from 'sortablejs'\r\nexport default {\r\n name: 'AtTable',\r\n props: {\r\n data: Array,\r\n showHeader: {\r\n type: Boolean,\r\n default: true\r\n },\r\n defaultQuerys: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n pageResult: {\r\n type: Object,\r\n default: () => {\r\n return {page: 1, pageSize: 50, total: 0}\r\n }\r\n },\r\n paginationJustify: {\r\n type: String,\r\n default: 'end',\r\n validator: function(value) {\r\n return (\r\n ['start', 'end', 'center', 'space-around', 'space-between'].indexOf(\r\n value\r\n ) !== -1\r\n )\r\n }\r\n },\r\n pageSizes: {\r\n type: Array,\r\n default: () => {\r\n return [10, 20, 50, 100, 200, 300, 500]\r\n }\r\n },\r\n pagerCount: {\r\n type: Number,\r\n default: 11\r\n },\r\n defaultSorter: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n dialogTitle: {\r\n type: String,\r\n default: '添加'\r\n },\r\n dialogVisible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n dialogTop: {\r\n type: String,\r\n default: '8vh'\r\n },\r\n isDrag: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isShowFooter: {\r\n type: Boolean,\r\n default: true\r\n },\r\n dialogWidth: {\r\n type: String,\r\n default: '1000px'\r\n },\r\n stripe: {\r\n type: Boolean,\r\n default: true\r\n },\r\n defaultExpandAll: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isShowPagination: {\r\n type: Boolean,\r\n default: true\r\n },\r\n expandRowKeys: {\r\n type: Array,\r\n default: () => {\r\n return []\r\n }\r\n },\r\n isSortLoad: {\r\n type: Boolean,\r\n default: true\r\n },\r\n exportText: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n data() {\r\n return {\r\n filters: {},\r\n querys: [],\r\n sorter: null,\r\n tableMaxHeight: 400,\r\n pagination: {...this.pageResult},\r\n loading: false,\r\n selection: []\r\n }\r\n },\r\n mounted() {\r\n this.calcTableHeight()\r\n this.$root.$on('resize', () => {\r\n this.calcTableHeight(500)\r\n })\r\n this.$bus.$on('reHeight', () => {\r\n this.calcTableHeight()\r\n })\r\n this.load()\r\n if (this.isDrag) {\r\n this.rowDrop()\r\n }\r\n this.$watch('pageResult', (n, o) => {\r\n if (n !== o) {\r\n this.pagination = {...n}\r\n }\r\n })\r\n },\r\n computed: {\r\n calDefaultQuerys: function() {\r\n let calQuerys = []\r\n let query = {\r\n group: 'defaultQueryGroup',\r\n operation: 'EQUAL',\r\n relation: 'AND'\r\n }\r\n this.defaultQuerys.forEach(c => {\r\n calQuerys.push({...query, ...c})\r\n })\r\n return calQuerys\r\n }\r\n },\r\n created() {\r\n this.$on('advance-search', data => this.advanceSearch(data))\r\n },\r\n methods: {\r\n handleClearFilter() {\r\n this.$refs.table.clearFilter()\r\n this.filters = {}\r\n this.clearQueryByGroupName('quick')\r\n this.clearQueryByGroupName('advance')\r\n this.load()\r\n },\r\n setClassName({row, index}) {\r\n // 通过自己的逻辑返回一个class或者空\r\n if (row.hasChildren) {\r\n return JSON.parse(row.hasChildren) ? '' : 'expand'\r\n }\r\n },\r\n tableRowClassName({row, rowIndex}) {\r\n if (rowIndex === 0) {\r\n return 'tableStyle'\r\n }\r\n return ''\r\n },\r\n handleRowClick(row, column, event) {\r\n this.$emit('row-click', row, column, event)\r\n },\r\n handleRowDBClick(row, column, event) {\r\n this.$emit('row-dblclick', row, column, event)\r\n },\r\n handleExpandChange(row) {\r\n this.$emit('expand-change', row)\r\n },\r\n handleTableSelect(selection, row) {\r\n this.selection = selection\r\n if (row) {\r\n this.$emit('select', selection, row)\r\n } else {\r\n this.$emit('select-all', selection)\r\n }\r\n },\r\n handleSortChange(column) {\r\n if (!column.order) {\r\n this.sorter = null\r\n } else {\r\n this.sorter = [\r\n {\r\n property: column.prop,\r\n direction: column.order == 'ascending' ? 'ASC' : 'DESC'\r\n }\r\n ]\r\n }\r\n if (isSortLoad) {\r\n this.load()\r\n }\r\n this.$emit('sort-change', column)\r\n },\r\n handleFilterChange(m) {\r\n this.filters = {...this.filters, ...m}\r\n Object.keys(this.filters).forEach(k => {\r\n if (!this.filters[k] || this.filters[k].length == 0) {\r\n delete this.filters[k]\r\n }\r\n })\r\n this.load()\r\n this.$emit('filter-change', m)\r\n },\r\n handleDialogCancel() {\r\n this.$emit('handleDialogCancel')\r\n /* 发送一个事件用于侧边栏按钮监听是否显示 */\r\n this.$bus.$emit('handleAsideBtn', true)\r\n },\r\n handleDialogClose(done) {\r\n this.$emit('handleDialogClose', done)\r\n /* 发送一个事件用于侧边栏按钮监听是否显示 */\r\n this.$bus.$emit('handleAsideBtn', true)\r\n },\r\n handleDialogExport() {\r\n this.$emit('handleDialogExport')\r\n /* 发送一个事件用于侧边栏按钮监听是否显示 */\r\n this.$bus.$emit('handleAsideBtn', true)\r\n },\r\n handleDialogSubmit(formName) {\r\n this.$emit('handleDialogSubmit', formName)\r\n },\r\n handleDialogOpen() {\r\n this.$emit('handleDialogOpen')\r\n /* 发送一个事件用于侧边栏按钮监听是否显示 */\r\n this.$bus.$emit('handleAsideBtn', false)\r\n },\r\n advanceSearch(data) {\r\n if (this.loading || !this.showAdvancedSearch) {\r\n return\r\n }\r\n this.clearQueryByGroupName('quick')\r\n this.clearQueryByGroupName('advance')\r\n data &&\r\n data.forEach(d => {\r\n let query = {\r\n property: d.prop,\r\n value: d.value,\r\n group: 'advance',\r\n relation: d.relation,\r\n operation: d.operation\r\n }\r\n query.value && this.querys.push(query)\r\n })\r\n this.load()\r\n },\r\n load(doNotResetPage) {\r\n this.loading = true\r\n // 默认重置页码为第一页\r\n if (!doNotResetPage) {\r\n this.pagination.page = 1\r\n }\r\n let param = {\r\n pageBean: this.pagination\r\n }\r\n if (this.sorter && this.sorter.length > 0) {\r\n param.sorter = this.sorter\r\n }\r\n // 处理排序字段\r\n if (this.defaultSorter.length > 0) {\r\n if (!param.sorter) {\r\n param.sorter = []\r\n }\r\n this.defaultSorter.forEach(item => {\r\n param.sorter.remove(item)\r\n })\r\n param.sorter = param.sorter.concat(this.defaultSorter)\r\n }\r\n // 处理过滤条件\r\n this.handleFilters()\r\n if (this.querys && this.querys.length > 0) {\r\n param.querys = this.querys\r\n }\r\n\r\n // 处理查询条件\r\n if (this.calDefaultQuerys.length > 0) {\r\n if (!param.querys) {\r\n param.querys = []\r\n }\r\n this.calDefaultQuerys.forEach(item => {\r\n param.querys.remove(item)\r\n })\r\n param.querys = param.querys.concat(this.calDefaultQuerys)\r\n }\r\n\r\n const me = this\r\n // 防止外部没有回调,设置10秒后自动取消加载中的状态\r\n const finalTickCB = setTimeout(function() {\r\n me.loading = false\r\n }, 10000)\r\n\r\n if (this.nopagination) {\r\n param.pageBean = {}\r\n }\r\n this.$emit('load', {...param}, () => {\r\n // 外部已经回调的情况下,取消倒计时\r\n clearTimeout(finalTickCB)\r\n me.loading = false\r\n this.isReset = false\r\n setTimeout(() => {\r\n me.$refs.quickSearch &&\r\n me.$refs.quickSearch.$children[0].$el.children[0].focus()\r\n })\r\n })\r\n },\r\n // 通过分组名称清除对应查询条件\r\n clearQueryByGroupName(groupName) {\r\n // 待删除的查询条件\r\n let toDelete = []\r\n this.querys &&\r\n this.querys.forEach(query => {\r\n if (query.group == groupName) {\r\n toDelete.push(query)\r\n }\r\n })\r\n toDelete.forEach(d => {\r\n this.querys.remove(d)\r\n })\r\n },\r\n handleFilters() {\r\n this.clearQueryByGroupName('filter')\r\n // 将过滤条件添加查询参数数组中\r\n if (this.filters && Object.keys(this.filters).length > 0) {\r\n Object.keys(this.filters).forEach(k => {\r\n const filter = this.filters[k]\r\n let query = {\r\n property: k,\r\n value: filter[0],\r\n group: 'filter',\r\n relation: 'AND'\r\n }\r\n if (filter.length == 1) {\r\n query.operation = 'EQUAL'\r\n this.querys.push(query)\r\n } else if (filter.length > 1) {\r\n query.operation = 'IN'\r\n query.value = filter\r\n this.querys.push(query)\r\n }\r\n })\r\n }\r\n },\r\n handleSizeChange(pageSize) {\r\n this.pagination = {...this.pagination, pageSize}\r\n this.load()\r\n },\r\n handleCurrentChange(page) {\r\n this.pagination = {...this.pagination, page}\r\n // 翻页时不重置页码\r\n this.load(true)\r\n },\r\n //行拖拽\r\n rowDrop() {\r\n const tbody = document\r\n .getElementById('AtTable')\r\n .querySelector('.el-table__body-wrapper tbody')\r\n const _this = this\r\n Sortable.create(tbody, {\r\n onEnd({newIndex, oldIndex}) {\r\n const currRow = _this.data.splice(oldIndex, 1)[0]\r\n _this.data.splice(newIndex, 0, currRow)\r\n }\r\n })\r\n },\r\n doLayout() {\r\n this.$refs.table.doLayout()\r\n },\r\n calcTableHeight(delay) {\r\n // 动态计算表格的高度,自适应当前容器\r\n setTimeout(() => {\r\n if (!this.$refs.tablePanel) {\r\n return\r\n }\r\n let tablePanelHeight\r\n const tabPanHeight = this.$parent.$parent.$el.clientHeight\r\n if (tabPanHeight) {\r\n tablePanelHeight = tabPanHeight\r\n } else {\r\n tablePanelHeight = this.$refs.tablePanel.$el.clientHeight\r\n }\r\n\r\n const toolbarPanelHeight = this.$refs.toolbarPanel.clientHeight || 0\r\n const searchPanelHeight =\r\n this.$refs.searchPanel && this.$refs.searchPanel.clientHeight\r\n ? this.$refs.searchPanel.clientHeight\r\n : 0\r\n const paginationPanelHeight =\r\n (this.$refs.paginationPanel &&\r\n this.$refs.paginationPanel.clientHeight) ||\r\n 0\r\n this.tableMaxHeight =\r\n tablePanelHeight -\r\n (searchPanelHeight > 0 ? 45 : 5) -\r\n toolbarPanelHeight -\r\n searchPanelHeight -\r\n paginationPanelHeight\r\n }, delay || 0)\r\n },\r\n clearSelection() {\r\n this.$refs.table.clearSelection()\r\n },\r\n toggleRowSelection(row, selected) {\r\n this.$refs.table.toggleRowSelection(row, selected)\r\n },\r\n getSelection () {\r\n return this.$refs.table.selection\r\n }\r\n }\r\n}\r\n",null]}