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'); } } }