task-operate-his.jsp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <title><t:mutiLang langKey="common.task.operate"/></title>
  7. <%-- <t:base type="jquery,tools,easyui,DatePicker"></t:base> --%>
  8. <style type="text/css">
  9. #t_table td label {font-size:15px;}
  10. </style>
  11. </head>
  12. <body>
  13. <fieldset style="border: 1px solid #E6E6E6;">
  14. <legend>表单信息</legend>
  15. <iframe id="taskformiframe" src="taskController.do?goProcessHisForm&load=detail&processInstanceId=${processInstanceId }" scrolling="no" frameborder="0" width="100%" height="90%" onload="iframeresize('taskformiframe');"></iframe>
  16. </fieldset>
  17. <t:formvalid formid="formobj" layout="table" dialog="true" usePlugin="password">
  18. <input name="taskId" id="taskId" type="hidden" value="${taskId}" />
  19. <input name="bormoney" id="bormoney" type="hidden" vartype="B" value="${bormoney}">
  20. <input name="keys" id="keys" type="hidden" />
  21. <input name="values" id="values" type="hidden" />
  22. <input name="types" id="types" type="hidden" />
  23. <input name="nextCodeCount" id="nextCodeCount" type="hidden" value="${nextCodeCount}"/>
  24. <div class="ui-widget-content ui-corner-all" style="padding: 10px; margin: 10px;">
  25. <div style="margin: 15px auto; height: 50px; width: 900px;" id="tabs-project">
  26. <c:if test="${bpmLogListCount-3 > 0}">
  27. <div class="progress"></div>
  28. <div class="progress"></div>
  29. </c:if>
  30. <c:forEach items="${bpmLogList}" var="bpmLg" varStatus="name" >
  31. <c:if test="${name.index < bpmLogNewListCount}">
  32. <div class="progress progress"></div>
  33. <div class="progress progress1">
  34. <div class="detial">
  35. <b>${bpmLg.task_node }</b><br/>
  36. [<span style="color:red;"><t:mutiLang langKey="common.task.time"/>:
  37. <fmt:formatDate value="${bpmLg.op_time }" pattern="MM-dd HH:mm:ss"/></span>]<br/>
  38. [<span><t:mutiLang langKey="common.task.operator"/>:${bpmLg.op_name }]</span>
  39. </div>
  40. </div>
  41. </c:if>
  42. </c:forEach>
  43. <c:if test="${taskName != null }">
  44. <div class='progress progress_cancel'></div>
  45. <div class="progress progress3">
  46. <div class="detial">
  47. <span><b>${taskName}</b></span><br>
  48. <!-- [<span><t:mutiLang langKey="common.task.assignee"/>:</span>]<br> -->
  49. [<span><t:mutiLang langKey="common.task.operator"/>:${task.assignee }]</span>
  50. </div>
  51. </div>
  52. </c:if>
  53. <div class='progress progress_unstart'></div>
  54. <div class='progress progress_unstart'></div>
  55. <div class='progress progress_unstart'></div>
  56. </div>
  57. </div>
  58. <table id="t_table" cellpadding="0" cellspacing="1" class="formtable" >
  59. <tr height="35">
  60. <td class="value" style="padding: 0px 5px;">
  61. <label class="Validform_label"><t:mutiLang langKey="common.task.suggestion"/></label>
  62. </td>
  63. </tr>
  64. <c:forEach items="${bpmLogList}" var="bpmLog">
  65. <tr height="35">
  66. <td class="value" style="padding: 0px 5px;border-top:1px dashed #00CCCC; font-size:13px;">
  67. <fmt:formatDate value="${bpmLog.op_time }" pattern="yyyy-MM-dd HH:mm:ss"/>[${bpmLog.op_name }]
  68. </td>
  69. </tr>
  70. <tr height="35">
  71. <td class="value" style="padding: 0px 5px;font-size:13px;">
  72. [<span style="color:blue">${bpmLog.task_node }</span>]${bpmLog.memo }
  73. </td>
  74. </tr>
  75. <c:forEach items="${bpmLog.bpmFiles}" var="bpmFile">
  76. <tr height="35">
  77. <td class="value" style="padding: 0px 5px;">
  78. [<span style="color:blue"><t:mutiLang langKey="common.attachment"/></span>] ${bpmFile.attachmenttitle}
  79. <a href="commonController.do?viewFile&fileid=${bpmFile.id}&subclassname=org.jeecgframework.workflow.pojo.base.TPBpmFile" title="common.document.download"><t:mutiLang langKey="common.document.download"/></a>
  80. <a href="javascript:void(0);"
  81. onclick="openwindow('<t:mutiLang langKey="common.preview"/>','commonController.do?openViewFile&fileid=${bpmFile.id}&subclassname=org.jeecgframework.workflow.pojo.base.TPBpmFile','fList','800','700')"><t:mutiLang langKey="common.preview"/></a>
  82. <!-- <a href="javascript:void(0)" class="jeecgDetail" onclick="del('tFinanceController.do?delFile&id=${bpmFile.id}',this)">删除</a>-->
  83. </td>
  84. </tr>
  85. </c:forEach>
  86. <br/>
  87. </c:forEach>
  88. <br>
  89. <tr height="35" >
  90. <td class="value" style="padding: 0px 5px;">
  91. <label class="Validform_label" style="font-size:14px;">
  92. <t:mutiLang langKey="common.handel.suggestion"/><p></p>
  93. </label>
  94. <textarea name="reason" datatype="*" vartype="S" style="resize: none;" rows="3" cols="105"></textarea>
  95. <span class="Validform_checktip"></span>
  96. </td>
  97. </tr>
  98. <tr>
  99. <td class="value" style="padding: 0px 5px;">
  100. <div class="form jeecgDetail" style="padding: 3px;">
  101. <input type="hidden" id="bpmlogId" name="bpmlogId" />
  102. <br/><t:upload name="fiels" id="file_upload" extend="*.doc;*.docx;*.txt;*.ppt;*.xls;*.xlsx;*.html;*.htm;*.pdf;*.jpg;" buttonText="common.file.add" formData="bpmlogId" uploader="activitiController.do?saveBpmFiles">
  103. </t:upload>
  104. </div>
  105. <div class="form" id="filediv" style="height: 50px"></div>
  106. </td>
  107. </tr>
  108. <tr>
  109. <td class="value">
  110. <input type="radio" name="model" value="1" onchange="changeModel(1);" checked/><t:mutiLang langKey="common.model.one"/>
  111. <%-- <input type="radio" name="model" value="2" onchange="changeModel(2);"/><t:mutiLang langKey="common.model.more"/> --%>
  112. <span id="manyModel" style="display:none">
  113. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:red"><t:mutiLang langKey="common.model.more.all"/>:</span>
  114. <c:forEach items="${transitionList}" var="trans">
  115. <input type="checkbox" name="transition" value="${trans.nextnode}" checked disabled>${trans.Transition }
  116. </c:forEach>
  117. </span>
  118. <c:if test="${histListSize > 0 }">
  119. <input type="radio" name="model" value="3" onchange="changeModel(3);"/><t:mutiLang langKey="common.reject"/>
  120. <span id="rejectModel" style="display:none">
  121. <select name="rejectModelNode">
  122. <c:forEach items="${histListNode}" var="histNode">
  123. <option value="${histNode.task_def_key_}">${histNode.name_ }</option>
  124. </c:forEach>
  125. </select>
  126. </span>
  127. </c:if>
  128. </td>
  129. </tr>
  130. <tr>
  131. <td class="value">
  132. <t:mutiLang langKey="common.next.operator"/>:
  133. <input name="last" id="last" readonly="readonly">
  134. <input name="id" type="hidden" value="" id="id">
  135. <t:choose hiddenName="id" hiddenid="id" url="activitiController.do?goEntrust" name="entrusterList" icon="icon-search" title="common.user.list" textname="last" isclear="true"></t:choose><t:mutiLang langKey="common.noselect.default"/>
  136. </td>
  137. </tr>
  138. <tr>
  139. <td class="value" align="center">
  140. <div id="singleModel" style="display:black">
  141. <input type="hidden" name="option" id="option" />
  142. <input type="hidden" name="nextnode" id="nextnode" />
  143. <c:forEach items="${transitionList}" var="trans">
  144. <input type="button" buttongroup="buttongroup" class="Button" onclick="disabledButton();procPass('${trans.Transition }','${trans.nextnode}')" value="${trans.Transition }">
  145. </c:forEach>
  146. </div>
  147. <div id="manyModelButton" style="display:none">
  148. <input type="button" buttongroup="buttongroup" class="Button" onclick="disabledButton();manyModelSubmit();" value='<t:mutiLang langKey="common.submit"/>'>
  149. <input type="hidden" name="transStr" id="transStr">
  150. </div>
  151. </td>
  152. </tr>
  153. </table>
  154. </t:formvalid>
  155. <script type="text/javascript">
  156. function iframeresize(id)
  157. {
  158. var iframe = document.getElementById(id);
  159. var iframeDocument = null;
  160. //safari和chrome都是webkit内核的浏览器,但是webkit可以,chrome不可以
  161. if (iframe.contentDocument)
  162. {
  163. //ie 8,ff,opera,safari
  164. iframeDocument = iframe.contentDocument;
  165. }
  166. else if (iframe.contentWindow)
  167. {
  168. // for IE, 6 and 7:
  169. iframeDocument = iframe.contentWindow.document;
  170. }
  171. if (!!iframeDocument) {
  172. iframe.width=iframeDocument.documentElement.scrollWidth+"px";
  173. iframe.height=iframeDocument.documentElement.scrollHeight+"px";
  174. } else {
  175. alert("this browser doesn't seem to support the iframe document object");
  176. }
  177. }
  178. function disabledButton(){
  179. $('input[buttongroup="buttongroup"]').attr("disabled","true");
  180. $('input[buttongroup="buttongroup"]').attr("class","disabledButton");
  181. }
  182. function procPass(yes,nextnode){
  183. //alert('d.success');
  184. $("#option").val(yes);
  185. $("#nextnode").val(nextnode);
  186. var formData = {};
  187. $(formobj).find("input,textarea,select").each(function(){
  188. if($(this).attr("name") == 'model'){
  189. formData[$(this).attr("name")]= $('input[name="model"]:checked').val();
  190. }else{
  191. formData[$(this).attr("name")]= $(this).val();
  192. }
  193. });
  194. //ajax方式提交iframe内的表单
  195. $.ajax({
  196. async : false,
  197. cache : false,
  198. type : 'POST',
  199. data : formData,
  200. url : 'activitiController.do?processComplete',// 请求的action路径
  201. error : function() {// 请求失败处理函数
  202. alert('提交申请失败');
  203. },
  204. success : function(data) {
  205. var d = data; // ------ $.parseJSON(data);
  206. //alert('d.success'+d.success);
  207. if (d.success) {
  208. $("#bpmlogId").val(d.obj.id);
  209. if($(".uploadify-queue-item").length>0){
  210. upload();
  211. }else{
  212. var msg = d.msg;
  213. W.tip(msg);
  214. W.reloadTable();
  215. windowapi.close();
  216. }
  217. }else{
  218. var msg = d.msg;
  219. W.tip(msg);
  220. }
  221. }
  222. });
  223. }
  224. /**
  225. * 单分支模式/多分支模式切换
  226. */
  227. function changeModel(value){
  228. if(value == 1){
  229. //单分支模式
  230. $("#singleModel").show();
  231. $("#manyModel").hide();
  232. $("#manyModelButton").hide();
  233. $("#rejectModel").hide();
  234. }else if(value == 2){
  235. //多分支模式
  236. $("#singleModel").hide();
  237. $("#rejectModel").hide();
  238. $("#manyModel").show();
  239. $("#manyModelButton").show();
  240. }else{
  241. $("#singleModel").hide();
  242. $("#manyModel").hide();
  243. $("#rejectModel").show();
  244. $("#manyModelButton").show();
  245. }
  246. }
  247. /**
  248. * 多分支模式 提交
  249. */
  250. function manyModelSubmit(){
  251. // alert('d.success');
  252. /** //checkbox 选中
  253. var transStr = "";
  254. var trans = $("input[name='transition']");
  255. for(i=0;i<trans.length;i++){
  256. if(trans[i].checked==true){
  257. transStr += (trans[i].value+',');
  258. }
  259. }
  260. $("#transStr").val(transStr);
  261. if(transStr == ""){
  262. alert("多分支模式必须选择下一步分支");
  263. return;
  264. }
  265. */
  266. var formData = {};
  267. $(formobj).find("input,textarea,select").each(function(){
  268. if($(this).attr("name") == 'model'){
  269. formData[$(this).attr("name")]= $('input[name="model"]:checked').val();
  270. }else{
  271. formData[$(this).attr("name")]= $(this).val();
  272. }
  273. });
  274. $.ajax({
  275. async : false,
  276. cache : false,
  277. type : 'POST',
  278. data : formData,
  279. url : 'activitiController.do?processComplete',// 请求的action路径
  280. error : function() {// 请求失败处理函数
  281. alert('提交申请失败');
  282. },
  283. success : function(data) {
  284. var d = data; // ------ $.parseJSON(data);
  285. alert('d.success'+d.success);
  286. if (d.success) {
  287. $("#bpmlogId").val(d.obj.id);
  288. if($(".uploadify-queue-item").length>0){
  289. upload();
  290. }else{
  291. var msg = d.msg;
  292. W.tip(msg);
  293. W.reloadTable();
  294. windowapi.close();
  295. }
  296. }else{
  297. var msg = d.msg;
  298. W.tip(msg);
  299. }
  300. }
  301. });
  302. }
  303. </script>
  304. </body>
  305. </html>