Jonlin 6 gadi atpakaļ
vecāks
revīzija
f0a00b8517

+ 137 - 43
application/admin/controller/Report.php

@@ -4,6 +4,10 @@ namespace app\admin\controller;
 
 
 use  app\admin\model\Countmidtable;
+use app\admin\model\Users as Usersmodel;
+use app\admin\model\Groups as GroupsModel;
+use app\admin\model\Servicetimelog as ServicetimelogModel;
+use app\admin\model\Kfstatetimes as KfstatetimesModel;
 
 /**
  * 报表类
@@ -75,7 +79,7 @@ class Report extends Base
             ];
         }
 
-        $queueData =(new  Countmidtable())->getQueryDay($timeInterval['days_list']);
+        $queueData = (new  Countmidtable())->getQueryDay($timeInterval['days_list']);
 
 
         $this->assign([
@@ -97,6 +101,89 @@ class Report extends Base
     }//end index()
 
 
+    public function attendancereport()
+    {
+
+        $goups = (new GroupsModel)->where(['status' => 1])->select();
+
+        if (request()->isAjax()) {
+
+            $param = input('param.');
+            $limit = $param['pageSize'];
+            $offset = ($param['pageNumber'] - 1) * $limit;
+
+            $param = input('param.searchText');
+            if (empty($param)) {
+                $param = '0|0';
+            }
+            list($zone, $sgroup) = explode('|', $param);
+            if (empty($zone)) {
+                $zoneArray1 = [date("Y-m-d")];
+            } else {
+                $zonesarr = explode(',', $zone);
+                $dd = $this->Date_segmentation($zonesarr['0'], $zonesarr['1']);
+                $zoneArray1 = $dd['days_list'];
+            }
+            $zoneArray = array_map(function ($i) {
+                return "'$i'";
+            }, $zoneArray1);
+            $uidarr = (new Usersmodel())->getUidsBygid(intval($sgroup), 1, 1);
+
+            if (!$uidarr) {
+                return json(['rows' => [], 'total' => 0]);
+            }
+
+            $model1 = new ServicetimelogModel();
+            $model2 = new  KfstatetimesModel();
+            $ret1 = $model1->getDayData($zoneArray1, $uidarr['uids']);
+            $ret2 = $model2->getDayData($zoneArray1, $uidarr['uids']);
+            $retall = $this->reportDataFormat($ret1, $ret2, $uidarr['objs'], $zoneArray1, $limit, $offset);
+
+            return json($retall);
+        }
+
+        $this->assign('groups', $goups);
+        return $this->fetch();
+    }
+
+    function reportDataFormat($onoffdata, $timesdata, $uobjarr, $dataArray, $limit, $offset)
+    {
+        $allData = [];
+        $all_last = [];
+        foreach ($dataArray as $day) {
+            foreach ($uobjarr as $uid => $user) {
+                $kfuid = 'KF' . $uid;
+                if (isset($onoffdata[$day][$kfuid])) {
+                    $allData[$day][$kfuid] = ['of0' => $onoffdata[$day][$kfuid][0], 'of1' => $onoffdata[$day][$kfuid][1]];
+                } else {
+                    $allData[$day][$kfuid] = ['of0' => '', 'of1' => ''];
+                }
+
+                if (isset($timesdata[$day][$kfuid])) {
+                    $all_last[] = array_merge($timesdata[$day][$kfuid], $allData[$day][$kfuid], ['uname' => $uobjarr[$uid]->user_name, 'account' => $uobjarr[$uid]->user_account, 'day' => $day]);
+                } else {
+                    $all_last[] = array_merge(['0' => 0, '1' => 0, '2' => 0, '3' => 0, 'all' => 0, 's1p' => 0, 'sp2' => 0, 'sp3' => 0], $allData[$day][$kfuid], ['uname' => $uobjarr[$uid]->user_name, 'account' => $uobjarr[$uid]->user_account, 'day' => $day]);
+                }
+            }
+        }
+
+        $len = count($all_last);
+        $return = ['rows' => [], 'total' => $len];
+        if ($offset >= $len) {
+            return $return;
+        }
+        $begin = $offset;
+        $end = ($offset + $limit);
+        $end = ($end > $len) ? $len - 1 : $end;
+
+        for ($i = $begin; $i < $end; $i++) {
+            $return['rows'][] = $all_last[$i];
+        }
+
+        return $return;
+    }
+
+
     /**
      * 时间分割
      *
@@ -179,18 +266,22 @@ class Report extends Base
         );
     }
 
+<<<<<<< HEAD
+=======
+
+>>>>>>> 485c080af6c3f51a2504227cde48148b3e60876e
     // 工作报表
     public function workreport()
     {
-        if(request()->isAjax()){
+        if (request()->isAjax()) {
 
-            $param  = input('param.');
-            $limit  = $param['pageSize'];
+            $param = input('param.');
+            $limit = $param['pageSize'];
             $offset = ($param['pageNumber'] - 1) * $limit;
-            $where  = [];
+            $where = [];
             //用户名称
             if (empty($param['searchText']) === false) {
-                $where['user_account|user_name|user_job_number'] = array('like','%'.$param['searchText'].'%');
+                $where['user_account|user_name|user_job_number'] = array('like', '%' . $param['searchText'] . '%');
             }
             if (empty($param['start']) === false && empty($param['end']) === false && $param['start'] <= $param['end']) {
                 $start = strtotime($param['start']);
@@ -198,63 +289,63 @@ class Report extends Base
             }
             $result = db('users')->limit($offset, $limit)->where($where)->select();
 
-            foreach($result as $key=>$vo){
+            foreach ($result as $key => $vo) {
                 //客服工单数
-                $result[$key]['service_num'] = db('service_log')->whereBetween('start_time', [$start, $end])->where('kf_id',$vo['id'])->count();
+                $result[$key]['service_num'] = db('service_log')->whereBetween('start_time', [$start, $end])->where('kf_id', $vo['id'])->count();
                 //客服发出消息数
-                $result[$key]['send_words'] = db('chat_log')->whereBetween('time_line', [$start, $end])->where('from_id','KF'.$vo['id'])->count();
+                $result[$key]['send_words'] = db('chat_log')->whereBetween('time_line', [$start, $end])->where('from_id', 'KF' . $vo['id'])->count();
                 //接入转接量
-                $result[$key]['transfer_in'] = db('serviceturn_log')->whereBetween('ctime', [date('Y-m-d',$start), date('Y-m-d',$end).' 23:59:59'])->where('stype','IN')->where('uid',$vo['id'])->count();
+                $result[$key]['transfer_in'] = db('serviceturn_log')->whereBetween('ctime', [date('Y-m-d', $start), date('Y-m-d', $end) . ' 23:59:59'])->where('stype', 'IN')->where('uid', $vo['id'])->count();
                 //客服收到消息数
-                $result[$key]['receive_words'] = db('chat_log')->whereBetween('time_line', [$start, $end])->where('to_id','KF'.$vo['id'])->count();
+                $result[$key]['receive_words'] = db('chat_log')->whereBetween('time_line', [$start, $end])->where('to_id', 'KF' . $vo['id'])->count();
                 //客服回复工单数
-                $a = db('service_log a')->join('alarm b', 'a.servicelog_id=b.servicelog_id')->where('a.kf_id',$vo['id'])->whereBetween('a.start_time', [$start, $end])->where('b.alarm_respond',2)->count();
+                $a = db('service_log a')->join('alarm b', 'a.servicelog_id=b.servicelog_id')->where('a.kf_id', $vo['id'])->whereBetween('a.start_time', [$start, $end])->where('b.alarm_respond', 2)->count();
                 //回复率
-                if(!empty($result[$key]['service_num'])){
-                    $n = $a/$result[$key]['service_num']*100;
-                    $result[$key]['reply'] = round($n,2).'%';
+                if (!empty($result[$key]['service_num'])) {
+                    $n = $a / $result[$key]['service_num'] * 100;
+                    $result[$key]['reply'] = round($n, 2) . '%';
                 }
 
                 //答问比
-                if($result[$key]['receive_words'] != 0){
-                    $num = $result[$key]['send_words']/$result[$key]['receive_words']*100;
-                    $result[$key]['answer_problem'] = round($num,2).'%';
+                if ($result[$key]['receive_words'] != 0) {
+                    $num = $result[$key]['send_words'] / $result[$key]['receive_words'] * 100;
+                    $result[$key]['answer_problem'] = round($num, 2) . '%';
                 }
                 //平均会话时长
-                $result[$key]['conversation'] = round(db('service_log a')->join('alarm b', 'a.servicelog_id=b.servicelog_id')->whereBetween('a.start_time', [$start, $end])->where('a.kf_id',$vo['id'])->avg('b.alarm_cvtOvertime'));
-                if($result[$key]['conversation'] >= 60){
-                    $result[$key]['conversation'] = floor($result[$key]['conversation']/60).'分'.($result[$key]['conversation']%60).'秒';
-                }else{
-                    $result[$key]['conversation'] = $result[$key]['conversation'].'秒';
+                $result[$key]['conversation'] = round(db('service_log a')->join('alarm b', 'a.servicelog_id=b.servicelog_id')->whereBetween('a.start_time', [$start, $end])->where('a.kf_id', $vo['id'])->avg('b.alarm_cvtOvertime'));
+                if ($result[$key]['conversation'] >= 60) {
+                    $result[$key]['conversation'] = floor($result[$key]['conversation'] / 60) . '分' . ($result[$key]['conversation'] % 60) . '秒';
+                } else {
+                    $result[$key]['conversation'] = $result[$key]['conversation'] . '秒';
                 }
                 //平均响应时长
-                $result[$key]['response'] = round(db('service_log a')->join('alarm b', 'a.servicelog_id=b.servicelog_id')->whereBetween('a.start_time', [$start, $end])->where('a.kf_id',$vo['id'])->avg('b.alarm_corresponding'));
-                if($result[$key]['response'] >= 60){
-                    $result[$key]['response'] = floor($result[$key]['response']/60).'分'.($result[$key]['response']%60).'秒';
-                }else{
-                    $result[$key]['response'] = $result[$key]['response'].'秒';
+                $result[$key]['response'] = round(db('service_log a')->join('alarm b', 'a.servicelog_id=b.servicelog_id')->whereBetween('a.start_time', [$start, $end])->where('a.kf_id', $vo['id'])->avg('b.alarm_corresponding'));
+                if ($result[$key]['response'] >= 60) {
+                    $result[$key]['response'] = floor($result[$key]['response'] / 60) . '分' . ($result[$key]['response'] % 60) . '秒';
+                } else {
+                    $result[$key]['response'] = $result[$key]['response'] . '秒';
                 }
                 //已评价的工单数
-                $m = db('service_log')->whereBetween('start_time', [$start, $end])->where('kf_id',$vo['id'])->where('evaluate_id','<>',0)->count();
+                $m = db('service_log')->whereBetween('start_time', [$start, $end])->where('kf_id', $vo['id'])->where('evaluate_id', '<>', 0)->count();
                 //参评率
-                if($result[$key]['service_num'] != 0){
-                    $result[$key]['appraise'] = $m/$result[$key]['service_num']*100;
-                    $result[$key]['appraise'] = round($num,2).'%';
+                if ($result[$key]['service_num'] != 0) {
+                    $result[$key]['appraise'] = $m / $result[$key]['service_num'] * 100;
+                    $result[$key]['appraise'] = round($num, 2) . '%';
                 }
                 //满意评价
-                $result[$key]['pleased_num'] = db('service_log a')->join('evaluate b', 'a.evaluate_id=b.evaluate_id')->whereBetween('a.start_time', [$start, $end])->where('kf_id',$vo['id'])->where('evaluate_name','满意')->count();
+                $result[$key]['pleased_num'] = db('service_log a')->join('evaluate b', 'a.evaluate_id=b.evaluate_id')->whereBetween('a.start_time', [$start, $end])->where('kf_id', $vo['id'])->where('evaluate_name', '满意')->count();
                 //一般评价
-                $result[$key]['commonly'] = db('service_log a')->join('evaluate b', 'a.evaluate_id=b.evaluate_id')->whereBetween('a.start_time', [$start, $end])->where('kf_id',$vo['id'])->where('evaluate_name','一般')->count();
+                $result[$key]['commonly'] = db('service_log a')->join('evaluate b', 'a.evaluate_id=b.evaluate_id')->whereBetween('a.start_time', [$start, $end])->where('kf_id', $vo['id'])->where('evaluate_name', '一般')->count();
                 //不满意评价
-                $result[$key]['no_pleased'] = db('service_log a')->join('evaluate b', 'a.evaluate_id=b.evaluate_id')->whereBetween('a.start_time', [$start, $end])->where('kf_id',$vo['id'])->where('evaluate_name','不满意')->count();
+                $result[$key]['no_pleased'] = db('service_log a')->join('evaluate b', 'a.evaluate_id=b.evaluate_id')->whereBetween('a.start_time', [$start, $end])->where('kf_id', $vo['id'])->where('evaluate_name', '不满意')->count();
                 //相对满意度率
-                if($m != 0){
-                    $result[$key]['pleased'] = $result[$key]['pleased_num']/$m*100;
-                    $result[$key]['pleased'] = round($result[$key]['pleased'],2).'%';
+                if ($m != 0) {
+                    $result[$key]['pleased'] = $result[$key]['pleased_num'] / $m * 100;
+                    $result[$key]['pleased'] = round($result[$key]['pleased'], 2) . '%';
                 }
 
                 //留言处理量
-                $result[$key]['message'] = db('accountsmessage')->whereBetween('dealWith_time', [$start, $end])->where('user_id',$vo['id'])->count();
+                $result[$key]['message'] = db('accountsmessage')->whereBetween('dealWith_time', [$start, $end])->where('user_id', $vo['id'])->count();
 
 
                 // 生成操作按钮
@@ -269,12 +360,12 @@ class Report extends Base
         }
         //所有客服
         $users = db('users')->select();
-        if(!empty($users)){
+        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>';
+            for ($i = 0; $i < count($users); $i++) {
+                $option = $option . '<option value="' . $users[$i]['id'] . '">' . $users[$i]['user_name'] . '</option>';
             }
-            $useroption = '<select lay-verify="required" lay-filter="user_id">'.$option.'</select>';
+            $useroption = '<select lay-verify="required" lay-filter="user_id">' . $option . '</select>';
         }
 
         $this->assign([
@@ -283,6 +374,9 @@ class Report extends Base
 
         return $this->fetch();
     }
+<<<<<<< HEAD
 
+=======
+>>>>>>> 485c080af6c3f51a2504227cde48148b3e60876e
 
 }//end class

+ 70 - 0
application/admin/model/Kfstatetimes.php

@@ -0,0 +1,70 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+/**
+ * 客服状态改变时长模型
+ */
+class Kfstatetimes extends Model
+{
+    public function getDayData($dataArray, $uidArray = [])
+    {
+        $ret = $this->where(['sday' => ['IN', $dataArray]]);
+        if ($uidArray) {
+            $ret = $ret->where(['kfuid' => ['IN', $uidArray]]);
+        }
+        $ret = $ret->order(['kfuid' => 'asc'])->select();
+        if (!$ret) {
+            return false;
+        }
+
+        $return = $this->getOneUserData($ret);
+
+        return $return;
+    }
+
+    private function getOneUserData($array)
+    {
+        $return = [];
+        foreach ($array as $val) {
+            $return[$val->sday][$val->kfuid][$val->kstatus] = $val->stime;
+        }
+
+        foreach ($return as $sday => $sval) {
+            foreach ($sval as $kfuid => $tval) {
+
+                if (!isset($tval['0'])) {
+                    $return[$sday][$kfuid]['0'] = 0;
+                }
+
+                if (!isset($tval['1'])) {
+                    $return[$sday][$kfuid]['1'] = 0;
+                }
+                if (!isset($tval['2'])) {
+                    $return[$sday][$kfuid]['2'] = 0;
+                }
+                if (!isset($tval['3'])) {
+                    $return[$sday][$kfuid]['3'] = 0;
+                }
+
+                $return[$sday][$kfuid]['all'] = intval($return[$sday][$kfuid]['1']) + intval($return[$sday][$kfuid]['2']) + intval($return[$sday][$kfuid]['3']);
+
+                if ($return[$sday][$kfuid]['all'] > 0) {
+                    $return[$sday][$kfuid]['s1p'] = floatPointDigit($return[$sday][$kfuid]['1'] / $return[$sday][$kfuid]['all']);
+                    $return[$sday][$kfuid]['s2p'] = floatPointDigit($return[$sday][$kfuid]['2'] / $return[$sday][$kfuid]['all']);
+                    $return[$sday][$kfuid]['s3p'] = floatPointDigit($return[$sday][$kfuid]['3'] / $return[$sday][$kfuid]['all']);
+                } else {
+                    $return[$sday][$kfuid]['s1p'] = 0;
+                    $return[$sday][$kfuid]['s2p'] = 0;
+                    $return[$sday][$kfuid]['s3p'] = 0;
+                }
+            }
+        }
+
+        return $return;
+    }
+
+
+}

