ElementUI——vue2+element-ui 2.x的动态表格和表单

简介: ElementUI——vue2+element-ui 2.x的动态表格和表单

前言

一个基于vue2.x + element-ui 2.x版本的项目,里面都是CURD的东西,但是前人并未封装组件,而是直接CV,现在要新增一个大模块的功能,就想着封装个组件,后面再基于这个组件对老项目进行改造;

虽然是一个大模块,但是功能还是比较简单的,结构如下;

内容

?> 这纯粹是个简单的DEMO,如果你需要更复杂的可基于此进行封装,或者直接使用现有的一些NPM包;

我不使用,是因为这个老项目有太多冗余的东西了,还不如直接封装来的舒服;

组件封装

<template>
<div class="app-container">
  <!-- 查询表单 -->
<el-form :inline="true" :model="formData" ref="ruleForm">
 <el-form-item  v-for="item in formItems" :label="item.label" :key="item.name">
     <component
      :is="item.type"
      v-model="formData[item.name]"
      :placeholder="item.placeholder"
    >
 // TODO 下拉框选项
</component>
 </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm">查询</el-button>
    <el-button @click="resetForm">重置</el-button>
  </el-form-item>
</el-form>
<!-- 动态表格 -->
  <el-table :data="data" border fit highlight-current-row style="width: 100%" >
    <el-table-column v-for="column in columns" :key="column.prop" :prop="column.prop" :label="column.label">
    </el-table-column>
  </el-table>
</div>
</template>
<script>
export default {
    props: {
    formItems: Array,
    data: Array,
    columns: Array,
  },
  data() {
    return {
        formData: {}
    }
  },
  created() { },
  methods: {
    submitForm() {
        console.log(`children search ===>`, this.formData);
        this.$emit('search', this.formData)
      },
      resetForm() {
        this.formData = {}
      }
  }
}
</script>
</style>

使用示例

<template>
  <div class="app-container">
  <common-table :data="tableData" :columns="columns" :form-items="formItems" @search="handleSearch"/>
  </div>
</template>
<script>
import commonTable from './components/table/index.vue'
export default {
components: {
    commonTable
  },
  data() {
    return {
      formItems: [
        {
          type: "el-input",
          label: "昵称",
          name: "nickname",
          placeholder: "请输入抖音昵称"
        },
        {
          type: "el-input",
          label: "抖音号",
          name: "tiktok_no",
          placeholder: "请输入账号昵称"
        }
      ],
      columns: [
        {
          label: '姓名',
          prop: 'name'
        },
        {
          label: '地址',
          prop: 'address'
        }
      ],
      tableData: [
        {
          name: '张三',
          address: '北京'
        },
        {
          name: '李四',
          address: '上海'
        }
      ],
   }
  },
  created() {
  },
  methods: {
    handleSearch(data) {
      // TODO 处理查询
      console.log('parent | search data ====>', data)
     }
  }
}
</script>
<style lang="scss" scoped></style>

扩展

你也可以直接挂载全局上Vue.component("v-CommonTable", CommonTable);

扩展起来的话,需要什么增加什么参数就好了,就像下面这样;

学无止境,谦卑而行.

目录
相关文章
|
4月前
|
前端开发
Element UI 【实战】纯前端对表格数据进行增删改查(内含弹窗表单、数据校验、时间日期格式)
Element UI 【实战】纯前端对表格数据进行增删改查(内含弹窗表单、数据校验、时间日期格式)
185 6
|
2月前
|
JavaScript
element-ui table表格多选后再打开默认选中
element-ui table表格多选后再打开默认选中
|
3月前
|
前端开发 JavaScript UED
element-ui 表格数据究竟隐藏着怎样的神秘样式与格式化技巧?快来揭开谜底!
【8月更文挑战第22天】《element-ui 表格数据样式及格式化案例》展示了如何利用 element-ui 的表格组件实现美观且易读的数据展示。通过简单配置,可以自定义表格样式,如边框、背景色等,并通过 formatter 实现数据格式化,例如将成绩保留一位小数。此外,还能依据条件设置行样式,如成绩达优则高亮显示,从而增强用户体验和数据可读性。
64 1
|
3月前
|
JavaScript 开发者
Element UI & Element Plus之改变表格单元格颜色
这篇文章展示了如何在Element UI和Element Plus框架中使用`:cell-style`属性来根据条件改变表格单元格的颜色。
363 0
Element UI & Element Plus之改变表格单元格颜色
|
3月前
|
JavaScript 前端开发 Shell
Element-ui Table表格导出功能的实现
Element-ui Table表格导出功能的实现
66 0
|
4月前
element UI 组件封装--搜索表单(含插槽和内嵌组件)
element UI 组件封装--搜索表单(含插槽和内嵌组件)
130 5
|
4月前
|
JavaScript
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
152 5
|
4月前
Element UI 多选表格--判断勾选数据行的 Checkbox 时为选中还是取消选中
Element UI 多选表格--判断勾选数据行的 Checkbox 时为选中还是取消选中
50 1
|
4月前
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
105 0
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
|
4月前
|
UED
Element UI 一键校验多表单(v-for循环表单,异步校验规则,v-for 中的 ref 属性,避坑 forEach 不支持异步 await )
Element UI 一键校验多表单(v-for循环表单,异步校验规则,v-for 中的 ref 属性,避坑 forEach 不支持异步 await )
52 0