1. 功能适配的需求介绍


系统中有场景的概念,每个场景上可以支持配置展示不同的字段和按钮和不同的条件,这里场景用meta_state区分。


我们只需要自定义一个人员信息的新场景来让他显示:(1)不同的字段(信息管理list层展示不同字段),(2)不同的子集(穿透进去展示看到不同子集),(3)不同按钮(将修改,删除按钮隐藏,做到只让查看,不让删除功能)(4)以及不同的条件(比如只展示离职、退休的人员)因为他是和标准的人员信息管理用的不同的场景,是不互相干扰的,所以可以支持以上这些不同的扩展


2. 举例


经典案例一:


做一个只展示基本信息和任职信息的子集,并且只可查看,不可编辑的信息管理功能


(1)自定义应用中新增一个应用,参数如上图,因为是与标准信息管理不同的场景,这里参数写成:{
"model": "Employee",
"meta_state": "infoall"
}

其中infoall为自定义的,也可以取其他场景,只要不重复就可以,场景是以_为叠加的。

(2) 将这个定义好的应用发布到指定菜单后,点击菜单就会跳到指定场景的信息管理。例如上面infoall场景就是如下这样的,这里你无论在list层配置什么,都与标准的无关系,这里就可以自由发挥


比如我配置conditions,只展示莫一个岗位状态,或者莫一个任职类型的人。点击list层元数据配置,配置conditions示例:



(3) 此时list层界面显示的内容就已经隔离开了,展示成了你想要的模样,但是你点击穿透发现,还是原来的子集和模版,没有隔离开,那这一步就需要将穿透详细层也给加场景。


"list_config": {
"operate_default": "=function(item){SCOPE.super_go('common_model_view_base',{'model':'Employee','id':item.id,'meta_state':'infoall','nav_state':'infoall'})}"
}

在元数据层增加如上属性,其中infoall仍为你上一步list层的场景,这步也需要把穿透子集设置成你的这个场景。此时穿透后会发现小设置符号配置已经变成 Employee.meta.base.infoall.json


(4) 这时候将小设置键模版 Employee.meta.base.infoall.json

你想配置的子集都设置成此场景

{"base": {
"meta_state": "infoall"
},
"childs": [{
"key": "job_information_master",
"jump_state": "",
"meta_state": "infoall"
},
{
"key": "outer_experience",
"meta_state": "infoall"
},
{
"key": "job_resume",
"meta_state": "infoall"
},
{
"key": "education",
"meta_state": "infoall"
}]}


( 5) 这时你在点开对应子集,你会发现他们的场景都变成了infoall,这是你就可以任意可视化配置想要的字段了。也就做到了全场景全子集个性化配置


经典案例二: 

配置单一左组织树右列表的多任职子集管理

(1)自定义应用中新增一个应用,参数如上图,因为是与标准信息管理不同的场景,这里参数写成:{
"model": "JobInformation",
"meta_state": "infoall"
}

其中infoall为自定义的,也可以取其他场景,只要不重复就可以,场景是以_为叠加的。

(2) 将这个定义好的应用发布到指定菜单后,点击菜单会展示infoall场景下全部任职子集信息

此时因为你没有配置conditions,这时你想要配置只显示兼职的那就配置:

"conditions": {
"position_type": 2
}

(3) 除此之外,你切换组织时候,会发现组织树变了,但右侧列表的数据没有根据组织过滤条件而数目改变。

这是因为他缺少tree的配置


将此段配置复制到list层中

json

{"fields": [{
"width": 100,
"align": "left",
"sequence": 1,
"label": "员工",
"field": [
"employee",
"name"
],
"key": "employee_name"
},
{
"fixed": true,
"sequence": 1,
"align": "left",
"field": [
"employee",
"id"
],
"key": "employee_id_hide",
"meta_disabled": false,
"width": 100,
"is_blur": true,
"hide": true
}
],
"filters": [{
"key": "depart_id",
"options": {
"disabled": true
}
}],

"role": {
"role": "cm-org-emp.emp",
"field": "department.origin_id"
},
"tree": {
"model": "Department",
"tree_key": {
"org": "department.origin_id",
"position": "job_info.position_id"
}
}

}


(4)  配置好后就可以实现一个子集的单独管理了


另如果是配置除任职子集之外单一子集管理,需要做任职关联

常见关联参考:

json

{"relations": [{
"filter": {
"job_info.employee_id": ":employee_id",
"job_info.begin_date": {
"lte": "=date_"
},
"job_info.end_date": {
"gt": "=date_"
},
"job_info.position_type": 1
},
"model": "JobInformation",
"name": "任职信息",
"key": "job_info"
},
{
"filter": {
"job_info.position_id": ":position.origin_id",
"position.begin_date": {
"lte": "=date_"
},
"position.end_date": {
"gt": "=date_"
}
},
"model": "OrgPositionHistory",
"type": "outer",
"name": "岗位",
"key": "position",
"blur": [
"name"
]
},
{
"filter": {
"position.parent_id": ":department.origin_id",
"department.begin_date": {
"lte": "=date_"
},
"department.end_date": {
"gt": "=date_"
}
},
"model": "OrgDepartmentHistory",
"type": "outer",
"name": "部门",
"key": "department"
}
]}











  • 无标签