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

Vue使用ElemenUI對(duì)table的指定列進(jìn)行合算的方法

 更新時(shí)間:2023年03月08日 14:32:18   作者:小花皮豬  
這篇文章主要介紹了Vue使用ElemenUI對(duì)table的指定列進(jìn)行合算的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

前言

最近有一個(gè)想法,就是記錄自己花銷的時(shí)候,table中有一項(xiàng)內(nèi)容是花銷的金額。然后想在table的底部有一項(xiàng)內(nèi)容是該金額的總計(jì)。

然后我就順著elemetui的table組件尋找相關(guān)的demo,還真發(fā)現(xiàn)了一個(gè)這樣的demo。

對(duì)于這個(gè)demo,官方是這么描述的:

將show-summary設(shè)置為true就會(huì)在表格尾部展示合計(jì)行。默認(rèn)情況下,對(duì)于合計(jì)行,第一列不進(jìn)行數(shù)據(jù)求合操作,而是顯示「合計(jì)」二字(可通過sum-text配置),其余列會(huì)將本列所有數(shù)值進(jìn)行求合操作,并顯示出來(lái)。當(dāng)然,你也可以定義自己的合計(jì)邏輯。使用summary-method并傳入一個(gè)方法,返回一個(gè)數(shù)組,這個(gè)數(shù)組中的各項(xiàng)就會(huì)顯示在合計(jì)行的各列中,具體可以參考本例中的第二個(gè)表格。

通過描述可以發(fā)現(xiàn)幾個(gè)要點(diǎn):

1.可以通過show-summary開啟在表格尾部展示合計(jì)行,默認(rèn)是false,改成true即可開啟,第一列不進(jìn)行數(shù)據(jù)求合操作。
2.尾部合計(jì)的文案默認(rèn)是合計(jì),可以通過sum-text自定義修改
3.可以通過summary-method編寫一個(gè)函數(shù),自定義合計(jì)的邏輯

官方的原生代碼如下:

<template>
  <el-table
    :data="tableData"
    border
    show-summary
    style="width: 100%">
    <el-table-column
      prop="id"
      label="ID"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名">
    </el-table-column>
    <el-table-column
      prop="amount1"
      sortable
      label="數(shù)值 1">
    </el-table-column>
    <el-table-column
      prop="amount2"
      sortable
      label="數(shù)值 2">
    </el-table-column>
    <el-table-column
      prop="amount3"
      sortable
      label="數(shù)值 3">
    </el-table-column>
  </el-table>

  <el-table
    :data="tableData"
    border
    height="200"
    :summary-method="getSummaries"
    show-summary
    style="width: 100%; margin-top: 20px">
    <el-table-column
      prop="id"
      label="ID"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名">
    </el-table-column>
    <el-table-column
      prop="amount1"
      label="數(shù)值 1(元)">
    </el-table-column>
    <el-table-column
      prop="amount2"
      label="數(shù)值 2(元)">
    </el-table-column>
    <el-table-column
      prop="amount3"
      label="數(shù)值 3(元)">
    </el-table-column>
  </el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableData: [{
          id: '12987122',
          name: '王小虎',
          amount1: '234',
          amount2: '3.2',
          amount3: 10
        }, {
          id: '12987123',
          name: '王小虎',
          amount1: '165',
          amount2: '4.43',
          amount3: 12
        }, {
          id: '12987124',
          name: '王小虎',
          amount1: '324',
          amount2: '1.9',
          amount3: 9
        }, {
          id: '12987125',
          name: '王小虎',
          amount1: '621',
          amount2: '2.2',
          amount3: 17
        }, {
          id: '12987126',
          name: '王小虎',
          amount1: '539',
          amount2: '4.1',
          amount3: 15
        }]
      };
    },
    methods: {
      getSummaries(param) {
        const { columns, data } = param;
        const sums = [];
        columns.forEach((column, index) => {
          if (index === 0) {
            sums[index] = '總價(jià)';
            return;
          }
          const values = data.map(item => Number(item[column.property]));
          if (!values.every(value => isNaN(value))) {
            sums[index] = values.reduce((prev, curr) => {
              const value = Number(curr);
              if (!isNaN(value)) {
                return prev + curr;
              } else {
                return prev;
              }
            }, 0);
            sums[index] += ' 元';
          } else {
            sums[index] = 'N/A';
          }
        });

        return sums;
      }
    }
  };
