1.3.1 • Published 2 years ago

element-tf v1.3.1

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

element-tf

该ui组件库是element-ui组件库的二次封装,主要是解决繁琐的表格和表单的配置,降低代码冗余度,提升开发效率,摸更多的鱼!

特别提示:使用该组件前请一定先安装element-ui2.15

本插件依赖element-ui所以在安装本组件时会安装element-ui,无需再次安装。

引入方式:

import Vue from "vue";
import App from "./App.vue";

// 全局使用ElementUI 首要前提条件
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
Vue.use(ElementUI);

//全局使用ElementTf
import ElementTf from "element-tf";
import "element-tf/dist/css/index.css";
Vue.use(ElementTf);

//按需使用 Table表格 Form表单
import {Table} from "element-tf";
import "element-tf/dist/css/index.css";
Vue.use(Table);

Vue.config.productionTip = false;

new Vue({
  render: (h) => h(App),
}).$mount("#app");

一、table组件的使用

1.使用方式

<template>
  <div id="app">
    <mg-table :columns="columns" :tableData="tableData"></mg-table>
  </div>
</template>

<script>
  export default {
    name: 'App',
    data() {
      return {
        //建议将此参数使用js方式导入
        columns: [{
            prop: 'userName',
            label: '姓名'
          },
          {
            prop: 'age',
            label: '年龄',
            slot: 'tag'
          },
          {
            prop: 'role',
            label: '角色',
            slot: 'tag'
          },
          {
            prop: 'remark',
            label: '介绍'
          },
        ],
        tableData: [{
            userName: '张三',
            age: 18,
            role: ['管理员', '检查官'],
            remark: '我是一段自我介绍'
          },
          {
            userName: '李四',
            age: 18,
            role: ['管理员', '检查官'],
            remark: '我是一段自我介绍'
          },
          {
            userName: '王五',
            age: 18,
            role: ['管理员', '检查官'],
            remark: '我是一段自我介绍'
          },
          {
            userName: '赵六',
            age: 18,
            role: ['管理员', '检查官'],
            remark: '我是一段自我介绍'
          },
        ],
      }
    }
  }
</script>

2.基本参数

参数类型说明
columnsArray[]必填,配置列(详情见下文columns配置)
tableDataArray[]必填,表格渲染数据(一般来源于接口)
pageBooleantrue/false default:true是否需要分页组件
pagenationObjectdefaule:{page:1,pageSize:20}*如有分页时:分页参数:只支持page和pageSize
totalNumberdefault:0*如有分页时:表格总条数
stripeBooleantrue/false default:false是否存在斑马条纹
borderBooleantrue/false default:true是否存在列线
indexBooleantrue/false default:true是否存在首列序号
selectionBooleantrue/false default:false是否存在首列复选框
heightNumberdefault:300表格高度
paginationPositionStringleft/center/right default:left分页器位置

3.columns列配置

参数类型说明
propString后台字段,例如:userName必填
labelString对应解析的前端表头,例如:用户名必填
widthNumber0该字段为最小宽度,等比适配
alignStringleft/right/center default:left单元格内文本对齐方式
sortBooleantrue/false default:false是否排序
slotBoolean/Stringtrue/time/status/tag/html是否存在插槽(详情见下文)
fomartFunctionFunction:(value,options)过滤器会接受当前单元格中的值value和需要解析的options数组必须要返回一个值用来展示到单元格内
optionsArray[]服务于fomart的解析字典
optionsFnFunctionpromise Fn该函数是options异步的写法,主要解决当前解析字典为接口异步时处理办法,存在此项时options无效optionsfomart会接受此函数的返回值,一般写法为:optionsFn: async () => {return await getDictionaries("alert");}

4.slot插槽详解

