var SelectUserContorl = function (guid, departmentID, multipleChoice, handlers, treeDataUrl, datagridDataUrl, isSpecific, companyTypeID, companyTypeDataUrl) {
treeDataUrl = treeDataUrl || "/Select/GetSelectUserControlDepartmentTree";
datagridDataUrl = datagridDataUrl || "/Select/GetSelectUserContorlViewPageList";
companyTypeDataUrl = companyTypeDataUrl || "/Select/GetCompanyType";
isSpecific = isSpecific || false;
companyTypeID = companyTypeID || '';
if (treeDataUrl.indexOf('?') < 0)
treeDataUrl += "?1=1";
if (datagridDataUrl.indexOf('?') < 0)
datagridDataUrl += "?1=1";
var warp;
var win;
var loading; //加载中
var searchBlock; //搜索块
var homeBlock; //首页
var orgSelectBlock; //部门选择块
var userSelectBlock; //选择人员块
var selectOrgBlock; //已选部门的子部门块
var optionsUserTitle; //可选人员标题块
var optionsUserBlock; //可选人员块
var selectedUserBlock; //已选人员块
var selectedUserTitle; //已选人员标题块
var searchText; //搜索框
var searchButton; //搜索按钮
var btnOrgDefine; //部门选择确认按钮
var btnUserDefine; //人员选择确认按钮
var optionsUserLayout = "list"; //可选人员布局方式
var selectedUserLayout = "list"; //已选人员布局方式
var companyType = 1; //当前公司类型
var curOrgID = ""; //当前查看部门
var departmens; //部门数据
var orgUsers; //用户数据
var selectUsers = new Hashtable(); //已选用户数据
var hasEasyUI = function (elementTypeName) {
return window.top.$(elementTypeName).length > 0;
}
//private 创建Html元素
var createElement = function (elementTypeName, elements, parentElments) {
if (typeof parentElments != "undefined" && typeof elements == "string") {
parentElments.append(elements);
return parentElments.find(elementTypeName);
}
else {
if (typeof elements == "string")
return $(elements);
}
};
var createLinkButton = function (elements) {
var links = elements.find("a");
for (var i = 0; i < links.length; i++) {
$(links[i]).linkbutton();
}
};
var getGetCompanyType = function () {
$.post(companyTypeDataUrl + "?companyType=" + companyTypeID, {}, function (result) {
showCompanyType(eval(result));
});
}
var showCompanyType = function (datas) {
selectOrgBlock.children().remove();
$(datas).each(function (i, item) {
selectOrgBlock.append("
" + item.text + "
");
})
}
var getDepartments = function () {
$.post(treeDataUrl + "&departmentName=" + $(searchText).val() + "&companyType=" + companyType, {}, function (result) {
departmens = eval(result);
showChildDepartments(departmens);
});
}
var showDepartments = function (datas) {
departmens = datas;
$(datas).each(function (i, item) {
if (true) {
orgSelectBlock.append("" + item.text + " ");
}
})
}
var showChildDepartments = function (datas) {
selectOrgBlock.children().remove();
$(datas).each(function (i, item) {
if (true) {
selectOrgBlock.append("" + item.text + "
");
}
})
}
var getUserInfo = function (orgid, username, state) {
username = username || "";
$.post(datagridDataUrl + "&DepartmentID=" + orgid + "&userName=" + username + "&companyType=" + companyType, {}, function (result) {
showUsers(result, state);
});
}
var showUsers = function (datas, state) {
orgUsers = datas;
optionsUserBlock.children().remove();
if (state == 0) {
$(datas).each(function (i, item) {
optionsUserBlock.append("" + item.UserName + "
");
})
}
else {
$(datas).each(function (i, item) {
optionsUserBlock.append("" + item.UserName + "
");
})
}
optionsUserBlock.find('img').each(function (i, img) {
AutoResizeImage(0, 67, img);
});
}
var addUser = function (userid) {
if (selectUsers.count() > 0 && !multipleChoice) {
alertMsg('只允许选择一个人员!');
return;
}
if (selectUsers.contains(userid))
return;
$(orgUsers).each(function (i, item) {
if (item.UserID == userid) {
selectUsers.add(userid, item);
appendUser(item);
}
})
}
var removeUser = function (userid) {
if (!selectUsers.contains(userid))
return;
selectedUserBlock.find('div[userid=' + userid + ']').remove();
selectUsers.remove(userid);
}
var appendUser = function (userInfo) {
selectedUserBlock.append("" + userInfo.UserName + "
");
selectedUserBlock.find('img').each(function (i, img) {
AutoResizeImage(0, 67, img);
});
}
var ckballToggle = function (sender) {
if ($(sender).attr("checked")) {
optionsUserBlock.find('.optionUserItem').each(function (i, item) {
var userid = $(this).attr('userid');
addUser(userid);
})
} else {
optionsUserBlock.find('.optionUserItem').each(function (i, item) {
var userid = $(this).attr('userid');
removeUser(userid);
})
}
}
var ckbDWToggle = function (sender) {
if ($(sender).attr("checked")) {
if (searchText.val() != "") {
getUserInfo(curOrgID, encodeURI(searchText.val()), 1);
}
else {
getUserInfo(curOrgID, "", 1);
}
} else {
if (searchText.val() != "") {
getUserInfo(curOrgID, encodeURI(searchText.val()), 0);
}
else {
getUserInfo(curOrgID, "", 0);
}
}
}
var searchDepartment = function () {
var key = searchText.val();
if (key != "") {
orgSelectBlock.find('.orgItem').parent().hide();
orgSelectBlock.find('.orgItem').each(function (i, item) {
var orgname = $(item).attr('orgname');
if (orgname.indexOf(key) >= 0)
$(item).parent().show();
})
} else {
orgSelectBlock.find('.orgItem').parent().show();
}
togglePanel(true);
}
var changeOptionsUserLayout = function () {
optionsUserBlock.find('.optionUserItem').attr('class', 'optionUserItem ' + optionsUserLayout);
}
var changeSelectedUserLayout = function () {
selectedUserBlock.find('.selectUserItem').attr('class', 'selectUserItem ' + selectedUserLayout);
}
var orgItemClick = function () {
curOrgID = $(this).attr('orgid');
var orgName = $(this).attr('orgname');
findDepartments(curOrgID);
getUserInfo(curOrgID, "", 0);
warp.find('#current_org').attr('orgid', curOrgID);
warp.find('#current_org').attr('orgname', orgName);
warp.find('#current_org').text('>' + orgName);
warp.find('#current_childorg').html('');
togglePanel(false);
}
var menuItemClick = function () {
curOrgID = $(this).attr('orgid');
var orgName = $(this).attr('orgname');
findDepartments(curOrgID);
getUserInfo(curOrgID, "", 0);
$(this).nextAll().remove();
}
var menuCompanyItemClick = function () {
curOrgID = $(this).attr('orgid');
var orgName = $(this).attr('orgname');
if ($(this).attr('parentorgid') == "company")
curOrgID = "";
findDepartments("", true);
$(this).nextAll().remove();
}
var registEvent = function () {
$('.orgItem', orgSelectBlock[0]).live('click', orgItemClick);
warp.find('#current_org').click(orgItemClick);
window.top.$('.all_org').click(function () {
curOrgID = "";
warp.find('#current_childorg').text('');
getGetCompanyType();
});
$('.companyItem', selectOrgBlock[0]).live('click', function () {
var orgID = $(this).attr('orgid');
companyType = orgID;
var orgName = $(this).attr('orgname');
var parentOrgID = $(this).attr('parentOrgID');
findDepartments("", true);
var menuitem = $(">" + orgName + " ");
menuitem.attr('orgid', "company" + orgID);
menuitem.attr('orgname', orgName);
menuitem.attr('parentOrgID', "company" + parentOrgID);
menuitem.click(menuCompanyItemClick);
warp.find('#current_childorg').text('');
warp.find('#current_childorg').append(menuitem);
togglePanel(false);
userSelectBlock.find('#ckbAll').attr("checked", false);
userSelectBlock.find('#ckbDW').attr("checked", false);
});
$('.childOrgItem', selectOrgBlock[0]).live('click', function () {
var orgID = $(this).attr('orgid');
var orgName = $(this).attr('orgname');
var parentOrgID = $(this).attr('parentOrgID');
findDepartments(orgID, true);
curOrgID = orgID;
getUserInfo(orgID, "", 0);
var menuitem = $(">" + orgName + " ");
menuitem.attr('orgid', orgID);
menuitem.attr('orgname', orgName);
menuitem.attr('parentOrgID', parentOrgID);
menuitem.click(menuItemClick);
warp.find('#current_childorg').find('[parentOrgID=' + parentOrgID + ']').nextAll().end().remove();
warp.find('#current_childorg').append(menuitem);
togglePanel(false);
userSelectBlock.find('#ckbAll').attr("checked", false);
userSelectBlock.find('#ckbDW').attr("checked", false);
});
$('.optionUserItem', optionsUserBlock[0]).live('click', function () {
var userid = $(this).attr('userid');
addUser(userid);
});
$('.selectUserItem', selectedUserBlock[0]).live('click', function () {
var userid = $(this).attr('userid');
removeUser(userid);
});
userSelectBlock.find('#ckbAll').click(function () {
ckballToggle(this);
})
userSelectBlock.find('#ckbDW').click(function () {
ckbDWToggle(this);
})
searchButton.click(function () {
//searchDepartment();
if (!isSpecific) {
optionsUserLayout = "list";
selectedUserLayout = "list";
}
getUserInfo(curOrgID, encodeURI(searchText.val()));
if (curOrgID == "") {
warp.find('#current_childorg').text('');
selectOrgBlock.children().remove();
togglePanel(false);
}
})
warp.find('.btnCancel').click(function () {
win.window("close");
})
btnUserDefine.click(function () {
var items = selectUsers.allvalues();
if (!isSpecific) {
for (var i = 0; i < items.length; i++) {
items[i].UserName = items[i].FullUserName;
}
}
if (handlers instanceof Array) {
for (var i = 0; i < handlers.length; i++) {
handlers[i](items);
}
} else if (typeof handlers != "undefined") {
handlers(items);
}
win.window("close");
})
optionsUserTitle.find('img').click(function () {
optionsUserLayout = $(this).attr('layout');
changeOptionsUserLayout();
})
selectedUserTitle.find('img').click(function () {
selectedUserLayout = $(this).attr('layout');
changeSelectedUserLayout();
})
$(window.top.document.body).ajaxStart(function () {
loading.show();
});
$(window.top.document.body).ajaxStop(function () {
loading.hide();
});
}
var findDepartments = function (orgID, isChildOrg) {
$.post(treeDataUrl + "&departmentID=" + orgID + "&companyType=" + companyType, {}, function (result) {
if (result.length <= 0 && isChildOrg == true)
return;
showChildDepartments(eval(result));
});
}
var togglePanel = function (showHome) {
if (showHome) {
homeBlock.show();
userSelectBlock.hide();
}
else {
homeBlock.hide();
userSelectBlock.show();
}
}
var specificSelect = function () {
selectOrgBlock.hide();
optionsUserLayout = "sige";
selectedUserLayout = "sige";
optionsUserBlock.height(366);
selectedUserBlock.height(366);
getUserInfo();
warp.find('.all_org').hide();
}
this.show = function () {
if (!hasEasyUI("div[name='" + guid + "winWarp']")) {
var warpElement = "
";
warp = window.top.$(warpElement).appendTo(window.top.document.body);
win = warp.window({
width: 728,
height: 568,
modal: true,
maximizable: false,
collapsible: false,
shadow: false,
name: "winWarp",
maximizable: false,
title: '用户信息选择',
onBeforeOpen: function () {
$('select:not(.easyui-combobox)').hide(); //IE6中解决select遮住问题
},
onBeforeClose: function () {
$('select:not(.easyui-combobox)').show();
}
});
searchBlock = createElement(".selectUser_searchBlock",
"
", warp);
//创建首页元素
searchText = createElement(".searchText",
" ", searchBlock);
searchButton = createElement("#btnSearch",
" ", searchBlock);
homeBlock = createElement(".selectUser_homeBlock",
"
", warp);
createElement(".homeBlock_title",
"所有部门 ", homeBlock);
orgSelectBlock = createElement(".selectUser_orgSelectBlock",
"
", homeBlock);
var orgSelectButton = createElement(".userSelectBlock_orgSelectButton",
"
", homeBlock);
btnOrgDefine = createElement("a[name=btnOrgDefine]", "确定 ", orgSelectButton);
createElement("", "取消 ", orgSelectButton);
//创建人员选择元素
userSelectBlock = createElement(".selectUser_userSelectBlock",
"
", warp);
createElement(".userSelectBlock_title",
"所有部门 ", userSelectBlock);
selectOrgBlock = createElement(".userSelectBlock_selectOrgBlock",
"
", userSelectBlock);
var optionsUserPanel = createElement(".userSelectBlock_optionsUserPanel",
"
", userSelectBlock);
optionsUserTitle = createElement(".userSelectBlock_optionsUserTitle",
"
", optionsUserPanel);
if (multipleChoice)
createElement("", " 全选", optionsUserTitle);
// createElement("", " 代维", optionsUserTitle);
createElement("", " ", optionsUserTitle);
createElement("", " ", optionsUserTitle);
createElement("", " ", optionsUserTitle);
optionsUserBlock = createElement(".userSelectBlock_optionsUserBlock",
"
", optionsUserPanel);
var selectedUserPanel = createElement(".userSelectBlock_selectedUserPanel",
"
", userSelectBlock);
selectedUserTitle = createElement(".userSelectBlock_selectedUserTitle",
"
", selectedUserPanel);
createElement("", " ", selectedUserTitle);
createElement("", " ", selectedUserTitle);
createElement("", " ", selectedUserTitle);
selectedUserBlock = createElement(".userSelectBlock_selectedUserBlock",
"
", selectedUserPanel);
createElement("",
"
", userSelectBlock);
var userSelectButton = createElement(".userSelectBlock_userSelectButton",
"
", userSelectBlock);
btnUserDefine = createElement("a[name=btnUserDefine]", "确定 ", userSelectButton);
createElement("", "取消 ", userSelectButton);
loading = createElement(".selectloading",
"正在加载
", warp);
createLinkButton(homeBlock);
createLinkButton(userSelectBlock);
togglePanel(false);
//特定用户选择
if (isSpecific)
specificSelect();
//getDepartments();
getGetCompanyType();
registEvent();
} else {
window.top.$("div[name='" + guid + "winWarp']").window('open');
}
}
}