门户定制案例-组织详情页面初始化扩展

案例需求

在组织详情页面中,添加根组织,默认会选中分配组织角色,在某些租户中,需要不默认选中。即需要在门户自定义组件中,在组织详情页面的初始化事件中,修改分配组织角色绑定的数据

实现方法

  1. 定制企业门户应用,参考《门户定制
  2. 定制“组织详情”页面初始化状态方法 onInitState
    1. 不能使用页面组件的 onPageInitState 事件,页面组件事件因为存在时机问题,不支持扩展
    2. 使用页面的生命周期 onInitState 实现扩展
  3. 在 onConfigContextInit 方法中执行 this.inited = false,让页面每次加载都执行 onInitState 方法

在页面中增加初始化状态方法

页面组件的事件,不能用于扩展,因此在页面 JS 文件中,添加页面生命周期 onInitState 方法,代码如下

export default class IndexPage extends Page {
    constructor(props, context) {
        super(props, context);
    }

    //页面生命周期-初始化状态
    async onInitState() {
        let pageState = await super.onInitState();   
        return {...pageState};
    }

    //页面组件事件-数据初始化
    onPageInitState = async (event) => {
        ...
    }
}

在门户自定义组件中,扩展页面初始化状态方法

复制门户自定义组件的 portalConfig.config.js 为 portalConfig.config.pc.js ,添加组织详情页面的页面初始化状态方法的 before 扩展点

  • 组织详情页面是:model/UI2/opm-pcx/dialog/orgDetail.w
  • 页面初始化状态方法是:onInitState
  • before 事件是:@before
  • 获取页面对象使用:configContextProcessor.page
  • onConfigContextInit 方法的最后,执行 this.inited = false; 使得每次打开页面时都会执行

代码如下

    async onConfigContextInit(configContextProcessor) {
        let portalConfig = {
            "config": {
                "/entry": {
                    "/opm-pcxapp": {
                        "/opm-pcx": {
                            "/dialog": {
                                "/orgDetail.w": {
                                    "onInitState": {
                                        "@before": () => { 
                                            configContextProcessor.page.comp("pageData").setValue("assignRole",0);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        };
        merge(configContextProcessor.page.configContext, portalConfig);
        ConfigContextProcessor.enhancePageAdvice(configContextProcessor.page);
        this.inited = false;//设置后,会多次执行
    }

results matching ""

    No results matching ""