15 06 2020

1.png


{extend name="index/admin/index"}
{block name="right"}
<div class="company-right">
    <div class="top-bar">
        <span>栏目管理</span>
    </div>
    <!-- 主体内容 -->
    <div class="site-text">
        <p>
            <i class="layui-icon layui-icon-tips"></i> 点击栏目名称和排序进行修改,只能修改子栏目的排序,数字大排在后面
        </p>
    </div>

    <table class="layui-table" lay-data="{literal}{url:'/index/admin/cateInfo', id:'table1'}{/literal}" lay-filter="table1">

        <thead>
        <tr>
            <th lay-data="{field:'name', templet: '#nameTpl', edit: 'text', minWidth: 150, }">栏目名称</th>
            <th lay-data="{field:'order', templet: '#sortTpl', edit: 'text', width: 60}">排序</th>
            <th lay-data="{field:'explain', templet: '#descTpl'}">说明</th>
            <th lay-data="{toolbar: '#tbOperate', minWidth: 120, align: 'center'}">操作</th>
        </tr>
        </thead>

    </table>
    <script type="text/html" id="sortTpl">

        {{# if (d.f_id == '0') { }}
        {{# } else { }}
        {{d.order}}
        {{# } }}

    </script>
    <script type="text/html" id="nameTpl">
            {{#  if(d.f_id > 0){ }} └─ {{#  } }}
            {{d.name}}
    </script>
    <script type="text/html" id="tbOperate">

        {{# if (d.f_id == '0') { }}
        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="additem"> 添加子栏目 </a>
          <input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-filter="show" lay-text="隐藏|隐藏" {{ d.status == 0 ? 'checked' : '' }}>
        {{# } else { }}
        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
        {{# } }}

    </script>
    <br>
    <fieldset class="layui-elem-field layui-field-title">
        <legend>帮助说明</legend>
    </fieldset>
    <div class="layui-elem-quote layui-text">
        <p>
            1、【关于我们】属于单页面,你可以把【关于我们】改成【公司简介】,或者在下面添加二级分类:比如【公司简介】、【企业文化】等。
            <br>一个二级分类只对应一个页面。
        </p>
        <p style="height: 10px"></p>
        <p>
            2、【产品展示】属于图片列表页,假如你是一家展览公司没产品,你可以把【产品展示】改成【展会信息】。
        </p>
    </div>


    <div class="layui-row" id="popWindow" style="display: none;">
        <form class="layui-form layui-from-pane" action="" style="margin: 20px 0">

            <div class="layui-form-item">
                <label class="layui-form-label">栏目名称</label>
                <div class="layui-input-inline">
                    <input type="text" name="name" required="" lay-verify="required" id="addName" placeholder="请输入栏目名称" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">排序</label>
                <div class="layui-input-inline">
                    <input type="text" name="order" required="" lay-verify="required" value="1" maxlength="5" placeholder="数字大排在后面" autocomplete="off" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <div class="layui-input-block">
                    <button class="layui-btn  layui-btn-submit " lay-submit="" lay-filter="formSubmit">确认添加</button>
                </div>
            </div>
        </form>
    </div>

    <!-- 主体内容 -->
</div>
{/block}

{block name="js"}
<script>
    layui.use(['jquery','table','form'], function(){
        var table = layui.table;
        var $ = jQuery = layui.$;
        var form = layui.form;

        $('.company-tree dd a').eq(1).addClass('active');  //样式选中
        //监听隐藏操作
        form.on('switch(show)', function(obj){
            var id = this.value;
            var field = this.name;
            var value = obj.elem.checked != true ? 1 : 0;
            console.log(id+field+value);
            $.ajax({
                url: "/index/admin/cateStatus",
                type: 'post',
                data: { 'id': id, 'field': field, 'value': value },
                dataType: 'json',
                beforeSend () {
                    layer.load(2);
                },
                success: function (resdata) {
                    if(resdata.code) {
                        layer.msg(resdata.msg);
                        table.reload('table1');
                    }else {
                        layer.msg(resdata.msg, function(){ });
                    }
                },
                complete (resdata, status) {
                    layer.closeAll('loading');
                },
                fail: function (err, status) {
                    console.log(err)
                }
            });
        });

        //监听工具条
        table.on('tool(table1)', function(obj) {
            var data = obj.data;
            if (obj.event === 'additem') {
                layer.open({
                    //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
                    type: 1,
                    title: "添加【"+data.name+"】下面的子栏目",
                    area: ['320px', '280px'],
                    content: $("#popWindow")//引用的弹出层的页面层的方式加载修改界面表单
                });
                //动态向表传递赋值
                setFormValue(obj, data);

            } else if (obj.event === 'del'){
                layer.confirm('真的删除么', function(index){
                    layer.close(index);
                    $.post("/index/admin/cateDel", { 'id': data.id }, function(res){
                        if(res.code) {
                            obj.del();
                            layer.msg(res.msg);
                        }else{
                            layer.msg(res.msg,function(){ });
                        }
                    });
                });
            }
        });


        function setFormValue(obj, rowdata){
            //监听提交
            form.on('submit(formSubmit)', function(formdata) {
                console.log(rowdata);
                formdata.field.f_id = rowdata.id;
                formdata.field.u_id = rowdata.u_id;
                formdata.field.explain = rowdata.explain;
                formdata.field.order = 1;
                var param = formdata.field; //定义临时变量获取表单提交过来的数据
                var btntext = formdata.elem.innerHTML; //提交按钮的文本
                console.log(param);
                $.ajax({
                    url: "/index/admin/cateAdd",
                    type: 'POST',
                    data: param,
                    beforeSend () {
                        formdata.elem.disabled = true;
                        formdata.elem.innerHTML = '提交中...';
                        layer.load(2);
                    },
                    success:function (resdata) {
                        if(resdata.code){
                            layer.msg(resdata.msg);
                            layer.closeAll('page');//关闭弹出层
                            $('#addName').val('');
                            table.reload('table1');
                        }else{
                            layer.msg(resdata.msg, {icon:5, shift: 6, shade: [0.2, '#000']});
                        }
                    },
                    complete (data, status) {
                        formdata.elem.disabled = false;
                        formdata.elem.innerHTML = btntext;
                        layer.closeAll('loading');
                    },
                    fail: function (err, status) {
                        console.log(err)
                    }
                });

                return false;

            })
        }

        //监听单元格编辑
        table.on('edit(table1)', function(obj) {
            var rowdata = obj.data, //得到所在行所有键值
                 field = obj.field;
            if (field == 'order' && rowdata.f_id == 0) {
                //console.log(obj);
                layer.msg('只能修改子栏目的排序',function(){  });
                return;
            }

            $.ajax({
                url: "/index/admin/cateEdit",
                type: 'post',
                data: rowdata,
                dataType: 'json',
                beforeSend () {
                    layer.load(2);
                },
                success: function (resdata) {
                    //console.log(data);
                    if(resdata.code) {
                        layer.msg(resdata.msg);
                        table.reload('table1');

                    }else {
                        layer.msg(resdata.msg, function(){ });
                    }
                },
                complete () {
                    layer.closeAll('loading');
                },
                fail: function (err) {
                    console.log(err)
                }
            });

        });
    });
</script>
{/block}


树状图是在查询中做了排序

//一级栏目
        $cateInfo = Db::table('index_cate')->order('order asc')->order('id desc')->where('f_id',0)->where('u_id',$userInfo['id'])->select();

//        //二级栏目
        $cateInfom = Db::table('index_cate')->order('order asc')->order('id desc')->where('f_id','neq',0)->where('u_id',$userInfo['id'])->select();

        $array = [];
        //一级二级栏目排序
        foreach($cateInfo as $k => $v){
            array_push($array,$cateInfo[$k]);
            foreach ($cateInfom as $a => $b){
                if ($b['f_id'] == $v['id']){
                    array_push($array,$cateInfom[$a]);
                }
            }
        }

        $data['code'] = 0;
        $data['data'] = $array;
        return json($data);


延伸阅读
  1. 用threejs展示stl格式3D模型
  2. 路由绑定二级域名