欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Element實(shí)現(xiàn)表格嵌套、多個(gè)表格共用一個(gè)表頭的方法

 更新時(shí)間:2020年05月09日 16:43:46   作者:下一秒  
這篇文章主要介紹了Element實(shí)現(xiàn)表格嵌套、多個(gè)表格共用一個(gè)表頭的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、分析需求

這里先上一張圖說明 需求

根據(jù)后端返回的數(shù)據(jù) ( res 是一個(gè)數(shù)組,它的元素是一個(gè)對象,對象里面的 ext 屬性是一個(gè)對象,它又包含了, default 、 freepay 三個(gè)屬性,且這三個(gè)都是數(shù)組格式。):

 

渲染出一個(gè)這樣子的 表格

res 數(shù)據(jù):

res 的每一個(gè)元素的直接屬性 name (即為郵費(fèi)模板名稱,比如成都運(yùn)費(fèi)模板),

resext 屬性下的三個(gè)數(shù)組 default 、 free 、 pay ,每一個(gè)數(shù)組要大的一行(這一行中,第一列是運(yùn)送到的地址的名字,這里定義的是 area 屬性,但后端是未給到這個(gè)字段的,可自己處理數(shù)據(jù)添加該字段 ,這里就不細(xì)說了。) 這個(gè) area 屬性占據(jù)的這一列,在頁面的展示效果 應(yīng)該是多行合并的效果。

 

二、代碼實(shí)現(xiàn):

<template>
 <div class="layout">
  <el-table :data="res" >
  <el-table-column prop="name">
   <template slot-scope="scope">
   <div class="tab_header">
    <span style="font-weight:600;">{{scope.row.name}}</span>
    <div class="operate">
    <span @click="handleEdit(scope.$index, scope.row)">修改</span>
    <span @click="handleDelete(scope.$index, scope.row)">刪除</span>
    </div>
   </div>

   <!-- 這里要實(shí)現(xiàn) 多個(gè)表格共用一個(gè)表頭,故需做判斷,當(dāng)表格要渲染的數(shù)據(jù)為default這個(gè)數(shù)組的時(shí)候,才顯示表頭的label值 -->
   <!-- 注意:當(dāng)label無值的時(shí)候,還是會占用空間,故當(dāng)前表格在頁面上會出現(xiàn)一個(gè)代表表頭的空行,需要手動更改(重寫)Element表格的 thead樣式 -->

   <div v-for="item in (scope.row.ext)" :key="item.id">
    <el-table :data="item" border :class="item!==scope.row.ext.default?'tab-thead-style':''" style="box-sizing: border-box;border-top:none;" :span-method="objectSpanMethod">
    <el-table-column :label="item===scope.row.ext.default?'運(yùn)送到':''" prop="area"></el-table-column>
    <el-table-column :label="item===scope.row.ext.default?'首重':''" prop="weight"></el-table-column>
    <el-table-column :label="item===scope.row.ext.default?'運(yùn)費(fèi)':''" prop="first_price"></el-table-column>
    <el-table-column :label="item===scope.row.ext.default?'續(xù)重':''" prop="weight_incre"></el-table-column>
    <el-table-column :label="item===scope.row.ext.default?'最終運(yùn)費(fèi)':''" prop="extend_price"></el-table-column>
    </el-table>
   </div>

   </template>
  </el-table-column>
  </el-table>
 </div>
