vue-vben-admin/src/views/demo/tree/ActionTree.vue

118 lines
3.9 KiB
Vue
Raw Normal View History

2020-09-28 20:19:10 +08:00
<template>
2021-01-07 21:16:30 +08:00
<PageWrapper title="Tree函数操作示例" contentBackground contentClass="p-4">
2020-09-28 20:19:10 +08:00
<div class="mb-4">
<a-button @click="handleLevel(2)" class="mr-2">显示到第2级</a-button>
<a-button @click="handleLevel(1)" class="mr-2">显示到第1级</a-button>
<a-button @click="handleSetCheckData" class="mr-2">设置勾选数据</a-button>
<a-button @click="handleGetCheckData" class="mr-2">获取勾选数据</a-button>
<a-button @click="handleSetSelectData" class="mr-2">设置选中数据</a-button>
<a-button @click="handleGetSelectData" class="mr-2">获取选中数据</a-button>
<a-button @click="handleSetExpandData" class="mr-2">设置展开数据</a-button>
<a-button @click="handleGetExpandData" class="mr-2">获取展开数据</a-button>
</div>
<div class="mb-4">
<a-button @click="appendNodeByKey(null)" class="mr-2">添加根节点</a-button>
<a-button @click="appendNodeByKey('2-2')" class="mr-2">添加在parent3内添加节点</a-button>
<a-button @click="deleteNodeByKey('2-2')" class="mr-2">删除parent3节点</a-button>
<a-button @click="updateNodeByKey('1-1')" class="mr-2">更新parent2节点</a-button>
</div>
2020-10-11 00:05:29 +08:00
<CollapseContainer title="函数操作" class="mr-4" :canExpan="false" :style="{ width: '33%' }">
2020-09-28 20:19:10 +08:00
<BasicTree :treeData="treeData" ref="treeRef" :checkable="true" />
</CollapseContainer>
</PageWrapper>
2020-09-28 20:19:10 +08:00
</template>
<script lang="ts">
import { defineComponent, ref, unref } from 'vue';
import { BasicTree, TreeActionType } from '/@/components/Tree/index';
import { treeData } from './data';
import { CollapseContainer } from '/@/components/Container/index';
import { useMessage } from '/@/hooks/web/useMessage';
import { PageWrapper } from '/@/components/Page';
2020-09-28 20:19:10 +08:00
export default defineComponent({
components: { BasicTree, CollapseContainer, PageWrapper },
2020-09-28 20:19:10 +08:00
setup() {
2020-12-08 22:53:29 +08:00
const treeRef = ref<Nullable<TreeActionType>>(null);
2020-09-28 20:19:10 +08:00
const { createMessage } = useMessage();
function getTree() {
const tree = unref(treeRef);
if (!tree) {
throw new Error('tree is null!');
}
2020-12-08 22:53:29 +08:00
return tree;
2020-09-28 20:19:10 +08:00
}
function handleLevel(level: number) {
getTree().filterByLevel(level);
}
function handleSetCheckData() {
getTree().setCheckedKeys(['0-0']);
}
function handleGetCheckData() {
const keys = getTree().getCheckedKeys();
createMessage.success(JSON.stringify(keys));
}
function handleSetSelectData() {
getTree().setSelectedKeys(['0-0']);
}
function handleGetSelectData() {
const keys = getTree().getSelectedKeys();
createMessage.success(JSON.stringify(keys));
}
function handleSetExpandData() {
getTree().setExpandedKeys(['0-0']);
}
function handleGetExpandData() {
const keys = getTree().getExpandedKeys();
createMessage.success(JSON.stringify(keys));
}
function appendNodeByKey(parentKey: string | null = null) {
getTree().insertNodeByKey({
parentKey: parentKey,
node: {
title: '新增节点',
key: '2-2-2',
},
// 往后插入
push: 'push',
// 往前插入
// push:'unshift'
});
}
function deleteNodeByKey(key: string) {
getTree().deleteNodeByKey(key);
}
function updateNodeByKey(key: string) {
getTree().updateNodeByKey(key, {
title: 'parent2-new',
});
}
return {
treeData,
treeRef,
handleLevel,
handleSetCheckData,
handleGetCheckData,
handleSetSelectData,
handleGetSelectData,
handleSetExpandData,
handleGetExpandData,
appendNodeByKey,
deleteNodeByKey,
updateNodeByKey,
};
},
});
</script>