sysUserDialog.jsp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. <%@page pageEncoding="UTF-8" import="com.hotent.platform.model.system.SysUser"%>
  2. <%@include file="/commons/include/html_doctype.html"%>
  3. <html>
  4. <head>
  5. <title>选择用户 </title>
  6. <%@include file="/commons/include/form.jsp" %>
  7. <f:link href="tree/zTreeStyle.css"></f:link>
  8. <script type="text/javascript" src="${ctx}/js/tree/jquery.ztree.js"></script>
  9. <script type="text/javascript">
  10. var dialog = frameElement.dialog; //调用页面的dialog对象(ligerui对象)
  11. var isSingle=${isSingle};
  12. var scope =eval("("+dialog.get("scope")+")");
  13. var rol_Tree=null;
  14. var org_Tree=null;
  15. var pos_Tree=null;
  16. var onl_Tree=null;
  17. var accordion = null;
  18. var type ="";
  19. var typeVal="";
  20. if(scope){
  21. type = scope.type;
  22. typeVal = scope.value;
  23. }
  24. //树展开层数
  25. var expandDepth = 1;
  26. forbidF5("Chrome");//禁止刷新页面
  27. $(function(){
  28. //布局
  29. $("#defLayout").ligerLayout({
  30. leftWidth: 220,
  31. rightWidth: 170,
  32. bottomHeight :40,
  33. height: '90%',
  34. allowBottomResize:false,
  35. allowLeftCollapse:false,
  36. allowRightCollapse:false,
  37. onHeightChanged: heightChanged,
  38. minLeftWidth:200,
  39. allowLeftResize:false
  40. });
  41. var findStr = '';
  42. //快速查找
  43. $("input.quick-find").bind('keyup',function(){
  44. var str = $(this).val();
  45. if(!str)return;
  46. if(str==findStr)return;
  47. findStr = str;
  48. var tbody = $("#userList"),
  49. firstTr = $('tr.hidden',tbody);
  50. $("tr",tbody).each(function(){
  51. var me = $(this),
  52. span = $('span',me),
  53. spanStr = span.html();
  54. if(!spanStr)return true;
  55. if(spanStr.indexOf(findStr)>-1){
  56. $(this).insertAfter(firstTr);
  57. }
  58. });
  59. });
  60. var height = $(".l-layout-center").height();
  61. $("#leftMemu").ligerAccordion({ height: height-28, speed: null });
  62. accordion = $("#leftMemu").ligerGetAccordionManager();
  63. load_Org_Tree();
  64. if(${isShowRole}){
  65. load_Rol_Tree();
  66. }
  67. if(${isShowPos}){
  68. load_Pos_Tree();
  69. }
  70. if(${isShowOnlineUser}){
  71. load_Onl_Tree();
  72. }
  73. heightChanged();
  74. handleSelects();
  75. var src="${ctx}/platform/system/sysUser/selector.ht?isSingle=${isSingle}&type="+type+"&typeVal="+typeVal;
  76. $("#userListFrame").attr("src",src);
  77. });
  78. function heightChanged(options){
  79. if(options){
  80. if (accordion && options.middleHeight - 28 > 0){
  81. $("#SEARCH_BY_ORG").height(options.middleHeight - 163);
  82. if(${isShowRole}) $("#SEARCH_BY_ROL").height(options.middleHeight - 183);
  83. if(${isShowPos}) $("#SEARCH_BY_POS").height(options.middleHeight - 140);
  84. if(${isShowOnlineUser}) $("#SEARCH_BY_ONL").height(options.middleHeight -163);
  85. accordion.setHeight(options.middleHeight - 28);
  86. }
  87. }else{
  88. var height = $(".l-layout-center").height();
  89. $("#SEARCH_BY_ROL").height(height - 183);
  90. if(${isShowRole}) $("#SEARCH_BY_ORG").height(height - 163);
  91. if(${isShowPos}) $("#SEARCH_BY_POS").height(height - 140);
  92. if(${isShowOnlineUser}) $("#SEARCH_BY_ONL").height(height - 163);
  93. }
  94. }
  95. function setCenterTitle(title){
  96. $("#centerTitle").empty();
  97. $("#centerTitle").append(title);
  98. };
  99. function load_Pos_Tree(){
  100. var demId=$("#demPos").val();
  101. var setting = {
  102. data: {
  103. key : {
  104. name: "posName",
  105. title: "posName"
  106. },
  107. simpleData: {
  108. enable: true,
  109. idKey: "posId",
  110. rootPId: -1
  111. }
  112. },
  113. callback: {
  114. onClick: function(event, treeId, treeNode){
  115. var url="${ctx}/platform/system/sysUser/selector.ht";
  116. var p="?isSingle=${isSingle}&searchBy=<%=SysUser.SEARCH_BY_POS%>&posId=" + treeNode.posId+"&type="+type+"&typeVal="+typeVal;
  117. $("#userListFrame").attr("src", url + p);
  118. setCenterTitle("按岗位查找:" + treeNode.posName);
  119. }
  120. }
  121. };
  122. var url="${ctx}/platform/system/position/getBySupOrgId.ht?type="+type+"&typeVal="+typeVal;
  123. var para= {demId : demId};
  124. $.post(url,para,function(result){
  125. pos_Tree = $.fn.zTree.init($("#SEARCH_BY_POS"), setting,result);
  126. if(expandDepth!=0)
  127. {
  128. pos_Tree.expandAll(false);
  129. var nodes = pos_Tree.getNodesByFilter(function(node){
  130. return (node.level < expandDepth);
  131. });
  132. if(nodes.length>0){
  133. for(var i=0;i<nodes.length;i++){
  134. pos_Tree.expandNode(nodes[i],true,false);
  135. }
  136. }
  137. }else pos_Tree.expandAll(true);
  138. });
  139. };
  140. //判断是否为子结点,以改变图标
  141. function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
  142. if(treeNode){
  143. var children=treeNode.children;
  144. if(children.length==0){
  145. treeNode.isParent=true;
  146. pos_Tree = $.fn.zTree.getZTreeObj("SEARCH_BY_POS");
  147. pos_Tree.updateNode(treeNode);
  148. }
  149. }
  150. };
  151. function load_Org_Tree(){
  152. var value=$("#dem").val();
  153. var setting = {
  154. data: {
  155. key : {
  156. name: "orgName",
  157. title: "orgName"
  158. },
  159. simpleData: {
  160. enable: true,
  161. idKey: "orgId",
  162. pIdKey: "orgSupId",
  163. rootPId: -1
  164. }
  165. },
  166. async: {
  167. enable: true,
  168. url:"${ctx}/platform/system/sysOrg/getTreeData.ht?demId="+value+"&type="+type+"&typeVal="+typeVal,
  169. autoParam:["orgId","orgSupId"]
  170. },
  171. callback:{
  172. onClick: function(event, treeId, treeNode){
  173. var url="${ctx}/platform/system/sysUser/selector.ht";
  174. var includSub=($("#includSub").attr("checked"))?1:0;
  175. var p="?isSingle=${isSingle}&searchBy=<%=SysUser.SEARCH_BY_ORG%>&orgId="+treeNode.orgId+"&includSub="+includSub+"&path="+treeNode.path+"&type="+type+"&typeVal="+typeVal;
  176. $("#userListFrame").attr("src",url+p);
  177. setCenterTitle("按组织查找:"+treeNode.orgName);
  178. },
  179. onAsyncSuccess: orgTreeOnAsyncSuccess
  180. }
  181. };
  182. org_Tree=$.fn.zTree.init($("#SEARCH_BY_ORG"), setting);
  183. };
  184. //判断是否为子结点,以改变图标
  185. function orgTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
  186. if(treeNode){
  187. var children=treeNode.children;
  188. if(children.length==0){
  189. treeNode.isParent=true;
  190. org_Tree = $.fn.zTree.getZTreeObj("SEARCH_BY_ORG");
  191. org_Tree.updateNode(treeNode);
  192. }
  193. }
  194. };
  195. function load_Rol_Tree(){
  196. var systemId=$("#systemId").val();
  197. var roleName=$("#Q_roleName_SL").val();
  198. var setting = {
  199. data: {
  200. key : {
  201. name: "roleName",
  202. title: "roleName"
  203. },
  204. simpleData: {
  205. enable: true,
  206. idKey: "roleId",
  207. rootPId: -1
  208. }
  209. },
  210. callback: {
  211. onClick: function(event, treeId, treeNode){
  212. var url="${ctx}/platform/system/sysUser/selector.ht";
  213. var p="?isSingle=${isSingle}&searchBy=<%=SysUser.SEARCH_BY_ROL%>&roleId=" + treeNode.roleId+"&type="+type+"&typeVal="+typeVal;
  214. $("#userListFrame").attr("src", url + p);
  215. setCenterTitle("按角色查找:" + treeNode.roleName);
  216. }
  217. }
  218. };
  219. var url="${ctx}/platform/system/sysRole/getAll.ht";
  220. var para= {systemId : systemId,Q_roleName_SL : roleName};
  221. $.post(url,para,function(result){
  222. rol_Tree = $.fn.zTree.init($("#SEARCH_BY_ROL"), setting,result);
  223. if(expandDepth!=0)
  224. {
  225. rol_Tree.expandAll(false);
  226. var nodes = rol_Tree.getNodesByFilter(function(node){
  227. return (node.level < expandDepth);
  228. });
  229. if(nodes.length>0){
  230. for(var i=0;i<nodes.length;i++){
  231. rol_Tree.expandNode(nodes[i],true,false);
  232. }
  233. }
  234. }else rol_Tree.expandAll(true);
  235. });
  236. };
  237. function load_Onl_Tree(){
  238. var value=$("#onl").val();
  239. var setting = {
  240. data: {
  241. key : {
  242. name: "orgName",
  243. title: "orgName"
  244. },
  245. simpleData: {
  246. enable: true,
  247. idKey: "orgId",
  248. pIdKey : "orgSupId",
  249. rootPId: -1
  250. }
  251. },
  252. callback: {
  253. onClick: function(event, treeId, treeNode){
  254. var url="${ctx}/platform/system/sysUser/selector.ht";
  255. var p="?isSingle=${isSingle}&searchBy=<%=SysUser.SEARCH_BY_ONL%>&path="+treeNode.path+"&type="+type+"&typeVal="+typeVal;
  256. $("#userListFrame").attr("src",url+p);
  257. setCenterTitle(treeNode.orgName);
  258. }
  259. }
  260. };
  261. var url= "${ctx}/platform/system/sysOrg/getTreeOnlineData.ht?type="+type+"&typeVal="+typeVal;
  262. var para="demId=" + value;
  263. $.post(url,para,function(result){
  264. org_Tree = $.fn.zTree.init($("#SEARCH_BY_ONL"), setting,result);
  265. if(expandDepth!=0)
  266. {
  267. org_Tree.expandAll(false);
  268. var nodes = org_Tree.getNodesByFilter(function(node){
  269. return (node.level < expandDepth);
  270. });
  271. if(nodes.length>0){
  272. for(var i=0;i<nodes.length;i++){
  273. org_Tree.expandNode(nodes[i],true,false);
  274. }
  275. }
  276. }else org_Tree.expandAll(true);
  277. });
  278. };
  279. function dellAll() {
  280. $("#sysUserList").empty();
  281. };
  282. function del(obj) {
  283. var tr = $(obj).parents("tr");
  284. $(tr).remove();
  285. };
  286. function add(data) {
  287. var aryTmp=data.split("#");
  288. var userId=aryTmp[0];
  289. var len= $("#user_" + userId).length;
  290. if(len>0) return;
  291. var aryData=['<tr id="user_'+userId+'">',
  292. '<td>',
  293. '<input type="hidden" class="pk" name="userData" value="'+data +'"><span> ',
  294. aryTmp[2],
  295. '</span></td>',
  296. '<td><a onclick="javascript:del(this);" class="link del" ></a> </td>',
  297. '</tr>'];
  298. $("#sysUserList").append(aryData.join(""));
  299. };
  300. function selectMulti(obj) {
  301. if ($(obj).attr("checked") == "checked"){
  302. var data = $(obj).val();
  303. add(data);
  304. }
  305. };
  306. function selectAll(obj) {
  307. var state = $(obj).attr("checked");
  308. var rtn=state == undefined?false:true;
  309. checkAll(rtn);
  310. };
  311. function checkAll(checked) {
  312. $("#userListFrame").contents().find("input[type='checkbox'][class='pk']").each(function() {
  313. $(this).attr("checked", checked);
  314. if (checked) {
  315. var data = $(this).val();
  316. add(data);
  317. }
  318. });
  319. };
  320. function clearUser(){
  321. var rtn={
  322. userIds: '',
  323. fullnames: '',
  324. emails: '',
  325. mobiles: ''
  326. };
  327. dialog.get("sucCall")(rtn);
  328. dialog.close();
  329. }
  330. function selectUser(){
  331. var pleaseSelect= "请选择用户!";
  332. var chIds;
  333. if(isSingle==true){
  334. chIds = $('#userListFrame').contents().find(":input[name='userData'][checked]");
  335. }else{
  336. chIds = $("#sysUserList").find(":input[name='userData']");
  337. }
  338. if (!chIds||chIds.length == 0) {
  339. alert(pleaseSelect);
  340. return;
  341. }
  342. var aryuserIds=[];
  343. var aryAccounts=[];
  344. var aryfullnames=[];
  345. var aryemails=[];
  346. var arymobiles=[];
  347. var aryorgNames=[];
  348. $.each(chIds,function(i,ch){
  349. var aryTmp=$(ch).val().split("#");
  350. aryuserIds.push(aryTmp[0]);
  351. aryAccounts.push(aryTmp[1]);
  352. aryfullnames.push(aryTmp[2]);
  353. aryemails.push(aryTmp[3]);
  354. arymobiles.push(aryTmp[4]);
  355. aryorgNames.push(aryTmp[5]);
  356. });
  357. var obj={userIds:aryuserIds.join(","),accounts:aryAccounts.join(","), fullnames:aryfullnames.join(","),
  358. emails:aryemails.join(","),mobiles:arymobiles.join(","),orgNames:aryorgNames.join(",")};
  359. try{
  360. dialog.get("sucCall")(obj);
  361. }catch(e){
  362. }
  363. dialog.close();
  364. }
  365. var handleSelects=function(){
  366. //var selectUsers = window.dialogArguments ;
  367. var selectUsers =dialog.get("selectUsers");
  368. if(selectUsers.selectUserIds && selectUsers.selectUserNames){
  369. var ids=selectUsers.selectUserIds.split(",");
  370. var names=selectUsers.selectUserNames.split(",");
  371. for(var i=0;i<ids.length;i++){
  372. if(names[i]!=undefined&&names[i]!="undefined"&&names[i]!=null&&names[i]!=""){
  373. add(ids[i]+"##"+names[i]+"#");
  374. }
  375. }
  376. }
  377. }
  378. </script>
  379. <style type="text/css">
  380. .ztree {
  381. overflow: auto;
  382. }
  383. .label {
  384. color: #6F8DC6;
  385. text-align: right;
  386. padding-right: 6px;
  387. padding-left: 0px;
  388. font-weight: bold;
  389. }
  390. .quick-find {
  391. width:35px;
  392. }
  393. html { overflow-x: hidden; }
  394. .l-layout-right{left:511px;}
  395. .l-layout-left, .l-layout-center, .l-layout-right { height:90%;}
  396. .l-accordion-content { height:324px;}
  397. .l-accordion-content .ztree { height:285px;}
  398. </style>
  399. </head>
  400. <body>
  401. <div id="defLayout" style="height:100%;">
  402. <div id="leftMemu" position="left" title="查询条件<input type='checkbox' id='includSub'/>包含子分类" style="overflow: auto; float:left;width: 100%; height:95%">
  403. <div title="按组织查找" style="overflow: hidden;">
  404. <table border="0" width="100%" class="table-detail">
  405. <tr >
  406. <td width="30%" nowrap="nowrap"><span class="label">维度:</span>
  407. </td>
  408. <td style="width:70%;">
  409. <select id="dem" name="dem" onchange="load_Org_Tree()">
  410. <c:forEach var="demen" items="${demensionList}">
  411. <option value="${demen.demId}" <c:if test="${demen.demId==1}">selected</c:if>>${ demen.demName}</option>
  412. </c:forEach>
  413. </select>
  414. </td>
  415. </tr>
  416. </table>
  417. <div id="SEARCH_BY_ORG" class='ztree'></div>
  418. </div>
  419. <!--
  420. <c:if test="${isShowPos}">
  421. <div title="按岗位查找" style="overflow: hidden;">
  422. <table border="0" width="100%" class="table-detail">
  423. <tr >
  424. <td width="30%" nowrap="nowrap"><span class="label">维度:</span>
  425. </td>
  426. <td style="width:70%;">
  427. <select id="demPos" name="demPos" onchange="load_Pos_Tree()">
  428. <c:forEach var="demen" items="${demensionList}">
  429. <option value="${demen.demId}" <c:if test="${demen.demId==1}">selected</c:if>>${ demen.demName}</option>
  430. </c:forEach>
  431. </select>
  432. </td>
  433. </tr>
  434. </table>
  435. <div id="SEARCH_BY_POS" class='ztree'></div>
  436. </div>
  437. </c:if>
  438. -->
  439. <c:if test="${isShowRole}">
  440. <div title="按角色查找" style="overflow: hidden;">
  441. <div class="tree-title" style="width: 100%;">
  442. <div class="panel-detail">
  443. <table border="0" width="100%" class="table-detail">
  444. <tr>
  445. <td width="10%" nowrap="nowrap">
  446. <span class="label" style="width:60px;">系统:</span>
  447. </td>
  448. <td width="80%" colspan="2">
  449. <select id="systemId" name="systemId" onchange="load_Rol_Tree()">
  450. <c:forEach var="sys" items="${subSystemList}">
  451. <option value="${sys.systemId}">${ sys.sysName}</option>
  452. </c:forEach>
  453. </select>
  454. </td>
  455. </tr>
  456. <tr>
  457. <td>
  458. <span class="label" style="width:60px;">角色:</span>
  459. </td>
  460. <td>
  461. <input id="Q_roleName_SL" name="Q_roleName_SL" type="text" size="10">
  462. </td>
  463. <td>
  464. <a class="link detail" href="javascript:load_Rol_Tree();">&ensp;</a>
  465. </td>
  466. </tr>
  467. </table>
  468. </div>
  469. </div>
  470. <div id="SEARCH_BY_ROL" class='ztree'></div>
  471. </div>
  472. </c:if>
  473. <c:if test="${isShowOnlineUser}">
  474. <div title="在线用户" style="overflow: hidden;">
  475. <table border="0" width="100%" class="table-detail">
  476. <tr >
  477. <td width="30%" nowrap="nowrap"><span class="label">维度:</span>
  478. </td>
  479. <td style="width:70%;">
  480. <select id="onl" name="onl" onchange="load_Onl_Tree()">
  481. <c:forEach var="demen" items="${demensionList}">
  482. <option value="${demen.demId}" <c:if test="${demen.demId==1}">selected</c:if>>${ demen.demName}</option>
  483. </c:forEach>
  484. </select>
  485. </td>
  486. </tr>
  487. </table>
  488. <div id="SEARCH_BY_ONL" class='ztree'></div>
  489. </div>
  490. </c:if>
  491. </div>
  492. <div position="center">
  493. <div id="centerTitle" class="l-layout-header">全部用户</div>
  494. <iframe id="userListFrame" name="userListFrame" height="95%" width="100%" frameborder="0" ></iframe>
  495. </div>
  496. <c:if test="${isSingle==false}">
  497. <div position="right" style="overflow:auto;height:95%;width:170px;" title="<span><a onclick='javascript:dellAll();' class='link del'>清空 </a><input type='text' class='quick-find' title='查找'/></span>">
  498. <table width="145" id="sysUserList" class="table-grid table-list" id="0" cellpadding="1" cellspacing="1">
  499. <tbody id="userList">
  500. <tr class="hidden"></tr>
  501. </tbody>
  502. </table>
  503. </div>
  504. </c:if>
  505. </div>
  506. <div position="bottom" class="bottom" style="margin-top:10px;">
  507. <a href="javascript:;" class="button" onclick="selectUser()" style="margin-right:10px;" ><span class="icon ok"></span><span >选择</span></a>
  508. <a href="javascript:;" class="button" onclick="clearUser()"><span class="icon cancel" ></span><span class="chosen" >清空</span></a>
  509. <a href="javascript:;" class="button" style="margin-left:10px;" onclick="dialog.close()"><span class="icon cancel"></span><span >取消</span></a>
  510. </div>
  511. </body>
  512. </html>