cmp.selectOrg 类
选人组件
由于移动端选人组件的展示的性能考虑,选人组件不会每次都重新实例化,选人组件是一款比较灵活复杂的组件,主要功能是根据V5业务进行设计的
开发者可以根据配置,实例化一个组件,进行各种业务的选人操作
注:选人组件分为流程选人和轻表单选人组织机构
构造函数
cmp.selectOrg
cmp.selectOrg
(
-
id
-
options
)
Object
参数:
名称 | 类型 | 标识 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id
| String | 必选 | 选人组件唯一标识,如果该id对应页面上的控件的id,则选人组件会主动给该控件绑定点击事件,点击后进行选人业务 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
options
| Object | 必选 | 配置参数
|
返回值:
选人组件对象
示例:
<script>
var member1 = {"id":"2243785891060663469","name":"小樱","type":"member"};
var member2 = {"id":"-5400777743145874890","name":"大侠壹","post":"G1","type":"member"};
var memberData = [member1];
function test() {
document.getElementById("select-flow").addEventListener("tap",function(){
var select = cmp.selectOrg('select',{//定义按钮ID
type:1,//选人组件的类型1、流程选人;2、轻表单选人
flowType:2,//流程选人,条件改变参数1:改变成单选(及进行替换操作)2:多选模式(多选操作)3:默认模式;其他:(默认可以不传该值)
fillBackData:[//第一次调用时的回填值
],
jump:false,//是否是跳转页面的方式true:选人组件跳转到其他页面显示,false:在本页面中弹出(该字段只对轻表单有用,流程选人只能在本页面弹出)
maxSize:-1,//只要不等于1,都认为是多选
minSize:1,
selectType:'member',//选人类型:1、'member':选人;2、'department':选部门;3、'account':选单位;4、'post':选岗位;5、'level':选职务级别
callback:handleResult,//回调函数,会将选择结果返回,并做类型区分
// directDepartment:false
// label:["dept","org"],
});
},false);
cmp.selectOrg('select-department',{
type:2,
fillBackData:[],
jump:false,
maxSize:1,
minSize:1,
selectType:'department',
callback:function(result){
console.log(cmp.parseJSON(result));
}
});
var key = 0;
var lightOptsChange = false;
var title = "";
document.getElementById("select-member").addEventListener("tap",function(){
var maxSize = 50;
if(key%2 == 0) {
maxSize = 50;
title = "haha";
}else {
maxSize =1;
title = "";
}
cmp.selectOrg('selectMember',{
type:2,
fillBackData:[],
maxSize:1,
minSize:1,
title:title,
selectType:'member',
callback:function(result){
console.log(cmp.parseJSON(result));
},
lightOptsChange:lightOptsChange
});
key ++;
lightOptsChange = true;
},false);
cmp.selectOrg('select-account',{
type:2,
fillBackData:[],
jump:false,
maxSize:-1,
minSize:1,
selectType:'account',
callback:function(result){
console.log(cmp.parseJSON(result));
}
});
cmp.selectOrg('select-post',{
type:2,
fillBackData:[],
jump:false,
maxSize:-1,
minSize:1,
selectType:'post',
callback:function(result){
console.log(cmp.parseJSON(result));
}
});
cmp.selectOrg('select-level',{
type:2,
fillBackData:[],
jump:false,
maxSize:-1,
minSize:1,
selectType:'level',
callback:function(result){
console.log(cmp.parseJSON(result));
}
});
var flowChangeLabel = [];
var actionKey = 0;
var flowOptsChange = false;
document.getElementById("select-flowOptsChange").addEventListener("tap",function(){
if(actionKey%2 == 0) {
flowChangeLabel=["dept","org","post","team","extP"];
}else {
flowChangeLabel=["dept","org"];
}
var select = cmp.selectOrg('select-flow-Opts-Change',{//定义按钮ID
type:1,//选人组件的类型1、流程选人;2、轻表单选人
flowType:3,//流程选人,条件改变参数1:改变成单选(及进行替换操作)2:多选模式(多选操作)3:默认模式;其他:(默认可以不传该值)
fillBackData:[//第一次调用时的回填值
],
jump:false,//是否是跳转页面的方式true:选人组件跳转到其他页面显示,false:在本页面中弹出(该字段只对轻表单有用,流程选人只能在本页面弹出)
maxSize:-1,//只要不等于1,都认为是多选
minSize:1,
selectType:'member',//选人类型:1、'member':选人;2、'department':选部门;3、'account':选单位;4、'post':选岗位;5、'level':选职务级别
callback:handleResult,//回调函数,会将选择结果返回,并做类型区分
// directDepartment:false
label:flowChangeLabel,
flowOptsChange:flowOptsChange
});
flowOptsChange = true;
actionKey ++;
},false);
//=============================================================================页面跳转方式===============//
document.getElementById("select-member-jump").addEventListener("tap",function(){
cmp.selectOrgJump("select-jump",{
type:2,//选人组件的类型1、流程选人;2、轻表单选人
fillBackData:memberData,
maxSize:1,//只要不等于1,都认为是多选
minSize:1,
selectType:'member',//选人类型:1、'member':选人;2、'department':选部门;3、'account':选单位;4、'post':选岗位;5、'level':选职务级别
pageKey:"currentPage_saveDom"
});
},false);
var search = window.location.search;
if(search.indexOf("currentPage_saveDom") != -1){
var selectOrgData = cmp.storage.get("currentPage_saveDom",true);
selectOrgData = cmp.parseJSON(selectOrgData);
console.log(selectOrgData);
}
//=======================================================================页面跳转方式 end===================//
cmp.selectOrg("select-member-fillback",{
type:2,
excludeData:memberData,
selectType:'member',
callback:handleResult
});
var department1 = {"name":"天聋部","id":"4701326143611945167","type":"department"};
var department2 = {"name":"来个装逼的部门","id":"-5183779187621542909","type":"department"};
var departmentData = [department1,department2];
cmp.selectOrg("select-department-fillback",{
type:2,
fillBackData:departmentData,
selectType:'department',
callback:handleResult
});
var account1 = {"name":"上单","id":"-4173454168019811518","type":"account"};
var account2 = {"name":"中单","id":"-163034423729371901","type":"account"};
var accountData = [account1,account2];
cmp.selectOrg("select-account-fillback",{
type:2,
fillBackData:accountData,
selectType:'account',
callback:handleResult
});
var destroyBtn = document.getElementById("destory");
destroyBtn.onclick = function(){//选人组件的销毁方法,需要开发者调用
cmp.selectOrgDestory("select");
}
}
function handleResult (result){//选择结果格式{orgResultType:'light'/'concurrent'/'sequence',orgResult:[]}
result = cmp.parseJSON(result);
var type = result.orgResultType;
switch (type){
case "light"://返回值是轻表单选人类型
console.log(result.orgResult);
break;
case "concurrent"://返回值类型是流程选人----并联
cmp.ajax({
url:"demoData/flowChart-data.json",
type:'GET',
dataType:'json',
success : function(flowData){
cmp.storage.save("select-flow-data", cmp.toJSON(flowData));
// debug.href.next("debug-selectOrg-flowChar.html");
}
});
break;
case "sequence"://返回值类型是流程选人----串联
console.log(result.orgResult);
break;
case "flowChange": //返回值类型是流程选人----单选
console.log(result.orgResult);
break;
}
}
document.addEventListener("beforepageredirect",function(){
console.log("beforepageredirect");
},false);
</script>