Vue3实现列表的拖拽切换

简介: Vue3实现列表的拖拽切换

安装插件

npm i vuedraggable        (本人版本:4.1.0,谨慎使用)

视图层:
<template>
    <div class="row">
        <div class="col" v-for="(item,index) in list1.list">
            <h3>{{ item.name }}{{item.nlist.filter(itm=>itm.checked).length}} / {{ item.nlist.length }}</h3>
            <draggable class="list-group" :list="item.nlist" group="people" @change="log">
                <template #item="{ element, index }">
                    <div class="list-group-item" :key="element.name">
                       <input type="checkbox" :checked="element.checked" @change="chanclick(item.id,index)"> {{ element.name }}
                    </div>
                </template>
            </draggable>
        </div>
        <rawDisplayer class="col-3" :value="list1" title="List 1" />
        <rawDisplayer class="col-3" :value="list2" title="List 2" />
    </div>
</template>
逻辑层:
<script setup>
import { ref } from "vue";
import Draggable from "vuedraggable";
const list1 = ref(
    {
        name: '项目一',
        list: [
            {
                name: '要做',
                id:123,
                nlist: [
                    { name: "John", id: 1,checked:false },
                    { name: "gro", id: 2,checked:true },
                    { name: "frfr", id: 3,checked:false },
                ]
            },
            {
                name: '正在做',
                id:456,
                nlist: [
                    { name: "法人股hn", id: 11,checked:false },
                    { name: "得分o", id: 22,checked:false },
                    { name: "共和国让他r", id: 33 ,checked:true},
                ]
            },
            {
                name: '代办',
                id:789,
                nlist: [
                    { name: "v人格人格", id: 111 ,checked:true},
                    { name: "个人购房", id: 222 ,checked:false},
                    { name: "帮帮发", id: 333 ,checked:true},
                ]
            },
        ]
    }
);
const list2 = ref([
    { name: "Juan", id: 5 },
    { name: "Edgard", id: 6 },
    { name: "Johnson", id: 7 },
]);
const log = (evt) => {
    console.log('wwwwwwwwwwwww', evt.added.element.name);
};
//状态的改变
const chanclick=(id,ind)=>{
    console.log('checked',id,ind);
}
</script>

样式层:(凑合看,自己怼吧)

有用没用来个点赞,看到这里也不易

相关文章
|
9天前
|
JavaScript API
Vue3中的计算属性能否动态修改
【9月更文挑战第5天】Vue3中的计算属性能否动态修改
40 10
|
2天前
|
JavaScript
Vue3中路由跳转的语法
Vue3中路由跳转的语法
105 58
|
5天前
|
前端开发
vue3+ts项目中使用mockjs
vue3+ts项目中使用mockjs
198 58
|
2天前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
|
3天前
|
JavaScript 开发者
彻底搞懂 Vue3 中 watch 和 watchEffect是用法
彻底搞懂 Vue3 中 watch 和 watchEffect是用法
|
9天前
|
JavaScript API
如何使用Vue3的可计算属性
【9月更文挑战第5天】如何使用Vue3的可计算属性
42 13
vue3 reactive数据更新,视图不更新问题
vue3 reactive数据更新,视图不更新问题
|
9天前
|
资源调度 JavaScript API
vue3 组件通信方式
vue3 组件通信方式
39 11
|
1天前
|
JavaScript
|
1天前
vue3定义暴露一些常量
vue3定义暴露一些常量