procdef_list.jsp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" 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. <%
  6. String path = request.getContextPath();
  7. String basePath = request.getScheme() + "://"
  8. + request.getServerName() + ":" + request.getServerPort()
  9. + path + "/";
  10. %>
  11. <!DOCTYPE html>
  12. <html lang="en">
  13. <head>
  14. <base href="<%=basePath%>">
  15. <!-- jsp文件头和头部 -->
  16. <%@ include file="../../system/index/top.jsp"%>
  17. <!-- 日期框 -->
  18. <link rel="stylesheet" href="static/ace/css/datepicker.css" />
  19. </head>
  20. <body class="no-skin">
  21. <!-- /section:basics/navbar.layout -->
  22. <div class="main-container" id="main-container">
  23. <!-- /section:basics/sidebar -->
  24. <div class="main-content">
  25. <div class="main-content-inner">
  26. <div class="page-content">
  27. <div class="row">
  28. <div class="col-xs-12">
  29. <!-- 检索 -->
  30. <form action="procdef/list.do" method="post" name="Form" id="Form">
  31. <table style="margin-top:5px;">
  32. <tr>
  33. <td>
  34. <div class="nav-search">
  35. <span class="input-icon">
  36. <input type="text" placeholder="这里输入关键词" class="nav-search-input" id="nav-search-input" autocomplete="off" name="keywords" value="${pd.keywords }" placeholder="这里输入关键词"/>
  37. <i class="ace-icon fa fa-search nav-search-icon"></i>
  38. </span>
  39. </div>
  40. </td>
  41. <td style="padding-left:2px;"><input class="span10 date-picker" name="lastStart" id="lastStart" value="${pd.lastStart }" type="text" data-date-format="yyyy-mm-dd" readonly="readonly" style="width:88px;" placeholder="开始日期" title="开始日期"/></td>
  42. <td style="padding-left:2px;"><input class="span10 date-picker" name="lastEnd" id="lastEnd" value="${pd.lastEnd }" type="text" data-date-format="yyyy-mm-dd" readonly="readonly" style="width:88px;" placeholder="结束日期" title="结束日期"/></td>
  43. <c:if test="${QX.cha == 1 }">
  44. <td style="vertical-align:top;padding-left:2px"><a class="btn btn-light btn-xs" onclick="tosearch();" title="检索"><i id="nav-search-icon" class="ace-icon fa fa-search bigger-110 nav-search-icon blue"></i></a></td>
  45. </c:if>
  46. <c:if test="${QX.edit == 1 }"><td style="vertical-align:top;padding-left:2px;"><a class="btn btn-light btn-xs" onclick="uploadPro();" title="导入流程"><i id="nav-search-icon" class="ace-icon fa fa-cloud-upload bigger-110 nav-search-icon blue"></i></a></td></c:if>
  47. </tr>
  48. </table>
  49. <!-- 检索 -->
  50. <table id="simple-table" class="table table-striped table-bordered table-hover" style="margin-top:5px;">
  51. <thead>
  52. <tr>
  53. <th class="center" style="width:35px;">
  54. <label class="pos-rel"><input type="checkbox" class="ace" id="zcheckbox" /><span class="lbl"></span></label>
  55. </th>
  56. <th class="center" style="width:50px;">序号</th>
  57. <th class="center">名称</th>
  58. <th class="center">流程定义KEY</th>
  59. <th class="center">版本</th>
  60. <th class="center"><i class="ace-icon fa fa-clock-o bigger-110 hidden-480"></i>部署时间</th>
  61. <th class="center">流程bpmn文件名称</th>
  62. <th class="center">流程图片名称</th>
  63. <th class="center">状态</th>
  64. <th class="center">操作</th>
  65. </tr>
  66. </thead>
  67. <tbody>
  68. <!-- 开始循环 -->
  69. <c:choose>
  70. <c:when test="${not empty varList}">
  71. <c:if test="${QX.cha == 1 }">
  72. <c:forEach items="${varList}" var="var" varStatus="vs">
  73. <tr>
  74. <td class='center'>
  75. <label class="pos-rel"><input type='checkbox' name='ids' value="${var.DEPLOYMENT_ID_}" class="ace" /><span class="lbl"></span></label>
  76. </td>
  77. <td class='center' style="width: 30px;">${page.showCount*(page.currentPage-1)+vs.index+1}</td>
  78. <td class='center'>${var.NAME_}</td>
  79. <td class='center'>${var.KEY_}</td>
  80. <td class='center'>v.${var.VERSION_}</td>
  81. <td class='center'>${fn:substring(var.DEPLOY_TIME_ ,0,19)}</td>
  82. <td class='center'><a onclick="goViewXml('${var.DEPLOYMENT_ID_}','${var.RESOURCE_NAME_}');" style="cursor:pointer;">${var.RESOURCE_NAME_}</a></td>
  83. <td class='center'><a onclick="goViewPng('${var.DEPLOYMENT_ID_}','${var.DGRM_RESOURCE_NAME_}');" style="cursor:pointer;">${var.DGRM_RESOURCE_NAME_}</a></td>
  84. <td class='center' id="STATUS${vs.index+1}">${var.SUSPENSION_STATE_ == 1 ? '<h7 class="green">已激活</h7><img src="static/images/runing.gif" width="12px;" />' : '<h7 class="red">已挂起</h7>'}</td>
  85. <td class="center" id="cz${vs.index+1}">
  86. <c:if test="${QX.edit != 1 && QX.del != 1 }">
  87. <span class="label label-large label-grey arrowed-in-right arrowed-in"><i class="ace-icon fa fa-lock" title="无权限"></i></span>
  88. </c:if>
  89. <div class="hidden-sm hidden-xs btn-group">
  90. <c:if test="${QX.edit == 1 }">
  91. <a class="btn btn-xs btn-purple" title="映射模型" onclick="addModel('${var.ID_}','cz${vs.index+1}');">
  92. 映射模型
  93. </a>
  94. <a class="btn btn-xs btn-success" title="打包下载" onclick="window.location.href='<%=basePath%>/procdef/download.do?DEPLOYMENT_ID_=${var.DEPLOYMENT_ID_}'">
  95. <i class="ace-icon fa fa-cloud-download bigger-120" title="打包下载"></i>
  96. </a>
  97. <a id="offing1${vs.index+1}" <c:if test="${var.SUSPENSION_STATE_ == 1}">style="display: none;"</c:if> class="btn btn-info btn-xs" title="激活" onclick="onoff('${var.ID_}','1',this.id,'${vs.index+1}');">
  98. <i class="ace-icon glyphicon glyphicon-play" title="激活"></i>
  99. </a>
  100. <a id="oning1${vs.index+1}" <c:if test="${var.SUSPENSION_STATE_ == 2}">style="display: none;"</c:if> class="btn btn-info btn-xs" title="挂起" onclick="onoff('${var.ID_}','2',this.id,'${vs.index+1}');">
  101. <i class="ace-icon glyphicon glyphicon-off" title="挂起"></i>
  102. </a>
  103. </c:if>
  104. <c:if test="${QX.del == 1 }">
  105. <a class="btn btn-xs btn-danger" onclick="del('${var.DEPLOYMENT_ID_}');">
  106. <i class="ace-icon fa fa-trash-o bigger-120" title="删除"></i>
  107. </a>
  108. </c:if>
  109. </div>
  110. <div class="hidden-md hidden-lg">
  111. <div class="inline pos-rel">
  112. <button class="btn btn-minier btn-primary dropdown-toggle" data-toggle="dropdown" data-position="auto">
  113. <i class="ace-icon fa fa-cog icon-only bigger-110"></i>
  114. </button>
  115. <ul class="dropdown-menu dropdown-only-icon dropdown-yellow dropdown-menu-right dropdown-caret dropdown-close">
  116. <c:if test="${QX.edit == 1 }">
  117. <li>
  118. <a style="cursor:pointer;" onclick="addModel('${var.ID_}','cz${vs.index+1}');" class="tooltip-success" data-rel="tooltip" title="映射模型">
  119. <span class="purple">
  120. <i class="ace-icon glyphicon glyphicon-repeat bigger-120"></i>
  121. </span>
  122. </a>
  123. </li>
  124. <li>
  125. <a style="cursor:pointer;" onclick="window.location.href='<%=basePath%>/procdef/download.do?DEPLOYMENT_ID_=${var.DEPLOYMENT_ID_}'" class="tooltip-success" data-rel="tooltip" title="打包下载">
  126. <span class="green">
  127. <i class="ace-icon fa fa-cloud-download bigger-120"></i>
  128. </span>
  129. </a>
  130. </li>
  131. <li>
  132. <a id="offing2${vs.index+1}" <c:if test="${var.SUSPENSION_STATE_ == '1'}">style="display: none;cursor:pointer;"</c:if> onclick="onoff('${var.ID_}','1',this.id,'${vs.index+1}');" class="tooltip-info" data-rel="tooltip" title="启动">
  133. <span class="blue">
  134. <i class="ace-icon glyphicon glyphicon-play" title="激活"></i>
  135. </span>
  136. </a>
  137. </li>
  138. <li>
  139. <a id="oning2${vs.index+1}" <c:if test="${var.SUSPENSION_STATE_ == '2'}">style="display: none;cursor:pointer;"</c:if> onclick="onoff('${var.ID_}','2',this.id,'${vs.index+1}');" class="tooltip-info" data-rel="tooltip" title="关闭">
  140. <span class="blue">
  141. <i class="ace-icon glyphicon glyphicon-off" title="挂起"></i>
  142. </span>
  143. </a>
  144. </li>
  145. </c:if>
  146. <c:if test="${QX.del == 1 }">
  147. <li>
  148. <a style="cursor:pointer;" onclick="del('${var.DEPLOYMENT_ID_}');" class="tooltip-error" data-rel="tooltip" title="删除">
  149. <span class="red">
  150. <i class="ace-icon fa fa-trash-o bigger-120"></i>
  151. </span>
  152. </a>
  153. </li>
  154. </c:if>
  155. </ul>
  156. </div>
  157. </div>
  158. </td>
  159. </tr>
  160. </c:forEach>
  161. </c:if>
  162. <c:if test="${QX.cha == 0 }">
  163. <tr>
  164. <td colspan="100" class="center">您无权查看</td>
  165. </tr>
  166. </c:if>
  167. </c:when>
  168. <c:otherwise>
  169. <tr class="main_info">
  170. <td colspan="100" class="center" >没有相关数据</td>
  171. </tr>
  172. </c:otherwise>
  173. </c:choose>
  174. </tbody>
  175. </table>
  176. <div class="page-header position-relative">
  177. <table style="width:100%;">
  178. <tr>
  179. <td style="vertical-align:top;">
  180. <c:if test="${QX.del == 1 }">
  181. <a class="btn btn-mini btn-danger" onclick="makeAll('确定要删除选中的数据吗?');" title="批量删除" ><i class='ace-icon fa fa-trash-o bigger-120'></i></a>
  182. </c:if>
  183. </td>
  184. <td style="vertical-align:top;"><div class="pagination" style="float: right;padding-top: 0px;margin-top: 0px;">${page.pageStr}</div></td>
  185. </tr>
  186. </table>
  187. </div>
  188. </form>
  189. </div>
  190. <!-- /.col -->
  191. </div>
  192. <!-- /.row -->
  193. </div>
  194. <!-- /.page-content -->
  195. </div>
  196. </div>
  197. <!-- /.main-content -->
  198. <!-- 返回顶部 -->
  199. <a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
  200. <i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
  201. </a>
  202. </div>
  203. <!-- /.main-container -->
  204. <!-- basic scripts -->
  205. <!-- 页面底部js¨ -->
  206. <%@ include file="../../system/index/foot.jsp"%>
  207. <!-- 删除时确认窗口 -->
  208. <script src="static/ace/js/bootbox.js"></script>
  209. <!-- ace scripts -->
  210. <script src="static/ace/js/ace/ace.js"></script>
  211. <!-- 日期框 -->
  212. <script src="static/ace/js/date-time/bootstrap-datepicker.js"></script>
  213. <!--提示框-->
  214. <script type="text/javascript" src="static/js/jquery.tips.js"></script>
  215. <script type="text/javascript">
  216. $(top.hangge());//关闭加载状态
  217. //检索
  218. function tosearch(){
  219. top.jzts();
  220. $("#Form").submit();
  221. }
  222. $(function() {
  223. //日期框
  224. $('.date-picker').datepicker({
  225. autoclose: true,
  226. todayHighlight: true
  227. });
  228. //复选框全选控制
  229. var active_class = 'active';
  230. $('#simple-table > thead > tr > th input[type=checkbox]').eq(0).on('click', function(){
  231. var th_checked = this.checked;//checkbox inside "TH" table header
  232. $(this).closest('table').find('tbody > tr').each(function(){
  233. var row = this;
  234. if(th_checked) $(row).addClass(active_class).find('input[type=checkbox]').eq(0).prop('checked', true);
  235. else $(row).removeClass(active_class).find('input[type=checkbox]').eq(0).prop('checked', false);
  236. });
  237. });
  238. });
  239. //预览Xml
  240. function goViewXml(DEPLOYMENT_ID_,FILENAME){
  241. top.jzts();
  242. var diag = new top.Dialog();
  243. diag.Drag=true;
  244. diag.Title ="预览XML";
  245. diag.URL = '<%=basePath%>procdef/goViewXml.do?DEPLOYMENT_ID_='+DEPLOYMENT_ID_+'&FILENAME='+encodeURI(encodeURI(FILENAME));
  246. diag.Width = 1000;
  247. diag.Height = 608;
  248. diag.Modal = false; //有无遮罩窗口
  249. diag.ShowMinButton = true; //最小化按钮
  250. diag.CancelEvent = function(){ //关闭事件
  251. diag.close();
  252. };
  253. diag.show();
  254. }
  255. //预览Png
  256. function goViewPng(DEPLOYMENT_ID_,FILENAME){
  257. top.jzts();
  258. var diag = new top.Dialog();
  259. diag.Drag=true;
  260. diag.Title ="预览流程图";
  261. diag.URL = '<%=basePath%>procdef/goViewPng.do?DEPLOYMENT_ID_='+DEPLOYMENT_ID_+'&FILENAME='+encodeURI(encodeURI(FILENAME));
  262. diag.Width = 800;
  263. diag.Height = 500;
  264. diag.Modal = false; //有无遮罩窗口
  265. diag.ShowMinButton = true; //最小化按钮
  266. diag. ShowMaxButton = true; //最大化按钮
  267. diag.CancelEvent = function(){ //关闭事件
  268. diag.close();
  269. };
  270. diag.show();
  271. }
  272. //激活 or 挂起
  273. function onoff(ID_,STATUS,ofid,VSID){
  274. top.jzts();
  275. $.ajax({
  276. type: "POST",
  277. url: '<%=basePath%>procdef/onoffPro.do?tm='+new Date().getTime(),
  278. data: {ID_:ID_,STATUS:STATUS},
  279. dataType:'json',
  280. //beforeSend: validateData,
  281. cache: false,
  282. success: function(data){
  283. if("ok" == data.msg){
  284. if(STATUS == '1'){
  285. $("#"+ofid).tips({
  286. side:3,
  287. msg:'激活成功',
  288. bg:'#AE81FF',
  289. time:2
  290. });
  291. $("#offing1"+VSID).hide();
  292. $("#offing2"+VSID).hide();
  293. $("#oning1"+VSID).show();
  294. $("#oning2"+VSID).show();
  295. $("#STATUS"+VSID).html('<h7 class="green">正在运行</h7><img src="static/images/runing.gif" width="12px;" />');
  296. }else{
  297. $("#"+ofid).tips({
  298. side:3,
  299. msg:'已经挂起',
  300. bg:'#AE81FF',
  301. time:2
  302. });
  303. $("#offing1"+VSID).show();
  304. $("#offing2"+VSID).show();
  305. $("#oning1"+VSID).hide();
  306. $("#oning2"+VSID).hide();
  307. $("#STATUS"+VSID).html('<h7 class="red">已经挂起</h7>');
  308. }
  309. }
  310. top.hangge();
  311. }
  312. });
  313. }
  314. //映射模型
  315. function addModel(processDefinitionId,czid){
  316. top.jzts();
  317. $.ajax({
  318. type: "POST",
  319. url: '<%=basePath%>fhmodel/saveModelFromPro.do?tm='+new Date().getTime(),
  320. data: {processDefinitionId:processDefinitionId},
  321. dataType:'json',
  322. //beforeSend: validateData,
  323. cache: false,
  324. success: function(data){
  325. if("ok" == data.msg){
  326. $("#"+czid).tips({
  327. side:3,
  328. msg:'映射成功,可以去模型列表查看',
  329. bg:'#AE81FF',
  330. time:2
  331. });
  332. }else{
  333. $("#"+czid).tips({
  334. side:3,
  335. msg:'映射失败!',
  336. bg:'#AE81FF',
  337. time:2
  338. });
  339. }
  340. top.hangge();
  341. }
  342. });
  343. }
  344. //导入流程
  345. function uploadPro(){
  346. top.jzts();
  347. var diag = new top.Dialog();
  348. diag.Drag=true;
  349. diag.Title ="导入流程";
  350. diag.URL = '<%=basePath%>procdef/goUploadPro.do';
  351. diag.Width = 300;
  352. diag.Height = 150;
  353. diag.CancelEvent = function(){ //关闭事件
  354. if(diag.innerFrame.contentWindow.document.getElementById('zhongxin').style.display == 'none'){
  355. tosearch();
  356. }
  357. diag.close();
  358. };
  359. diag.show();
  360. }
  361. //删除
  362. function del(Id){
  363. bootbox.confirm("确定要删除吗?(它所关联的所有数据,包括任务和历史流程全部会被删除)", function(result) {
  364. if(result) {
  365. top.jzts();
  366. var url = "<%=basePath%>procdef/delete.do?DEPLOYMENT_ID_="+Id+"&tm="+new Date().getTime();
  367. $.get(url,function(data){
  368. tosearch();
  369. });
  370. }
  371. });
  372. }
  373. //批量操作
  374. function makeAll(msg){
  375. bootbox.confirm(msg, function(result) {
  376. if(result) {
  377. var str = '';
  378. for(var i=0;i < document.getElementsByName('ids').length;i++){
  379. if(document.getElementsByName('ids')[i].checked){
  380. if(str=='') str += document.getElementsByName('ids')[i].value;
  381. else str += ',' + document.getElementsByName('ids')[i].value;
  382. }
  383. }
  384. if(str==''){
  385. bootbox.dialog({
  386. message: "<span class='bigger-110'>您没有选择任何内容!</span>",
  387. buttons:
  388. { "button":{ "label":"确定", "className":"btn-sm btn-success"}}
  389. });
  390. $("#zcheckbox").tips({
  391. side:1,
  392. msg:'点这里全选',
  393. bg:'#AE81FF',
  394. time:8
  395. });
  396. return;
  397. }else{
  398. if(msg == '确定要删除选中的数据吗?'){
  399. top.jzts();
  400. $.ajax({
  401. type: "POST",
  402. url: '<%=basePath%>procdef/deleteAll.do?tm='+new Date().getTime(),
  403. data: {DATA_IDS:str},
  404. dataType:'json',
  405. //beforeSend: validateData,
  406. cache: false,
  407. success: function(data){
  408. $.each(data.list, function(i, list){
  409. tosearch();
  410. });
  411. }
  412. });
  413. }
  414. }
  415. }
  416. });
  417. };
  418. </script>
  419. </body>
  420. </html>