Skip to content

Commit 867d454

Browse files
author
yichao.li.ext
committed
ci
1 parent 4665770 commit 867d454

File tree

5 files changed

+33
-60
lines changed

5 files changed

+33
-60
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "4.0.5",
44
"description": "Tree component for large amount of data, base on Vue3",
55
"scripts": {
6-
"serve": "vue-cli-service serve --port 4200",
6+
"start": "vue-cli-service serve",
77
"build": "vue-cli-service build",
88
"build:lib": "vue-cli-service build --dest lib --target lib ./src/components/index.ts && npm run build:types",
99
"build:types": "tsc --project src/components/tsconfig.json"

src/components/VirtualTree/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export default defineComponent({
5858

5959
watch(() => props.source, newVal => {
6060
flatList.value = service.flattenTree(newVal, props.defaultSelectedKey, props.defaultCheckedKeys, props.defaultExpandedKeys, props.defaultDisabledKeys);
61+
// console.log('checkedNodes :>> ', service.checkedNodes.value.selected);
6162
}, {immediate: true});
6263

6364
watch(() => props.defaultExpandedKeys, newVal => {
@@ -192,6 +193,7 @@ export default defineComponent({
192193
return service.selectedNodes.value.selected[0];
193194
},
194195
getCheckedNodes: (): TreeNodeOptions[] => {
196+
// flatlist 未保存折叠的节点
195197
return flatList.value.filter(item => service.checkedNodes.value.selected.includes(item.nodeKey));
196198
},
197199
getHalfCheckedNodes: (): TreeNodeOptions[] => {

src/components/VirtualTree/service.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,35 +41,40 @@ class TreeService {
4141
parentKey: parent?.nodeKey || null,
4242
children: item.children || []
4343
};
44+
4445
let goon = true;
46+
4547
if (parent) {
4648
if (defaultExpandedKeys.includes(parent.nodeKey)) {
47-
this.expandedKeys.value.select(parent.nodeKey);
48-
if (defaultCheckedKeys.includes(parent.nodeKey)) { // 默认展开并选中了
49-
defaultCheckedKeys.push(flatNode.nodeKey);
50-
}
5149
result.push(flatNode);
5250
} else {
5351
goon = false;
5452
}
53+
if (defaultCheckedKeys.includes(parent.nodeKey)) { // 默认展开并选中了
54+
defaultCheckedKeys.push(flatNode.nodeKey);
55+
this.checkedNodes.value.select(flatNode.nodeKey);
56+
}
5557
} else {
5658
result.push(flatNode);
5759
}
58-
if (goon) {
59-
if (defaultDisabledKeys.includes(item.nodeKey)) {
60-
this.disabledKeys.value.select(item.nodeKey);
61-
}
62-
if (defaultSelectedKey === item.nodeKey) {
63-
this.selectedNodes.value.select(flatNode);
64-
}
65-
if (item.children?.length) {
66-
flatNode.children = recursion(item.children, flatNode);
67-
}
60+
61+
if (defaultDisabledKeys.includes(flatNode.nodeKey)) {
62+
this.disabledKeys.value.select(flatNode.nodeKey);
6863
}
69-
64+
if (defaultSelectedKey === flatNode.nodeKey) {
65+
this.selectedNodes.value.select(flatNode);
66+
}
67+
if (defaultExpandedKeys.includes(flatNode.nodeKey)) {
68+
this.expandedKeys.value.select(flatNode.nodeKey);
69+
}
70+
7071
if (defaultCheckedKeys.includes(flatNode.nodeKey)) {
7172
this.checkedNodes.value.select(flatNode.nodeKey);
7273
}
74+
75+
if (flatNode.children?.length) {
76+
flatNode.children = recursion(flatNode.children, flatNode);
77+
}
7378
return flatNode;
7479
});
7580
}

src/doc/CheckboxDemo.vue

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
<section>
44
<h5>默认父子节点联动</h5>
55
<a-button @click="halfNodes">获取半选节点</a-button>
6-
<vir-tree ref="virTreeOne" show-checkbox :source="list" :default-checked-keys="defaultCheckedKeys" />
7-
</section>
8-
<section>
9-
<h5>父子节点不联动</h5>
106
<a-button @click="checkedNodes">获取勾选节点</a-button>
11-
<vir-tree ref="virTreeTwo" show-checkbox check-strictly :source="list" :default-checked-keys="defaultCheckedKeys" />
7+
<vir-tree
8+
ref="virTreeOne"
9+
show-checkbox
10+
:source="list"
11+
:default-expanded-keys="defaultExpandedKeys"
12+
:default-checked-keys="defaultCheckedKeys"
13+
/>
1214
</section>
1315
</div>
1416
</template>
@@ -46,24 +48,25 @@
4648
const list = ref<TreeNodeOptions[]>([]);
4749
const virTreeOne = ref<TreeInstance | null>(null);
4850
const virTreeTwo = ref<TreeInstance | null>(null);
51+
const defaultExpandedKeys = ref(['0-3']);
4952
const defaultCheckedKeys = ref(['0-0-0', '0-2']);
5053
51-
5254
onMounted(() => {
5355
list.value = recursion();
5456
});
5557
const halfNodes = () => {
5658
getHalfCheckNodes(virTreeOne.value!);
5759
}
5860
const checkedNodes = () => {
59-
getCheckNodes(virTreeTwo.value!);
61+
getCheckNodes(virTreeOne.value!);
6062
}
6163
return {
6264
list,
6365
virTreeOne,
6466
virTreeTwo,
6567
halfNodes,
6668
checkedNodes,
69+
defaultExpandedKeys,
6770
defaultCheckedKeys
6871
}
6972
}

src/doc/index.vue

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -38,29 +38,6 @@
3838
<section class="sec mid">
3939
<a-typography-title :level="3">代码演示</a-typography-title>
4040
<a-row :gutter="16" class="demo-boxes">
41-
<a-col :span="12">
42-
<demo-box
43-
id="base-demo"
44-
title="基本用法"
45-
desc="展开、选中、禁用的基本功能"
46-
code-type="base">
47-
<base-demo />
48-
</demo-box>
49-
<demo-box
50-
id="async-dada-demo"
51-
title="异步加载数据"
52-
desc="点击展开节点,动态加载数据。"
53-
code-type="asyncData">
54-
<async-data-demo />
55-
</demo-box>
56-
<demo-box
57-
id="custom-icon-demo"
58-
title="自定义图标"
59-
desc="自定义展开、收起图标"
60-
code-type="customIcon">
61-
<custom-icon-demo />
62-
</demo-box>
63-
</a-col>
6441
<a-col :span="12">
6542
<demo-box
6643
id="checkbox-demo"
@@ -69,20 +46,6 @@
6946
code-type="checkbox">
7047
<checkbox-demo />
7148
</demo-box>
72-
<demo-box
73-
id="custom-node-demo"
74-
title="自定义渲染节点"
75-
desc="绑定render函数自定义节点,参数data为当前node数据。注意:如果改变了默认的高度(size), 需要传入size属性"
76-
code-type="customNode">
77-
<custom-node-demo />
78-
</demo-box>
79-
<demo-box
80-
id="search-node-demo"
81-
title="搜索树"
82-
desc="虽然组件内部没有直接提供,但可以配合render自行实现"
83-
code-type="searchNode">
84-
<search-node-demo />
85-
</demo-box>
8649
</a-col>
8750
</a-row>
8851
</section>

0 commit comments

Comments
 (0)