列表页面

{include file='common/head'}
<link rel="stylesheet" href="__LayuiAdmin__style/admin.css" media="all">


<body>


  <div class="layui-fluid">
    <div class="layui-card">
      <div class="layui-form layui-card-header layuiadmin-card-header-auto">
        <div class="layui-form-item">
          <div class="layui-inline">
            <label class="layui-form-label">标题</label>
            <div class="layui-input-inline">
              <input type="text" name="title" placeholder="请输入" autocomplete="off" class="layui-input">
            </div>
          </div>
          <div class="layui-inline">
            <button class="layui-btn layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search">
              <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
            </button>
          </div>
        </div>
      </div>


      <div class="layui-card-body">
        <div style="padding-bottom: 10px;">
          <button class="layui-btn layuiadmin-btn-list" data-type="add">添加</button>
          <button class="layui-btn layuiadmin-btn-list layui-btn-danger" data-type="batchdel">删除</button>
          <button class="layui-btn layuiadmin-btn-list" data-type="reload">重新加载</button>
        </div>
        <table id="LAY-app-content-list" lay-filter="LAY-app-content-list"></table>
        <script type="text/html" id="table-content-list">
          <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
          <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
        </script>
      </div>
    </div>
  </div>


  {include file='common/foot'}
  <script>
    layui.use(['index', 'table','rate'], function () {
      var table = layui.table
        , admin = layui.admin
        , rate = layui.rate


        , form = layui.form;


      //执行一个 table 实例
      table.render({
        elem: '#table-content-list'
        , url: '{:url("page/index")}' //数据接口
        , page: true //开启分页
        // , toolbar: 'default' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
        , loading: true
        , id: 'LAY-app-content-list' //添加修改页面对应的回调id
        , method: 'post'
        , limit: 10
        , limits: [5, 10, 15, 20, 25, 30]
        , text: {
          none: '没有符合条件' //默认:无数据。
        }
        , cols: [[ //表头
          { type: 'checkbox', fixed: 'left' }
          , { field: 'id', title: 'ID', width: 80, sort: true }
          , { field: 'title', title: '标题' }
          , { field: 'content', title: '内容', }
          //应用于连表后,属性处于多层嵌套情况
          , { field: 'score', title: '积分' ,width:100,templet:function(res){
                 return (res.scoreGoods ? res.scoreGoods.score : '');
             }}
          //layui评分
           ,{ field:'star',title:'评分',id:'rate',
templet:function(d){
                return`<divid="star${d.id}"style="font-size:13px;">${d.id}</div>`;
            }
 }


          , { fixed: 'right', title: '操作', width: 150, align: 'center', toolbar: '#table-content-list' }
        ]]
          //回调函数,在里面设置rate.render(),给rate循环赋值,显示评分
          ,done:function(res){
                  var data = res.data;//返回的json中data数据
                  for (var item in data) {
                      rate.render({
                        elem: `#star${data[item].id}`
                        ,value: data[item].star   //值
                        , half: true              //支持半颗星
                        , length: 5               //星星个数
                        , theme: '#1E9FFF'        //颜色
                        , text: true              //显示文本,默认显示 '3.5星'
                        , readonly: true          //只读
                        , setText: function(value){ //自定义文本的回调
                          var arrs = {
                            '1': '极差'
                            ,'2': '差'
                            ,'3': '中等'
                            ,'4': '好'
                            ,'5': '极好'
                          };
                          this.span.text(arrs[value] || ( value + "星"));
                        }
                      });
                  };
            }


      });




      //监听行工具事件
      table.on('tool(LAY-app-content-list)', function (obj) { //注:tool 是工具条事件名,LAY-app-content-list 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data //获得当前行数据
          , layEvent = obj.event; //获得 lay-event 对应的值
        if (layEvent === 'del') {
          layer.confirm('真的删除行么', function (index) {


            layer.close(index);
            //向服务端发送删除指令
            admin.req({
              method: 'post'
              , url: '{:url("page/del")}'
              , data: { id: data.id }
              , success: function (res) {
                if (res.code == 0) {
                  layer.msg(res.msg, { icon: 1, time: 1000 }, function () {
                    obj.del(); //删除对应行(tr)的DOM结构


                    table.reload('LAY-app-content-list');
                    parent.layer.close(index); //再执行关闭 
                  });
                  return false;
                }
              }
              //,……
            });
          });
        } else if (layEvent === 'edit') {
          layer.open({
            type: 2
            , title: '修改'
            , content: "/admin/page/edit?id=" + data.id
            , maxmin: true
            , area: ['550px', '550px']
            , btn: ['确定', '取消']
            , yes: function (index, layero) {
              //点击确认触发 iframe 内容中的按钮提交
              var submit = layero.find('iframe').contents().find("#layuiadmin-app-form-submit");
              submit.click();
            }
          });
        }
      });




      //监听搜索
      form.on('submit(LAY-app-contlist-search)', function (data) {
       var field = data.field , length = 0;
        for(key in field){
          length += field[key].length;


            //值为空则不追加该搜索条件
                if (field[key].length === 0) {
                    delete field[key];
                }
        }
        if(length === 0){
          return  layer.msg('请输入搜索值');
        }
        //执行重载
        table.reload('LAY-app-content-list', {
          where: field,
          page: { curr: 1 } //搜索的时候,从第一页开始,否则会出现搜索不到对应数据情况
        });
      });


      var $ = layui.$, active = {
        batchdel: function () {
          var checkStatus = table.checkStatus('LAY-app-content-list')
            , checkData = checkStatus.data; //得到选中的数据


          if (checkData.length === 0) {
            return layer.msg('请选择数据');
          }


          layer.confirm('确定删除吗?', function (index) {
            var ids = [];
            $.each(checkData, function (i, value) {
              ids.push(value.id)
            })
            //执行 Ajax 后重载
            admin.req({
              method: 'post'
              , url: '{:url("page/del")}'
              , data: { id: ids }
              , success: function (res) {
                if (res.code == 0) {
                  layer.msg(res.msg, { icon: 1, time: 1000 }, function () {
                    parent.layui.table.reload('LAY-app-content-list'); //重载表格
                    parent.layer.close(index); //再执行关闭 
                  });
                  return false;
                }
              }
              //,……
            });


            table.reload('LAY-app-content-list');
            layer.msg('已删除');
          });
        },
        add: function () {
          layer.open({
            type: 2
            , title: '添加'
            , content: "{:url('page/add')}"
            , maxmin: true
            , area: ['550px', '550px']
            , btn: ['确定', '取消']
            , yes: function (index, layero) {
              //点击确认触发 iframe 内容中的按钮提交
              var submit = layero.find('iframe').contents().find("#layuiadmin-app-form-submit");
              submit.click();
            }
          });
        },
        reload: function () {
          table.reload('LAY-app-content-list', {
            where: {},  //清除筛选条件
            page: { curr: 1 }
          });


        }
      };


      $('.layui-btn.layuiadmin-btn-list').on('click', function () {
        var type = $(this).data('type');
        active[type] ? active[type].call(this) : '';
      });


    });
  </script>


</body>






</html>
posted @ 2024-07-09 15:49  Anbin啊  阅读(9)  评论(0)    收藏  举报