使用方式说明
timeslot:'time'当展示的值为时间类型时,可以使用该插槽,会默认在时间前加上时间icon小图标
statusslot:'status'当展示的值为状态类型时,可以使用该插槽,会默认在状态前加上代表当前状态的小圆球,圆球配置:在options数组中:增加class:success/info/primary/warning/danger字段将显示对应颜色的小圆球,也可增加color:red,编辑具体颜色,color权重将高于class使用范例:{label:'高危',value:0,class:'danger'},{label:'中危',value:1,class:'success'},{label:'低危',value:2,class:'success',color:'green'}
tagslot:'tag'当前值需要使用el-tag标签展示时,可以使用该插槽,该插槽支持字符串数组展示
htmlslot:'html'当前值需要使用html代码块标签展示时,可以使用该插槽
trueslot:true自定义插槽:值设置为true,则在template中使用自定义样式: //sip为当前属性prop值 {{slotData.data.row.sip}}

5.API事件返回

方法名参数说明
@header-clickcolumn,event点击当前表头事件:column.property可获取当前点击头部prop属性值
@sort-changesortData点击表头排序时:其中会有当前排序字段和排序方式
@pageation-callbackpageation分页器发生数据改变时
@select-tabArrselectArr首列复选框数据发生变化时

二、form组件的使用

1.使用方式

<template>
  <div id="app">
    <mg-form :formConfig="formConfig"
      @submit="Submit">
    </mg-form>
  </div>
</template>

<script>
  export default {
    name: 'App',
    data() {
      return {
        //form配置建议使用js方式导入
        formConfig: [{
            prop: 'userName',
            label: '姓名',
            formConfig: {
              el: "input",
              type: "text",
              span: 24,
              value: "",
              placeholder: "请输入",
              clearable: true,
              rules: [{
                required: true,
                message: "该项不能为空",
                trigger: "blur",
              }]
            }
          }, {
            prop: 'age',
            label: '性别',
            options: [{
              label: '男',
              value: 0
            }, {
              label: '女',
              value: 1
            }],
            formConfig: {
              el: "radioGroup",
              span: 12,
              value: 0,
            }
          }, {
            prop: 'role',
            label: '角色',
            options: [{
              label: '管理员',
              value: 'admin'
            }, {
              label: '检查官',
              value: 'prosecutor'
            }],
            formConfig: {
              el: "checkboxGroup",
              span: 12,
              value: ['admin'],
            }
          },
          {
            prop: 'remark',
            label: '介绍',
            formConfig: {
              el: "input",
              span: 24,
              type: 'textarea',
              value: "",
              maxlength: 30
            }
          }
        ]
      }
    },
    methods: {
      Submit(form) {
        console.log(form);
      }
    }
  }
</script>

2.基本参数

参数类型说明
formConfigArray{}必填,form表单项的配置(见下文formConfig表单项配置)
sizeStringmedium / small / mini用于控制该表单内组件的尺寸
labelSuffixString''表单域标签的后缀,例:':'
labelPositionStringleft/center/right default:right表单内label位置
labelWidthStringdefault:'100px'表单内label宽度
footerAlignStringleft/center/right default:right表单底部操作按钮的位置,inline模式下无效
resetBooleantrue/false default:false重置按钮是否显示
cancelBooleantrue/false default:true取消按钮是否显示
submitBooleantrue/false default:true确认按钮是否显示
resetConfigObjectdefault:{text:'重置',icon:'el-icon-refresh',type:'warning',size:'default'}重置按钮的基本配置
cancelConfigObjectdefault:{text:'取消',icon:'el-icon-close',type:'info',size:'default'}取消按钮的基本配置
submitConfigObjectdefault:{text:'保存',icon:'el-icon-plus',type:'primary',size:'default'}保存按钮的基本配置
inlineBooleantrue/false default:false是否为横向瀑布流(一般常用于表格头部横向搜索)

3.formConfig表单项配置

属性类型说明
propString例:userName后台所需字段
labelString例:用户名表头label
optionsArray[]下拉组件数据加载
optionsFnFunctionpromise Fn一般用于几口返回的下拉数据(填写此项时options将无效)
formConfigObjectObject组件项配置(详情见下文formConfig组件项配置)

