wupengfei 2 年之前
父节点
当前提交
c6a27eeceb

+ 58 - 36
application/nutrition/controller/VideoCate.php

@@ -1,12 +1,14 @@
 <?php
-namespace app\Nutrition\controller;
+namespace app\nutrition\controller;
 use library\Controller;
+use library\service\MenuService;
+use library\tools\Data;
 use think\Db;
-use app\common\model\VideoCate as VCM;
+
 /**
- * 视频分类
+ * 菜单
  * Class VideoCate
- * @package app\Nutrition\controller
+ * @package app\nutrition\controller
  */
 class VideoCate extends Controller
 {
@@ -18,7 +20,7 @@ class VideoCate extends Controller
     protected $table = 'VideoCate';
 
     /**
-     * 分类列表
+     * 菜单列表
      * @auth true
      * @menu true
      * @throws \think\Exception
@@ -29,10 +31,8 @@ class VideoCate extends Controller
      */
     public function index()
     {
-        $this->title = '分类管理';
-        $query = $this->_query($this->table)->where('is_deleted',0)->like('title');
-        $query->dateBetween('create_at')->order('status desc ,sort desc , id desc')->page();
-
+        $this->title = '菜单列表';
+        $query = $this->_query($this->table)->where('is_deleted',0)->page(false);
     }
 
     /**
@@ -46,13 +46,20 @@ class VideoCate extends Controller
      */
     protected function _index_page_filter(&$data)
     {
-
+        foreach ($data as &$vo) {
+            $vo['ids'] = join(',', Data::getArrSubIds($data, $vo['id']));
+        }
+        $data = Data::arr2table($data);
     }
 
 
 
+
+
+
+
     /**
-     * 添加分类
+     * 添加菜单
      * @auth true
      * @menu true
      * @throws \think\Exception
@@ -63,13 +70,13 @@ class VideoCate extends Controller
      */
     public function add()
     {
-        $this->title = '添加分类';
+        $this->title = '添加菜单';
         $this->_form($this->table, 'form');
     }
 
 
     /**
-     * 编辑分类
+     * 编辑菜单
      * @auth true
      * @menu true
      * @throws \think\Exception
@@ -80,42 +87,56 @@ class VideoCate extends Controller
      */
     public function edit()
     {
-        $this->title = '编辑分类';
+        $this->title = '编辑菜单';
         $this->_form($this->table, 'form');
     }
 
     /**
-     * 禁用
-     * @auth true
-     * @menu true
-     * @throws \think\Exception
+     * 表单数据处理
+     * @param array $vo
+     * @throws \ReflectionException
      * @throws \think\db\exception\DataNotFoundException
      * @throws \think\db\exception\ModelNotFoundException
      * @throws \think\exception\DbException
-     * @throws \think\exception\PDOException
      */
-    public function forbidden()
+    protected function _form_filter(&$vo)
     {
-        $this->_save($this->table, ['status' => '0']);
+        if ($this->request->isGet()) {
+            // 读取系统功能节点
+            $this->nodes = MenuService::instance()->getList();
+            // 选择自己的上级菜单
+            if (empty($vo['pid']) && $this->request->get('pid', '0')) $vo['pid'] = $this->request->get('pid', '0');
+            // 列出可选上级菜单
+            $menus = Db::name($this->table)->where(['status' => '1'])->order('sort desc,id asc')->column('id,pid,title,logo');
+            $this->menus = Data::arr2table(array_merge($menus, [['id' => '0', 'pid' => '-1', 'title' => '顶部菜单']]));
+            if (isset($vo['id'])) foreach ($this->menus as $key => $menu) if ($menu['id'] === $vo['id']) $vo = $menu;
+            foreach ($this->menus as $key => &$menu) {
+                if ($menu['spt'] >= 2) unset($this->menus[$key]);
+                if (isset($vo['spt']) && $vo['spt'] <= $menu['spt']) unset($this->menus[$key]);
+            }
+        }
+        if($this->request->isPost() && in_array($this->request->action(),['add','edit'])){
+            if(!isset($vo['id']) && $vo['pid']){
+                $plev = Db::name($this->table)->where('id',$vo['pid'])->value('lev');
+                $vo['lev'] = $plev + 1;
+            }
+        }
     }
 
     /**
-     * 启用分类
+     * 启用
      * @auth true
      * @menu true
      * @throws \think\Exception
-     * @throws \think\db\exception\DataNotFoundException
-     * @throws \think\db\exception\ModelNotFoundException
-     * @throws \think\exception\DbException
      * @throws \think\exception\PDOException
      */
-    public function enable()
+    public function resume()
     {
-        $this->_save($this->table, ['status' => 1]);
+        $this->_save($this->table, ['status' => '1']);
     }
 
     /**
-     * 删除分类
+     * 禁用
      * @auth true
      * @menu true
      * @throws \think\Exception
@@ -124,21 +145,22 @@ class VideoCate extends Controller
      * @throws \think\exception\DbException
      * @throws \think\exception\PDOException
      */
-    public function del()
+    public function forbid()
     {
-        $this->_save($this->table, ['is_deleted' => 1]);
+        $this->_save($this->table, ['status' => '0']);
     }
 
-
     /**
-     * 表单数据处理
+     * 删除
      * @auth true
      * @menu true
-     * @param array $data
+     * @throws \think\Exception
+     * @throws \think\exception\PDOException
      */
-    protected function _form_filter(&$data)
+    public function remove()
     {
-
+        $this->_save($this->table, ['is_deleted' => 1]);
     }
 
-}
+}
+

