Index: ssts-web/src/main/webapp/common/selPersonByOrgUnitByExt.js =================================================================== diff -u -r12331 -r16279 --- ssts-web/src/main/webapp/common/selPersonByOrgUnitByExt.js (.../selPersonByOrgUnitByExt.js) (revision 12331) +++ ssts-web/src/main/webapp/common/selPersonByOrgUnitByExt.js (.../selPersonByOrgUnitByExt.js) (revision 16279) @@ -1,17 +1,267 @@ var formPanel; +var pageSize = 100; var arg = dialogArguments; var userIds = arg.userIds; var userNames = arg.userNames; - var userIdsArray = arg.userIdsArray; var userNamesArray = arg.userNamesArray; +var action = arg.action; +// var action = 'leader'; +// var action = 'principal'; +// var action = 'includeUsers'; +// var userIds = ''; +// var userNames = ''; +// var userNamesArray = ['admin','李镜波']; +// var userIdsArray = ['USERID_00003']; +// var userIdsArray = ['USERID_1962','USERID_1966']; +// var userIdsArray = null; + + +var leftGrid; +var rightGrid; +//用于缓存左边store查询的条件 +var leftSearchCache = {}; +//缓存右边store的数据 +var saveCache = {}; +//用于缓存右边store查询的条件 +var rightSearchCache = {}; +//部门搜索的缓存 +var deptSearchCache = {}; +var deptObj = OrgUnitHelper.getDeptObj(); +var userObj = OrgUnitHelper.getUserObj(); +var userModel = userObj.getUserModel(); +//部门store +var deptStore2 = deptObj.getDeptStore(); +deptStore2.addListener('beforeload',function (store, options) { + Ext.apply(options.params, deptSearchCache); +}); +//左边用户的store +var userStore = userObj.getUserStore(); +userStore.addListener('beforeload',function (store, options) { + Ext.apply(options.params, leftSearchCache); +}); +//右边用户的store +var userStore2 = userObj.getUserStore(WWWROOT + '/systemmanage/directoryAction!findExitsUser.do'); +userStore2.addListener('beforeload',function (store, options) { + // 从缓存中读取数据,把数据赋值到请求中(用于用户进行了翻页) + Ext.apply(options.params, rightSearchCache); +}); + +//事件处理对象 +var evtObj = {}; + +/** + * 当所属部门变化,根据缓存的条件重新加载store + * @param store 部门的store + * @param cache 缓存 + */ +evtObj.loadStoreByMotion = function (store, cache) { + var selectedOrgUnit = formPanel.findById('allOrgUnitList2').getValue(); + cache['fullName'] = ''; + if (selectedOrgUnit.Trim() == "") { + cache['orgUnitCode'] = ''; + cache['motion'] = ''; + cache['roleId'] = ''; + } + else { + var selObj = formPanel.findById('selTypeList'); + var selectedType = selObj.getValue(); + if (selectedType == "role") { + var roleId = selectedOrgUnit.split("#*")[0]; + cache['roleId'] = roleId; + cache['motion'] = 'roleId'; + } + else { + var PREFIX_ORGUNIT = "ORGUNIT_"; + var orgUnitCode = selectedOrgUnit.split("#*")[0].substring(PREFIX_ORGUNIT.length); + cache['orgUnitCode'] = orgUnitCode; + cache['motion'] = 'orgUnitCode'; + } + } + store.load({params: {start: 0, limit: pageSize}}); +} + +/** + * 删除 + */ +evtObj.removeClick = function () { + var selections = rightGrid.getSelections(); + if (selections.length < 1 ){ + alert('请选择要移除的用户!'); + return false; + } + Ext.each(selections, function (select) { + var id = select.get('id'); + //从缓存中删除对应的记录 + delete saveCache[id]; + }); + setRightSearchCondition(saveCache); + userStore2.load({params: {start: userStore2.lastOptions.params.start, limit: pageSize}}); +} + +/** + * 删除全部 + */ +evtObj.removeAllClick = function () { + //清空保存的数据 + saveCache = {}; + rightSearchCache['userIds'] = null; + rightSearchCache['userNamesArrays'] = null; + userStore2.removeAll(); + userStore2.load({params: {start: 0, limit: pageSize}}); +} + +/** + * 添加 + */ +evtObj.addClick = function () { + var me = this; + me.handleAdd(leftGrid.getSelections()); +} + +/** + * 添加全部 + */ +evtObj.addAllClick = function () { + var me = this; + //从左边的store里查找对应的数据,并放置在缓存中 + me.handleAdd(userStore.data.items); +} + +/** + * 处理添加 + * @param selections 需要添加的数据 + */ +evtObj.handleAdd = function (selections) { + if (selections.length < 1 ){ + alert('请选择要添加的用户!'); + return false; + } + Ext.each(selections, function (select) { + var ele = select.get('id'); + //从缓存中查找是否已经存在此记录,如果不存在则添加到缓存中 + if (Ext.isEmpty(saveCache[ele])) { + //把选择的用户放在缓存中 + saveCache[ele] = select.data; + } + else { + alert("【" + select.get('fullName') + "】已存在,添加失败!"); + // return false就会中断操作,暂时默认遇到重复不添加,只给予提示,后续的继续执行 + } + }); + setRightSearchCondition(saveCache); + userStore2.load({params: {start: 0, limit: pageSize}}); +} + +/** + * 根据名字查询用户 + * @returns {boolean} + */ +evtObj.searchUser = function () { + var chkName = document.getElementById("userName").value.Trim(); + leftSearchCache['motion'] = ''; + leftSearchCache['roleId'] = ''; + leftSearchCache['orgUnitCode'] = ''; + //清空下拉选项 + Ext.getCmp('allOrgUnitList2').setValue(''); + if (chkName.Trim() == "") { + leftSearchCache.fullName = ''; + userStore.load({params: {start: 0, limit: pageSize}}); + return false; + } + //把查询的数据缓存到leftSearchCache中,用于翻页的时候把数据传到后台 + leftSearchCache.fullName = chkName; + userStore.load({params: {start: 0, limit: pageSize}}); +} + +/** + * 当所属部门变化 + */ +evtObj.changeOrgUnit = function () { + evtObj.loadStoreByMotion(userStore, leftSearchCache); +} + +/** + * 当选择类别变化 + */ +evtObj.changeType = function () { + var selObj = formPanel.findById('selTypeList'); + var selectedType = selObj.getValue(); + //缓存选了的类型 + deptSearchCache['selectedType'] = selectedType; + deptStore2.load({ + params: {start: 0, limit: pageSize} + }); +} + +/** + * 获得所属部门的combo + */ +function buildAllOrgUnitListCombo() { + var para = { + pageSize : pageSize, + evn : evtObj.changeOrgUnit + } + return deptObj.getAllOrgUnitListCombo(deptStore2, para); + +} + +/** + * 创建左边的人员列表 + * @param userStore 对应的数据源 + * @returns {Ext.grid.GridPanel|*|*} + */ +function createLeftGird(userStore) { + leftGrid = userObj.getPeopleGrid(userStore, userModel, pageSize); + return leftGrid; +} + +/** + * 创建右边的人员列表 + * @param userStore 对应的数据源 + * @returns {Ext.grid.GridPanel|*|*} + */ +function createRightGird(userStore) { + rightGrid = userObj.getPeopleGrid(userStore, userModel, pageSize); + return rightGrid; +} + +/** + * 加载user的store + */ +function loadUserStore() { + //加载左边的store + userObj.loadUserStore1(userStore, pageSize); + //加载右边的store + var para = { + userNamesArrays : userNamesArray, + userIdsArray : userIdsArray, + pageSize : pageSize, + action : action + } + userObj.loadUserStore2(userStore2, para); +} + +/** + * 通过遍历saveCache的属性,获取所有id,然后把id以数组的形式保存起来放在rightSearchCache的userIds属性里 + * 用于缓存右边grid的查询条件 + * @param saveCache + */ +function setRightSearchCondition(saveCache) { + var userIds = []; + for (var pro in saveCache){ + userIds.push(pro); + } + rightSearchCache['userIds'] = userIds; +} + function okData() { var selLength = document.getElementById("seletedList").options.length; var returnArr = []; - for (var i = 0; i < selLength; i++) { - var seletedValue = document.getElementById("seletedList").options[i].value.Trim(); + for (var i = 0; i < selLength; i++) { + var seletedValue = document.getElementById("seletedList").options[i].value.Trim(); if (seletedValue != 'undefined' && seletedValue != '') { returnArr.push(seletedValue); @@ -21,6 +271,16 @@ self.close(); } +/** + * 点击保存 + */ +function okData2() { + var returnArr = userObj.setReturnResult(saveCache, action); + // deptObj.test2(returnArr); + self.returnValue = returnArr; + self.close(); +} + function validateSelectedPerson(){ var selectedItems = $Id('seletedList'); if(selectedItems.options.length>=1){ @@ -303,6 +563,14 @@ ['',''] ]; + +var deptStore = new Ext.data.SimpleStore({ + fields: ['state','sign'], + autoLoad:false, + data : Ext.allOrgUnitList.states +}); + + Ext.onReady(function(){ formPanel = new Ext.form.FormPanel({ @@ -323,32 +591,38 @@ fields: ['state','sign'], data : Ext.selTypeList.states }), - listeners :{select: changeType}, + listeners :{select: evtObj.changeType}, displayField:'state', valueField: 'sign', typeAhead: true, mode: 'local', triggerAction: 'all', selectOnFocus:true }), - new Ext.form.ComboBox({ - fieldLabel: '所属部门', - id: 'allOrgUnitList', - anchor: '60%', - editable: false, - msgTarget: 'side', - store: new Ext.data.SimpleStore({ - fields: ['state','sign'], - data : Ext.allOrgUnitList.states - }), - listeners :{select: changeOrgUnit}, - displayField:'state', - valueField: 'sign', - typeAhead: true, - mode: 'local', - triggerAction: 'all', - selectOnFocus:true - }), + // new Ext.form.ComboBox({ + // fieldLabel: '所属部门', + // id: 'allOrgUnitList', + // anchor: '60%', + // editable: false, + // msgTarget: 'side', + // width : 180, + // listWidth : 400, + // forceSelection : true, + // lazyInit : false, + // store: deptStore, + // listeners : { + // select: changeOrgUnit + // }, + // displayField:'state', + // valueField: 'sign', + // typeAhead: true, + // mode: 'local', + // triggerAction: 'all', + // selectOnFocus:true + // }), + + buildAllOrgUnitListCombo(), + { layout:'column', id: 'userPanel', @@ -365,8 +639,8 @@ listeners :{ specialKey :function(field,e){ if (e.getKey() == Ext.EventObject.ENTER){ - searchUser(); - } + evtObj.searchUser(); + } } } }] @@ -377,23 +651,27 @@ new Ext.Button({ text: '查询', handler: function (){ - searchUser(); + evtObj.searchUser(); + // searchUser2(); } })] }] }, { layout:'column', id: 'selectPanel', - anchor:'70%', + anchor:'95%', items:[{ columnWidth:.38, layout: 'form', - items: [{ - xtype:'panel', - width: 150, - html:selectHtmlStr - }] + items: [ + // { + // xtype:'panel', + // width: 150, + // html:selectHtmlStr + // } + createLeftGird(userStore) + ] },{ columnWidth:.24, layout: 'form', @@ -407,7 +685,7 @@ return ; }; } - addClick(); + evtObj.addClick(); return false; } @@ -416,41 +694,47 @@ text:'删除<<', style:'margin: 15px 0px 10px 24px;', handler: function(){ - removeClick();return false; + evtObj.removeClick();return false; } }), new Ext.Button({ text:'添加所有>>', hidden:isOnlyOne ? true : false, style:'margin: 15px 0px 10px 10px;', handler: function(){ - addAllClick();return false; + evtObj.addAllClick();return false; } }), new Ext.Button({ text:'删除所有<<', hidden:isOnlyOne ? true : false, style:'margin: 15px 0px 10px 10px;', handler: function(){ - removeAllClick();return false; + evtObj.removeAllClick();return false; } - })] + }) + ] },{ - columnWidth:.38, + columnWidth:.30, + // columnWidth:.38, layout: 'form', - items: [{ - xtype:'panel', - width: 150, - //anchor:'100%', - html:"" - }] + items: [ + // { + // xtype:'panel', + // width: 150, + // //anchor:'100%', + // html:"" + // } + // , + createRightGird(userStore2) + ] }] } ], buttons: [{ text: '保存', handler: function(){ - okData(); + okData2(); } },{ text: '取消', @@ -462,6 +746,6 @@ var selTypeListObj = formPanel.findById('selTypeList'); selTypeListObj.setValue("user"); - - changeType(); + loadUserStore(); + // changeType(); }); \ No newline at end of file