element组件 搜索+表格+分页

一款根据element改造的组件文档

组件示例

</div>
   <base-search :list="searchList" :extra_data="extra_data" @callback="getList">
    <template slot="search"></template>
    <template slot="btn">
      <el-button type="primary">新增</el-button>
    </template>
  </base-search>
  <base-table
    :title="title"
    :list="list"
    :todos="todos"
    :page="page"
    @handleEdit="handleEdit"
    @handleDelFlag="handleDelFlag"
    @getList="getList">
      <template slot="roleNames" slot-scope="{ item }">
        <el-tag v-for="(i, l) in item.roleNames" :key="l">{{ i }}</el-tag>
      </template>
  <base-table>
</div>
<script>
  export default {
    data() {
      return {
        //搜索类型
        searchList: [{
            title: "关键词",
            name: "key",
        }],
        // 表头
        title: [{
          title: "账号名",
          name: "code",
        }, {
          title: "性别",
          name: "sex",
          tran_data: [
            { key: 0, value: ["男", "danger"]},
            { key: 1, value: ["女", "success"]},
          ],
        }, {
          title: "角色",
          name: "roleNames",
          type: "slot",
        }, {
          title: "是否启用",
          name: "delFlag",
          type: "switch",  //因自身框架需求,默认0为打开的值,1为关闭的值
          width: 120,
          click_event: "handleDelFlag",
        }], 
        todos:[ { title: "编辑", click_event: "handleEdit", width: "100", fixed: "right" }],  //操作栏
        extra_data: {}, //搜索入參
        list: [],  //列表数据
        page:{},   //分页数据
      };
    },
    methods: {
      getList(page,pageSize) {     //page页码;pageSize页数
        let that = this;
        let ajaxData = that.extra_data || {}; 
        ajaxData.page = page || 1;
        ajaxData.pageSize = pageSize || 50;
        that.request({
         url: "xxx",
         method: "post",
         data: ajaxData,
         loading: 1,
       }).then((ret) => {
         that.list = ret.response.data;
         that.page = ret.response;
       });
      },
      handleEdit(idx,obj) {
        //点击编辑    idx列表索引  obj整列数据
      },
      handleDelFlag(idx,obj) {
        //点击启用禁用开关    idx列表索引  obj整列数据
      },
    }
  }
</script>

实现效果

A32EEFC0A31F71885F32D07E9F3BD358.jpg

数据结构图
E2BDF04266DB4D6A76FDB9CCC087F30B.jpg

组件参数

baseSearch

Attribute  属性
  list    搜索信息    Array  {
    title     显示名称    String    可选值:-
    name      搜索入參    String    可选值:-   注意:当type=daterange 时,name=[开始时间字段,结束时间字段]
    type      搜索类型    String    可选值:"daterange(日期)/select(单选)/selectArray(多选)"    默认值:"input"
    value     默认数据     String/Number
    options   选择列表    Array    支持 type= "select/selectArray" {
      name    选择名称    String
      id      选择的ID    String/Number  }
  }
  extra_data  搜索的数据入參    Object    默认值:{}/null

Slot  扩展
  btn    搜索框扩展按钮    详细见示例
  search  额外自定义添加内容

Events  事件
  callback   调用获取数据方法,首次加载会调用一次    数据类型:Function  必填

baseTable

Attribute  属性
  height   表格高度  String/Number    默认值:- 
  size    Table的尺寸  String    可选值:"medium/small/mini"     默认值:根据element默认设置
  title    表格表头    Array  {
    title      表头名称     String    可选值:-
    name       数据绑定     String    可选值:-    当type=img时可为String/Array
    width      整列宽度     String/Number    可选值:-      默认值:自适应
    minWidth   最小宽度     String/Number    可选值:- 
    maxWidth   最大宽度     String/Number    可选值:- 
    algin      对齐方式    String   可选值:"left/center/right"    默认值:"left"
    fixed      列是否固定在左侧或者右侧    String   可选值:"left/right"    默认值:无
    type       绑定类型     String    可选值:"img(图片)/time(日期)/switch(开关)/slot(自定义表内容)" 
    tran_data  根据name数据选择性显示   Array {
      key 键值  String/Number  
      value 显示内容    Array    value[0]显示内容    value[1]显示颜色(入參根据el-tag的type) }
    click_event  点击方法  String    仅在"tran_data"或者"type=switch"有效
  }
  list     数据列表    Array    注意:如包涵children数组则必须有id字段,否则报错,此路径是走无限循环树状图(待优化)
  page     数据分页    Object    当page=null时,无分页 数据结构请前往(数据结构图)查看
  todos    右侧操作栏   Array  {
    title         显示文字    String
    width         操作栏宽度    String/Number   仅第一个有效
    fixed         列是否固定在左侧或者右侧    String   可选值:"left/right"    默认值:"right"
    click_event   点击方法  String 
  }
  isCloseOneAutoGetData    是否关闭首次自动获取数据  Boolean    默认值:true
  isCheckbox      是否开启列表多选    Boolean    默认值:false
  checkboxData    多选列表返回的值  默认值:[]    如获取不到加个修饰符sync尝试
  isSort      是否显示列表序号      Boolean    默认值:false

Slot  扩展
  slot="xxx"  仅支持title属性"type=slot"配合"name" 属性,具体看示例

Events    事件
  getList    调用获取数据方法 参数 page(页码),pageSize(页数)   必填
  rowClick 回调点击表格  当某一行被点击时会触发该事件    参数:row, column, event
  自定义事件   详见下文

自定义事件方法图解


06794B56F7CD518F137953AE7CB86446.jpg

basePage

        //示例
  <base-page :page="page" :isCloseOneAutoGetData="false" @getPageList="getList" />
  getList(page, pageSize) {
    let that = this;
    let ajaxData = that.extra_data || {};
    ajaxData.page = page || 1;
    ajaxData.pageSize = pageSize || 50;
    that.isTableLoading = true;
    that.request({
        url: "xxx",
        data: ajaxData,
        method: "post",
        loading: 1,
    }).then((ret) => {
      that.list = ret.response.data;
      that.page = ret.response;
    });
  },

  Attribute  属性
    page     数据分页    Object ,数据结构请前往(数据结构图)查看
    isCloseOneAutoGetData    是否关闭首次自动获取数据  Boolean    默认值:true

  Events  事件
    getPageList   调用获取数据方法 参数 page(页码),pageSize(页数)  
            

技术支持: Element-UI Vue

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容