Jonlin 6 éve
szülő
commit
06dd8ba5e0

+ 110 - 5
application/admin/controller/System.php

@@ -69,6 +69,9 @@ class System extends Base
             $start = input('param.start');
             $end = input('param.end');
 
+            $user_id = input('param.user_id');
+            $group_id = input('param.group_id');
+
             $temp = db('service_log');
             $countTmp = db('service_log');
             if(!empty($param['searchText'])){
@@ -77,13 +80,51 @@ class System extends Base
                 $countTmp = $countTmp->where('kf_id', $user['id']);
             }
 
+            //日期
             if(!empty($start) && !empty($end) && $start <= $end){
                 $temp = $temp->whereBetween('start_time', [strtotime($start), strtotime($end . ' 23:59:59')]);
                 $countTmp = $countTmp->whereBetween('start_time', [strtotime($start), strtotime($end . ' 23:59:59')]);
             }
+            //结束时间为空
+            if(!empty($start) && empty($end)){
+                $temp = $temp->where('start_time','>',strtotime($start));
+                $countTmp = $temp->where('start_time','>',strtotime($start));
+            }
+            //开始时间为空
+            if(empty($start) && !empty($end)){
+                $temp = $temp->where('start_time','<',strtotime($end . ' 23:59:59'));
+                $countTmp = $temp->where('start_time','<',strtotime($end . ' 23:59:59'));
+            }
+            //开始时间/结束时间都为空(默认查七天)
+            if(empty($start) && empty($end)){
+                $temp = $temp->where('start_time','<',time())->where('start_time','>',time()-604800);
+                $countTmp = $temp->where('start_time','<',time())->where('start_time','>',time()-604800);
+            }
+
+            //客服
+            if($user_id != 0){
+                $temp = $temp->where('kf_id', $user_id);
+                $countTmp = $countTmp->where('kf_id', $user_id);
+            }
+
+            //客服组
+            if($group_id != 0){
+                $temp = $temp->where('group_id', $group_id);
+                $countTmp = $temp->where('group_id', $group_id);
+            }
 
             $result = $temp->limit($offset, $limit)->order('start_time', 'desc')->select();
+
+            //所有客服
+            $users = db('users')->select();
+            //满意度
+            $evaluate = db('evaluate')->select();
             foreach($result as $key=>$vo){
+                if($result[$key]['intime'] != 0){
+                    $result[$key]['intime'] = date('Y-m-d H:i:s', $vo['intime']);
+                }else{
+                    $result[$key]['intime'] = '-';
+                }
                 if($result[$key]['start_time'] != 0){
                     $result[$key]['start_time'] = date('Y-m-d H:i:s', $vo['start_time']);
                 }else{
@@ -95,12 +136,23 @@ class System extends Base
                     $result[$key]['end_time'] = '-';
                 }
                 //客服名称
-                $kefu = db('users')->where('id', $result[$key]['kf_id'])->find();
-                $result[$key]['kefu_name'] = $kefu['user_name'];
+                for($i=0;$i<count($users);$i++){
+                    if($result[$key]['kf_id'] == $users[$i]['id']){
+                        $result[$key]['kefu_name'] = $users[$i]['user_name'];
+                    }
+                }
 
                 //满意度
-                $evaluate = db('evaluate')->where('evaluate_id', $result[$key]['evaluate_id'])->find();
-                $result[$key]['evaluate_name'] = $evaluate['evaluate_name'];
+                for($j=0;$j<count($evaluate);$j++){
+                    if($result[$key]['evaluate_id'] == $evaluate[$j]['evaluate_id']){
+                        $result[$key]['evaluate_name'] = $evaluate[$j]['evaluate_name'];
+                    }
+                }
+
+                // 生成操作按钮
+                if(0 != $vo['servicelog_id']){
+                    $result[$key]['operate'] = $this->makeBtn($vo['servicelog_id']);
+                }
             }
 
             $return['total'] = $countTmp->count();  //总数据
@@ -109,12 +161,65 @@ class System extends Base
             return json($return);
 
         }
+        //所有客服
         $users = db('users')->select();
+        if(!empty($users)){
+            $option = '<option value="0">全部客服</option>';
+            for($i=0;$i<count($users);$i++){
+                $option = $option.'<option value="'.$users[$i]['id'].'">'.$users[$i]['user_name'].'</option>';
+            }
+            $useroption = '<select name="user_id" id="user_id" class="form-control">'.$option.'</select>';
+        }
+        //所有客服组
+        $groups = db('groups')->select();
+        if(!empty($groups)){
+            $option = '<option value="0">全部客服组</option>';
+            for($j=0;$j<count($groups);$j++){
+                $option = $option.'<option value="'.$groups[$j]['id'].'">'.$groups[$j]['name'].'</option>';
+            }
+            $groupoption = '<select name="group_id" id="group_id" class="form-control">'.$option.'</select>';
+        }
 
         $this->assign([
-            'users' => $users
+            'useroption' => $useroption,
+            'groupoption' => $groupoption
         ]);
 
         return $this->fetch();
     }
