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

Vue Element UI 中 el-table 樹(shù)形數(shù)據(jù) tree-props 多層級(jí)使用避坑指南

 更新時(shí)間:2024年01月26日 11:55:26   作者:藍(lán)胖子的多啦A夢(mèng)  
這篇文章主要介紹了Vue Element UI 中 el-table 樹(shù)形數(shù)據(jù) tree-props 多層級(jí)使用避坑指南,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

實(shí)現(xiàn)效果:

element官網(wǎng)提示設(shè)置tree-props為{children: ‘children’,hasChildren: ‘hasChildren’},data數(shù)據(jù)需要設(shè)置children和hasChildren屬性,row-key也綁定了數(shù)據(jù)的唯一值變量id,但是樹(shù)形結(jié)構(gòu)的第三級(jí)就是出不來(lái)

如圖

可以看到只有第二級(jí),第三級(jí)并沒(méi)有,于是查看了數(shù)據(jù)格式,和官方要求的也是一樣的呢,但是第三層級(jí)就是不展示

最后發(fā)現(xiàn)

在el-table中,支持樹(shù)類型的數(shù)據(jù)的顯示。當(dāng) row 中包含 children 字段時(shí),被視為樹(shù)形數(shù)據(jù)。渲染樹(shù)形數(shù)據(jù)時(shí),必須要指定 row-key。支持子節(jié)點(diǎn)數(shù)據(jù)異步加載

設(shè)置 Table 的 lazy 屬性為 true 與加載函數(shù) load 。通過(guò)指定 row 中的 hasChildren 字段來(lái)指定哪些行是包含子節(jié)點(diǎn)。childrenhasChildren 都可以通過(guò) tree-props 配置。

default-expand-all屬性表示默認(rèn)展開(kāi),不需要展開(kāi)可以刪除。row-key="id"row里面的屬性有children字段(即數(shù)據(jù)里面需要有children字段) 是必須的,:tree-props="{children: ‘children’,hasChildren: ‘hasChildren’}可有可無(wú)。

如果不是懶加載的話,后端不要設(shè)置hasChildren 這個(gè)屬性,要不然樹(shù)形不能顯示; 如果是懶加載,則需要設(shè)置hasChildren字段。

錯(cuò)誤代碼:

因?yàn)槲业臄?shù)據(jù)不是懶加載,所以不需要添加后面的 hasChildren: 'hasChildren' 配置
并且在組裝數(shù)據(jù)格式時(shí),也不需要加上 hasChildren=true / hasChildren=false 的字段

完整代碼:

  <!--表格渲染-->
    <el-table
      :header-cell-style="{ color: '#FFF', background: '#333' }"
      :cell-style="{ color: '#FFF', background: '#333' }"
      row-key="id"
      :data="tableData"
      style="width: 100%"
      :default-sort="{ prop: '', order: '' }"
      @sort-change="sortChange"
      :tree-props="{ children: 'children' }"
    >
      <template slot="empty">
        <span style="color: #969799">{{ $t("NeoLight.empty") }}</span>
      </template>
      <el-table-column
        prop="barcode"
        :sortable="true"
        :label="$t('NeoLight.barcodeNo')"
        width="180"
      />
      <el-table-column
        prop="partNumber"
        :sortable="true"
        label="料號(hào)"
        width="150"
      />
      <el-table-column
        prop="warehouseCode"
        :sortable="true"
        label="庫(kù)別"
        width="150"
      />
      <el-table-column
        prop="batch"
        :sortable="true"
        :label="$t('barcode.batch')"
      />
      <el-table-column
        prop="provider"
        :sortable="true"
        :label="$t('storagePos.providerNumber')"
      />
      <el-table-column
        prop="posName"
        :sortable="true"
        :label="$t('NeoLight.storageNo')"
      />
      <el-table-column prop="dateCode" :sortable="true" label="DC" />
      <el-table-column prop="reelAmount" :sortable="true" label="卷數(shù)" />
      <el-table-column
        prop="amount"
        :sortable="true"
        :label="$t('NeoLight.amount')"
      />
      <el-table-column
        prop="firstPutInDate"
        :sortable="true"
        :label="$t('NeoLight.firstPutInDate')"
      />
      <el-table-column
        prop="putInDate"
        :sortable="true"
        :label="$t('NeoLight.putInDate')"
      />
    </el-table>

