Element-ui 动态Table表格

这篇具有很好参考价值的文章主要介绍了Element-ui 动态Table表格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在做相关需求,感觉太多的重复代码,网上也很多这种动态的,写的很好,所以我借鉴了很多大佬的动态table表格,结合需求,完成了我自己需要的table。

一、创建相关文件

1.config文件夹相关配置文件
2.一个用来配置的’pageTable.vue’文件
Element-ui 动态Table表格

二、pageTable文件里面的内容

<template>
  <div class="container">
    <el-table :data="tableData" border style="width: 100%">
    <!-- 这里是否要添加前面的序号123456 -->
      <el-table-column label="序号" type="index" width="50" fixed="left"></el-table-column>
      <div v-for="(col, index) in cols" :key="index">
      <!-- 这里判断是什么类型 -->
        <template v-if="col.type == 'input'">
          <el-table-column
            :prop="col.prop"
            :label="col.label"
            :width="col.width"
            align="center"
            show-overflow-tooltip
          >
          </el-table-column>
        </template>
        <!-- 这里用了字典 -->
        <template v-else-if="col.type == 'select'">
          <el-table-column
            :prop="col.prop"
            :label="col.label"
            :width="col.width"
            align="center"
            show-overflow-tooltip
          >
            <template slot-scope="scope">
              <template v-for="(item, index) in dictObj[col.dict]" >
                <span :key="index" v-if="scope.row[col.prop] == item.code">{{ item.name }}</span>
              </template>
            </template>
          </el-table-column>
        </template>
        <template v-else-if="col.type == 'datePicker'">
          <el-table-column
            :prop="col.prop"
            :label="col.label"
            :width="col.width"
            align="center"
            show-overflow-tooltip
          >
          <template slot-scope="scope">
            <span v-if="scope.row[col.prop]">{{ scope.row[col.prop].split(" ")[0] }}</span>
          </template>
          </el-table-column>
        </template>
      </div>
      <!-- 这里可以根据需看有没有需要操作按钮的 -->
      <el-table-column
      fixed="right"
      label="操作"
      width="100">
      <template slot-scope="scope">
        <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
        <el-button type="text" size="small">编辑</el-button>
      </template>
    </el-table-column>
    </el-table>
  </div>
</template>

<script>
import { mapState } from "vuex";
export default {
  name: "pageTable",
  props: {
  	// 接收展示数据
    tableData: {
      type: Array,
      default() {
        return [];
      },
    },
    // 接收配置项的数据
    cols: {
      type: Array,
      default() {
        return [];
      },
    },
  },
  data() {
    return {};
  },
  computed: {
  // 我这里是要用到字段,所以引入了vuex
    ...mapState({
      dictObj: (state) => state.dictionaryValueManagement.dictObj,
    }),
  },
  methods: {
      handleClick(row) {
        console.log(row);
      }
    },
};
</script>

三、配置项config相关

其实table 表格里面的align也可以动态,我这里偷懒了,直接在pageTable写死居中了

export const bkjlConfig = {
  cols: [
    {
      width: '150',  // 宽度
      type: 'select',  // 类型
      prop: 'manageposttype',  // prop接收数据
      label: '分期', // label名
      dict: 'manageposttype'  //  匹配是哪一个字典
    },
    {
      width: '200',
      type: 'input',
      prop: 'issuingauthority',
      label: '机构',
    },
    {
      width: '150',
      type: 'select',
      prop: 'manageposttype',
      label: '岗位类别',
      dict: 'manageposttype'
    },
    {
      width: '200',
      type: 'select',
      prop: 'careertreecode',
      label: '岗位名称',
      dict: 'careertreecode'
    },
    {
      width: '150',
      type: 'datePicker',
      prop: 'manageposttype',
      label: '报名时间',
    },
    {
      width: '150',
      type: 'select',
      prop: 'validStatus',
      label: '审核状态',
      dict: 'validStatus'
    },
    {
      width: '',
      type: 'input',
      prop: 'appliConditions',
      label: '详细信息',
    },
  ]
}

四、在需要的地方使用

<!-- 我就不显示那么多了 -->
 <div class="pageContainerCon">
      <el-collapse v-model="activeNames" @change="handleChange">
        <el-collapse-item title="从业证书" name="1">
          <PageTable :tableData="tableData1" :cols="cyzsConfig.cols"></PageTable>
        </el-collapse-item>
        <el-collapse-item title="报考记录" name="2">
          <PageTable :tableData="tableData7" :cols="bkjlConfig.cols"></PageTable>
        </el-collapse-item>
        <el-collapse-item title="业务办理记录" name="3">
          <PageTable
            :tableData="tableData1"
            :cols="ywbljlConfig.cols"
          ></PageTable>
        </el-collapse-item>
        <el-collapse-item title="证书变更记录" name="4">
          <PageTable
            :tableData="tableData1"
            :cols="zsbgjlConfig.cols"
          ></PageTable>
        </el-collapse-item>
      </el-collapse>
    </div>
