美文网首页
vue+element UI+ sortable.js 表格拖拽

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

作者: 徐福瑞 | 来源:发表于2020-09-17 15:06 被阅读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)
                            }
                        })
                        },
    

    相关文章

      网友评论

          本文标题:vue+element UI+ sortable.js 表格拖拽

          本文链接:https://www.haomeiwen.com/subject/rtblyktx.html