forked from github/dataease
fix(仪表板): 修复反复点击树排序可能出现结果不一致问题
This commit is contained in:
parent
ad02177bd6
commit
696c4a7a2f
@ -1,23 +1,25 @@
|
|||||||
import { BusiTreeNode } from '@/models/tree/TreeNode'
|
import { BusiTreeNode } from '@/models/tree/TreeNode'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
|
|
||||||
export default function treeSort(tree: BusiTreeNode[], sortType: string, historySortType: string) {
|
export default function treeSort(tree: BusiTreeNode[], sortType: string) {
|
||||||
const result = _.cloneDeep(tree)
|
const result = _.cloneDeep(tree)
|
||||||
sortPer(result, sortType, historySortType)
|
sortPer(result, sortType)
|
||||||
_.forEach(result, node => {
|
_.forEach(result, node => {
|
||||||
if (node.children && node.children.length > 0) {
|
if (node.children && node.children.length > 0) {
|
||||||
sortPer(node.children, sortType, historySortType)
|
sortPer(node.children, sortType)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
export const sortPer = (subTree: BusiTreeNode[], sortType: string, historySortType: string) => {
|
export const sortPer = (subTree: BusiTreeNode[], sortType: string) => {
|
||||||
if (sortType === 'name_desc') {
|
if (sortType === 'name_desc') {
|
||||||
subTree.sort((a, b) => b.name.localeCompare(a.name, 'zh-Hans-CN', { sensitivity: 'accent' }))
|
subTree.sort((a, b) => b.name.localeCompare(a.name, 'zh-Hans-CN', { sensitivity: 'accent' }))
|
||||||
} else if (sortType === 'name_asc') {
|
} else if (sortType === 'name_asc') {
|
||||||
subTree.sort((a, b) => a.name.localeCompare(b.name, 'zh-Hans-CN', { sensitivity: 'accent' }))
|
subTree.sort((a, b) => a.name.localeCompare(b.name, 'zh-Hans-CN', { sensitivity: 'accent' }))
|
||||||
} else if (sortType !== historySortType) {
|
} else if (sortType === 'time_asc') {
|
||||||
return subTree.reverse()
|
return subTree.reverse()
|
||||||
|
} else {
|
||||||
|
return subTree
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ const returnMounted = ref(false)
|
|||||||
const state = reactive({
|
const state = reactive({
|
||||||
curSortType: 'time_desc',
|
curSortType: 'time_desc',
|
||||||
resourceTree: [] as BusiTreeNode[],
|
resourceTree: [] as BusiTreeNode[],
|
||||||
|
originResourceTree: [] as BusiTreeNode[],
|
||||||
folderMenuList: [
|
folderMenuList: [
|
||||||
{
|
{
|
||||||
label: '移动到',
|
label: '移动到',
|
||||||
@ -242,6 +243,7 @@ function flatTree(tree: BusiTreeNode[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const afterTreeInit = () => {
|
const afterTreeInit = () => {
|
||||||
|
state.originResourceTree = _.cloneDeep(state.resourceTree)
|
||||||
mounted.value = true
|
mounted.value = true
|
||||||
if (selectedNodeKey.value && returnMounted.value) {
|
if (selectedNodeKey.value && returnMounted.value) {
|
||||||
expandedArray.value = getDefaultExpandedKeys()
|
expandedArray.value = getDefaultExpandedKeys()
|
||||||
@ -391,7 +393,7 @@ const getDefaultExpandedKeys = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const sortTypeChange = sortType => {
|
const sortTypeChange = sortType => {
|
||||||
state.resourceTree = treeSort(state.resourceTree, sortType, state.curSortType)
|
state.resourceTree = treeSort(state.originResourceTree, sortType)
|
||||||
state.curSortType = sortType
|
state.curSortType = sortType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user