fastadmin订单父子表管理端
fastadmin后台父子表使用方法
发布于 2021-01-22 12:48:10
fastadmin后台的所有表格都是支持父子表配置的,只需要简单修改一下对应的JS即可,下面直接进入主题。
示例是我的全国省市行政区划表,是从国家统计局网站采集下来的,共五级行政数据,非常适合用来做父子表,按照级别一级一级查看数据最好不过了。
第一步,打开对应的JS文件,在index中添加:
var table = $("#table");
var oInit = new Object()
第二步,在colunms后面添加:
onExpandRow: function (index, row, $detail) {
oInit.InitSubTable(index, row, $detail);
}
第三步,在table.bootstrapTable后面加上:
oInit.InitSubTable = function (index, row, $detail) {
var parentid = row.id;
var cur_table = $detail.html('<table></table>').find('table');
$(cur_table).bootstrapTable({
url: '/tools/area/index',
toolbar: false, // 此处往下6个参数是关闭子表的相关按钮,不加的话会导致上面的表头按钮错乱,并且会报错
showColumns: false,
showToggle: false,
showExport: false,
search: false,
commonSearch: false,
sortOrder: 'ASC',
queryParams: function(params){
var tmp = {
limit: params.limit,
offset: params.offset,
order: params.order,
pid: parentid
}
return tmp;
},
detailView: true,//父子表
columns: [
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'pid', title: __('Pid')},
{field: 'level', title: __('Level')},
{field: 'area_code', title: __('Area_code')},
{field: 'zip_code', title: __('Zip_code')},
{field: 'city_code', title: __('City_code')},
{field: 'name', title: __('Name')},
{field: 'short_name', title: __('Short_name')},
{field: 'merger_name', title: __('Merger_name')},
{field: 'pinyin', title: __('Pinyin')},
{field: 'lng', title: __('Lng'), operate:'BETWEEN'},
{field: 'lat', title: __('Lat'), operate:'BETWEEN'},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
],
onExpandRow: function (index, row, $Subdetail) {
oInit.InitSubTable(index, row, $Subdetail);
}
});
};
注意子表中的columns字段列可以直接从主表复制下来,也可以自定义
下面是我的完整的JS:
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
index_url: 'tools/area/index' + location.search,
add_url: 'tools/area/add',
edit_url: 'tools/area/edit',
del_url: 'tools/area/del',
multi_url: 'tools/area/multi',
table: 'area',
}
});
var table = $("#table");
var oInit = new Object()
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
sortOrder: 'ASC',
detailView: true,
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'pid', title: __('Pid')},
{field: 'level', title: __('Level')},
{field: 'area_code', title: __('Area_code')},
{field: 'zip_code', title: __('Zip_code')},
{field: 'city_code', title: __('City_code')},
{field: 'name', title: __('Name')},
{field: 'short_name', title: __('Short_name')},
{field: 'merger_name', title: __('Merger_name')},
{field: 'pinyin', title: __('Pinyin')},
{field: 'lng', title: __('Lng'), operate:'BETWEEN'},
{field: 'lat', title: __('Lat'), operate:'BETWEEN'},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
],
onExpandRow: function (index, row, $detail) {
oInit.InitSubTable(index, row, $detail);
}
});
oInit.InitSubTable = function (index, row, $detail) {
var parentid = row.id;
var cur_table = $detail.html('<table></table>').find('table');
$(cur_table).bootstrapTable({
url: '/tools/area/index',
toolbar: false,
showColumns: false,
showToggle: false,
showExport: false,
search: false,
commonSearch: false,
sortOrder: 'ASC',
queryParams: function(params){
var tmp = {
limit: params.limit,
offset: params.offset,
order: params.order,
pid: parentid
}
return tmp;
},
detailView: true,//父子表
columns: [
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'pid', title: __('Pid')},
{field: 'level', title: __('Level')},
{field: 'area_code', title: __('Area_code')},
{field: 'zip_code', title: __('Zip_code')},
{field: 'city_code', title: __('City_code')},
{field: 'name', title: __('Name')},
{field: 'short_name', title: __('Short_name')},
{field: 'merger_name', title: __('Merger_name')},
{field: 'pinyin', title: __('Pinyin')},
{field: 'lng', title: __('Lng'), operate:'BETWEEN'},
{field: 'lat',
