vali 6 lat temu
rodzic
commit
812814d28f

+ 101 - 30
application/admin/controller/Kfnotice.php

@@ -4,10 +4,12 @@
  * Date: 2017/10/23 13:33
  * Email: 1902822973@qq.com
  */
+
 namespace app\admin\controller;
 
 use app\admin\model\Servicenotice as ServicenoticeModel;
 use app\admin\model\Users as Usersmodel;
+use app\admin\model\Groups as GroupsModel;
 
 class Kfnotice extends Base
 {
@@ -15,81 +17,149 @@ class Kfnotice extends Base
     public function index()
     {
 
-        if(request()->isAjax()){
+        if (request()->isAjax()) {
 
             $param = input('param.');
-
             $limit = $param['pageSize'];
             $offset = ($param['pageNumber'] - 1) * $limit;
 
+
             $where = [];
+            $bibao = false;
             if (!empty($param['searchText'])) {
-                $where['atext'] = ['like', '%' . $param['searchText'] . '%'];
+                $arr = explode("|", $param['searchText']);
+                if (count($arr) == 5) {
+                    list($timerang, $sendtype, $groupid, $txttype, $txttext) = $arr;
+                    if (!empty($timerang)) {
+                        list($tbegin, $tend) = explode(",", $timerang);
+                         $bibao = true;
+                         $biaaodata =  [$tbegin, $tend.' 23:59:59'];
+                    }
+
+                    if ($sendtype) {
+                        $where['sendtype'] = intval($sendtype);
+                    }
+
+                    if ($groupid) {
+                        $gm = (new GroupsModel())->with('users')->where(['id' => $groupid])->find();
+                        $uids = [0];
+                        if ($gm && count($gm->users)) {
+                            foreach ($gm->users as $u) {
+                                $uids[] = $u->id;
+                            }
+                        }
+                        $where['uid'] = ['IN', $uids];
+                    }
+
+
+                    if (!empty($txttext)) {
+                        if ($txttype == 1) {
+                            $where['title'] = ['like', '%' . $txttext . '%'];
+                        } else {
+                            $where['atext'] = ['like', '%' . $txttext . '%'];
+                        }
+                    }
+
+                }
             }
 
             $model = new ServicenoticeModel();
-            $result = $model->where($where)->limit($offset, $limit)->order('id','desc')->select();
+            if (!$bibao){
+                $result = $model->where($where)->limit($offset, $limit)->order('id', 'desc')->select();
+            }else{
+                $result = $model->where($where)->where(function($query)use ($biaaodata){ $query->where(['sendtime'=>['>=',$biaaodata['0']]])->where(['sendtime'=>['<=',$biaaodata['1']]]);  })->limit($offset, $limit)->order('id', 'desc')->select();
+            }
 
-            foreach($result as $key=>$vo){
+            foreach ($result as $key => $vo) {
                 $vo->readtime = empty($vo->readtime) ? '' : date('Y-m-d H:i:s', $vo->readtime);
                 $vo->uid = $vo->kfuser->user_name;
-                $result[$key] = array_merge($vo->toArray(),['operate'=>$this->makeBtn($vo->id)]) ;
+                unset($vo->kfuser);
+                $vo->sendtype = $vo->sendtype == 1 ? '即时发送' : '预约发送';
+                $result[$key] = array_merge($vo->toArray(), ['operate' => $this->makeBtn($vo->id)]);
+            }
+
+            if (!$bibao){
+                $return['total'] = db('servicenotice')->where($where)->count();  //总数据
+            }else{
+                $return['total'] = $model->where($where)->where(function($query)use ($biaaodata){ $query->where(['sendtime'=>['>=',$biaaodata['0']]])->where(['sendtime'=>['<=',$biaaodata['1']]]);  })->count();
             }
-            $return['total'] = db('servicenotice')->where($where)->count();  //总数据
+
             $return['rows'] = $result;
 
             return json($return);
 
         }
 
+        $goups = (new GroupsModel)->where(['status' => 1])->select();
+        $this->assign('groups', $goups);
+
         return $this->fetch();
     }
 
     // 添加留言
     public function add()
     {
-        if(request()->isPost()){
+        if (request()->isPost()) {
 
             $atext = input('post.atext');
-            $uid = intval(input('post.uid',0));
+            $title = input('post.title', 0);
+            $group = intval(input('post.groupid', 0));
+            $uid = intval(input('post.uid', 0));
 
-            if (empty($atext)){
-                return json(['code' => -1, 'data' => '', 'msg' => '内容不能为空']);
+            if (empty($atext) || empty($title)) {
+                return json(['code' => -1, 'data' => '', 'msg' => '标题和内容不能为空']);
             }
 
-            if ($uid){
+            $sendtime = input('post.sendtime');
+            if (empty($sendtime)) {
+                $sendtime = date("Y-m-d H:i:s", time() + 10);
+            }
+            $sendtype = (strtotime($sendtime) >= (time() + 60)) ? 2 : 1;
+            if (strtotime($sendtime) < time()) {
+                return json(['code' => -1, 'data' => '', 'msg' => '时间不能小于当前时间!']);
+            }
+
+
+            if ($uid) {
                 $arr = [
-                    'uid'=>$uid,
-                    'atext'=>$atext
+                    'uid' => $uid,
+                    'title' => $title,
+                    'atext' => $atext,
+                    'sendtime' => $sendtime,
+                    'sendtype' => $sendtype,
                 ];
                 $datas[] = $arr;
-            }else{
-                $Users = (new Usersmodel())->where(['status'=>1])->select();
-                if (!$Users){
+            } else {
+                $where = $group ? ['status' => 1, 'group_id' => $group] : ['status' => 1];
+                $Users = (new Usersmodel())->where($where)->select();
+
+                if (!$Users) {
                     return json(['code' => -2, 'data' => '', 'msg' => '没有可用客服']);
                 }
 
-                $datas = [] ;
-                foreach ($Users as $val){
+                $datas = [];
+                foreach ($Users as $val) {
                     $arr = [
-                        'uid'=>$val->id,
-                        'atext'=>$atext
+                        'uid' => $val->id,
+                        'title' => $title,
+                        'atext' => $atext,
+                        'sendtime' => $sendtime,
+                        'sendtype' => $sendtype,
                     ];
                     $datas[] = $arr;
                 }
             }
 
-            try{
+            try {
                 db('servicenotice')->insertAll($datas);
-            }catch(\Exception $e){
+            } catch (\Exception $e) {
                 return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
             }
             return json(['code' => 1, 'data' => '', 'msg' => '添加公告成功']);
         }
 
-        $this->assign([
-            'status' => config('kf_status')
-        ]);
+        $goups = (new GroupsModel)->where(['status' => 1])->select();
+        $this->assign('groups', $goups);
 
         return $this->fetch();
     }
@@ -98,13 +168,13 @@ class Kfnotice extends Base
     // 删除留言
     public function del()
     {
-        if(request()->isAjax()){
+        if (request()->isAjax()) {
             $id = input('param.id/d');
             //return $id;
 
-            try{
+            try {
                 db('servicenotice')->where('id', $id)->delete();
-            }catch(\Exception $e){
+            } catch (\Exception $e) {
                 return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
             }
 
@@ -116,7 +186,8 @@ class Kfnotice extends Base
     // 生成按钮
     private function makeBtn($id)
     {
-        $operate = '<a href="javascript:Del(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
+        $operate = '<a href="javascript:View(' . $id . ')"><button type="button" class="btn btn-info btn-sm">详细内容 </button></a>';
+        $operate .= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:Del(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
         $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
 
         return $operate;

+ 4 - 1
application/admin/model/Groups.php

@@ -1,5 +1,5 @@
 <?php
-namespace app\index\model;
+namespace app\admin\model;
 
 use think\Model;
 
@@ -29,5 +29,8 @@ class Groups extends Model
 
     }//end select()
 
+    public function  users(){
+        return  $this->hasMany('Users','group_id','id');
+    }
 
 }

+ 5 - 0
application/admin/model/Users.php

@@ -3,6 +3,7 @@ namespace app\admin\model;
 
 use think\Model;
 
+
 /**
  * 分组模型
  */
@@ -16,4 +17,8 @@ class Users extends Model
         }
     }
 
+    public function  groupinfo(){
+        return  $this->belongsTo('Groups','group_id','id');
+    }
+
 }

+ 68 - 27
application/admin/view/kfnotice/add.html

@@ -20,26 +20,56 @@
                     <h5>添加公告</h5>
                 </div>
                 <div class="ibox-content">
-                    <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('kfnotice/add')}">
+                    <form class="form-horizontal m-t layui-form" id="commentForm" method="post"
+                          action="{:url('kfnotice/add')}">
 
-                        <div class="form-group">
-                            <label class="col-sm-3 control-label">内容:</label>
-                            <div class="input-group col-sm-4">
-                                <textarea name="atext" id="atext" required="true" placeholder="请输入内容" class="layui-textarea"></textarea>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">标题</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="title" lay-verify="required" lay-reqtext="用户名是必填项,岂能为空?"
+                                       placeholder="请输入" autocomplete="off" class="layui-input">
                             </div>
                         </div>
-                        <div class="form-group">
-                            <div class="col-sm-4 col-sm-offset-6">
-                                <button class="btn btn-primary" type="submit">提交</button>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">分组</label>
+                            <div class="layui-input-block">
+                                <select name="groupid" lay-verify="required">
+                                    <option value="0">全部分组</option>
+                                    {volist name="groups" id="vo"}
+                                    <option value="{$vo.id}">{$vo.name}</option>
+                                    {/volist}
+                                </select>
                             </div>
                         </div>
-                    </form>
+
+                        <div class="layui-form-item">
+                                <label class="layui-form-label">时间</label>
+                                <div class="layui-input-block">
+                                    <input type="text" class="layui-input" name="sendtime" id="sendtime" placeholder="">
+                                </div>
+                        </div>
+
+
+                        <label class="layui-form-label">内容</label>
+                        <div class="layui-input-block">
+                            <textarea name="atext" placeholder="请输入内容" lay-verify="required"
+                                      class="layui-textarea"></textarea>
+                        </div>
                 </div>
-            </div>
 
+                <div class="form-group">
+                    <div class="col-sm-4 col-sm-offset-6">
+                        <button class="btn btn-primary" type="submit">提交</button>
+                    </div>
+                </div>
+                </form>
+            </div>
         </div>
+
     </div>
 </div>
+</div>
 <script src="__JS__/jquery.min.js?v=2.1.4"></script>
 <script src="__JS__/bootstrap.min.js?v=3.3.6"></script>
 <script src="__JS__/content.min.js?v=1.0.0"></script>
@@ -50,40 +80,41 @@
 <script src="__JS__/jquery.form.js"></script>
 <script type="text/javascript">
 
-    layui.use(['form', 'upload'], function(){
+    layui.use(['form', 'upload'], function () {
         var form = layui.form;
     });
 
     var index = '';
-    function showStart(){
+
+    function showStart() {
         index = layer.load(0, {shade: false});
         return true;
     }
 
-    function showSuccess(res){
+    function showSuccess(res) {
 
-        layer.ready(function(){
+        layer.ready(function () {
             layer.close(index);
-            if(1 == res.code){
-               layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
-                   window.location.href = res.data;
-               });
-            }else if(111 == res.code){
+            if (1 == res.code) {
+                layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function () {
+                    window.location.href = res.data;
+                });
+            } else if (111 == res.code) {
                 window.location.reload();
-            }else{
+            } else {
                 layer.msg(res.msg, {anim: 6});
             }
         });
     }
 
-    $(document).ready(function(){
+    $(document).ready(function () {
         // 添加管理员
         var options = {
-            beforeSubmit:showStart,
-            success:showSuccess
+            beforeSubmit: showStart,
+            success: showSuccess
         };
 
-        $('#commentForm').submit(function(){
+        $('#commentForm').submit(function () {
             $(this).ajaxSubmit(options);
             return false;
         });
@@ -91,20 +122,30 @@
 
     // 表单验证
     $.validator.setDefaults({
-        highlight: function(e) {
+        highlight: function (e) {
             $(e).closest(".form-group").removeClass("has-success").addClass("has-error")
         },
-        success: function(e) {
+        success: function (e) {
             e.closest(".form-group").removeClass("has-error").addClass("has-success")
         },
         errorElement: "span",
-        errorPlacement: function(e, r) {
+        errorPlacement: function (e, r) {
             e.appendTo(r.is(":radio") || r.is(":checkbox") ? r.parent().parent().parent() : r.parent())
         },
         errorClass: "help-block m-b-none",
         validClass: "help-block m-b-none"
     });
 
+    layui.use('laydate', function() {
+        var laydate = layui.laydate;
+        //日期时间选择器
+        laydate.render({
+            elem: '#sendtime'
+            ,type: 'datetime'
+        });
+    });
+
+
 </script>
 </body>
 </html>

+ 101 - 18
application/admin/view/kfnotice/index.html

@@ -10,26 +10,69 @@
     <link href="__CSS__/plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet">
     <link href="__CSS__/animate.min.css" rel="stylesheet">
     <link href="__CSS__/style.min.css?v=4.1.0" rel="stylesheet">
+    <link href="__JS__/layui/css/layui.css" rel="stylesheet">
 </head>
 <body class="gray-bg">
 <div class="wrapper wrapper-content animated fadeInRight">
     <!-- Panel Other -->
     <div class="ibox float-e-margins">
         <div class="ibox-title">
-            <h5>管理员列表</h5>
+            <h5>公告列表</h5>
         </div>
         <div class="ibox-content">
             <!--搜索框开始-->
-            <form id='commentForm' role="form" method="post" class="form-inline pull-right">
+            <form id='commentForm' role="form" method="post" class="form-inline">
                 <div class="content clearfix m-b">
                     <div class="form-group">
-                        <label>模糊搜索内容:</label>
-                        <input type="text" class="form-control" id="username" name="user_name">
+                        <div class="layui-input-inline">
+                            <input type="text" class="layui-input" name="daterang" id="daterang" placeholder="发送时间段"
+                                   readonly="">
+                        </div>
                     </div>
+
+                    <div class="form-group">
+                        <div class="layui-input-inline">
+                            <select name="sendtype" id="sendtype" class="form-control">
+                                <option value="0" selected>全部状态</option>
+                                <option value="1">已发送</option>
+                                <option value="2">延迟发送</option>
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <div class="layui-input-inline">
+                            <select name="groupid" id="groupid" class="form-control">
+                                <option value="0" selected>所有分组</option>
+                                {volist name="groups" id="vo"}
+                                <option value="{$vo.id}">{$vo.name}</option>
+                                {/volist}
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <div class="layui-input-inline">
+                            <select name="txttype" id="txttype" class="form-control">
+                                <option value="1">标题</option>
+                                <option value="2">内容</option>
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <input type="text" class="form-control" id="txttext" name="txttext" placeholder="文本">
+                    </div>
+
                     <div class="form-group">
-                        <button class="btn btn-primary" type="button" style="margin-top:5px" id="search"><strong>搜 索</strong>
+                        <button class="btn btn-primary" type="button" id="search"><strong>搜 索</strong>
                         </button>
                     </div>
+
+                    <div class="form-group">
+                        <a class="btn btn-info" href="{:url('kfnotice/add')}" style="margin-left: 20px;" role="button">新建公告</a>
+                    </div>
+
                 </div>
             </form>
             <!--搜索框结束-->
@@ -37,11 +80,12 @@
                 <div class="example">
                     <table id="cusTable">
                         <thead>
-                        <th data-field="id">ID</th>
-                        <th data-field="uid">uid</th>
-                        <th data-field="atext">内容</th>
-                        <th data-field="ctime">发布时间</th>
-                        <th data-field="readtime">读时间</th>
+                        <th data-field="title">标题</th>
+                        <th data-field="uid">收件人</th>
+                        <th data-field="sendtype">发送状态</th>
+                        <th data-field="ctime">创建时间</th>
+                        <th data-field="sendtime">发送时间</th>
+                        <th data-field="readtime">读取时间</th>
                         <th data-field="operate">操作</th>
                         </thead>
                     </table>
@@ -58,41 +102,55 @@
 <script src="__JS__/plugins/bootstrap-table/bootstrap-table.min.js"></script>
 <script src="__JS__/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
 <script src="__JS__/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
-<script src="__JS__/plugins/layer/layer.min.js"></script>
+<script src="__JS__/layui/layui.all.js"></script>
 <script type="text/javascript">
+    var ReturnRes;
+
     function initTable() {
         //先销毁表格
         $('#cusTable').bootstrapTable('destroy');
+
         //初始化表格,动态从服务器加载数据
+        function getSearch() {
+            var Searchtxt = '';
+            Searchtxt = $("#daterang").val();
+            Searchtxt += "|" + $("#sendtype").val();
+            Searchtxt += "|" + $("#groupid").val();
+            Searchtxt += "|" + $("#txttype").val();
+            Searchtxt += "|" + $("#txttext").val();
+            return Searchtxt;
+        }
+
         $("#cusTable").bootstrapTable({
             method: "get",  //使用get请求到服务器获取数据
             url: "{:url('kfnotice/index')}", //获取数据的地址
             striped: true,  //表格显示条纹
             pagination: true, //启动分页
             pageSize: 10,  //每页显示的记录数
-            pageNumber:1, //当前第几页
+            pageNumber: 1, //当前第几页
             pageList: [5, 10, 15, 20, 25],  //记录数可选列表
             sidePagination: "server", //表示服务端请求
             paginationFirstText: "首页",
             paginationPreText: "上一页",
             paginationNextText: "下一页",
             paginationLastText: "尾页",
-            queryParamsType : "undefined",
+            queryParamsType: "undefined",
             queryParams: function queryParams(params) {   //设置查询参数
                 var param = {
                     pageNumber: params.pageNumber,
                     pageSize: params.pageSize,
-                    searchText:$('#username').val()
+                    searchText: getSearch()
                 };
                 return param;
             },
-            onLoadSuccess: function(res){  //加载成功时执行
-                if(111 == res.code){
+            onLoadSuccess: function (res) {  //加载成功时执行
+                ReturnRes = res.rows;
+                if (111 == res.code) {
                     window.location.reload();
                 }
-                layer.msg("加载成功", {time : 1000});
+                layer.msg("加载成功", {time: 1000});
             },
-            onLoadError: function(){  //加载失败时执行
+            onLoadError: function () {  //加载失败时执行
                 layer.msg("加载数据失败");
             }
         });
@@ -124,6 +182,31 @@
             layer.close(index);
         })
     }
+
+    function View(id) {
+        layui.use('layer', function () {
+            var layer = layui.layer;
+            $(ReturnRes).each(function (i) {
+                var now = ReturnRes[i];
+                if (id == now.id) {
+                    layer.msg(now.atext);
+                    return false;
+                }
+            });
+
+        });
+    }
+
+    layui.use('laydate', function () {
+        var laydate = layui.laydate;
+        laydate.render({
+            elem: '#daterang'
+            , range: ','
+        });
+
+    });
+
+
 </script>
 </body>
 </html>