<script>
import PageTable from "./pageTable.vue";
import { cyzsConfig } from "../config/cyzsConfig.js";
import { bkjlConfig } from "../config/bkjlConfig.js";
import { jxjyjlConfig } from "../config/jxjyjlConfig.js";
import { mapState } from "vuex";

export default {
  name: "Detail",
  components: {
    PageTable,
  },
  props: {
    ryid: {
      type: String,
      default() {
        return "";
      },
    },
  },
  data() {
    return {
      formData: {},
      xlForm: {},
      activeNames: ["1", "2", "3", "4", "5", "6", "7", "8"],
      url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
      tableData: [],
      tableData1: [],
      tableData5:[],
      tableData7:[],
      cyzsConfig: cyzsConfig,
      bkjlConfig: bkjlConfig,
      jxjyjlConfig: jxjyjlConfig,

    };
  },
  computed: {
    ...mapState({
      dictObj: (state) => state.dictionaryValueManagement.dictObj,
    }),
  },
  methods: {
    handleChange(val) {
      console.log(val);
    },
  },
};
</script>

大概就是这么用吧,可能后续有继续优化更新。文章来源地址https://www.toymoban.com/news/detail-515317.html

到了这里,关于Element-ui 动态Table表格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui table表格双击行内编辑

    行内双击编辑的本质:点击后input框出现,保存后span标签出现 如果有编辑某一行的某列其他列随之变化的需求,则需要将上一步选中行存下来,不然双击后选中行就变了,随之修改的值也会产生错误 此外,因为用到了 tableRowClassName({row, rowIndex}){ row.index = rowIndex;}, ,所以导致

    2024年02月15日
    浏览(49)
  • 【element-ui】table表格底部合计自定义配置

    目录  带合计的表格设置  自定义方法  getSummaries   【element-ui】table表格底部合计自定义配置,最近做管理系统用到饿了么UI,用到了table表格合计需求,常用的table底部,有时候不是所有内容都需要合计,比如上图这个编号是数字,但是不需要合计计算处理的,这时候就需

    2024年02月11日
    浏览(54)
  • element-ui table 表格控件实现单选功能

    今天遇到一个需求,感觉挺简单的,需求如下: 就是一个表格,在表格的前面加上一个选择框,注意: 只能单选 然后我就去element ui上粘代码: 虽然element ui上有对应的单选表格,可是并不符合我的需求 然后我又发现下面有一个多选的表格,样式虽然相似,可是还是不符合我

    2024年02月11日
    浏览(55)
  • element-ui中table表格标签编辑功能的实现

    表格实现编辑功能。在实际开发过程中,我们表格的表头往往很多,有的还会发生变化,所以本文参考一位博主的代码结合自己的项目进行了改编。 参考原文链接:vue element-ui实现table表格可编辑修改

    2024年02月13日
    浏览(57)
  • vue监听element-ui的table表格滚动事件

    这篇文章主要是讲述“如何监听element-ui table滚动事件”,按我自己尝试的方法去实现。 需求分析: 前两天做项目遇到一个问题,数据量大,然后表格渲染的很慢,而且很卡怎么办?有什么优化的方式? 那无非就是两种方法。 先加载一屏表格的数据,之后触底加载新的数据

    2024年02月12日
    浏览(58)
  • vue中element-ui表格组件el-table封装,在table表格中插入图片

            这次写的项目是写后台管理系统这部分,对于后台管理使用vue写,用组件的话,table组件用得次数比较多,可以封装一个table组件。         1.如封装的table组件:  :prop=\\\"item.prop\\\"  :label=\\\"item.label\\\"是必须要有的,其他的可以根据自己需要写 。 2.封装之后是就是使

    2024年02月15日
    浏览(56)
  • vue中Element-ui 表格 (Table)合并行、列单元格

    先在el-table里加个属性:span-method绑定方法objectSpanMethod(),这个用来把你想合并的列根据你写的逻辑来合并,再写个getSpanArr(),这个写合并的逻辑。 加一个属性两个方法,然后在获取表格数据的时候调用一下getSpanArr(),示例代码写了四个逻辑,根据id相同合并,根据id和其他字段

    2024年02月10日
    浏览(48)
  • element-ui table表格 增加合计行 和 表格列固定之后 滚动条无法滚动

    是因为el-table__fixed或el-table__fixed-right有了合计之后把 el-table__body-wrapper层覆盖 el-table__fixed或el-table__fixed-right层级较高 因此点击滚动条失效 解决方法: 若想设置滚动条样式 若想合并合计行的列

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包