processRunInfo.jsp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. <%@ page pageEncoding="UTF-8"%>
  2. <%@include file="/commons/include/html_doctype.html" %>
  3. <html>
  4. <head>
  5. <%@include file="/commons/include/customForm.jsp" %>
  6. <title>流程明细</title>
  7. <link rel="stylesheet" type="text/css" href="${ctx}/styles/default/css/hotent/task.css"></link>
  8. <script type="text/javascript" src="${ctx}/js/util/form.js"></script>
  9. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/ProcessUrgeDialog.js"></script>
  10. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowUtil.js"></script>
  11. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowRightDialog.js"></script>
  12. <script type="text/javascript" src="${ctx}/js/hotent/platform/system/SysDialog.js"></script>
  13. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/CheckVersion.js"></script>
  14. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/SelectUtil.js" ></script>
  15. <script type="text/javascript" src="${ctx}/js/lg/plugins/ligerDialog.js" ></script>
  16. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowUtil.js"></script>
  17. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/publicSign.js"></script>
  18. <object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="ScriptX.cab#Version=5,60,0,360"></object>
  19. <!-- <object classid="clsid:8856f961-340a-11d0-a96b-00c04fd705a2" height="0" id="wb" name="wb" width="0"> -->
  20. <!-- </object> -->
  21. <!-- 表单写手引用的JS -->
  22. <!--[if lt IE 9]>
  23. <script type="text/javascript" src="${ctx}/write/libs/flashcanvas.js"></script>
  24. <![endif]-->
  25. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  26. <meta name="viewport" content="initial-scale=1.0, target-densitydpi=device-dpi" /><!-- this is for mobile (Android) Chrome -->
  27. <meta name="viewport" content="initial-scale=1.0, width=device-height"><!-- mobile Safari, FireFox, Opera Mobile -->
  28. <script type="text/javascript" src="${ctx}/write/libs/flashcanvas.min.js"></script>
  29. <script type="text/javascript" src="${ctx}/write/libs/jquery.params.js"></script>
  30. <script type="text/javascript" src="${ctx}/write/libs/jSignature.min.js"></script>
  31. <script type="text/javascript" src="${ctx}/write/libs/jSignature.min.noconflict.js"></script>
  32. <script type="text/javascript" src="${ctx}/write/libs/modernizr.js"></script>
  33. <!-- 表单签章引用的JS -->
  34. <script type="text/javascript">
  35. /*KILLDIALOG*/
  36. var dialog = window;//调用页面的dialog对象(ligerui对象)
  37. if(frameElement){
  38. dialog = frameElement.dialog;
  39. }
  40. var isExtForm=eval('${isExtForm}');
  41. var runId=${processRun.runId};
  42. var status = ${processRun.status==1};
  43. $(function(){
  44. loadFormSignData();
  45. if(isExtForm){
  46. var formUrl=$('#divExternalForm').attr("formUrl");
  47. if(formUrl){
  48. $('#divExternalForm').load(formUrl, function() {});
  49. }
  50. }
  51. $(".taskopinion").each(function(){
  52. $(this).removeClass("taskopinion");
  53. var actInstId=$(this).attr("instanceId");
  54. $(this).load("${ctx}/platform/bpm/taskOpinion/listform.ht?actInstId="+actInstId);
  55. });
  56. if(status){
  57. var add = $("tr.toolBar").find("a.add");
  58. add.hide();
  59. }
  60. //处理人员选择器没有逗号的问题
  61. var lastV=$("#roleSelect").find("lable:last").text();
  62. var lastV1=$("#roleSelect1").find("lable:last").text();
  63. $("#roleSelect").find("lable").each(function(){
  64. $(this).text($(this).text()+",");
  65. });
  66. $("#roleSelect").find("lable:last").text(lastV);
  67. $("#roleSelect1").find("lable").each(function(){
  68. $(this).text($(this).text()+",");
  69. });
  70. $("#roleSelect1").find("lable:last").text(lastV1);
  71. });
  72. //显示审批历史
  73. function showProcessRunInfo(obj){
  74. var url=$(obj).attr("action"),
  75. title = $(obj).attr("title");
  76. url=url.getNewUrl();
  77. DialogUtil.open({
  78. url:url,
  79. title:title,
  80. height:'600',
  81. width:'800'
  82. });
  83. };
  84. //催办
  85. function urge(id){
  86. ProcessUrgeDialog({actInstId : id});
  87. };
  88. //追回
  89. function recover(runId){
  90. FlowUtil.recover({runId:runId,backToStart:1,callback:function(){
  91. window.opener.location.href=window.opener.location.href.getNewUrl();
  92. }});
  93. };
  94. //重新提交
  95. function executeTask(procInstId){
  96. var url= "${ctx}/platform/bpm/task/toStart.ht?instanceId="+procInstId+"&voteArgee=34";
  97. jQuery.openFullWindow(url);
  98. };
  99. //打印表单
  100. function printForm(runId){
  101. var url="${ctx}/platform/bpm/processRun/printForm.ht?runId="+runId;
  102. jQuery.openFullWindow(url);
  103. }
  104. //删除
  105. function delByInstId(instanceId){
  106. var url="${ctx}/platform/bpm/processRun/delDialog.ht?instanceId=" + instanceId;
  107. var winArgs="dialogWidth=500px;dialogHeight=250px;help=0;status=0;scroll=0;center=1";
  108. url=url.getNewUrl();
  109. DialogUtil.open({
  110. height:250,
  111. width: 500,
  112. title : '删除',
  113. url: url,
  114. isResize: true,
  115. //自定义参数
  116. sucCall:function(rtn){
  117. if(rtn!=undefined){
  118. try{
  119. window.opener.location.href=window.opener.location.href.getNewUrl();
  120. }
  121. catch(e){};
  122. dialog.close();
  123. }
  124. }
  125. });
  126. };
  127. function onClose(obj){
  128. if(window.opener ){
  129. try{
  130. window.opener.location.href=window.opener.location.href.getNewUrl();
  131. }
  132. catch(e){}
  133. }
  134. dialog.close();
  135. };
  136. //转发
  137. function divert(){
  138. var runId = "${param.runId}";
  139. forward({runId:runId});
  140. }
  141. function forward(conf)
  142. {
  143. if(!conf) conf={};
  144. var url=__ctx + '/platform/bpm/bpmProCopyto/forward.ht?runId=' + conf.runId;
  145. var dialogWidth=500;
  146. var dialogHeight=300;
  147. conf=$.extend({},{dialogWidth:dialogWidth ,dialogHeight:dialogHeight ,help:0,status:0,scroll:0,center:1,reload:true},conf);
  148. var winArgs="dialogWidth="+conf.dialogWidth+"px;dialogHeight="+conf.dialogHeight
  149. +"px;help=" + conf.help +";status=" + conf.status +";scroll=" + conf.scroll +";center=" +conf.center;
  150. url=url.getNewUrl();
  151. /*KILLDIALOG*/
  152. DialogUtil.open({
  153. height:conf.dialogHeight,
  154. width: conf.dialogWidth,
  155. title : '转发窗口',
  156. url: url,
  157. isResize: true,
  158. sucCall:function(rtn){
  159. }
  160. });
  161. }
  162. //追回
  163. function redo(runId)
  164. {
  165. FlowUtil.recover({runId:runId,backToStart:0,callback:function(){
  166. }});
  167. }
  168. //导出word文档
  169. function downloadToWord(runId){
  170. var cl=$(".panel-body").clone();
  171. var form=cl.children();
  172. handFile(form);
  173. var frm=new com.hotent.form.Form();
  174. frm.creatForm("bpmPreview",__ctx+"/platform/bpm/processRun/downloadToWord.ht");
  175. frm.addFormEl("form",cl.html());
  176. frm.addFormEl("runId",runId);
  177. frm.submit();
  178. }
  179. //处理附件上传框,变成只显示附件名称
  180. function handFile(form){
  181. $("div[name='div_attachment_container']",form).each(function(){
  182. var me=$(this);
  183. var attachment=$("a.attachment",me);
  184. var title = attachment.attr("title");
  185. me.empty();
  186. me.text(title);
  187. })
  188. }
  189. // 自定义打印
  190. function customPrint(printAlias){
  191. var url="${ctx}/platform/bpm/processRun/printForm.ht?runId=${processRun.runId}&printAlias="+printAlias;
  192. jQuery.openFullWindow(url);
  193. }
  194. function loadFormSignData(){
  195. $.ajax({
  196. type:"post",
  197. url:"${ctx}/platform/sign/sign/get.ht",
  198. dataType:"json",
  199. data:{proRunId:"${processRun.globalFlowNo}"},
  200. success:function(data){
  201. if(data.result){
  202. // $.ligerDialog.success(data.message,"消息提示",function(){
  203. //saveData();
  204. var obj = JSON.parse(data.message);
  205. for(var i=0;i<obj.length;i++){
  206. //alert(obj[i].signdata);
  207. LoadSignData(obj[i].signdata,obj[i].signsequence);
  208. }
  209. //});
  210. }
  211. else{
  212. }
  213. }
  214. });
  215. }
  216. </script>
  217. <!--WEB签章JS-->
  218. <script>
  219. if(!window['console']){//IE8,没有改对象,创建一个对象
  220. window['console'] = {log: function(){}}
  221. }
  222. //iframe页面引用时设置的全局变量
  223. //var iframeDialog = true;
  224. //kinggrid.options.timeout = 30000;//客户端时间戳异常时,需要增加连接时间
  225. function delCB(signatureid, signData){
  226. if(Signature.list != null && Signature.list[signatureid] != null){
  227. var signatureCreator = Signature.create();
  228. signatureCreator.removeSignature(signData.documentid, signatureid);
  229. }
  230. return true;
  231. }
  232. Signature.init({//初始化属性
  233. clientConfig:{//初始化客户端参数
  234. 'SOFTTYPE':'1'//0为:标准版, 1:网络版
  235. },
  236. delCallBack: delCB,
  237. timestamp: false, //获取签章服务器设定的时间戳服务器时间
  238. imgtag: 0, //签章类型:0:无; 1:公章; 2:私章; 3:法人章; 4:法人签名; 5:手写签名
  239. valid : false, //签章和证书有效期判断, 缺省不做判断
  240. icon_move : true, //移动签章按钮隐藏显示,缺省显示
  241. icon_remove : true, //撤销签章按钮隐藏显示,缺省显示
  242. icon_sign : false, //数字签名按钮隐藏显示,缺省显示
  243. icon_signverify : true, //签名验证按钮隐藏显示,缺省显示
  244. icon_sealinfo : true, //签章验证按钮隐藏显示,缺省显示
  245. certType : 'client',//设置证书在签章服务器
  246. sealType : 'client',//设置印章从签章服务器取
  247. serverUrl : 'http://202.111.178.254:8085/iSignatureServer',//
  248. documentid:'KG2016093001',//设置文档ID
  249. documentname:'测试文档KG2016093001',//设置文档名称
  250. pw_timeout:'s1800' //s:秒;h:小时;d:天
  251. })
  252. window.onload = function(){
  253. //根据RUNID查询签章数据。
  254. <%--$.post("${ctx}/platform/bpm/task/getWebSignature.ht",--%>
  255. <%-- {--%>
  256. <%-- runId:'${processRun.runId}'--%>
  257. <%-- },--%>
  258. <%-- function(data){--%>
  259. <%-- Signature.loadSignatures(eval(data));--%>
  260. <%-- });--%>
  261. Signature.bind({
  262. remove:function(fn){//签章数据撤销时,将回调此方法,需要实现签章数据持久化(保存数据到后台数据库),
  263. console.log('获取删除的签章ID:'+this.getSignatureid());
  264. fn(true);//保存成功后必须回调fn(true/false)传入true/false分别表示保存成功和失败
  265. },
  266. update:function(fn){//签章数据有变动时,将回调此方法,需要实现签章数据持久化(保存数据到后台数据库),执行后必须回调fn(true/false),传入true/false分别表示保存成功和失败
  267. console.log('获取更新的签章ID:'+this.getSignatureid());
  268. console.log('获取更新的签章数据:'+this.getSignatureData());
  269. fn(true);
  270. }
  271. });
  272. ////////////////////////////////////
  273. /* var signatureCreator = Signature.create();
  274. signatureCreator.getSaveSignatures("KG2016093001", function(signs){
  275. var signdata = new Array();
  276. var jsonList = eval("("+signs+")");
  277. for(var i=0;i<jsonList.length;i++){
  278. var map = {};
  279. map.signatureid = jsonList[i]["signatureId"];
  280. map.signatureData = jsonList[i]["signature"];
  281. signdata.push(map);
  282. }
  283. Signature.loadSignatures(signdata);
  284. });*/
  285. ////////////////////////////////////
  286. window.onbeforeunload = onbeforeunload_handler;
  287. window.onunload = onunload_handler;
  288. function onbeforeunload_handler() {
  289. }
  290. function onunload_handler() {
  291. Signature.clearRPW();
  292. }
  293. /////////////////////////////////
  294. }
  295. //签章各触发方法
  296. function verifySignature() {
  297. var invalidSignatureArray = Signature.verify();//返回无效签章
  298. if (invalidSignatureArray.length > 0) {
  299. for (var i = 0; i < invalidSignatureArray.length; i++) {
  300. var signature = invalidSignatureArray[i];
  301. //console.log(signature.modifiedItems);//获取修改的保护项
  302. }
  303. }else{
  304. Signature.alert("当前文档所有签章有效");
  305. }
  306. }
  307. function findUpdateSignature(){
  308. var updateList = Signature.updateList;
  309. $('#pos2').html('<div>获取有更新的签章数据:</div>');
  310. for (var i = 0; i < updateList.length; i++) {
  311. var signature = updateList[i];
  312. $('#pos2').append('<div>'+signature.getSignatureid()+":"+signature.getSignatureData()+'</div>');
  313. }
  314. }
  315. function findRemoveSignature(){
  316. var removeList = Signature.removeList;
  317. $('#pos1').html('<div>获取删除的签章ID:</div>');
  318. for (var i = 0; i < removeList.length; i++) {
  319. var signatureid = removeList[i];
  320. $('#pos1').append('<div>'+signatureid+'</div>');
  321. }
  322. }
  323. function showSignature() {
  324. Signature.show();
  325. }
  326. function hideSignature() {
  327. Signature.hide();
  328. }
  329. //增加签章
  330. function addWebSignature() {
  331. var that = this;
  332. var posid='pos0';
  333. var signatureCreator = Signature.create();
  334. signatureCreator.run({
  335. position: posid,//设置盖章定位dom的ID,必须设置
  336. okCall: function(fn, image) {//点击确定后的回调方法,this为签章对象 ,签章数据撤销时,将回调此方法,需要实现签章数据持久化(保存数据到后台数据库),保存成功后必须回调fn(true/false)渲染签章到页面上
  337. fn(true);
  338. },
  339. cancelCall : function() {//点击取消后的回调方法
  340. console.log("取消!")
  341. }
  342. });
  343. }
  344. //保存签章
  345. function saveWebSignature() {
  346. var signatureCreator = Signature.create();
  347. var that = this;
  348. var list = Signature.list;
  349. var jsonArray = [];
  350. var jsonObj ;
  351. for ( var key in list) {
  352. var tt = list[key];
  353. jsonObj= new Object();
  354. jsonObj.signatureid=tt.getSignatureid();
  355. jsonObj.signatureData=tt.getSignatureData();
  356. jsonArray.push(jsonObj);
  357. }
  358. //调用保存签章的controller
  359. $.post("${ctx}/platform/bpm/task/saveWebSignature.ht",
  360. {
  361. runId:'${processRun.runId}',
  362. curUserId:'${curUserId}',
  363. curUserName:'${curUserName}',
  364. signatureData:JSON.stringify(jsonArray)
  365. },
  366. function(data){
  367. if(data!='success'){
  368. Signature.alert('签章数据保存出错,请稍后重试');
  369. return;
  370. }
  371. });
  372. }
  373. //查询签章
  374. function getWebSignature(){
  375. $.post("${ctx}/platform/bpm/task/getWebSignature.ht",
  376. {
  377. runId:'${processRun.runId}'
  378. },
  379. function(data){
  380. Signature.loadSignatures(eval(data));
  381. });
  382. }
  383. function takeCare(){
  384. Signature.alert('注意: 由于IE9及以下浏览器受限,请使用其他浏览器访问本页面,<br>如果需要IE访问,复制本页面目录和kinggrid文件夹至服务器端访问。');
  385. }
  386. //打开签章dialog
  387. var dialog;
  388. function openSignatureDialog(){
  389. var url="${ctx}/platform/bpm/task/formView.ht?runId="+${processRun.runId}+"&action=print";
  390. dialog=DialogUtil.open({
  391. height:750,
  392. width: 1000,
  393. title : '查看签章',
  394. url: url,
  395. isResize: false
  396. });
  397. }
  398. function closeSignatureDialog(){
  399. dialog.close();
  400. }
  401. </script>
  402. <style media="print">
  403. @page {
  404. size: auto; /* auto is the initial value */
  405. margin: 0mm; /* this affects the margin in the printer settings */
  406. }
  407. </style>
  408. </head>
  409. <body >
  410. <form id="frmWorkFlow" name=AztSignSealFrom method="post" >
  411. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px"
  412. id=AztWebSignSealkeyPublic
  413. classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  414. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px"
  415. id=AztWebSignSealkeyPrivate
  416. classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  417. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px"
  418. id=AztWebSignBarCode
  419. classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  420. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px"
  421. id=AztWebSignLoad classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  422. <div id="signLoadCreate">
  423. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad1 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  424. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad2 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  425. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad3 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  426. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad4 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  427. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad5 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  428. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad6 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  429. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad7 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  430. <OBJECT style="Z-INDEX: 1; POSITION: absolute; WIDTH: 1px; HEIGHT: 1px" id=AztWebSignLoad8 classid=clsid:07121F49-A0DC-4EBD-A2A2-A0A71DC6FDB9></OBJECT>
  431. <OBJECT classid="CLSID:8856F961-340A-11D0-/A96B-00C04FD705A2" height="0" id="WebBrowser1" width="0" VIEWASTEXT></OBJECT>
  432. </div>
  433. <div class="panel">
  434. <div class="hide-panel noprint">
  435. <div class="panel-top">
  436. <div class="tbar-title">
  437. <span class="tbar-label">流程明细--${processRun.subject}</span>
  438. <input id="businessKey" type="hidden" value="${processRun.businessKey }" />
  439. <input id="pkField" type="hidden" value="${processRun.runId }" />
  440. </div>
  441. <div class="panel-toolbar">
  442. <div class="toolBar clearfix">
  443. <c:if test='${isCanRedo and (param.prePage =="myFinishedTask")}'>
  444. <div class="l-bar-separator"></div>
  445. <div class="group">
  446. <a href="javascript:void(0);" onclick="recover(${processRun.runId})" class="link redo"><span></span>撤销</a>
  447. </div>
  448. <div class="l-bar-separator"></div>
  449. <div class="group">
  450. <a href="javascript:void(0);" onclick="urge(${processRun.actInstId})" class="link urge"><span></span>催办</a>
  451. </div>
  452. </c:if>
  453. <c:if test="${isFirst and (processRun.status==4 or processRun.status==5)}">
  454. <div class="l-bar-separator"></div>
  455. <div class="group">
  456. <a href="javascript:executeTask('${processRun.actInstId}')" class="link run"><span></span>重新提交</a>
  457. </div>
  458. <div class="l-bar-separator"></div>
  459. <div class="group">
  460. <a href="javascript:delByInstId(${processRun.actInstId})" class="link del"><span></span>删除</a>
  461. </div>
  462. </c:if>
  463. <c:if test="${isCopy}">
  464. </c:if>
  465. <div class="l-bar-separator"></div>
  466. <div class="group">
  467. <a href="javascript:void(0);" onclick="divert(${processRun.runId},${processRun.actInstId})" class="link goForward"><span></span>转发</a>
  468. </div>
  469. <div class="l-bar-separator"></div>
  470. <div class="group"><a action="${ctx}/platform/bpm/processRun/get.ht?runId=${processRun.runId}" onclick="showProcessRunInfo(this)" class="link detail" title="运行明细"><span></span>运行明细</a></div>
  471. <div class="l-bar-separator"></div>
  472. <div class="group"><a action="${ctx}/platform/bpm/processRun/processImage.ht?runId=${processRun.runId}" onclick="showProcessRunInfo(this)" class="link flowDesign" title="流程图"><span></span>流程图</a></div>
  473. <div class="l-bar-separator"></div>
  474. <div class="group"><a action="${ctx}/platform/bpm/taskOpinion/list.ht?action=process&runId=${processRun.runId}" onclick="showProcessRunInfo(this)" class="link history" title="审批历史"><span></span>审批历史</a></div>
  475. <div class="l-bar-separator"></div>
  476. <div class="group"><a action="${ctx}/platform/bpm/bpmProCopyto/getCopyUserByInstId.ht?runId=${processRun.runId}" onclick="showProcessRunInfo(this)" class="link copyTo" title="抄送人"><span></span>抄送人</a></div>
  477. <div class="l-bar-separator"></div>
  478. <div class="group"><a class="link print" onclick="dayin()"><span></span>打印预览</a></div>
  479. </div>
  480. </div>
  481. </div>
  482. </div>
  483. <div class="panel-body panel-detail printForm">
  484. <c:if test="${hasGlobalFlowNo }">
  485. <!-- <div align="right">工单号:${processRun.globalFlowNo}</div> -->
  486. </c:if>
  487. <c:choose>
  488. <c:when test="${isExtForm==true }">
  489. <div id="divExternalForm" formUrl="${form}"></div>
  490. </c:when>
  491. <c:otherwise>
  492. <div id="dvData">
  493. ${form}
  494. </div>
  495. </c:otherwise>
  496. </c:choose>
  497. </div>
  498. </form>
  499. <input type="hidden" id="businessKey" name="businessKey" value="${processRun.businessKey}"/>
  500. </div>
  501. </body>
  502. <script>
  503. //打印方法
  504. function dayin() {
  505. openSignatureDialog();
  506. }
  507. </script>
  508. </html>