门户定制案例-组织及用户扩展
运行效果
组织和用户支持添加扩展表,如下图所示,组织增加“项目”列,用户增加“生日”列
实现方法
- 定制企业门户应用,参考《门户定制》
- 增加“使用 uaa 扩展”环境变量
- 增加组织扩展表,人员扩展表
- 增加新的组织管理、组织详情页面,编辑组织扩展表数据
- 增加新的用户管理、用户详情页面,编辑用户扩展表数据
- 配置菜单
- 设置权限
切换到门户自定义组件端
在“高级”中,开启组件开发,如下图所示
在“端”列表中选择门户自定义组件,切换到门户自定义组件端,如下图所示
添加环境变量
在“门户自定义”组件中,添加环境变量 UAAX_ENABLED,表示使用 uaa 扩展,postOrgs 请求才会处理扩展数据 extend。添加环境变量参考《使用环境变量》
在 /model/service/comp/portalConfig/deploy/dev.def.xml 文件和 production.def.xml 文件中,添加环境变量 UAAX_ENABLED,代码如下
<property name="UAAX_ENABLED" env="UAAX_ENABLED" value="true" readonly="true">
<label label = "UAAX_ENABLED"/>
</property>
添加位置,如下图所示
特别说明
- 如果使用本地 IDE,重新连接云端后,需要重新打开 Eclipse
添加扩展表
系统的组织表是 orgs,用户表是 users,用户表提供了3个扩展字段 extdata1、extdata2 和 extdata3。组织用户的扩展不是在原表的基础上增加列,而是增加扩展表。组织用户的扩展表,表名固定,主键名固定。组织扩展表名为 orgsx,用户扩展表名为 usersx,主键都是 id。
添加组织扩展表
在门户自定义组件端 comp/portalConfig,添加组织扩展表 orgsx,主键的列标识设置为 id,如下图所示
注意数据库表名必须填写,否则生成的数据表名会有前缀,如下图所示
添加用户扩展表
在门户自定义组件端 comp/portalConfig,添加用户扩展表 usersx,主键的列标识设置为 id,如下图所示
注意数据库表名必须填写,否则生成的数据表名会有前缀,如下图所示
设置扩展表在其他端可见
在 export.json 文件中声明的数据集,在其他端可见。在 model/service/comp/portalConfig 目录下添加 config 目录,在 config 目录下添加 export.json 文件,内容如下
[
{
"path":"comp/portalConfig/usersx.data.m",
"editData":true,
"editLabel":false
},{
"path":"comp/portalConfig/orgsx.data.m",
"editData":true,
"editLabel":false
}
]
设置之后,重新加载 IDE 使之生效
扩展组织管理页面
原组织管理页面是 UI2/opm-pcx/org.w,组织详情页面是 UI2/opm-pcx/dialog/orgDetail.w
新建组织详情页面
切换到门户自定义组件端,在 portalConfig/components/portalConfig 目录上,点击 + 按钮,弹出新建对话框
文件类型和页面类型均选择页面,点击确定按钮,打开添加页面窗口
选择“页面继承”模板
在“父页面地址”中输入组织详情页面的完整路径。组件默认只能继承组件内部页面,因此继承外部页面,需要手工输入外部页面完整路径
输入页面名称和显示名称
组件中的页面统一放到 dialog 目录下,dialog 目录无需手工创建,系统会自动创建。新建的组织详情页面,就放到了 dialog 目录下,这个页面继承自原组织详情页面
在页面上,添加组织扩展表,id 设置为 orgsxData(系统已使用这个 id 实现获取扩展信息和校验方法),设置自动模式为自动加载无数据新增
设置过滤条件为:主键 等于(支持空字符串) 页面参数.组织ID
在表单中,添加列、表单项、输入框等组件,绑定组织扩展表中的列
原组织详情页面的 JS 中,已经提供了获取扩展信息方法 getOrgsxInfo,判断输入是否合法方法 checkOrgsxInputValid,代码如下,如需修改,可以重载这两个方法
getOrgsxInfo = () => {
let orgsxData = this.comp("orgsxData");
if (orgsxData) {
let row = orgsxData.current.toJson({ ui: true });
delete row.id
return row;
} else {
return undefined;
}
}
//校验扩展信息是否合法
checkOrgsxInputValid = () => {
let orgsxData = this.comp("orgsxData");
if (orgsxData && !orgsxData.valid()) {
message.error(orgsxData.validInfo(true));
return false;
}
return true;
}
新建组织管理页面
新建“组织管理”页面,继承原组织管理页面,具体操作请参考新建组织详情页面。
选择“组织”数据组件,设置与组织扩展表的关联查询,查询扩展表中的列
在表格添加关联查询出的扩展表的列
修改抽屉组件的页面文件属性,改为新添加的组织详情页面
扩展用户管理页面
原用户管理页面是 UI2/opm-pcx/users.w,用户详情页面是 UI2/opm-pcx/dialog/psmDetail.w
新建用户详情页面
新建“用户详情”页面,继承原用户详情页面,具体操作请参考新建组织详情页面
添加用户扩展表,id 设置为 usersxData(系统已使用这个 id 实现获取扩展信息和校验方法),设置自动模式为自动加载无数据新增
设置过滤条件为:主键 等于(支持空字符串) 页面参数.人员ID
在表单中,添加列、表单项、输入框等组件,绑定用户扩展表中的列
原用户详情页面的 JS 中,已经提供了获取扩展信息方法 getUsersxInfo,判断输入是否合法方法 checkUsersxInputValid,代码如下,如需修改,可以重载这两个方法
//获取组织扩展信息
getUsersxInfo=()=>{
let usersxData = this.comp("usersxData");
if(usersxData){
let row = usersxData.current.toJson({ ui: true });
delete row.id
return row;
}else{
return undefined;
}
}
//校验扩展信息是否合法
checkUsersxInputValid=()=>{
let usersxData = this.comp("usersxData");
if(usersxData && !usersxData.valid()){
message.error(usersxData.validInfo(true));
return false;
}
return true;
}
新建用户管理页面
新建“用户管理”页面,继承原用户管理页面,具体操作请参考新建组织详情页面。
选择“用户”数据组件,设置与用户扩展表的关联查询,查询出扩展表中的列
在表格中添加扩展表的列
修改抽屉组件的页面文件属性,改为新添加的用户详情页面
配置菜单
配置门户菜单,在运行时,使用“应用资源管理”,在调试时,使用修改 serviceMetaInfo 文件
配置开发调试时的菜单
由于企业门户应用,不支持 serviceMetaInfo 的散文件,门户调试时,又不支持使用应用资源管理,因此只能临时修改 serviceMetaInfo 文件。关于企业门户的服务元信息参考《服务元信息》
serviceMetaInfo 中的配置内容可参考原用户管理及组织管理,在 /UI2/pc/config/serviceMetaInfo.json 和 /service/service-meta-info/serviceMetaInfo.json 两个文件中,配置组织管理和用户管理的菜单,配置如下:
{
"ext": {
},
"types": [
"pcx",
"func"
],
"title": "组织管理2",
"url": "/entry/opm-pcxapp/comp/portalConfig/components/portalConfig/dialog/org.w"
},
{
"ext": {
},
"types": [
"pcx",
"func"
],
"title": "用户管理2",
"url": "/entry/opm-pcxapp/comp/portalConfig/components/portalConfig/dialog/users.w"
}
修改 serviceMetaInfo 文件后,在“服务注册”中,刷新企业门户,以获得新的菜单
配置正式运行时的菜单
在“应用资源管理”中,添加组织管理、用户管理菜单,如下图所示
如果设置了“功能树配置”,则在“功能树配置”中也添加上面的2个菜单
配置权限
由于扩展的页面组织用户页面与原功能页面使用的url、相关标识及权限设置等不一致,因此权限需要重新设置,以“组织管理”页面权限设置为例(实际权限需要按照业务要求设置)如下:
页面发布完成后,先到“系统管理-->权限管理-->应用资源管理”下服务选择“entry”
点击“添加”,新增“子管理员(subadmin)”角色权限,选择你定制的页面菜单,确定保存
权限设置成功后,还需要点击“保存并且发布”按钮,完成发布设置权限才会