Jonlin %!s(int64=6) %!d(string=hai) anos
pai
achega
37d685b02a

+ 127 - 2
application/admin/controller/Accounts.php

@@ -27,6 +27,8 @@ class Accounts extends Base
             $result = db('accounts')->whereBetween('add_time', [$start, $end])->where($where)->limit($offset, $limit)->order('add_time', 'desc')->select();
             //所有客服
             $users = db('users')->select();
+            //所有标签
+            $label = db('accountslabel')->select();
             foreach($result as $key=>$vo){
                 $result[$key]['add_time'] = date('Y-m-d H:i:s',$result[$key]['add_time']);
                 $result[$key]['last_login_time'] = date('Y-m-d H:i:s',$result[$key]['last_login_time']);
@@ -35,6 +37,11 @@ class Accounts extends Base
                         $result[$key]['user_name'] = $users[$i]['user_name'];
                     }
                 }
+                for($j=0;$j<count($label);$j++){
+                    if($vo['label_id'] == $label[$j]['id']){
+                        $result[$key]['label'] = $label[$j]['name'];
+                    }
+                }
                 // 生成操作按钮
                 $result[$key]['operate'] = $this->makeBtn($vo['id']);
             }
@@ -85,7 +92,7 @@ class Accounts extends Base
             $info['account_email'] = $param['account_email'];
             $info['account_phone'] = $param['account_phone'];
             $info['address'] = $param['address'];
-            $info['label'] = $param['label'];
+            $info['label_id'] = $param['label_id'];
             $info['remark'] = $param['remark'];
             if(!empty($param['user_id']) && $param['user_id'] != 0){
                 $info['user_id'] = $param['user_id'];
@@ -101,9 +108,17 @@ class Accounts extends Base
 
         $id = input('param.id/d');
         $info = db('accounts')->where('id', $id)->find();
+        $label = db('accountslabel')->where('id', $info['label_id'])->find();
+        $info['label'] = $label['name'];
+        //所有标签
+        $label = db('accountslabel')->select();
 
         //服务记录
-        $service_log = db('service_log a')->join('users b','a.kf_id=b.id')->field('a.servicelog_id,a.start_time,b.user_name')->where('a.user_id', $id)->select();
+        //前一个月的时间戳
+        $start = time()-2592000;
+        //当前时间戳
+        $end = time();
+        $service_log = db('service_log a')->join('users b','a.kf_id=b.id')->field('a.servicelog_id,a.start_time,b.user_name')->whereBetween('a.start_time', [$start, $end])->where('a.user_id', $id)->select();
         for($i=0;$i<count($service_log);$i++){
             $service_log[$i]['start_time'] = date("Y-m-d H:i:s",$service_log[$i]['start_time']);
         }
@@ -117,6 +132,7 @@ class Accounts extends Base
         $this->assign([
             'info' => $info,
             'users' => $users,
+            'label' => $label,
             'service_log' => $service_log,
             'status' => config('kf_status')
         ]);
@@ -149,4 +165,113 @@ class Accounts extends Base
 
         return $operate;
     }
