最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實(shí)現(xiàn)前端列表拖拽功能

 更新時(shí)間:2023年12月19日 14:57:18   作者:我是Superman丶  
這篇文章主要為大家詳細(xì)介紹了如何利用vue實(shí)現(xiàn)前端列表拖拽功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下

使用組件

yarn add sortablejs --save

Sortable.js中文網(wǎng) (sortablejs.com)

以下代碼只是舉個(gè)例子, 大家可以舉一反三去實(shí)現(xiàn)各自的業(yè)務(wù)功能

<template>
  <div>
    <el-button type="primary" @click="切換列表(1)">列表一</el-button>
    <el-button type="success" @click="切換列表(2)">列表二</el-button>
    <el-table
        v-if="DataListShow === 1"
        :data="DataList1"
        ref="refTable1"
        class="ELtable"
        size="small"
        stripe
        :key="tableKey1"
        :row-key="
        (row) => {
          return row.prop;
        }
      "
    >
      <el-table-column
          label="編碼"
          align="center"
          prop="label"
      ></el-table-column>
      <el-table-column
          label="名稱"
          align="center"
          prop="label"
      ></el-table-column>
    </el-table>
    
    <el-table
        v-if="DataListShow === 2"
        :data="DataList2"
        ref="refTable2"
        class="ELtable"
        size="small"
        stripe
        :key="tableKey2"
        :row-key="
        (row) => {
          return row.prop;
        }
      "
    >
      <el-table-column
          label="編碼"
          align="center"
          prop="prop"
      ></el-table-column>
      <el-table-column
          label="名稱"
          align="center"
          prop="label"
      ></el-table-column>
    </el-table>
 
  </div>
</template>
 
<script>
 
// 引入Sortable表格拖拽插件
import Sortable from "sortablejs";
 
//引入模擬的data數(shù)據(jù)
import DataList1 from "./DataList1.js";
import DataList2 from "./DataList2.js";
 
 
 
 
 
export default {
  name: 'HelloWorld',
  data(){
    return {
      DataListShow:1,
      
      //第1個(gè)表格的配置
      tableKey1:0,
      DataList1:DataList1,
 
      //第2個(gè)表格的配置
      tableKey2:0,
      DataList2:DataList2,
    }
  },
  mounted() {
    //開(kāi)始 行拖拽
    this.rowDrop1();
  },
  methods:{
    
    切換列表(列表號(hào)){
      this.DataListShow = 列表號(hào)
 
      this.$nextTick(() => {
        if(列表號(hào) === 1){
          //啟動(dòng)列表一拖拽
          this.rowDrop1();
        }else{
          //啟動(dòng)列表二拖拽
          this.rowDrop2();
        }
      });
      
      
    },
    
    /**
     * 第一個(gè)表格的
     * 行拖拽
     */
    rowDrop1() {
      window.aaa = this
      const _this = this;
      
      
      
      const wrapperTr = this.$refs.refTable1.$el.querySelector(".el-table__body-wrapper tbody");
      this.sortable = Sortable.create(wrapperTr, {
        handle:'.el-table__row',
        animation: 350,
        delay: 0,
        easing:'cubic-bezier(0.34, 1.56, 0.64, 1)',
        onEnd: (evt) => {
          const oldItem = _this.DataList1[evt.oldIndex];
          _this.DataList1.splice(evt.oldIndex, 1);
          _this.DataList1.splice(evt.newIndex, 0, oldItem);
          _this.reDrawTable1();
          // 每一次拖拽后都要重繪一次
        },
      });
    },
    /**
     * 第一個(gè)表格的
     * 觸發(fā)表格重繪
     */
    reDrawTable1() {
      this.tableKey1 = Math.random();
      this.$nextTick(() => {
        // this.rowDrop();
        this.rowDrop1();
      });
    },
    
    
    
    /**
     * 第二個(gè)表格的
     * 行拖拽
     */
    rowDrop2() {
      const _this = this;
      // console.log("數(shù)據(jù)", this.schemas);
      const wrapperTr = this.$refs.refTable2.$el.querySelector(".el-table__body-wrapper tbody");
      this.sortable = Sortable.create(wrapperTr, {
        handle:'.el-table__row',
        animation: 350,
        delay: 0,
        easing:'cubic-bezier(0.34, 1.56, 0.64, 1)',
        onEnd: (evt) => {
          const oldItem = _this.DataList2[evt.oldIndex];
          _this.DataList2.splice(evt.oldIndex, 1);
          _this.DataList2.splice(evt.newIndex, 0, oldItem);
          _this.reDrawTable2();
          // 每一次拖拽后都要重繪一次
        },
      });
    },
    /**
     * 第二個(gè)表格的
     * 觸發(fā)表格重繪
     */
    reDrawTable2() {
      this.tableKey2 = Math.random();
      this.$nextTick(() => {
        // this.rowDrop();
        this.rowDrop2();
      });
    },
    
 
  }
 
}
</script>

DataList1.js

export default [
    {
        disabled: true,
        isCheck: true,
        fixed:true,
        width: "100px",
        label: "姓名",
        prop: "name"
    },
    {
        disabled: false,
        isCheck: true,
        width: "180px",
        label: "單位",
        prop: "unitName"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "部門",
        prop: "departmentName"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "性別",
        prop: "sex"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "出生年月",
        prop: "birthday"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "籍貫",
        prop: "places"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "參加工作時(shí)間",
        prop: "workTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "行政職務(wù)",
        prop: "duty"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "行政職務(wù)時(shí)間",
        prop: "dutyTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "行政職級(jí)",
        prop: "jobGrade"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "行政職級(jí)時(shí)間",
        prop: "jobGradeTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "110px",
        label: "等級(jí)",
        prop: "rank"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "等級(jí)時(shí)間",
        prop: "rankTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "法律職務(wù)",
        prop: "legislation"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "法律職務(wù)時(shí)間",
        prop: "legislationTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "全日制學(xué)歷",
        prop: "fullTimeEducation"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "全日制學(xué)位",
        prop: "fullTimeDegree"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "全日制專業(yè)",
        prop: "fullTimeMajor"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "政治面貌",
        prop: "politicsStatus"
    },
];

