/**
* 根据V5的业务需求,提供了选人组件<br>
* 由于移动端选人组件的展示的性能考虑,选人组件不会每次都重新实例化,选人组件是一款比较灵活复杂的组件,主要功能是根据V5业务进行设计的<br>
* 开发者可以根据配置,实例化一个组件,进行各种业务的选人操作<br>
* 注:选人组件分为流程选人和轻表单选人组织机构<br>
* <strong>
* 页面需要导入的文件
* <ul>
* <li>cmp-listView.js</li>
* <li>cmp-imgCache.js</li>
* <li>cmp-selectOrg.js</li>
* <li>cmp-listView.css</li>
* <li>cmp-selectOrg.css</li>
* </ul>
* </strong>
* @module selectOrg
* @subtitle 选人组件
*/
/**
* 流程选人<br>
* 流程选人是一组可以进行部门,人员,岗位,职务级别,组,外部人员选择的组件,根据配置参数,可以设置
* @class selectOrg1
* @namespace cmp
* @constructor
* @param {String} id 选人组件唯一标识,如果该id对应页面上的控件的id,则选人组件会主动给该控件绑定点击事件,点击后进行选人业务
* @param {Object} options 配置参数
* @param {Number} options.type 组件的类型<br>
* <ul>
* <li>1:流程选人</li>
* </ul>
* @param {Number} [options.flowType] 专为流程选人定义的一个参数,用于同一个选人组件,选择条件改变的情况;具体值的含义:<br>
* <ul>
* <li>1:改变成单选(及进行替换操作)</li>
* <li>2:多选模式(多选操作)</li>
* <li>3:默认模式</li>
* </ul>
* @param {Number} [options.minSize] 最少选人的数量,默认-1不受限制
* @param {Boolean} [options.flowOptsChange] 是否进行流程选人配置参数的重置(由于业务改变才需要设置该值,只对流程选人有效),默认:false
* @param {Array} [options.label] 按需导入首页页签,默认:["dept","org","post","team","extP"],其中:<br>
* <ul>
* <li>dep:【本部门】</li>
* <li>org:【组织机构】</li>
* <li>post:【岗位】</li>
* <li>team:【组】</li>
* <li>level:【职务级别】</li>
* <li>extP:【编外人员】</li>
* <li>vjOrg:【外部机构】</li>
* </ul>
* @param {Boolean} [options.permission] 流程选人时,整体选部门,选岗位、选组是否受当前登录人员权限控制(默认流程选人要受权限控制)默认:true
* @param {Boolean} [options.directDepartment] 流程选人中是否直选部门(即不进行是否包含子部门的提示)默认:false
* @param {Array} [options.fillBackData] 回填值格式,其中<br>
* <ul>
* <li>人员数据:[{id:181818,name:"杨海",type:"member"}]</li>
* <li>部门数据:[{id:"-155555",name:"天龙八部",type:"department"}]</li>
* <li>单位(account)、职务(level)、岗位(post)只是type不一样</li>
* </ul>
* @param {Array} [options.excludeData] 被排除的不能选择的数据,格式同fillBackData一样,其中<br>默认是被排除的人员是被选中的,如果想要被排除的数据不被默认选中,需要在数据上传属性disable:true 如:[{id:181818,name:"杨海",type:"member",disable:true}]
* @param {Boolean} [options.seeExtAccount] 是否能查看外单位,即是否能进行外单位切换
* @param {Boolean} [options.notSelectAccount] 是否所有的【本单位】页签都不能选择,默认:false
* @param {String} [options.server] 对于跨域请求rest接口的时候,需要开发者自定义服务器地址 如:http://192.168.10.55:8080
* @param {Function} options.callback 回调函数 根据组件类型返回的值有数据类型标识:<br>
* <ul>
* <li>concurrent:流程并联类型数据</li>
* <li>sequence:流程串联类型数据</li>
* </ul>
* @param {Function} [options.closeCallback] 关闭组件的回调函数
* @param {Array} [options.choosableType] 可选的数据类型 ["department","account","member","post","team","level"],默认是可以选人员、部门、单位、岗位、组、职务级别
* @example
* ```
* <script>
* cmp.selectOrg("flowID",{
* type:1,
* flowType:3,
* fillBackData:[],
* minSize:-1,
* fillback: null,
* excludeData:[{id:181818,name:"杨海",type:"member",disable:true}],
* directDepartment:false,
* label:["dept","org","post","team","extP"],
* flowOptsChange:false,
* permission:true,
* callback:function(result){
* result = cmp.parseJSON(result);
* for(var i = 0;i< result.length; i ++){
* console.log(cmp.parseJSON(result[i]));
* }
* },
* closeCallback:function(){
* //TODO
* }
* });
* </script>
* ```
* @returns {Object} 选人组件对象
*/
/**
* 轻表单选择<br>
* @class selectOrg2
* @namespace cmp
* @constructor
* @param {String} id 选人组件唯一标识,如果该id对应页面上的控件的id,则选人组件会主动给该控件绑定点击事件,点击后进行选人业务
* @param {Object} options 配置参数
* @param {String} [options.title] 组件界面显示的标题:<br>
* <ul>
* <li>默认显示【单选】/【多选】加具体选择类型,如:【单选人员】</li>
* </ul>
* @param {Number} options.type 组件的类型<br>
* <ul>
* <li>2:轻表单选组织机构</li>
* </ul>
* @param {String} options.selectType 选择类型(流程选人不用配置此)<br>
* <ul>
* <li>member:选人</li>
* <li>department:选部门</li>
* <li>post:选岗位</li>
* <li>account:选单位</li>
* <li>level:选职务级别</li>
* <li>department_vj1:vj机构</li>
* <li>department_vj2:vj单位</li>
* </ul>
* @param {Boolean} [options.lightOptsChange] 是否进行轻表单选人配置参数的重置(由于业务改变才需要设置该值,只对轻表单选人有效),默认:false
* @param {Number} [options.maxSize] 选中的最多数量,默认:-1,不受数量限制,如果设置成1,则为单选模式;(如果是流程选人,会忽略此参数,一概认定是多选)
* @param {Number} [options.minSize] 选中的最少数量,默认:-1,不受数量限制
* @param {Array} [options.label] 按需导入首页页签(此参数在轻表单选人生效),默认:["dept","org","post","team","extP"],其中:<br>
* <ul>
* <li>dep:【本部门】</li>
* <li>org:【组织机构】</li>
* <li>post:【岗位】</li>
* <li>team:【组】</li>
* <li>extP:【编外人员】</li>
* <li>level:【职务】</li>
* <li>vjOrg:【外部机构】</li>
* </ul>
* @param {Boolean} [options.multitype] 是否进行多类型选择(用于轻表单选人中可进行部门选择,如果还有其他情况以后再进行扩展,默认是可以进行多类型选择的)默认:false
* @param {Array} [options.fillBackData] 回填值格式,其中<br>
* <ul>
* <li>人员数据:[{id:181818,name:"杨海",type:"member"}]</li>
* <li>部门数据:[{id:"-155555",name:"天龙八部",type:"department"}]</li>
* <li>单位(account)、职务(level)、岗位(post)只是type不一样</li>
* </ul>
* @param {Array} [options.excludeData] 被排除的不能选择的数据,格式同fillBackData一样
* @param {String} [options.server] 对于跨域请求rest接口的时候,需要开发者自定义服务器地址 如:http://192.168.10.55:8080
* @param {Function} options.callback 回调函数 根据组件类型返回的值有数据类型标识:<br>
* <ul>
* <li>light:轻表单类型数据</li>
* </ul>
* @param {Function} [options.closeCallback] 关闭组件的回调函数
* @param {Boolean} [options.vj] 是否是以vj插件的方式进行轻表单控件选择,默认false <br>
* true:选人 = 选外部人员;选部门 = 选外部机构 选单位 = 选外部单位 选岗位 = 选外部单位
* @example
* ```
* <script>
* //======================轻表单选人====================================//
* cmp.selectOrg("memberID",{
* type:2,
* fillBackData:[],
* minSize:-1,
* maxSize:-1,
* selectType:"member",
* multitype:false,
* lightOptsChange:false, *
* fillback: null,
* excludeData:[{id:181818,name:"杨海",type:"member",disable:true}],
* label:["dept","org","post","team","extP"],
* vj:false,
* callback:function(result){
* result = cmp.parseJSON(result);
* for(var i = 0;i< result.length; i ++){
* console.log(cmp.parseJSON(result[i]));
* }
* },
* closeCallback:function(){
* //TODO
* }
* });
* //===================================轻表单选部门===========================================//
* cmp.selectOrg("departmentID",{
* type:2,
* fillBackData:[],
* minSize:-1,
* maxSize:-1,
* selectType:"department",
* lightOptsChange:false,
* fillback: null,
* excludeData:[{id:181818,name:"测试部",type:"department",disable:true}],
* callback:function(result){
* result = cmp.parseJSON(result);
* for(var i = 0;i< result.length; i ++){
* console.log(cmp.parseJSON(result[i]));
* }
* },
* closeCallback:function(){
* //TODO
* }
* });
* //===================================轻表单选单位===========================================//
* cmp.selectOrg("accountID",{
* type:2,
* fillBackData:[],
* minSize:-1,
* maxSize:-1,
* selectType:"account",
* lightOptsChange:false,
* fillback: null,
* excludeData:[{id:181818,name:"致远成都分公司",type:"account",disable:true}],
* callback:function(result){
* result = cmp.parseJSON(result);
* for(var i = 0;i< result.length; i ++){
* console.log(cmp.parseJSON(result[i]));
* }
* },
* closeCallback:function(){
* //TODO
* }
* });
* //===================================轻表单选职务===========================================//
* cmp.selectOrg("levelID",{
* type:2,
* fillBackData:[],
* minSize:-1,
* maxSize:-1,
* selectType:"level",
* lightOptsChange:false,
* fillback: null,
* excludeData:[{id:181818,name:"高手",type:"level",disable:true}],
* callback:function(result){
* result = cmp.parseJSON(result);
* for(var i = 0;i< result.length; i ++){
* console.log(cmp.parseJSON(result[i]));
* }
* },
* closeCallback:function(){
* //TODO
* }
* });
* //===================================轻表单选岗位===========================================//
* cmp.selectOrg("postID",{
* type:2,
* fillBackData:[],
* minSize:-1,
* maxSize:-1,
* selectType:"post",
* lightOptsChange:false,
* fillback: null,
* excludeData:[{id:181818,name:"测试岗",type:"post",disable:true}],
* callback:function(result){
* result = cmp.parseJSON(result);
* for(var i = 0;i< result.length; i ++){
* console.log(cmp.parseJSON(result[i]));
* }
* },
* closeCallback:function(){
* //TODO
* }
* });
* </script>
* ```
* @returns {Object} 选人组件对象
*/
/**
* 选人组件-销毁
* @class selectOrgDestory
* @namespace cmp
* @constructor
* @param {String} id 对应的创建的选人组件id
* @example
* ```
* <script>
* cmp.selectOrgDestory(id);
* </script>
* ```
* @returns {Object} 选人组件对象
*
*/