</script>

接下來(lái)就改造下代碼,根據(jù)自己的需求去修改對(duì)應(yīng)的邏輯。

show-summary合計(jì)項(xiàng)初始化

首先把相關(guān)的代碼加上,初始化就是這樣的一個(gè)效果

sum-tex修改文案

但是默認(rèn)的文案是合計(jì),有時(shí)候我們可能需要根據(jù)自己的場(chǎng)景進(jìn)行修改

這時(shí)候就可以使用sum-tex屬性進(jìn)行修改了,比如我這里修改:

sum-text="總共消費(fèi)

效果馬上就來(lái)

但是這時(shí)候還有一個(gè)問題,我只想要消費(fèi)金額這一列進(jìn)行匯總,但是現(xiàn)在的情況是把table全部的列都匯總了。甚至把我的字典值都匯總了。。。

這顯然不符合我的需求,這時(shí)候就可以使用自定義函數(shù)了。

summary-method自定義函數(shù)

和前面兩個(gè)屬性一樣,直接加在table中即可。由于它的值是一個(gè)函數(shù),所以寫法和前兩位略有不同。

我們也可以再這個(gè)函數(shù)里面通過 sums[index] 去定義總價(jià)的文案,如果sum-text和函數(shù)里面定義的 sums[index] 有沖突,會(huì)以函數(shù)中的 sums[index] 文案為主

這時(shí)候的效果是這樣的。

自定義總計(jì)列 單個(gè)列

如果我們只想要對(duì)某一列進(jìn)行總計(jì),那么可以借助column的property屬性:

可以發(fā)現(xiàn)其實(shí)就是全部的屬性名稱,那么我們就可以根據(jù)它判斷,實(shí)現(xiàn)自定義核算了

比如這里我想要核算amount這一列的值:

多個(gè)列

如果哪天又加了一個(gè)需求,需要再算一個(gè)列,這時(shí)候在判斷里面加上這個(gè)條件即可。使用|| 拼接該列

比如這里我又要合算remark這一列。就可以這么寫:

相關(guān)代碼如下:

<el-table 
      :data="moneyTableData.slice((currentPage-1)*pagesize,currentPage*pagesize)"  
      highlight-current-row 
      border 
      stripe
      fit
      show-summary
      sum-text="總共消費(fèi)"
      :summary-method="getSummaries"
    >

// 對(duì)列進(jìn)行合算
    getSummaries(param) {
        const { columns, data } = param;
        const sums = [];
        columns.forEach((column, index) => {
          if (index === 0) {
            sums[index] = '總共消費(fèi)';
            return;
          }
          const values = data.map(item => Number(item[column.property]));
          // 只對(duì)amount這一列進(jìn)行總計(jì)核算。
         if (column.property === 'amount') {
            if (!values.every(value => isNaN(value))) {
                sums[index] = values.reduce((prev, curr) => {
                const value = Number(curr);
                if (!isNaN(value)) {
                    return prev + curr;
                }else {
                    return prev;
                }
              }, 0);
                sums[index] += ' 元';
              } else {
                sums[index] = '---'
            }
         }
      });
        return sums;
    },

總結(jié)

ElemenUI對(duì)這個(gè)demo封裝的特別好,我們直接拿來(lái)用修改下自己的邏輯即可。

