{"remainingRequest":"D:\\jenkins\\workspace\\xypm-web-prod\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xypm-web-prod\\src\\components\\AtTable.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xypm-web-prod\\src\\components\\AtTable.vue","mtime":1673867682726},{"path":"D:\\jenkins\\workspace\\xypm-web-prod\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xypm-web-prod\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xypm-web-prod\\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//\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 justShowSearch: {\r\n //为true时只显示高级搜索中的查询条件\r\n type: Boolean,\r\n default: false,\r\n },\r\n showAdvancedSearchText: {\r\n type: String,\r\n default: '基础搜索',\r\n },\r\n hideAdvancedSearchText: {\r\n type: String,\r\n default: '高级搜索',\r\n },\r\n elAuth: {\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 showAdvancedSearch: false,\r\n hasSearchPanel: false,\r\n }\r\n },\r\n watch: {\r\n justShowSearch: {\r\n handler(val) {\r\n if (val) {\r\n this.showAdvancedSearch = true\r\n }\r\n },\r\n immediate: true,\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 // 判断是否有高级搜索面板\r\n this.hasSearchPanel = !!this.$scopedSlots.search\r\n this.$watch('pageResult', (n, o) => {\r\n if (n !== o) {\r\n this.pagination = {...n}\r\n }\r\n })\r\n this.$watch('showAdvancedSearch', (n, o) => {\r\n if (n !== o) {\r\n // if (n) {\r\n // this.quickSearchWord = null;\r\n // }\r\n // 显示或收起搜索面板时,重新计算表格高度\r\n this.calcTableHeight(500)\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 handleScroll() {\r\n console.dir(this.$refs.table.$el.children[2].scrollTop)\r\n },\r\n //返回一个boolean类型,是否显示列表按钮\r\n getMethodauth(elAuth) {\r\n if(!elAuth) return true\r\n let allMethod = window.sessionStorage.allMethod\r\n let methodAuth = window.sessionStorage.methodAuth\r\n let allMethodArray = allMethod && allMethod.split(',')\r\n let methodAuthArray = methodAuth && methodAuth.split(',')\r\n // 无权限则隐藏按钮\r\n if (\r\n methodAuthArray &&\r\n methodAuthArray.includes(elAuth) &&\r\n allMethodArray &&\r\n allMethodArray.includes(elAuth)\r\n ) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n },\r\n // 高级搜索展开或关闭时,清空表单数据\r\n showAdvanced() {\r\n this.showAdvancedSearch = !this.showAdvancedSearch\r\n this.$parent.searchForm = {}\r\n this.$parent.$refs.projectInfo.getProjectData()\r\n },\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 const toolbarPanelHeight = this.$refs.toolbarPanel.clientHeight || 0\r\n\r\n const searchPanelHeight =\r\n this.$refs.searchPanel && this.$refs.searchPanel.clientHeight\r\n ? this.$refs.searchPanel.clientHeight\r\n : 0\r\n\r\n const paginationPanelHeight =\r\n (this.$refs.paginationPanel &&\r\n this.$refs.paginationPanel.clientHeight) ||\r\n 0\r\n\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 },\r\n}\r\n",null]}