elementUI table二次封装

1.HTML

<template>
  <el-table
      ref="table"
      element-loading-text="Loading"
      :data="tableData"
      border
      tooltip-effect="dark"
      style="width:100%">
      <el-table-column v-for="(item,index) in tableLabel" :width="item.width ? item.width : ‘‘" :key="index" :align="item.align" :label="item.label" :prop="item.param" :sortable="item.sortable ? ‘custom‘ : false">
        <template slot-scope="scope">
          <span v-if="item.render">
            {{item.render(scope.row)}}
          </span>
          <span v-else>{{scope.row[item.param]}}</span>
        </template>
      </el-table-column>
      <el-table-column v-if="tableOption.label" :width="tableOption.width" :label="tableOption.label" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button  v-for="(item,index) in tableOption.options" :key="index" :type="item.type" :icon="item.icon" @click="handleButton(item.methods,scope.row,scope.row)" size="mini">
            {{item.label}}
          </el-button>
        </template>
      </el-table-column>
    </el-table>
</template>

  2.子组件中js

<script>
export default {
  props:{
    tableData:{
      type:Array,
      default: () => {
        return []
      }
    },
    tableLabel:{
      type:Array,
      default: () => {
        return []
      }
    },
    tableOption:{
      type:Object,
      default: () => {
        return {}
      }
    }
  },
  components:{},
  methods: {

  }
}
</script>

  3.父组件调用

<table-cmp
      :table-data="tableData"
      :table-label="tableLabel"
      :table-option="tableOption"
    ></table-cmp>

  4.父组件js

tableData:[],
tableLabel: [
        { label: ‘用户名‘, param: ‘usr‘, align: ‘center‘,sortable:true },
        { label: ‘公司名称‘, param: ‘company‘, align: ‘center‘ },
        { label: ‘办公邮箱‘, param: ‘email‘, align: ‘center‘,width:‘200‘ },
        { label: ‘注册时间‘, param: ‘registTime‘, align: ‘center‘,sortable:true },
        { label: ‘审核状态‘, param: ‘status‘, align: ‘center‘,sortable:true, render:  (row) => {
            if (row.status === 0) {
              return ‘未审核‘
            } else if (row.status === 1) {
              return ‘审核通过‘
            } else if(row.status ===2) {
              return ‘审核不通过‘
            } else {
              return ‘禁用‘
            }
          }
        }
      ],
      tableOption: {
        label: ‘操作‘,
        width: ‘200‘,
        options: [
          { label: ‘预览‘, type: ‘primary‘, icon: ‘el-icon-view‘, methods: ‘preview‘ },
          { label: ‘审核‘, type: ‘primary‘, icon: ‘el-icon-upload2‘, methods: ‘audit‘ },
        ]
      }

  二次封装,将所有的信息动态生成。

原文地址:https://www.cnblogs.com/dyy-dida/p/11494524.html

时间: 2024-10-08 14:34:52

elementUI table二次封装的相关文章

element table 二次封装 父子组件传值 组件通信

新建一个组件(即子组件)table.vue 子组件编辑内容如下图所示 子组件通过props获取父组件传递过来的参数,如下图所示,type指明传递到子组件的数据类型,default指定默认值,一般不给 子组件通过事件发射向父组件传递事件及参数,$emit即为发射事件,第一个参数为向父组件传递的事件名,第二个参数为向父组件传递的参数 下面为父组件调用子组件: 在父组件中通过import引入子组件,并注册 父组件调用子组件并传递参数,同时监听子组件事件 父组件处理监听子组件事件 最终效果如下 当然功能

二次封装dojo slider

上次的二次封装timeslider,挺有意思,又来封装一个dojo的,样式还是用arcgis的.实现更多功能,包括HorizontalSlider和VerticalSlider, 刻度的显示隐藏,标签的显示和隐藏,上刻度和下刻度的显示隐藏,无序数显示刻度,标签图标的自由选择,大小选择....更多功能大家看完code也可以自己慢慢加进去哈~~~ code有点长,先上slider的class::MyCustomSlider.js [javascript] view plain copy /** * 

FMDB 二次封装工具类,让你快速学会封装,集成数据库

来源:StrivEver 链接:http://www.jianshu.com/p/4c77aee0b41c 上个版本为了增加用户体验,部分页面集成了离线缓存数据功能,于是就在项目里使用了数据库管理离线数据.下面交大家一步步学会使用FMDB,以及FMDB的二次封装,同事把我二次封装的数据库放出来,希望能够帮助大家快速学习,集成数据库功能吧. 一.首先看一下STDB文件结构   STDB文件结构 Table.h主要放一些Table的创建语句, 方便管理我的数据库各张表创建 DBDefine.h主要放

vue中对element的弹框messagebox的二次封装

在vue中对确认框的二次封装 使用场景:在页面中做某些需要警告的操作时的弹框提示 1.在utils文件夹下新建一个confirm.js文件来对messageBox的封装,内容如下: /** confirm.js */ import { MessageBox } from 'element-ui' export function handleCofirm(text = '确定执行此操作吗?', type = 'warning') { return MessageBox.confirm(text,

vue中axios的二次封装

我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理 第一步,先在src中的公共文件夹中如utils里新建request.js文件 import axios from 'axios' import router from '@/router/routers' import { Notification, MessageBox } from 'element-ui' import store from '

iOS项目相关@AFN&amp;SDWeb的二次封装

一,AFNetworking跟SDWebImge是功能强大且常用的第三方,然而在实际应用中需要封装用来复用今天就跟大家分享一下AFN&SDWeb的二次封装 1. HttpClient.h及.m .h定义了HTTP常用的四种GET POST PUT DELETE 请求 一般分别用做增删减查 定义前预处理,请求成功处理,请求失败处理的block 及带多参数w的方法声明 .m设置请求类型跟响应类型,监听网络是否有网络,如果没有,弹出网络异常的警示框 2. UIImageView+WebCache.h及

HtmlTestRunner二次封装(TestRunner.py)

将HtmlTestRunner进行二次封装,是报告生成的更方便 import HTMLTestRunner import unittest import time, os class TestRunner(object): def __init__(self, cases="./"): self.case = cases def get_all_cases(self, class_name): return unittest.defaultTestLoader.loadTestsFro

pywinauto二次封装(pywinnat.py)

将pywinauto常用方法进行封装,使得pywinauto用起来更简单 #头文件的引入 from pywinauto import application from pywinauto import clipboard import SendKeys import win32api import win32con import os, sys, time #二次封装的类 class Pywin(object): #======================= # pywin framwork

二次封装arcgis的timeslider

arcgis的timeslider是对dojo slider二次封装,项目需要,所有Map用统一样式的slider,所以写了一个common的dojo class,统一调用生成slider,作为对timeslider再次封装,感觉挺好用. 这个slider不一定要在Map里使用,还可以在其他地方调用.只是要包含arcgis的js包, 先上JavaScript class的code: [javascript] view plain copy /** * yilei create for IES