xieruidong 2 years ago
parent
commit
4b692102b7

+ 61 - 2
app/admin/controller/Xw.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller;
 
+use app\data\model\DataXwCategory;
 use think\admin\Controller;
 /**
  * 新闻报道
@@ -16,6 +17,7 @@ class Xw extends Controller
      * @menu true
      */
     public function index(){
+        $this->title='新闻列表';
         $this->fetch();
     }
     /**
@@ -24,7 +26,7 @@ class Xw extends Controller
      * @menu true
      */
     public function add(){
-        $this->fetch();
+        $this->fetch('form');
     }
     /**
      * 新闻分类
@@ -32,6 +34,63 @@ class Xw extends Controller
      * @menu true
      */
     public function category(){
-
+        $this->title='分类';
+        DataXwCategory::mQuery()
+            ->like('name')
+            ->layTable();
+    }
+    /**
+     * 新闻分类添加
+     * @auth true
+     * @menu true
+     */
+    public function category_add(){
+        if($this->request->isPost()) {
+            $this->cate_vali();
+        }
+        DataXwCategory::mForm('form_category');
+    }
+    protected function cate_vali(){
+        $this->_vali([
+            'name.require'=>'分类名必须',
+            'name.max:50'=>'分类名过长',
+            'sort.require'=>'排序必须',
+            'sort.egt:0'=>'排序必须大于0',
+            'sort.integer'=>'排序必须是数字',
+        ]);
+    }
+    /**
+     * 新闻分类编辑
+     * @auth true
+     * @menu true
+     */
+    public function category_edit(){
+        if($this->request->isPost()) {
+            $this->cate_vali();
+        }
+        DataXwCategory::mForm('form_category');
+    }
+    /**
+     * 新闻分类删除
+     * @auth true
+     * @menu true
+     */
+    public function category_del(){
+        $id=$this->request->post('id');
+        $all=DataXwCategory::whereIn('id',$id)->select();
+        $all->each(function ($c){
+            $c->delete();
+        });
+        $this->success('删除成功');
+    }
+    /**
+     * 新闻分类上下架
+     * @auth true
+     * @menu true
+     */
+    public function cate_state(){
+        DataXwCategory::mSave([
+            'status'=>$this->request->post('status'),
+        ]);
     }
 }

+ 82 - 0
app/admin/view/xw/category.html

@@ -0,0 +1,82 @@
+{extend name='table'}
+
+{block name="button"}
+{if auth("category_add")}
+<button data-modal='{:url("category_add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加</button>
+{/if}
+
+<!--{if auth("category_del")}-->
+<button data-action='{:url("category_del")}' data-table-id="NewsTable" data-rule="id#{id}" data-confirm="确定要批量删除分类吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除</button>
+<!--{/if}-->
+{/block}
+
+{block name="content"}
+<div class="layui-tab layui-tab-card">
+    <ul class="layui-tab-title">
+        <li>分类管理</li>
+    </ul>
+    <div class="layui-tab-content">
+        <table id="NewsTable" data-url="{:sysuri()}" data-target-search="form.form-search"></table>
+    </div>
+</div>
+{/block}
+
+{block name='script'}
+<script>
+    $(function () {
+        // 初始化表格组件
+        $('#NewsTable').layTable({
+            even: true, height: 'full',
+            sort: {field: 'sort desc', type: 'desc'},
+            where: {type: '{$type|default="index"}'},
+            cols: [[
+                {checkbox: true, fixed: true},
+                {field: 'sort', title: '排序权重', align: 'center', width: 100, sort: true, templet: '#SortInputTpl'},
+                {field: 'id', title: 'ID', align: "center", width: 80},
+                {field: 'name', title: '分类标题', align: 'left', minWidth: 140},
+                {field: 'status', title: '状态', align: 'center', minWidth: 110, templet: '#StatusSwitchTpl'},
+                {toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 80, fixed: 'right'},
+            ]]
+        });
+
+        // 数据状态切换操作
+        layui.form.on('switch(StatusSwitch)', function (obj) {
+            var data = {id: obj.value, status: obj.elem.checked > 0 ? 1 : 0};
+            $.form.load("{:url('cate_state')}", data, 'post', function (ret) {
+                if (ret.code < 1) $.msg.error(ret.info, 3, function () {
+                    $('#NewsTable').trigger('reload');
+                }); else {
+                    $('#NewsTable').trigger('reload');
+                }
+                return false;
+            }, false);
+        });
+    });
+
+</script>
+
+<!-- 列表排序权重模板 -->
+<script type="text/html" id="SortInputTpl">
+    <input type="number" min="0" data-blur-number="0" data-action-blur="{:sysuri()}" data-value="id#{{d.id}};action#sort;sort#{value}" data-loading="false" value="{{d.sort}}" class="layui-input text-center">
+</script>
+
+<!-- 数据状态切换模板 -->
+<script type="text/html" id="StatusSwitchTpl">
+    <!--{if auth("cate_state")}-->
+    <input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="已激活|已禁用" lay-filter="StatusSwitch" {{-d.status>0?'checked':''}}>
+    <!--{else}-->
+    {{-d.status ? '<b class="color-green">已启用</b>' : '<b class="color-red">已禁用</b>'}}
+    <!--{/if}-->
+</script>
+
+<!-- 数据操作工具条模板 -->
+<script type="text/html" id="toolbar">
+    <!--{if auth("category_edit")}-->
+    <a class="layui-btn layui-btn-primary layui-btn-sm" data-modal='{:url("category_edit")}?id={{d.id}}'>编 辑</a>
+    <!--{/if}-->
+
+    <!--{if auth("category_del")}-->
+    <a class="layui-btn layui-btn-danger layui-btn-sm" data-action="{:url('category_del')}" data-value="id#{{d.id}}" data-confirm="确定要删除分类吗?">删 除</a>
+    <!--{/if}-->
+</script>
+{/block}

