1- <template >
2- <section class =" main" >
3- <div class =" crumbs" >
4- <el-breadcrumb separator =" /" >
5- <el-breadcrumb-item ><i class =" el-icon-upload2" ></i > 拖拽排序</el-breadcrumb-item >
6- </el-breadcrumb >
7- </div >
8- <div class =" drag-box-left" >
9- <div class =" drag-title" >未完成</div >
10- <div class =" drag-list" draggable =" true"
11- v-for =" list in data1"
12- :data-id =" list.id"
13- @dragstart =" dragstartEvent"
14- @dragend =" dragendEvent"
15- @dragenter =" dragenterEvent"
16- @dragleave =" dragleaveEvent"
17- @dragover =" dragoverEvent"
18- >{{list.title}}</div >
19- </div >
20- <div class =" drag-box-right" >
21- <div class =" drag-title" >已完成</div >
22- <div class =" drag-list" draggable =" true"
23- v-for =" list in data2"
24- :data-id =" list.id"
25- @dragstart =" dragstartEvent"
26- @dragend =" dragendEvent"
27- @dragenter =" dragenterEvent"
28- @dragleave =" dragleaveEvent"
29- @dragover =" dragoverEvent"
30- >{{list.title}}</div >
31- </div >
32-
33- </section >
34- </template >
35-
36- <script >
37- export default {
38- data () {
39- return {
40- dragElement: null ,
41- lock: true ,
42- data1: [
43- {id: 1 , title: ' 这里是列表1的标题' },
44- {id: 2 , title: ' 这里是列表2的标题' },
45- {id: 3 , title: ' 这里是列表3的标题' },
46- {id: 4 , title: ' 这里是列表4的标题' },
47- {id: 5 , title: ' 这里是列表5的标题' },
48- {id: 6 , title: ' 这里是列表6的标题' },
49- {id: 7 , title: ' 这里是列表7的标题' }
50- ],
51- data2: [
52- {id: 1 , title: ' 这里是列表11的标题' },
53- {id: 2 , title: ' 这里是列表12的标题' },
54- {id: 3 , title: ' 这里是列表13的标题' },
55- {id: 4 , title: ' 这里是列表14的标题' }
56- ]
57- }
58- },
59- methods: {
60- dragstartEvent (ev ) {
61- const self = this ;
62- self .dragElement = ev .target ;
63- ev .target .style .backgroundColor = ' #f8f8f8' ;
64- },
65- dragendEvent (ev ) {
66- ev .target .style .backgroundColor = ' #fff' ;
67- ev .preventDefault ();
68- },
69- dragenterEvent (ev ) {
70- const self = this ;
71- if (self .dragElement != ev .target ){
72- ev .target .parentNode .insertBefore (self .dragElement , ev .target );
73- }
74- },
75- dragleaveEvent (ev ) {
76- const self = this ;
77- if (self .dragElement != ev .target ){
78- if (self .lock && (ev .target == ev .target .parentNode .lastElementChild || ev .target == ev .target .parentNode .lastChild )){
79- ev .target .parentNode .appendChild (self .dragElement );
80- self .lock = false ;
81- }else {
82- self .lock = true ;
83- }
84- }
85- },
86- dragoverEvent (ev ) {
87- ev .preventDefault ();
88- }
89- }
90- }
91- </script >
92-
93- <style scoped>
94- .drag-box-left {
95- float : left ;
96- width : 45% ;
97- }
98- .drag-box-right {
99- float : right ;
100- width : 45% ;
101- }
102- .drag-list {
103- border : 1px solid #ddd ;
104- padding :20px ;
105- margin-bottom : 20px ;
106- transition : border .3s ;
107- }
108- .drag-list :hover {
109- border : 1px solid #20a0ff ;
110- }
111- .drag-title {
112- font-weight : 400 ;
113- line-height : 50px ;
114- margin : 10px 0 ;
115- font-size : 22px ;
116- color : #1f2f3d ;
117- }
1+ <template >
2+ <section class =" main" >
3+ <div class =" crumbs" >
4+ <el-breadcrumb separator =" /" >
5+ <el-breadcrumb-item ><i class =" el-icon-upload2" ></i > 拖拽排序</el-breadcrumb-item >
6+ </el-breadcrumb >
7+ </div >
8+ <div class =" drag-box-left" >
9+ <div class =" drag-title" >拖动排序</div >
10+ <div class =" drag-list" draggable =" true"
11+ v-for =" list in data1"
12+ :data-id =" list.id"
13+ @dragstart =" dragstartEvent"
14+ @dragend =" dragendEvent"
15+ @dragenter =" dragenterEvent"
16+ @dragleave =" dragleaveEvent"
17+ @dragover =" dragoverEvent"
18+ >{{list.title}}</div >
19+ </div >
20+ </section >
21+ </template >
22+
23+ <script >
24+ export default {
25+ data () {
26+ return {
27+ dragElement: null ,
28+ lock: true ,
29+ data1: [
30+ {id: 1 , title: ' 这里是列表1的标题' },
31+ {id: 2 , title: ' 这里是列表2的标题' },
32+ {id: 3 , title: ' 这里是列表3的标题' },
33+ {id: 4 , title: ' 这里是列表4的标题' },
34+ {id: 5 , title: ' 这里是列表5的标题' },
35+ {id: 6 , title: ' 这里是列表6的标题' },
36+ {id: 7 , title: ' 这里是列表7的标题' }
37+ ],
38+ data2: [
39+ {id: 1 , title: ' 这里是列表11的标题' },
40+ {id: 2 , title: ' 这里是列表12的标题' },
41+ {id: 3 , title: ' 这里是列表13的标题' },
42+ {id: 4 , title: ' 这里是列表14的标题' }
43+ ]
44+ }
45+ },
46+ methods: {
47+ dragstartEvent (ev ) {
48+ const self = this ;
49+ self .dragElement = ev .target ;
50+ ev .target .style .backgroundColor = ' #f8f8f8' ;
51+ },
52+ dragendEvent (ev ) {
53+ ev .target .style .backgroundColor = ' #fff' ;
54+ ev .preventDefault ();
55+ },
56+ dragenterEvent (ev ) {
57+ const self = this ;
58+ if (self .dragElement != ev .target ){
59+ ev .target .parentNode .insertBefore (self .dragElement , ev .target );
60+ }
61+ },
62+ dragleaveEvent (ev ) {
63+ const self = this ;
64+ if (self .dragElement != ev .target ){
65+ if (self .lock && (ev .target == ev .target .parentNode .lastElementChild || ev .target == ev .target .parentNode .lastChild )){
66+ ev .target .parentNode .appendChild (self .dragElement );
67+ self .lock = false ;
68+ }else {
69+ self .lock = true ;
70+ }
71+ }
72+ },
73+ dragoverEvent (ev ) {
74+ ev .preventDefault ();
75+ }
76+ }
77+ }
78+ </script >
79+
80+ <style scoped>
81+ .drag-box-left {
82+ float : left ;
83+ width : 45% ;
84+ }
85+ .drag-box-right {
86+ float : right ;
87+ width : 45% ;
88+ }
89+ .drag-list {
90+ border : 1px solid #ddd ;
91+ padding :10px ;
92+ margin-bottom : 20px ;
93+ transition : border .3s ;
94+ }
95+ .drag-list :hover {
96+ border : 1px solid #20a0ff ;
97+ }
98+ .drag-title {
99+ font-weight : 400 ;
100+ line-height : 25px ;
101+ margin : 10px 0 ;
102+ font-size : 22px ;
103+ color : #1f2f3d ;
104+ }
118105 </style >
0 commit comments