一、js文件里自定义状态
1、纯文字
{field: 'sort', title: __('Sort'),sortable:true},//排序
{field: 'status', title: "状态",formatter:function (value) {//字段显示
if(value ==1)
{return "已启用";}
else if(value ==0)
{return "已停用";}
}
},
2、纯文字
{
field: 'status',
title: '状态',
custom: {0: 'red', 1: 'success'},//控制颜色
searchList: {"0": '未打款', "1": '已打款',},//控制字
formatter: Table.api.formatter.normal
},
3、带颜色按钮状
{
field: 'status', title: '状态',
searchList: {'1': '定金已支付', '2': '已报价待用户确认','3': '用户已确认待完工','4': '已完工待支付尾款','5': '订单已完成'},
custom: {1: 'primary', 2: 'warning',3: 'info', 4: 'blue',5: 'success'},
formatter: Table.api.formatter.label
},
二、添加其他按钮
1、按钮
A.js
{field: 'operate', title: __('Operate'), table: table, //其他按钮 buttons :[ {name: 'see', text: '查看周边', title: '查看周边', icon: 'fa fa-view', classname: 'btn btn-xs btn-primary btn-dialog', url: 'esf/house/housezb/index'}, {name: 'house_zb_add', text: '添加周边', title: '添加周边', icon: 'fa fa-edit', classname: 'btn btn-xs btn-primary btn-dialog', url: 'esf/house/house/house_zb_add'} ], //框架自带的按钮(修改,删除) events: Table.api.events.operate, formatter: Table.api.formatter.operate }
2、在按钮中若要弹出其他列表页面
A.js文件中按钮正常书写(如上)
B.js 和 B.html 需要处理一下相关数据:
【原因是因为在a页面中点击弹出会自带一个IDS,而这个IDS是A页面对应的数据的id,要关联到B页面就需要在B页面处理一下数据】
(1) B.js:
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
//关键代码 start
queryParams: function (params) {
var filter = JSON.parse(params.filter);
var op = JSON.parse(params.op);
var ids = Fast.api.query('ids');//接受传递的ids
if (ids) {
filter.house_id = ids;//house_id即为B页面的house_id对应A页面的ID
op.house_id = '=';
params.filter = JSON.stringify(filter);
params.op = JSON.stringify(op);
funcUrlDel('ids');//删除页面原本的传参,函数在对应的html页面
}
return params;
},
//关键代码 end
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'cate_id', title: '分类ID'},
{
field: 'operate',
title: __('Operate'),
table: table,
events: Table.api.events.operate,
formatter: Table.api.formatter.operate
}
]
]
});
(2) B.html
在页面合适位置添加:
<script> //删除url的id参数 function funcUrlDel(name) { var loca = window.location; var baseUrl = loca.origin + loca.pathname + "?"; var query = loca.search.substr(1); if (query.indexOf(name) > -1) { var obj = {}; var arr = query.split("&"); for (var i = 0; i < arr.length; i++) { arr[i] = arr[i].split("="); obj[arr[i][0]] = arr[i][1]; } delete obj[name]; var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&"); history.pushState(null, null, url); return; } else { return window.location.href; } } </script>
3、按钮只执行方法,不弹出页面
{
field: 'buttons', title: __('其他操作'), table: table, buttons: [
{
name: 'send_wx_mes',
text: __('推送消息'),
title: __('推送消息'),
classname: 'btn btn-xs btn-success btn-magic btn-ajax',
icon: 'fa fa-magic',
url: 'sale/order/send_wx_mes',//要执行的方法地址
confirm: '确认是否要推送消息',
success: function (data, ret) {
// alert(ret.msg);
},
error: function (data, ret) {
alert(ret.msg);
return false;
}
}
], operate: false, formatter: Table.api.formatter.buttons
},
send_wx_mes: function () { Controller.api.bindevent(); },
三、搜索
1、列表中自定义下拉框搜索
table.on('post-common-search.bs.table', function (event, table) { var form = $("form", table.$commonsearch); $("input[name='tags_name']", form).addClass("selectpage").data("source", "esf/house/houseabout/index").data("primaryKey", "name").data("field", "name").data("params", "{'custom[type]':'1'},'custom[status]':'1'}").data("orderBy", "id desc"); Form.events.cxselect(form); Form.events.selectpage(form); });
(
1> 必须在 var table = $("#table"); 之下
2>标红出传参无效(等同于fastadmin中selectpage的data-params),未找到原因
最终解决办法:
将蓝色处修改:(使用get传参,然后再在控制器中处理)
$("input[name='qslx_name']", form).addClass("selectpage").data("source", "esf/house/houseabout/index?cate_id=2").data("primaryKey", "name").data("field", "name").data("orderBy", "id desc");
控制器中对搜索函数进行处理:
/** * 查看 */ public function index() { //当前是否为关联查询 $this->relationSearch = false; //设置过滤方法 $this->request->filter(['strip_tags', 'trim']); if ($this->request->isAjax()) { //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('keyField')) { //接受页面get传参 $par=array(); if($this->request->get()) { $par = $this->request->get(); if (isset($par['cate_id'])) { $par['status'] = 1; } } return $this->selectpage($par);//走重构的Selectpage方法 } ... return json($result); } return $this->view->fetch(); }
在控制器中重构Selectpage方法
/** * Selectpage的实现方法 */ public function selectpage($custom=array()) { //自定义搜索条件 $custom = $custom ?: (array)$this->request->request("custom/a");...
}
)