Vue項(xiàng)目:使用iview二次封裝表格table組件,在表格數(shù)據(jù)前面插入icon圖標(biāo)

基本的安裝步驟參考官網(wǎng)https://iview.github.io/docs/guide/install

1逃贝、引入iview的table表格組件

通過(guò)slot-scope="{ row }"將操作按鈕單獨(dú)提出去做,按鈕很多的話也可以將多個(gè)按鈕push進(jìn)一個(gè)數(shù)組中迫摔,然后通過(guò)遍歷渲染到對(duì)應(yīng)的表格中沐扳,分為兩種情況:一種是單個(gè)或者按鈕很少的就直接在template中進(jìn)行操作,另外一種是多個(gè)按鈕句占,需要將其封裝到j(luò)s數(shù)組中沪摄,通過(guò)遍歷數(shù)組去展示操作按鈕。

1.1纱烘、單個(gè)或者按鈕很少的直接操作

組件代碼:

      <div class="basic-table">
        <!-- 文件數(shù)據(jù)表格 -->
        <Table border :context="self" :columns="columns" :data="list">
          <template slot-scope="{ row }" slot="fileData">
            <Button class="basic-table-btn" type="text" @click="handleShow(row)"
              >查看</Button
            >
            <Button
              class="basic-table-btn"
              style="margin-left: 20px"
              type="text"
              @click="handleDown(row)"
              >下載</Button
            >
          </template>
        </Table>
        <!-- 分頁(yè)組件 -->
        <MyPage
          :total="total"
          :pageSize="pageSize"
          @changePage="changePage"
        ></MyPage>
      </div>

<script>
import { systemConstruct } from "./systemConstruct";//解構(gòu)js文件暴露出來(lái)的對(duì)象
import MyPage from "@/components/ckypage/myPage";
export default {
  props: ["dataList"],
  components: {
    MyPage,
  },
  data() {
    return {
      self: this,
      keyWord: "",
      columns: systemConstruct.columns,
      list: [],
      total: 12,
      pageSize: 10,
    };
  },
  mounted() {
    this.list = this.dataList;
  }
}

systemConstruct.js代碼:
將表格的字段columns單獨(dú)寫(xiě)在一個(gè)js中,新建一個(gè)js文件(比如我的:systemConstruct.js) -> 再將里面的數(shù)據(jù)對(duì)象暴露出去

export const systemConstruct = {
  columns: [
    {
      type: 'selection',
      width: 60,
      align: 'center'
    },
    {
      title: '文件名稱',
      key: 'fileName',
      align: 'center',
      ellipsis: true,
      render: (h, params) => {
        // 判斷是否為文件夾
        if (params.row.isFloder) {
          return h('div', { style: { textAlign: 'left' } }, [
            h('icon', {
              props: {
                type: 'ios-folder'
              },
              style: {
                fontSize: '32px',
                color: '#FFC062',
                marginRight: '5px'
              }
            }),
            h('span', { style: { fontWeight: 700, fontSize: '15px' } }, params.row.fileName)
          ])
        } else {
          return h('div', { style: { textAlign: 'left' } }, [
            h('icon', {
              props: {
                type: 'ios-paper'
              },
              style: {
                fontSize: '26px',
                color: '#2D91FF',
                marginRight: '5px'
              }
            }),
            h('span', params.row.fileName)
          ])
        }
      }
    },
    {
      title: '創(chuàng)建日期',
      key: 'creationDate',
      align: 'center',
      ellipsis: true,
    },
    {
      title: '創(chuàng)建人',
      key: 'founder',
      align: 'center',
      ellipsis: true,
    },
    {
      title: '文件類型',
      key: 'fileType',
      align: 'center',
      ellipsis: true,
    },
    {
      title: '操作',
      slot: 'fileData',
      align: 'center',
      ellipsis: true,
    }
  ]
}

添加圖標(biāo)的核心代碼是該部分的render函數(shù)的代碼杨拐,render函數(shù)返回的是一個(gè)數(shù)組,因此擂啥,我們只需要將icon圖標(biāo)和data數(shù)據(jù)逐個(gè)放入到數(shù)組中即可哄陶。

 {
      title: '文件名稱',
      key: 'fileName',
      align: 'center',
      ellipsis: true,
      render: (h, params) => {
        // 判斷是否為文件夾
        if (params.row.isFloder) {
          return h('div', { style: { textAlign: 'left' } }, [
            h('icon', {
              props: {
                type: 'ios-folder'
              },
              style: {
                fontSize: '32px',
                color: '#FFC062',
                marginRight: '5px'
              }
            }),
            h('span', { style: { fontWeight: 700, fontSize: '15px' } }, params.row.fileName)
          ])
        } else {
          return h('div', { style: { textAlign: 'left' } }, [
            h('icon', {
              props: {
                type: 'ios-paper'
              },
              style: {
                fontSize: '26px',
                color: '#2D91FF',
                marginRight: '5px'
              }
            }),
            h('span', params.row.fileName)
          ])
        }
      }
    },
