zouyuxuan %!s(int64=5) %!d(string=hai) anos
pai
achega
b52751ae64

+ 66 - 0
src/service/customer_service.go

@@ -7,6 +7,7 @@ import (
 	"github.com/lauyoume/gopinyin"
 	"gopkg.in/mgo.v2/bson"
 	"io/ioutil"
+	"log"
 	"net/http"
 	qu "qfw/util"
 	"strings"
@@ -22,6 +23,7 @@ type Customer struct {
 	customerEuser   xweb.Mapper `xweb:"/service/customer/euser"`
 	customerSave   	xweb.Mapper `xweb:"/service/customer/save"`
 	customerDel    	xweb.Mapper `xweb:"/service/customer/del"`
+	customerHistory	xweb.Mapper `xweb:"/service/customer/history"`
 	setupDepart    	xweb.Mapper `xweb:"/service/customer/setup"`
 
 	departDel 		xweb.Mapper `xweb:"/service/depart/del"`
@@ -50,6 +52,8 @@ type Customer struct {
 	tagDel			xweb.Mapper `xweb:"/service/euser/tag/del"`
 	cuserRuleList	xweb.Mapper `xweb:"/service/tag/ruleList"`			//规则列表	客户
 	tagAssociated	xweb.Mapper `xweb:"/service/euser/tag/associated"`   //私有标签关联规则
+	customerAllRule	xweb.Mapper `xweb:"/service/customer/history/allrule"`   //用户历史规则
+	saveHistoryRule	xweb.Mapper `xweb:"/service/customer/history/saverule"`   //保存历史规则
 }
 
 func (c *Customer) CustomerList() {
@@ -843,3 +847,65 @@ func (c *Customer) TagAssociated() {
 	})
 }
 
+
+func (c *Customer)CustomerHistory(){
+	defer qu.Catch()
+	log.Println("&&&")
+	id := c.GetString("id")
+	query := bson.M{}
+	query["_id"] = qu.StringTOBsonId(id)
+	data, _ := Mgo.FindOneByField("cuser", query, `{}`)
+	depart, _ := Mgo.Find("cuserdepart", bson.M{"s_userid": id, "b_delete": false}, nil, nil, false, -1, -1)
+	(*data)["_id"] = qu.BsonIdToSId((*data)["_id"])
+	if (*data)["i_state"]  == 1 {
+		tagRule, _ := Mgo.Find("eusertagrule", bson.M{"s_userid": id, "b_delete": false}, nil, nil, false, -1, -1)
+		c.T["tagrule"] = *tagRule
+	}
+	c.T["data"] = *data
+	c.T["depart"] = *depart
+	c.Render("private/customer_history.html", &c.T)
+}
+
+//选择历史规则
+func (c *Customer)CustomerAllRule(){
+	customerId := c.GetString("c_id")
+	query := bson.M{
+		"s_userid":   customerId,
+		"b_delete":   false,
+	}
+	data,_ := Mgo.Find("cuserdepart",query, `{"i_createtime":-1}`, nil, false, 0, 0)
+	if data!=nil&&len(*data)!=0{
+		res := []map[string]interface{}{}
+		for _,m := range *data{
+			history_rule_data := make(map[string]interface{})
+			q := bson.M{
+				"s_departid":   m["_id"].(bson.ObjectId).Hex(),
+				"b_delete":   false,
+			}
+			history_rule_data["department_isuse"] = m["i_isuse"]
+			history_rule_data["depart_name"] = m["s_name"]
+			depart_rule_data,_:=Mgo.Find("cuserdepartrule",q, `{"i_createtime":-1}`, `{"s_tagname":1,"i_updatetime":1,"i_isuse":1,"_id":1}`, false, 0, 0)
+			if depart_rule_data!=nil&&len(*depart_rule_data)!=0{
+				for _,j:= range *depart_rule_data{
+					j["_id"] = j["_id"].(bson.ObjectId).Hex()
+				}
+				history_rule_data["department_rule"] = depart_rule_data
+			}
+			res = append(res,history_rule_data)
+		}
+		c.ServeJson(map[string]interface{}{
+			"status":"success",
+			"data":res,
+		})
+	}else{
+		c.ServeJson(map[string]interface{}{
+			"status":"fail",
+			"data":"",
+		})
+	}
+}
+
+//保存历史规则
+func (c *Customer)SaveHistoryRule(){
+
+}

+ 815 - 0
src/web/templates/private/customer_history.html

@@ -0,0 +1,815 @@
+{{include "com/inc.html"}}
+<!-- Main Header -->
+{{include "com/header.html"}}
+<!-- Left side column. 权限菜单 -->
+{{include "com/menu.html"}}
+<style>
+</style>
+<div class="content-wrapper">
+    <section class="content-header">
+        <h1>编辑客户
+        </h1>
+        <ol class="breadcrumb">
+            <li><a href="#"><i class="fa fa-dashboard"></i> 首页</a></li>
+            <li><a href="/service/customer/list"> 客户列表</a></li>
+            <li><a href="#"> 编辑客户</a></li>
+        </ol>
+    </section>
+    <!-- Main content -->
+    <section class="content">
+        <div class="tab-content">
+            <div class="nav-tabs-custom">
+                <ul class="nav nav-tabs edit-step">
+                    <li class="active" data-mode="guide"><a href="#tab_1" data-toggle="tab" aria-expanded="true">客户信息</a></li>
+                    <li data-mode="guide" class="tab_2"><a href="#tab_2" data-toggle="tab" aria-expanded="false">私有标签</a></li>
+                </ul>
+                <div class="tab-content">
+
+                    <div class="tab-pane active" id="tab_1">
+                        <form class="form-horizontal">
+                            <div class="box box-primary">
+                                <div class="box-header with-border">
+                                    <i class="fa fa-tag"></i>
+                                    <h3 class="box-title">基本信息</h3>
+                                    <a class="btn btn-primary btn-sm" style="float: right;margin-top: 7px;margin-right: 10px" onclick="saveCuser()"><i class="fa fa-fw fa-file-text fa-lg"></i>保存</a>
+                                </div>
+                                <div class="box-body">
+                                    <div class="form-group">
+                                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>客户名称</label>
+                                        <div class="col-sm-2">
+                                            <input type="text" class="form-control" id="customername" placeholder="公司名称"
+                                                   value="{{.T.data.s_name}}" required>
+                                        </div>
+                                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>销售人员</label>
+                                        <div class="col-sm-2">
+                                            <input type="text" class="form-control" id="seller" placeholder="销售人员名称"
+                                                   value="{{.T.data.s_salesperson}}" required>
+                                        </div>
+                                        <label class="col-sm-2 control-label">客户联系人</label>
+                                        <div class="col-sm-2">
+                                            <input type="text" class="form-control" id="contract" placeholder="客户联系人名称"
+                                                   value="{{.T.data.s_customername}}">
+                                        </div>
+                                    </div>
+                                    <div id="pushDiv">
+                                        <div class="box-header with-border">
+                                            <i class="fa fa-tag"></i>
+                                            <h3 class="box-title">企业客户信息</h3>
+                                        </div>
+                                        <div class="box-body">
+                                            <div class="form-group">
+                                                <label class="col-sm-2 control-label"><span style="color:red;">* </span>推送模式</label>
+                                                <div class="col-sm-2">
+                                                    <select class="form-control selectpicker" id="pushModelSelect">
+                                                        <option value=0>全局模式</option>
+                                                        <option value=1>部门模式</option>
+                                                        <option value=3>部门+标签模式</option>
+                                                        <option value=4>规则模式(不去重)</option>
+                                                    </select>
+                                                </div>
+                                                <label class="col-sm-2 control-label"><span style="color:red;">* </span>推送方式</label>
+                                                <div class="col-sm-2">
+                                                    <select class="form-control selectpicker" id="pushTypeSelect">
+                                                        <option value=0 code="email">邮箱</option>
+                                                        <option value=1 code="interface">接口</option>
+                                                    </select>
+                                                </div>
+                                                <label class="col-sm-2 control-label">数据扩展</label>
+                                                <div class="col-sm-2">
+                                                    <select class="form-control selectpicker" multiple id="expandSelect">
+                                                        <option value="hospitalgrade" >医院等级</option>
+                                                        <option value="enterpise" >企业信息</option>
+                                                    </select>
+                                                    <script>
+                                                        $('#expandSelect').on('hide.bs.select', function () {
+                                                            var arr = $('#expandSelect').val();
+                                                            var arrStr = "";
+                                                            for (var i in arr) {
+                                                                if (arrStr === "") {
+                                                                    arrStr = arr[i]
+                                                                } else {
+                                                                    arrStr = arrStr + "," + arr[i]
+                                                                }
+                                                            }
+                                                            dataMap["s_extends"] = arrStr
+                                                        })
+                                                    </script>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="box-header with-border">
+                                        <i class="fa fa-tag"></i>
+                                        <h3 class="box-title">部门信息</h3>
+                                    </div>
+                                    <table id="departTable" class="table table-bordered">
+                                        <thead>
+                                        <div style="margin: 10px 10px 0px;">
+                                            <a class="btn btn-default" onclick="showDepart()">新增</a>
+                                            <a class="btn btn-default" onclick="modify_Depart()">修改</a>
+                                            <a class="btn btn-default" onclick="del_Depart()">删除</a>
+                                            <a class="btn btn-default" onclick="select_Depart()">选择</a>
+                                        </div>
+                                        <tr>
+                                            <th></th>
+                                            <th>编号</th>
+                                            <th>部门名称</th>
+                                            <th>部门联系人</th>
+                                            <th>修改时间</th>
+                                            <th>是否启用</th>
+                                            <th>功能</th>
+                                        </tr>
+                                        </thead>
+                                    </table>
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                    <div class="tab-pane" id="tab_2">
+                        <div class="box box-primary">
+                            <div class="box-header with-border">
+                                <i class="fa fa-bookmark"></i>
+                                <h3 class="box-title">私有标签</h3>
+                                <a class="btn btn-primary btn-sm" style="float: right;margin-top: 7px;margin-right: 10px" href="/service/euser/tag/edit?cid={{.T.data._id}}"><i class="fa fa-fw fa-file-code-o fa-lg"></i>新建标签</a>
+                            </div>
+                            <table id="tagrule" class="table table-bordered">
+                                <thead>
+                                <tr>
+                                    <th>编号</th>
+                                    <th>标签名称</th>
+                                    <th>修改时间</th>
+                                    <th>启用状态</th>
+                                    <th>操作</th>
+                                    <th>功能</th>
+                                </tr>
+                                </thead>
+                            </table>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </section>
+</div>
+
+<!-- 新增部门 -->
+<div class="modal fade" id="modal-add-depart" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="modal-dialog" style="width: 50%">
+        <div class="modal-content">
+            <div class="modal-header">
+                <div class="modal-header">
+                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+                    <div class="edit-form">
+                        <div class="edit-info">
+                            <span class="glyphicon glyphicon-ok-sign" aria-hidden="true"></span>
+                            <span>新增部门</span>
+                        </div>
+                        <form class="form-horizontal">
+                            <div class="form-group">
+                                <label class="col-sm-3 control-label"><span style="color:red;">* </span>部门名称</label>
+                                <div class="col-sm-6">
+                                    <input class="form-control" placeholder="销售部、销售部-xx子部门" id="depart_name"/></div>
+                            </div>
+                            <div class="form-group">
+                                <label class="col-sm-3 control-label">联系人</label>
+                                <div class="col-sm-6">
+                                    <input class="form-control" placeholder="输入联系人名称" id="depart_contract"/></div>
+                            </div>
+                            <div class="form-group">
+                                <label class="col-sm-3 control-label">是否启用</label>
+                                <div class="col-sm-6">
+                                    <select class="form-control selectpicker" id="isuseSelect">
+                                        <option value=1 selected>是</option>
+                                        <option value=0>否</option>
+                                    </select>
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <input type="button" onclick="saveDepart()" class="btn btn-primary saveBtn" value="保存">
+                    <input type="button" onclick="cancelModel()" class="btn btn-default" style="margin-left: 24px"
+                           value="取消">
+                </div>
+            </div>
+        </div>
+    </div><!-- /.modal -->
+</div>
+<!-- 关联客户规则 -->
+<div class="modal fade" id="modal-associated" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="modal-dialog" style="width: 60%">
+        <div class="modal-content">
+            <div class="modal-header">
+                <div class="modal-header">
+                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+                    <div class="edit-form">
+                        <div class="edit-info">
+                            <span class="glyphicon glyphicon-ok-sign" aria-hidden="true"></span>
+                            <span>关联客户规则</span>
+                        </div>
+                        <div class="content">
+                            <table id="cuserRule" class="table table-bordered">
+                                <thead>
+                                <tr>
+                                    <th>编号</th>
+                                    <th><input type="checkbox" id="selrow" onclick="allSelect(this)"/></th>
+                                    <th>规则名称</th>
+                                    <th>部门名称</th>
+                                    <th>创建时间</th>
+                                </tr>
+                                </thead>
+                            </table>
+                        </div>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <input type="button" onclick="saveTagrule()" class="btn btn-primary saveBtn" value="保存">
+                    <input type="button" onclick="cancelModel()" class="btn btn-default" style="margin-left: 24px"
+                           value="取消">
+                </div>
+            </div>
+        </div>
+    </div><!-- /.modal -->
+</div>
+
+<!--历史规则-->
+<div class="modal fade" id="modal-history" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="modal-dialog" style="width: 80%">
+        <div class="modal-content">
+            <div class="modal-header">
+                <div class="modal-header">
+                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+                    <div class="edit-form">
+                        <div class="edit-info">
+                            <span class="glyphicon glyphicon-ok-sign" aria-hidden="true"></span>
+                            <span>选择历史规则</span>
+                        </div>
+                        <table id="historyRule" class="table table-bordered">
+                            <thead>
+                            <tr>
+                                <th><input type="checkbox" id="selrow" onclick="allSelect(this)"/></th>
+                                <th>编号</th>
+                                <th>部门名称</th>
+                                <th>规则名称</th>
+                                <th>修改时间</th>
+                                <th>部门状态</th>
+                                <th>规则状态</th>
+                                <th class="hidden">规则id  </th>
+
+                            </tr>
+                            </thead>
+                            <tbody class="history_rules"></tbody>
+                        </table>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <input type="button" onclick="saveHistoryRule()" class="btn btn-primary saveBtn" value="确定">
+                    <input type="button" onclick="cancelModel()" class="btn btn-default" style="margin-left: 24px"
+                           value="取消">
+                </div>
+            </div>
+        </div>
+    </div><!-- /.modal -->
+</div>
+{{include "com/footer.html"}}
+<script>
+    menuActive("/customer/list");
+    var dataMap = {{.T.data}}
+    var departArr = {{.T.depart}}
+    var tagruleArr = []
+    var ruleArr = []
+
+    var selectIndex = [];               //选中的编号
+
+    $(document).ready(function () {
+        if (dataMap.i_state == 0) {
+            $('.tab_2').hide()
+            $('#pushDiv').hide()
+        }else {
+            tagruleArr = {{.T.tagrule}}
+            $('#pushSwitch').bootstrapSwitch({
+                onText: "开启",
+                offText: "关闭",
+            })
+            if (dataMap.i_push && dataMap.i_push == 1) {
+                $('#pushSwitch').bootstrapSwitch('state', true);
+            }else {
+                $('#pushSwitch').bootstrapSwitch('state', false);
+            }
+            $('#pushModelSelect').val(dataMap.i_pushmodel)
+            if (dataMap.i_pushtype == 0) {
+                $('#pushTypeSelect').val(0)
+            }else {
+                $('#pushTypeSelect').val(1)
+            }
+            if (dataMap.s_extends && dataMap.s_extends.indexOf("hospitalgrade") >= 0 && dataMap.s_extends.indexOf("enterpise") >= 0) {
+                $('#expandSelect').find("option[value = hospitalgrade]").attr("selected","selected");
+                $('#expandSelect').find("option[value = enterpise]").attr("selected","selected");
+            }else if (dataMap.s_extends && dataMap.s_extends.indexOf("hospitalgrade") >= 0){
+                $('#expandSelect').find("option[value = hospitalgrade]").attr("selected","selected");
+            }else if (dataMap.s_extends && dataMap.s_extends.indexOf("enterpise") >= 0) {
+                $('#expandSelect').find("option[value = enterpise]").attr("selected","selected");
+            }
+        }
+        $('#departTable').DataTable({
+            "paging": false,
+            "lengthChange": true,
+            "searching": false,
+            "ordering": false,
+            "info": false,
+            "autoWidth": true,
+            "language": {
+                "url": "/dist/js/dataTables.chinese.lang"
+            },
+            "data": departArr,
+            "fnDrawCallback": function () {
+                this.api().column(1).nodes().each(function (cell, i) {
+                    cell.innerHTML = i + 1;
+                });
+            },
+            "columns": [
+                {"data":function() {
+                        return `<input type="checkbox" name="ckb-depart" onclick="singleSelect1(this)" style="text-align: center">`
+                    }, width: "3%"},
+                {"data": null, width: "3%"},
+                {"data": "s_name", width: "10%"},
+                {"data": function (row) {
+                        if (row.s_contract == "") {
+                            return ""
+                        }else {
+                            return row.s_contract
+                        }
+                    }, width: "10%"},
+                {"data": "i_updatetime", render: function (val) {
+                        var dt = new Date();
+                        dt.setTime(parseInt(val) * 1000);
+                        return dt.format("yyyy-MM-dd hh:mm:ss")
+                    }, width: "20%"},
+                {"data": "i_isuse", render: function (val, a, row) {
+                        tmp = ""
+                        if(val == 1){
+                            tmp="<a href='#' title='停用' onclick='setup(\""+row._id+"\",false)'><i class='fa fa-fw fa-circle text-green'></i></a>已启用"
+                        }else{
+                            tmp="<a href='#' title='启用' onclick='setup(\""+row._id+"\",true)'><i class='fa fa-fw fa-circle text-red'></i></a>未启用"
+                        }
+                        return tmp
+                    }, width: "10%" },
+                {"data": "_id", width: "20%", render: function (val, a, row, pos) {
+                        var s = [val, row.s_userid];
+                        tmp = '<div>' +
+                            '<a class="btn btn-sm btn-primary" href="/service/cuser/rule/list?ids=' + s + '">规则列表</a>&nbsp&nbsp'
+                            '</div>';
+                        return tmp
+                    }
+                }
+            ],
+        });
+        $('#tagrule').DataTable({
+            "paging": false,
+            "lengthChange": false,
+            "searching": false,
+            "ordering": false,
+            "info": true,
+            "autoWidth": false,
+            "language": {
+                "url": "/dist/js/dataTables.chinese.lang"
+            },
+            "fnDrawCallback": function () {
+                this.api().column(0).nodes().each(function (cell, i) {
+                    cell.innerHTML = i + 1;
+                });
+            },
+            "data": tagruleArr,
+            "columns": [
+                {"data": null, width: "1%"},
+                {"data": "s_name", width: "10%"},
+                {"data": "i_updatetime", width:"9%", render: function (val) {
+                        var dt = new Date()
+                        dt.setTime(parseInt(val) * 1000);
+                        return dt.format("yyyy-MM-dd hh:mm:ss")
+                    }},
+                {"data": "i_isuse", render: function (val, a, row) {
+                        tmp = ""
+                        if(val == 1){
+                            tmp="<a href='#' title='停用' onclick='setupTag(\""+row._id+"\",false)'><i class='fa fa-fw fa-circle text-green'></i></a>已启用"
+                        }else{
+                            tmp="<a href='#' title='启用' onclick='setupTag(\""+row._id+"\",true)'><i class='fa fa-fw fa-circle text-red'></i></a>未启用"
+                        }
+                        return tmp
+                    }, width: "10%" },
+                {"data": "_id", width:"11%",render: function (val, a, row, pos) {
+                        tmp = '<div>' +
+                            '<a class="btn btn-sm btn-primary" href="/service/euser/tag/edit?id='+val+'&cid='+row.s_userid+'">编辑</a>&nbsp&nbsp'+
+                            '<a class="btn btn-sm btn-danger" onclick="delTag(\''+val+'\')">删除</a>'+
+                            '</div>';
+                        return tmp
+                    }},
+                {"data": "_id", width:"11%",render: function (val, a, row, pos) {
+                        var s = [val, row.s_userid]
+                        tmp = '<div>' +
+                            '<a class="btn btn-sm btn-primary" onclick="associated(\''+s+'\')">关联数据范围</a>&nbsp&nbsp'+
+                            '</div>';
+                        return tmp
+                    }},
+            ],
+        });
+    })
+    function cancelModel() {
+        $('#modal-add-depart').modal("hide")
+        $('#modal-associated').modal("hide")
+    }
+    //表格全选
+    function allSelect(obj) {
+        if ($(obj).is(':checked')) {
+            keyTableChecked = true;
+            keyTableAllChecked = true;
+            $('input[name="ckb-rule"]').each(function () {
+                this.checked = true;
+                selectIndex.push($(this).parents("tr").index());
+            })
+        } else {
+            selectIndex.length = 0;
+            keyTableChecked = false;
+            keyTableAllChecked = false;
+            $('input[name="ckb-keyid"]').each(function () {
+                this.checked = false;
+            })
+        }
+    }
+    function singleSelect(obj) {
+        var tag = true;
+        selectIndex.length = 0;
+        $('input[name="ckb-rule"]').each(function () {
+            if (this.checked) {
+                keyTableChecked = true;
+                selectIndex.push($(this).parents("tr").index());
+            }else {
+                tag = false
+            }
+        });
+        if (tag) {
+            keyTableAllChecked = true;
+            $('#allCheckbox').prop("checked", true);
+        }else {
+            keyTableAllChecked = false;
+            $('#allCheckbox').prop("checked", false);
+        }
+    }
+    function singleSelect1(obj) {
+        var tag = true;
+        selectIndex.length = 0;
+        $('input[name="ckb-depart"]').each(function () {
+            if (this.checked) {
+                keyTableChecked = true;
+                selectIndex.push($(this).parents("tr").index() + 1);
+            }else {
+                tag = false
+            }
+        });
+        if (tag) {
+            keyTableAllChecked = true;
+            $('#allCheckbox').prop("checked", true);
+        }else {
+            keyTableAllChecked = false;
+            $('#allCheckbox').prop("checked", false);
+        }
+    }
+
+    function saveCuser() {
+        var name = $('#customername').val();
+        var contract = $('#contract').val();
+        var saleperson = $('#seller').val();
+        if (name == "" || saleperson == "") {
+            showTip("请填写必填字段!", 1000)
+            return
+        }
+        dataMap.s_name = name
+        dataMap.s_customername = contract
+        dataMap.s_salesperson = saleperson
+        if (dataMap.i_state == 1) {
+            dataMap.i_pushmodel = $('#pushModelSelect option:selected').val()
+            dataMap.i_pushtype = $('#pushTypeSelect option:selected').val()
+        }
+        dataMap.id = dataMap._id
+        $.ajax({
+            url: "/service/customer/save",
+            type: 'POST',
+            data: dataMap,
+            success: function (r) {
+                if (r.rep) {
+                    showTip("保存成功", 500);
+                } else {
+                    showTip("保存失败", 500);
+                }
+            }
+        })
+    }
+
+    var depart_flag = -1;      // 0:新增,1:修改
+    function showDepart() {
+        depart_flag = 0
+        $('#depart_name').val("");
+        $('#depart_contract').val("");
+        $('#s_depart_name').val("");
+        $('#modal-add-depart').modal("show")
+    }
+    //修改部门
+    function modify_Depart() {
+        depart_flag = 1
+        var index = selectIndex[0] - 1;
+        $('#depart_name').val(departArr[index].s_name);
+        $('#depart_contract').val(departArr[index].s_contract);
+        $('#s_depart_name').val(departArr[index].s_subname)
+        $("#isuseSelect").val(departArr[index].i_isuse)
+        $('#modal-add-depart').modal("show");
+    }
+    function del_Depart() {
+        if (keyTableChecked && selectIndex.length > 0) {
+            showConfirm("确定删除?", function() {
+                var tmp = []
+                for (var i in selectIndex) {
+                    var j = selectIndex[i] - 1;
+                    tmp.push(j)
+                }
+                var did = departArr[tmp[0]]._id
+                var bol = false
+                $.ajax({
+                    url: "/service/depart/del",
+                    type: "post",
+                    data: {"id": did},
+                    success: function (r) {
+                        bol = r.rep
+                        if(r.rep){
+                            // showTip("删除成功", 1000)
+                            window.location.reload()
+                        }else{
+                            showTip("删除失败", 1000);
+                        }
+                    }
+                })
+                if (!bol) {
+                    return
+                }
+                departArr = deleteArrayVal(departArr, tmp)
+
+                keyTableChecked = false;
+                if (departArr.length == 0) {
+                    $('#allCheckbox').prop("checked", false);
+                    $('#departTable').dataTable().fnClearTable();
+                }else {
+                    $('#departTable').dataTable().fnClearTable();
+                    $('#departTable').dataTable().fnAddData(departArr);
+                }
+            })
+        }else {
+            showTip("请选中需要删除的关键词", 1000)
+        }
+    }
+    function saveDepart() {
+        var name = $('#depart_name').val();
+        if (name != "") {
+            if (depart_flag == 1) {
+                var index = selectIndex[0] - 1;
+                var depart = departArr[index]
+                depart["id"] = depart["_id"]
+            }else {
+                var depart = {}
+                depart["s_userid"] = dataMap._id
+            }
+            depart["s_name"] = name;
+            depart["s_contract"] = $('#depart_contract').val();
+            depart["s_subname"] = $('#s_depart_name').val()
+            depart["i_isuse"] =  $('#isuseSelect').val()
+            if (depart_flag == 1) {
+                var index = selectIndex[0] - 1;
+                departArr.splice(index, 1, depart)
+            }else {
+                departArr.push(depart)
+            }
+            $('#departTable').dataTable().fnClearTable();
+            $('#departTable').dataTable().fnAddData(departArr);
+            $('#modal-add-depart').modal('hide');
+
+            $.ajax({
+                url: "/service/depart/edit",
+                type: "post",
+                data: depart,
+                success: function (r) {
+                    if(r.rep){
+                        // showTip("保存成功", 1000)
+                        window.location.reload()
+                    }else{
+                        showTip("保存失败", 1000);
+                    }
+                }
+            })
+        }else {
+            showTip("部门名称不能为空", 500)
+        }
+    }
+    function setup(val, bol) {
+        var msg = ""
+        var i_isuse = 0
+        if (bol) {
+            msg = "确定启用?"
+            i_isuse = 1
+        }else {
+            msg = "确定停用?"
+            i_isuse = 0
+        }
+        showConfirm(msg, function() {
+            $.ajax({
+                url:"/service/customer/setup",
+                type:"post",
+                data:{"_id": val, "i_isuse": i_isuse},
+                success:function(r){
+                    if(r.rep){
+                        // showTip("设置成功", 1000);
+                        window.location.reload()
+                    }else{
+                        showTip("设置失败", 1000);
+                    }
+                }
+            })
+        });
+    }
+    function setupTag(val, bol) {
+        var msg = ""
+        var i_isuse = 0
+        if (bol) {
+            msg = "确定启用?"
+            i_isuse = 1
+        }else {
+            msg = "确定停用?"
+            i_isuse = 0
+        }
+        showConfirm(msg, function() {
+            $.ajax({
+                url:"/service/euser/tag/setup",
+                type:"post",
+                data:{"_id": val, "i_isuse": i_isuse},
+                success:function(r){
+                    if(r.rep){
+                        // showTip("设置成功", 1000);
+                        window.location.reload()
+                    }else{
+                        showTip("设置失败", 1000);
+                    }
+                }
+            })
+        });
+    }
+    function delTag(val) {
+        showConfirm("确定删除?", function () {
+            $.ajax({
+                url: "/service/euser/tag/del",
+                type: "post",
+                data: {"_id": val},
+                success: function (r) {
+                    if (r.rep) {
+                        window.location.reload()
+                    } else {
+                        showTip("删除失败", 1000);
+                    }
+                }
+            })
+        });
+    }
+    var tagid = ""
+    //关联规则
+    function associated(val) {
+        tagid = val.split(",")[0]
+        $('#cuserRule').DataTable({
+            "destroy": true,
+            "paging": true,
+            "lengthChange": false,
+            "searching": false,
+            "ordering": false,
+            "info": true,
+            "autoWidth": false,
+            "serverSide": true,
+            "ajax": {
+                url: "/service/tag/ruleList",
+                type: "post",
+                data: {"eid": val.split(",")[1]},
+            },
+            "language": {
+                "url": "/dist/js/dataTables.chinese.lang"
+            },
+            "fnDrawCallback": function () {
+                this.api().column(0).nodes().each(function (cell, i) {
+                    cell.innerHTML = i + 1;
+                });
+            },
+            "columns": [
+                {"data": null, width: "1%"},
+                {"data": "", width: "1%", render: function() {
+                        return `<input type="checkbox" name="ckb-rule" onclick="singleSelect(this)" style="text-align: center">`
+                    }},
+                {"data": "s_tagname", width: "20%"},
+                {"data": "s_depart", width: "10%"},
+                {"data": "i_updatetime", width:"10%", render: function (val) {
+                        var dt = new Date()
+                        dt.setTime(parseInt(val) * 1000);
+                        return dt.format("yyyy-MM-dd hh:mm:ss")
+                    }},
+            ],
+        });
+        $('#modal-associated').modal("show")
+    }
+    function saveTagrule() {
+        var ids = [];
+        var table = $('#cuserRule').dataTable();
+        var nTrs = table.fnGetNodes();
+        for (var i = 0; i < nTrs.length; i++) {
+            if ($(nTrs[i].childNodes[1]).find("input").prop("checked")) {
+                ids.push(table.fnGetData(nTrs[i])._id);
+            }
+        }
+        $.ajax({
+            url: "/service/euser/tag/associated",
+            type: "post",
+            data: {"_id": tagid, "ids": ids.join(",")},
+            success: function (r) {
+                if (r.rep) {
+                    // window.location.reload()
+                    showTip("关联成功", 1000);
+                    $('#modal-associated').modal("hide")
+                } else {
+                    showTip("关联失败", 1000);
+                }
+            }
+        })
+    }
+    function select_Depart() {
+        //获取用户自定义规则
+        var c_id = getParam("id")
+        $.ajax({
+           url:"/service/customer/history/allrule",
+           type:"POST",
+           data:{"c_id":c_id},
+           success:function (r) {
+                if (r.status=="success"){
+                    var html = ""
+                    for (var i=0;i<r.data.length;i++){
+                        if (r.data[i].department_rule.length!=0){
+                            for (var l=0;l<r.data[i].department_rule.length;l++){
+                                html += '<tr><td><input type="checkbox" id="selrow"/></td><td>'+'</td><td>'+r.data[i].depart_name+'</td><td>'+r.data[i].department_rule[l].s_tagname+'</td><td>'+formattime(r.data[i].department_rule[l].i_updatetime)+'</td>';
+                                if (r.data[i].department_isuse ==1){
+                                    html += "<td>"+"已启用"
+                                }else{
+                                    html += "</td><td>"+"未启用"
+                                }
+                                if (r.data[i].department_rule[l].i_isuse ==1){
+                                    html += "</td><td>"+"已启用"+"</td>"
+                                }else{
+                                    html += "</td><td>"+"未启用"+"</td>"
+                                }
+                                html += "<td class='hidden'>"+r.data[i].department_rule[l]._id+"</td>"
+                            }
+                        }
+                    }
+                    $(".history_rules").html(html)
+                }
+           }
+        });
+        $("#modal-history").modal("show");
+    }
+    function getParam(name) {
+        var search = document.location.search;
+        // alert(search);
+        var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");
+        var matcher = pattern.exec(search);
+        var items = null;
+        if (null != matcher) {
+            try {
+                items = decodeURIComponent(decodeURIComponent(matcher[1]));
+            } catch (e) {
+                try {
+                    items = decodeURIComponent(matcher[1]);
+                } catch (e) {
+                    items = matcher[1];
+                }
+            }
+        }
+        return items;
+    };
+    function formattime(date) {
+        let _date = new Date(parseInt(date)*1000);
+        let y = _date.getFullYear();
+        let m = _date.getMonth() + 1;
+        m = m < 10 ? ('0' + m) : m;
+        let d = _date.getDate();
+        d = d < 10 ? ('0' + d) : d;
+        // console.log( y + '-' + m + '-' + d + ' ' + ' ' + h + ':' + minute + ':' + second)
+        let dates = y + '-' + m + '-' + d;
+
+        return dates;
+    }
+    
+    function saveHistoryRule() {
+
+    }
+</script>
+/service/cuser/rule/list

+ 6 - 2
src/web/templates/private/customer_list.html

@@ -108,8 +108,9 @@
                         if (row.i_state == 1) {
                             tmp = '<div>' +
                                 '<a class="btn btn-sm btn-default" disabled="true">转企</a>&nbsp;&nbsp;' +
-                                '<a class="btn btn-sm btn-warning" onclick="SynEnt(\'' + val + '\')">同步</a>' +
-                                '</div>';
+                                '<a class="btn btn-sm btn-warning" onclick="SynEnt(\'' + val + '\')">同步</a>&nbsp;&nbsp;' +
+                                '<a class="btn btn-sm btn-default" onclick="historyData(\''+ val +'\')">历史数据</a>'+
+                                '</div>'
                         }else {
                             tmp = '<div>' +
                                 '<a class="btn btn-sm btn-primary" onclick="toEnt(\''+ val +'\')">转企</a>&nbsp;&nbsp;' +
@@ -173,4 +174,7 @@
             })
         })
     }
+    function historyData(val) {
+        window.location.href = "/service/customer/history?id=" + val
+    }
 </script>