【更新】用户提出左侧机构树不输入内容点击查询无法加载子节点问题修复

This commit is contained in:
俞宝山
2026-03-12 14:28:40 +08:00
parent 447c4cad2d
commit a8e2bfa1ca
7 changed files with 51 additions and 42 deletions

View File

@@ -15,6 +15,7 @@
<a-spin v-else-if="treeData.length > 0" :spinning="treeLoading">
<a-tree
v-model:expandedKeys="defaultExpandedKeys"
v-model:loadedKeys="treeLoadedKeys"
:show-line="{ showLeafIcon: false }"
:tree-data="treeData"
:field-names="treeFieldNames"
@@ -127,7 +128,6 @@
<script setup name="bizOrg">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import { triggerRef, onMounted, onActivated, onUnmounted } from 'vue'
import bizOrgApi from '@/api/biz/bizOrgApi'
import Form from './form.vue'
@@ -219,6 +219,7 @@
const treeLoading = ref(true)
const treeSearchKey = ref('')
const searchMode = ref(false)
const treeLoadedKeys = ref([])
// 收集树所有节点key用于搜索时全部展开
const collectTreeKeys = (nodes) => {
const keys = []
@@ -262,17 +263,18 @@
.orgTree()
.then((res) => {
if (res !== null) {
// 重置懒加载状态和展开状态,避免树组件缓存导致无法展开
treeLoadedKeys.value = []
defaultExpandedKeys.value = []
treeData.value = res.map((item) => {
return {
...item,
isLeaf: item.isLeaf === undefined ? false : item.isLeaf
}
})
if (isEmpty(defaultExpandedKeys.value)) {
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value.push(treeData.value[0].id)
}
// 只有一个根节点时自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value = [treeData.value[0].id]
}
}
})

View File

