fastadmin自己遇到的问题

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. 修改日期的下拉框默认的选项

  1. 将 .env 中的 debug 设为 true. 因为只有为 true 后,才是调用的 xxx.js, 而不是 xxx.min.js
  2. 日期选择下拉框是 require-form.js 下面的 daterangepicker
  3. 修改成自己所需样式即可
 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')];
                   ....
  1. 修改之后的样子

在这里插入图片描述

  1. 注意, 测试的环境是 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中

  1. 现在 PHP 中给一个值,例如,在 Huifang.php 中,加一个值,放在 extend 中
$result = array("total" => $list->total(), "rows" => $list->items(), "extend" => ['today_num' => $today_num, 'tomorrow_num' => $tomorrow_num]);
  1. 在 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. 自定义搜索

  1. 在 js 初始化表格, 加入属性 searchFormTemplate: 'huifangformtpl',
  2. 之后要在 控制器对应的视图的index.html 中加入
<script id="huifangformtpl" type="text/html">
	<form class="form-huifang ...
	...
</script>
  • 注意: huifangformtpl 就是 searchFormTemplate 指定的模板名
  • form 的内容,可以先通过 通用搜索拷贝html过来. 但是要注意, 需要加一个 class 名, 为 form-huifang, 这个 huifang 是控制器名. 保持一致
  1. 如上2步, 即可.
  2. 总结: 自定义之后, 可以自由的操作每个选项.

6. 通用搜索改成select下拉框(通用搜索)

  1. 在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;
    }
},
  1. 在 控制器下,加入 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);
}
  1. 将这个方法的权限修改为 登录但是不需要鉴权
/**
 * 无需鉴权的方法,但需要登录
 * @var array
 */
protected $noNeedRight = ['getAdminNickname'];

7. 通用搜索改成select下拉框(自定义搜索)

  1. js 中开启自定义模板 searchFormTemplate: 'huifangformtpl',, 改完自定义搜索. 详细见 第五, 自定义搜索
  2. 在控制器中
...

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);
  1. 视图中
<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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值