【fastadmin】如何自定义批量操作按钮以及导入excel表格添加多个管理员

【fastadmin】如何自定义批量操作按钮以及导入excel表格添加多个管理员

现在有个需求,需要用fastadmin来完成一个操作:

  1. 超级管理员通过导入一个excel表,批量生成若干个管理员。
  2. 对这些管理员进行批量操作,例如同时纳入教师组(二级管理员)

为了完成这个需求,我要做两个操作:
1、使用fastadmin自带的导入功能,进行管理员信息的统一上传。
2、添加自定义的批量操作按钮,完成向管理员组表里添加数据的功能。

接下来是第一步(导入Excel表生成数据)

  1. 首先在管理员的index.html中添加该代码
    在这里插入图片描述
{:build_toolbar('refresh,add,delete,import')}
  1. 在管理员的admin.js添加如下代码
    在这里插入图片描述
import_url: 'auth/admin/import',
  1. 在管理员的Admin.php文件添加如下代码:
    在这里插入图片描述
public function import(){
	return parent::import();
}
  1. 导入按钮就会显示在管理员页面上了
    在这里插入图片描述
  2. 导入数据格式可以按照下面的来
    在这里插入图片描述

请注意,表格的第一行是数据库中字段的备注名,想添加哪一行就去数据库看备注是什么,然后写到表格里就可以了。
密码: c13f62012fd6a8fdf06b3452a94430e5
密码盐: rpR6Bv
这样设置密码默认为 123456

然后是第二步(添加自定义批量操作按钮)

  1. 首先我们要做的操作是给这些管理员批量设置管理组级别,因此,我们去看一下fastadmin是如何设置级别的。重点代码在这里:
    在这里插入图片描述

uid是管理员的id,group_id是管理组的id

  1. 所以我们要做的就是获取到所有选中的管理员的id,并调用模板来存入数据
  2. 添加批量操作按钮,在管理员的index.html中
    在这里插入图片描述
<a href="javascript:;" class="btn btn-primary btn-changeteacher btn-disabled disabled" title="{:__('批量设置为教师')}" ><i class="fa fa-suitcase"></i> {:__('批量设置为教师')}</a>
  1. 在管理员的admin.js中添加如下代码:
    在这里插入图片描述
			/* 获取选中的id */
            function getIdSelections() {
                return $.map($("#table").bootstrapTable('getSelections'), function(row) {
                    return row.id
                });
            }
            // 批量设置权限
            // 注意这里的元素你需要根据自己给<a>标签取的类名来获取,我的是btn-changeteacher,你可以在上一步看到。
            $(".btn-changeteacher").on('click',function(){
                var ids =table.bootstrapTable('getSelections');
                console.log(ids);
                var checkids = [];
                checkids = getIdSelections();
                console.log(checkids);
                Fast.api.ajax({
                        type: 'POST',
                        url:'auth/admin/changeteacher?ids='+checkids
                    }, function (data, ret) {
                        console.log(data);
                        location.reload();
                    }, function (data, ret) {
                        console.log(data);
                        location.reload();
                    });	   
            })
  1. 在管理员的控制器 Admin.php中添加如下代码:
    在这里插入图片描述
	/**
     * 批量设置为教师组
     */
    public function changeteacher() {
		$lists=$this->request->param('ids');
        $ids = explode ( ',',$lists);//转数组
        $dataset = [];
		for ($i = 0; $i < count($ids); $i++){
            $dataset[] = ['uid' => $ids[$i], 'group_id' => 2];
        }
        try{
            model('AuthGroupAccess')->saveAll($dataset);
            Db::commit();
            $this->success(null, null, array("result" => "success"));
        } catch (\Exception $e) {
            Db::rollback();
            $this->error($e->getMessage());
        }
	}
  1. 所有功能完成,测试前请先清理一下缓存。
                       

点击阅读全文

上一篇 2023年 6月 11日 am10:51
下一篇 2023年 6月 11日 am10:52