1. 功能描述

在portal 设计时,我们需要先定义portal栏目,
栏目的工作原理是: 1.我们需要定义栏目获取数据的方法。 2.我们需要定义展示这些数据的模版。

PORTAL在获取栏目时,会先调用获取数据的方法,然后根据模版(freemark)渲染成html进行展示。

2. 操作步骤

平台有提供默认的列表,tab列表,消息盒子,日程等栏目类型的栏目定义,处理这些用户可根据自己的业务创建一下里面定义。例如:设计好一张图标,需要挂到首页,那我们可以定义一个图标的栏目定义。

是否公共栏目:当平台有多租户时,为公共栏目,那租户也可以使用该栏目。

栏目定义默认有七种栏目类型

2.1 列表

2.1.1 调用方法

配置属性

属性 说明
更多的URL 跳转到更多的URL路径
类型 获取数据类型(调用方法,自定义查询)
获取数据方法 当类型是调用方法时,就需要配置获取数据方法,这个方法可以返回数据,数据可以列表也可以对象
调用自定义查询 当类型是自定义查询时,可以选择一个配置好的自定义查询
<div class="gridLayoutClass">
    <div class="headPClass">
        <span style="display: inline-block;font-size: 16px;">{{insColumnDef.name}}</span>
        <div style="float:right;">
             <div class="journalism_span"> <span @click="moreUrl()">更多</span> <span @click="refresh">刷新</span> </div>
        </div>
    </div>
    <div class="bodyDivClass">
        <ul>
            <li class="itmelist" v-for="(obj,index) of data" :key="obj.instId" v-if="index <=5">
                <p @click="handleBpmInst(obj)">{{obj.subject}}</p>
                <span>{{obj.createTime}}</span>
            </li>
        </ul>
    </div>
</div>

编辑模板,后端提供的数据为data ,data 可以是一个列表,也可以是一个对象。

  • 如果是列表 使用 v-for 进行展示
  • 如果是对象 就使用 data.属性 进行展示

2.1.2 调用自定义查询

<div class="gridLayoutClass">
    <div class="headPClass">
        <div style="display:inline-block;" >{{insColumnDef.name}}</div>
        <div style="float: right">
          <div style="float: right">
            <div class="journalism_span"> <span @click="moreUrl()">更多</span> <span @click="refresh">刷新</span> </div>
        </div>
        </div>
    </div>
    <div class="bodyDivClass">
        <ul>
            <li class="itmelist" v-for="(item,index) of data" :key="item.pkId" >
                  <p>{{item.GSMC}}</p>
                <span>{{item.GJR_NAME}}</span>
            </li>
        </ul>
    </div>
</div>

2.2 消息盒子

2.3 新闻公告

2.4 tab标签页

列表的模板如下:

<div class="page-header-index-wide">

      <div class="salesCard" headPClass>
        <a-tabs default-active-key=0 size="large"  @change="changeKey" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
          <div class="extra-wrapper" slot="tabBarExtraContent">
            <div class="extra-item">
              <span class="btnSpan" @click="moreUrl()">
                <a-icon type="dash"></a-icon>
              </span>
              <span class="btnSpan" @click="refresh">
                <a-icon type="redo"></a-icon>
              </span>
            </div>
          </div>
          <a-tab-pane class="hetlist" v-for="(obj,index) of data"  :tab="obj.name" :key="index">
            <portal-layoutview ref="innerLayout"  :insColumnDef="obj.insColumnDef"></portal-layoutview>
          </a-tab-pane>
        </a-tabs>
      </div>

  </div>

2.5 日程

2.6 VUE组件

在有些情况下,门户组件交互比较复杂的情况,我们通过列表,这些搞不定。需要自己开发组件,通过加载组件,实现特定的一些需求。

开发组件

配置组件路径

组件内可写
this.$parent.insColumnDef;

2.7 图形组件

可以使用上述的VUE组件的模式开发。

组件开发的可以查看我们的源代码示例。

2.7.1 开发自己的图形组件

用户可以简单的开发自己的组件。

参考ExampleCharts 代码:

<template>
    <div ref="eCharts" style="height: 100%"></div>
</template>

<script>
    import BaseCharts from "./BaseCharts";
    export default {
        name: "ExampleCharts",
        mixins:[BaseCharts],
        mounted(){
            this.draw();
        },
        methods: {
            draw(){
                //这个格式可以参考echarts。
                var option={};
                this.drawCharts(option);
            }
        }
    }
</script>

用户只需要简单的构建option json 即可。

2.7.2 添加栏目定义

这里填入我们开发好的图形组件,放入即可。

2.7.3 添加到门户

添加门户设计,点击添加栏目,选中自己新增的栏目即可。

文档更新时间: 2021-05-18 17:56   作者:zhuyunyun