当前位置:首页 > VUE

vue 看板实现

2026-01-18 13:44:04VUE

Vue 看板实现方法

基础结构搭建

使用 Vue CLI 或 Vite 初始化项目,安装依赖库如 vuedraggable 实现拖拽功能。创建看板组件,包含列表(List)和卡片(Card)的嵌套结构。

// 示例数据结构
data() {
  return {
    lists: [
      {
        id: 1,
        title: "待处理",
        cards: [
          { id: 101, content: "任务A" },
          { id: 102, content: "任务B" }
        ]
      },
      {
        id: 2,
        title: "进行中",
        cards: []
      }
    ]
  }
}

拖拽功能实现

通过 vuedraggable 库实现跨列表拖拽。需在列表容器和卡片容器上分别应用拖拽组件。

<draggable 
  v-model="lists" 
  group="lists" 
  @end="onListDragEnd">
  <div v-for="list in lists" :key="list.id">
    <h3>{{ list.title }}</h3>
    <draggable 
      v-model="list.cards" 
      group="cards"
      @end="onCardDragEnd">
      <div v-for="card in list.cards" :key="card.id">
        {{ card.content }}
      </div>
    </draggable>
  </div>
</draggable>

状态管理

对于复杂场景建议使用 Vuex 或 Pinia 集中管理看板状态。定义 mutations/actions 处理卡片移动、列表更新等操作。

// Pinia 示例
export const useBoardStore = defineStore('board', {
  state: () => ({ lists: [] }),
  actions: {
    moveCard({ fromListId, toListId, cardId }) {
      // 移动逻辑实现
    }
  }
})

样式优化

采用 Flexbox 或 CSS Grid 布局实现自适应看板。为拖拽状态添加视觉反馈:

.list {
  background: #ebecf0;
  border-radius: 4px;
  padding: 8px;
  margin: 0 10px;
  min-width: 250px;
}
.card {
  background: white;
  padding: 6px 12px;
  margin: 4px 0;
  box-shadow: 0 1px 0 rgba(9,30,66,.25);
}
.sortable-chosen {
  background: #f0f0f0;
}

功能扩展

  1. 添加卡片:每个列表顶部放置输入框,通过 @keyup.enter 触发添加操作
  2. 持久化存储:结合 localStorage 或后端 API 保存看板状态
  3. 实时协作:通过 WebSocket 实现多用户同步

完整组件示例

<template>
  <div class="board">
    <draggable ...>
      <!-- 列表渲染逻辑 -->
    </draggable>
  </div>
</template>

<script>
import draggable from 'vuedraggable'
export default {
  components: { draggable },
  methods: {
    onCardDragEnd(evt) {
      console.log('卡片移动完成', evt)
    }
  }
}
</script>

vue 看板实现

标签: 看板vue
分享给朋友:

相关文章

vue实现预览

vue实现预览

Vue实现文件预览的方法 使用Vue实现文件预览功能可以通过多种方式完成,具体取决于文件类型(图片、PDF、视频等)。以下是几种常见文件类型的实现方案。 图片预览 通过<input type=…

vue实现录播播放

vue实现录播播放

Vue 实现录播播放 使用 video.js 实现 安装 video.js 和相关的 Vue 适配器: npm install video.js @videojs-player/vue 在 Vue…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法: 使用window.print()方法 这是最简单的打印方式,直接调用浏览器的打印功能。 me…

vue实现弹窗可切换

vue实现弹窗可切换

实现弹窗可切换的 Vue 方案 动态组件切换 通过 Vue 的 <component :is="currentComponent"> 动态加载不同弹窗组件,结合 v-if 控制显示状态。…

vue实现贴图

vue实现贴图

Vue 实现贴图功能 在Vue中实现贴图功能通常涉及将图片动态添加到指定位置或元素上。以下是几种常见实现方式: 使用v-bind动态绑定图片 通过数据驱动的方式动态更换图片源: <tem…

vue 方法实现

vue 方法实现

在 Vue 中,方法的实现通常通过 methods 选项完成。以下是 Vue 方法实现的核心要点和示例: 基本方法定义 在 Vue 组件中定义方法时,需将函数声明放在 methods 对象内。这些方…