列表渲染分页批量删除接口调用

<!--搜索-->
<div class="demoTable">
    关键字:
    <div class="layui-inline">
        <input class="layui-input" name="id" id="demoReload" autocomplete="off">
    </div>
    <button class="layui-btn" data-type="reload">搜索</button>
</div>

<!--table表格渲染-->
<table class="layui-hide" id="test" lay-filter="test"></table>

<!--    模板:批量删除-->
<script type="text/html" id="delAll">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="del">批量删除</button>
    </div>
</script>

<!--    模板:基本操作-->
<script type="text/html" id="actionBar">
    <a class="layui-btn layui-btn-xs" lay-event="edit">查看</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>

<!--    模板:图片-->
<script type="text/html" id="img">
    <div><img src="http://www.thinkphp5.com/{{d.logo}}" alt="加载失败.."></div>
</script>
<script>
    layui.use(['table','jquery'], function(){
        var table = layui.table;
        var $ = layui.jquery;

        table.render({
            elem: '#test'
            ,url:"{:url('brand/brandtable')}"
            ,cols: [[
                {type:'checkbox'}
                ,{field:'id', title: 'ID', sort: true}
                ,{field:'name', title: '品牌名称', sort: true}
                ,{field:'logo', title: '品牌logo',templet:'#img'}
                ,{field:'sort', title: '排序', sort: true}
                ,{field:'cate_name', title: '品牌分类', sort: true}
                ,{title: '操作',fixed: 'right',toolbar: '#actionBar', width:150}
            ]]
            ,page: true
            ,limit:5
            ,limits:[5,10,15,20,30,40,50]
            ,toolbar:"#delAll"
            ,id:'testReload'
        });
        //头工具栏事件
        table.on('toolbar(test)', function(obj){
            layer.confirm('真的要删除吗', function(index){
                layer.close(index);
                var checkStatus = table.checkStatus(obj.config.id);
                var arr = checkStatus.data;
                var ids = [];
                $(arr).each(function (k,v) {
                    ids.push(v.id)
                })
                $.ajax({
                    url:'http://www.thinkphp5.com/admin/brand/brandDel?ids='+ids.toString(),
                    success:function (e) {
                        if(e.code==0){
                            layer.msg(e.msg)
                            table.reload('testReload')
                        }
                    }
                })
            });
        });

        //监听行工具事件
        table.on('tool(test)', function(obj){
            var data = obj.data;
            //console.log(obj)
            if(obj.event === 'del'){
                layer.confirm('真的要删除吗?', function(index){
                    $.ajax({
                        url:'http://www.thinkphp5.com/admin/brand/brandDel?ids='+index,
                        success:function (e) {
                            if(e.code==0){
                                layer.msg(e.msg)
                                table.reload('testReload')
                            }
                        }
                    })
                });
            } else if(obj.event === 'edit'){
                layer.prompt({
                    formType: 2
                    ,value: data.email
                }, function(value, index){
                    obj.update({
                        email: value
                    });
                    layer.close(index);
                });
            }
        });
        var $ = layui.$, active = {
            reload: function(){
                var demoReload = $('#demoReload');

                //执行重载
                table.reload('testReload', {
                    page: {
                        curr: 1 //重新从第 1 页开始
                    }
                    ,where: {
                        words:demoReload.val()
                    }
                });
            }
        };

        $('.demoTable .layui-btn').on('click', function(){
            var type = $(this).data('type');
            active[type] ? active[type].call(this) : '';
        });
    });
</script>
public function brandTable()
{
    $limit = input('limit');
    $word = input('words');
    if (empty($limit)){
        $limit = 5;
    }
    $brand = \app\admin\model\Brand::with('category')
        ->whereOr('name','like',"%$word%")
        ->whereOr('id','like',"%$word%")
        ->paginate($limit);
    $data = $brand->items();
    $count = $brand->total();
    return json(['code'=>0,'msg'=>'success','data'=>$data,'count'=>$count]);
}

public function brandDel()
{
    $ids = input('ids');
    $res = \app\admin\model\Brand::destroy($ids);
    return json(['code'=>0,'msg'=>'删除成功','data'=>'']);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue前端处理分页批量删除时,我们可以遵循以下步骤: 1. 首先,确保我们已经获取到了要删除的数据列表,并且知道每个数据项的唯一标识符(例如ID)。 2. 创建一个全局的“选中项”数组,用于存储用户选择删除的项。我们可以将每个数据项的唯一标识符添加到这个数组中。 3. 在页面上显示数据列表时,为每个数据项提供一个选择框或者复选框,以便用户可以选择删除的项。并且,通过`v-model`指令将数据项的唯一标识符与“选中项”数组进行双向绑定。 4. 提供一个“全选”按钮,让用户选择或取消选择所有的数据项。点击“全选”按钮时,我们可以动态的将“选中项”数组填充满或清空。 5. 当用户完成选择操作后,点击“删除”按钮来触发删除操作。在删除操作中,我们遍历“选中项”数组,根据每个数据项的唯一标识符,发送删除请求到后端以删除数据。 6. 在删除成功之后,更新页面上的数据列表,可以直接重新获取数据或者利用Vue响应式的能力,通过删减“选中项”数组中的项来删除页面中的数据项。 总结起来,处理分页批量删除时,我们需要通过全局的“选中项”数组来存储用户选择删除的数据项的唯一标识符,并在删除操作时,遍历该数组发送删除请求,然后更新页面上的数据列表。通过这种方式,我们可以高效地进行分页批量删除的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值