fastadmin订单父子表管理端

news/2025/3/20 18:00:03/文章来源:https://www.cnblogs.com/zhang-bin/p/18783591

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', 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);}});};// 为表格绑定事件Table.api.bindevent(table);},add: function () {Controller.api.bindevent();},edit: function () {Controller.api.bindevent();},api: {bindevent: function () {Form.api.bindevent($("form[role=form]"));}}};return Controller;
});

第四步,JS处理完了,还需要处理一下控制器,控制器数据筛选需要手动增加一个父级ID,即子表中的parentid,传到后台控制器,需要判断一下,如果没有传则给个默认值。以下是我的控制器方法:

public function index()
{//设置过滤方法$this->request->filter(['strip_tags', 'trim']);if ($this->request->isAjax()) {//如果发送的来源是Selectpage,则转发到Selectpageif ($this->request->request('keyField')) {return $this->selectpage();}list($where, $sort, $order, $offset, $limit) = $this->buildparams();$pid = $this->request->param('pid');// 这两行是新加的$orwhere['pid'] = isset($pid) ? $pid : '0';$list = $this->model->where($where)->where($orwhere) //这行是新加的->order($sort, $order)->paginate($limit);$result = array("total" => $list->total(), "rows" => $list->items());return json($result);}return $this->view->fetch();
}

最终效果如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902117.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rudolf and k Bridges

Rudolf and k Bridges 题目 大致题意上图为俯视图 有一个\(nXm\)的网格,下标从\(1-n\) 以及从 \(1-m\),\((i, j)\) 的值就是这个这垂直一格水的深度 现在要安装支架,有几个信息:\((i, 1)\) 和 \((i, m)\) 处必须要安装相邻支架的距离不能超过 \(d\), 相邻距离为 \(abs(j - …

背离Divergence Trading ,贪小便宜

趋势交易(trend trading)和背离交易(divergence trading),代表了两种不同的交易策略。做背离交易相当于赌市场短期失效,承认你比市场聪明,虽然能赚小钱,但往往是亏大钱的根源。 贪小便宜爱背离,贪小便宜(gain small advantages)不爱止损(cut losses),所以背离和不止损…

在鸿蒙NEXT开发中实现一个语音识别组件

鸿蒙系统发布以后都不知道叫它5.0版本还是NEXT版本了,哈哈,反正是最新版本就对了。对于语音转换文字,鸿蒙系统提供了离线语音识别模型speechRecognizer,语种目前支持中文,识别效果非常不错。今天要分享的是使用speechRecognizer实现一个语音识别组件。要实现语音识别,首先…

激光代加工产品一览-代加工-外协加工-委外加工-激光代加工-河南郑州亚克力切割雕刻代加工-芯晨微纳(河南)

关键词:河南省郑州市、激光代加工、激光打标、激光切割、激光雕刻、激光打孔、激光毛化、激光分切 简介:芯晨微纳(河南)光电科技有限公司,专注于激光微纳代加工、设备/耗材代理销售、设备租赁、技术推广服务,可处理材料类型及应用范围十分广泛,欢迎来电咨询(韩经理1823…

20242801 2024-2025-2 《网络攻防实践》第4次作业

20242801 2024-2025-2 《网络攻防实践》第4次作业 一、实验内容 ​ 在虚拟机环境中完成TCP/IP协议栈重点协议的攻击实验,学习ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击的原理和相关知识,并动手进行实践。 二、实验过程 (一)ARP缓存欺…

缓存监控治理在游戏业务的实践和探索

通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。作者:来自 vivo 互联网服务器团队- Wang Zhi 通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。 一、缓存监控的背景游戏业务中存在大量的高频请求尤其是对热门游戏而言,而…

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析 ZYNQ系列芯片集成了ARM处理器和FPGA(可编程逻辑单元),正是因为由于ARM处理器的存在,所以我们可以在ZYNQ系列芯片上面运行Linux系统。 在ZYNQ系列芯片上运行Linux会给我们带来很多优势:首先,我们可以将部分逻辑处理…

# 20241902 2024-2025-2 《网络攻防实践》第六周作业

1.实验内容 通过本周的学习和实践,学习使用metasploitable对windows进行远程的渗透测试实验;学习利用wireshark进行日志文件的分析和攻击取证,解读攻击者所利用的攻击、攻击者的具体操作以及如何对攻击行为进行防范;实践同一内网中对利用metasploitable对其他windows系统进…

gitlab+jenkins+harbor+k8s安装操作流程之rancher

关闭防火墙 systemctl stop firewalld yum安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 下载docker-ce.repo源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 安装docker yum install…

win11优化pyenv-venv虚拟环境切换

问题 使用 pyenv-venv activate env_name 命令激活虚拟环境后无法使用tab自动完善命令无法上下键切换历史命令脚本 #!/usr/bin/bashvenvs="/d/JavaProgramFiles/pyenv-win/pyenv-win-venv/envs" # #!/bin/bashactivate () {# 设置 PATHORIGIN_PATH="${ORIGIN_P…

安装Harbor

环境:OS:Centos 7说明:需要docker和 docker compose[root@node1 data]# docker version Client: Docker Engine - CommunityVersion: 26.1.4API version: 1.45Go version: go1.21.11Git commit: 5650f9bBuilt: Wed Jun 5 11:32:04…

Linux学习路线

Linux 学习路线Linux 学习路线 by 程序员鱼皮💂 + 💻 = 👴🏽 建议先观看视频入门:https://www.bilibili.com/video/BV1ev411G7VE/ 为什么学 Linux? 相比于 Windows,Linux 免费、开源、安全、灵活、稳定、便于开发,所以更受企业青睐,甚至 90% 以上 的企业应用都是用…