DataList2.js

export default [
    {
        disabled: true,
        isCheck: true,
        fixed:true,
        width: "100px",
        label: "還是",
        prop: "name"
    },
    {
        disabled: false,
        isCheck: true,
        width: "180px",
        label: "撒大哥",
        prop: "unitName"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "官方",
        prop: "departmentName"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "體育",
        prop: "sex"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "精明能干",
        prop: "birthday"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "可以廣泛",
        prop: "places"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "發(fā)公告",
        prop: "workTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "人同意",
        prop: "duty"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "大幅度發(fā)給",
        prop: "dutyTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "就發(fā)過(guò)火",
        prop: "jobGrade"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "try二食堂",
        prop: "jobGradeTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "110px",
        label: "結(jié)果",
        prop: "rank"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "分班表",
        prop: "rankTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "沃爾沃二",
        prop: "legislation"
    },
    {
        disabled: false,
        isCheck: true,
        width: "140px",
        label: "就體育與",
        prop: "legislationTime"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "消防管道發(fā)給",
        prop: "fullTimeEducation"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "宣傳部成本",
        prop: "fullTimeDegree"
    },
    {
        disabled: false,
        isCheck: true,
        width: "80px",
        label: "明白你們幫你們",
        prop: "fullTimeMajor"
    },
    {
        disabled: false,
        isCheck: true,
        width: "100px",
        label: "大概的電飯鍋電飯鍋",
        prop: "politicsStatus"
    },
];

以上就是vue實(shí)現(xiàn)前端列表拖拽功能的詳細(xì)內(nèi)容,更多關(guān)于vue列表拖拽的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vuejs簡(jiǎn)單驗(yàn)證碼功能完整示例

    vuejs簡(jiǎn)單驗(yàn)證碼功能完整示例

    這篇文章主要介紹了vuejs簡(jiǎn)單驗(yàn)證碼功能,結(jié)合完整實(shí)例形式分析了vue.js驗(yàn)證碼的生成、顯示、校驗(yàn)等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案

    Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案

    這篇文章主要介紹了Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • vue 實(shí)現(xiàn)購(gòu)物車總價(jià)計(jì)算

    vue 實(shí)現(xiàn)購(gòu)物車總價(jià)計(jì)算

    今天小編就為大家分享一篇vue 實(shí)現(xiàn)購(gòu)物車總價(jià)計(jì)算,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue使用技巧及vue項(xiàng)目中遇到的問(wèn)題

    vue使用技巧及vue項(xiàng)目中遇到的問(wèn)題

    這篇文章主要介紹了vue使用技巧及vue項(xiàng)目中遇到的問(wèn)題,本文給大家?guī)?lái)的只是一部分,后續(xù)還會(huì)持續(xù)更新,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-06-06
  • 如何在vue中使用ant-design-vue組件

    如何在vue中使用ant-design-vue組件

    這篇文章主要介紹了如何在vue中使用ant-design-vue組件,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Vue生命周期實(shí)例分析總結(jié)

    Vue生命周期實(shí)例分析總結(jié)

    Vue的生命周期就是vue實(shí)例從創(chuàng)建到銷毀的全過(guò)程,也就是new Vue()開(kāi)始就是vue生命周期的開(kāi)始。Vue實(shí)例有?個(gè)完整的?命周期,也就是從開(kāi)始創(chuàng)建、初始化數(shù)據(jù)、編譯模版、掛載Dom->渲染、更新->渲染、卸載等?系列過(guò)程,稱這是Vue的?命周期
    2022-10-10
  • vue使用拖拽方式創(chuàng)建結(jié)構(gòu)樹(shù)

    vue使用拖拽方式創(chuàng)建結(jié)構(gòu)樹(shù)

    這篇文章主要為大家詳細(xì)介紹了vue使用拖拽方式創(chuàng)建結(jié)構(gòu)樹(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • vue如何實(shí)現(xiàn)級(jí)聯(lián)選擇器功能

    vue如何實(shí)現(xiàn)級(jí)聯(lián)選擇器功能

    這篇文章主要介紹了vue如何實(shí)現(xiàn)級(jí)聯(lián)選擇器功能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié)

    在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié)

    這篇文章主要介紹了在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • VUE elTree無(wú)子級(jí)隱藏展開(kāi)圖標(biāo)方式

    VUE elTree無(wú)子級(jí)隱藏展開(kāi)圖標(biāo)方式

    這篇文章主要介紹了VUE elTree無(wú)子級(jí)隱藏展開(kāi)圖標(biāo)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評(píng)論

钟祥市| 昂仁县| 伊金霍洛旗| 府谷县| 望城县| 新安县| 潞西市| 巴林右旗| 铁力市| 伊金霍洛旗| 兴仁县| 荥经县| 钟祥市| 长乐市| 吉林市| 中宁县| 道孚县| 利津县| 孟村| 天津市| 手游| 拉萨市| 兴国县| 浪卡子县| 万安县| 曲靖市| 沭阳县| 元阳县| 扎鲁特旗| 松潘县| 涿州市| 景德镇市| 措勤县| 平山县| 五大连池市| 吴忠市| 福州市| 东安县| 凤庆县| 贡觉县| 格尔木市|