到此這篇關(guān)于Vue使用ElemenUI對(duì)table的指定列進(jìn)行合算的文章就介紹到這了,更多相關(guān)Vuetable的指定列合算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue用戶長(zhǎng)時(shí)間不操作退出到登錄頁(yè)的兩種實(shí)現(xiàn)方式

    vue用戶長(zhǎng)時(shí)間不操作退出到登錄頁(yè)的兩種實(shí)現(xiàn)方式

    出于安全考慮,用戶長(zhǎng)時(shí)間不操作,就回到登錄頁(yè)面,讓用戶重新登錄,本文就記錄一下實(shí)現(xiàn)這種效果的兩種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • el-select綁定值遇到的問題小結(jié)

    el-select綁定值遇到的問題小結(jié)

    碰到一個(gè)問題,選擇框的數(shù)據(jù)是后端傳過來(lái)的,下拉框的數(shù)據(jù)也是后端傳過來(lái)的,但是打開下拉框時(shí),發(fā)現(xiàn)數(shù)據(jù)沒有高亮,最后通過只要選擇框v-model給的值和option的value綁定的值一致,就可以高亮,感興趣的朋友一起看看吧
    2023-12-12
  • Vue.js 十五分鐘入門圖文教程

    Vue.js 十五分鐘入門圖文教程

    不過 Vue 本身含有非常豐富的功能,要用 Vue 搭建完整的應(yīng)用,仍然需要了解大量 Vue 設(shè)計(jì)概念和操作技巧。這篇文章主要介紹了Vue.js 十五分鐘入門圖文教程,需要的朋友可以參考下
    2018-09-09
  • 在Vue的mounted中仍然加載渲染不出echarts的方法問題

    在Vue的mounted中仍然加載渲染不出echarts的方法問題

    這篇文章主要介紹了在Vue的mounted中仍然加載渲染不出echarts的方法問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue-router中scrollBehavior的巧妙用法

    vue-router中scrollBehavior的巧妙用法

    本文給大家介紹vue-router中scrollBehavior的妙用,文中給大家提到了兩種解決方案,需要的朋友可以參考下
    2018-07-07
  • 利用Vue實(shí)現(xiàn)數(shù)字翻滾動(dòng)畫效果展示

    利用Vue實(shí)現(xiàn)數(shù)字翻滾動(dòng)畫效果展示

    這篇文章主要介紹了利用Vue實(shí)現(xiàn)數(shù)字翻滾動(dòng)畫效果,通過Vue的響應(yīng)式數(shù)據(jù)更新結(jié)合CSS3的動(dòng)畫效果,我們可以實(shí)現(xiàn)非??犰诺臄?shù)字翻滾效果,給數(shù)據(jù)可視化帶來(lái)更多動(dòng)感和吸引力,需要的朋友參考下吧
    2024-04-04
  • vue改變對(duì)象或數(shù)組時(shí)的刷新機(jī)制的方法總結(jié)

    vue改變對(duì)象或數(shù)組時(shí)的刷新機(jī)制的方法總結(jié)

    這篇文章主要介紹了vue改變對(duì)象或數(shù)組時(shí)的刷新機(jī)制的方法總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-04-04
  • vue項(xiàng)目使用node連接數(shù)據(jù)庫(kù)的方法(前后端分離)

    vue項(xiàng)目使用node連接數(shù)據(jù)庫(kù)的方法(前后端分離)

    這篇文章主要介紹了vue項(xiàng)目使用node連接數(shù)據(jù)庫(kù)(前后端分離),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • vue?按需引入vant跟全局引入方式

    vue?按需引入vant跟全局引入方式

    這篇文章主要介紹了vue?按需引入vant跟全局引入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue-router如何實(shí)時(shí)動(dòng)態(tài)替換路由參數(shù)(地址欄參數(shù))

    vue-router如何實(shí)時(shí)動(dòng)態(tài)替換路由參數(shù)(地址欄參數(shù))

    這篇文章主要介紹了vue-router如何實(shí)時(shí)動(dòng)態(tài)替換路由參數(shù)(地址欄參數(shù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評(píng)論

始兴县| 烟台市| 吴江市| 恭城| 湾仔区| 沂水县| 改则县| 台山市| 福清市| 博爱县| 吉木萨尔县| 资中县| 永康市| 封丘县| 商都县| 灵台县| 崇义县| 卢氏县| 察雅县| 乐安县| 安化县| 彩票| 安远县| 昆明市| 胶南市| 松潘县| 中西区| 开平市| 郴州市| 黄冈市| 安福县| 阳城县| 都安| 衡山县| 靖西县| 潮安县| 娱乐| 绥宁县| 疏勒县| 茂名市| 台东县|