如何给FineReport设置自定义消息提醒工具

 我来答
帆软
2017-02-20 · 上BI选帆软,专注BI十三年!
帆软
帆软软件是世界领先的商业智能和数据分析平台提供商,沉淀数据分析领域十余年,致力于为全球企业提供一站式数据分析解决方案;同时也是行业优质交流平台的组织者。
向TA提问
展开全部
;  
(function($){  
        /*定义一个工具对象,所有的工具以后都放进去*/  
        HG = {};  
        /*定义我们第一个基础类OBJ*/  
        HG.OBJ = function(options){  
                //保证子类能够继承父类的默认成员变量  
                this.options = $.extend(this._defaultOptions(), options);  
                //初始化对象  
                this._init();  
        };  
        $.extend(HG.OBJ.prototype, {  
                _defaultOptions: function () {  
                        return {classType:"OBJ"};  
                },  
                _init:function(){}  
        });  
        /*定义用于生成子类的方法*/  
        HG.extend=function(parent,options){  
                var son = $.extend(parent,{});  
                son.prototype = $.extend(parent.prototype,options);  
                return son;  
        };  
        /*第一个就是要构建我们的通讯对象*/  
        /****定义一些通讯用的私有成员和方法*****/  
        //发送通道的状态,为了减轻服务器压力,采取单通道发送  
        var status = true;  
        var sendMsgList = [];  
        var receiveMsgList = [];  
        var server = null;  
        var sendType = null;  
        var dataType = null;  
        //最终发送消息的方法  
        var send=function(msg,onReceive,onComplete,onFailed){  
                if(!msg.inList){  
                        msg.inList = true;  
                        sendMsgList.push(msg);  
                }  
                if(status){  
                        status = false;  
                        var tempSendMsgList = sendMsgList;  
                        sendMsgList = [];  
                        FR.ajax({    
                                url: server,    
                                type: sendType,  
                                dataType:dataType,  
                                data:{msgList:tempSendMsgList},  
                                success : function(receiveMsgList){  
                                        status = true;  
                                        onReceive(receiveMsgList);  
                                },  
                                complete: function(XMLHttpRequest,textStatus){  
                                        status = true;  
                                        onComplete(XMLHttpRequest,textStatus);  
                                },  
                                error: function(XMLHttpRequest, textStatus, errorThrown){  
                                        status = true;  
                                        onFailed(XMLHttpRequest, textStatus, errorThrown);  
                                }  
                        });  
                }else{  
                        setTimeout(function(){  
                                send(msg,onReceive,onComplete,onFailed);  
                        },1000);  
                }  
        };  
        var formatDate = function(date){  
                var d = new Date(date);  
                return d.getFullYear()+"-"+d.getMonth()+"-"+d.getDate()+"  "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();  
        };  
        //通讯类,可以自己重写onReceive的方法来实现自己的消息工具,消息的内容为JSON格式,自己定义就好了  
        HG.CommunicationClient = HG.extend(HG.OBJ,{  
                _defaultOptions: function () {  
                        return {  
                                classType:"CommunicationClient",  
                                //默认只跟当前的服务器进行联络  
                                server:FR.servletURL+"?op=msgserver",  
                                sendType:"POST",  
                                dataType:"JSON",  
                                //轮询的频率,默认3秒1次,越快服务器和客户端压力越大  
                                pollingRate:3000  
                        };  
                },  
                _init:function(){  
                        server = this.options.server;  
                        sendType = this.options.sendType;  
                        dataType = this.options.dataType;  
                        this.polling4Receive();  
                },  
                send:function(msg){  
                        var self = this;  
                        send(msg,self.onReceive, self.onComplete, self.onFailed);  
                },  
                //给某个用户发文本消息  
                sendText:function(toUserId,text){  
                        this.send({action:"send",userId:toUserId,time:new Date().getTime(),content:{text:text}})  
                },  
                onReceive:function(msg){  
                        if(msg.length>0){  
                                for( var i=0; i<msg.length; i++ ){  
                                        console.info(formatDate(msg[i].time)+"  "+msg[i].name+" "+decodeURI("%E8%AF%B4%EF%BC%9A")+" "+msg[i].content.text);  
                                }  
                        }  
                },  
                onFailed:function(XMLHttpRequest, textStatus, errorThrown){  
                },  
                onComplete:function(XMLHttpRequest, textStatus){  
                },  
                /*向服务器轮询,检查是否有自己的消息*/  
                polling4Receive:function(){  
                        var self = this;  
                        self.send({action:"findMessage",inList:false});  
                        setTimeout(function(){  
                                self.polling4Receive();  
                        },self.options.pollingRate);  
                }  
        });  
        //先生成一个对话工具  
        HG.Talk = new HG.CommunicationClient();  
})(jQuery);

在任意一个你需要的系统或者界面引入这段JS,

然后最基本的文本消息发送HG.Talk.sendText(接收者的用户名,文本消息的内容);

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式