task-operation-viewTaskForm.jsp 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <%@page contentType="text/html;charset=UTF-8"%>
  2. <%@include file="/taglibs.jsp"%>
  3. <%pageContext.setAttribute("currentHeader", "pim");%>
  4. <%pageContext.setAttribute("currentMenu", "task");%>
  5. <%pageContext.setAttribute("currentTitle", "bpm-process-5");%>
  6. <!doctype html>
  7. <html lang="en">
  8. <head>
  9. <%@include file="/common/meta.jsp"%>
  10. <title><spring:message code="demo.demo.input.title" text="编辑"/></title>
  11. <%@include file="/common/s3.jsp"%>
  12. <!-- bootbox -->
  13. <script type="text/javascript" src="${ctx}/s/bootbox/bootbox.min.js"></script>
  14. <link href="${tenantPrefix}/widgets/xform3/styles/xform.css" rel="stylesheet">
  15. <script type="text/javascript" src="${tenantPrefix}/widgets/xform3/xform-packed.js"></script>
  16. <link type="text/css" rel="stylesheet" href="../widgets/userpicker3-v2/userpicker.css">
  17. <script type="text/javascript" src="../widgets/userpicker3-v2/userpicker.js"></script>
  18. <style type="text/css">
  19. .xf-handler {
  20. cursor: auto;
  21. }
  22. </style>
  23. <script type="text/javascript">
  24. document.onmousedown = function(e) {};
  25. document.onmousemove = function(e) {};
  26. document.onmouseup = function(e) {};
  27. document.ondblclick = function(e) {};
  28. var xform;
  29. $(function() {
  30. xform = new xf.Xform('xf-form-table');
  31. xform.render();
  32. if ($('#__gef_content__').val() != '') {
  33. xform.doImport($('#__gef_content__').val());
  34. }
  35. xform.setValue(${xform.jsonData});
  36. $("#xform").validate({
  37. submitHandler: function(form) {
  38. bootbox.animate(false);
  39. var box = bootbox.dialog('<div class="progress progress-striped active" style="margin:0px;"><div class="bar" style="width: 100%;"></div></div>');
  40. form.submit();
  41. },
  42. errorClass: 'validate-error'
  43. });
  44. setTimeout(function() {
  45. $('.datepicker').datepicker({
  46. autoclose: true,
  47. language: 'zh_CN',
  48. format: 'yyyy-mm-dd'
  49. })
  50. }, 500);
  51. })
  52. </script>
  53. <script type="text/javascript">
  54. $(function() {
  55. createUserPicker({
  56. multiple: true,
  57. searchUrl: '${tenantPrefix}/rs/user/search',
  58. treeUrl: '${tenantPrefix}/rs/party/tree?partyStructTypeId=1',
  59. childUrl: '${tenantPrefix}/rs/party/searchUser'
  60. });
  61. })
  62. </script>
  63. <script type="text/javascript" src="${tenantPrefix}/widgets/operation/TaskOperation.js"></script>
  64. <script type="text/javascript">
  65. ROOT_URL = '${tenantPrefix}';
  66. var taskOperation = new TaskOperation();
  67. </script>
  68. </head>
  69. <body>
  70. <%@include file="/header/bpm-workspace3.jsp"%>
  71. <div class="row-fluid">
  72. <%@include file="/menu/bpm-workspace3.jsp"%>
  73. <!-- start of main -->
  74. <section id="m-main" class="col-md-10" style=" ">
  75. <c:if test="${not empty children}">
  76. <div class="alert alert-info" role="alert">
  77. <c:forEach var="item" items="${children}">
  78. <p>
  79. ${item.catalog == 'communicate' ? '沟通反馈' : ''}
  80. <tags:user userId="${item.assignee}"/>
  81. <fmt:formatDate value="${item.completeTime}" type="both"/>
  82. ${item.comment}</p>
  83. </c:forEach>
  84. </div>
  85. </c:if>
  86. <c:if test="${humanTask.catalog != 'communicate'}">
  87. <div id="previousStep">
  88. </div>
  89. <script>
  90. $.getJSON('${tenantPrefix}/rs/bpm/previous', {
  91. processDefinitionId: '${formDto.processDefinitionId}',
  92. activityId: '${formDto.activityId}'
  93. }, function(data) {
  94. $('#previousStep').append('上个环节:');
  95. for (var i = 0; i < data.length; i++) {
  96. $('#previousStep').append(data[i].name);
  97. }
  98. });
  99. </script>
  100. <div id="nextStep">
  101. </div>
  102. <script>
  103. $.getJSON('${tenantPrefix}/rs/bpm/next', {
  104. processDefinitionId: '${formDto.processDefinitionId}',
  105. activityId: '${formDto.activityId}'
  106. }, function(data) {
  107. $('#nextStep').append('下个环节:');
  108. for (var i = 0; i < data.length; i++) {
  109. $('#nextStep').append(data[i].name);
  110. }
  111. });
  112. </script>
  113. </c:if>
  114. <form id="xform" method="post" action="${tenantPrefix}/operation/task-operation-completeTask.do" class="xf-form" enctype="multipart/form-data">
  115. <input id="humanTaskId" type="hidden" name="humanTaskId" value="${humanTaskId}">
  116. <div id="xf-form-table"></div>
  117. <c:if test="${humanTask.catalog == 'normal' || humanTask.catalog == 'vote'}">
  118. <div class="padding-top:20px;">
  119. <fieldset>
  120. <legend>意见</legend>
  121. <input type="hidden" id="_humantask_action_" name="_humantask_action_" value="">
  122. <textarea name="_humantask_comment_" class="form-control"></textarea>
  123. </fieldset>
  124. </div>
  125. </c:if>
  126. </form>
  127. <div>
  128. <c:forEach var="item" items="${logHumanTaskDtos}">
  129. <c:if test="${not empty item.completeTime}">
  130. <p>
  131. <tags:user userId="${item.assignee}"/>
  132. <fmt:formatDate value="${item.completeTime}" type="both"/>
  133. ${item.comment}</p>
  134. </p>
  135. </c:if>
  136. </c:forEach>
  137. </div>
  138. <div id="xformToolbar">
  139. <c:if test="${humanTask.catalog == 'normal'}">
  140. <c:forEach var="item" items="${buttons}">
  141. <c:if test="${item.label=='完成任务' }">
  142. <button id="${item.name}" type="button" class="btn btn-primary" onclick="taskOperation.${item.name}()">${item.label}</button>
  143. </c:if>
  144. <c:if test="${item.label!='完成任务' }">
  145. <button id="${item.name}" type="button" class="btn btn-default" onclick="taskOperation.${item.name}()">${item.label}</button>
  146. </c:if>
  147. </c:forEach>
  148. </c:if>
  149. <c:if test="${humanTask.catalog == 'vote'}">
  150. <button id="approve" type="button" class="btn btn-default" onclick="taskOperation.approve()">同意</button>
  151. <button id="reject" type="button" class="btn btn-default" onclick="taskOperation.reject()">反对</button>
  152. <button id="abandon" type="button" class="btn btn-default" onclick="taskOperation.abandon()">弃权</button>
  153. </c:if>
  154. <c:if test="${humanTask.catalog == 'copy'}">
  155. </c:if>
  156. <c:if test="${humanTask.catalog == 'communicate'}">
  157. <div class="alert alert-info" role="alert">
  158. 来自<tags:user userId="${parentHumanTask.assignee}"/>的沟通:
  159. ${humanTask.message}
  160. </div>
  161. <button id="callback" type="button" class="btn btn-default" onclick="taskOperation.callback()">反馈</button>
  162. </c:if>
  163. <c:if test="${humanTask.catalog == 'start'}">
  164. <button id="saveDraft" type="button" class="btn btn-default" onclick="taskOperation.saveDraft()">暂存</button>
  165. <button id="completeTask" type="button" class="btn btn-primary" onclick="taskOperation.completeTask()">提交</button>
  166. </c:if>
  167. </div>
  168. </section>
  169. <!-- end of main -->
  170. <form id="f" action="form-template-save.do" method="post" style="display:none;">
  171. <textarea id="__gef_content__" name="content">${xform.content}</textarea>
  172. </form>
  173. <div id="modal" class="modal fade">
  174. <div class="modal-dialog">
  175. <div class="modal-content">
  176. <div class="modal-body">
  177. <form>
  178. <input type="hidden" name="humanTaskId" value="${humanTaskId}"/>
  179. <input type="hidden" name="comment" value=""/>
  180. <div class="input-group userPicker" style="width:200px;">
  181. <input id="_task_name_key" type="hidden" name="userId" class="input-medium" value="">
  182. <input type="text" class="form-control" name="username" placeholder="" value="">
  183. <div class="input-group-addon"><i class="glyphicon glyphicon-user"></i></div>
  184. </div>
  185. <br>
  186. <button class="btn btn-default">提交</button>
  187. </form>
  188. </div>
  189. </div>
  190. </div>
  191. </div>
  192. <div id="modalCommunicate" class="modal fade">
  193. <div class="modal-dialog">
  194. <div class="modal-content">
  195. <div class="modal-body">
  196. <form>
  197. <input type="hidden" name="humanTaskId" value="${humanTaskId}"/>
  198. <label>沟通人</label>
  199. <div class="input-group userPicker" style="width:200px;">
  200. <input id="_task_name_key" type="hidden" name="userId" class="input-medium" value="">
  201. <input type="text" class="form-control" name="username" placeholder="" value="">
  202. <div class="input-group-addon"><i class="glyphicon glyphicon-user"></i></div>
  203. </div>
  204. <label>备注</label>
  205. <textarea name="comment" class="form-control"></textarea>
  206. <br>
  207. <button class="btn btn-default">提交</button>
  208. </form>
  209. </div>
  210. </div>
  211. </div>
  212. </div>
  213. <div id="modalCallback" class="modal fade">
  214. <div class="modal-dialog">
  215. <div class="modal-content">
  216. <div class="modal-body">
  217. <form>
  218. <input type="hidden" name="humanTaskId" value="${humanTaskId}"/>
  219. <textarea name="comment" class="form-control"></textarea>
  220. <br>
  221. <button class="btn btn-default">提交</button>
  222. </form>
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. <div id="modalCreateVote" class="modal fade">
  228. <div class="modal-dialog">
  229. <div class="modal-content">
  230. <div class="modal-body">
  231. <form>
  232. <input type="hidden" name="humanTaskId" value="${humanTaskId}"/>
  233. <input type="hidden" name="comment" value=""/>
  234. <div class="input-group userPicker" style="width:200px;" data-multiple="true">
  235. <input id="_task_name_key" type="hidden" name="userIds" class="input-medium" value="">
  236. <input type="text" class="form-control" name="username" placeholder="" value="">
  237. <div class="input-group-addon"><i class="glyphicon glyphicon-user"></i></div>
  238. </div>
  239. <br>
  240. <button class="btn btn-default">提交</button>
  241. </form>
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. </body>
  247. </html>