You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.2 KiB

此处维护暂停转移至ibklinker/platform-home-frontend

系统平台 v3.0

基于umi + ant-design/pro-layout + qiankun
根据系统配置菜单权限及属性,动态注册路由;
不同路由Component内部处理功能逻辑可扩展可延展

一、新特性

  1. 支持app、link以及microapp三种接入方式
  2. 新增“本地调试模式”
  3. 基于ProLayout自带路由重构菜单延展对多个同模块页面打开的支持
  4. 退出浏览器需要重新登陆
  5. 新增底部栏下载等功能移到footer内
  6. 新增菜单查找并打开
  7. 后端主动推送系统级提醒,打开模块
  8. 多主题

二、TODO

  1. 浏览状态记忆

北科工研智慧平台使用说明

一、后端接口

  • 系统通知

    如果通知需要打开模块,则用户需要对该模块有浏览权限 10秒内会过滤同模块通知请求

    //POST /api/trunk/notice/post
    //参数
    {
        mid: string //指定模块id可在导航管理获得用户需有权限
        app: string //预留
        title: string //推送标题
        msg: string //推送内容
        showtype: 0|1|2 //0-仅通知 1-通知且提供跳转 2-通知且直接跳转
        filter: { //可选参数,推送过滤
            loginId: string //可选参数,指定接收人
        }
        param: { //可选参数给模块传递get参数
            //参数名:参数值
        }
    }
    
  • 群发消息

    前端模块需要连接平台websocket服务

    //POST /api/trunk/custom/post
    //参数
    {
        data: object, //任意数据
    }
    

二、前端组件

  • 监听kafka

    前端接收消息的频率会被限制,不适用高频消息处理

    import Kafka from "@/components/iBKLinker/comm/kafka"
    
    const mq = new Kafka({
        ws: "ws://172.15.199.73:12116",
        onGranted(isGranted) {
            mq.startListen(["SCAN_GUN"]); //授权完毕后开始监听Topic列表
        },
        onReceive(msg) {
            console.log("receive mq message", msg); //收到消息
        }
    })
    mq.seconds = 1; //频率限制最低0.5秒
    mq.start(); //启动ws服务
    
    mq.stopListen(["SCAN_GUN"]); //停止监听Topic
    
  • 协同作业

    import Cooperation from "@/components/iBKLinker/comm/coop"
    
    const cooperate = new Cooperation({
        ws: "ws://172.15.199.73:12116",
        onGranted(isGranted) {
            cooperate.startListen(); //授权完毕后,开始监听,未经授权无法监听
        },
        client: "", //客户端名称可以设为undefined
        groups: ["Hostmain"], //参与协同分组,可以同时参与多个分组,建议以所在页面为名
        onTrigger: (msg) => {
            //所有消息触发回调如果设置onTrigger那么其他次级回调函数将会被忽略
            console.log("cooperation onTrigger", msg)
        },
        onReceive(who, data) {
            //收到协同消息who谁发送的对应配置的client客户端名称data数据
            console.log("cooperation onReceive", who, data)
        },
    })
    cooperate.start(); //启动ws服务
    cooperate.stopListen(); //退出
    cooperate.doc.updated(); //通知群组数据发生更新
    
  • 对应用开放功能

    需要引用@/library/union针对以单应用、完整连接接入平台的第三方应用

    1.打开其他模块

    let app = new ControlledFrameRuntime()
    app.openPage(moduleId, true, {
        name: "Longe", age: 20, male: true,
    })
    
    //moduleId模块id在模块配置注册后的id登录账号需有访问权限
    //是否打开新页面
    //传递参数
    

    2.系统提醒

    let app = new ControlledFrameRuntime()
    app.systemWarn(moduleId, title, msg)
    

    3.重新登录

    let app = new ControlledFrameRuntime()
    app.doLogin()
    

    4.监听主题变更事件

    let app = new ControlledFrameRuntime()
    app.onChangeTheme((theme) => {
        //do something
    })
    

三、系统设置

  • 调试模式

    进入系统后,连续点击底部栏右侧 Powered By iBKLinker 6次

    名称 功能
    本地地址 本地调试地址
    启用状态 启动、禁用调试模式
    展示区域 框架外部、内部展示

    外部打开需要调试的模块右键Tab标签新开浏览器 内部点击目录将会直接在框架内容区打开其他模块会存在页面404的情况

  • 模块属性

    配置在:系统任务-模块管理

    名称 功能
    固定 固定必须
    全屏 打开后进入浏览器全屏。同时为首屏时无效
    外链 点击目录,在新浏览器窗口打开外部链接
    隐藏 目录中隐藏,但是可被代码打开
    公共 无需权限的公共模块(预留)
    首屏 登录系统后首屏界面,多个首屏时,将会打开序号靠前的