树形拖拽功能封装# 树形拖拽功能封装
效果:
使用的组件:
"vuedraggable": "^4.1.0",
地址:https://github.com/SortableJS/Vue.Draggable
思想:组件进行递归
难点: 点击最后一个的时候,左侧线条的计算, 关闭最底层,再展开最外层,线条的计算
使用方法:
<BasicDraggable @click-action="clickAction" @click="handleClick" v-bind="draggableSetting" @ok="end">
</BasicDraggable>
// 拖拽组件配置
let draggableSetting = reactive({
canDrag: !getIsAuth('排序'),
list: [],
choiceId: 0,
openMultiChildren: true,
actions: Actions,
});
可选配置:
export interface basicPropsType {
list?: Array<any>,
filed?: string,
rowKey?: string,
childrenField?: string,
actions?: Array<any>,
openMultiChildren?: boolean,
canDrag?: Function | boolean,
showMoreFn?: Function | boolean,
onlyDragIcon?: boolean,
dragTips?: string,
isTree?: boolean,
parentId?: number | string,
showItemId?: boolean,
canClickParent?: boolean,
openFirstItem?: boolean,
canClick?: boolean
}
获取点击的方法:
1.通过emit派发的事件
2.通过pinia状态获取
具体文件代码:
(拖拽组件)
https://gitee.com/huang_ting/function-demo