follow.js 6.6 KB
define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-theme'], function ($, undefined, Backend, Table, Form, Echarts) {

    var Controller = {
        index: function () {

            $(document).on("click", "#sync", function () {
                Fast.api.ajax({
                    url: "/qywx/sync",
                    type: 'post',
                    data: {
                        "type": "sync_follow_user_list",
                        "all": true
                    },
                    dataType: 'json',
                    success: function (ret) {
                        layer.msg("同步成功,页面将重新加载...");
                        setTimeout(function () {
                            location.reload();
                        }, 500);
                    }
                });
            });

            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'qywx/follow/index',
                    sendmsg_url: 'reservoir/sms/sendmsg',
                    dragsort_url: '',
                    table: 'qywx_follow_user',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    [
                        {field: 'id', title: __('Id')},
                        {field: 'corp_name', title: "所属企业", formatter: Table.api.formatter.normal},
                        {field: 'avatar', title: '头像', events: Table.api.events.image, formatter: Table.api.formatter.image },
                        {field: 'name', title: __('Name')},
                        {field: 'gender', title: '性别', searchList: { "0": "未知", "1": "男", "2": "女" }, formatter: Table.api.formatter.normal },
                        {field: 'mobile', title: '手机号'},
                        {field: 'email', title: '邮箱'},
                        {
                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'detail',
                                    title: __('发送通知'),
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    icon: 'fa fa-list',
                                    url: 'qywx/follow/sendmsg',
                                    // callback: function (data) {
                                    //     Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"});
                                    // }
                                },
                                {
                                    name: 'chart',
                                    text: "统计",
                                    icon: 'fa fa-line-chart',
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    url: 'qywx/follow/chart',
                                    extend: 'data-area=\'["90%","80%"]\'',
                                },{
                                    name: 'sync_contact',
                                    text: "同步联系人",
                                    icon: 'fa fa-exchange',
                                    classname: 'btn btn-xs btn-success btn-ajax',
                                    url: 'qywx/follow/syncContact',
                                }
                            ]
                        }
                    ]
                ]
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        sendmsg: function () {
            Controller.api.bindevent();
        },
        chart: function () {
            var bucket = "week";
            var contactType = "new_contact_cnt";
            var messageType = "chat_cnt";
            var setCount = function (bucket) {
                $.each(Config[bucket].count, function(key, val) {
                    $("#count_"+key).html(val);
                });
            };
            var setOption = function (bucket, type) {
                var option = {
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'cross',
                            label: {
                                backgroundColor: '#6a7985'
                            }
                        }
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                        data: Config[bucket].x
                    },
                    yAxis: {
                        type: 'value',
                        minInterval: 1
                    },
                    series: [{
                        data: Config[bucket][type].y,
                        type: 'line',
                        smooth: true,
                        areaStyle: {}
                    }]
                };

                var Echart = Echarts.init(document.getElementById(type), 'walden');
                Echart.setOption(option);
            };

            $(document).on("click", "#bucket li a[data-toggle=\"tab\"]", function () {
                bucket = $("#bucket li.active a").data("type");
                setCount(bucket);
                setOption(bucket, contactType);
                setOption(bucket, messageType);
            });

            $(document).on("click", ".charts-custom a[data-toggle=\"tab\"]", function () {
                var that = this;
                var id = $(that).attr("href");
                var type = id.substr(1);

                contactType = $("#contact .chart.active").attr("id");
                messageType = $("#message .chart.active").attr("id");

                setOption(bucket, type);

                setTimeout(function () {
                    var chart = Echarts.getInstanceByDom($(id)[0]);
                    chart.resize();
                }, 0);
            });

            setCount(bucket);
            setOption(bucket, contactType);
            setOption(bucket, messageType);

            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    };
    return Controller;
});