fastadmin后台列表添加自定义操作按钮

发布时间 2023-03-22 21:17:05作者: 斯斯20222

 

 

 

 

js:
var Controller = {
    index: function () {
        // 初始化表格参数配置
        Table.api.init({
            extend: {
                index_url: 'enterprise_position/index' + location.search,
                add_url: '',
                edit_url: '',
                del_url: 'enterprise_position/del',
                multi_url: 'enterprise_position/multi',
                table: 'enterprise_position',
            },
            //禁用默认搜索
            search: false,
            //启用普通表单搜索
            commonSearch: true,
            //可以控制是否默认显示搜索单表,false则隐藏,默认为false
            searchFormVisible: true,
        });

        var table = $("#table");

        // 初始化表格
        table.bootstrapTable({
            url: $.fn.bootstrapTable.defaults.extend.index_url,
            pk: 'id',
            sortName: 'id',
            columns: [
                [
                    {field: 'id', title: __('序号'),operate:false},
                    {field: 'position', title: __('Position')},
                    {field: 'e_id', title: __('E_id')},
                    {field: 'salary_min', title: __('Salary_min'), operate:false},
                    {field: 'salary_max', title: __('Salary_max'), operate:false},
                    {field: 'place', title: __('Place'), operate:false},
                    {field: 'status', title: __('Status'), searchList: {"0":__('上线'),"1":__('下线')}, formatter: Table.api.formatter.status,visible: true},
                    {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
                    {
                        field: 'operate', title: __('Operate'), table: table,
                        events: Table.api.events.operate,
                        buttons: [{
                            name: 'detail',
                            text: __('查看'),
                            icon: 'fa fa-list',
                            classname: 'btn btn-info btn-xs btn-detail btn-dialog',
                            url: 'enterprise_position/detail'
                        },{
                            name: 'resume',
                            text: function (row) {
                                return '简历('+row.resume_num+')';
                            },
                            title:'简历',
                            icon: 'fa fa-list',
                            classname: 'btn btn-xs btn-info btn-dialog',
                            url: 'position_to_resume/index?ids={ids}'
                        },{
                            name: 'online',
                            text: __('上线'),
                            icon: 'fa fa-list',
                            classname: 'btn btn-xs btn-success btn-ajax',
                            confirm:function (row) {
                                return '是否确定上线该“'+row.position+'”职位?';
                            },
                            success:function (data,ret) {

                            },
                            url: 'enterprise_position/online?ids={ids}'
                        },{
                            name: 'offline',
                            text: __('下线'),
                            icon: 'fa fa-list',
                            confirm:function (row) {
                                return '是否确定下线该“'+row.position+'”职位?';
                            },
                            success:function (data,ret) {

                            },
                            classname: 'btn btn-xs btn-warning btn-ajax',
                            url: 'enterprise_position/offline?ids={ids}'
                        }],
                        formatter: function (value, row, index) {
                            var that = $.extend({}, this);
                            var table = $(that.table).clone(true);
                            //状态是否已上线
                            if(row.status == 0){  //已上线
                                $(table).data("operate-online", null);
                                that.table = table;
                            }else{
                                $(table).data("operate-offline", null);
                                that.table = table;
                            }

                            return Table.api.formatter.operate.call(that, value, row, index);
                        }
                    }
                ]
            ]
        });

        // 为表格绑定事件
        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;
————————————————
版权声明:本文为CSDN博主「logic_lai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/logic_lai/article/details/117701487
index.html:

<div class="panel panel-default panel-intro">
    {:build_heading()}

    <div class="panel-body">
        <div id="myTabContent" class="tab-content">
            <div class="tab-pane fade active in" id="one">
                <div class="widget-body no-padding">
                    <div id="toolbar" class="toolbar">
                        {:build_toolbar('refresh,delete')}
                    </div>
                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
                           data-operate-detail="{:$auth->check('enterprise_position/index')}"
                           data-operate-resume="{:$auth->check('position_to_resume/index')}"
                           data-operate-online="{:$auth->check('enterprise_position/online')}"
                           data-operate-offline="{:$auth->check('enterprise_position/offline')}"
                           data-operate-del="{:$auth->check('enterprise_position/del')}"
                           width="100%">
                    </table>
                </div>
            </div>

        </div>
    </div>
</div>
 
————————————————
版权声明:本文为CSDN博主「logic_lai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/logic_lai/article/details/117701487
另外特别的带有地区搜索的:

var Controller = {
    index: function () {
        // 初始化表格参数配置
        Table.api.init({
            extend: {
                index_url: 'bidding/index' + location.search,
                add_url: 'bidding/add',
                edit_url: 'bidding/edit',
                del_url: 'bidding/del',
                multi_url: 'bidding/multi',
                table: 'bidding',
            },
            //禁用默认搜索
            search: false,
            //启用普通表单搜索
            commonSearch: true,
            //可以控制是否默认显示搜索单表,false则隐藏,默认为false
            searchFormVisible: true,
        });

        var table = $("#table");

        // 初始化表格
        table.bootstrapTable({
            url: $.fn.bootstrapTable.defaults.extend.index_url,
            pk: 'id',
            sortName: 'id',
            columns: [
                [
                    {checkbox: true},
                    {field: 'bidding_id', title: __('Bidding_id'),searchList: JSON.parse(Config.bidding_type_array)},
                    {field: 'industry_id', title: __('Industry_id'), searchList: JSON.parse(Config.company_industry_array)},
                    {field: 'region.name', title: __('Area_id'),operate:false},
                    {
                        field: 'area_id', title: __('地区搜索'), searchList: function (column) {
                            return Template('areas', {});
                        }, formatter: function (value, row, index) {
                            return '无';
                        }, visible: false
                    },
                    {field: 'title', title: __('Title')},
                    {field: 'tender', title: __('Tender'), operate:false},
                    {field: 'bidding_num', title: __('Bidding_num'), operate:false},
                    {field: 'bid_opentime', title: __('Bid_opentime'), operate:false, addclass:'datetimerange'},
                    {field: 'status', title: __('Status'), searchList: {"0":__('待发布'),"1":__('已发布')}, formatter: Table.api.formatter.status,visible: true},
                    {field: 'create_time', title: __('Create_time'), operate:false, addclass:'datetimerange'},
                    {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                ]
            ],
            queryParams: function (params) {
                //这里可以追加搜索条件
                var filter = JSON.parse(params.filter);
                var op = JSON.parse(params.op);
                //这里可以动态赋值,比如从URL中获取admin_id的值,filter.admin_id=Fast.api.query('admin_id');
                filter.province = $('[name=province]').val();
                filter.city = $('[name=city]').val();
                params.filter = JSON.stringify(filter);
                params.op = JSON.stringify(op);
                return params;
            },
        });

        // 为表格绑定事件
        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;
————————————————
版权声明:本文为CSDN博主「logic_lai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/logic_lai/article/details/117701487
地区index.html

<div class="panel panel-default panel-intro">
    {:build_heading()}

    <div class="panel-body">
        <div id="myTabContent" class="tab-content">
            <div class="tab-pane fade active in" id="one">
                <div class="widget-body no-padding">
                    <div id="toolbar" class="toolbar">
                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
                        <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('binding/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('binding/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('binding/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>

                        
                    </div>
                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
                           data-operate-edit="{:$auth->check('binding/edit')}" 
                           data-operate-del="{:$auth->check('binding/del')}" 
                           width="100%">
                    </table>
                </div>
            </div>

        </div>
    </div>
</div>
<script id="areas" type="text/html">
    <div class="row">
        <div class="col-xs-12">
            <div class="form-inline" data-toggle="cxselect" data-selects="province,city,dlist">
                <select style="width: 60px;" class="province form-control" name="province" data-url="enterprise/get_areas?type=province"></select>
                <select style="width: 70px;" class="city form-control" name="city" data-url="enterprise/get_areas" data-query-name="parentid"></select>
            </div>
        </div>
    </div>
</script>
————————————————
版权声明:本文为CSDN博主「logic_lai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/logic_lai/article/details/117701487
控制器里面:

public function index()
{
    //设置过滤方法
    $this->request->filter(['strip_tags']);
    $Categorymodel = new \app\common\model\Category();
    if ($this->request->isAjax()) {
        //如果发送的来源是Selectpage,则转发到Selectpage
        if ($this->request->request('keyField')) {
            return $this->selectpage();
        }
        $where = [];
        $filter = $this->request->get('filter', '');
        $sort = $this->request->get('sort',
            ! empty($this->model) && $this->model->getPk() ? $this->model->getPk() : 'id');
        $sort = $this->model->getTable() . '.' . $sort;
        $order = $this->request->get('order', 'DESC');
        $offset = $this->request->get('offset', 0);
        $limit = $this->request->get('limit', 0);
        if($filter){
            $filter = (array) json_decode($filter, true);
        }

        if(isset($filter['bidding_id']) && $filter['bidding_id']!= ''){
            $where[] = ['bidding.bidding_id',"=",$filter['bidding_id']];
        }
        if(isset($filter['title']) && $filter['title']!= ''){
            $where[] = ['bidding.title',"like","%{$filter['title']}%"];
        }


        if(isset($filter['status']) && $filter['status']!= ''){
            $where[] = ['bidding.status',"=",$filter['status']];
        }

        if(isset($filter['industry_id']) && $filter['industry_id']!= ''){
            $where[] = ['bidding.industry_id',"=",$filter['industry_id']];
        }
        $region = 0;
        if(isset($filter['city']) && $filter['city']!= ''){
            $region = $filter['city'];
        }else if(isset($filter['province']) && $filter['province']!= ''){
            $region = $filter['province'];
        }
        if($region != 0){
            $region_level = \app\common\model\Region::where("id","=",$region)->value("region_level");
            $where[] = ['region.region_level',"like","{$region_level}%"];
        }
        $total = $this->model
            ->withJoin(['region'], 'left')
            ->where($where)
            ->order($sort, $order)
            ->count();

        $list = $this->model
            ->withJoin(['region'], 'left')
            ->where($where)
            ->order($sort, $order)
            ->limit($offset, $limit)
            ->select();

        $list = $list->toArray();
        foreach ($list as $key => $val){
            $list[$key]['bidding_id'] = $Categorymodel->getCategoryName($val['bidding_id']);
            $list[$key]['industry_id'] = $Categorymodel->getCategoryName($val['industry_id']);
        }
        $result = ['total' => $total, 'rows' => $list];

        return json($result);
    }

    $company_industry_list = $Categorymodel->getCategoryArray('company_industry');
    $bidding_type_list = $Categorymodel->getCategoryArray('bidding_type');
    $this->assignconfig('company_industry_array', json_encode($company_industry_list,JSON_UNESCAPED_UNICODE));
    $this->assignconfig('bidding_type_array', json_encode($bidding_type_list,JSON_UNESCAPED_UNICODE));
    return $this->view->fetch();
}
————————————————
版权声明:本文为CSDN博主「logic_lai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/logic_lai/article/details/117701487