电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

自定义右下角弹窗多场景运用实例

来源:金蝶云社区作者:金蝶2024-09-162

自定义右下角弹窗多场景运用实例


场景需求:

金蝶云星空系统右下角弹窗有3个场景举例:

1、指定在线用户通知类即时弹窗:在某个功能操作后,给指定用户发送即时类消息弹窗,该消息不会存储,只要用户在线则会收到,不在线用户则无效

2、用户普通通知消息弹窗:在某个功能操作后,不即时弹窗,指定用户将通知消息数据储存起来,设置消息失效时间,待用户登录后,以及心跳事件时读取数据并弹窗

3、给自己即时弹窗(多样化):在某个功能操作后,根据需求自定义组合内容,给自己弹窗

以下根据给出的插件案例依次介绍


一、指定在线用户通知类即时弹窗

描述:该类型弹窗不会储存数据,按照环境的运行状态,主动把消息发送给在线用户

样例:(c#)

    protected JObject CreateMessageObject(string strTitle, string strContent)
        {
            JObject data = new JObject();
            data["height"] = 150;
            data["width"] = 330;
            JArray items = new JArray();
            data["items"] = items;

            JObject item = new JObject();
            item["title"] = strTitle;
            item["content"] = strContent;
            item["stackbroad"] = true;
            item["stackbroadmillss"] = 2000;//单位毫秒
            items.Add(item);
            return data;
        }

上面方法可直接复制使用,然后在插件中,需要发送的地方,调用平台提供方法

this.View.BroadcastToOnlineUser(this.CreateMessageObject("会议通知","你的会议时间还差15分钟,请准备及时参加"),new List<long>() { 接受消息用户ID(多个用户逗号)) });


二、用户普通通知消息弹窗

描述:该场景当前方案是借用系统自带的广播消息功能,将数据插入广播消息表(T_BAS_BROADCASTMSG)中,在系统用户登录后,以及正常心跳事件,都会根据消息的失效时间获取并且弹出

样式:(c#)

public override void ButtonClick(ButtonClickEventArgs e)
        {
            base.ButtonClick(e);
            if (e.Key.EqualsIgnoreCase("FSendMsgTest"))
            {
                var meta = FormMetaDataCache.GetCachedFormMetaData(this.View.Context, "BAS_BROADCASTMSG");//广播消息
                var dataObj = new DynamicObject(meta.BusinessInfo.GetDynamicObjectType());
                dataObj["FCREATEDATE"] = DateTime.Now;
                dataObj["FTITLE"] = new LocaleValue("消息标题");
                dataObj["FCONTENT"] =new LocaleValue("消息内容测试");
                dataObj["FCreatorId_Id"] = this.View.Context.UserId;
                dataObj["FSendType"] = 1;
                dataObj["FIsSendBroadcast"] = true;
                dataObj["FFailureTime"] = DateTime.Now.AddHours(0.5);//预计半小时后失效,预计该消息什么时候失效
                //如果是指定用户,则需要设置指定用户数据,如全部所有用户,则不需要下面逻辑
                //======
                long[] senduserid = new long[] { 100063 };
                DynamicObjectCollection revier = dataObj["FReceiver"] as DynamicObjectCollection;
                if (revier != null)
                {
                    foreach (long userid in senduserid)
                    {
                        DynamicObject robj = new DynamicObject(revier.DynamicCollectionItemPropertyType);
                        robj["FReceiver_Id"] = userid;
                        revier.Add(robj);
                    }
                }
                //======
                BusinessDataServiceHelper.Save(this.View.Context, dataObj);
            }
        }

说明:上面案例中:

1、FFailureTime字段是指消息的失效时间,该值越短越好,目前系统该广播消息,是没有已读,未读设计,也没有弹出次数的记录设计,这个是通知消息,根据这个失效时间大于当前系统时间,满足条件者始终都会弹出来,也即一个消息会不停的重复弹出,直到失效过了失效时间为止

2、据上第1点的描述,如果想弹出一次,后面不弹,或者有已读未读,或者用户想看到已读的消息等等,就不能用此方案,建议可以研究借用工作流信息中心功能的普通消息功能,但是这种方式的消息不能右下角弹出


三、给自己即时弹窗(多样化)

描述:该弹窗是程序中,调用封装的弹窗接口,将信息实时弹窗出来,弹出的支持不同场景和运用

1、普通通知消息弹窗,样例(c#)

public override void ButtonClick(ButtonClickEventArgs e)
        {
          base.ButtonClick(e);
              if (e.Key.EqualsIgnoreCase("FShowNormlMsg"))
                   {
                     string msg = string.Format("客户编号{0}的订单{1}审核流程已经提交成功,请及时联系{2},催促审核!", "00001", "DD000001", "0755-12345678");
                     Kingdee.BOS.DataEntity.LowerRightPopMsgEntity popmsg = new DataEntity.LowerRightPopMsgEntity();
                     popmsg.Title = string.Format("订单{0}发送提醒", "DD000001");
                     popmsg.Content = msg;
                     

自定义右下角弹窗多场景运用实例

场景需求:金蝶云星空系统右下角弹窗有3个场景举例:1、指定在线用户通知类即时弹窗:在某个功能操作后,给指定用户发送即时类消息弹窗,该...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信