+
+    // 用户标签列表
+    public function label()
+    {
+        if(request()->isAjax()){
+            $param  = input('param.');
+            $limit  = $param['pageSize'];
+            $offset = (($param['pageNumber'] - 1) * $limit);
+            $where = [];
+            if (empty($param['searchText']) === false) {
+                $where['name'] = ['like', '%' . $param['searchText'] . '%'];
+            }
+            $result = db('accountslabel')->where($where)->limit($offset, $limit)->order('add_time', 'desc')->select();
+
+            foreach($result as $key=>$vo){
+                $result[$key]['add_time'] = date('Y-m-d H:i:s',$result[$key]['add_time']);
+
+                // 生成操作按钮
+                $result[$key]['operate'] = $this->makeBtnLabel($vo['id']);
+            }
+            $return['total'] = db('accountslabel')->count();  //总数据
+            $return['rows'] = $result;
+            return json($return);
+        }
+        return $this->fetch();
+    }
+
+    // 添加用户标签
+    public function addlabel()
+    {
+        if (request()->isAjax()) {
+            $param = input('post.');
+            $has = db('accountslabel')->where('name',$param['name'])->find();
+            if(!empty($has)){
+                return json(['code' => -1, 'data' => '', 'msg' => '此用户标签已存在']);
+            }
+            $info = array();
+            $info['name'] = $param['name'];
+            $info['add_time'] = time();
+            try {
+                db('accountslabel')->insert($info);
+            } catch (\Exception $e) {
+                return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
+            }
+            return json(['code' => 1, 'data' => '', 'msg' => '添加用户标签成功']);
+        }
+        $this->assign([
+            'status' => config('kf_status')
+        ]);
+        return $this->fetch();
+    }
+
+    // 编辑用户标签
+    public function editlabel()
+    {
+        // 菜单id
+        $id = input('param.id/d');
+        if (request()->isAjax()) {
+            $param = input('post.');
+            $has = db('accountslabel')->where('name',$param['name'])->where('id','<>',$id)->find();
+            if(!empty($has)){
+                return json(['code' => -1, 'data' => '', 'msg' => '此用户标签已存在']);
+            }
+            $info = array();
+            $info['name'] = $param['name'];
+
+            try {
+                db('accountslabel')->where('id', $param['id'])->update($info);
+            } catch (\Exception $e) {
+                return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
+            }
+            return json(['code' => 1, 'data' => '', 'msg' => '编辑用户标签成功']);
+        }
+        $label = db('accountslabel')->where('id',$id)->find();
+
+        $this->assign([
+            'label' => $label,
+            'id' => $id,
+            'status' => config('kf_status')
+        ]);
+        return $this->fetch();
+    }
+
+    // 删除用户标签
+    public function delLabel()
+    {
+        if (request()->isAjax()) {
+            //留言类型id
+            $id = input('param.id/d');
+
+            try {
+                db('accountslabel')->where('id', $id)->delete();
+            } catch (\Exception $e) {
+                return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
+            }
+            return json(['code' => 1, 'data' => '', 'msg' => '删除用户标签成功']);
+        }
+    }
+
+    // 生成标签按钮
+    private function makeBtnLabel($id)
+    {
+        $operate = '<a style="margin-left:5px;" href="' . url('Accounts/editlabel', ['id' => $id]) . '"><button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
+
+        $operate .= '<a href="javascript:labelDel(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
+        $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
+
+        return $operate;
+    }
 }

+ 2 - 0
application/admin/controller/System.php

@@ -361,6 +361,8 @@ class System extends Base
 
         //用户信息
         $account = db('accounts')->where('id',$servicelog['user_id'])->find();
+        $label = db('accountslabel')->where('id', $account['label_id'])->find();
+        $account['label'] = $label['name'];
         $this->assign([
             'html' => $html,
             'ul' => $ul,

+ 114 - 0
application/admin/view/accounts/addlabel.html

@@ -0,0 +1,114 @@
+<!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>
+<body class="gray-bg">
+<div class="wrapper wrapper-content animated fadeInRight">
+    <div class="row">
+        <div class="col-sm-8">
+            <div class="ibox float-e-margins">
+                <div class="ibox-title">
+                    <h5>添加用户标签</h5>
+                </div>
+                <div class="ibox-content">
+                    <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('accounts/addlabel')}">
+
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">用户标签名称:</label>
+                            <div class="input-group col-sm-4">
+                                <input id="name" type="text" class="form-control" name="name" required="" aria-required="true">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <div class="col-sm-4 col-sm-offset-6">
+                                <!--<a class="layui-btn layui-btn-sm lay-btn-diy" href="javascript:history.go(-1)" style="background-color:#1E9FFF;margin-bottom: 5px;height: 35px;line-height: 35px;">返回</a>-->
+                                <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>
+<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">
+
+    layui.use(['form', 'upload'], function(){
+        var form = layui.form;
+        form.on('select(menu)', function(value){
+            $("#p_id").val(value.value);
+        });
+    });
+
+    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 = '/admin/accounts/label.html';
+               });
+            }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>

+ 15 - 4
application/admin/view/accounts/edit.html

@@ -66,8 +66,16 @@
                         </div>
                         <div class="form-group">
                             <label class="col-sm-3 control-label">标签:</label>
-                            <div class="input-group col-sm-4">
-                                <input id="label" type="text" class="form-control" name="label" aria-required="true" value="{$info['label']}">
+                            <input type="hidden" id="label_id" name="label_id" value="{$info['label_id']}"/>
+                            <div class="input-group col-sm-4 layui-form">
+                                <select lay-verify="required" lay-filter="label">
+                                    <option value="0">请选择用户标签</option>
+                                    {if !empty($label)}
+                                    {foreach name="label" item="vo"}
+                                    <option value="{$vo['id']}" {if $vo['id'] eq $info['label_id']}selected{/if}>{$vo['name']}</option>
+                                    {/foreach}
+                                    {/if}
+                                </select>
                             </div>
                         </div>
                         <div class="form-group">
@@ -112,9 +120,9 @@
 
             <div class="ibox float-e-margins" style="width: 36%;margin-left: 71%;">
                 <div class="ibox-title">
-                    <h5>服务记录</h5>
+                    <h5>最近一个月服务记录</h5>
                 </div>
