企业门户V2定制-组织及用户扩展

场景描述

增加在组织管理功能中维护的组织和人员的数据项 图 1
图 2

实现思路

  • 增加组织扩展表,人员扩展表
  • 在dialog/组织详情、人员详情页面中增加表单组件,绑定扩展表的数据列

实现步骤

1. 开启门户定制

使用租户管理员登录系统,在“应用/服务管理”企业门户V2,开启门户定制(详细操作步骤可参考 门户V2调试

2. 添加服务模块uaax

打开架构,从市场下载服务模板组件,将服务模板添加到架构图中,服务模板名称为uaax

图 3

在服务模块的deploy目录下的几个def文件中,加环境变量UAAX_ENABLED,如果使用本地ide,重新连接云端后,需要重新打开eclipse

<property name="UAAX_ENABLED" env="UAAX_ENABLED" value="true" readonly="true">
    <label label = "UAAX_ENABLED"/>
</property>

图 4

3. 添加新的端

如果要在设计器中给服务模块添加数据集,可以通过添加一个新的端来实现。在高级页面中,点击多模块多端配置拓展。添加子项目,服务标识填入uaax。

图 5

4. 添加组织扩展表

切换到新建的端,添加扩展表。组织扩展表名为orgsx,主键为id,列标识全小写

图 6

注意数据库表名必须填写

图 7

5. 添加人员扩展表

人员扩展表名为usersx,主键为id,列标识全小写

图 8

注意数据库表名必须填写

图 9

6. 设置扩展表在其他端可见

在model\service\uaax\目录下添加config目录,在config目录下添加export.json文件,内容如下

[
    {
        "path":"uaax/usersx.data.m",
        "editData":true,
        "editLabel":false
    },{
        "path":"uaax/orgsx.data.m",
        "editData":true,
        "editLabel":false
    }
]

在export.json文件中定义的数据集,在其他端可见

7.新增门户自定义组件

  1. 进入企业门户云端开发后,打开市场组件“门户自定义”,并开启组件定制 图 9

  2. 在“\UI2\comp\portalConfig\components\portalConfig”组件目录下,新增page/opm目录,将组织及用户管理相关页面放在这里。组织及用户详细页面请参考下面2项操作步骤 图 10

8. 修改组织管理及详情页面

  1. 新建“组织详情”继承页面 图 11
    图 12
    添加组织扩展表,设置自动模式为自动加载无数据新增 图 13
    设置过滤条件为:主键 等于(支持空字符串) 页面参数.组织ID 图 16
    在设计页面上新增自定义字段 图 14
    在js中,添加getOrgsxInfo方法获取扩展信息,扩展信息返回一个json,key为列名,value为数据;添加checkOrgsxInputValid方法判断输入是否合法,用于单击确定按钮前的校验。并重新定义确定事件,实现相应功能,代码示例如下图所示

     import Page from "$UI/opm-pcx/dialog/orgDetail.user";
     import {message} from "antd";
     export default class IndexPage extends Page {
         constructor(...args){
             super(...args);
         }
    
         //获取组织扩展信息
         getOrgsxInfo=()=>{
             let orgxData=this.comp("orgxData");
             let row=orgxData.getCurrentRow().toJson({ format: "simple" });        
             delete row.id
             return row;
         }
    
         //校验扩展信息是否合法
         checkOrgsxInputValid=()=>{
             let orgxData=this.comp("orgxData");
             if(!orgxData.valid()){             
                 message.error(orgxData.validInfo(true));
                 return false;        
             }
             return true;
         }
    
         //确认请求
         insertOrgAndPerson = async () => {
             let self = this;       
             let orgData = this.comp("orgData");
    
             let parentID = this.params.parentRow ? this.params.parentRow.id : "";
             //获取扩展信息
             let orgExtData=this.getOrgsxInfo();
             let orgs = [{
                 "id": orgData.getValue("id") ? orgData.getValue("id") : OpmUtils.createOpmUUID(),
                 "code" : orgData.getValue("code"),
                 "name" : orgData.getValue("name"),
                 "type" : orgData.getValue("type"),               
                 "active" : orgData.getValue("active"),               
                 "parentID": parentID,
                 "extend":orgExtData               
             }]; 
    
             if(parentID == "" && this.comp("pageData").getValue("assignRole")=="1"){
                 //先判断有没有组织用户角色,如果没有则添加该角色
                 let roleData = this.comp("roleData");
                 await roleData.refreshData();
                 if(roleData.count()==0){
                     roleData.newData({defaultValues:[{
                         "id": "org_user",
                         "code": "org_user",
                         "type": "biz",
                         "name": self.convertI18n("组织用户"),
                         "parentRoleCodes": "wait_task_compact,wait_task,portal_contact",
                         "parentRoleNames": self.convertI18n("待办任务(紧凑),待办任务,通讯录功能角色"),
                         "active": "1",
                         "version": "0", 
                         "createdBy": "system",
                         "createdDate": new Date(),     
                         "lastModifiedBy": "system",
                         "lastModifiedDate": new Date()                                     
                     }]});
                     await roleData.saveData();
                 }
                 orgs[0].addRoles = ["org_user"]; 
                 await self.postOrgs(orgs);
             }else{
                 await this.postOrgs(orgs);
             }
         }
    
         //确认
         onOkBtnClick = (event) => {        
             let checkResult=this.checkInputValid()&&this.checkOrgsxInputValid();
             if(!checkResult){
                 return;
             }
             this.insertOrgAndPerson();
         }
     }
    
  2. 修改组织管理页面 同样新建“组织管理”继承页面,具体操作可参考上一步。 选择“组织”数据集,设置与组织扩展表的关联查询 图 15
    在设计器中添加表格字段 图 17

9. 修改用户管理及人员详情页面

  1. 新建“人员详情”继承页面,详细操作请参考上面组织部分 图 11
    添加组织扩展表,设置自动模式为自动加载无数据新增 图 18
    设置过滤条件为:主键 等于(支持空字符串) 页面参数.人员ID 图 19
    在设计页面上新增自定义字段 图 20
    在js中,添加getUsersxInfo方法获取扩展信息,扩展信息返回一个json,key为列名,value为数据;添加checkUsersxInputValid方法判断输入是否合法,用于单击确定按钮前的校验。重新定义“确定”事件,实现相应功能,代码示例如下图所示

     import Page from "$UI/opm-pcx/dialog/psmDetail.user";
     import {message} from "antd";
     import OpmUtils from "$UI/opm-pcx/js/opmUtil";
     export default class IndexPage extends Page {
         constructor(...args){
             super(...args);
         }
         //获取组织扩展信息
         getUsersxInfo=()=>{
             let usersxData=this.comp("usersxData");
             let birthday=usersxData.getValue("birthday").toString();  
             return {birthday};
         }
    
         //校验扩展信息是否合法
         checkUsersxInputValid=()=>{
             let usersxData=this.comp("usersxData");
             if(!usersxData.valid()){             
                 message.error(usersxData.validInfo(true));
                 return false;        
             }
             return true;
         }
    
         insertOrgAndPerson = async () => {
             //loadingBar.start();
             var self = this;
             //如果选择了岗位角色,上级组织是岗位角色,否则是上级组织
             var personData = this.comp("personData");
             var posID = personData.getValue("posID");
             var deptID = personData.getValue("deptID");
             this.comp("pageData").setValue("parentID", deptID);
    
             var parentID;
             var parentCode;
             if (posID) {//选择了岗位角色,需要在部门下创建岗位
                 var posCode = personData.getValue("posCode");
                 var deptCode = personData.getValue("deptCode");
                 parentID = posID + "@" + deptID;
                 parentCode = posCode + "@" + deptCode;
    
                 var orgs = [{
                     "id": parentID,
                     "code": parentCode,
                     "name": personData.getValue("posName"),
                     "type": "pos",
                     "parentID": deptID,
                     "addRoles": [posID]
                 }];
             } else {
                 parentID = deptID;
                 parentCode = deptCode;
             }
             if (!parentID) parentID = '';
             var newAuthorities = personData.getValue("authorities") || "";
    
             var users = [{
                 "id": personData.getValue("id"),
                 "username": personData.getValue("username"),
                 "name": personData.getValue("name"),
                 "phoneNumber": personData.getValue("phoneNumber"),
                 "email": personData.getValue("email"),
                 "active": personData.getValue("active"),
                 "verified": personData.getValue("verified"),
                 "data4": personData.getValue("data4"),//QQ
                 "data5": personData.getValue("data5"),//微博
                 "data8": personData.getValue("data8"),//分机号
                 "address": personData.getValue("data9"),//地址
                 "position": personData.getValue("data10"),//职位
                 "description": personData.getValue("description"),//备注
                 "data15": personData.getValue("data15"),//性别
                 "data17": personData.getValue("data17"),//生日
                 "hiredate": personData.getValue("data18"),//入职时间
                 "avatarUrl": personData.getValue("avatarUrl"),//头像data18
                 "signature": personData.getValue("signature"),//电子签名
                 "idcard": personData.getValue("idcard"),//身份证号
                 "authorities": newAuthorities,//用户类型
                 "extdata1": personData.getValue("extdata1"),
                 "extdata2": personData.getValue("extdata2"),
                 "extdata3": personData.getValue("extdata3"),
                 "extend":this.getUsersxInfo()//获取扩展用户信息
             }];
             var password = personData.getValue("password");
             if (password && this.params.openMode == "new") {
                 users[0].password = uaa.encodePassword(password);
             }
             if (newAuthorities != this.originAuthorities) {//用户类型对应角色
                 if (newAuthorities) {
                     users[0].addRoles = [newAuthorities];
                 }
                 if (this.originAuthorities != "") {
                     users[0].deleteRoles = [this.originAuthorities];
                 }
             }
             if (this.params.userType != "external") {//组织内用户
                 users[0].mainOrg = parentID;
                 users[0].type = "org";
                 if (this.params.openMode == "new" || parentID != this.originParentID) {
                     users[0].addOrgs = [parentID];//为''是根人员
                     if (this.originParentID != undefined) {
                         users[0].deleteOrgs = [this.originParentID];
                     }
                 }
             }
             if (this.comp("configData").getValue("useUserSortNumber")) {//人员序号
                 users[0].sortNumber = personData.getValue("sortNumber");
             }
             //users[0].extend = this.getUsersxInfo();
             try {
                 await OpmUtils.postOrgs(self, orgs, users)
                 if (self.params.openMode == "new") {
                     if (password) {
                         self.comp("pageData").setValue("password", password);
                     } else {
                         self.comp("pageData").setValue("password", self.convertI18n("aSDF1@#$或自定义默认密码"));
                     }
                 }
    
                 self.comp("commonOperation").okclose("pageData");
                 //组织名称修改后,更新authorize表和opm_manageorgs表,postOrgs实现
             } catch (e) {
                 message.error(self.convertI18n("保存人员数据失败:") + e);
             }
         }
    
         //确定
         onOkBtnClick = (event) => {
             let checkResult=this.checkInputValid()&&this.checkUsersxInputValid();
             if(!checkResult){
                 return;
             }
             this.insertOrgAndPerson();
         }
     }
    
  2. 修改用户管理页面 同样新建“用户管理”继承页面,具体操作可参考上一步。 选择“用户”数据集,设置与人员扩展表的关联查询 图 21
    在设计器中添加表格字段 图 22

到此自定义内容全部完成,仅需在测试后,重新发布企业门户即可

10. 配置自定义菜单(仅可在部署环境中操作)

  1. 打开“应用资源管理”页面,在企业门户V2服务“组织用户管理”菜单下,新增新的“组织管理及用户管理” 图 23
    图 24
  2. 在“功能树配置”下桌面端,新增上述添加的2个菜单即可 图 25

results matching ""

    No results matching ""

    results matching ""

      No results matching ""