From a08fbc3b77ea2f17f20f2c91e7e65a5f543e63ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Chuailei000=E2=80=9D?= <2280131253@qq.com> Date: Wed, 18 Oct 2023 15:57:59 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96table=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=9C=A8=E6=9C=89=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E5=88=97=E8=A1=A8=E4=BC=9A?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E8=AF=B7=E6=B1=82=E6=8E=A5=E5=8F=A3=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Table/TagSearch/index.vue | 29 ++++++++++++------------ 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/components/Table/TagSearch/index.vue b/src/components/Table/TagSearch/index.vue index cc8615ddb..a5ff67bff 100644 --- a/src/components/Table/TagSearch/index.vue +++ b/src/components/Table/TagSearch/index.vue @@ -107,9 +107,16 @@ export default { }, watch: { options: { - handler(val) { - if (val && val.length > 0) { - const routeFilter = this.checkInTableColumns() + handler(newVal, oldVal) { + if (newVal && newVal.length > 0) { + const routeFilter = this.checkInTableColumns(newVal) + if (oldVal.length > 0 && newVal.length !== oldVal.length) { + const beforeRouteFilter = this.checkInTableColumns(oldVal) + // 如果2次过滤的参数相同就不在重复请求 + if (_.isEqual(routeFilter, beforeRouteFilter)) { + return + } + } this.filterTagSearch(routeFilter) } }, @@ -121,19 +128,11 @@ export default { } } }, - mounted() { - setTimeout(() => { - if (Object.keys(this.filterMaps).length > 0) { - return this.$emit('tagSearch', this.filterMaps) - } - }, 400) - // this.$nextTick(() => this.$emit('tagSearch', this.filterMaps)) - }, methods: { // 获取url中的查询条件,判断是不是包含在当前查询条件里 - checkInTableColumns() { + checkInTableColumns(options) { const searchFieldOptions = {} - const queryInfoValues = this.options.map((i) => i.value) + const queryInfoValues = options.map((i) => i.value) const routeQuery = this.getUrlQuery ? this.$route?.query : {} const routeQueryKeysLength = Object.keys(routeQuery).length if (routeQueryKeysLength < 1) return searchFieldOptions @@ -211,10 +210,10 @@ export default { ...asFilterTags, ...routeFilter } - if (Object.keys(routeFilter).length > 0) { + if (Object.keys(this.filterTags).length > 0) { setTimeout(() => { return this.$emit('tagSearch', this.filterMaps) - }, 490) + }, 400) } }, getValueLabel(key, value) {