-                <div class="ibox-content" style="height: 500px;margin-bottom: 10px;background-color: #eee;">
+                <div class="ibox-content" style="height: 500px;margin-bottom: 10px;background-color: #eee;overflow:auto;">
                     <ul>
                         {if !empty($service_log)}
                         {foreach name="service_log" item="vo" key="key"}
@@ -169,6 +177,9 @@
         form.on('select(user)', function(value){
             $("#user_id").val(value.value);
         });
+        form.on('select(label)', function(value){
+            $("#label_id").val(value.value);
+        });
     });
 
     var index = '';

+ 114 - 0
application/admin/view/accounts/editlabel.html

@@ -0,0 +1,114 @@
+<!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>
+<body class="gray-bg">
+<div class="wrapper wrapper-content animated fadeInRight">
+    <div class="row">
+        <div class="col-sm-8">
+            <div class="ibox float-e-margins">
+                <div class="ibox-title">
+                    <h5>编辑用户标签</h5>
+                </div>
+                <div class="ibox-content">
+                    <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('accounts/editlabel')}">
+                        <input type="hidden" value="{$id}" name="id"/>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">用户标签名称:</label>
+                            <div class="input-group col-sm-4">
+                                <input id="name" type="text" class="form-control" name="name" required="" aria-required="true" value="{$label['name']}">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <div class="col-sm-4 col-sm-offset-6">
+                                <!--<a class="layui-btn layui-btn-sm lay-btn-diy" href="javascript:history.go(-1)" style="background-color:#1E9FFF;margin-bottom: 5px;height: 35px;line-height: 35px;">返回</a>-->
+                                <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>
+<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">
+
+    layui.use(['form', 'upload'], function(){
+        var form = layui.form;
+        form.on('select(menu)', function(value){
+            $("#p_id").val(value.value);
+        });
+    });
+
+    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 = '/admin/accounts/label.html';
+                });
+            }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>

+ 120 - 0
application/admin/view/accounts/label.html

@@ -0,0 +1,120 @@
+<!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">
+</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">
+            <a href="/admin/accounts/addlabel.html">
+                <button class="btn btn-primary" type="button" style="margin-top:5px"><strong>新增会员标签</strong>
+                </button>
+            </a>
+
+            <div class="example-wrap">
+                <div class="example">
+                    <table id="cusTable">
+                        <thead>
+                        <th data-field="id">标签id</th>
+                        <th data-field="name">标签名称</th>
+                        <th data-field="add_time">添加时间</th>
+                        <th data-field="operate">操作</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__/plugins/layer/layer.min.js"></script>
+<script type="text/javascript">
+    function initTable() {
+        //先销毁表格
+        $('#cusTable').bootstrapTable('destroy');
+        //初始化表格,动态从服务器加载数据
+        $("#cusTable").bootstrapTable({
+            method: "get",  //使用get请求到服务器获取数据
+            url: "{:url('accounts/label')}", //获取数据的地址
+            striped: true,  //表格显示条纹
+            pagination: true, //启动分页
+            pageSize: 10,  //每页显示的记录数
+            pageNumber:1, //当前第几页
+            pageList: [10,20],  //记录数可选列表
+            sidePagination: "server", //表示服务端请求
+            paginationFirstText: "首页",
+            paginationPreText: "上一页",
+            paginationNextText: "下一页",
+            paginationLastText: "尾页",
+            queryParamsType : "undefined",
+            queryParams: function queryParams(params) {   //设置查询参数
+                var param = {
+                    pageNumber: params.pageNumber,
+                    pageSize: params.pageSize,
+                    searchText:$('#username').val()
+                };
+                return param;
+            },
+            onLoadSuccess: function(res){  //加载成功时执行
+                if(111 == res.code){
+                    window.location.reload();
+                }
+                layer.msg("加载成功", {time : 1000});
+            },
+            onLoadError: function(){  //加载失败时执行
+                layer.msg("加载数据失败");
+            }
+        });
+    }
+
+    $(document).ready(function () {
+        //调用函数,初始化表格
+        initTable();
+
+        //当点击查询按钮的时候执行
+        $("#search").bind("click", initTable);
+    });
+
+    function labelDel(id){
+        layer.confirm('确认删除此标签?', {icon: 3, title:'提示'}, function(index){
+            //do something
+            $.getJSON("{:url('accounts/delLabel')}", {'id' : id}, function(res){
+                if(1 == res.code){
+                    layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
+                        initTable();
+                    });
+                }else if(111 == res.code){
+                    window.location.reload();
+                }else{
+                    layer.alert(res.msg, {title: '友情提示', icon: 2});
+                }
+            });
+
+            layer.close(index);
+        })
+
+    }
+
+</script>
+</body>
+</html>