门户定制案例-组织详情页面初始化扩展
案例需求
在组织详情页面中,添加根组织,默认会选中分配组织角色,在某些租户中,需要不默认选中。即需要在门户自定义组件中,在组织详情页面的初始化事件中,修改分配组织角色绑定的数据
实现方法
- 定制企业门户应用,参考《门户定制》
- 定制“组织详情”页面初始化状态方法 onInitState
- 不能使用页面组件的 onPageInitState 事件,页面组件事件因为存在时机问题,不支持扩展
- 使用页面的生命周期 onInitState 实现扩展
- 在 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;//设置后,会多次执行
}