接口返回的數(shù)據(jù) 為 二級(jí) 數(shù)據(jù)格式 但是table表格中要展示 三個(gè)層級(jí) 需要前端自己來(lái)處理 組裝需要的格式
有和我一樣的小伙伴,可以讓后端組裝好格式返回噢

 let list = [
 {
	canCheckOutTime: 1669613688280
	enabled: true
	groupId: ""
	groupName: ""
	h: 8
	humidity: ""
	id: "21"
	labelId: ""
	labelName: ""
	posName: "C1"
	priority: 1
	storageId: "1"
	temperature: ""
	used: true
	w: 7
	warmPos: false
},
    {
          barcode: {
            amount: 23000,
            barcode: "CS0004",
            batch: "",
            children: [
              {
                amount: 3000,
                barcode: "M150171314022J1RV",
                batch: "A436105244",
                createDate: "2022-12-01 15:55:32",
                dateCode: "2209",
                firstPutInDate: "2022-12-01 15:55:33",
                fullCode:
                  "152S01563-017131|A436105244-2209|3000|M150171314022J1RV|TAIYO|4101546111011J1007FS",
                height: 8,
                id: "92",
                initialAmount: 0,
                labelAmount: 3000,
                maxStorageTime: 0,
                mixTime: 0,
                onlySingleOut: false,
                partNumber: "152S01563",
                partitionCount: 1,
                plateSize: 7,
                posName: "CS0004-1",
                provider: "TAIYO",
                providerNumber: "017131",
                putInDate: "2022-12-01 15:55:33",
                putInTime: 1669881333306,
                putInTimeStr: "2022-12-01 15:55:306",
                reelAmount: 1,
                relationCodes: [],
                size: "7X8",
                solder: false,
                solderStatus: 0,
                startWarmTime: -1,
                status: 0,
                thickness: "",
                type: 0,
                updateDate: "2022-12-01 15:55:33",
                used: false,
                usedCount: 0,
                warehouseCode: "W10B",
                warmTime: 0,
              },
              {
                amount: 10000,
                barcode: "A1179700142220JB6S",
                batch: "TPA2233000KP",
                createDate: "2022-12-01 15:56:01",
                dateCode: "2022080",
                firstPutInDate: "2022-12-01 15:56:02",
                fullCode:
                  "118S0176-797001|TPA2233000KP-20220807|10000|A1179700142220JB6S|CYNTEC|TPA2233000KP0000JB6S",
                height: 8,
                id: "95",
                initialAmount: 0,
                labelAmount: 10000,
                maxStorageTime: 0,
                mixTime: 0,
                onlySingleOut: false,
                partNumber: "118S0176",
                partitionCount: 2,
                plateSize: 7,
                posName: "CS0004-2",
                provider: "CYNTEC",
                providerNumber: "797001",
                putInDate: "2022-12-01 15:56:02",
                putInTime: 1669881362306,
                putInTimeStr: "2022-12-01 15:56:306",
                reelAmount: 1,
                relationCodes: [],
                size: "7X8",
                solder: false,
                solderStatus: 0,
                startWarmTime: -1,
                status: 0,
                thickness: "",
                type: 0,
                updateDate: "2022-12-01 15:56:02",
                used: false,
                usedCount: 0,
                warehouseCode: "W10B",
                warmTime: 0,
              },
              {
                amount: 10000,
                barcode: "A1179700142220JB7L",
                batch: "TPA2233000KP",
                createDate: "2022-12-01 15:56:06",
                dateCode: "2022080",
                firstPutInDate: "2022-12-01 15:56:07",
                fullCode:
                  "118S0176-797001|TPA2233000KP-20220807|10000|A1179700142220JB7L|CYNTEC|TPA2233000KP0000JB7L",
                height: 8,
                id: "96",
                initialAmount: 0,
                labelAmount: 10000,
                maxStorageTime: 0,
                mixTime: 0,
                onlySingleOut: false,
                partNumber: "118S0176",
                partitionCount: 2,
                plateSize: 7,
                posName: "CS0004-2",
                provider: "CYNTEC",
                providerNumber: "797001",
                putInDate: "2022-12-01 15:56:07",
                putInTime: 1669881367304,
                putInTimeStr: "2022-12-01 15:56:304",
                reelAmount: 1,
                relationCodes: [],
                size: "7X8",
                solder: false,
                solderStatus: 0,
                startWarmTime: -1,
                status: 0,
                thickness: "",
                type: 0,
                updateDate: "2022-12-01 15:56:07",
                used: false,
                usedCount: 0,
                warehouseCode: "W10B",
                warmTime: 0,
              },
            ],
            createDate: "2022-12-01 15:55:05",
            firstPutInDate: "2022-12-01 16:29:47",
            fullCode: "CS0004-1",
            height: 8,
            id: "90",
            initialAmount: 0,
            labelAmount: 0,
            maxStorageTime: 0,
            mixTime: 0,
            onlySingleOut: false,
            outOpor: "",
            partNumber: "CS",
            partitionCount: 0,
            plateSize: 7,
            posName: "B19",
            putInDate: "2022-12-02 14:05:57",
            putInTime: 1669883387333,
            putInTimeStr: "2022-12-01 16:29:333",
            reelAmount: 3,
            relationCodes: [],
            size: "7X8",
            solder: false,
            solderStatus: 0,
            startWarmTime: -1,
            status: 0,
            subCodeList: [
            ],
            thickness: "",
            type: 0,
            updateDate: "2022-12-02 14:05:57",
            used: true,
            usedCount: 4,
            usedDate: "2022-12-01 17:03:30",
            warmTime: 0,
          },
          canCheckOutTime: 1669961157870,
          enabled: true,
          groupId: "",
          groupName: "",
          h: 8,
          humidity: "",
          id: "59",
          labelId: "",
          labelName: "",
          posName: "B19",
          priority: 19,
          storageId: "3",
          temperature: "",
          used: true,
          w: 7,
          warmPos: false,
        },
      ];