+ 2 - 15
app/admin/view/xw/form.html

@@ -4,23 +4,10 @@
 <form action="{:sysuri()}" class="layui-card layui-form" data-auto="true" method="post">
     <div class="layui-card-body">
 
-        <!--{notempty name='marks'}-->
-        <div class="layui-form-item label-required-prev">
-            <span class="help-label"><b>文章标签</b>News Mark</span>
-            <div class="layui-textarea help-checks">
-                {foreach $marks as $tag}{if isset($vo.mark) && is_array($vo.mark) && in_array($tag.name, $vo.mark)}
-                <label class="think-checkbox notselect"><input checked lay-ignore name="mark[]" type="checkbox" value="{$tag.name}"> {$tag.name}</label>
-                {else}
-                <label class="think-checkbox notselect"><input lay-ignore name="mark[]" type="checkbox" value="{$tag.name}"> {$tag.name}</label>
-                {/if}{/foreach}
-            </div>
-        </div>
-        <!--{/notempty}-->
-
         <div class="layui-form-item label-required-prev">
             <span class="help-label"><b>文章封面</b>News Conver</span>
             <div class="relative block label-required-null">
-                <input class="layui-input think-bg-gray" name="cover" placeholder="请上传文章封面" readonly required value='{$vo.cover|default=""}'>
+                <input class="layui-input think-bg-gray" name="images" placeholder="请上传文章封面" readonly required value='{$vo.images|default=""}'>
                 <a class="layui-icon layui-icon-upload input-right-icon" data-file data-field="cover" data-type="gif,png,jpg,jpeg"></a>
             </div>
         </div>
@@ -49,7 +36,7 @@
 </form>
 
 <script>
-    $('input[name="cover"]').uploadOneImage();
+    $('input[name="images"]').uploadMultipleImage();
     require(['ckeditor'], function () {
         window.createEditor('[name=content]', {height: 350})
     });

+ 30 - 0
app/admin/view/xw/form_category.html

@@ -0,0 +1,30 @@
+{extend name="main"}
+
+{block name='content'}
+<form action="{:sysuri()}" class="layui-card layui-form" data-auto="true" method="post">
+    <div class="layui-card-body">
+
+        <label class="layui-form-item relative block">
+            <span class="help-label"><b>分类标题</b>Title</span>
+            <input class="layui-input" name="name" placeholder="请输入分类名称" required value='{$vo.name|default=""}'>
+        </label>
+
+        <div class="layui-form-item label-required-prev">
+            <span class="help-label"><b>分类排序</b></span>
+            <input type="number" class="layui-input" name="sort" placeholder="请输入分类排序" required value='{$vo.sort|default="0"}'>
+        </div>
+
+        <div class="hr-line-dashed"></div>
+        {notempty name='vo.id'}<input name='id' type='hidden' value='{$vo.id}'>{/notempty}
+
+        <div class="layui-form-item text-center">
+            <button class="layui-btn" type="submit">保存数据</button>
+            <button class="layui-btn layui-btn-danger" data-close type='button'>取消编辑</button>
+        </div>
+    </div>
+
+</form>
+
+<script>
+</script>
+{/block}

+ 5 - 9
app/admin/view/xw/index.html

@@ -1,14 +1,13 @@
-{extend name='../../admin/view/table'}
+{extend name='table'}
 
 {block name="button"}
+{if auth("add")}
+<button data-open='{:url("add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加新闻</button>
+{/if}
 
 <!--{if auth("remove")}-->
 <button data-action='{:url("remove")}' data-table-id="NewsTable" data-rule="id#{id}" data-confirm="确定要批量删除新闻吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除</button>
 <!--{/if}-->
-
-<!--{if auth("news.mark/index")}-->
-<button class='layui-btn layui-btn-sm layui-btn-primary' data-modal='{:url("news.mark/index")}' data-title="标签管理" data-width="920px">标签管理</button>
-<!--{/if}-->
 {/block}
 
 {block name="content"}
@@ -19,9 +18,6 @@
         {else}
         <li data-open="{:url('index')}?type={$k}">{$v}</li>
         {/if}{/foreach}
-        {if auth("add")}
-        <li class="pull-right"><button data-open='{:url("add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加新闻</button></li>
-        {/if}
     </ul>
     <div class="layui-tab-content">
         {include file='xw/index_search'}
@@ -36,7 +32,7 @@
         // 初始化表格组件
         $('#NewsTable').layTable({
             even: true, height: 'full',
-            sort: {field: 'sort desc,code', type: 'desc'},
+            sort: {field: 'sort desc', type: 'desc'},
             where: {type: '{$type|default="index"}'},
             cols: [[
                 {checkbox: true, fixed: true},

+ 9 - 0
app/data/model/DataXw.php

@@ -0,0 +1,9 @@
+<?php
+
+namespace app\data\model;
+
+use think\admin\Model;
+
+class DataXw extends Model
+{
+}

+ 16 - 0
app/data/model/DataXwCategory.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace app\data\model;
+
+use think\admin\Model;
+
+class DataXwCategory extends Model
+{
+    public static function onAfterDelete(self $model): void
+    {
+        $model->xw()->delete();
+    }
+    public function xw(){
+        return $this->hasMany(DataXw::class,'category_id');
+    }
+}