/**
 * 根据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} 选人组件对象
 *
 */




    
Top