+ 58 - 0
application/admin/model/Servicetimelog.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+/**
+ * 客服上线下线日志模型
+ */
+class Servicetimelog extends Model
+{
+
+    //按日期用户查
+    //
+    public function getDayData($dataArray, $uidArray = [])
+    {
+        $ret = $this->where(['cdate' => ['IN', $dataArray]]);
+        if ($uidArray) {
+            $ret = $ret->where(['kfid' => ['IN', $uidArray]]);
+        }
+        $ret = $ret->order(['kfid' => 'asc', 'cdate' => 'asc', 'ctime' => 'asc'])->select();
+
+
+        if (!$ret) {
+            return false;
+        }
+
+        $return = $this->getOneUserData($ret);
+        return $return;
+    }
+
+    private function getOneUserData($array)
+    {
+
+        $return = [];
+        foreach ($array as $val) {
+            if (!isset($return[$val->cdate][$val->kfid]['1'])) {
+                $return[$val->cdate][$val->kfid]['1'] = $val->cdate . ' ' . $val->ctime;
+            } else {
+                if ($return[$val->cdate][$val->kfid]['1'] < $val->cdate . ' ' . $val->ctime) {
+                    $return[$val->cdate][$val->kfid]['1'] = $val->cdate . ' ' . $val->ctime;
+                }
+            }
+
+            if (!isset($return[$val->cdate][$val->kfid]['0'])) {
+                $return[$val->cdate][$val->kfid]['0'] = $val->cdate . ' ' . $val->ctime;
+            } else {
+                if ($return[$val->cdate][$val->kfid]['0'] > $val->cdate . ' ' . $val->ctime) {
+                    $return[$val->cdate][$val->kfid]['0'] = $val->cdate . ' ' . $val->ctime;
+                }
+            }
+        }
+
+        return $return;
+    }
+
+
+}