</template>
<script>
export default {
 data () {
 return {
  // res 參考的是后端返回的數(shù)據(jù)格式,
  res: [
  {
   id: 1,
   dealer_id: 0,
   name: '成都運(yùn)費(fèi)模板',
   type: 1,
   ext: {
   default: [{ area: '默認(rèn)', type: 1, region: '1', weight: '首重d', weight_incre: '續(xù)重d', first_price: '運(yùn)費(fèi)d', extend_price: '最終運(yùn)費(fèi)d' }],
   free: [{ area: 'free', type: 1, region: '1', weight: '首重f', weight_incre: '續(xù)重f', first_price: '運(yùn)費(fèi)f', extend_price: '最終運(yùn)費(fèi)f' }, { area: 'free', type: 1, region: '1', weight: '首重f', weight_incre: '續(xù)重f', first_price: '運(yùn)費(fèi)f', extend_price: '最終運(yùn)費(fèi)f' }],
   pay: [{ area: 'pay', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }, { area: 'pay', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }, { area: 'pay', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }]
   }
  },
  {
   id: 2,
   dealer_id: 0,
   name: '重慶運(yùn)費(fèi)模板',
   type: 2,
   ext: {
   default: [{ area: '默認(rèn)1', type: 1, region: '1', weight: '首重d', weight_incre: '續(xù)重d', first_price: '運(yùn)費(fèi)d', extend_price: '最終運(yùn)費(fèi)d' }],
   free: [{ area: 'free1', type: 1, region: '1', weight: '首重f', weight_incre: '續(xù)重f', first_price: '運(yùn)費(fèi)f', extend_price: '最終運(yùn)費(fèi)f' }, { area: 'free', type: 1, region: '1', weight: '首重f', weight_incre: '續(xù)重f', first_price: '運(yùn)費(fèi)f', extend_price: '最終運(yùn)費(fèi)f' }],
   pay: [{ area: 'pay1', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }, { area: 'pay', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }, { area: 'pay', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }, { area: 'pay1', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }, { area: 'pay', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }, { area: 'pay', type: 1, region: '1', weight: '首重p', weight_incre: '續(xù)重p', first_price: '運(yùn)費(fèi)p', extend_price: '最終運(yùn)費(fèi)p' }]
   }
  }

  ]
 }
 },
 methods: {
 handleEdit (index, row) {
  console.log(index, row)
 },
 handleDelete (index, row) {
  console.log(index, row)
 },
 objectSpanMethod ({ row, column, rowIndex, columnIndex }) {
  if (columnIndex === 0) {
  if (rowIndex === 0) {
   let maxLen
   this.res.forEach(val => {
   const arr = [val.ext.default.length, val.ext.free.length, val.ext.pay.length]
   arr.sort((a, b) => a - b)// arr數(shù)組 按數(shù)字大小從小到大排序
   maxLen = arr.pop()// 取出排序后的數(shù)組arr中的最后一個(gè)元素
   })
   return {
   // 這個(gè)rowspan應(yīng)該據(jù) ext的default,pay,free的長度不同來定,取最大長度
   rowspan: maxLen,
   colspan: 1
   }
  } else {
   return {
   rowspan: 0,
   colspan: 0
   }
  }
  }
 }
 }
}
</script>
<style lang="scss">
.layout{

 .tab_header{
 color:#333;
 padding:0 5px 0 5px;
 height:45px;
 line-height:45px;
 border:1px solid #eee;display:flex;
 justify-content: space-between;
 background:rgb(233, 225, 225);
 }
 .operate{
 span{
  font-size: 14px;
  margin-right: 20px;
  margin-right:20px;
  color:#409EFF;
  cursor: pointer;
 }
 }
 /* 處理多個(gè)表格共用一個(gè)表頭時(shí),表頭處出現(xiàn)多余空行的問題 (label置空后還是占據(jù)空間問題) */
 .tab-thead-style{
  thead{
   display: none;
  }
 }

}
</style>

三、知識點(diǎn)總結(jié):

為什么要采用這種方式解決(渲染)?
① . 項(xiàng)目用的UI組件是Element,它的Table表格組件,沒有直接處理行的操作。
② . el-table,它是通過注入data對象數(shù)組,并在el-table-column 中用prop屬性來對應(yīng)對象中的鍵名來填入數(shù)據(jù),從而渲染出渲染表格。其中el-table-column表示一個(gè)列,label屬性來定義表格的列名,即對象的一個(gè)鍵名代表一列;
③ . 沒想到更優(yōu)的解決辦法,O(∩_∩)O哈哈~

多個(gè)表格共用一個(gè)表頭時(shí),注意:
①.   需做判斷,同時(shí)注意label的值。
②.  當(dāng)el-table-column 的屬性label無值的時(shí)候,還是會占用空間,故當(dāng)前表格在頁面上會出現(xiàn)一個(gè)代表表頭的空行,需要手動更改(重寫)Element表格的 thead樣式

