diff --git a/package.json b/package.json index 95b93d9f2..bc00a2611 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "js-cookie": "2.2.0", "less": "^3.10.3", "less-loader": "^5.0.0", + "lodash": "^4.17.15", "lodash.clonedeep": "^4.5.0", "lodash.frompairs": "^4.0.1", "lodash.get": "^4.4.2", diff --git a/src/components/DataTable/compenents/el-data-table/el-data-table.vue b/src/components/DataTable/compenents/el-data-table/el-data-table.vue index 2d7c7a49f..6188027a1 100644 --- a/src/components/DataTable/compenents/el-data-table/el-data-table.vue +++ b/src/components/DataTable/compenents/el-data-table/el-data-table.vue @@ -727,7 +727,8 @@ export default { // JSON.stringify是为了后面深拷贝作准备 initExtraQuery: JSON.stringify(this.extraQuery || this.customQuery || {}), isSearchCollapse: false, - showNoData: false + showNoData: false, + innerQuery: {} } }, computed: { @@ -849,6 +850,7 @@ export default { formValue = this.$refs.searchForm.getFormValue() Object.assign(query, formValue) } + Object.assign(query, this.innerQuery) Object.assign(query, this._extraQuery) query[this.pageSizeKey] = this.hasPagination @@ -939,18 +941,9 @@ export default { this.loading = false }) }, - async search() { - const form = this.$refs.searchForm - const valid = await new Promise(r => form.validate(r)) - if (!valid) return - - try { - await this.beforeSearch(form.getFormValue()) - this.page = defaultFirstPage - this.getList() - } catch (err) { - this.$emit('error', err) - } + search(attrs) { + this.innerQuery = Object.assign(this.innerQuery, attrs) + return this.getList() }, /** * 重置查询,相当于点击「重置」按钮 @@ -1165,15 +1158,12 @@ export default { return record[this.treeChildKey] && record[this.treeChildKey].length > 0 }, onSortChange({ column, prop, order }) { - if (!this.extraQuery) { - this.extraQuery = {} - } if (!order) { - delete this.extraQuery['sort'] - delete this.extraQuery['direction'] + delete this.innerQuery['sort'] + delete this.innerQuery['direction'] } else { - this.extraQuery['sort'] = prop - this.extraQuery['direction'] = order + this.innerQuery['sort'] = prop + this.innerQuery['direction'] = order } this.getList() } diff --git a/src/components/DataTable/index.vue b/src/components/DataTable/index.vue index 7f82883c8..b52b3f76d 100644 --- a/src/components/DataTable/index.vue +++ b/src/components/DataTable/index.vue @@ -91,6 +91,9 @@ export default { getList() { this.$refs.table.clearSelection() return this.$refs.table.getList() + }, + search(attrs) { + return this.$refs.table.search(attrs) } } } diff --git a/src/components/ListTable/TableAction.vue b/src/components/ListTable/TableAction.vue index 0748e5562..3eca507ca 100644 --- a/src/components/ListTable/TableAction.vue +++ b/src/components/ListTable/TableAction.vue @@ -14,6 +14,7 @@