选人组件
由于移动端选人组件的展示的性能考虑,选人组件不会每次都重新实例化,选人组件是一款比较灵活复杂的组件,主要功能是根据V5业务进行设计的
开发者可以根据配置,实例化一个组件,进行各种业务的选人操作
注:选人组件分为流程选人和轻表单选人组织机构

构造函数

cmp.selectOrg

cmp.selectOrg
(
  • id
  • options
)
Object

参数:

名称类型标识描述
id String 必选

选人组件唯一标识,如果该id对应页面上的控件的id,则选人组件会主动给该控件绑定点击事件,点击后进行选人业务

options Object 必选

配置参数

名称类型标识描述
[title] String 可选

组件界面显示的标题,默认分为两种情况:

  • 流程选人,显示的是当前登录人员的单位名称
  • 轻表单选人,显示【单选】/【多选】加具体选择类型,如:【单选人员】

type Number 必选

组件的类型

  • 1:流程选人
  • 2:轻表单选组织机构

selectType String 必选

选择类型(流程选人不用配置此)

  • member:选人
  • department:选部门
  • post:选岗位
  • account:选单位
  • level:选职务级别

[flowType] Number 可选

专为流程选人定义的一个参数,用于同一个选人组件,选择条件改变的情况;具体值的含义:

  • 1:改变成单选(及进行替换操作)
  • 2:多选模式(多选操作)
  • 3:默认模式

[flowOptsChange] Boolean 可选

是否进行流程选人配置参数的重置(由于业务改变才需要设置该值,只对流程选人有效),默认:false

[lightOptsChange] Boolean 可选

是否进行轻表单选人配置参数的重置(由于业务改变才需要设置该值,只对轻表单选人有效),默认:false

[maxSize] Number 可选

选中的最多数量,默认:-1,不受数量限制,如果设置成1,则为单选模式;(如果是流程选人,会忽略此参数,一概认定是多选)

[minSize] Number 可选

选中的最少数量,默认:-1,不受数量限制

[label] Array 可选

按需导入首页页签,默认:["dept","org","post","team","extP"],其中:

  • dep:【本部门】
  • org:【组织机构】
  • post:【岗位】
  • team:【组】
  • extP:【外部人员】

[multitype] Boolean 可选

是否进行多类型选择(用于轻表单选人中可进行部门选择,如果还有其他情况以后再进行扩展,默认是可以进行多类型选择的)默认:false

[permission] Boolean 可选

流程选人时,整体选部门,选岗位、选组是否受当前登录人员权限控制(默认流程选人要受权限控制)默认:true

[directDepartment] Boolean 可选

流程选人中是否直选部门(即不进行是否包含子部门的提示)默认:false

[fillBackData] Array 可选

回填值格式,其中

  • 人员数据:[{id:181818,name:"杨海",type:"member"}]
  • 部门数据:[{id:"-155555",name:"天龙八部",type:"department"}]
  • 单位(account)、职务(level)、岗位(post)只是type不一样

[excludeData] Array 可选

被排除的不能选择的数据,格式同fillBackData一样

[server] String 可选

对于跨域请求rest接口的时候,需要开发者自定义服务器地址 如:http://192.168.10.55:8080

callback Function 必选

回调函数 根据组件类型返回的值有数据类型标识:

  • light:轻表单类型数据
  • concurrent:流程并联类型数据
  • sequence:流程串联类型数据

[closeCallback] Function 可选

关闭组件的回调函数

返回值:

[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>
Top