table表格嵌套的時(shí)候,注意:
① . Element的Table組件可 自定義列模板,主要是利用它實(shí)現(xiàn)表格嵌套部分,通過 Scoped slot 可以獲取到 row, column, $index 和 store(table 內(nèi)部的狀態(tài)管理)的數(shù)據(jù),更多用法參考官網(wǎng)
②.  Element的Table組件可 合并行或列 ,多行或多列共用一個(gè)數(shù)據(jù)時(shí),可以合并行或列;通過給table傳入span-method方法可以實(shí)現(xiàn)合并行或列,參考上述代碼的 **objectSpanMethod**方法(該表格的第一列需要合并多行——合并渲染表格的data數(shù)組的長度那么多行) 或者官網(wǎng)。

到此這篇關(guān)于Element實(shí)現(xiàn)表格嵌套、多個(gè)表格共用一個(gè)表頭的方法的文章就介紹到這了,更多相關(guān)Element 表格嵌套內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3中同時(shí)定義多個(gè)插槽的實(shí)現(xiàn)示例

    Vue3中同時(shí)定義多個(gè)插槽的實(shí)現(xiàn)示例

    本文主要介紹了Vue3中同時(shí)定義多個(gè)插槽的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • 圖片預(yù)覽插件vue-photo-preview的使用示例詳解

    圖片預(yù)覽插件vue-photo-preview的使用示例詳解

    這篇文章主要介紹了圖片預(yù)覽插件vue-photo-preview的使用,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • vue-cli3.0之配置productionGzip方式

    vue-cli3.0之配置productionGzip方式

    這篇文章主要介紹了vue-cli3.0之配置productionGzip方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue前端開發(fā)層次嵌套組件的通信詳解

    vue前端開發(fā)層次嵌套組件的通信詳解

    vue通過provide & inject兩個(gè)關(guān)鍵字完成父組件向子孫組件直接傳值,很像子類能夠使用父類的屬性一樣方便。provide & inject一般用于多層之間的傳值,兩層之間還是使用props進(jìn)行
    2021-10-10
  • 解決vue中修改export default中腳本報(bào)一大堆錯(cuò)的問題

    解決vue中修改export default中腳本報(bào)一大堆錯(cuò)的問題

    今天小編就為大家分享一篇解決vue中修改export default中腳本報(bào)一大堆錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Vue3使用時(shí)應(yīng)避免的10個(gè)錯(cuò)誤總結(jié)

    Vue3使用時(shí)應(yīng)避免的10個(gè)錯(cuò)誤總結(jié)

    Vue?3已經(jīng)穩(wěn)定了相當(dāng)長一段時(shí)間了。許多代碼庫都在生產(chǎn)環(huán)境中使用它,其他人最終都將不得不遷移到Vue?3。我現(xiàn)在有機(jī)會使用它并記錄了我的錯(cuò)誤,下面這些錯(cuò)誤你可能想要避免
    2023-03-03
  • Vue3 全局使用按鈕截流指令示例代碼

    Vue3 全局使用按鈕截流指令示例代碼

    這篇文章主要介紹了Vue3 全局使用按鈕截流指令示例代碼,Vue2與Vue3中的自定義指令實(shí)現(xiàn)方式略有不同,但實(shí)現(xiàn)的按鈕截流功能是類似的,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)

    vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)導(dǎo)航欄效果,選中狀態(tài)刷新不消失,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Vue利用ref屬性更改css樣式的操作方法

    Vue利用ref屬性更改css樣式的操作方法

    在Vue.js的應(yīng)用開發(fā)中,我們經(jīng)常會遇到需要?jiǎng)討B(tài)修改DOM元素樣式的情況,Vue提供了多種方式來實(shí)現(xiàn)這一目標(biāo),其中ref是一個(gè)非常有用且靈活的工具,本文將深入探討如何在Vue項(xiàng)目中利用ref屬性來更改CSS樣式,并通過多個(gè)實(shí)例演示其具體用法,需要的朋友可以參考下
    2024-10-10
  • Vue3常用的通訊方式總結(jié)與實(shí)例代碼

    Vue3常用的通訊方式總結(jié)與實(shí)例代碼

    Vue.js中一個(gè)很重要的知識點(diǎn)是組件通信,不管是業(yè)務(wù)類的開發(fā)還是組件庫開發(fā),都有各自的通訊方法,下面這篇文章主要給大家介紹了關(guān)于Vue3常用的通訊方式的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評論