antd+vuedraggable 实现行拖动
antd的弹窗默认是不支持拖拽的,所以...
app.vue文件
js
<template>
<div style="margin: 24px">
<a-table :columns="columns" :dataSource="dataSource" :components="components">
<template v-slot:action>
<a href="javascript:;" class="drag-handle" style="cursor: move;">拖动</a>
</template>
</a-table>
</div>
</template>
<script>
const CustomWrapper = ()=> import('./components/CustomWrapper.vue');
const columns = [
{
title: "id",
dataIndex: "id",
sorter: true,
width: "20%",
scopedSlots: { customRender: "name" },
},
{
title: "Gender",
dataIndex: "gender",
filters: [
{ text: "Male", value: "male" },
{ text: "Female", value: "female" },
],
width: "20%",
},
{
title: "Email",
dataIndex: "email",
},
{
title: 'Action',
key: 'action',
scopedSlots: { customRender: 'action' },
},
];
export default {
name: "App",
provide() {
return {
data: this,
};
},
data() {
return {
columns,
components: {
body: {
wrapper: CustomWrapper,
},
},
dataSource: [{
id:1,
key: 0,
date: '2018-02-11',
amount: 120,
type: 'income',
note: 'transfer',
},
{
id:2,
key: 1,
date: '2018-03-11',
amount: 243,
type: 'income',
note: 'transfer',
},
{
id:3,
key: 2,
date: '2018-04-11',
amount: 98,
type: 'income',
note: 'transfer',
}],
};
},
mounted(){
},
methods: {
listChange(list){
}
},
};
</script>
<style></style>
CustomWrapper.vue文件
js
<template>
<Draggable ghostClass="ghost" tag="tbody" v-model="data.dataSource" @change="onChange" handle=".drag-handle">
<slot></slot>
</Draggable>
</template>
<script>
import Draggable from "vuedraggable";
export default {
name: 'CustomWrapper',
components: {
Draggable
},
inject: ["data"],
data() {
return {
};
},
mounted() {
},
methods: {
onChange(evt) {
this.data.listChange(this.data.dataSource)
}
}
};
</script>
文章来源:章鱼
http://114.55.234.134/article/6707a6da9a143e8ffe896fb4