user_multi_sel.jsp
上传用户:jhtang88
上传日期:2014-01-27
资源大小:28528k
文件大小:14k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <%@ page contentType="text/html;charset=utf-8" %>
  2. <%@ page import="com.redmoon.oa.dept.*" %>
  3. <HTML><HEAD><TITLE>选择用户</TITLE>
  4. <link rel="stylesheet" href="common.css">
  5. <jsp:useBean id="fchar" scope="page" class="cn.js.fan.util.StrUtil"/>
  6. <META content="Microsoft FrontPage 4.0" name=GENERATOR><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7. <style type="text/css">
  8. #floater {
  9. position: absolute;
  10. left: 500;
  11. top: 146;
  12. width: 116px;
  13. visibility: visible;
  14. z-index: 10;
  15. height: 222px;
  16. background-color: #EAEAEA;
  17. }
  18. .style1 {
  19. font-size: 12pt;
  20. font-weight: bold;
  21. }
  22. -->
  23. </style>
  24.   <script src='dwr/interface/DeptUserDb.js'></script>
  25.   <script src='dwr/engine.js'></script>
  26.   <script src='dwr/util.js'></script>
  27.   <script>
  28.   var allUserOfDept="";
  29.   var allUserRealNameOfDept = "";
  30.   function updateResults(deptCode) {
  31.     DWRUtil.removeAllRows("postsbody");
  32. allUserOfDept="";
  33. allUserRealNameOfDept = "";
  34.     DeptUserDb.list2DWR(fillTable, deptCode);
  35.     $("resultTable").style.display = '';
  36.   }
  37.   
  38.   var getCode = function(unit) { return unit.deptCode };
  39.   var getName = function(unit) { return unit.deptName };
  40.   var getUserName = function(unit) { 
  41.   if (unit.userName!=null) {
  42.   if (allUserOfDept=="") {
  43. allUserOfDept = unit.userName;
  44. allUserRealNameOfDept = unit.userRealName;
  45.   }
  46.   else {
  47. allUserOfDept += "," + unit.userName;
  48. allUserRealNameOfDept += ","  + unit.userRealName;
  49.   }
  50.   }
  51.      var u = unit.userRealName;
  52.   if (u!=null && u!="")
  53. return "<a href=# onClick="selPerson('" + unit.deptCode + "', '" + unit.deptName + "', '" + unit.userName + "','" + unit.userRealName + "')">" + u + "</a>" 
  54.   else
  55.    return "无";
  56.   };
  57.   
  58.   var getCancelSelUser = function(unit) { 
  59.      var u = unit.userName;
  60.   if (u!=null && u!="")
  61. return "[<a href=# onClick="cancelSelPerson('" + unit.deptCode + "', '" + unit.deptName + "', '" + unit.userName + "','" + unit.userRealName + "')">取消选择</a>]" 
  62.   else
  63.    return "无";
  64.   }
  65.   
  66.   function fillTable(apartment) {
  67.     DWRUtil.addRows("postsbody", apartment, [ getName, getUserName, getCancelSelUser ]);
  68.   }
  69.   
  70.   function setUsers() {
  71. // window.returnValue = users.innerText;
  72. dialogArguments.setUsers(users.innerText, userRealNames.innerText);
  73.    window.close();
  74.   }
  75.   function initUsers() {
  76.    users.innerText = dialogArguments.getSelUserNames();
  77.    userRealNames.innerText = dialogArguments.getSelUserRealNames();
  78.    // 初始化可以选择的部门
  79.    try {
  80.    var depts = dialogArguments.getDept();
  81.    if (depts!="") {
  82.    var ary = depts.split(",");
  83.    var isFinded = true;
  84.        isFinded = false;
  85.    var len = document.all.tags('A').length;
  86.    for(var i=0; i<len; i++) {
  87.     try {
  88. var aObj = document.all.tags('A')[i];
  89. var canSel = false;
  90. for (var j=0; j<ary.length; j++) {
  91. if (aObj.outerHTML.indexOf("'" + ary[j] + "'")!=-1) {
  92. canSel = true;
  93. // alert(canSel);
  94. break;
  95. }
  96. }
  97. if (!canSel) {
  98. aObj.innerHTML = "<font color='#888888'>" + aObj.innerText + "</font>";
  99. aObj.outerHTML = aObj.outerHTML.replace(/onClick/gi, "''");
  100. }
  101. isFinded = true;
  102. }
  103. catch (e) {}
  104.    }
  105.    }
  106.    }
  107.    catch (e) {}
  108.   }
  109.   function selPerson(deptCode, deptName, userName, userRealName) {
  110. // 检查用户是否已被选择
  111. if (users.innerText.indexOf(userName)!=-1) {
  112. alert("用户" + userRealName + "已被选择!");
  113. return;
  114. }
  115. if (users.innerText=="") {
  116. users.innerText += userName;
  117. userRealNames.innerText += userRealName;
  118. }
  119. else {
  120. users.innerText += "," + userName;
  121. userRealNames.innerText += "," + userRealName;
  122. }
  123.   }
  124.   
  125.   function cancelSelPerson(deptCode, deptName, userName) {
  126. // 检查用户是否已被选择
  127. var strUsers = users.innerText;
  128. if (strUsers=="")
  129. return;
  130. if (strUsers.indexOf(userName)==-1) {
  131. return;
  132. }
  133. var strUserRealNames = userRealNames.innerText;
  134.    var ary = strUsers.split(",");
  135. var aryRealName = strUserRealNames.split(",");
  136. var len = ary.length;
  137. var ary1 = new Array();
  138. var aryRealName1 = new Array();
  139. var k = 0;
  140. for (i=0; i<len; i++) {
  141. if (ary[i]!=userName) {
  142. ary1[k] = ary[i];
  143. aryRealName1[k] = aryRealName[i];
  144. k++;
  145. }
  146. }
  147. var str = "";
  148. var str1 = "";
  149. for (i=0; i<k; i++) {
  150. if (str=="") {
  151. str = ary1[i];
  152. str1 = aryRealName1[i];
  153. }
  154. else {
  155. str += "," + ary1[i];
  156. str1 += "," + aryRealName1[i];
  157. }
  158. }
  159. users.innerText = str;
  160. userRealNames.innerText = str1;
  161.   }
  162.   
  163.   function selAllUserOfDept() {
  164.    if (allUserOfDept=="")
  165. return;
  166. var allusers = users.innerText;
  167. var allUserRealNames = userRealNames.innerText;
  168. if (allusers=="") {
  169. allusers += allUserOfDept;
  170. allUserRealNames += allUserRealNameOfDept;
  171. }
  172. else {
  173. allusers += "," + allUserOfDept;
  174. allUserRealNames += "," + allUserRealNameOfDept;
  175. }
  176. // alert(allUserRealNames);
  177. var r = clearRepleatUser(allusers, allUserRealNames);
  178.    users.innerText = r[0];
  179. userRealNames.innerText = r[1];
  180.   }
  181.    
  182.   function clearRepleatUser(strUsers, strUserRealNames) {
  183.    var ary = strUsers.split(",");
  184. var aryRealName = strUserRealNames.split(",");
  185. var len = ary.length;
  186. // 创建二维数组
  187. var ary1 = new Array();
  188. for (i=0; i<len; i++) {
  189. ary1[i] = new Array(2);
  190. ary1[i][0] = ary[i];
  191. ary1[i][1] = 0; // 1 表示重复
  192. }
  193. // 标记重复的用户
  194. for (i=0; i<len; i++) {
  195. var user = ary[i];
  196. for (j=i+1; j<len; j++) {
  197. if (ary1[j][1]==1)
  198. continue;
  199. if (ary[j]==user)
  200. ary1[j][1] = 1;
  201. }
  202. }
  203. // 重组为字符串
  204. var str = "";
  205. var str1 = "";
  206. for (i=0; i<len; i++) {
  207. if (ary1[i][1]==0) {
  208. u = ary1[i][0];
  209. if (str=="") {
  210. str = u;
  211. str1 = aryRealName[i];
  212. }
  213. else {
  214. str += "," + u;
  215. str1 += "," + aryRealName[i];
  216. }
  217. }
  218. }
  219. var retary = new Array();
  220. retary[0] = str;
  221. retary[1] = str1;
  222. return retary;
  223.   }
  224.  
  225.   </script>
  226.   <script>
  227. function findObj(theObj, theDoc)
  228. {
  229.   var p, i, foundObj;
  230.   
  231.   if(!theDoc) theDoc = document;
  232.   if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)
  233.   {
  234.     theDoc = parent.frames[theObj.substring(p+1)].document;
  235.     theObj = theObj.substring(0,p);
  236.   }
  237.   if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
  238.   for (i=0; !foundObj && i < theDoc.forms.length; i++) 
  239.     foundObj = theDoc.forms[i][theObj];
  240.   for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) 
  241.     foundObj = findObj(theObj,theDoc.layers[i].document);
  242.   if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
  243.   
  244.   return foundObj;
  245. }
  246. function ShowChild(imgobj, name)
  247. {
  248. var tableobj = findObj("childof"+name);
  249. if (tableobj.style.display=="none")
  250. {
  251. tableobj.style.display = "";
  252. if (imgobj.src.indexOf("i_puls-root-1.gif")!=-1)
  253. imgobj.src = "images/i_puls-root.gif";
  254. if (imgobj.src.indexOf("i_plus-1-1.gif")!=-1)
  255. imgobj.src = "images/i_plus2-2.gif";
  256. if (imgobj.src.indexOf("i_plus-1.gif")!=-1)
  257. imgobj.src = "images/i_plus2-1.gif";
  258. }
  259. else
  260. {
  261. tableobj.style.display = "none";
  262. if (imgobj.src.indexOf("i_puls-root.gif")!=-1)
  263. imgobj.src = "images/i_puls-root-1.gif";
  264. if (imgobj.src.indexOf("i_plus2-2.gif")!=-1)
  265. imgobj.src = "images/i_plus-1-1.gif";
  266. if (imgobj.src.indexOf("i_plus2-1.gif")!=-1)
  267. imgobj.src = "images/i_plus-1.gif";
  268. }
  269. }  
  270. // 折叠目录
  271. function shrink() {
  272.    for(var i=0; i<document.images.length; i++) {
  273. var imgObj = document.images[i];
  274. try {
  275. if (imgObj.tableRelate!="") {
  276. ShowChild(imgObj, imgObj.tableRelate);
  277. }
  278. }
  279. catch (e) {
  280. }
  281.    }
  282. }
  283.   </script>
  284.   
  285. <script LANGUAGE="JavaScript">
  286. // -----------实现floater-------------------
  287. self.onError=null;
  288. currentX = currentY = 0; 
  289. whichIt = null; 
  290. lastScrollX = 0; lastScrollY = 0;
  291. NS = (document.layers) ? 1 : 0;
  292. IE = (document.all) ? 1: 0;
  293. <!-- STALKER CODE -->
  294. function heartBeat() {
  295. if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }
  296. if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }
  297. if(diffY != lastScrollY) {
  298. percent = .1 * (diffY - lastScrollY);
  299. if(percent > 0) percent = Math.ceil(percent);
  300. else percent = Math.floor(percent);
  301. if(IE) document.all.floater.style.pixelTop += percent;
  302. if(NS) document.floater.top += percent; 
  303. lastScrollY = lastScrollY + percent;
  304. }
  305. if(diffX != lastScrollX) {
  306. percent = .1 * (diffX - lastScrollX);
  307. if(percent > 0) percent = Math.ceil(percent);
  308. else percent = Math.floor(percent);
  309. if(IE) document.all.floater.style.pixelLeft += percent;
  310. if(NS) document.floater.left += percent;
  311. lastScrollX = lastScrollX + percent;
  312. }
  313. <!-- /STALKER CODE -->
  314. <!-- DRAG DROP CODE -->
  315. function checkFocus(x,y) { 
  316. stalkerx = document.floater.pageX;
  317. stalkery = document.floater.pageY;
  318. stalkerwidth = document.floater.clip.width;
  319. stalkerheight = document.floater.clip.height;
  320. if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight))) return true;
  321. else return false;
  322. }
  323. function grabIt(e) {
  324. if(IE) {
  325. whichIt = event.srcElement;
  326. while (whichIt.id.indexOf("floater") == -1) {
  327. whichIt = whichIt.parentElement;
  328. if (whichIt == null) { return true; }
  329. }
  330. whichIt.style.pixelLeft = whichIt.offsetLeft;
  331. whichIt.style.pixelTop = whichIt.offsetTop;
  332. currentX = (event.clientX + document.body.scrollLeft);
  333. currentY = (event.clientY + document.body.scrollTop); 
  334. } else { 
  335. window.captureEvents(Event.MOUSEMOVE);
  336. if(checkFocus (e.pageX,e.pageY)) { 
  337. whichIt = document.floater;
  338. StalkerTouchedX = e.pageX-document.floater.pageX;
  339. StalkerTouchedY = e.pageY-document.floater.pageY;
  340. }
  341. return true;
  342. }
  343. function moveIt(e) {
  344. if (whichIt == null) { return false; }
  345. if(IE) {
  346. newX = (event.clientX + document.body.scrollLeft);
  347. newY = (event.clientY + document.body.scrollTop);
  348. distanceX = (newX - currentX); distanceY = (newY - currentY);
  349. currentX = newX; currentY = newY;
  350. whichIt.style.pixelLeft += distanceX;
  351. whichIt.style.pixelTop += distanceY;
  352. if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;
  353. if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;
  354. if(whichIt.style.pixelLeft > document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;
  355. if(whichIt.style.pixelTop > document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;
  356. event.returnValue = false;
  357. } else { 
  358. whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);
  359. if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;
  360. if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;
  361. if( (whichIt.left + whichIt.clip.width) >= (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;
  362. if( (whichIt.top + whichIt.clip.height) >= (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;
  363. return false;
  364. }
  365. return false;
  366. }
  367. function dropIt() {
  368. whichIt = null;
  369. if(NS) window.releaseEvents (Event.MOUSEMOVE);
  370. return true;
  371. }
  372. <!-- DRAG DROP CODE -->
  373. if(NS) {
  374. window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);
  375. window.onmousedown = grabIt;
  376. window.onmousemove = moveIt;
  377. window.onmouseup = dropIt;
  378. }
  379. if(IE) {
  380. document.onmousedown = grabIt;
  381. document.onmousemove = moveIt;
  382. document.onmouseup = dropIt;
  383. }
  384. if(NS || IE) action = window.setInterval("heartBeat()",1);
  385. </script>  
  386. </HEAD>
  387. <BODY bgColor=#FBFAF0 leftMargin=4 topMargin=8 rightMargin=0 class=menubar onLoad="shrink();initUsers();" style="overflow:auto">
  388. <jsp:useBean id="privilege" scope="page" class="com.redmoon.oa.pvg.Privilege"/>
  389. <%
  390. String priv="read";
  391. if (!privilege.isUserPrivValid(request,priv))
  392. {
  393. // out.println(cn.js.fan.web.SkinUtil.makeErrMsg(request, cn.js.fan.web.SkinUtil.LoadString(request, "pvg_invalid")));
  394. // return;
  395. }
  396. %>
  397. <div ID="floater" style="left: 471px; top: 27px;">
  398.   <table width="100%" height="100%">
  399.     <tr><td height="23" align="center" bgcolor="#BEC7D3"><strong>已选职员</strong></td>
  400.     </tr>
  401.   <tr><td height="200" valign="top">
  402.   <div id="users" name="users" style="display:none"></div>
  403.   <div id="userRealNames" name="userRealNames"></div>
  404.    </td>
  405.   </tr><tr><td height="31" align="right">
  406.   <input type="button" name="okbtn" value="    确 定    " onClick="setUsers()"></td></tr>
  407.    <tr>
  408.      <td align="right"><input type="button" name="cancelbtn" value="    取 消    " onClick="window.close()"></td>
  409.    </tr>
  410.   </table>
  411. </div>
  412. <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="tableframe">
  413.   <tr> 
  414.     <td height="24" colspan="5" align="center" class="right-title"><span>选 择 用 户</span></td>
  415.   </tr>
  416.   <tr> 
  417.     <td width="2%" height="87"> </td>
  418.     <td colspan="2"><%
  419. DeptMgr dm = new DeptMgr();
  420. DeptDb dd = dm.getDeptDb(DeptDb.ROOTCODE);
  421. DeptView tv = new DeptView(dd);
  422. tv.ListFunc(out, "_self", "updateResults", "", "" );
  423. %></td>
  424.     <td width="50%" align="center" valign="top" bgcolor="#F3F3F3">
  425. <div id="resultTable">
  426.   <table width="100%" border="0" cellpadding="4" cellspacing="0">
  427.       <thead>
  428.         <tr>
  429.           <th width="98" align="left" bgcolor="#B4D3F1">部门</th>
  430.           <th width="91" align="left" bgcolor="#B4D3F1">职员</th>
  431.           <th width="74" align="left" bgcolor="#B4D3F1">&nbsp;</th>
  432.         </tr>
  433.       </thead>
  434.       <tbody id="postsbody">
  435.   <tr>
  436.     <td colspan="3">请选择部门</td>
  437.   </tr>
  438.       </tbody>
  439.     </table>
  440. </div><table width="100%" border="0" cellspacing="0" cellpadding="0">
  441.   <tr>
  442.     <td height="30" align="center"><input type="button" value="选择该部门所有用户" onClick="selAllUserOfDept()"></td>
  443.   </tr>
  444. </table> </td>
  445.     <td width="21%" align="center" valign="top" bgcolor="#F3F3F3">&nbsp;</td>
  446.   </tr>
  447. </table>
  448. </BODY></HTML>