結(jié)果展示.png
1.2、多個(gè)按鈕操作在js中添加按鈕數(shù)組

創(chuàng)建一個(gè)index.js文件哺壶,然后里面寫(xiě)上表格的表頭字段以及按鈕操作的數(shù)組等表格設(shè)置項(xiàng):

export const noticeManage = {
  columns: {
    data: [{
      title: "序號(hào)",
      key: "order",
      align: 'center',
    },
    {
      title: "標(biāo)題",
      key: "title",
      align: 'center',
      width: '400'
    },
    {
      title: "類型",
      key: "type",
      align: 'center',
    },
    {
      title: "時(shí)間",
      key: "date",
      align: 'center',
    },
    {
      title: "狀態(tài)",
      key: "state",
      align: 'center',
      render(h, params) {
        if (params.row.state == 1) {
          return h('span', { 'style': { 'color': '#1EAA39' } }, '已置頂')
        } else if (params.row.state == 0) {
          return h('span', { 'style': { 'color': '#ccc' } }, '未置頂')
        }
      },
    },
    {
      title: "管理",
      slot: 'manage',
      width: 260,
      align: 'center',
    },
    {
      title: '操作',
      slot: 'action',
      width: 260,
      align: 'center',
    }
    ],
    btns: [
      {
        text: '編輯',
        size: 'small',
        handleName: 'handleEdit',
      },
      {
        text: '刪除',
        size: 'small',
        handleName: 'handleRomve',
      }
    ],
  }
}

tableSetting.btns為在index.js中的表格的數(shù)組項(xiàng):

<template>
  <div class="basic-table">
    <Table border :columns="tableSetting.data" :data="tableData">
      <template slot-scope="{ row }" slot="action">
        <Button
          class="basic-table-btn"
          v-for="item in tableSetting.btns"
          :key="item.text"
          :type="item.type"
          style="margin-left: 10px"
          @click="handleTable(item.handleName, row)"
          >{{ item.text }}</Button
        >
      </template>
    </Table>
    <div class="page">
      <Page
        ref="pages"
        :total="totla"
        @on-change="changePage"
        :page-size="pageSize"
        show-total
        show-elevator
      />
    </div>
  </div>
</template>

<script>
export default {
  props: ["tableSetting", "tableData", "totla", "pageSize"],
  data() {
    return {
      columns: [],
    };
  },
  mounted() {
    console.log(this.tableSetting, this.tableData);
  },
  methods: {
    //分頁(yè)功能的實(shí)現(xiàn)
    changePage(index) {
      this.$emit("changePage", index);
    },
    //將表格的點(diǎn)擊事件全部傳出
    handleTable(name, row) {
      this.$emit(name, row);
    },
  },
};
</script>

結(jié)果展示.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屋吨,一起剝皮案震驚了整個(gè)濱河市蜒谤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌至扰,老刑警劉巖鳍徽,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異敢课,居然都是意外死亡旬盯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)翎猛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胖翰,“玉大人,你說(shuō)我怎么就攤上這事切厘∪龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵疫稿,是天一觀的道長(zhǎng)培他。 經(jīng)常有香客問(wèn)我,道長(zhǎng)遗座,這世上最難降的妖魔是什么舀凛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮途蒋,結(jié)果婚禮上猛遍,老公的妹妹穿的比我還像新娘。我一直安慰自己号坡,他們只是感情好懊烤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著宽堆,像睡著了一般腌紧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畜隶,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天壁肋,我揣著相機(jī)與錄音,去河邊找鬼籽慢。 笑死浸遗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嗡综。 我是一名探鬼主播乙帮,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼极景!你這毒婦竟也來(lái)了察净?” 一聲冷哼從身側(cè)響起驾茴,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氢卡,沒(méi)想到半個(gè)月后锈至,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡译秦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年峡捡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筑悴。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡们拙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阁吝,到底是詐尸還是另有隱情砚婆,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布突勇,位于F島的核電站装盯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏甲馋。R本人自食惡果不足惜埂奈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望定躏。 院中可真熱鬧账磺,春花似錦、人聲如沸共屈。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拗引。三九已至,卻和暖如春幌衣,著一層夾襖步出監(jiān)牢的瞬間矾削,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工豁护, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哼凯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓楚里,卻偏偏與公主長(zhǎng)得像断部,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子班缎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容