可以看出

有的數(shù)據(jù)中沒(méi)有children字段,有的有children字段
后端返回的樹(shù)形結(jié)構(gòu)數(shù)據(jù)一個(gè)二級(jí)數(shù)據(jù)格式,還需要前端處理,將children中每一條數(shù)據(jù)里的 posName 字段值取出來(lái) 并賦值給一個(gè) barcode 的新字段 加上id 組成第二級(jí)數(shù)據(jù),后端返回的 第二層級(jí)數(shù)據(jù) 作為 樹(shù)形結(jié)構(gòu)的 第三層級(jí)數(shù)據(jù) 使用

js代碼

  methods: {
  //從接口中獲取數(shù)據(jù)
    getList() {
      let data = this.query;
      outerInventory(data).then((res) => {
        this.pageLength = res.totalElements;
        this.changeTableJson(res.content); //調(diào)用組裝數(shù)據(jù)方法
      });
    },
    // 組裝表格需要的數(shù)據(jù)格式
    changeTableJson(listArray) {
      if (!this.isLoading) {
        const list2 = [];
        for (let jsonElement of listArray) {
          if (!jsonElement.barcode || !jsonElement.barcode.children) {
            list2.push(jsonElement);
            continue;
          }
          jsonElement.barcode.children = jsonElement.barcode.children.map(
            (item) => {
              if (item.barcode) {
                let temp = JSON.parse(JSON.stringify(item));
                return {
                  id: Math.floor(Math.random() * 1000) + "",
                  barcode: item.posName,
                  children: [temp],
                };
              }
            }
          );
          list2.push(jsonElement.barcode);
        }
        this.tableData = list2;
        this.isLoading = true;
        console.log(list2);
      }
    },
}

三級(jí)樹(shù)形結(jié)構(gòu) 官方例子

<el-table
      :data="tableData1"
      style="width: 100%"
      row-key="id"
      :tree-props="{children: 'children'}">
      <el-table-column
        prop="date"
        label="日期"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址">
      </el-table-column>
    </el-table>
data() {
    return {
      tableData1: [{
        id: 1,
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1518 弄'
      },
      {
        id: 2,
        date: '2016-05-04',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1517 弄',
        children: [
          {
            id: 31,
            date: '2020-05-01',
            name: '王小虎',
            address: '上海市普陀區(qū)金沙江路 1519 弄',
            children: [
              {
                id: 33,
                date: '2020-05-32',
                name: '王小虎',
                address: '上海市普陀區(qū)金沙江路 1519 弄'
              }
            ]
          },
          {
            id: 32,
            date: '2020-05-32',
            name: '王小虎',
            address: '上海市普陀區(qū)金沙江路 1519 弄',
            children: [
              {
                id: 34,
                date: '2020-05-32',
                name: '王小虎',
                address: '上海市普陀區(qū)金沙江路 1519 弄'
              }
            ]
          }
        ]
      },
      {
        id: 3,
        date: '2016-05-01',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1519 弄',
      },
      {
        id: 4,
        date: '2016-05-03',
        name: '王小虎',
        address: '上海市普陀區(qū)金沙江路 1516 弄'
      }]
    }
  },

實(shí)現(xiàn)效果

