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

基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移功能(支持跨頁移動(dòng))

 更新時(shí)間:2024年07月12日 09:35:08   作者:斗帝藍(lán)電霸王龍  
有時(shí)候需要前端實(shí)現(xiàn)上移和下移功能,下面這篇文章主要給大家介紹了關(guān)于如何基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移(支持跨頁移動(dòng))的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

最近在做后臺(tái)管理遇見了一個(gè)這樣的需求:table列表需要支持上下移動(dòng)數(shù)據(jù),并且也需要滿足跨頁移動(dòng),前端把數(shù)據(jù)移動(dòng)整理之后,提交給后端進(jìn)行保存(平常這種數(shù)據(jù)移動(dòng)都是調(diào)用后端的接口,然后在查詢數(shù)據(jù)就可以完成了,但是這次顯然不能這么做,因?yàn)楹蠖酥挥幸粋€(gè)保存數(shù)據(jù)的接口,所以這就需要前端自己處理數(shù)據(jù)了,廢話少說,上效果圖和源碼!

靜態(tài)效果圖

動(dòng)態(tài)效果圖

實(shí)現(xiàn)源碼(HTML)

  <el-table :data="paginatedData">
    <el-table-column label="操作" prop="operate">
      <template slot-scope="scope">
        <el-button-group>
          <el-button
            title="下移"
            :disabled="isDown(scope.row)"
            @click="moveupOrmovedown(scope.row, scope.$index, 'down')"
          >
          </el-button>
          <el-button
            title="上移"
            :disabled="scope.$index === 0 && currentPage === 1"
            @click="moveupOrmovedown(scope.row, scope.$index, 'up')"
          >
          </el-button>
        </el-button-group>
      </template>
    </el-table-column>
  </el-table>
  <!-- 頁碼參考(此處不涉及該功能的任何邏輯,可忽略 -->
  <el-pagination
     background
     :page-size="pageSize"
     :current-page="currentPage"
     layout="total, prev, pager, next, jumper"
     :total="totalSize"
     @current-change="(val) => (currentPage = val)"
   >
 </el-pagination>

實(shí)現(xiàn)源碼(JS)

   moveupOrmovedown(row, index, type) {
     let arr = this.filteredData
     const findIndex = this.filteredData.findIndex(
       (item) => item.date === row.date
     )
     index = findIndex > this.pageSize - 1 ? findIndex : index
     type === 'up'
       ? arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
       : arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
   }

詳情源碼(僅展示參數(shù))

<script>
export default {
  data() {
    return {
      totalSize: 0,
      currentPage: 1,
      pageSize: 10,
      filteredData: [],
      paginatedData: [],
      tableData: []
    }
  },
  methods: {
    isDown(row) {
      const findIndex = this.filteredData.findIndex(
        (item) => item.date === row.date
      )
      return findIndex === this.filteredData.length - 1 
    },
    moveupOrmovedown(row, index, type) {
      let arr = this.filteredData
      const findIndex = this.filteredData.findIndex(
        (item) => item.date === row.date
      )
      index = findIndex > this.pageSize - 1 ? findIndex : index
      type === 'up'
        ? arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
        : arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
    },
    handleCurrentChange(val) {
      this.currentPage = val
    },
    selectCheckBox(selectCheckBox) {
      const newFilterData = this.filterDataByDate(
        this.tableData,
        selectCheckBox
      )
      this.filteredData = [...this.filteredData, ...newFilterData]
    },
    paginateData(data, pageSize, currentPage) {
      if (data.length < 11) return data
      const startIndex = (currentPage - 1) * pageSize
      const endIndex = startIndex + pageSize
      const dataToShow = data.slice(startIndex, endIndex)
      return dataToShow
    },
    updatePaginatedData() {
      this.totalSize = this.filteredData.length
      // 分頁(前端處理)
     // this.paginatedData = this.$util.paginateData(
      this.paginatedData = this.paginateData(
        this.filteredData,
        this.pageSize,
        this.currentPage
      )
    }
  },
  created() {
    // 調(diào)后端接口返回的全部數(shù)據(jù)(后面前端自己分頁)
    this.tableData = tableData
  },
  mounted() {},
  watch: {
    currentPage: {
      handler(newPage) {
        this.updatePaginatedData()
      },
      immediate: true,
    },
    filteredData: {
      handler(newArray) {
        this.updatePaginatedData()
      },
      immediate: true,
    }
  },
  computed: {},
  filters: {}
}
</script>

總結(jié) 

到此這篇關(guān)于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移功能的文章就介紹到這了,更多相關(guān)VUE+ElementUI實(shí)現(xiàn)table行上移或下移內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐

    Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐

    在Vue3中,有時(shí)我們需要直接操作DOM節(jié)點(diǎn),本文主要介紹了Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • vue?動(dòng)態(tài)路由component?傳遞變量報(bào)錯(cuò)問題解決

    vue?動(dòng)態(tài)路由component?傳遞變量報(bào)錯(cuò)問題解決

    這篇文章主要為大家介紹了vue?動(dòng)態(tài)路由component?傳遞變量報(bào)錯(cuò)問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié)

    Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié)

    這篇文章主要介紹了Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • vue 修改vant自帶的樣式過程

    vue 修改vant自帶的樣式過程

    這篇文章主要介紹了vue 修改vant自帶的樣式過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue2 element 的 el-date-picker彈出層跑到頁面左上角問題及完美解決方法

    vue2 element 的 el-date-picker彈出層跑到頁面左上角問題及完美解

    當(dāng)在Vue中使用多個(gè)el-date-picker組件時(shí),為每個(gè)組件添加唯一的key屬性可以解決狀態(tài)混亂和渲染異常的問題,本文給大家介紹vue2 element的el-date-picker彈出層跑到頁面左上角問題及完美解決方法,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Vue 幸運(yùn)大轉(zhuǎn)盤實(shí)現(xiàn)思路詳解

    Vue 幸運(yùn)大轉(zhuǎn)盤實(shí)現(xiàn)思路詳解

    這篇文章主要介紹了Vue 幸運(yùn)大轉(zhuǎn)盤實(shí)現(xiàn)思路詳解,需要的朋友可以參考下
    2019-05-05
  • 淺析在Vue中watch使用的必要性及其優(yōu)化

    淺析在Vue中watch使用的必要性及其優(yōu)化

    這篇文章主要來和大家深入討論一下在Vue開發(fā)中是否有必要一定用watch,如果換成watcheffect會(huì)如何,文中的示例代碼講解詳細(xì),需要的可以參考下
    2023-12-12
  • vue父子組件通信的高級(jí)用法示例

    vue父子組件通信的高級(jí)用法示例

    這篇文章主要給大家介紹了關(guān)于vue父子組件通信的高級(jí)用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Vue+Node實(shí)現(xiàn)商品列表的分頁、排序、篩選,添加購物車功能詳解

    Vue+Node實(shí)現(xiàn)商品列表的分頁、排序、篩選,添加購物車功能詳解

    這篇文章主要介紹了Vue+Node實(shí)現(xiàn)商品列表的分頁、排序、篩選,添加購物車功能,結(jié)合實(shí)例形式分析了vue.js前臺(tái)商品分頁、排序、篩選等功能及后臺(tái)node.js處理技巧,需要的朋友可以參考下
    2019-12-12
  • Vue+Element?switch組件的使用示例代碼詳解

    Vue+Element?switch組件的使用示例代碼詳解

    這篇文章主要介紹了Vue+Element?switch組件的使用,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

福鼎市| 尚志市| 蓝山县| 洮南市| 凤翔县| 香河县| 珲春市| 故城县| 伊春市| 灌云县| 屏东市| 靖西县| 新丰县| 邵阳市| 新化县| 新田县| 察哈| 顺义区| 田阳县| 鄂州市| 特克斯县| 寿光市| 武鸣县| 凤翔县| 巫山县| 阳新县| 南华县| 周口市| 秭归县| 九寨沟县| 台前县| 卓资县| 加查县| 启东市| 东方市| 昭平县| 襄垣县| 全州县| 遂宁市| 婺源县| 北宁市|