+ 31 - 6
application/admin/model/Users.php

@@ -1,4 +1,5 @@
 <?php
+
 namespace app\admin\model;
 
 use think\Model;
@@ -9,16 +10,40 @@ use think\Model;
  */
 class Users extends Model
 {
-    public function getByGroup($group=0){
-        if ($group){
-            return $this->where(['group_id'=>$group])->select();
-        }else{
+    public function getByGroup($group = 0)
+    {
+        if ($group) {
+            return $this->where(['group_id' => $group])->select();
+        } else {
             return $this->all();
         }
     }
 
-    public function  groupinfo(){
-        return  $this->belongsTo('Groups','group_id','id');
+    public function groupinfo()
+    {
+        return $this->belongsTo('Groups', 'group_id', 'id');
+    }
+
+    public function getUidsBygid($groupid = 0, $pre = 0, $returnobj = 0)
+    {
+        $ret = $this->getByGroup($groupid);
+
+        $return = [];
+        if ($ret) {
+            foreach ($ret as $val) {
+                $return['uids'][] = $pre ? 'KF' . $val->id : $val->id;
+                if ($returnobj) {
+                    $return['objs'][$val->id] = $val;
+                }
+            }
+            if (!$returnobj) {
+                return $return['uids'];
+            }
+            return $return;
+        } else {
+            return false;
+        }
+
     }
 
 }

+ 155 - 0
application/admin/view/report/attendancereport.html

@@ -0,0 +1,155 @@
+<!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__/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>
+        </div>
+        <div class="ibox-content">
+
+            <!--搜索框开始-->
+            <form id='commentForm' role="form" method="post" class="form-inline pull-right">
+                <div class="content clearfix m-b">
+                    <div class="form-group">
+                        <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="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">
+                        <button class="btn btn-primary" type="button" id="search"><strong>搜 索</strong>
+                        </button>
+                    </div>
+
+                </div>
+            </form>
+            <!--搜索框结束-->
+            <div class="example-wrap">
+                <div class="example">
+                    <table id="cusTable">
+                        <thead>
+                        <th data-field="account">账号</th>
+                        <th data-field="uname">姓名</th>
+                        <th data-field="day">日期</th>
+                        <th data-field="of1">首次登陆时间</th>
+                        <th data-field="of0">最后登出时间</th>
+                        <th data-field="1">登陆时长</th>
+                        <th data-field="3">休息时长</th>
+                        <th data-field="2">隐身时长</th>
+                        <th data-field="s1p">在线占比</th>
+                        <th data-field="s3p">休息占比</th>
+                        <th data-field="s2p">隐身占比</th>
+                        </thead>
+                    </table>
+                </div>
+            </div>
+            <!-- End Example Pagination -->
+        </div>
+    </div>
+</div>
+<!-- End Panel Other -->
+<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/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__/layui/layui.all.js"></script>
+<script type="text/javascript">
+    var ReturnRes;
+
+    function initTable() {
+        //先销毁表格
+        $('#cusTable').bootstrapTable('destroy');
+
+        //初始化表格,动态从服务器加载数据
+        function getSearch() {
+            var Searchtxt = '';
+            Searchtxt = $("#daterang").val();
+            Searchtxt += "|" + $("#groupid").val();
+
+            return Searchtxt;
+        }
+
+        $("#cusTable").bootstrapTable({
+            method: "get",  //使用get请求到服务器获取数据
+            url: "{:url('report/attendancereport')}", //获取数据的地址
+            striped: true,  //表格显示条纹
+            pagination: true, //启动分页
+            pageSize: 50,  //每页显示的记录数
+            pageNumber: 1, //当前第几页
+            pageList: [20, 50, 100],  //记录数可选列表
+            sidePagination: "server", //表示服务端请求
+            paginationFirstText: "首页",
+            paginationPreText: "上一页",
+            paginationNextText: "下一页",
+            paginationLastText: "尾页",
+            queryParamsType: "undefined",
+            queryParams: function queryParams(params) {   //设置查询参数
+                var param = {
+                    pageNumber: params.pageNumber,
+                    pageSize: params.pageSize,
+                    searchText: getSearch()
+                };
+                return param;
+            },
+            onLoadSuccess: function (res) {  //加载成功时执行
+                ReturnRes = res.rows;
+                if (111 == res.code) {
+                    window.location.reload();
+                }
+                layer.msg("加载成功", {time: 1000});
+            },
+            onLoadError: function () {  //加载失败时执行
+                layer.msg("加载数据失败");
+            }
+        });
+    }
+
+    $(document).ready(function () {
+        //调用函数,初始化表格
+        initTable();
+
+        //当点击查询按钮的时候执行
+        $("#search").bind("click", initTable);
+    });
+
+
+    layui.use('laydate', function () {
+        var laydate = layui.laydate;
+        laydate.render({
+            elem: '#daterang'
+            , range: ','
+        });
+
+    });
+
+</script>
+</body>
+</html>

+ 10 - 1
application/common.php

@@ -61,4 +61,13 @@ function kftoKey($uidArray, $type = 0)
         }
     }
     return $return ;
-}
+}
+
+
+//保留小数位数
+function  floatPointDigit($data,$long=2){
+    $long = intval($long) ;
+    $for1 = "%.".$long."f" ;
+    $for2 = "%.".($long+1)."f" ;
+    return  sprintf($for1,substr(sprintf($for2, $data), 0, -1));
+}

