1. 概述

消息盒子的功能是为了显示某一个事项的数量,并且点击盒子的时候,可以去到更多的页面。

这里需要说明的是,我们的显示的数量可以来自一个JAVA方法和SQL。本文就介绍一个消息盒子的定义过程。

2. 实现步骤

2.1 定义方法

这个方法是返回一个消息的数量

我们在定义消息盒子的时候,这里我们定义了一个方法。

这个方法如何编写呢?

我们以我的消息为例来说明。

public Integer getMyInnerMsgCount(){
        IUser curUser= ContextUtil.getCurrentUser();
        Integer msgCounts=infInnerMsgService.getCountByRecUserId(curUser.getUserId(),curUser.getRoles());
        return msgCounts;
    }

可以看到这个代码我们返回的是一个整形的数据。

另外我们在写脚本的时候使用的是 portalScript, 这样能够调用到这个类中的方法的原因是我们这个 PortalScript 实现了 GroovyScript 接口。

2.2 定义SQL

消息数量的获取除了可以通过自定义脚本实现,也可以通过SQL语句实现。

我们通过一个例子来说明如何定义SQL。

这个例子需要实现的是获取表单库中创建的表单个数。由于表单的数据和当前的门户数据库不在一个数据库,因此我们需要在 门户的微服务创建一个指向 表单库的数据源。

在上图中我们看到我们定义了一个SQL语句,这个SQL语句实际是一个JAVA脚本,这个脚本返回了一段SQL语句。

这个SQL语句可以支持常量。比如:

String sql = "select count(1) from FORM_PC where CREATE_BY_='[USERID]'";
return sql;

执行的结果为:
select count(1) from FORM_PC where CREATE_BY_='1'

2.3 消息盒子返回的数据格式

后台返回数据格式为
List<InsMsgDef>

参数 说明
content 显示标题
count 数量
color 颜色
icon 图标
url 更多URL

2.4 消息模板格式

<div class="msgBoxs">
    <ul class="msgUl">
        <li class="msgItme"
            :style="{width:listWidthFn}"
            v-for="(obj,index) of data"
          :key="index">
        <div @click="moreUrl(obj.url)" class="contentBox" :style="{'background':colol = obj.color != ''?obj.color :'red'}">
            <div class="msgContent">
              <b>{{obj.count}}</b>
              <p>{{obj.content}}</p>
          </div>
          <div class="header_icon">
                    <a-icon v-if="!obj.icon.includes('type')" :type="obj.icon" />
                    <my-icon v-else-if="['customIcon','userCustomIcon'].includes(JSON.parse(obj.icon).type)" :type="JSON.parse(obj.icon).icon"></my-icon>
                    <a-icon v-else="JSON.parse(obj.icon).type" :type="JSON.parse(obj.icon).icon"></a-icon>
          </div>
        </div>
    </li>
    </ul>
</div>
文档更新时间: 2021-06-07 15:18   作者:zyg