+ 58 - 30
application/nutrition/view/video_cate/form.html

@@ -1,36 +1,64 @@
-<div class="think-box-shadow">
-    <form class="layui-form layui-card" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
-        <div class="layui-card-body">
-
-            <div class="layui-form-item">
-                <label class="layui-form-label label-required">分类名称</label>
-                <div class="layui-input-block">
-                    <input name="title" maxlength="20"  value='{$vo.title|default=""}' placeholder="请输入分类名称" class="layui-input">
-                </div>
+<form class="layui-form layui-card" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
+    <div class="layui-card-body">
+        <div class="layui-form-item">
+            <label class="layui-form-label">上级分类</label>
+            <div class="layui-input-block">
+                <select name='pid' class='layui-select' lay-search  >
+                    <!--{foreach $menus as $menu}-->
+                    <!--{eq name='menu.id' value='$vo.pid|default=0'}-->
+                    <option selected value='{$menu.id}'>{$menu.spl|raw}{$menu.title}</option>
+                    <!--{else}-->
+                    <option value='{$menu.id}'>{$menu.spl|raw}{$menu.title}</option>
+                    <!--{/eq}-->
+                    <!--{/foreach}-->
+                </select>
+                <p class="help-block">必选,请选择上级分类或顶级分类(目前最多支持二级分类)</p>
             </div>
+        </div>
 
-            <div class="layui-form-item">
-                <label class="layui-form-label label-required">LOGO</label>
-                <div class="layui-input-block">
-                    <input name="logo" type="hidden" value="{$vo.logo|default=''}">
-                </div>
-            </div>
 
-            <div class="layui-form-item">
-                <label class="layui-form-label label-required">排序</label>
-                <div class="layui-input-block">
-                    <input type="number" name="sort"  value='{$vo.sort|default=""}' placeholder="请输入排序号" class="layui-input">
-                </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label label-required">分类Logo</label>
+            <div class="layui-input-block">
+                <input name="logo" type="hidden" value="{$vo.logo|default=''}"/>
             </div>
