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

Jsp/Servlet

开发平台:

Java

  1. <%@ page contentType="text/html;charset=utf-8" %>
  2. <%@ page import="java.util.*" %>
  3. <%@ page import="cn.js.fan.util.*" %>
  4. <%@ page import="com.redmoon.oa.basic.*" %>
  5. <%@ page import="com.redmoon.oa.person.*" %>
  6. <%@ page import="com.redmoon.oa.dept.*" %>
  7. <%@ page import="com.redmoon.oa.flow.*" %>
  8. <%@ page import="com.redmoon.oa.flow.strategy.*" %>
  9. <HTML><HEAD><TITLE>流程动作设定</TITLE>
  10. <link href="../common.css" rel="stylesheet" type="text/css">
  11. <%
  12. String op = ParamUtil.get(request, "op");
  13. String fieldWrite = ParamUtil.get(request, "hidFieldWrite");
  14. String flowTypeCode = ParamUtil.get(request, "flowTypeCode");
  15. String dept = ParamUtil.get(request, "hidDept");
  16. String nodeMode = ParamUtil.get(request, "hidNodeMode");
  17. if (nodeMode.equals(""))
  18. nodeMode = "" + WorkflowActionDb.NODE_MODE_ROLE; 
  19. if (op.equals("load"))
  20. nodeMode = "" + WorkflowActionDb.NODE_MODE_ROLE;
  21. %>
  22. <jsp:useBean id="fchar" scope="page" class="cn.js.fan.util.StrUtil"/>
  23. <jsp:useBean id="cfg" scope="page" class="com.redmoon.oa.Config"/>
  24. <jsp:useBean id="privilege" scope="page" class="com.redmoon.oa.pvg.Privilege"/>
  25. <%
  26. String priv="read";
  27. if (!privilege.isUserPrivValid(request,priv))
  28. {
  29. out.println(cn.js.fan.web.SkinUtil.makeErrMsg(request, cn.js.fan.web.SkinUtil.LoadString(request, "pvg_invalid")));
  30. return;
  31. }
  32. String userName = "";
  33. String userRealName = "";
  34. %>
  35. <script src="../inc/common.js"></script>
  36. <script language="JavaScript">
  37. function openWin(url,width,height)
  38. {
  39. var newwin=window.open(url,"_blank","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,top=50,left=120,width="+width+",height="+height);
  40. }
  41. function OpenFormFieldSelWin() {
  42. openWin("flow_predefine_form_field_sel.jsp?flowTypeCode=<%=flowTypeCode%>&fieldWrite=" + getFieldWriteValue(), 500, 340);
  43. }
  44. function getFieldWriteValue() {
  45. return fieldWrite.value;
  46. }
  47. function setFieldWriteValue(v) {
  48. fieldWrite.value = v;
  49. }
  50. function setFieldWriteText(v) {
  51. fieldWriteText.value = v;
  52. }
  53. function setDeptName(v) {
  54. deptName.value = v;
  55. }
  56. var flag = "";
  57. function ModifyAction() {
  58. if (flagModify.checked)
  59. flag = "1";
  60. else
  61. flag = "0";
  62. if (flagDel.checked)
  63. flag += "1";
  64. else
  65. flag += "0";
  66. if (flagDiscardFlow.checked)
  67. flag += "1";
  68. else
  69. flag += "0";
  70. if (flagDelFlow.checked)
  71. flag += "1";
  72. else
  73. flag += "0";
  74. flag += flagSaveArchive.value;
  75. if (flagDelAttach.checked)
  76. flag += "1";
  77. else
  78. flag += "0";
  79. if (flagXorRadiate.checked)
  80. flag += "1";
  81. else
  82. flag += "0";
  83. if (flagXorAggregate.checked)
  84. flag += "1";
  85. else
  86. flag += "0";
  87. var rankName = rank.options[rank.selectedIndex].text;
  88. var rel = "0";
  89. if (relateRoleToOrganization.checked)
  90. rel = "1";
  91. window.opener.ModifyAction("", title.value, OfficeColorIndex.value, "", userName.value, userRealName.value, getRadioValue("direction"), rank.value, rankName, rel, fieldWrite.value, checkState.value, dept.value, flag, nodeMode.value, strategy.value);
  92. window.close();
  93. }
  94. function onload_win() {
  95.     var STATE_NOTDO = <%=WorkflowActionDb.STATE_NOTDO%>;
  96.     var STATE_IGNORED = <%=WorkflowActionDb.STATE_IGNORED%>;
  97. var STATE_DOING = <%=WorkflowActionDb.STATE_DOING%>;
  98.     var STATE_RETURN = <%=WorkflowActionDb.STATE_RETURN%>;
  99.     var STATE_FINISHED = <%=WorkflowActionDb.STATE_FINISHED%>;
  100. var chkState = window.opener.getActionCheckState();
  101. if (chkState==STATE_FINISHED || chkState==STATE_DOING) {
  102. alert("动作已完成或者正在处理中时,不能被编辑!");
  103. window.close();
  104. return;
  105. }
  106. userName.value = window.opener.getActionJobCode();
  107. title.value = window.opener.getActionTitle();
  108. OfficeColorIndex.value = window.opener.getActionColorIndex();
  109. userRealName.value = window.opener.getActionJobName();
  110. setRadioValue("direction", window.opener.getActionProxyJobCode());
  111. rank.value = window.opener.getActionProxyJobName();
  112. var rel = window.opener.getActionProxyUserRealName();
  113. if (rel=="1")
  114. relateRoleToOrganization.checked = true;
  115. else
  116. relateRoleToOrganization.checked = false;
  117. fieldWrite.value = window.opener.getActionFieldWrite();
  118. checkState.value = window.opener.getActionCheckState();
  119. nodeMode.value = window.opener.getActionNodeMode();
  120. if (nodeMode.value=="<%=WorkflowActionDb.NODE_MODE_ROLE%>")
  121. spanMode.innerHTML = "角色";
  122. else
  123. spanMode.innerHTML = "用户";
  124. <%if (dept.equals("")) {%>
  125. dept.value = window.opener.getActionDept();
  126. <%}%>
  127. flag = window.opener.getActionFlag();
  128. if (flag.length>=1) {
  129. if (flag.substr(0, 1)!="1")
  130. flagModify.checked = false;
  131. }
  132. if (flag.length>=2) {
  133. if (flag.substr(1, 1)!="1")
  134. flagDel.checked = false;
  135. }
  136. // flag.length长度为2时,是给新创建的节点设置属性
  137. if (flag.length>=3) {
  138. if (flag.substr(2, 1)!="1")
  139. flagDiscardFlow.checked = false;
  140. }
  141. else
  142. flagDiscardFlow.checked = false;
  143. if (flag.length>=4) {
  144. if (flag.substr(3, 1)!="1")
  145. flagDelFlow.checked = false;
  146. }
  147. else
  148. flagDelFlow.checked = false;
  149. if (flag.length>=5) {
  150. flagSaveArchive.value = flag.substr(4, 1);
  151. }
  152. else
  153. flagSaveArchive.value = "0";
  154. if (flag.length>=6) {
  155. if (flag.substr(5, 1)!="1")
  156. flagDelAttach.checked = false;
  157. }
  158. else
  159. flagDelAttach.checked = false;
  160. if (flag.length>=7) {
  161. if (flag.substr(6, 1)!="1")
  162. flagXorRadiate.checked = false;
  163. }
  164. else
  165. flagXorRadiate.checked = false;
  166. if (flag.length>=8) {
  167. if (flag.substr(7, 1)!="1")
  168. flagXorAggregate.checked = false;
  169. }
  170. else
  171. flagXorAggregate.checked = false;
  172. strategy.value = window.opener.getActionStrategy();
  173. if (window.opener.getActionType()=="workflow_start") {
  174. span_direction.style.display = "none";
  175. span_starter.style.display = "none";
  176. }
  177. else if (window.opener.getActionType()=="workflow_action") {
  178. span_self.style.display = "none";
  179. }
  180. // 屏蔽删除标志,不再启用
  181. span_flag_del.style.display = "none";
  182. document.frames["hiddenframe"].location.replace("flow_predefine_action_modify_getfieldtitle.jsp?flowTypeCode=<%=flowTypeCode%>&fieldWrite=" + fieldWrite.value + "&dept=" + dept.value + "&nodeMode=" + nodeMode.value); // 获取可写表单域的名称
  183. }
  184. function window_onload() {
  185. onload_win();
  186. }
  187. function openWinDepts() {
  188. var ret = showModalDialog('../dept_multi_sel.jsp',window.self,'dialogWidth:480px;dialogHeight:320px;status:no;help:no;')
  189. if (ret==null)
  190. return;
  191. dept.value = "";
  192. deptName.value = "";
  193. for (var i=0; i<ret.length; i++) {
  194. if (dept.value=="") {
  195. dept.value += ret[i][0];
  196. deptName.value += ret[i][1];
  197. }
  198. else {
  199. dept.value += "," + ret[i][0];
  200. deptName.value += "," + ret[i][1];
  201. }
  202. }
  203. }
  204. function getSelUserNames() {
  205. if (nodeMode.value=="<%=WorkflowActionDb.NODE_MODE_USER%>") {
  206. if (userName.value=="$self" || userName.value=="$starter" || userName.value=="$userSelect")
  207. return "";
  208. else
  209. return userName.value;
  210. }
  211. else
  212. return "";
  213. }
  214. function getSelUserRealNames() {
  215. if (nodeMode.value=="<%=WorkflowActionDb.NODE_MODE_USER%>") {
  216. if (userName.value=="$self" || userName.value=="$starter" || userName.value=="$userSelect")
  217. return "";
  218. else
  219. return userRealName.value;
  220. }
  221. else
  222. return "";
  223. }
  224. function getUserRoles() {
  225. if (nodeMode.value=="<%=WorkflowActionDb.NODE_MODE_ROLE%>") {
  226. return userName.value;
  227. }
  228. else
  229. return "";
  230. }
  231. function getDepts() {
  232. return dept.value;
  233. }
  234. function setUsers(users, userRealNames) {
  235. userName.value = users;
  236. userRealName.value = userRealNames;
  237. nodeMode.value = "<%=WorkflowActionDb.NODE_MODE_USER%>";
  238. spanMode.innerHTML = "用户";
  239. }
  240. function setRoles(roleCodes, roleDescs) {
  241. userName.value = roleCodes;
  242. userRealName.value = roleDescs;
  243. nodeMode.value = "<%=WorkflowActionDb.NODE_MODE_ROLE%>";
  244. spanMode.innerHTML = "角色";
  245. if (relateRoleToOrganization.checked) {
  246. if (roleCodes.indexOf(",")!=-1) {
  247. relateRoleToOrganization.checked = false;
  248. alert("多个角色被选择,角色关联已经被取消!");
  249. }
  250. }
  251. }
  252. function openWinUserRoles() {
  253. var roleCodes = "";
  254. if (nodeMode.value=="<%=WorkflowActionDb.NODE_MODE_ROLE%>")
  255. roleCodes = userName.value
  256. showModalDialog('../role_multi_sel.jsp?roleCodes=' + roleCodes,window.self,'dialogWidth:526px;dialogHeight:435px;status:no;help:no;');
  257. return;
  258. var ret = showModalDialog('../userrole_multi_sel.jsp',window.self,'dialogWidth:500px;dialogHeight:480px;status:no;help:no;')
  259. if (ret==null)
  260. return;
  261. userName.value = "";
  262. userRealName.value = "";
  263. // deptName.value = "";
  264. // dept.value = "";
  265. for (var i=0; i<ret.length; i++) {
  266. if (userRealName.value=="") {
  267. userName.value += ret[i][0];
  268. userRealName.value += ret[i][1];
  269. }
  270. else {
  271. userName.value += "," + ret[i][0];
  272. userRealName.value += "," + ret[i][1];
  273. }
  274. }
  275. nodeMode.value = "<%=WorkflowActionDb.NODE_MODE_ROLE%>";
  276. spanMode.innerHTML = "角色";
  277. if (relateRoleToOrganization.checked) {
  278. if (ret.length>1) {
  279. relateRoleToOrganization.checked = false;
  280. alert("多个角色被选择,角色关联已经被取消!");
  281. }
  282. }
  283. }
  284. function checkRelation() {
  285. if (relateRoleToOrganization.checked) {
  286. // if (userName.value.indexOf(",")!=-1) {
  287. // alert("当只有一个角色时,才能被关联!");
  288. // relateRoleToOrganization.checked = false;
  289. // }
  290. }
  291. }
  292. </script>
  293. <META content="Microsoft FrontPage 4.0" name=GENERATOR><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  294. </HEAD>
  295. <BODY leftMargin=4 topMargin=8 rightMargin=0 class=menubar onLoad="window_onload()">
  296. <table width="100%"  border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#CCCCCC">
  297.   <tr>
  298.     <td height="23" colspan="2" class="right-title">&nbsp;&nbsp;流程动作设定</td>
  299.   </tr>
  300.   <tr>
  301.     <td height="22" colspan="2" align="center" bgcolor="#FFFFFF">
  302. <span id="span_direction">
  303.   上一节点至本节点是:<input name="direction" type="radio" value="2" checked="checked">上行&nbsp;<input name="direction" type="radio" value="0">下行&nbsp;<input name="direction" type="radio" value="1">
  304.       平行(含本部门)
  305.       <input name="direction" type="radio" value="<%=WorkflowActionDb.DIRECTION_PARALLEL_MYDEPT_UP%>">
  306. 平行(含本部门,找不到则往上寻找)
  307.       &nbsp;
  308.       <input name="direction" type="radio" value="3" checked="checked">本部门<br>
  309.       &nbsp;   </span>
  310.   <span id="span_self">
  311.    <a title="自动转换为发起人" href="#" onClick="userName.value='$self';userRealName.value='本人';nodeMode.value='1';spanMode.innerHTML='用户'">本人</a>&nbsp;&nbsp;   </span>
  312.   <a href="#" onClick="openWinUserRoles()">选择角色</a>&nbsp;&nbsp;<a href="#" onClick="javascript:showModalDialog('../user_multi_sel.jsp',window.self,'dialogWidth:600px;dialogHeight:480px;status:no;help:no;')">选择用户</a>&nbsp;&nbsp;<!--<a href="#" onClick="userName.value='$deptLeader';userRealName.value='部门领导';jobCode.value='';jobName.value='';proxyJobCode.value='';proxyJobName.value=''">部门领导</a>-->
  313. <!--&nbsp;&nbsp;<a href="#" onClick="userName.value='<%=WorkflowActionDb.PRE_TYPE_USER_SELECT%>';userRealName.value='用户自选';jobCode.value='';jobName.value='';proxyJobCode.value='';proxyJobName.value=''">用户自选</a>-->
  314. <span id="span_starter"><a title="自动转换为发起人" href="#" onClick="userName.value='$starter';userRealName.value='自动转换为发起人';nodeMode.value='1';spanMode.innerHTML='发起人'">发起人</a>&nbsp;<a title="由前一用户自行指定" href="#" onClick="userName.value='<%=WorkflowActionDb.PRE_TYPE_USER_SELECT%>';userRealName.value='自选用户';nodeMode.value='1';spanMode.innerHTML='发起人'">自选用户</a></span></td>
  315.   </tr>
  316.   <tr>
  317.     <td height="22" align="left" bgcolor="#FFFFFF">动作标题</td>
  318.     <td height="22" bgcolor="#FFFFFF"><input type="text" name="title" style="width: 260px"></td>
  319.   </tr>
  320.   <tr>
  321.     <td height="22" align="left" bgcolor="#FFFFFF">职级</td>
  322.     <td height="22" bgcolor="#FFFFFF">
  323. <select name="rank">
  324. <option value="">不限定</option>
  325. <%
  326. RankDb rd = new RankDb();
  327. java.util.Iterator ir = rd.list().iterator();
  328. String opts = "";
  329. while (ir.hasNext()) {
  330. rd = (RankDb)ir.next();
  331. opts += "<option value='" + rd.getCode() + "'>" + rd.getName() + "</option>";
  332. }
  333. out.print(opts);
  334. %>
  335. </select>
  336. Office&nbsp;审批颜色
  337.       <SELECT name="OfficeColorIndex" style="width:80px">
  338.         <option selected style="BACKGROUND: red" value="6"></option>
  339.         <option style="BACKGROUND: Turquoise" value="3"></option>
  340.         <option style="BACKGROUND: #00ff00" value="4"></option>
  341.         <option style="BACKGROUND: Pink" value="5"></option>
  342.         <option style="BACKGROUND: yellow" value="7"></option>
  343.         <option style="BACKGROUND: black" value="1"></option>
  344.         <option style="BACKGROUND: blue" value="2"></option>
  345.         <option style="BACKGROUND: white" value="8"></option>
  346.         <option style="BACKGROUND: DarkBlue" value="9"></option>
  347.         <option style="BACKGROUND: Teal" value="10"></option>
  348.         <option style="BACKGROUND: green" value="11"></option>
  349.         <option style="BACKGROUND: Violet" value="12"></option>
  350.         <option style="BACKGROUND: DarkRed" value="13"></option>
  351.         <option style="BACKGROUND: #FFCC67" value="14"></option>
  352.         <option style="BACKGROUND: #808080" value="15"></option>
  353.         <option style="BACKGROUND: #C0C0C0" value="16"></option>
  354.       </SELECT>
  355.         <input name="checkState" value="<%=WorkflowActionDb.STATE_NOTDO%>" type="hidden"> 
  356.         (需安装签名批注插件)    </td>
  357.   </tr>
  358.   <tr>
  359.     <td width="90" height="22" align="left" bgcolor="#FFFFFF">角色&nbsp;/  用户</td>
  360.     <td height="22" bgcolor="#FFFFFF"><textarea name="userName" rows="3" readonly id="userName" style="width: 260px;background-color:#eeeeee"><%=userName%></textarea>
  361.       <input name="nodeMode" type="hidden" size="5" readonly value="<%=nodeMode%>">
  362.       <br>
  363.       <input type=checkbox name="relateRoleToOrganization" value="1" checked title="设为关联后,如果角色中存在有多个用户,系统将自动根据组织机构图就近匹配,采用这种方式时,流程中的处理人员不能处于多个部门中,只有当设为关联时,行文方向才有效" onClick="checkRelation()">
  364.       角色与组织机构(行文方向)、职级、部门相关联
  365.     <font color="red">当前为:<span id="spanMode" name="spanMode"></span></font></td>
  366.   </tr>
  367.   <tr>
  368.     <td height="22" align="left" bgcolor="#FFFFFF">名称&nbsp;/&nbsp;姓名</td>
  369.     <td height="22" bgcolor="#FFFFFF"><textarea name="userRealName" rows="3" id="userRealName" style="width: 260px"><%=userRealName%></textarea> </td>
  370.   </tr>
  371.   <tr>
  372.     <td height="22" align="left" bgcolor="#FFFFFF">部门</td>
  373.     <td height="22" bgcolor="#FFFFFF"><textarea name="deptName" rows="3" readonly id="deptName" style="width: 260px;background-color:#eeeeee"></textarea>
  374.       <a href="javascript:openWinDepts()">选择部门</a>
  375.       <input name="dept" type="hidden" id="dept" value="<%=dept%>"></td>
  376.   </tr>
  377.   <tr>
  378.     <td height="22" align="left" bgcolor="#FFFFFF">可写表单域</td>
  379.     <td height="22" bgcolor="#FFFFFF"><textarea name="fieldWriteText" rows="3" readonly="" id="fieldWriteText" style="width: 260px;background-color:#eeeeee"></textarea>&nbsp;<a href="javascript:OpenFormFieldSelWin()">选择表单域 </a>
  380.     <input name="fieldWrite" type="hidden" id="fieldWrite" value="<%=fieldWrite%>"></td>
  381.   </tr>
  382.   <tr>
  383.     <td height="22" align="left" bgcolor="#FFFFFF">策略</td>
  384.     <td height="22" bgcolor="#FFFFFF">
  385. <select name="strategy">
  386. <option value="">用户指定</option>
  387. <%
  388. StrategyMgr sm = new StrategyMgr();
  389. Vector smv = sm.getAllStrategy();
  390. String smopts = "";
  391. if (smv!=null) {
  392. Iterator smir = smv.iterator();
  393. while (smir.hasNext()) {
  394. StrategyUnit su = (StrategyUnit)smir.next();
  395. smopts += "<option value='" + su.getCode() + "'>" + su.getName() + "</option>";
  396. }
  397. }
  398. out.print(smopts);
  399. %>
  400. </select>
  401. ( 当满足条件的用户有多个时 )
  402. </td>
  403.   </tr>
  404.   <tr>
  405.     <td height="22" align="left" bgcolor="#FFFFFF">标志位</td>
  406.     <td height="22" bgcolor="#FFFFFF"><input type=checkbox name="flagModify" value="1" checked style="display:none">
  407.     <!--可选人员-->
  408.       <span id="span_flag_del">
  409.   <input type=checkbox name="flagDel" value="1" checked title="节点可被上一节点办理人员删除">&nbsp;可被删除   </span>
  410.   <input type="checkbox" name="flagDiscardFlow" value="1" checked>&nbsp;放弃流程
  411.   <input type="checkbox" name="flagDelFlow" value="1" checked>&nbsp;删除流程
  412. &nbsp;
  413. <select name="flagSaveArchive">
  414. <option value="0" selected>不存档</option>
  415. <option value="1">手工存档</option>
  416. <option value="2">自动存档</option>
  417. </select>
  418. <br>
  419. <input type="checkbox" name="flagDelAttach" value="1" checked>&nbsp;删除附件
  420. <input type="checkbox" name="flagXorRadiate" value="1" checked title="发散节点有多条路径从其通过,如果置为异或,则只选取其中的一条继续,否则,所有路径都会继续">&nbsp;异或发散
  421. <input type="checkbox" name="flagXorAggregate" value="1" checked title="聚合节点有多条路径汇合,如果置为异步,则只要有其中的一条到达,节点就会被激活,否则,只有当所有路径都到达后才会继续"> 异或聚合</td>
  422.   </tr>
  423.   <tr align="center">
  424.     <td height="28" colspan="2" bgcolor="#FFFFFF"><input name="okbtn" type="button" class="button1" onClick="ModifyAction()" value=" 确 定 ">
  425. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  426. <input name="cancelbtn" type="button" class="button1" onClick="window.close()" value=" 取 消 ">
  427. <iframe id=hiddenframe name=hiddenframe src="flow_predefine_action_modify_getfieldtitle.jsp" width=0 height=0></iframe></td>
  428.   </tr>
  429. </table>
  430. </BODY></HTML>