+
+    // 历史会话记录详情
+    public function detail($id)
+    {
+        $chat = db('chat_log')->where('servicelog_id',$id)->order('time_line')->select();
+        $html = '';
+        for($i=0;$i<count($chat);$i++){
+            $chat[$i]['time_line'] = date('H:i',$chat[$i]['time_line']);
+            if(!empty(strstr($chat[$i]['to_id'], 'KF'))){
+                $html = $html . '<div style="margin-top:15px;width: 30%;"><div>'.$chat[$i]['from_name'].'&nbsp&nbsp&nbsp'.$chat[$i]['time_line'].'</div>';
+                $html = $html . '<p style="margin-top:5px;" class="form-content">'.$chat[$i]['content'].'</p></div>';
+            }else{
+                $html = $html . '<div style="margin-top:15px;width: 30%;margin-left:70%;text-align:right;"><div>'.$chat[$i]['from_name'].'&nbsp&nbsp&nbsp'.$chat[$i]['time_line'].'</div>';
+                $html = $html . '<p style="margin-top:5px;" class="form-content">'.$chat[$i]['content'].'</p></div>';
+            }
+
+        }
+        $servicelog = db('service_log')->where('servicelog_id',$id)->find();
+        $evaluate = db('evaluate')->where('evaluate_id',$servicelog['evaluate_id'])->find();
+        $evaluate = $evaluate['evaluate_name'];
+        $this->assign([
+            'html' => $html,
+            'evaluate' => $evaluate
+        ]);
+        return $this->fetch();
+    }
+
+    // 生成按钮
+    private function makeBtn($id)
+    {
+        $operate = '<a href="' . url('system/detail', ['id' => $id]) . '">';
+        $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 详情</button></a> ';
+
+        return $operate;
+    }
 }

+ 147 - 0
application/admin/view/system/detail.html

@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>会话详情</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link href="__CSS__/bootstrap.min.css?v=3.3.6" rel="stylesheet">
+    <link href="__CSS__/font-awesome.min.css?v=4.4.0" rel="stylesheet">
+    <link href="__CSS__/animate.min.css" rel="stylesheet">
+    <link href="__JS__/layui/css/layui.css" rel="stylesheet">
+    <link href="__CSS__/style.min.css?v=4.1.0" rel="stylesheet">
+</head>
+<style>
+    .form-content{
+        border: 1px solid;
+        line-height: 30px;
+        border-radius: 5px;
+        word-wrap:break-word;
+        word-break:normal;
+        background-color: white;
+    }
+    div.float-e-margins{
+        float: left;
+        position:absolute;
+    }
+    .foot{
+        margin: 20px ;
+    }
+    .foot>li{
+        float: left;
+        margin-left: 20px;
+    }
+</style>
+<body class="gray-bg">
+<div class="wrapper wrapper-content animated fadeInRight">
+    <div class="row">
+        <div class="col-sm-8" style="position: relative;">
+            <div class="ibox float-e-margins" style="width: 69%;">
+                <div class="ibox-title">
+                    <h5>会话详情</h5>
+                </div>
+                <div id="boxId" class="ibox-content" style="background-color: #eee;height: 300px;overflow:auto;">
+                    <div style="">{$html}</div>
+                </div>
+                <div style="background-color: #eee;height: 150px;margin-top: -10px;">
+                    <hr style="width: 86%;margin-left:7%;border-top:1px solid dimgrey;">
+                    <ul class="foot">
+                        <li>评价</li>
+                        <li style="margin-left: 40px;">{$evaluate}</li>
+                        <li style="margin-left: 50px;">
+                            <ul>
+                                <li>触犯警报</li>
+                                <li style="color: red;margin-top: 10px;">评价不满意1次 响应超时2次 会话超时1次</li>
+                                <li style="color: red;margin-top: 20px;">访客敏感词10次 客服敏感2次</li>
+                            </ul>
+                        </li>
+                    </ul>
+                </div>
+
+            </div>
+            <div class="ibox float-e-margins" style="width: 30%;margin-left: 70%">
+                <div class="ibox-title">
+                    <h5>个人信息</h5>
+                </div>
+                <div class="ibox-content" style="background-color: #eee;height: 450px;overflow:auto;">
+                    <div>
+
+
+                    </div>
+
+                </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>
+<script src="__JS__/plugins/validate/jquery.validate.min.js"></script>
+<script src="__JS__/plugins/validate/messages_zh.min.js"></script>
+<script src="__JS__/plugins/layer/layer.min.js"></script>
+<script src="__JS__/layui/layui.js"></script>
+<script src="__JS__/jquery.form.js"></script>
+<script type="text/javascript">
+    var boxElement=document.getElementById('boxId');
+    boxElement.scrollTop=boxElement.scrollHeight-boxElement.clientHeight;
+
+    layui.use(['form', 'upload'], function(){
+        var form = layui.form;
+    });
+
+    var index = '';
+    function showStart(){
+        index = layer.load(0, {shade: false});
+        return true;
+    }
+
+    function showSuccess(res){
+
+        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){
+                window.location.reload();
+            }else{
+                layer.msg(res.msg, {anim: 6});
+            }
+        });
+    }
+
+    $(document).ready(function(){
+        // 添加管理员
+        var options = {
+            beforeSubmit:showStart,
+            success:showSuccess
+        };
+
+        $('#commentForm').submit(function(){
+            $(this).ajaxSubmit(options);
+            return false;
+        });
+    });
+
+    // 表单验证
+    $.validator.setDefaults({
+        highlight: function(e) {
+            $(e).closest(".form-group").removeClass("has-success").addClass("has-error")
+        },
+        success: function(e) {
+            e.closest(".form-group").removeClass("has-error").addClass("has-success")
+        },
+        errorElement: "span",
+        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"
+    });
+
+</script>
+</body>
+</html>