@@ -15,6 +15,7 @@
<a-spin v-else-if="treeData.length > 0" :spinning="treeLoading">
<a-tree
v-model:expandedKeys="defaultExpandedKeys"
v-model:loadedKeys="treeLoadedKeys"
:show-line="{ showLeafIcon: false }"
:tree-data="treeData"
:field-names="treeFieldNames"
@@ -118,7 +119,6 @@
<script setup name="bizPosition">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import { triggerRef, onMounted, onActivated, onUnmounted } from 'vue'
import bizPositionApi from '@/api/biz/bizPositionApi'
import bizOrgApi from '@/api/biz/bizOrgApi'
@@ -210,6 +210,7 @@
const treeLoading = ref(true)
const treeSearchKey = ref('')
const searchMode = ref(false)
const treeLoadedKeys = ref([])
const collectTreeKeys = (nodes) => {
const keys = []
const traverse = (list) => {
@@ -251,17 +252,17 @@
.orgTree()
.then((res) => {
if (res !== null) {
treeLoadedKeys.value = []
defaultExpandedKeys.value = []
treeData.value = res.map((item) => {
return {
...item,
isLeaf: item.isLeaf === undefined ? false : item.isLeaf
}
})
if (isEmpty(defaultExpandedKeys.value)) {
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value.push(treeData.value[0].id)
}
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value = [treeData.value[0].id]
}
}
})

View File

@@ -15,6 +15,7 @@
<a-spin v-else-if="treeData.length > 0" :spinning="treeLoading">
<a-tree
v-model:expandedKeys="defaultExpandedKeys"
v-model:loadedKeys="treeLoadedKeys"
:show-line="{ showLeafIcon: false }"
:tree-data="treeData"
:field-names="treeFieldNames"
@@ -179,7 +180,6 @@
</template>
<script setup name="bizUser">
import { message, Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import { triggerRef, onMounted, onActivated, onUnmounted } from 'vue'
import tool from '@/utils/tool'
import downloadUtil from '@/utils/downloadUtil'
@@ -284,6 +284,7 @@
const treeLoading = ref(true)
const treeSearchKey = ref('')
const searchMode = ref(false)
const treeLoadedKeys = ref([])
const collectTreeKeys = (nodes) => {
const keys = []
const traverse = (list) => {
@@ -325,17 +326,17 @@
.orgTree()
.then((res) => {
if (res !== null) {
treeLoadedKeys.value = []
defaultExpandedKeys.value = []
treeData.value = res.map((item) => {
return {
...item,
isLeaf: item.isLeaf === undefined ? false : item.isLeaf
}
})
if (isEmpty(defaultExpandedKeys.value)) {
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value.push(treeData.value[0].id)
}
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value = [treeData.value[0].id]
}
}
})

View File

@@ -15,6 +15,7 @@
<a-spin v-else-if="treeData.length > 0" :spinning="treeLoading">
<a-tree
v-model:expandedKeys="defaultExpandedKeys"
v-model:loadedKeys="treeLoadedKeys"
:show-line="{ showLeafIcon: false }"
:tree-data="treeData"
:field-names="treeFieldNames"
@@ -126,7 +127,6 @@
<script setup name="sysOrg">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import { triggerRef, onMounted, onActivated, onUnmounted } from 'vue'
import orgApi from '@/api/sys/orgApi'
import Form from './form.vue'
@@ -217,6 +217,7 @@
const treeLoading = ref(true)
const treeSearchKey = ref('')
const searchMode = ref(false)
const treeLoadedKeys = ref([])
// 收集树所有节点key用于搜索时全部展开
const collectTreeKeys = (nodes) => {
const keys = []
@@ -261,17 +262,18 @@
.orgTree()
.then((res) => {
if (res !== null) {
// 重置懒加载状态和展开状态,避免树组件缓存导致无法展开
treeLoadedKeys.value = []
defaultExpandedKeys.value = []
treeData.value = res.map((item) => {
return {
...item,
isLeaf: item.isLeaf === undefined ? false : item.isLeaf
}
})
if (isEmpty(defaultExpandedKeys.value)) {
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value.push(treeData.value[0].id)
}
// 只有一个根节点时自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value = [treeData.value[0].id]
}
}
})

View File

@@ -15,6 +15,7 @@
<a-spin v-else-if="treeData.length > 0" :spinning="treeLoading">
<a-tree
v-model:expandedKeys="defaultExpandedKeys"
v-model:loadedKeys="treeLoadedKeys"
:show-line="{ showLeafIcon: false }"
:tree-data="treeData"
:field-names="treeFieldNames"
@@ -118,7 +119,6 @@
<script setup name="sysPosition">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import { triggerRef, onMounted, onActivated, onUnmounted } from 'vue'
import positionApi from '@/api/sys/positionApi'
import orgApi from '@/api/sys/orgApi'
@@ -207,6 +207,7 @@
const treeLoading = ref(true)
const treeSearchKey = ref('')
const searchMode = ref(false)
const treeLoadedKeys = ref([])
const collectTreeKeys = (nodes) => {
const keys = []
const traverse = (list) => {
@@ -248,17 +249,17 @@
.orgTree()
.then((res) => {
if (res !== null) {
treeLoadedKeys.value = []
defaultExpandedKeys.value = []
treeData.value = res.map((item) => {
return {
...item,
isLeaf: item.isLeaf === undefined ? false : item.isLeaf
}
})
if (isEmpty(defaultExpandedKeys.value)) {
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value.push(treeData.value[0].id)
}
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value = [treeData.value[0].id]
}
}
})

View File

@@ -15,6 +15,7 @@
<a-tree
v-else-if="treeData.length > 0"
v-model:expandedKeys="defaultExpandedKeys"
v-model:loadedKeys="treeLoadedKeys"
:show-line="{ showLeafIcon: false }"
:tree-data="treeData"
:field-names="treeFieldNames"
@@ -153,7 +154,6 @@
<script setup name="sysRole">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import { triggerRef, onMounted, onActivated, onUnmounted } from 'vue'
import roleApi from '@/api/sys/roleApi'
import orgApi from '@/api/sys/orgApi'
@@ -255,6 +255,7 @@
const treeLoading = ref(true)
const treeSearchKey = ref('')
const searchMode = ref(false)
const treeLoadedKeys = ref([])
const collectTreeKeys = (nodes) => {
const keys = []
const traverse = (list) => {
@@ -306,6 +307,8 @@
isLeaf: true
}
]
treeLoadedKeys.value = []
defaultExpandedKeys.value = []
treeData.value = globalRoleType.concat(
res.map((item) => {
return {
@@ -314,11 +317,9 @@
}
})
)
if (isEmpty(defaultExpandedKeys.value)) {
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value.push(treeData.value[0].id)
}
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value = [treeData.value[0].id]
}
}
})

View File

@@ -15,6 +15,7 @@
<a-spin v-else-if="treeData.length > 0" :spinning="treeLoading">
<a-tree
v-model:expandedKeys="defaultExpandedKeys"
v-model:loadedKeys="treeLoadedKeys"
:show-line="{ showLeafIcon: false }"
:tree-data="treeData"
:field-names="treeFieldNames"
@@ -198,7 +199,6 @@
<script setup name="sysUser">
import { message, Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import { triggerRef, onMounted, onActivated, onUnmounted } from 'vue'
import tool from '@/utils/tool'
import downloadUtil from '@/utils/downloadUtil'
@@ -301,6 +301,7 @@
const treeLoading = ref(true)
const treeSearchKey = ref('')
const searchMode = ref(false)
const treeLoadedKeys = ref([])
const collectTreeKeys = (nodes) => {
const keys = []
const traverse = (list) => {
@@ -342,17 +343,17 @@
.orgTree()
.then((res) => {
if (res !== null) {
treeLoadedKeys.value = []
defaultExpandedKeys.value = []
treeData.value = res.map((item) => {
return {
...item,
isLeaf: item.isLeaf === undefined ? false : item.isLeaf
}
})
if (isEmpty(defaultExpandedKeys.value)) {
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value.push(treeData.value[0].id)
}
// 只有一个根节点时才自动展开
if (treeData.value.length === 1) {
defaultExpandedKeys.value = [treeData.value[0].id]
}
}
})