From 73f72b31164376e11d2cfa3d0c578f6cc35a9679 Mon Sep 17 00:00:00 2001 From: hyx Date: Tue, 6 Jun 2023 16:21:07 +0800 Subject: [PATCH] =?UTF-8?q?CN-1062=20=E4=BA=BA=E5=B7=A5=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3:=E7=9F=A5=E8=AF=86=E5=BA=93Filter=E9=80=89?= =?UTF-8?q?=E4=B8=AD=E6=89=80=E6=9C=89=E9=A1=B9=EF=BC=8C=E6=8A=98=E5=8F=A0?= =?UTF-8?q?=20'=E7=B1=BB=E5=88=AB=20/=20=E6=9D=A5=E6=BA=90'=EF=BC=8C?= =?UTF-8?q?=E5=86=8D=E6=AC=A1=E6=89=93=E5=BC=80=EF=BC=8C=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=A1=B9=E9=83=BD=E6=9C=AA=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/setting/KnowledgeFilter.vue | 107 ++++++++++++++++++++------ 1 file changed, 82 insertions(+), 25 deletions(-) diff --git a/src/views/setting/KnowledgeFilter.vue b/src/views/setting/KnowledgeFilter.vue index 2166a276..95ef6c53 100644 --- a/src/views/setting/KnowledgeFilter.vue +++ b/src/views/setting/KnowledgeFilter.vue @@ -4,7 +4,7 @@ {{ $t('knowledge.filters') }}
-
+
{{filterCategoryData.title}}
@@ -24,7 +24,7 @@
-
+
{{filterStatusData.title}}
@@ -79,7 +79,9 @@ export default { }, typeData: [], statusData: [], - defaultCheckedCategory: [] + defaultCheckedCategory: [], + defaultCheckedStatus: [0, 1], + filterParams: {} } }, watch: { @@ -91,20 +93,60 @@ export default { h('span', { class: 'count-tree-node' }, data.count) ]) }, + collapseCategory () { + this.filterCategoryData.collapse = !this.filterCategoryData.collapse + const self = this + if (!this.filterCategoryData.collapse) { + this.$nextTick(() => { + if (self.$refs.knowledgeTreeTypeFilter instanceof Array) { + self.$refs.knowledgeTreeTypeFilter[0].setCheckedKeys(this.defaultCheckedCategory) + } else { + self.$refs.knowledgeTreeTypeFilter.setCheckedKeys(this.defaultCheckedCategory) + } + }) + } + }, + collapseStatus () { + this.filterStatusData.collapse = !this.filterStatusData.collapse + const self = this + if (!this.filterStatusData.collapse) { + this.$nextTick(() => { + if (self.$refs.knowledgeTreeStatusFilter instanceof Array) { + self.$refs.knowledgeTreeStatusFilter[0].setCheckedKeys(this.defaultCheckedStatus) + } else { + self.$refs.knowledgeTreeStatusFilter.setCheckedKeys(this.defaultCheckedStatus) + } + }) + } + }, handleCheckedItemChange (data, checkinfo) { let typeCheckedNodes = [] - if (this.$refs.knowledgeTreeTypeFilter instanceof Array) { - typeCheckedNodes = this.$refs.knowledgeTreeTypeFilter[0].getCheckedNodes() - } else { - typeCheckedNodes = this.$refs.knowledgeTreeTypeFilter.getCheckedNodes() + if (this.$refs.knowledgeTreeTypeFilter) { + if (this.$refs.knowledgeTreeTypeFilter instanceof Array) { + typeCheckedNodes = this.$refs.knowledgeTreeTypeFilter[0].getCheckedNodes() + } else { + typeCheckedNodes = this.$refs.knowledgeTreeTypeFilter.getCheckedNodes() + } + const categoryIds = [] + typeCheckedNodes.forEach(item => { + categoryIds.push(item.id) + }) + this.defaultCheckedCategory = categoryIds + const typeHalfCheckedNodes = checkinfo.halfCheckedNodes + typeCheckedNodes = typeCheckedNodes.concat(typeHalfCheckedNodes) } - const typeHalfCheckedNodes = checkinfo.halfCheckedNodes - typeCheckedNodes = typeCheckedNodes.concat(typeHalfCheckedNodes) let statusCheckedNodes = [] - if (this.$refs.knowledgeTreeStatusFilter instanceof Array) { - statusCheckedNodes = this.$refs.knowledgeTreeStatusFilter[0].getCheckedNodes() - } else { - statusCheckedNodes = this.$refs.knowledgeTreeStatusFilter.getCheckedNodes() + if (this.$refs.knowledgeTreeStatusFilter) { + if (this.$refs.knowledgeTreeStatusFilter instanceof Array) { + statusCheckedNodes = this.$refs.knowledgeTreeStatusFilter[0].getCheckedNodes() + } else { + statusCheckedNodes = this.$refs.knowledgeTreeStatusFilter.getCheckedNodes() + } + const sourceIds = [] + statusCheckedNodes.forEach(item => { + sourceIds.push(item.id) + }) + this.defaultCheckedStatus = sourceIds } const typeCheckedLen = typeCheckedNodes.length const statusCheckedLen = statusCheckedNodes.length @@ -113,7 +155,7 @@ export default { this.filterCategoryData.data.forEach(item => { allSourceNum = allSourceNum + item.children.length }) - if (typeCheckedLen === 0 || statusCheckedLen === 0) { + if (this.defaultCheckedCategory.length === 0 || this.defaultCheckedStatus.length === 0) { this.$emit('clearList') } else { const categorys = [] @@ -126,17 +168,32 @@ export default { } }) if (!(categorys.length === this.filterCategoryData.data.length && sources.length === allSourceNum)) { - params = { - category: categorys.toString(), - source: sources.toString() + if (this.filterCategoryData.collapse) { + params = { + category: categorys.toString() ? categorys.toString() : this.filterParams.category, + source: sources.toString() ? sources.toString() : this.filterParams.source + } + } else { + params = { + category: categorys.toString(), + source: sources.toString() + } } } - if (statusCheckedLen === 1) { - params = { - ...params, - status: statusCheckedNodes[0].value + if (this.defaultCheckedStatus.length === 1) { + if (this.filterStatusData.collapse) { + params = { + ...params, + status: statusCheckedNodes[0].value ? statusCheckedNodes[0].value : this.filterParams.status + } + } else { + params = { + ...params, + status: statusCheckedNodes[0].value + } } } + this.filterParams = params this.$emit('reload', params, true) } }, @@ -158,13 +215,12 @@ export default { const self = this this.$nextTick(() => { self.$refs.knowledgeTreeTypeFilter.setCheckedKeys(this.defaultCheckedCategory) - }) - this.$nextTick(() => { - self.$refs.knowledgeTreeStatusFilter.setCheckedKeys([0, 1]) + self.$refs.knowledgeTreeStatusFilter.setCheckedKeys(this.defaultCheckedStatus) }) }) }, initTypeData () { + this.filterCategoryData.data = [] this.typeData.forEach((type, typeIndex) => { const categoryLabel = knowledgeBaseCategory.find(t => t.value === type.name) const categoryId = typeIndex @@ -182,7 +238,7 @@ export default { sourceList.forEach((item, sourceIndex) => { const sourceLabel = knowledgeBaseSource.find(t => t.value === item.name) const source = { - id: Number(typeIndex + '' + sourceIndex), + id: typeIndex + '' + sourceIndex, label: sourceLabel ? sourceLabel.name : item.name, value: item.name, count: item.count, @@ -195,6 +251,7 @@ export default { initStatusData () { const enableCount = 0 const disableCount = 0 + this.filterStatusData.data = [] this.statusData.forEach((data, index) => { this.filterStatusData.data.push({ id: index,