enianTable是整合对接后台数据库快捷查询及展示数据的模块。分为三个子模块 table、form、search 分别是表格(数据展示)、表单(用于新建或修改)、搜索(查询)
2019-4-5
版本:1.2.2019-4-5
1.修复搜索功能下拉选择框项标题错误的bug
2019-01-23
版本:1.1.2019-1-23 10:51:40
1.增加默认配置数据,switch,checkbox,input,time,这些类型的typeData没有特殊需求可以不用填写
2019-01-22
版本:1.0.2019-1-22 21:18:05
修复table模块渲染自定义两个插件相同时,被覆盖现象,方法:时间戳增加循环数
2019-01-21
1.增加enianTable.search
查询模块代码
2.新增time
数据格式,支持的模块form
、search
查看详情
2019-01-06
1.enianTable.table
,增加返回值,使用返回值可以监听原生表格事件
参数 | 类型 | 说明 |
---|---|---|
elem | str | [必] DOM节点(#id .class div) |
url | str | [必] 请求地址 |
data | arr | [必] 字段数组 |
config | obj | 表格基本配置,分页等信息 |
before | func | 渲染表头前回调,可以在此增加修改字段数据,或行工具,需要返回新的字段数组,否则按之前的回调数据进行渲染 |
checkbox | function | 复选框和开关被点击 |
toolEvent | function | 包括按钮被点击 table.on(‘tool(test),func) |
<div id="demo"></div>
var tableObj = enianTable.table({
elem:"#demo1"
,url:"{:url('',['t'=>1])}"
,data:fieldData
,config:{
page:true
//详见layui文档 数据表格 - 基本参数
}
,before:function(datas){
datas.push({field:'last_time', width:80, title: 'ggg', sort: true})
console.log(datas)
return datas;
}
,checkbox:function(field,obj){
layer.tips(field.value + ' ' + field.name + ':'+ obj.elem.checked, obj.othis);
console.log(field,obj)
}
,toolEvent:function(obj){
console.log(obj)
}
})
//监听原生默认事件-edit 可换成其他原生支持事件,(如:tool;row;sort等其他原生表格事件)[19-1-6 更新]
tableObj.on('edit',function(obj){
console.log(obj.value) //得到修改后的值
console.log(obj.data) //得到所在行所有键值
console.log(obj.field) //得到字段
})
//获取模块生成的表格id [19-1-8 更新]
console.log(tableObj.id);//输出:table1546781607263
//然后可以使用原生表格方法监听各种事件
table.on('edit('+tableObj.getId+')', function(obj) {
//...
});
参数 | 类型 | 说明 |
---|---|---|
elem | str | [必] DOM节点(#id .class div) |
data | arr | [必] 字段数组 |
submitBtn | str | 按钮标题(默:立即提交) |
layer | str/obj/bool | 弹窗展示(默:false) str - layer标题 true -弹窗 + 默认标题(默:信息) obj - layer.open参数 |
val | obj | 表单赋值 同 form.val(elem,obj)查看相关文档 |
submit | func | 表单提交回调 |
layerSuccess | func | (仅当layer属性为str和true时有效)弹窗表单加载完成回调,一个参数obj [2019-1-15更新] |
enianTable.form({
elem:"#test"
,data:fieldData
,submitBtn:'保存'
,layer:"我是标题"
//可以是以下obj数据
// ,layer:{
// type: 1,
// //skin: 'layui-layer-rim', //加上边框
// area: ['600px', '400px'], //宽高
// }
,val:{
password:'966223'
}
,submit:function(data){
layer.alert(JSON.stringify(data.field), {
title: '最终的提交信息'
})
}
,layerSuccess:function(obj){
console.log(obj);//obj内容有elem和index
}
})
enianTable.search 的使用方式可能和以上两个插件不一样,后续有时间会进行更新改版,这也是一直没有发布的原因。search插件没有那么多繁琐的配置参数
var ets = enianTable.search(fieldData);//field,字段数据
//打开搜索弹窗//如果缓存有数据则读取缓存
ets.open();
//打开搜索窗,不读取缓存
ets.render();
//打开搜索窗,渲染json数据打开搜索
ets.render_json(jsonData);
//数据示例
var jsonData = {
"1":{"field":"status","value":"0"}
,"2":{"field":"username","value":"三时三餐","exp":"like"}
,"3":{"value":"此v","field":"username","exp":"eq"}
}
//设定layer的宽高
ets.layer_area(['500px','400px']);
//监听搜索按钮点击
ets.submit(function(d){
console.log(d);
})
//更改添加查询表达式符号
var expression={'lc':'测试','eq':'精确','neq':'不等于'};
//ets.exp(expression);
ets.exp(expression,false);//清空默认
//获取当前所有(缓存)条件,返回json
var data = ets.getSearchData();
console.log(data);
[
{
"tableHead": {"field": "appid","width": 80,"title": "Appid","sort": true},
"type": "noInput",
"typeData": {
"msg": "输入数字"
}
},
{
"tableHead": {"field": "order","title": "排序","sort": true,"width": 80,"edit": "text"},
"type": "input",
"typeData": {
"msg": "请输入数字"
}
},
{
"tableHead": {"field": "name","title": "名称","edit": "text"},
"type": "input",
"typeData": {
"msg": "请输入"
}
},
{
"tableHead": {"field": "type","width": 100,"title": "类型"},
"type": "hide",
"typeData": {
"msg": "禁止编辑"
}
},
{
"tableHead": {"field": "note","title": "备注","edit": "text"},
"type": "input"
},
{
"tableHead": {"field": "note2","width": 80,"title": "备注2","edit": "text"},
"type": "input"
},
{
"tableHead": {"width": 130,"align": "center","fixed": "right","toolbar": "#applist_s_tool"},
"type": false
}
]
参数 | 类型 | 必须 | 解释 |
---|---|---|---|
tableHead | obj | 是 | 原表头结构,也就是table中cols单条数据查看相关文档 |
type | str/bool | 是 | 字段类型 |
typeData | str/obj | 是 | 字段类型的数据 |
notRender | arr | [2019-1-22新增] 单独设置某个字段不进行渲染格式为数组可选值(form,table,search) 示例:['form','search'] 在form模块和search不渲染该字段如果数组中三个模块都填入,则等同于 type 参数为 hide |
type
所支持的数据类型类型 | 解释 | 效果展示 | 数据 |
---|---|---|---|
switch | 开关 | 表格/表单 | 查看数据详情 |
checkbox | 复选框 | 表格/表单 | 查看数据详情 |
select | 下拉选择框 | 表单 | 查看数据详情 |
button | 按钮类型 | 表格 | 查看数据详情 |
input | 普通编辑框 | 表单 | 查看数据详情 |
noInput | 禁止输入框 | 表单 | 查看数据详情 |
bigInput | 大编辑框 | 表单 | 查看数据详情 |
between | 区间 | 搜索 | 查看数据详情 |
time | 时间 | 表单/搜索 | 查看数据详情[2019-1-21新增] |
hide | 隐藏类型 | 全部屏蔽 | 无数据 |
注意:hide类型,会自动隐藏数据表格中的字段隐藏,需要 layui 2.4.0+
版本
,type:"switch"
,typeData:{
idName:'id',
on:{
"data":1,
"name":"开"
},
off:{
"data":0,
"name":"关"
}
}
//typeData参数说明:
// idName id字段名(也就是自增字段名),默认:'id',在监听数据时返回在field.value 用于更改数据提供的值
// on 开启,name 也就是复选框的标题,data 数据
// off 关闭。同上
,type:"checkbox"
,typeData:{
idName:'id',
on:{
"data":1,
"name":"复选框"
},
off:{
"data":0,
}
}
//typeData参数说明:
// idName id字段名(也就是自增字段名),默认:'id',在监听数据时返回在field.value 用于更改数据提供的值
// on 开启,name 也就是复选框的标题,data 数据
// off 关闭。name 可省略,data 同上,
//下拉选择
,type:"select"
,typeData:[
{'value':'shanghai','title':'上海'}
,{'value':'shanghai','title':'上海'}
,{'value':'shanghai','title':'上海'}
,{'value':'shanghai','title':'上海'}
//...
]
//编辑框
,type:"input"
,typeData:{
//提示信息
"msg":"请输入不超过5个字的内容"
}
//大编辑框
,type:"bigInput"
,typeData:{
//提示信息
"msg":"请输入不超过5个字的内容"
}
//禁止编辑框
,type:"noInput"
,typeData:{
//提示信息
"msg":"请输入不超过5个字的内容"
}
//按钮类型
,type:"button"
,typeData:[
{"title":"标题",value:"值","url":"##","event":"点击标记","skin":"样式"}
,{"title":"标题",value:"值","url":"##","event":"点击标记","skin":"样式"}
,{"title":"标题",value:"值","url":"##","event":"点击标记","skin":"样式"}
//更多...
]
如果url为空,或者为“##”,则继续执行 event 。如果url不为空或“##”,当监听此按钮事件,原有监听 table.on(‘tool(name)’) 将会失效
//时间
,type:"time"
,typeData:{
msg:'表单提示信息'
,msg1:'提示框1'
,msg2:'提示框2'
}
//区间
,type:"between"
,typeData:{
msg1:'提示框1'
,msg2:'提示框2'
}