产品新 ui 框架 —— 组件文档
EhGrid
平台表格组件(持续更新)
调用方式
<eh-grid></eh-grid>
传入属性
id (String 必填)
自定义该表格的 id 属性
示例:
<eh-grid id="grid123456"></eh-grid>
dataSource (Object | Array 必填)
表格数据获取相关的属性配置
示例:
// template:
<eh-grid :dataSource="dataSource"></eh-grid>
//或
<eh-grid :data-source="dataSource"></eh-grid>
...
// script => data :
<script>
...
data(){
return {
dataSource: {
// formdata参数:控制器名 (string 必填)
bean: "mbbBdMrlController",
// formdata参数:方法名 (string 必填)
method: "select",
// formdata参数:entity (string 必填)
entity: "com.epichust.entity.MbbBdMrl",
// 使用此方法代替bean与method作为请求方法(string 可选)
request:'mbbBdMrlController!select.m',
// 请求url参数 (Object 可选)
params: { id : 123 },
// 配置过滤选项 (Array<Object>)
filters: [
{
field: "id", // 字段名
compare: "cn,ge", // 比较方式(多个以逗号分隔)
data: "", // 值
type: "text" // 输入框类型(text、input、select)
options:{
// 新增select类型,将模板查询输入改为选择框,可将EhSelect的传入属性作为该配置对象的属性。例如keyName、valueName等。
},
},
{
field: "code",
compare: "cn,eq",
data: "",
}
],
// 是否首次自动加载数据
loadDataOnFirst: true,
// 数据请求方法实例 (Function<promise> 可忽略)
serviceInstance: null,
// 默认过滤字段 (Array | Object 可忽略)
serviceInstanceInputParameters: null
}
// 特殊情况下,如果将dataSource赋值为数组类型的数据,表格将直接以传入的数组作为数据源!!
}
}
</script>
grid (Object 必填)
表格展示相关的属性配置
默认配置 / 示例:
// template:
<eh-grid :grid="grid"></eh-grid>
...
// script => data :
<script>
...
data(){
return {
// element table 大部分属性都可以应用于此
grid: {
// 表格标题
title:"",
// 表格描述文字
description:"",
// required 展示的列名配置
columns: [
// el-table-column Attributes(详细属性在ele官网)
// { name, refEntity, refName }
// {
// label, 表头
// prop, 列名
// visible, 是否显示 默认 true
// pass, 忽略发送该列名 默认 false
// exportHideen, 是否导出时隐藏此列 默认 false
// align, 居中 默认 'left'
// formatter,width,minWidth,... }
],
// 没有默认排序
defaultSort: {
// prop: "id",
// order: "ascending"
},
// required 分页组件属性
pagination: {
pageSize: 10, // 页容量
// currentPage: 1,
pageSizes: [10, 20, 50, 100],// 页容量选项
},
// 出现表格框,且列可拉伸
border: true,
size: "small",
// 默认高度占据大半可视高度
// height: '',
// rows:10,
// page:1,
// 最大高度,针对滚动条
maxHeight: "440px", //document.documentElement.clientHeight - 270,
// 是否显示分页
pageable: true,
// reduceMethod 待定
// reduceMethod: null,
// 确定行是否被选择,结果取决于方法返回值 function
selectable: null,
// 是否支持列表项选中功能
mutiSelect: true,
// 是否显示行号
showRowNumber: true,
// 是否显示列名编辑
showColSetting: true,
// 自定义数据列
// customColumnDataHeader: false,
operates: {
type: Object,
default: {
// width:按钮列宽 (200px),
// fixed:是否固定(right),
// list:按钮集合[] =
// <{
// label: 按钮文字,
// render: Function(key,row) 按钮文字渲染方法,如果存在这个方法,则label失效
// type :类型(primary / success / warning / danger / info / text),
// style:Object 按钮样式,
// icon:按钮图标,
// disabled:是否禁用,
// method:Function(key,row) 回调方法
// }>
}
},
// 是否可导出表格excel
export: false,
// 最大选择行数,默认1000,过多会顶替掉最开始选中的。
selectMax: 1000, // Number
// 行选择框,操作按钮是否禁用
disabled: false,
// 是否展示可伸缩grid
collapse: false,
// collapse若为true,则配置此项,在折叠状态下标题可展示的字段。默认空。
collapseField: [], // ["code","date"]
// 扩展行表格所展示的字段,类似columns,包含element列所有属性
expandColumns:[] // [{ prop:"name", label:"名称", width:"180px"}]
// 加载扩展表格数据的方法
// 默认参数,row: 当前选择行,expandRows:所有已经展开的行数据,resolve:数据的回调。
// 展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded
loadEexpandData: function(row, expandRows, resolve){
// 使用一个异步请求,通过qs转换formdata参数
return vue.$http.post("sysUserController!getRoleDetail.m", vue.$util.getParamByQs({ nd_: 1591845675402, id: row.id }))
.then((res) => {
// 请求结果传入resolve 回调函数,即可完成。
resolve(res && res.rows ? res.rows : []);
});
},
"row-key": "id", // 必要!扩展表格和树形表格都需要定义此属性。
// 树形表格属性,最好与扩展表格 二选一使用。
"tree-props": { children: "children", hasChildren: "hasChildren" }, // 必要!树形子级属性:children 子级的集合,hasChildren:是否有子级的属性。
lazy: true, // 异步加载时,一般为 true
load: (tree, treeNode, resolve) => {
// tree:类似row,当前行数据。treeNode:树节点属性。resolve:数据的回调。
return vue.$http.post("sysUserController!getRoleDetail.m").then((res) => {
// 请求结果传入resolve 回调函数,即可完成。
resolve(res && res.rows ? res.rows : []);
});
},
// 是否显示手动上下排序按钮
sortButton: false,
// 是否手动拖拽表格行 进行排序。若要保持选择行状态,需指定row-key !!
manualSort: false,
// 是否显示表格刷新按钮,默认显示
refreshBtn: true,
}
}
}
</script>
options (Object 非必填)
表格的其他的一些属性配置
默认配置 / 示例:
// template:
<eh-grid :options="options"></eh-grid>
...
// script => data :
<script>
...
data(){
return {
options: {
// 是否显示编辑过滤
showFilterTemplate: true,
// 表格请求formdata参数 超时时间戳 (不传则自动计算后一分钟)
nd: 1587624065070,
// 表格请求formdata参数 search
search: false,
// 表格请求formdata参数 带总量查询
usetotal: true,
// 额外参数字段:其中的属性会带入请求方法的 formdata中。
// 重要:如果要使用这个功能,需事先把 extraParamFields 定义好,哪怕是个空对象 {}
extraParamFields: {
// consition: '8a5aya54a5t4t43453thf4'
}
}
}
}
</script>
table-collapse (Boolean 非必填)
是否通过点击表格标题收缩表格,默认:false
传入方法
selection-change (Function)
通过传入这个方法获取 当前选择行的数据
示例:
<eh-grid @selection-change="getRow"></eh-grid>
...
<script>
...
methods: {
getRow(row){
console.log(row)
// 选其中一行会打印:[{"siteName":"车桥机加工厂","id":"123","code":"TESTCODE"}]
}
}
</script>
cell-click (Function)
通过传入这个方法 每次单击单元格会触发此回调。
默认回调参数:row, column, cell, event
示例:
<eh-grid @cell-click="handleCellClick"></eh-grid>
...
<script>
...
methods: {
handleCellClick(row, column, cell, event){
console.log(row, column, cell, event)
// 当前行,列,单元格,事件
}
</script>
data-change (Function)
通过传入这个方法 每次表格数据查询数据后调用
示例:
<eh-grid @data-change="gridChange"></eh-grid>
...
<script>
...
methods: {
gridChange(data){
console.log(data)
// 打印当前获取表格的全部数据和总量数:
// {
// data: [{...},{...}],
// totalCount: 2
// }
}
</script>
expand-row-click (Function)
与扩展表格配合使用,通过传入这个方法,每次点击扩展表格的行后调用。
示例:
<eh-grid @expand-row-click="expandChange"></eh-grid>
...
<script>
...
methods: {
expandChange(row, column, event){
console.log(row)
// 打印当前点击扩展行数据。
}
</script>
实例方法
doSearch / bindGrid (Function : void)
通过调用这个组件的实例方法 doSearch 或者 bindGrid,触发表格重新加载数据的操作。
示例:
<eh-grid id="grid123" ref="grid123"></eh-grid>
...
<script>
...
methods: {
gridRefresh(){
this.$refs.grid123.doSearch()
// this.$refs.grid123.bindGrid()
// 重新加载了一遍表格gird123的数据
}
</script>
openExport (Function : void)
调用这个实例方法,打开导出 excel 的模态框。
clearSelection (Function : void)
调用这个实例方法,清除表格选中状态。
示例:
<eh-grid id="grid123" ref="grid123"></eh-grid>
...
<script>
...
methods: {
openExport(){
this.$refs.grid123.openExport()
},
clearSelection(){
this.$refs.grid123.clearSelection()
}
</script>
使用插槽
toolbar
通过在 toolbar 插槽中写入按钮组的内容,将按钮放置在定义好的区域,样式功能等需自己完善。
示例:
<eh-grid id="grid123" ref="grid123">
<template slot="toolbar">
<el-button @click="refresh">刷新</el-button>
<el-button type="primary" @click="save">保存</el-button>
</template>
</eh-grid>
...
<script>
...
methods: {
refresh(){
this.$refs.grid123.bindGrid()
// 刷新了表格gird123的数据
}
</script>
EhLayout
平台布局组件
调用方式
<eh-layout></eh-layout>
传入属性
left-width (String)
左侧区域的宽度,默认:200px。如果有使用左侧区域,建议传入。
right-width (String)
右侧区域的宽度,默认:200px。如果有使用右侧区域,建议传入。
使用插槽
示例图
center、top、bottom、left、right
center(默认插槽):将内容放置在整个布局组件中间,原则上必填
(有默认 15px 边距),可直接当做子元素写入组件标签内。
top:将内容放置在整个布局组件顶部,没有则不显示
bottom:将内容放置在整个布局组件底部,没有则不显示
left:将内容放置在整个布局组件中间,没有则 center 向左取代 left 的位置
right:将内容放置在整个布局组件中间,没有则 center 向右取代 right 的位置
示例:
<eh-layout>
<div slot="top">
top
</div>
<div slot="left">
left
</div>
<div slot="right">
right
</div>
<div slot="center">
<eh-grid id="123455"></eh-grid>
</div>
<div slot="bottom">
bottom
</div>
<h1>
default center
<!-- 我也是center,在没有传入具名插槽center时,我就是默认的center -->
</h1>
</eh-layout>
EhSearchBack
平台查找带回组件
调用方式
<eh-search-back></eh-search-back>
传入属性
v-model (String | Number 必填)
查找带回框的值
示例:
<eh-search-back v-model="searchValue"></eh-search-back>
searchField (String 必填)
查询字段:查询到一行数据后,会返回的这个字段的值。
示例:
<eh-search-back searchField="id"></eh-search-back>
labelField (String 可选)
查询字段的展示字段:与 searchField 相对应,labelField 作为展示字段,searchField 作为实际值。
示例:
<eh-search-back labelField="code" searchField="id"></eh-search-back>
defaultLabel (String 可选)
初始展示名:与 labelField 相对应,defaultLabel 作为其初始展示字段。仅当 defaultLabel 与 v-model 同时赋予初始值时,才会生效。
示例:
<eh-search-back v-model="my.value" searchField="id" defaultLabel="my.label" labelField="code" ></eh-search-back>
<script>
...
data(){
return{
my:{
value:'1',
label:'code001'
}
}
}
</script>
searchSelect (Boolean 必填)
是否启用模糊查询,默认:false
示例:
<eh-search-back :searchSelect="true"></eh-search-back>
gridOptions (Object 必填)
类似 EhGrid 的 grid 和 dataSourse 的结合,明确规定查找带回需要查询的表格数据和样式。
示例:
<eh-search-back :gridOptions="gridOptions"></eh-search-back>
<script>
...
data(){
return{
gridOptions:{
dataSource: {
bean: "mbbBdMrlController",
method: "select",
entity: "com.epichust.entity.MbbBdMrl"
// filters 在其他属性定义
},
grid: {
columns: [
{
prop: "id",
label: "id"
},
{
prop: "code",
label: "编码"
},
{
prop: "siteName",
refEntity: "site",
refName: "name",
label: "工厂"
}
]
},
options:{
extraParamFields: {
// 同样支持表格查询的额外参数
}
}
}
}
}
</script>
button (Boolean)
是否将选择框改为按钮样式,默认为 false。
button 属性与 inputAttributes 属性共享,按钮文字为 label / placeholder (请选择…),宽度默认 200px。
默认 / 示例:
<eh-search-back :button="true"></eh-search-back>
showDialogLeft (Boolean)
是否展示查找带回弹窗左侧区域,宽度默认 200px。需与 dialog-left 插槽配合使用。
默认 / 示例 见插槽。
inputAttributes (Object)
输入框的属性,可继承 element 中 el-input 的属性。
默认 / 示例:
<eh-search-back :inputAttributes="defaultInput"></eh-search-back>
<script>
...
data(){
return {
defaultInput:{
width: "200px",
placeholder: "请选择..."
}
}
}
</script>
dialogAttributes (Object)
模态框的属性,可继承 element 中 el-dialog 的属性。
示例:
<eh-search-back :dialogAttributes="defaultDialog"></eh-search-back>
openSearch (Boolean)
打开弹窗即加载数据,默认 true。
示例:
<eh-search-back :openSearch="true"></eh-search-back>
filterForm (Object 非必填)
定义查找带回表格的简易查询模板,需要与插槽 filterBar 配合使用。
示例:
<eh-search-back :filterForm="filterFormObj"></eh-search-back>
<script>
...
data(){
return {
filterFormObj:{
// 过滤的字段名作为属性名
code:{
field:'code', // 过滤的字段
compare:'cn', // 比较方式
data:'' // 默认值
},
id:{
field:'id',
compare:'cn',
data:'8'
}
}
}
}
</script>
使用插槽
filterBar
通过此插槽自定义查找带回表格的过滤表单。需和传入属性 filterForm 配合使用。
插槽标签应有俩个属性,slot=“filterBar”,slot-scope=“scope”。
slot 即插槽名,slot-scope 即该组件赋予的可访问 filterForm 的值,可以理解为 scope.filter == filterForm。表单里建议使用 v-model 绑定 filterForm 里的每个值,这样就自带双向绑定,无需再做其他赋值操作。
示例:
<eh-search-back
:filterForm="{
code:{field:'code',compare:'cn',data:''},
id:{field:'id',compare:'cn',data:'8'}
}">
<template slot="filterBar" slot-scope="scope">
<el-form :inline="true" size="mini">
<el-form-item label="编码">
<el-input v-model="scope.filter.code.data" placeholder="编码"></el-input>
</el-form-item>
<el-form-item label="id">
<el-input v-model="scope.filter.id.data" placeholder="id"></el-input>
</el-form-item>
</el-form>
</template>
</eh-search-back>
dialog-left
如果 showDialogLeft 属性为 true,则该展示该插槽里的内容。
<eh-search-back :showDialogLeft="true">
<template slot="dialog-left">
<el-tree :data="data"></el-tree>
</template>
</eh-search-back>
传入方法
input
当选择值发生改变时,即触发此回调,返回所选的字段值。
示例:
<eh-search-back @input="changeSelect"></eh-search-back>
<script>
...
methods:{
changeSelect(value) {
console.log(value) // value = 'code123'
}
}
</script>
selectedRows
当选择值发生改变时,即触发此回调,返回所选行的数据。
示例:
<eh-search-back @selectedRows="changeSelect"></eh-search-back>
<script>
...
methods:{
changeSelect(value) {
console.log(value) value = [{id:'code123',...}]
}
}
</script>
实例方法
searchGrid
通过调用这个组件的实例方法,触发查找带回弹窗表格重新加载数据的操作。
<eh-search-back ref="search123"></eh-search-back>
...
<script>
...
methods: {
gridRefresh(){
this.$refs.search123.searchGrid()
// 重新加载了一遍弹窗表格searchGrid的数据
}
</script>
EhTabs
平台多标签页组件
调用方式
<eh-tabs></eh-tabs>
传入属性
tabs
(Array
附 指令文档: 产品新 ui 框架 —— 指令文档