parent
a12b100a8e
commit
94c172f41f
6 changed files with 137 additions and 0 deletions
@ -0,0 +1,48 @@ |
||||
<template> |
||||
<div style="display: flex"> |
||||
<task-card style="margin: 0 48px" title="ToDo"> |
||||
<draggable :options="{group: 'a', sort: true, scroll: true, scrollSpeed: 2, animation: 250, ghostClass: 'ghost', chosenClass: 'chose'}"> |
||||
<task-item :key="index" v-for="(item, index) in todoList" :content="item" /> |
||||
</draggable> |
||||
</task-card> |
||||
<task-card style="margin: 0 48px" title="In Progress"> |
||||
<draggable :options="{group: 'a', sort: true, scroll: true, scrollSpeed: 2, animation: 250, ghostClass: 'ghost', chosenClass: 'chose'}"> |
||||
<task-item :key="index" v-for="(item, index) in inproList" :content="item" /> |
||||
</draggable> |
||||
</task-card> |
||||
<task-card style="margin: 0 48px" title="Done"> |
||||
<draggable :options="{group: 'a', sort: true, scroll: true, scrollSpeed: 2, animation: 250, ghostClass: 'ghost', chosenClass: 'chose'}"> |
||||
<task-item :key="index" v-for="(item, index) in doneList" :content="item" /> |
||||
</draggable> |
||||
</task-card> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import TaskCard from './TaskCard' |
||||
import TaskItem from './TaskItem' |
||||
import Draggable from 'vuedraggable' |
||||
const todoList = ['任务一', '任务二', '任务三', '任务四', '任务五', '任务六'] |
||||
const inproList = ['任务七', '任务八', '任务九', '任务十', '任务十一', '任务十二'] |
||||
const doneList = ['任务十三', '任务十四', '任务十五', '任务十六', '任务十七', '任务十八'] |
||||
export default { |
||||
name: 'Index', |
||||
components: {TaskItem, TaskCard, Draggable}, |
||||
data () { |
||||
return { |
||||
todoList, |
||||
inproList, |
||||
doneList |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less"> |
||||
.ghost{ |
||||
background-color: rgba(256, 256, 256, 0.5); |
||||
} |
||||
.chose{ |
||||
border: 1px dashed #aaaaaa; |
||||
} |
||||
</style> |
@ -0,0 +1,38 @@ |
||||
<template> |
||||
<a-card class="task-card" size="large" :title="title" :bordered="false" :bodyStyle="{backgroundColor: '#e1e4e8'}"> |
||||
<div slot="extra"> |
||||
<a-icon class="add" type="plus" draggable="true"/> |
||||
<a-icon class="more" style="margin-left: 8px" type="ellipsis" /> |
||||
</div> |
||||
<slot></slot> |
||||
</a-card> |
||||
</template> |
||||
|
||||
<script> |
||||
import ACard from 'ant-design-vue/es/card/Card' |
||||
import AIcon from 'ant-design-vue/es/icon/icon' |
||||
export default { |
||||
name: 'TaskCard', |
||||
components: {AIcon, ACard}, |
||||
props: ['title'], |
||||
data () { |
||||
return { |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.task-card{ |
||||
width: 33.33%; |
||||
font-size: 24px; |
||||
font-weight: bolder; |
||||
background-color: #e1e4e8; |
||||
.add{ |
||||
cursor: pointer; |
||||
} |
||||
.more{ |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,24 @@ |
||||
<template> |
||||
<a-card class="task-item" type="inner"> |
||||
{{content}} |
||||
</a-card> |
||||
</template> |
||||
|
||||
<script> |
||||
import ACard from 'ant-design-vue/es/card/Card' |
||||
export default { |
||||
name: 'TaskItem', |
||||
props: ['content'], |
||||
components: {ACard} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.task-item{ |
||||
margin-bottom: 16px; |
||||
transition: all .3s; |
||||
& :hover{ |
||||
cursor: move; |
||||
} |
||||
} |
||||
</style> |
Loading…
Reference in new issue