到此這篇關(guān)于Vue Element UI 中 el-table 樹(shù)形數(shù)據(jù) tree-props 多層級(jí)使用避坑的文章就介紹到這了,更多相關(guān)Element UI 樹(shù)形數(shù)據(jù) tree-props使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue?請(qǐng)求攔截器的配置方法詳解

    vue?請(qǐng)求攔截器的配置方法詳解

    這篇文章主要為大家介紹了vue?請(qǐng)求攔截器的配置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • vue?當(dāng)中組件之間共享數(shù)據(jù)的實(shí)現(xiàn)方式

    vue?當(dāng)中組件之間共享數(shù)據(jù)的實(shí)現(xiàn)方式

    這篇文章主要介紹了vue?當(dāng)中組件之間共享數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 如何實(shí)現(xiàn)vue加載指令 v-loading

    如何實(shí)現(xiàn)vue加載指令 v-loading

    在日常的開(kāi)發(fā)中,加載效果是非常常見(jiàn)的,但是怎么才能方便的使用,本文介紹如何實(shí)現(xiàn)vue加載指令 v-loading,感興趣的朋友一起看看吧
    2024-01-01
  • vue?beforeDestroy?clearInterval清除定時(shí)器失效的解決

    vue?beforeDestroy?clearInterval清除定時(shí)器失效的解決

    這篇文章主要介紹了vue?beforeDestroy?clearInterval清除定時(shí)器失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue中Layout內(nèi)部布局el-row、el-col的實(shí)現(xiàn)

    Vue中Layout內(nèi)部布局el-row、el-col的實(shí)現(xiàn)

    layout是一種非常方便的布局方式,本文主要介紹了Vue中Layout內(nèi)部布局el-row、el-col的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Vue.js 使用AntV X6的示例步驟

    Vue.js 使用AntV X6的示例步驟

    X6 是 AntV 旗下的圖編輯引擎,提供了一系列開(kāi)箱即用的交互組件和簡(jiǎn)單易用的節(jié)點(diǎn)定制能力,方便我們快速搭建流程圖、DAG 圖、ER 圖等圖應(yīng)用。接下來(lái)就看看vue如何使用它
    2021-05-05
  • vue使用ECharts實(shí)現(xiàn)折線圖和餅圖

    vue使用ECharts實(shí)現(xiàn)折線圖和餅圖

    這篇文章主要為大家詳細(xì)介紹了vue使用ECharts實(shí)現(xiàn)折線圖和餅圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • el-dialog關(guān)閉再打開(kāi)后窗口內(nèi)容不刷新問(wèn)題及解決

    el-dialog關(guān)閉再打開(kāi)后窗口內(nèi)容不刷新問(wèn)題及解決

    這篇文章主要介紹了el-dialog關(guān)閉再打開(kāi)后窗口內(nèi)容不刷新問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vuex頁(yè)面刷新數(shù)據(jù)丟失問(wèn)題的四種解決方式

    vuex頁(yè)面刷新數(shù)據(jù)丟失問(wèn)題的四種解決方式

    vuex是大家使用vue時(shí)大多數(shù)都會(huì)選擇的,但是當(dāng)頁(yè)面刷新之后vuex數(shù)據(jù)會(huì)丟失,下面這篇文章主要給大家介紹了關(guān)于vuex頁(yè)面刷新數(shù)據(jù)丟失問(wèn)題的四種解決方式,需要的朋友可以參考下
    2022-02-02
  • Vue實(shí)現(xiàn)文字滾動(dòng)(跑馬燈)效果的四種方式

    Vue實(shí)現(xiàn)文字滾動(dòng)(跑馬燈)效果的四種方式

    文章介紹了在Vue中實(shí)現(xiàn)文字滾動(dòng)(跑馬燈)的四種方式,包括純CSS實(shí)現(xiàn)、帶有鼠標(biāo)懸浮暫停的滾動(dòng)、真正無(wú)縫的滾動(dòng)以及JS控制滾動(dòng),每種方式都有其特點(diǎn)和適用場(chǎng)景,需要的朋友可以參考下
    2026-04-04

最新評(píng)論

东辽县| 双鸭山市| 京山县| 潜山县| 鄂伦春自治旗| 巴马| 安多县| 宁明县| 沾化县| 七台河市| 遵义市| 天峻县| 蓬莱市| 蒲江县| 北辰区| 涿鹿县| 莆田市| 焦作市| 邛崃市| 凤山县| 比如县| 林周县| 巴塘县| 仙桃市| 澄迈县| 句容市| 天台县| 江达县| 金寨县| 拜泉县| 泽普县| 金华市| 安庆市| 霍州市| 屏山县| 济阳县| 那曲县| 平泉县| 永泰县| 武陟县| 石屏县|