1. 修改了,require-table.js 的文件之后,开启 debug 是正常的,但是关闭之后, 页面就失效了
答: 找了官方的答案, Debug关闭时调用的js为 xxx.min.js ,开启的时候, 调用的是 require-table.js, 所以我们需要重新生成压缩文件. cmd到目录文件夹下(public的上层目录), 使用命令 php think min -m all -r all
,会根据 xxx.js 自动生成对应的 xxxx.min.js, 之后就可以了.
2. 修改日期的下拉框默认的选项
- 将 .env 中的 debug 设为 true. 因为只有为 true 后,才是调用的 xxx.js, 而不是 xxx.min.js
- 日期选择下拉框是 require-form.js 下面的 daterangepicker
- 修改成自己所需样式即可
if ($(".datetimerange", form).size() > 0) {
require(['bootstrap-daterangepicker'], function () {
var ranges = {};
ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')];
// ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')];
ranges[__('Tomorrow')] = [Moment().add(1, 'days').startOf('day'), Moment().add(1, 'days').endOf('day')];
// ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')];
ranges[__('Next 7 Days')] = [Moment().startOf('day'), Moment().add(6, 'days').endOf('day')];
// ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')];
ranges[__('Next 30 Days')] = [Moment().startOf('day'), Moment().add(29, 'days').endOf('day')];
ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')];
ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')];
....
- 修改之后的样子
- 注意, 测试的环境是 debug为true, 如果把 debug关闭,系统默认调用的就是 xxx.min.js, 所以还是需要 cmd到目录文件夹下(public的上层目录), 使用命令
php think min -m all -r all
,会根据 xxx.js 自动生成对应的 xxxx.min.js, 之后就可以了.
3. 修改table中的样式
1 修改单元格css
{
field: 'intime',
title: __('Intime'),
operate: 'RANGE',
addclass: 'datetimerange',
autocomplete: false,
formatter: Table.api.formatter.dateonly,
cellStyle: function (value, row, index) {
console.log(value);
if(value == '1604678400'){
return {
css: {'color':'red', 'background':'orange'}
};
}else{
return {
css: {}
};
}
}
},
效果如下:
2 修改行样式
注意: rowStyle 和 columns 是同级的.
searchFormVisible: true,
rowStyle: function (row, index) {
console.log(row.name);
if (row.name == "23") {
return {css: {"background-color": "#f003"}};
} else {
return {};
}
},
columns: [
效果如下:
4. 权限判断的方法
1 在视图中可以通过权限直接判断
{if $auth->check("规则名称")}
HTML代码
{/if}
2 在js中
- 现在 PHP 中给一个值,例如,在 Huifang.php 中,加一个值,放在 extend 中
$result = array("total" => $list->total(), "rows" => $list->items(), "extend" => ['today_num' => $today_num, 'tomorrow_num' => $tomorrow_num]);
- 在 Huifang.js 中, 通过
table.bootstrapTable('hideColumn', 'name');
隐藏一列
//当表格数据加载完成时
table.on('load-success.bs.table', function (e, data) {
//这里可以获取从服务端获取的JSON数据
//这里我们手动设置底部的值, 今天需要回访的人数和明天需要回访的人数
$("#today_num").text(data.extend.today_num);
$("#tomorrow_num").text(data.extend.tomorrow_num);
//这里可以用来判断是否隐藏一列或者一个html块
if(1){
//隐藏一列
table.bootstrapTable('hideColumn', 'name');
}
});
3 在控制器中
$this->auth->check('huifang/del')
来判断,控制器/方法 是否在权限中.
PS 如下知识点:
-
获取当前用户的权限列表
$this->auth->getRuleList()
-
获取当前用户的所属权限
$this->auth->getGroups()
-
tp5获取当前的 控制器方法
$controller=request()->controller();
$action = request()->action();
5. 自定义搜索
- 在 js 初始化表格, 加入属性
searchFormTemplate: 'huifangformtpl',
- 之后要在 控制器对应的视图的index.html 中加入
<script id="huifangformtpl" type="text/html">
<form class="form-huifang ...
...
</script>
- 注意:
huifangformtpl
就是searchFormTemplate
指定的模板名 - form 的内容,可以先通过 通用搜索拷贝html过来. 但是要注意, 需要加一个 class 名, 为
form-huifang
, 这个huifang
是控制器名. 保持一致
- 如上2步, 即可.
- 总结: 自定义之后, 可以自由的操作每个选项.
6. 通用搜索改成select下拉框(通用搜索)
- 在js中的
searchList: $.getJSON("huifang/getAdminNickname"),
{
field: 'admin.nickname',
title: __('Admin.nickname'),
operate: 'LIKE',
autocomplete: false,
searchList: $.getJSON("huifang/getAdminNickname"),
visible: function (row) {
//返回true时按钮显示,返回false隐藏
return true;
}
},
- 在 控制器下,加入
huifang/getAdminNickname"
这个方法
/**
* @remark 获取 admin表的 nickname字段, 供选项下拉用.
*/
public function getAdminNickname()
{
$admin = new Admin();
$adminList = $admin->field('nickname')->select();
$adminData = [];
foreach ($adminList as $k => $v) {
$adminData[$v['nickname']] = $v['nickname'];
}
return json($adminData);
}
- 将这个方法的权限修改为 登录但是不需要鉴权
/**
* 无需鉴权的方法,但需要登录
* @var array
*/
protected $noNeedRight = ['getAdminNickname'];
7. 通用搜索改成select下拉框(自定义搜索)
- js 中开启自定义模板
searchFormTemplate: 'huifangformtpl',
, 改完自定义搜索. 详细见 第五, 自定义搜索 - 在控制器中
...
protected function getAdminNickname()
{
$admin = new Admin();
$adminList = $admin->field('nickname')->select();
$adminData = [];
foreach ($adminList as $k => $v) {
array_push($adminData, $v['nickname']);
}
return $adminData;
}
...
/获取导医的名称并赋给前端 供搜索用
$adminNicknameList = $this->getAdminNickname();
$this->assign('adminNicknameList', $adminNicknameList);
- 视图中
<select class="form-control" name="admin.nickname">
<option value="">选择</option>
{volist name="adminNicknameList" id="vo"}
<option value="{$vo}">{$vo}</option>
{/volist}
</select>
8. 控制器中获取当前用户id
$this->auth->id