taskToStart.jsp 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297
  1. <%@ page pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  4. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  5. <%@taglib prefix="f" uri="http://www.jee-soft.cn/functions" %>
  6. <c:set var="ctx" value="${pageContext.request.contextPath}"/>
  7. <%@include file="/commons/include/html_doctype.html"%>
  8. <%@page import="com.hotent.core.api.util.PropertyUtil"%>
  9. <html>
  10. <head>
  11. <title>流程任务-[${task.name}]执行</title>
  12. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  13. <%@include file="/commons/include/customForm.jsp" %>
  14. <%@include file="/commons/include/ueditor.jsp" %>
  15. <link rel="stylesheet" type="text/css" href="${ctx}/styles/default/css/hotent/task.css"></link>
  16. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/TaskAddSignWindow.js"></script>
  17. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/TaskBackWindow.js"></script>
  18. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/TaskImageUserDialog.js"></script>
  19. <script type="text/javascript" src="${ctx}/js/hotent/platform/tabOperator.js"></script>
  20. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/BpmTaskExeAssignDialog.js"></script>
  21. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/publicSign.js"></script>
  22. <!-- 表单写手引用的JS -->
  23. <!--[if lt IE 9]>
  24. <script type="text/javascript" src="${ctx}/write/libs/flashcanvas.js"></script>
  25. <![endif]-->
  26. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  27. <meta name="viewport" content="initial-scale=1.0, target-densitydpi=device-dpi" /><!-- this is for mobile (Android) Chrome -->
  28. <meta name="viewport" content="initial-scale=1.0, width=device-height"><!-- mobile Safari, FireFox, Opera Mobile -->
  29. <script type="text/javascript" src="${ctx}/write/libs/flashcanvas.min.js"></script>
  30. <script type="text/javascript" src="${ctx}/write/libs/jquery.params.js"></script>
  31. <script type="text/javascript" src="${ctx}/write/libs/jSignature.min.js"></script>
  32. <script type="text/javascript" src="${ctx}/write/libs/jSignature.min.noconflict.js"></script>
  33. <script type="text/javascript" src="${ctx}/write/libs/modernizr.js"></script>
  34. <!-- 表单签章引用的JS -->
  35. <!--金格签章依赖-->
  36. <link rel="stylesheet" href="${ctx}/js/kinggrid/dialog/artDialog/ui-dialog.css">
  37. <link rel="stylesheet" href="${ctx}/js/kinggrid/core/kinggrid.plus.css">
  38. <link rel="stylesheet" href="${ctx}/js/kinggrid/css/search.css">
  39. <script type="text/javascript" src="${ctx}/js/kinggrid/core/kinggrid.min.js"></script>
  40. <script type="text/javascript" src="${ctx}/js/kinggrid/core/kinggrid.plus.min.js"></script>
  41. <script type="text/javascript" src="${ctx}/js/kinggrid/dialog/artDialog/dialog-min.js"></script>
  42. <script type="text/javascript" src="${ctx}/js/kinggrid/signature.min.js"></script><!-- html签章核心JS -->
  43. <script type="text/javascript" src="${ctx}/js/kinggrid/signature.pc.min.js"></script><!-- PC端附加功能 -->
  44. <script type="text/javascript" src="${ctx}/js/kinggrid/password.min.js"></script>
  45. <script type="text/javascript" src="${ctx}/js/kinggrid/signature_pad.min.js"></script>
  46. <script type="text/javascript" src="${ctx}/js/kinggrid/jquery.timer.dev.js"></script>
  47. <script type="text/javascript" src="${ctx}/js/kinggrid/jquery.qrcode.min.js"></script>
  48. <script type="text/javascript" src="${ctx}/js/kinggrid/qrcode.min.js"></script>
  49. <script type="text/javascript" src="${ctx}/js/kinggrid/jsQR.js"></script>
  50. <style>
  51. #k1 input{
  52. padding: 5px 8px;
  53. margin: 0px 10px;
  54. border: 0px;
  55. display: inline-block;
  56. }
  57. </style>
  58. <script type="text/javascript">
  59. $(function(){
  60. var defIdArray=new Array();
  61. defIdArray.push("10000010130057");//将需要显示手写功能的流程ID放入数组
  62. //判断是否应该显示手写板和工具条
  63. for(var i=0;i<defIdArray.length;i++){
  64. if(defIdArray[i]=="${bpmDefinition.defId}"){
  65. $("#kuang").show();
  66. }
  67. }
  68. if(!IsPC()){
  69. $("#dianziqianzhang").hide();
  70. $("#rwspNav").hide();
  71. $("#onlineTextEdit").hide();
  72. }
  73. function IsPC() {
  74. var userAgentInfo = navigator.userAgent;
  75. var Agents = ["Android", "iPhone",
  76. "SymbianOS", "Windows Phone",
  77. "iPad", "iPod"];
  78. var flag = true;
  79. for (var v = 0; v < Agents.length; v++) {
  80. if (userAgentInfo.indexOf(Agents[v]) > 0) {
  81. flag = false;
  82. break;
  83. }
  84. }
  85. return flag;
  86. }
  87. console.log("runid");
  88. console.log("${processRun.runId}");
  89. console.log("${task.id}");
  90. });
  91. function qddks(){
  92. var h = document.body.clientHeight;
  93. $('.datagrid-mask').css({display:"block",width:"100%",height:h}).appendTo("body");
  94. }
  95. function qddjs(){
  96. $('.datagrid-mask').remove();
  97. }
  98. var taskId="${task.id}";
  99. var isExtForm=${isExtForm};
  100. var isEmptyForm=${isEmptyForm};
  101. var isSignTask=${isSignTask};
  102. var isHidePath=${isHidePath};
  103. var isManage=${isManage};
  104. var isNeedSubmitConfirm=${bpmDefinition.submitConfirm==1};
  105. var isHandChoolse=${isHandChoolse};
  106. var bpmGangedSets=[];
  107. var form;
  108. var signsequence = 0;
  109. //操作类型
  110. //1.完成任务
  111. //2.保存数据
  112. var operatorType=1;
  113. loadFormSignData();
  114. //补签
  115. function showAddSignWindow(){
  116. TaskAddSignWindow({taskId:taskId,callback:function(sign){
  117. //loadTaskSign();
  118. }});
  119. }
  120. //加载会签数据。
  121. function loadTaskSign(){
  122. $(".taskOpinion").load('${ctx}/platform/bpm/task/toSign.ht?taskId=${task.id}');
  123. }
  124. //显示流程图
  125. function showTaskUserDlg(){
  126. TaskImageUserDialog({actInstId:${processRun.actInstId}});
  127. }
  128. //显示沟通意见。
  129. function showTaskCommunication(conf){
  130. var obj = {data:CustomForm.getData()};
  131. isTaskEnd(function(){
  132. if(!conf) conf={};
  133. //输入子页面
  134. var url=__ctx + "/platform/bpm/task/toStartCommunicate.ht?taskId=${task.id}";
  135. /*KILLDIALOG*/
  136. DialogUtil.open({
  137. height:350,
  138. width: 500,
  139. title : '沟通意见',
  140. url: url,
  141. isResize: true,
  142. //自定义参数
  143. obj: obj
  144. });
  145. })
  146. }
  147. //显示流转意见
  148. function showTaskTransTo(conf) {
  149. var obj = {data:CustomForm.getData()};
  150. isTaskEnd(function(){
  151. if(!conf) conf={};
  152. //输入子页面
  153. var url=__ctx + "/platform/bpm/task/toTransTo.ht?taskId=${task.id}&curUserId=${curUserId}";
  154. url=url.getNewUrl();
  155. DialogUtil.open({
  156. height:500,
  157. width: 550,
  158. title : '显示流转意见',
  159. url: url,
  160. isResize: true,
  161. //自定义参数
  162. obj: obj,
  163. sucCall:function(rtn){
  164. if(rtn=="ok"){
  165. handJumpOrClose();
  166. }
  167. }
  168. });
  169. })
  170. }
  171. function isTaskEnd(callBack){
  172. var url="${ctx}/platform/bpm/task/isTaskExsit.ht";
  173. var params={taskId:"${task.id}"};
  174. $.post(url,params,function(responseText){
  175. var obj=new com.hotent.form.ResultMessage(responseText);
  176. if(obj.isSuccess()){
  177. callBack.apply(this);
  178. }
  179. else{
  180. $.ligerDialog.warn("这个任务已经完成或被终止了!",'提示');
  181. }
  182. });
  183. }
  184. function handFormJson(json){}
  185. function submitForm(action,button){
  186. var ignoreRequired=false;
  187. if(button=="#btnSave" || button=="#btnReject" || button=="#btnRejectToStart"){
  188. ignoreRequired=true;
  189. }
  190. if($(button).hasClass("disabled"))return;
  191. if(isEmptyForm){
  192. qddjs();
  193. $.ligerDialog.error("还没有设置表单!",'提示信息');
  194. return;
  195. }
  196. var frmWorkFlow=$('#frmWorkFlow');
  197. frmWorkFlow.attr("action",action);
  198. if(isExtForm){
  199. var rtn = true;
  200. if(button!="a.save"){
  201. rtn=form.valid()
  202. }
  203. if(!rtn) return;
  204. $(button).addClass("disabled");
  205. frmWorkFlow.ajaxForm({success:showResponse }); //terry add
  206. if(frmWorkFlow.handleFieldName){//url表单清除命名
  207. frmWorkFlow.handleFieldName();
  208. }
  209. if(frmWorkFlow.setData){
  210. frmWorkFlow.setData();
  211. }
  212. frmWorkFlow.submit();
  213. }else{
  214. var rtn=CustomForm.validate({ignoreRequired:ignoreRequired});
  215. if(!rtn){
  216. qddjs();
  217. $.ligerDialog.warn("表单验证不成功,请检查表单是否正确填写!","提示信息");
  218. return;
  219. }
  220. if(button!="#btnSave" || button=="#btnReject" || button=="#btnRejectToStart" ){
  221. //子表必填检查(兼容新旧版本)
  222. rtn = SubtablePermission.subRequired();
  223. if(!rtn){
  224. qddjs();
  225. $.ligerDialog.warn("请填写子表表单数据!","提示信息");
  226. return;
  227. }
  228. }
  229. var data=CustomForm.getData();
  230. //WebSign控件提交。 有控件时才提交 xcx
  231. if(WebSignPlugin.hasWebSignField){
  232. WebSignPlugin.submit();
  233. }
  234. $(button).addClass("disabled");
  235. var uaName=navigator.userAgent.toLowerCase();
  236. if(uaName.indexOf("firefox")>=0||uaName.indexOf("chrome")>=0){ //异步处理
  237. //Office控件提交。 有可以提交的文档
  238. if(OfficePlugin.submitNum>0){
  239. OfficePlugin.submit(); //火狐和谷歌 的文档提交包括了 业务提交代码部分(完成 OfficePlugin.submit()后面的回调 函数 有 业务提交代码),所以 后面就不用加上业务提交代码
  240. }else{ //没有可提交的文档时 直接做 业务提交代码
  241. data=CustomForm.getData();
  242. //设置表单数据
  243. $("#formData").val(data);
  244. FormSubmitUtil.submitFormAjax(frmWorkFlow,showResponse,handFormJson);
  245. }
  246. }else{ //同步处理
  247. //Office控件提交。 有可以提交的文档
  248. if(OfficePlugin.submitNum>0){
  249. OfficePlugin.submit();
  250. //当提交问题 等于 提交数量的变量 时 表示所有文档 都提交了 然后做 业务相关的提交
  251. if(OfficePlugin.submitNum == OfficePlugin.submitNewNum){
  252. //获取自定义表单的数据
  253. data=CustomForm.getData();
  254. //设置表单数据
  255. $("#formData").val(data);
  256. FormSubmitUtil.submitFormAjax(frmWorkFlow,showResponse,handFormJson);
  257. OfficePlugin.submitNewNum = 0; //重置 提交数量的变量
  258. }else{
  259. $.ligerDialog.warn("提交失败,OFFICE控件没能正常使用,请重新安装 !!!","提示");
  260. }
  261. }else{
  262. //获取自定义表单的数据
  263. data=CustomForm.getData();
  264. //设置表单数据
  265. $("#formData").val(data);
  266. FormSubmitUtil.submitFormAjax(frmWorkFlow,showResponse,handFormJson);
  267. qddjs();
  268. }
  269. }
  270. }
  271. }
  272. function saveData(){
  273. var operatorObj=getByOperatorType();
  274. var button="#" +operatorObj.btnId;
  275. var rtn=beforeClick(operatorType);
  276. if( rtn==false){
  277. return;
  278. }
  279. if(isExtForm){//提交第三方表单时检查该表单的参数
  280. var frm=$('#frmWorkFlow');
  281. if(!frm.valid()) return ;
  282. if(frm.setData)frm.setData();
  283. }
  284. var action="${ctx}/platform/bpm/task/saveData.ht";
  285. SavaPublicSignData();
  286. submitForm(action,button);
  287. }
  288. // 在完成任务之前,加上判断是否需要弹出意见对话框
  289. function completeTaskBefore(){
  290. // 加上判断是否需要弹出意见对话框
  291. var isPopup = '${bpmNodeSet.isPopup}';
  292. var isRequired = '${bpmNodeSet.isRequired}';
  293. if(isPopup == 1){
  294. //var rtn=form.valid();
  295. //if(!rtn) return;
  296. opintionDialog();
  297. } else {
  298. completeTask();
  299. }
  300. }
  301. //完成当前任务。
  302. function completeTask(){
  303. if($("input[name='nextPathId']").length>0){
  304. var b=false;//是否需要判断同步条件
  305. var destTask=$("input[name='destTask']:checked");
  306. if(destTask.length==0){
  307. b=true;
  308. }else{
  309. var nextPathId=destTask.parents("tr").find("[name=nextPathId]");
  310. if(nextPathId.length>0){
  311. b=true;
  312. }
  313. }
  314. if(b){
  315. var v=$("input[name='nextPathId']:checked").val();
  316. if(!v){
  317. $.ligerDialog.error("在同步条件后的执行路径中,您至少需要选择一条路径!",'提示信息');
  318. return;
  319. }
  320. }
  321. }
  322. if(!checkNodeUser()){//检查节点选择
  323. return;
  324. }
  325. var operatorObj=getByOperatorType();
  326. var button="#" +operatorObj.btnId;
  327. var action="${ctx}/platform/bpm/task/complete.ht";
  328. //执行前置脚本
  329. var rtn=beforeClick(operatorType);
  330. if( rtn==false){
  331. return;
  332. }
  333. //确认执行任务。
  334. if(isNeedSubmitConfirm){
  335. $.ligerDialog.confirm("您确定执行此操作吗?","提示",function(rtn){
  336. if(rtn){
  337. fjhb(action,button);
  338. }
  339. });
  340. }
  341. else{
  342. qddks();
  343. fjhb(action,button);
  344. }
  345. }
  346. //对附件进行前置处理
  347. function fjhb(action,button){
  348. var fileidarr = [];
  349. var txt = document.getElementsByName("attach");
  350. if(txt.length>0){
  351. //有附件的处理方法
  352. for(var i=0;i<txt.length;i++){
  353. if(txt[i].getAttribute("file").indexOf(".pdf")>0){
  354. fileidarr.push(txt[i].getAttribute("fileid"));
  355. }else{
  356. qddjs();
  357. $.ligerDialog.warn("文件格式错误,只能合并PDF文件!", '提示');
  358. return false;
  359. }
  360. }
  361. var data=CustomForm.getData();
  362. data=JSON.parse(data);
  363. $.post("${ctx}/platform/system/sysFile/mergeTaskPdfFiles.ht",{fileId:fileidarr,runId:"${processRun.runId}"},function(data){
  364. var JsonStr=JSON.parse("["+data+"]");
  365. var divObj = $("div[class='attachement']");
  366. var textareaObj=$("textarea[controltype='attachment']");
  367. var html=AttachMent.getHtml(JsonStr,"w");
  368. divObj.empty();
  369. divObj.append(html);
  370. textareaObj.empty();
  371. textareaObj.val(JSON.stringify(JsonStr));
  372. //合并后更新附件ID
  373. for(var i=0;i<JsonStr.length;i++) {
  374. var obj = JsonStr[i];
  375. var id = obj.id;
  376. console.log(id);
  377. $("input[name='wj']").val(id);
  378. }
  379. if(typeof CustomForm != "undefined"){
  380. CustomForm.validate();
  381. }
  382. if(JsonStr[0].success){
  383. submitForm(action,button);
  384. }
  385. });
  386. }
  387. }
  388. //判断每条执行被选择的路径是否已选择用户,主要是在可选节点和用户时用到
  389. function checkNodeUser(){
  390. var flag = true;//是否全部都满足
  391. $("input[name='lastDestTaskId']").each(function(){
  392. if($("[value='"+$(this).val()+"'][name='destTask']").is(":checked")){//只检验被选中的项
  393. if($("input[name='"+$(this).val()+"_userId']:checked").length<=0){
  394. flag=false;
  395. }
  396. }
  397. });
  398. if(!flag){
  399. $.ligerDialog.warn("每条执行路径至少要选择一个用户",'提示信息');
  400. }
  401. return flag;
  402. }
  403. function getByOperatorType(){
  404. var obj={};
  405. switch(operatorType){
  406. //同意
  407. case 1:
  408. LoadSignData();
  409. obj.btnId="btnAgree";
  410. obj.msg="执行任务成功!";
  411. break;
  412. //反对
  413. case 2:
  414. obj.btnId="btnNotAgree";
  415. obj.msg="执行任务成功!";
  416. break;
  417. //弃权
  418. case 3:
  419. obj.btnId="btnAbandon";
  420. obj.msg="执行任务成功!";
  421. break;
  422. //驳回
  423. case 4:
  424. obj.btnId="btnReject";
  425. obj.msg="驳回任务成功!";
  426. break;
  427. //驳回到发起人
  428. case 5:
  429. obj.btnId="btnRejectToStart";
  430. obj.msg="驳回到发起人成功!";
  431. break;
  432. //保存表单
  433. case 8:
  434. obj.btnId="btnSave";
  435. obj.msg="保存表单数据成功!";
  436. break;
  437. }
  438. return obj;
  439. }
  440. function getErrorByOperatorType(){
  441. var rtn="";
  442. switch(operatorType){
  443. //同意
  444. case 1:
  445. //反对
  446. case 2:
  447. //弃权
  448. case 3:
  449. rtn="执行任务失败!";
  450. break;
  451. //驳回
  452. //驳回
  453. case 4:
  454. rtn="驳回任务失败!";
  455. break;
  456. //驳回到发起人
  457. case 5:
  458. rtn="驳回到发起人失败!";
  459. break;
  460. //保存表单
  461. case 8:
  462. rtn="保存表单数据失败!";
  463. break;
  464. }
  465. return rtn;
  466. }
  467. function showResponse(responseText){
  468. var operatorObj=getByOperatorType();
  469. $("#" +operatorObj.btnId).removeClass("disabled");
  470. var obj=new com.hotent.form.ResultMessage(responseText);
  471. if(obj.isSuccess()){
  472. $.ligerDialog.success(operatorObj.msg,'提示信息',function(){
  473. var rtn=afterClick(operatorType);
  474. if( rtn==false){
  475. return;
  476. }
  477. handJumpOrClose();
  478. });
  479. }else{
  480. var title=getErrorByOperatorType();
  481. $.ligerDialog.err('出错信息',title,obj.getMessage());
  482. }
  483. }
  484. //弹出回退窗口 TODO 去除
  485. function showBackWindow(){
  486. new TaskBackWindow({taskId:taskId}).show();
  487. }
  488. $(function(){
  489. initForm();
  490. //显示路径
  491. if(isHandChoolse){
  492. <c:choose>
  493. <c:when test="${fn:indexOf(bpmNodeSet.jumpType,'3')!=-1}">
  494. chooseJumpType(3);
  495. </c:when>
  496. <c:otherwise>
  497. chooseJumpType(2);
  498. </c:otherwise>
  499. </c:choose>
  500. }else{
  501. chooseJumpType(1);
  502. }
  503. resizeIframe();
  504. //初始化联动设置
  505. <c:if test="${!empty bpmGangedSets}">
  506. bpmGangedSets = ${bpmGangedSets};
  507. FormUtil.InitGangedSet(bpmGangedSets);
  508. </c:if>
  509. });
  510. //获取是否允许直接结束。
  511. function getIsDirectComplete(){
  512. var isDirectComlete = false;
  513. if($("#chkDirectComplete").length>0){
  514. if($("#chkDirectComplete").attr("checked")=="checked"){
  515. isDirectComlete = true;
  516. }
  517. }
  518. return isDirectComlete;
  519. }
  520. //提交第三方表单时检查该表单的参数
  521. function setExtFormData(){
  522. if(isExtForm){
  523. var frm=$('#frmWorkFlow');
  524. if(!frm.valid()) return ;
  525. if(frm.setData)frm.setData();
  526. }
  527. }
  528. function initBtnEvent(){
  529. //0,弃权,1,同意,2反对。
  530. var objVoteAgree=$("#voteAgree");
  531. var objBack=$("#back");
  532. //同意
  533. if($("#btnAgree").length>0){
  534. $("#btnAgree").click(function(){
  535. var voteContent = $('#voteContent'),
  536. content = voteContent.val();
  537. setExtFormData();
  538. var isDirectComlete = getIsDirectComplete();
  539. operatorType=1;
  540. //同意:5,一票通过。
  541. var tmp =isDirectComlete?"5":"1";
  542. objVoteAgree.val(tmp);
  543. objBack.val("0");
  544. // 提前校验表单
  545. var beforeScript=beforeClick(getByOperatorType());
  546. if(beforeScript==false) return;
  547. var rtn=CustomForm.validate({ignoreRequired:false});
  548. if(!rtn){
  549. $.ligerDialog.warn("表单验证不成功,请检查表单是否正确填写!","提示信息");
  550. return;
  551. }
  552. completeTaskBefore();
  553. });
  554. }
  555. //反对
  556. if($("#btnNotAgree").length>0){
  557. $("#btnNotAgree").click(function(){
  558. setExtFormData();
  559. var isDirectComlete = getIsDirectComplete();
  560. operatorType=2;
  561. ////直接一票通过
  562. var tmp =isDirectComlete?'6':'2';
  563. objVoteAgree.val(tmp);
  564. objBack.val("0");
  565. completeTaskBefore();
  566. });
  567. }
  568. //弃权
  569. if($("#btnAbandon").length>0){
  570. $("#btnAbandon").click(function(){
  571. setExtFormData();
  572. operatorType=3;
  573. objVoteAgree.val(0);
  574. objBack.val("");
  575. completeTaskBefore();
  576. })
  577. }
  578. //驳回
  579. if($("#btnReject").length>0){
  580. $("#btnReject").click(function(){
  581. setExtFormData();
  582. operatorType=4;
  583. objVoteAgree.val(3);
  584. objBack.val(1);
  585. completeTaskBefore();
  586. })
  587. }
  588. //驳回到发起人
  589. if($("#btnRejectToStart").length>0){
  590. $("#btnRejectToStart").click(function(){
  591. var voteContent = $('#voteContent'),
  592. content = voteContent.val();
  593. setExtFormData();
  594. operatorType=5;
  595. //驳回到发起人
  596. objVoteAgree.val(3);
  597. objBack.val(2);
  598. completeTaskBefore();
  599. })
  600. }
  601. //保存表单
  602. if($("#btnSave").length>0){
  603. $("#btnSave").click(function(){
  604. setExtFormData();
  605. operatorType=8;
  606. saveData();
  607. })
  608. }
  609. //终止流程
  610. $("#btnEnd").click(function(){
  611. isTaskEnd(endTask);
  612. });
  613. }
  614. // 弹出意见对话框
  615. function opintionDialog(){
  616. var isRequired = '${bpmNodeSet.isRequired}';
  617. var actDefId = $("#actDefId").val();
  618. var url= __ctx + '/platform/bpm/task/opDialog.ht?isRequired=' +isRequired+'&actDefId='+actDefId;
  619. var voteContent = $("#voteContent").val();
  620. DialogUtil.open({
  621. height:350,
  622. width: 500,
  623. title : '填写意见',
  624. url: url,
  625. isResize: true,
  626. //自定义参数
  627. voteContent:voteContent,
  628. sucCall:function(rtn){
  629. // 填写到系统的意见
  630. $("#voteContent").val(rtn);
  631. // 完成当前任务
  632. //alert(rtn);alert($("#voteContent").val());return;
  633. completeTask();
  634. //signData();
  635. }
  636. });
  637. }
  638. function signData(){
  639. //processRun.globalFlowNo 为单ID
  640. var signdata =AztSignSealFrom.AztWebSignSealkeyPublic.ESASaveSignData();
  641. if(signdata!=null&&signdata!=''){
  642. $.ajax({
  643. type:"post",
  644. url:__ctx + "/platform/sign/sign/save.ht",
  645. dataType:"json",
  646. data:{taskid:"${processRun.globalFlowNo}",userid:"${curUserId}",signdata:signdata,signtype:'1',signsequence:signsequence+1},
  647. success:function(data){
  648. if(data.result){
  649. $.ligerDialog.success(data.message,"消息提示",function(){
  650. saveData();
  651. signsequence++;
  652. });
  653. }
  654. else{
  655. //$.ligerDialog.warn(data.message,"消息提示");
  656. }
  657. }
  658. });
  659. }
  660. }
  661. //终止流程。
  662. function endTask(){
  663. var url=__ctx + "/platform/bpm/task/toStartEnd.ht";
  664. url=url.getNewUrl();
  665. DialogUtil.open({
  666. height:250,
  667. width: 400,
  668. title : '终止流程',
  669. url: url,
  670. isResize: true,
  671. //自定义参数
  672. sucCall:function(rtn){
  673. var url="${ctx}/platform/bpm/task/endProcess.ht?taskId=${task.id}";
  674. var params={taskId:taskId,memo:rtn};
  675. $.post(url,params,function(responseText){
  676. var obj=new com.hotent.form.ResultMessage(responseText);
  677. if(!obj.isSuccess()){
  678. $.ligerDialog.err("提示信息","终止任务失败!",obj.getMessage());
  679. return;
  680. }
  681. $.ligerDialog.success(obj.getMessage(),"提示信息",function(){
  682. handJumpOrClose();
  683. });
  684. });
  685. }
  686. });
  687. }
  688. function handJumpOrClose(){
  689. //如果按钮类型为保存则不关闭窗口。
  690. if(operatorType==8) return;
  691. if(window.opener){
  692. try{
  693. window.opener.location.href=window.opener.location.href.getNewUrl();
  694. }
  695. catch(e){}
  696. }
  697. window.close();
  698. }
  699. function initForm(){
  700. //初始化按钮事件。
  701. initBtnEvent();
  702. if(isEmptyForm) return;
  703. if(isExtForm){
  704. form=$('#frmWorkFlow').form({excludes:"[type=append]"});
  705. var formUrl=$('#divExternalForm').attr("formUrl");
  706. $('#divExternalForm').load(formUrl, function() {
  707. hasLoadComplete=true;
  708. //动态执行第三方表单指定执行的js
  709. try{
  710. afterOnload();
  711. }catch(e){}
  712. initSubForm();
  713. OfficePlugin.init();
  714. });
  715. }else{
  716. $(".taskopinion").each(function(){
  717. $(this).removeClass("taskopinion");
  718. var actInstId=$(this).attr("instanceId");
  719. $(this).load("${ctx}/platform/bpm/taskOpinion/listform.ht?actInstId="+actInstId);
  720. });
  721. }
  722. }
  723. function initSubForm(){
  724. $('#frmWorkFlow').ajaxForm({success:showResponse });
  725. }
  726. function showRoleDlg(){
  727. RoleDialog({callback:function(roleId,roleName){$('#forkUserUids').val(roleId);}});
  728. }
  729. function chooseJumpType(val){
  730. //如果是沟通不需要显示跳转信息,而且它没有executionId 会报错
  731. if(${task.description==15}) return;
  732. if(isHidePath&&isManage==0) return;
  733. var obj=$('#jumpDiv');
  734. var url="";
  735. if(val==1){
  736. url="${ctx}/platform/bpm/task/tranTaskUserMap.ht?taskId=${task.id}&selectPath=0";
  737. }
  738. //选择路径跳转
  739. else if(val==2){
  740. url="${ctx}/platform/bpm/task/tranTaskUserMap.ht?taskId=${task.id}";
  741. }
  742. //自由跳转
  743. else if(val==3){
  744. url="${ctx}/platform/bpm/task/freeJump.ht?taskId=${task.id}";
  745. }
  746. url=url.getNewUrl();
  747. if(val==3){ //自由跳转
  748. $.ajaxSetup({async:false}); //同步 获得结果后 再去查询相关的人员
  749. obj.html(obj.attr("tipInfo")).show().load(url);
  750. $.ajaxSetup({async:true}); //异步
  751. //自由跳转 时 从下拉节点的默认的值 中查出相关的人员
  752. var destTask=$('#destTask'); //默认的选中的对象
  753. changeDestTask(destTask); //查出相关的人员 并改显示出来
  754. }else{
  755. obj.html(obj.attr("tipInfo")).show().load(url);
  756. }
  757. };
  758. //为目标节点选择执行的人员列表
  759. function selExeUsers(obj,nodeId,scope){
  760. var span=$(obj).siblings("span");
  761. var aryChk=$(":checkbox",span);
  762. var selectExecutors =[];
  763. aryChk.each(function(){
  764. var val=$(this).val();
  765. var k=val.split("^");
  766. var userObj={};
  767. userObj.type=k[0];
  768. userObj.id=k[1];
  769. userObj.name=k[2];
  770. selectExecutors.push(userObj);
  771. });
  772. if(!scope){
  773. scope={};
  774. scope.type='system',
  775. scope.value='all';
  776. scope=JSON2.stringify(scope);
  777. }else{
  778. scope=scope.replaceAll("#@","\"");
  779. }
  780. FlowUserDialog({selectUsers:selectExecutors,scope:scope,callback:function(types,objIds,objNames){
  781. if(objIds==null) return;
  782. var aryTmp=[];
  783. for(var i=0;i<objIds.length;i++){
  784. var check="<input type='checkbox' include='1' name='" + nodeId + "_userId' checked='checked' value='"+types[i] +"^"+ objIds[i]+"^"+objNames[i] +"'/>&nbsp;"+objNames[i];
  785. aryTmp.push(check);
  786. }
  787. span.html(aryTmp.join(''));
  788. }});
  789. }
  790. function selectExeUsers(obj,scope){
  791. var destTask=$("#destTask");
  792. if(destTask){
  793. $("#lastDestTaskId").val(destTask.val());
  794. }
  795. selExeUsers(obj,destTask.val(),scope);
  796. }
  797. //显示审批历史
  798. function showTaskOpinions(){
  799. var url="${ctx}/platform/bpm/taskOpinion/list.ht?runId=${processRun.runId}&isOpenDialog=1";
  800. url=url.getNewUrl();
  801. DialogUtil.open({
  802. url:url,
  803. title:'审批历史',
  804. height:'600',
  805. width:'900'
  806. });
  807. }
  808. //更改
  809. function changeDestTask(sel){
  810. var nodeId=sel.value;
  811. if(typeof nodeId == 'undefined'){ //对象不是用原始JS的,而是通过Jquery获取的对象
  812. nodeId = sel.val();
  813. }
  814. if(typeof nodeId == 'undefined' || nodeId==null || nodeId==""){
  815. $('#jumpUserDiv').html("");
  816. $('#lastDestTaskId').val("");
  817. return;
  818. }
  819. $('#lastDestTaskId').val(nodeId);
  820. var url="${ctx}/platform/bpm/task/getTaskUsers.ht?taskId=${task.id}&nodeId="+nodeId;
  821. $.getJSON(url, function(dataJson){
  822. var data=eval(dataJson);
  823. var aryHtml=[];
  824. for(var i=0;i<data.length;i++){
  825. var span="<input type='checkbox' include='1' name='" + nodeId + "_userId' checked='checked' value='"+data[i].type+"^"+data[i].executeId+"^"+data[i].executor+"'/>&nbsp;"+data[i].executor;
  826. aryHtml.push(span);
  827. }
  828. $('#jumpUserDiv').html(aryHtml.join(''));
  829. });
  830. }
  831. function isTaskEnd(callBack){
  832. var url="${ctx}/platform/bpm/task/isTaskExsit.ht";
  833. var params={taskId:"${task.id}"};
  834. $.post(url,params,function(responseText){
  835. var obj=new com.hotent.form.ResultMessage(responseText);
  836. if(obj.isSuccess()){
  837. callBack.apply(this);
  838. }
  839. else{
  840. $.ligerDialog.warn("当前任务已经完成或被终止","提示信息");
  841. }
  842. });
  843. }
  844. function isTaskEnd2(callBack){
  845. var url="${ctx}/platform/bpm/task/isTaskExsit.ht";
  846. var params={taskId:"${task.id}"};
  847. $.post(url,params,function(responseText){
  848. var obj=new com.hotent.form.ResultMessage(responseText);
  849. if(obj.isSuccess()){
  850. callBack.apply(this);
  851. }
  852. else{
  853. $.ligerDialog.warn("当前任务已经完成或被终止","提示信息");
  854. }
  855. });
  856. }
  857. //转交待办
  858. function changeAssignee(){
  859. if(${isCanAssignee}){
  860. isTaskEnd(function(){
  861. BpmTaskExeAssignDialog({taskId:taskId,userId:'${userId}',callback:function(rtn){
  862. if(rtn){
  863. handJumpOrClose();
  864. }
  865. }
  866. });
  867. });
  868. }
  869. else{
  870. $.ligerDialog.warn("当前任务不能转办!","提示信息");
  871. }
  872. };
  873. function resizeIframe(){
  874. if($("#frameDetail").length==0) return;
  875. $("#frameDetail").load(function() {
  876. $(this).height($(this).contents().height()+20);
  877. }) ;
  878. }
  879. // 选择常用语
  880. function addComment(){
  881. var objContent=document.getElementById("voteContent");
  882. var selItem = $('#selTaskAppItem').val();
  883. jQuery.insertText(objContent,selItem);
  884. }
  885. function openForm(formUrl){
  886. var winArgs="dialogWidth=500px;dialogHeight=400px;help=0;status=0;scroll=0;center=1";
  887. var url=formUrl.getNewUrl();
  888. window.open(url,"",winArgs);
  889. }
  890. function reference(){
  891. var defId=${bpmDefinition.defId};
  892. var url="${ctx}/platform/bpm/processRun/getRefList.ht?defId=" +defId;
  893. var params="height=400,width=700,status=no,toolbar=no,menubar=no,location=no,resizable=1,scrollbars=1";
  894. window.open(url);
  895. }
  896. function openHelpDoc(fileId){
  897. var h=screen.availHeight-35;
  898. var w=screen.availWidth-5;
  899. var vars="top=0,left=0,height="+h+",width="+w+",status=no,toolbar=no,menubar=no,location=no,resizable=1,scrollbars=1";
  900. var showUrl = __ctx+"/platform/form/office/get.ht?fileId=" + fileId;
  901. window.open(showUrl,"myWindow",vars);
  902. }
  903. //增加Web签章
  904. function addWebSigns(){
  905. //AddSecSignFromServiceX(); //WebSignPlugin JS类
  906. keySignpublicSeal(++signsequence);
  907. }
  908. //增加手写签章
  909. function addHangSigns(){
  910. AddSecHandSignNoPromptX(); //WebSignPlugin JS类
  911. }
  912. // 删除实例
  913. function delInstance(){
  914. $.ligerDialog.confirm("确定要删除吗?","提示", function(rtn) {
  915. if(rtn){
  916. $.ajax({
  917. type : "post",
  918. url : __ctx + "/platform/bpm/processRun/delAjax.ht?runId=${processRun.runId}",
  919. async : false,
  920. success : function(result) {
  921. if(result.result == 1){
  922. $.ligerDialog.success(result.message,"提示信息",function(){
  923. handJumpOrClose();
  924. });
  925. }else{
  926. $.ligerDialog.warn(result.message,"提示信息");
  927. }
  928. }
  929. });
  930. }
  931. });
  932. }
  933. // 自定义打印
  934. function customPrint(printAlias){
  935. var url="${ctx}/platform/bpm/processRun/printForm.ht?runId=${processRun.runId}&printAlias="+printAlias;
  936. jQuery.openFullWindow(url);
  937. }
  938. function loadFormSignData(){
  939. $.ajax({
  940. type:"post",
  941. url:"${ctx}/platform/sign/sign/get.ht",
  942. dataType:"json",
  943. data:{proRunId:"${processRun.globalFlowNo}"},
  944. success:function(data){
  945. if(data.result){
  946. // $.ligerDialog.success(data.message,"消息提示",function(){
  947. //saveData();
  948. var obj = JSON.parse(data.message);
  949. for(var i=0;i<obj.length;i++){
  950. //alert(obj[i].signdata);
  951. LoadSignData(obj[i].signdata,obj[i].signsequence);
  952. signsequence++;
  953. }
  954. //});
  955. }
  956. else{
  957. //$.ligerDialog.warn(data.message,"消息提示");
  958. }
  959. }
  960. });
  961. }
  962. //在线拟文方法 limeng 20190517 ADD
  963. function onlineText(){
  964. OnlineText.CreateNew('${processRun.runId}'); //在线编辑 JS类
  965. }
  966. //正文审核
  967. function onlineTextEdit(){
  968. $.ajax({
  969. type:"post",
  970. url:"${ctx}/platform/system/sysFile/getContentFileByRunId.ht",
  971. dataType:"json",
  972. data:{runId:${processRun.runId}},
  973. success:function(data){
  974. jsondata=$.parseJSON(data.message);
  975. OnlineText.onlineTextEdit(jsondata.fileId,'${processRun.runId}'); //在线编辑 JS类
  976. }
  977. });
  978. }
  979. //正文编辑
  980. function onlineTextOverride(){
  981. $.ajax({
  982. type:"post",
  983. url:"${ctx}/platform/system/sysFile/getContentFileByRunId.ht",
  984. dataType:"json",
  985. data:{runId:${processRun.runId}},
  986. success:function(data){
  987. jsondata=$.parseJSON(data.message);
  988. OnlineText.onlineTextOverride(jsondata.fileId,'${processRun.runId}');
  989. }
  990. });
  991. }
  992. //模板套红
  993. function onlineTextTemplateTaoHong(){
  994. $.ajax({
  995. type:"post",
  996. url:"${ctx}/platform/system/sysFile/getContentFileByRunId.ht",
  997. dataType:"json",
  998. data:{runId:${processRun.runId}},
  999. success:function(data){
  1000. jsondata=$.parseJSON(data.message);
  1001. OnlineText.onlineTextTemplateTaoHong(jsondata.fileId,'${processRun.runId}');
  1002. }
  1003. });
  1004. }
  1005. function openOnlineTextHistory(){
  1006. var url=__ctx+"/platform/bpm/task/toStarDialog.ht?runId=${processRun.runId}";
  1007. dialog=DialogUtil.open({
  1008. height:750,
  1009. width: 1000,
  1010. title : '历史附件',
  1011. url: url,
  1012. isResize: false
  1013. });
  1014. }
  1015. </script>
  1016. <!--WEB签章JS-->
  1017. <script>
  1018. //打开签章dialog
  1019. var dialog;
  1020. function openSignatureDialog(){
  1021. var url=__ctx+"/platform/bpm/task/formView.ht?runId=${processRun.runId}&userId=${curUserId}&instanceId=${processRun.actInstId}&taskId=${task.id}&action=sign";
  1022. dialog=DialogUtil.open({
  1023. height:750,
  1024. width: 1000,
  1025. title : '查看签章',
  1026. url: url,
  1027. isResize: false
  1028. });
  1029. }
  1030. function closeSignatureDialog(){
  1031. dialog.close();
  1032. }
  1033. </script>
  1034. </head>
  1035. <body>
  1036. <form id="frmWorkFlow" name=AztSignSealFrom method="post" >
  1037. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px"
  1038. id=AztWebSignSealkeyPublic
  1039. classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1040. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px"
  1041. id=AztWebSignSealkeyPrivate
  1042. classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1043. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px"
  1044. id=AztWebSignBarCode
  1045. classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1046. <div id="signLoadCreate">
  1047. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad1 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1048. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad2 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1049. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad3 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1050. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad4 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1051. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad5 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1052. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad6 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1053. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad7 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1054. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad8 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  1055. </div>
  1056. <div class="panel">
  1057. <div class="panel-top">
  1058. <!-- 悬浮工具栏实现的对象topNavWrapper 和 topNav 名称ID可以更改,但要和css的对象一致-->
  1059. <div id="topNavWrapper">
  1060. <ul id="topNav">
  1061. <iframe style="position:absolute; visibility:inherit; top:0px; left:0px; width:100%; height:70px; z-index:-1; border-width:0px;"></iframe>
  1062. <div id ="rwspNav" class="l-layout-header noprint" >
  1063. 任务审批处理--<b>${task.name}</b>--<i>[${bpmDefinition.subject}-V${bpmDefinition.versionNo}]</i>
  1064. </div>
  1065. <c:choose>
  1066. <c:when test="${(empty task.executionId) && task.description=='15' }">
  1067. <jsp:include page="incTaskNotify.jsp"></jsp:include>
  1068. </c:when>
  1069. <c:when test="${(empty task.executionId) && (task.description=='38' || task.description=='39') }">
  1070. <jsp:include page="incTaskTransTo.jsp"></jsp:include>
  1071. </c:when>
  1072. <c:otherwise>
  1073. <jsp:include page="incToolBarNode.jsp"></jsp:include>
  1074. </c:otherwise>
  1075. </c:choose>
  1076. </ul>
  1077. </div>
  1078. </div>
  1079. <div class="panel-body">
  1080. <c:choose>
  1081. <c:when test="${bpmNodeSet.isHidePath==0||isManage==1}">
  1082. <style>
  1083. @media screen and (max-width: 900px) {
  1084. #jumpDiv .table-grid{
  1085. width:100%!important;
  1086. }
  1087. #jumpDiv .table-grid div{
  1088. width:35%!important;
  1089. }
  1090. }
  1091. </style>
  1092. <div id="jumpDiv" class="noprint" style="display:none;" tipInfo="正在加载表单请稍候...">
  1093. </div>
  1094. </c:when>
  1095. </c:choose>
  1096. <!--审批意见-->
  1097. <c:choose>
  1098. <c:when test="${bpmNodeSet.isHideOption ==0 && bpmNodeSet.isPopup==0 && task.description!='15' && task.description!='38' && task.description!='39'}">
  1099. <div class="noprint">
  1100. <jsp:include page="incTaskOpinion.jsp"></jsp:include>
  1101. </div>
  1102. </c:when>
  1103. <c:when test="${ bpmNodeSet.isPopup == 1 && task.description!='15' && task.description!='38' && task.description!='39'}">
  1104. <div class="hidden"><textarea class="hidden" include="1" id="voteContent" name="voteContent" >${taskOpinion.opinion}</textarea></div>
  1105. </c:when>
  1106. </c:choose>
  1107. <div class="printForm panel-detail" style="padding-bottom:75px;">
  1108. <c:choose>
  1109. <c:when test="${isEmptyForm==true}">
  1110. <div class="noForm">没有设置流程表单。</div>
  1111. </c:when>
  1112. <c:otherwise>
  1113. <c:if test="${hasGlobalFlowNo }">
  1114. <div align="right" style="width:100%; margin:0px auto; height:30px;line-height:30px;">工单号:${processRun.globalFlowNo}</div>
  1115. </c:if>
  1116. <c:choose>
  1117. <c:when test="${isExtForm}">
  1118. <c:choose>
  1119. <c:when test="${!empty detailUrl}">
  1120. <iframe id="frameDetail" src="${detailUrl}" scrolling="no" frameborder="no" width="100%" height="100%"></iframe>
  1121. </c:when>
  1122. <c:otherwise>
  1123. <div class="printForm" id="divExternalForm" formUrl="${form}"></div>
  1124. </c:otherwise>
  1125. </c:choose>
  1126. </c:when>
  1127. <c:otherwise>
  1128. <div id="custformDiv" class="printForm" type="custform" style="width:98%;">
  1129. ${form} <!-- 这个 form 是表单 -->
  1130. </div>
  1131. <input type="hidden" include="1" name="formData" id="formData" />
  1132. </c:otherwise>
  1133. </c:choose>
  1134. </c:otherwise>
  1135. </c:choose>
  1136. </div>
  1137. <input type="hidden" id="taskId" include="1" name="taskId" value="${task.id}"/>
  1138. <%--驳回和撤销投票为再次提交 --%>
  1139. <c:choose>
  1140. <c:when test="${processRun.status eq 5 or processRun.status eq 6}">
  1141. <input type="hidden" include="1" id="voteAgree" name="voteAgree" value="34"/>
  1142. </c:when>
  1143. <c:otherwise>
  1144. <input type="hidden" include="1" id="voteAgree" name="voteAgree" value="1"/>
  1145. </c:otherwise>
  1146. </c:choose>
  1147. <input type="hidden" include="1" id="back" name="back" value=""/>
  1148. <input type="hidden" include="1" id="actDefId" name="actDefId" value="${bpmDefinition.actDefId}"/>
  1149. <input type="hidden" include="1" name="defId" value="${bpmDefinition.defId}"/>
  1150. <input type="hidden" include="1" id="isManage" name="isManage" value="${isManage}"/>
  1151. <input type="hidden" include="1" id="businessKey" name="businessKey" value="${processRun.businessKey}"/>
  1152. <input type="hidden" include="1" id="startNode" name="startNode" value="${toBackNodeId}"/>
  1153. <input type="hidden" include="1" name="curUserId" value="${curUserId}"/>
  1154. <input type="hidden" include="1" name="curUserName" value="${curUserName}"/>
  1155. <input type="hidden" include="1" id="currentNode" name="currentNode" value="${task.taskDefinitionKey}"/>
  1156. <input type="hidden" include="1" name="formKey" value="${formKey}"/>
  1157. </div>
  1158. </div>
  1159. </form>
  1160. <div class="datagrid-mask" style="position:fixed;z-index:110;top:0px;left:0px;display:none;background-color:rgba(0,0,0,0.2);"><img src="${ctx}/styles/blue/images/qdd.gif" style="left:50%;margin-left:-160px;display:block;position:absolute;top:50%;margin-top:-152px;"></div>
  1161. </body>
  1162. </html>