vue表格拖拽

实现效果

在这里插入图片描述

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <!-- 引入样式 -->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <script src="./lib/vue.js"></script>
  <!-- 引入组件库 -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <script src="./node_modules/sortablejs/Sortable.js"></script>
</head>
<body>
  <div id="app">
    <el-table ref="table" :data="items" border height="300" row-key="code">
        <el-table-column label="索引" type="index" width="50"></el-table-column> 
        <el-table-column label="字段名" prop="name"></el-table-column> 
    </el-table>
  </div>
<script>
  new Vue({
    el:'#app',
    data () {
      return {
       items: [
        { name: "单据编号", code: "fOrderNumber" },
        {name: "客户", code: "fCustomerName" },
        {name: "合同名称", code: "fContractName" },
        {name: "创建日期", code: "fCT" },
        {name: "大区", code: "fOrderArea" },
        {name: "总长度", code: "fTotalLength" },
        {name: "销售数量", code: "fTotalNumber" },
        {name: "总重量", code: "fTotalWeight" },
        {name: "总金额", code: "fTotalPrice" },
        {name: "价税合计", code: "fPriceTaxesTotal" },
        { name: "面积", code: "fAcreage" },
        { name: "已出库数量", code: "fOutStockNumber" },
        { name: "订单类型", code: "fOrderType" },
        { name: "备注", code: "fRemark" },
        { name: "单据状态", code: "fOrderStatus" }
       ],
      dragging: null
    }
  },
  mounted(){
    this.$nextTick(()=>{
      this.init()
    })
  },
  methods:{
    init(){
      const table = this.$refs.table.$el.querySelector('tbody');
      const self = this
      Sortable.create(table, {
        onEnd({ newIndex, oldIndex }) {
          const targetRow = self.items.splice(oldIndex, 1)[0]
          self.items.splice(newIndex, 0, targetRow)
        }
      })
    },
   }
  })
</script>
</body>
</html>
发布了142 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_35958891/article/details/104162846