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