+ 27 - 27
application/admin/view/system/wordslog.html

@@ -24,21 +24,15 @@
             <form id='commentForm' role="form" method="post" class="form-inline pull-right">
                 <div class="content clearfix m-b">
                     <div class="form-group">
-                        <select name="user" id="" class="form-control">
-                            @if($users)
-                            <option value="全部客服">全部客服</option>
-                            @foreach($users as $k=>$v)
-                            <option value="">{$v['user_name']}</option>
-                            @endforeach
-                            #endif
-                            <option value="客服小白">客服小白</option>
-                            <option value="客服小美">客服小美</option>
-                        </select>
+                        {$useroption}
+                    </div>
+                    <div class="form-group">
+                        {$groupoption}
                     </div>
                     <div class="form-group">
                         <label>聊天日期:</label>
-                        <input type="text" class="form-control" id="start" placeholder="开始日期"> --
-                        <input type="text" class="form-control" id="end" placeholder="结束日期">
+                        <input type="text" class="form-control" id="start" placeholder="开始日期" style="width: 100px;"> --
+                        <input type="text" class="form-control" id="end" placeholder="结束日期" style="width: 100px;">
                     </div>
                     &nbsp;&nbsp;
                     <div class="form-group">
@@ -57,11 +51,14 @@
                 <div class="example">
                     <table id="cusTable">
                         <thead>
+                        <th data-field="servicelog_id">工单id</th>
+                        <th data-field="intime">访客进线时间</th>
                         <th data-field="kefu_name">接待客服</th>
-                        <th data-field="user_name">用户名称</th>
+                        <th data-field="user_name">访客名称</th>
                         <th data-field="start_time">会话开始时间</th>
                         <th data-field="end_time">会话结束时间</th>
                         <th data-field="evaluate_name">满意度</th>
+                        <th data-field="operate">操作</th>
                         </thead>
                     </table>
                 </div>
@@ -104,8 +101,11 @@
                     pageSize: params.pageSize,
                     searchText:$('#username').val(),
                     start:$('#start').val(),
-                    end: $('#end').val()
+                    end: $('#end').val(),
+                    user_id: $('#user_id').val(),
+                    group_id: $('#group_id').val()
                 };
+                console.log(param);
                 return param;
             },
             onLoadSuccess: function(res){  //加载成功时执行
@@ -129,20 +129,20 @@
             var start = $('#start').val();
             var end = $('#end').val();
 
-            if('' == start){
-                layer.tips("输入开始时间", '#start');
-                return false;
-            }
-
-            if('' == end){
-                layer.tips("输入结束时间", '#end');
-                return false;
-            }
+//            if('' == start){
+//                layer.tips("输入开始时间", '#start');
+//                return false;
+//            }
+//
+//            if('' == end){
+//                layer.tips("输入结束时间", '#end');
+//                return false;
+//            }
 
-            if(start > end){
-                layer.msg('开始时间不能大于结束时间');
-                return false;
-            }
+//            if(start > end){
+//                layer.msg('开始时间不能大于结束时间');
+//                return false;
+//            }
 
             initTable();
         });