vue+element UI+ sortable.js 表格拖拽

2020-09-17  本文已影响0人  徐福瑞

https://github.com/SortableJS/Sortable/blob/master/Sortable.js

没有操作列的正常表格

                    columnDrop() {
                    const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
                    this.sortable = Sortable.create(wrapperTr, {
                        animation: 180,
                        delay: 0,
                        onEnd: evt => {
                        const oldItem = this.dropCol[evt.oldIndex]
                        this.dropCol.splice(evt.oldIndex, 1)
                        this.dropCol.splice(evt.newIndex, 0, oldItem)
                        console.log(this.dropCol)
                        }
                    })
                    },

有操作列的

image.png
<el-table :data="tableData"  border  row-key="id"   align="left">
                    <el-table-column align="center"   label="操作" fixed >
                      <template slot-scope="{row,$index}">
                         <el-button type="primary"   size="mini" @click="updatemy(row.id)">
                                   编辑
                         </el-button>
                          </template>
                      </el-table-column>
                         <el-table-column v-for="(item, index) in col"  :key="`col_${index}`"
                                        :prop="dropCol[index].prop" :label="item.label"> 
                        </el-table-column>
  </el-table>
                                <pre style="text-align: left">
                                @{{dropCol}}
                                </pre>
                                <hr>
                                <pre style="text-align: left">
                                @{{tableData}}
                                </pre>



   col: [
        {
          label: '日期',
          prop: 'date'
        },
        {
          label: '姓名',
          prop: 'name'
        },
        {
          label: '地址',
          prop: 'address'
        }
      ],
      dropCol: [
        {
          label: '日期',
          prop: 'date'
        },
        {
          label: '姓名',
          prop: 'name'
        },
        {
          label: '地址',
          prop: 'address'
        }
      ],
      tableData: [
        {
          id: '1',
          date: '2016-05-02',
          name: '王小虎1',
          address: '上海市普陀区金沙江路 100 弄'
        },
        {
          id: '2',
          date: '2016-05-04',
          name: '王小虎2',
          address: '上海市普陀区金沙江路 200 弄'
        },
        {
          id: '3',
          date: '2016-05-01',
          name: '王小虎3',
          address: '上海市普陀区金沙江路 300 弄'
        },
        {
          id: '4',
          date: '2016-05-03',
          name: '王小虎4',
          address: '上海市普陀区金沙江路 400 弄'
        }
      ],









mounted() {
                    this.rowDrop()
                    this.columnDrop()
                }


    //行拖拽
                    rowDrop() {
                    const tbody = document.querySelector('.el-table__body-wrapper tbody')
                    const _this = this
                    Sortable.create(tbody, {
                        onEnd({ newIndex, oldIndex }) {
                        const currRow = _this.tableData.splice(oldIndex, 1)[0]
                        console.log(currRow)
                        _this.tableData.splice(newIndex, 0, currRow)
                        }
                    })
                    },
                    //列拖拽
                    columnDrop() {
                    const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
                    this.sortable = Sortable.create(wrapperTr, {
                        animation: 180,
                        delay: 0,
                        onEnd: evt => {
                        const oldItem = this.dropCol[evt.oldIndex-1]
                        this.dropCol.splice(evt.oldIndex-1, 1)
                        this.dropCol.splice(evt.newIndex-1, 0, oldItem)
                        console.log(this.dropCol)
                        }
                    })
                    },
上一篇 下一篇

猜你喜欢

热点阅读