-            {notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
-            <div class="layui-form-item text-center">
-                <button class="layui-btn" type='submit'>保 存</button>
-                <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定取消编辑吗?" data-close>取消编辑</button>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">分类名称</label>
+            <div class="layui-input-block">
+                <input name="title" value='{$vo.title|default=""}' required placeholder="请输入分类名称" class="layui-input">
+                <p class="help-block">必填,请填写分类名称,建议字符不要太长,一般4-6个汉字</p>
             </div>
         </div>
-    </form>
-    <script>
-        window.form.render();
-        $('[name="logo"]').uploadOneImage();
-    </script>
-</div>
+
+    </div>
+
+    <div class="hr-line-dashed"></div>
+    {notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
+
+    <div class="layui-form-item text-center" style="margin-top: 100px">
+        <button class="layui-btn" type='submit'>保存数据</button>
+        <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定要取消编辑吗?" data-close>取消编辑</button>
+    </div>
+
+</form>
+
+{block name='script'}
+<script>
+    window.form.render();
+    require(['jquery.autocompleter'], function () {
+        form.render();
+        $('[name="icon"]').on('change', function () {
+            $(this).parent().next().find('i').get(0).className = this.value
+        });
+        $('input[name=url]').autocompleter({
+            limit: 6, highlightMatches: true, template: '{{ label }} <span> {{ title }} </span>', source: (function (subjects, data) {
+                for (var i in subjects) data.push({value: subjects[i].node, label: subjects[i].node, title: subjects[i].title});
+                return data;
+            })(JSON.parse('{$nodes|raw|json_encode}'), [])
+        });
+    });
+    $('[name="logo"]').uploadOneImage();
+</script>
+{/block}

+ 53 - 46
application/nutrition/view/video_cate/index.html

@@ -1,66 +1,73 @@
 {extend name='admin@main'}
-
 {block name="button"}
-<button data-modal='{:url("add")}' data-title="添加分类" class='layui-btn layui-btn-sm layui-btn-primary'>添加分类</button>
+
+{if auth("add")}
+<button data-modal='{:url("add")}' data-title="添加" class='layui-btn layui-btn-sm layui-btn-primary'>添加</button>
+{/if}
+
+{if auth("remove")}
+<button data-action='{:url("remove")}' data-csrf="{:systoken('remove')}" data-rule="id#{key}" class='layui-btn layui-btn-sm layui-btn-primary'>删除分类</button>
+{/if}
+
 {/block}
 
 {block name="content"}
 <div class="think-box-shadow">
-    {include file='video_cate/index_search'}
-    <table class="layui-table margin-top-20" lay-skin="line">
+    {empty name='list'}
+    <blockquote class="layui-elem-quote">没 有 记 录 哦!</blockquote>
+    {else}
+    <table class="layui-table" lay-skin="line">
         <thead>
         <tr>
-            <th class='list-table-sort-td'><button type="button" data-reload class="layui-btn layui-btn-xs">刷 新</button></th>
-            <th class='text-left nowrap'>分类名称</th>
-            <th class='text-left nowrap'>LOGO</th>
-            <th class="text-left" style="width: 30%">操作</th>
+            <th class='list-table-check-td think-checkbox'>
+                <input data-auto-none data-check-target='.list-check-box' type='checkbox'>
+            </th>
+            <th class='list-table-sort-td'>
+                <button type="button" data-reload class="layui-btn layui-btn-xs">刷 新</button>
+            </th>
+            <th style="width:260px"></th>
+            <th style="width:260px"></th>
+            <th class='layui-hide-xs' style="width:180px"></th>
+            <th colspan="2"></th>
         </tr>
         </thead>
         <tbody>
         {foreach $list as $key=>$vo}
-        <tr>
-
-            <td class='list-table-sort-td'><input data-action-blur="{:request()->url()}" data-value="id#{$vo.id};action#sort;sort#{value}" data-loading="false" value="{$vo.sort}" class="list-sort-input"></td>
-            <td class='text-left nowrap'>{$vo.title|default=''}</td>
-            <td class='text-left nowrap'><img data-tips-image="{$vo.logo|default=''}"  src="{$vo.logo|default=''}" width="50px"></td>
-            <td class='text-left' style="width: 20%">
-                <a data-title="编辑分类" class="layui-btn layui-btn-sm" data-modal='{:url("edit")}?id={$vo.id}'>编 辑</a>
-                {if $vo.status == 1}
-                <span class="layui-btn layui-btn-sm layui-btn-warm"  onclick="btn_confirm('禁用','forbidden','{$vo.id}');" >禁 用</span>
-                {else}
-                <span class="layui-btn layui-btn-sm layui-btn-sm"  onclick="btn_confirm('启用','enable','{$vo.id}');">启 用</span>
+        <tr data-dbclick>
+            <td class='list-table-check-td think-checkbox'>
+                <input class="list-check-box" value='{$vo.ids}' type='checkbox'>
+            </td>
+            <td class='list-table-sort-td'>
+                <input data-action-blur="{:request()->url()}" data-value="id#{$vo.id};action#sort;sort#{value}" data-loading="false" value="{$vo.sort}" class="list-sort-input">
+            </td>
+            <td class="nowrap"><span class="color-desc">{$vo.spl|raw}</span>{$vo.title}</td>
+            <td class="nowrap"><img data-tips-image="{$vo.logo|default=''}"  src="{$vo.logo|default=''}" width="35px"></td>
+            <td class='text-center nowrap'>{eq name='vo.status' value='0'}<span class="color-red">已禁用</span>{else}<span class="color-green">使用中</span>{/eq}</td>
+            <td class='text-center nowrap notselect'>
+                {if auth("add")}
+                <span class="text-explode">|</span>
+                <!--{if $vo.spt < 1}-->
+                <a class="layui-btn layui-btn-xs layui-btn-primary" data-title="添加子分类" data-modal='{:url("add")}?pid={$vo.id}'>添 加</a>
+                <!--{else}-->
+                <a class="layui-btn layui-btn-xs layui-btn-disabled">添 加</a>
+                <!--{/if}-->
+                {/if}
+                {if auth("edit")}
+                <a data-dbclick class="layui-btn layui-btn-xs" data-title="编辑分类" data-modal='{:url("edit")}?id={$vo.id}'>编 辑</a>
+                {/if}
+                {if $vo.status eq 1 and auth("forbid")}
+                <a class="layui-btn layui-btn-warm layui-btn-xs" data-confirm="确定要禁用分类吗?" data-action="{:url('forbid')}" data-value="id#{$vo.ids};status#0" data-csrf="{:systoken('forbid')}">禁 用</a>
+                {elseif auth("resume")}
+                <a class="layui-btn layui-btn-warm layui-btn-xs" data-action="{:url('resume')}" data-value="id#{$vo.ids};status#1" data-csrf="{:systoken('resume')}">启 用</a>
+                {/if}
+                {if auth("remove")}
+                <a class="layui-btn layui-btn-danger layui-btn-xs" data-confirm="确定要删除数据吗?" data-action="{:url('remove')}" data-value="id#{$vo.ids}" data-csrf="{:systoken('remove')}">删 除</a>
                 {/if}
-                <span class="layui-btn layui-btn-sm layui-btn-danger" onclick="btn_confirm('删除','del','{$vo.id}');">删 除</span>
             </td>
         </tr>
         {/foreach}
         </tbody>
     </table>
-    {empty name='list'}<span class="notdata">没有记录哦</span>{else}{$pagehtml|raw|default=''}{/empty}
+    {/empty}
 </div>
-<script>
-    function btn_confirm(msg,fun,id) {
-        layer.confirm('请确定是否'+msg, {btn: ['确定', '取消'], title: "提示"}, function () {
-            var url = "/nutrition/video_cate/"+fun;
-            layer.closeAll();
-            $.ajax({
-                type: "post",
-                url: url,
-                data: {id:id},
-                dataType: "json",
-                async: false,
-                success: function (data) {
-                    layer.msg(data.info);
-                    setTimeout(function () {
-                        window.location.reload();
-                    },1000)
-                }
-            });
-        });
-    }
-
-</script>
 {/block}
-
-
-

+ 0 - 16
application/nutrition/view/video_cate/index_search.html

@@ -1,16 +0,0 @@
-<fieldset>
-    <legend>条件搜索</legend>
-    <form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="get" autocomplete="off">
-        <div class="layui-form-item layui-inline">
-            <label class="layui-form-label">分类名称</label>
-            <div class="layui-input-inline">
-                <input name="title" value="{$Think.get.title|default=''}" placeholder="请输入分类名称" class="layui-input">
-            </div>
-        </div>
-
-        <div class="layui-form-item layui-inline">
-            <button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
-        </div>
-    </form>
-    <script>form.render()</script>
-</fieldset>