sysUserFlowDialog.jsp 17 KB

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