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