权限、关联查询和快速搜索
<?php
namespace app\admin\controller;
use app\common\controller\Backend;
/**
*
*
* @icon fa fa-circle-o
*/
class HrzJson extends Backend
{
/**
* HrzJson模型对象
* @var \app\admin\model\HrzJson
*/
protected $model = null;
/**
* 无需登录的方法,同时也就不需要鉴权了
* @var array
*/
protected $noNeedLogin = ['mywork'];
/**
* 无需鉴权的方法,但需要登录
* @var array
*/
protected $noNeedRight = ['mylogin'];
/**
* 是否开启数据限制
* 支持auth/personal
* 表示按权限判断/仅限个人
* 默认为禁用,若启用请务必保证表中存在admin_id字段
*/
protected $dataLimit = 'auth';
/**
* 数据限制字段
*/
protected $dataLimitField = 'admin_id';
/**
* 快速搜索时执行查找的字段
*/
protected $searchFields = ['admin_id','admin.username'];
/**
* 是否是关联查询
*/
protected $relationSearch = true;
public function _initialize()
{
parent::_initialize();
$this->model = new \app\admin\model\HrzJson;
}
/**
* 查看
*/
public function index()
{
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('keyField')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$list = $this->model
->with(["admin"])
->where($where)
->order($sort, $order)
->paginate($limit);
$result = array("total" => $list->total(), "rows" => $list->items());
return json($result);
}
return $this->view->fetch();
}
public function import()
{
parent::import();
}
/*
* mywork
* */
public function mywork()
{
return "权限设定";
}
/*
* mywork
* */
public function mylogin()
{
return "需要登录吧";
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
*/
}
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
index_url: 'hrz_json/index' + location.search,
add_url: 'hrz_json/add',
edit_url: 'hrz_json/edit',
del_url: 'hrz_json/del',
multi_url: 'hrz_json/multi',
import_url: 'hrz_json/import',
table: 'hrz_json',
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'gwSn', title: __('Gwsn'), operate: 'LIKE'},
{field: 'gwName', title: __('Gwname'), operate: 'LIKE'},
{field: 'pubdata', title: __('Pubdata'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
{field: 'admin_id', title: __('Admin_id')},
{field: 'admin.username', title: __('Username')},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
},
recyclebin: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
'dragsort_url': ''
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: 'hrz_json/recyclebin' + location.search,
pk: 'id',
sortName: 'id',
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{
field: 'deletetime',
title: __('Deletetime'),
operate: 'RANGE',
addclass: 'datetimerange',
formatter: Table.api.formatter.datetime
},
{
field: 'operate',
width: '130px',
title: __('Operate'),
table: table,
events: Table.api.events.operate,
buttons: [
{
name: 'Restore',
text: __('Restore'),
classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
icon: 'fa fa-rotate-left',
url: 'hrz_json/restore',
refresh: true
},
{
name: 'Destroy',
text: __('Destroy'),
classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
icon: 'fa fa-times',
url: 'hrz_json/destroy',
refresh: true
}
],
formatter: Table.api.formatter.operate
}
]
]
});
// 为表格绑定事件
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;
});
<?php
namespace app\admin\model;
use think\Model;
use traits\model\SoftDelete;
class HrzJson extends Model
{
use SoftDelete;
// 表名
protected $name = 'hrz_json';
// 自动写入时间戳字段
protected $autoWriteTimestamp = false;
// 定义时间戳字段名
protected $createTime = false;
protected $updateTime = false;
protected $deleteTime = 'deletetime';
// 追加属性
protected $append = [
];
public function admin()
{
return $this->belongsTo('admin', 'admin_id')->setEagerlyType(0);
}
}