+ 3 - 4
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -1384,10 +1384,10 @@ class Events
         $today = date("Y-m-d");
 
         $sret = self::$db->select('*')->from('ws_countmidtable')->where('dtype=:dtype and  mdate=:mdate')->bindValues(array('dtype' => $dtype, 'mdate' => $today))->row();
-        if ($ret) {
-            $db->update('ws_countmidtable')->cols(array('dcontent' => intval($sret['dcontent']) + 1))->where('id=' . $sret['id'])->query();
+        if ($sret) {
+            self::$db->update('ws_countmidtable')->cols(array('dcontent' => intval($sret['dcontent']) + 1))->where('id=' . $sret['id'])->query();
         } else {
-            $db->insert('ws_countmidtable')->cols(array(
+            self::$db->insert('ws_countmidtable')->cols(array(
                 'dtype' => $dtype,
                 'mdate' => $today,
                 'datatype' => 1,
@@ -1730,7 +1730,6 @@ class Events
             // 如果对话为客服的最后一次对话且时间小于设定时间则结束工单.
             if ($v['time_line'] <= $overtime) {
                 $found_key = array_search($v['servicelog_id'], array_column($serviceLog, 'servicelog_id'));
-                print_r([1, $serviceLog[$found_key]['client_id']]);
                 self::serverClose($serviceLog[$found_key]['client_id'], $v['servicelog_id']);
                 // 如果对话为客服的最后一次对话且时间小于设定时间前一分钟则给出提示.
             } elseif ($v['time_line'] <= $setOvertime) {