element tree 拖拽后数据修改问题

108 阅读1分钟
<el-tree
                        ref="tree"
                        default-expand-all
                        highlight-current
                        :expand-on-click-node="false"
                        :data="tableData"
                        :props="{
                            label: 'detailName',
                            children: 'children'
                        }"
                        node-key="id"
                        draggable
                        :allow-drop="allowDrop"
                    >
                        <span class="custom-tree-node" slot-scope="{ node, data }">{{
                            node.label
                        }}</span>
                       
</el-tree>

数据 Let teableData=[

    {

        "id": 1,

        "detailName": "一级 1",

        "parentId": 0,

        "goodsGrade": 0,

        "children": [

            {

                "id": 5,

                "detailName": "一级 1-1",

                "parentId": 1,

                "goodsGrade": 1

            }

        ]

    },

    {

        "id": 2,

        "detailName": "二级 ",

        "parentId": 0,

        "goodsGrade": 0,

        "children": [

            {

                "id": 3,

                "detailName": "二级 1-1",

                "parentId": 2,

                "goodsGrade": 1

            },

            {

                "id": 4,

                "detailName": "二级 2-1",

                "parentId": 2,

                "goodsGrade": 1

            }

        ]

    }

]

方法 allowDrop(draggingNode, dropNode, dropType) {

            // draggingNode.data.goodsGrade === 0 是顶级节点,只允许上下拖拽

            if (draggingNode.data.goodsGrade === 0) {

                // 确认dropNode也是顶级节点

                const isDropTopLevel =

                    dropNode.data.goodsGrade === 0 || dropNode.data.parentId === 0

 

                // 顶级节点只能上下拖动

                if (isDropTopLevel) {

                    // 只有在dropType为'prev'或'next'时才允许拖放

                    return dropType === 'prev' || dropType === 'next'

                } else {

                    // dropNode不是顶级节点,不允许拖放

                    return false

                }

            } else {

                // 非顶级节点可以升级成为顶级节点

                if (dropType !== 'inner') {

                    // 如果拖放到顶级节点旁边,非顶级节点升级为顶级节点

                    const isDropTopLevel =

                        dropNode.data.goodsGrade === 0 || dropNode.data.parentId === 0

                    if (isDropTopLevel) {

                        draggingNode.data.parentId = 0

                        return dropType === 'prev' || dropType === 'next'

                    }

                } else {

                    // 非顶级节点可以拖放到任意顶级节点的内部

                    const isDropTopLevel =

                        dropNode.data.goodsGrade === 0 || dropNode.data.parentId === 0

                    if (isDropTopLevel) {

                        draggingNode.data.parentId = dropNode.data.id

                        return dropType === 'inner'

                    }

                }

            }

 

            return false

        },

    为什么  draggingNode.data.parentId = 0 和 draggingNode.data.parentId = dropNode.data.id

不生效 要如何修改呢