4.formConfig组件项配置

属性类型说明
elString例:el:inputElementUI中组件名称如el-input使用
valueString/Number/[]例:value:'张三'表单默认值
widthString'px'/'100%' default:'100%'表单宽度
valueFnFunctionpromise Fn(options)该函数将接收一个options下拉数据值(异步也能接收)也必须返回一个值用来使用默认数据,一般常使用return options0 来默认选中下拉的第一项数据
rulesArray[]正则校验同element-ui文档

5.组件项的使用范围

export default {
  // 1单选按钮
  radioGroup: {
    el: "radioGroup",
    span: 24,
    value: "",
  },

  // 2单选按钮2
  radioGroupButton: {
    el: "radioGroupButton",
    span: 24,
    value: "",
  },

  // 3多选框
  checkboxGroup: {
    el: "checkboxGroup",
    span: 24,
    value: [],
  },

  // 4多选框2
  CheckboxButton: {
    el: "CheckboxButton",
    span: 24,
    value: [],
  },

  // 5文本框
  input: {
    el: "input",
    type: "text",
    span: 24,
    value: "",
    placeholder: "请输入",
    clearable: true,
  },

  // 6数字计数器
  inputNumber: {
    el: "inputNumber",
    span: 24,
    value: "",
    placeholder: "请输入",
  },

  // 7下拉选择
  select: {
    el: "select",
    span: 24,
    value: [],
    placeholder: "请选择",
    filterable: true,
    clearable: true,
  },

  // 8层级选择器
  cascader: {
    el: "cascader",
    span: 24,
    value: "",
    placeholder: "请选择",
    filterable: true,
    clearable: true,
  },

  // 9开关
  switch: {
    el: "switch",
    span: 24,
    value: false,
    // activeText: "是",
    // inactiveText: "否",
  },

  // 10时间选择器
  timeSelect: {
    el: "timeSelect",
    span: 24,
    value: [],
    placeholder: "请选择",
  },

  // 11区间时间选择
  timePicker: {
    el: "timePicker",
    span: 24,
    value: [],
    isRange: true,
    placeholder: "请选择",
  },

  // 12日期时间选择器
  datePicker: {
    el: "datePicker",
    span: 24,
    value: "",
    placeholder: "请选择",
  },

  // 13 Slider 滑块
  slider: {
    el: "slider",
    span: 24,
    value: 0,
    placeholder: "请选择",
  },

  // 14 Rate 评分
  rate: {
    el: "rate",
    span: 24,
    value: 0,
    placeholder: "请选择",
  },

  // 15 autocomplete 自动补全
  autocomplete: {
    el: "autocomplete",
    span: 24,
    clearable: true,
    value: "",
    placeholder: "请输入",
    tipList: ["AND", "OR"],
  },

  // 16 颜色选择器
  colorPicker: {
    el: "colorPicker",
    span: 24,
    value: "",
    showAlpha: true,
    predefineColors: [
      "#ff4500",
      "#ff8c00",
      "#ffd700",
      "#90ee90",
      "#00ced1",
      "#1e90ff",
      "#c71585",
      "rgba(255, 69, 0, 0.68)",
      "rgb(255, 120, 0)",
      "hsv(51, 100, 98)",
      "hsva(120, 40, 94, 0.5)",
      "hsl(181, 100%, 37%)",
      "hsla(209, 100%, 56%, 0.73)",
      "#c7158577",
    ],
    placeholder: "请选择",
  },
};

6.API事件返回

事件名参数说明
@at-infoform当默认值数据中包含valueFn时,则会等待异步结束时返回该form表单的初始值,一般用于表格初始化请求参数中包含异步获取的值
@change-formprop,value当表单元素发生变化时:prop:定义的后台字段,value当前改变后的值
@Cancel取消按钮操作
@resetform重置操作
@Submitform保存按钮触发返回
1.3.1

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

0.1.0

2 years ago