From 32ad8aaea986223ffd2a5e4eb55d2e185724d506 Mon Sep 17 00:00:00 2001 From: 1549469775 <1549469775@qq.com> Date: Thu, 23 Jun 2022 00:54:32 +0800 Subject: [PATCH] fixed bug --- packages/components/tree/node.vue | 21 ++++++++++++++++++--- packages/components/tree/tree.vue | 13 ++----------- packages/playground/package.json | 1 + packages/playground/src/dev/tree.vue | 3 ++- pnpm-lock.yaml | 2 ++ 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/packages/components/tree/node.vue b/packages/components/tree/node.vue index 03e84e8..9e14a05 100644 --- a/packages/components/tree/node.vue +++ b/packages/components/tree/node.vue @@ -33,8 +33,24 @@ ]"></div> </div> <div class="ps-tree-sub-node" v-if="(opts.justOpen || data.isExpand) && data.children && data.children.length"> - <slot name="children" :datalist="data.children" :level="level + 1" :status="status"> - </slot> + <template v-for="(item, index) in data.children" :key="item.key"> + <node + @onDragstart="(e: INiuTreeKey)=>emit('onDragstart', e)" + @onDragend="(e: INiuTreeKey)=>emit('onDragend', e)" + @onDrop="(e: INiuTreeKey, s?: ENiuTreeStatus)=>emit('onDrop', e, s)" + @onDragover="(e: INiuTreeKey)=>emit('onDragover', e)" + @onDragleave="(e: INiuTreeKey)=>emit('onDragleave', e)" + @click="(e: INiuTreeData)=>emit('click', e)" + :data-source-key="dataSourceKey" + :data="item" + :list="list" + :level="level + 1" + > + <template #default="{data, deep, dataSourceKey, status}: {data: INiuTreeData, deep: number, dataSourceKey:INiuTreeKey, status:ENiuTreeStatus}"> + <slot :data="data" :deep="deep" :dataSourceKey="dataSourceKey" :status="status"></slot> + </template> + </node> + </template> </div> </div> </template> @@ -43,7 +59,6 @@ import node from './node.vue' import { inject, ref, provide, useSlots } from 'vue' import { isChildOf } from './util' -import TreeDrag from './tree-drag.vue'; import { ENiuTreeStatus, INiuTreeData, INiuTreeKey } from './type'; const props = withDefaults( defineProps<{ diff --git a/packages/components/tree/tree.vue b/packages/components/tree/tree.vue index 1d3a1fa..32b08b2 100644 --- a/packages/components/tree/tree.vue +++ b/packages/components/tree/tree.vue @@ -7,17 +7,6 @@ #default="{ data, deep, dataSourceKey, status }: { data: INiuTreeData, deep: number, dataSourceKey: INiuTreeKey, status: ENiuTreeStatus }"> <slot :data="data" :deep="deep" :dataSourceKey="dataSourceKey" :status="status"></slot> </template> - <template #children="{datalist, level}"> - <template v-for="(item, index) in datalist" :key="index"> - <node @onDragstart="onDragstart" @onDragEnd="onDragEnd" @onDrop="onDrop" :data-source-key="dataSourceKey" - :data="item" :list="list" :level="level" @click="(item) => clickNode(item)"> - <template - #default="{ data, deep, dataSourceKey, status }: { data: INiuTreeData, deep: number, dataSourceKey: INiuTreeKey, status: ENiuTreeStatus }"> - <slot :data="data" :deep="deep" :dataSourceKey="dataSourceKey" :status="status"></slot> - </template> - </node> - </template> - </template> </node> </template> </div> @@ -68,11 +57,13 @@ function clickNode(item: INiuTreeData) { const emit = defineEmits<{ (e: 'change'): void + (e: 'itemDragstart'): void }>() const dataSourceKey = ref() function onDragstart(key: INiuTreeKey) { dataSourceKey.value = key + emit("itemDragstart") } function onDragEnd(key: INiuTreeKey) { dataSourceKey.value = undefined diff --git a/packages/playground/package.json b/packages/playground/package.json index 663ee7b..1279b1d 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@types/lodash": "^4.14.182", "@vitejs/plugin-vue": "^2.3.3", + "@vue/runtime-core": "^3.2.37", "typescript": "^4.5.4", "unplugin-vue-components": "^0.19.5", "vite": "^2.9.9", diff --git a/packages/playground/src/dev/tree.vue b/packages/playground/src/dev/tree.vue index 89fedc1..8f3b325 100644 --- a/packages/playground/src/dev/tree.vue +++ b/packages/playground/src/dev/tree.vue @@ -9,7 +9,8 @@ const list = ref(convertTreeData([ children: [ { key: 5, - title: "5" + title: "5", + children: [] }, ] }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be15eff..8530eea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,6 +88,7 @@ importers: specifiers: '@types/lodash': ^4.14.182 '@vitejs/plugin-vue': ^2.3.3 + '@vue/runtime-core': ^3.2.37 lodash: ^4.17.21 typescript: ^4.5.4 unplugin-vue-components: ^0.19.5 @@ -102,6 +103,7 @@ importers: devDependencies: '@types/lodash': 4.14.182 '@vitejs/plugin-vue': 2.3.3_vite@2.9.12+vue@3.2.37 + '@vue/runtime-core': 3.2.37 typescript: 4.7.4 unplugin-vue-components: 0.19.6_vite@2.9.12+vue@3.2.37 vite: 2.9.12