blank_bpm.jsp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. <%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
  2. <%@ page import="cn.sinobest.framework.comm.iface.IOperator" %>
  3. <%@ page import="cn.sinobest.sysmngr.comm.ConVar" %>
  4. <%@ page import="cn.sinobest.framework.util.ConfUtil" %>
  5. <%@ page import="cn.sinobest.framework.util.Util" %>
  6. <%@ page import="cn.sinobest.sysmngr.service.blank.BlankService" %>
  7. <%@ page import="java.util.List,java.util.Map" %>
  8. <%@ page import="java.text.DateFormat,java.text.SimpleDateFormat,java.util.Date" %>
  9. <%@ include file="/jsp/framework/head.jsp" %>
  10. <%@ taglib uri="/WEB-INF/hnisi.tld" prefix="hnisi"%>
  11. <%@include file="./taglib.jsp" %>
  12. <%
  13. response.setHeader("Pragma","No-cache");
  14. response.setHeader("Cache-Control","no-cache");
  15. response.setDateHeader("Expires", 0);
  16. IOperator Operator = null;
  17. Object obj = request.getSession().getAttribute(ConVar.LOGIN_SESSION_ID);
  18. String OperID="";
  19. String OperType2 = "";
  20. String BAE001="";
  21. String operUnitId = "-1";
  22. String whereCls=" 1=2 ";
  23. String wherebts=" 1=2 ";
  24. StringBuffer t = new StringBuffer();
  25. String wherebts2 = null;
  26. //待办任务列表的排序
  27. String orderBy =" order by CREATE_TIME desc";
  28. boolean isUnit = false;
  29. String processnameHtml = "";
  30. List<Map<String,Object>> bulletinList = null;
  31. if(obj != null){
  32. Operator = (IOperator)obj;
  33. OperID = Operator.getOperID();
  34. BlankService blankService = (BlankService)Util.getBean("blankService");
  35. processnameHtml = blankService.getBPMProcessnameDropList(OperID);
  36. OperType2 = Operator.getOperType2();
  37. BAE001 = Operator.getBAE001();
  38. operUnitId = Operator.getOperUnitID();
  39. if("4".equals(OperType2) || "5".equals(OperType2)){
  40. isUnit = true;
  41. }
  42. // ASSIGNMENT_DEPT = "3"; //部门 dept
  43. //ASSIGNMENT_ROLE = "2"; //角色 role
  44. //ASSIGNMENT_USER = "1"; //用户 user
  45. t.append("(( ASSIGNMENTTYPE='1' and ASSIGNMENT='");
  46. t.append(OperID);
  47. t.append("') or ( ASSIGNMENTTYPE='2' and exists ");
  48. // t.append(" (select t1.rightid from fw_role2right t1,fw_operator2right t2 ").append("where t1.rightid=t2.rightid and t1.roleid in(ASSIGNMENT ) and t2.operid='").append(OperID).append("' and t1.rightid =(select rightid from fw_right where action_def_id=NODE_NAME ) )) ");
  49. t.append(" (select 1 from fw_operator2right b where b.OPERID='").append(OperID).append("' and b.rightid in(ASSIGNMENT ) )");
  50. t.append(") or ( ASSIGNMENTTYPE='3' and ASSIGNMENT='").append(BAE001).append("') )");//部门
  51. whereCls = t.toString();
  52. // whereCls=" 1=1 ";
  53. //需要弹出的公告的where语句
  54. wherebts2 = wherebts + " and (rownum=1 or (IFERGENCY=1 and rownum<7))";
  55. //弹出公告窗口的数据
  56. bulletinList = blankService.getPopupBulletinData(wherebts2);
  57. }
  58. whereCls += orderBy;
  59. //社保局用户和非社保局用户的首页不同,社保局用户首页没有公告栏
  60. boolean isSheBaoUser = true;
  61. if(OperType2 != null && !"1".equals(OperType2)){
  62. isSheBaoUser = false;
  63. }
  64. String todolistPagesize = "25";
  65. String todolistHeight = "560";
  66. String wfplayurl=ConfUtil.getSysParam("BPM_WORKFLOW_URL", "");
  67. wfplayurl=wfplayurl+"/page/showProcessGraph.jsp";
  68. %>
  69. <style>
  70. .task-select{margin:0px;padding:0px;height:8px;border:0px;font-size:12px;}
  71. </style>
  72. <hnisi:gNavStr />
  73. <form name="aForm">
  74. <TABLE width="99%" height="99%" border="0" cellpadding="0" cellspacing="0">
  75. <TR height="100%" >
  76. <TD style="height:100%;width:100%">
  77. <table style="width:100%;height:100%;" border="0" cellpadding="0" cellspacing="0">
  78. <%if(!isSheBaoUser){//如果不是社保局用户,则显示公告栏
  79. todolistPagesize = "20";
  80. todolistHeight = "320";
  81. %>
  82. <tr id='trBulletin' >
  83. <td style="width:100%" >
  84. <table style="width:100%;height:100%;" >
  85. <tr height="20px">
  86. <td style="width:50%;height:20px" class="blank_td_title"><span>公告栏 </span></td>
  87. <td style="width:50%;height:20px" class="blank_td_title"><span style="width:30%">公告列表</span><span style="width:65%;text-align:right;padding-right:10px"></span></td>
  88. </tr>
  89. <tr height="160px">
  90. <td style="width:50%;" >
  91. <div id="div_bulletin_show" style="overflow:auto;padding-left:5px;width:100%;height:100%;border: #B5B8C8 1px solid;"></div>
  92. </td>
  93. <td style="width:50%;">
  94. <hnisi:glt id="fw_blank_bulletin" height="160" hasPage="true" expBtns="" pageSize="6" hasTitle="false" whereCls="<%=wherebts%>"/>
  95. </td>
  96. </tr>
  97. </table>
  98. </td>
  99. </tr>
  100. <%} %>
  101. <tr>
  102. <td style="width:100%">
  103. <table style="width:100%;height:100%;" >
  104. <tr height="20px">
  105. <td class="blank_td_title2" >
  106. <span style="width:100px">任务查询</span>
  107. <span>流水号</span>
  108. <span><input type="textbox" class="textbox" style="width:97px;height:21px" name="LSH" onchange="change()"></input></span>
  109. <!-- <span>业务关键词 </span>-->
  110. <!-- <span><input type="textbox" class="textbox" style="width:95px;height:21px" name="PROCESS_KEY_INFO"></input></span>-->
  111. <span>业务单元</span>
  112. <span><select name="PROCESS_DEF_NAME" onchange="initActionDefName()"><option value="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option><%=processnameHtml%></select></span>
  113. <span>经办环节</span>
  114. <span><select name="ACTION_DEF_NAME"><option value="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option></select></span>
  115. <span>任务类型</span>
  116. <span>
  117. <select style="font-size:10px;background-color:white" name="AAA102">
  118. <option value="all" selected>全部</option>
  119. <option value="'<%=OperID%>' ">个人待办</option>
  120. <option value="">岗位待办</option>
  121. </select>
  122. </span>
  123. <span><a href="javascript:void(0)" keycomb="alt+q" onclick="doRefresh()" title=" 快捷方式 alt+q ">查询(Q)</a> </span>
  124. <span><a href="javascript:void(0)" onclick="doClearQuery()" title="">清除</a> </span>
  125. </td>
  126. </tr>
  127. <tr height="<%=todolistHeight %>">
  128. <td width="100%">
  129. <hnisi:glt id="fw_blank_todolist_bpm" colorfun="initBlsxColor" pageSize="<%=todolistPagesize %>" height="<%=todolistHeight %>" hasTitle="false" whereCls="<%=whereCls%>"/>
  130. </td>
  131. </tr>
  132. <tr height="100%"></tr>
  133. </table>
  134. </td>
  135. </tr>
  136. </table>
  137. </TD>
  138. </TR>
  139. </TABLE>
  140. </form>
  141. <%-- 公告弹出窗口 --%>
  142. <div id="bulletinWindow" style="display:none" class="window">
  143. <form name="bulletinForm">
  144. <div id="bulletinWindowMsgs">
  145. </div>
  146. <p align="center">
  147. <hnisi:btn onclick="setPopupCookie()" value="今日内停止弹出公告"></hnisi:btn>
  148. </p>
  149. </form>
  150. </div>
  151. </body>
  152. <script type="text/javascript">
  153. var whereCls = " 1=1 and <%=t.toString()%>";
  154. var wfplayurl = "<%=wfplayurl%>";
  155. /**
  156. * 获取环节名称
  157. */
  158. function initActionDefName(){
  159. var processname = aForm.PROCESS_DEF_NAME.value;
  160. if("" == processname){
  161. $(aForm.ACTION_DEF_NAME).html('<option value=""></option>');
  162. return;
  163. }
  164. new Service({
  165. serviceId:'bpmService',
  166. method:'getTransitions',
  167. parameters:{"opType":"all",'processDefinitionName':processname}
  168. }).sentAjax('获取环节信息',function(data){
  169. if(data == null || data[0]==null){
  170. $(aForm.ACTION_DEF_NAME).html('<option value=""></option>');
  171. return;
  172. }
  173. var json = data[0].respContent;
  174. var jsonObj=JSON.parse(json);
  175. var html = '<option value=""></option>';
  176. for(var i=0,l=jsonObj.length;i<l;i++){
  177. for(var key in jsonObj[i]){
  178. if(key=='type')continue;
  179. if(jsonObj[i]['type']=='TaskNode'){
  180. var nodeObj=jsonObj[i][key];
  181. var actionname =nodeObj;
  182. html += '<option value="'+ actionname +'">'+actionname+'</option>';
  183. }
  184. }
  185. }
  186. $(aForm.ACTION_DEF_NAME).html(html);
  187. var $window = $(window);
  188. $window.resize();
  189. });
  190. }
  191. /**
  192. * 初始化弹出窗口的数据
  193. */
  194. function initBulletinWindow(){
  195. <%
  196. StringBuffer bulletinHtml =new StringBuffer();
  197. for(Map<String,Object> bulletin : bulletinList){
  198. String title = (String)Util.nvl(bulletin.get("TITLE"));
  199. String content = ((String)Util.nvl(bulletin.get("CONTENT"))).replace("\"","'");
  200. String duetime = ((Number)bulletin.get("DUETIME")).toString();
  201. DateFormat format1 = new SimpleDateFormat("yyyyMMddHHmmss");
  202. DateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
  203. duetime = format2.format(format1.parse(duetime));
  204. bulletinHtml.append("<p align='center' style='font-family:黑体;font-size:250%;'>").append(title).append("</p>")
  205. .append("<p align='center' style='font-family:微软雅黑,宋体;font-size:100%;'>").append(duetime).append("</p>")
  206. .append("<div style='background-color:white;'>").append(content).append("</div>")
  207. .append("<br/><hr size='2' color='blue' style='filter:alpha(opacity=15,finishopacity=50,style=1,startX=100,startY=100,finishX=0,finishY=0)'/></br>");
  208. }
  209. %>
  210. bulletinWindowMsgs.innerHTML = "<%=bulletinHtml.toString()%>";
  211. }
  212. /**
  213. * 设置一天内登陆不再弹出公告
  214. */
  215. function setPopupCookie(){
  216. var date1 = new Date();
  217. var d1 = new Date().getTime();
  218. var d2 = new Date(date1.getFullYear(),date1.getMonth(),date1.getDate(),23,59,59);
  219. var millis = d2 - d1;
  220. createCookie("notpopup","true",millis);
  221. alert("设置成功");
  222. }
  223. var _enter = false;
  224. function doShow(COLID){
  225. var target = document.all.fw_blank_bulletin;
  226. var opts = jQuery.data(target, 'fwdatagrid').options;
  227. var data = opts.data;
  228. var rows = data.rows;
  229. var sValue = COLID +'';
  230. _enter = true;
  231. for(var i=0; i<rows.length; i++) {
  232. if(sValue==''){
  233. jQuery('#div_bulletin_show').html(rows[i]["CONTENT"]);
  234. break;
  235. }
  236. if(rows[i]["COLID"] == sValue){
  237. jQuery('#div_bulletin_show').html(rows[i]["CONTENT"]);
  238. break;
  239. }
  240. }
  241. }
  242. $(function(){
  243. <%if(!isSheBaoUser){//如果不是社保局用户,则不显示公告栏%>
  244. doShow('');
  245. CFW.oGlt.doClick('fw_blank_bulletin','doClickRow');
  246. <%}%>
  247. //用全局变量辨认是否是从登陆页面进来
  248. var twindow = window;
  249. while(twindow.dialogArguments!=null){
  250. twindow = twindow.dialogArguments;
  251. }
  252. var gvar = window.top.frames['banner'];
  253. if(undefined == gvar["isFromLogin"]){
  254. //标记为已经登陆过
  255. gvar["isFromLogin"] = 0;
  256. //检查cookie是否标志为不再弹出
  257. var notpopup = readCookie("notpopup");
  258. if(notpopup != null && notpopup =="true"){
  259. return;
  260. }
  261. <%if(null == bulletinList || bulletinList.size()==0){%>
  262. return;
  263. <%}%>
  264. //初始化弹出窗口
  265. $('#bulletinWindow').fwwindow({
  266. title: '公告',
  267. width: 900,
  268. modal: true,
  269. closed: true,
  270. height: 450
  271. });
  272. //打开弹出窗口
  273. $('#bulletinWindow').fwwindow('open');
  274. //初始化弹出窗口数据
  275. initBulletinWindow();
  276. }
  277. });
  278. function doClickRow(rowIndex,rowData){
  279. if(_enter){_enter=false; return true;}
  280. jQuery('#div_bulletin_show').html(rowData["CONTENT"]);
  281. }
  282. /**
  283. * 初始化代办超时颜色
  284. */
  285. var cudate=CFW.oDate.fnGetAppSerDate();//当前时间
  286. function initBlsxColor(json){
  287. var pro_blsx=json.PRO_BLSX;
  288. var item_blsx=json.ITEM_BLSX;
  289. var pro_class="";
  290. //总流程截至期限
  291. if(pro_blsx!=null&& pro_blsx!=""){
  292. var _aResult = CFW.oDate.fnCompareDate(cudate,pro_blsx);
  293. if(!_aResult){
  294. pro_class="background-color:#FFC0CB";
  295. }
  296. }
  297. //环节截至期限
  298. if(item_blsx!=null&& item_blsx!=""){
  299. var _aResult = CFW.oDate.fnCompareDate(cudate,item_blsx);
  300. if(!_aResult){
  301. pro_class="background-color:#FF0000";
  302. }
  303. }
  304. return pro_class;
  305. }
  306. /*
  307. * 刷新多记录表;
  308. */
  309. function doRefresh(){
  310. var whereCls = " 1=1 and <%=t.toString()%>";
  311. var flag = false;
  312. //流水号
  313. if(aForm.LSH.value!=''){
  314. whereCls +=" and PROCESSINSTANCE_ID = '" + aForm.LSH.value + "'";
  315. flag = true;
  316. }
  317. //当流程定义名称不为空时,流程定义为条件进行查询;
  318. if(aForm.PROCESS_DEF_NAME.value!=''){
  319. whereCls +=" and PROCESS_DEF_NAME LIKE '" + aForm.PROCESS_DEF_NAME.value + "%'";
  320. flag = true;
  321. }
  322. //当环节名称不为空时,环节名称为条件进行查询;
  323. if(aForm.ACTION_DEF_NAME.value!=''){
  324. whereCls += " and NODE_NAME ='" + aForm.ACTION_DEF_NAME.value + "'";
  325. flag = true;
  326. }
  327. //当任务类型不为空时,以任务类型为条件进行查询;
  328. if(aForm.AAA102.value != "all"){
  329. if(aForm.AAA102.value=="") {
  330. whereCls += " and decode(nvl(ASSIGNMENTTYPE,'1'),'1','个人待办','岗位待办') ='" +'岗位待办' + "'";
  331. flag = true;
  332. } else {
  333. whereCls +=" and decode(nvl(ASSIGNMENTTYPE,'1'),'1','个人待办','岗位待办') ='"+ '个人待办' + "'";
  334. flag = true;
  335. }
  336. }
  337. whereCls += " <%=orderBy%>";
  338. CFW.oGlt.fnGetData('fw_blank_todolist_bpm',whereCls);
  339. }
  340. function change(){
  341. if(aForm.LSH.value!=''){
  342. doRefresh();
  343. }
  344. }
  345. function doClearQuery(){
  346. CFW.oGt.fnClear(aForm,['LSH','PROCESS_DEF_NAME','ACTION_DEF_NAME','PROCESS_KEY_INFO']);
  347. }
  348. /*
  349. * 待办任务接收;
  350. */
  351. function jieshou(pid,wid) {
  352. // var where = "<%=whereCls%>";
  353. var args = {
  354. 'pid':pid,
  355. 'opType':'sign',
  356. 'wid':wid
  357. }
  358. new Service({serviceId:'bpmService',method:'executeTask',parameters:args})
  359. .sentAjax(function(data){
  360. //alert(JSON.stringify(data));
  361. //alert(data[0].result);
  362. var flag=data[0].result;
  363. if (flag=="success"){
  364. CFW.oWin.fnAlert('接收成功!');
  365. CFW.oGlt.fnGetData('fw_blank_todolist_bpm',whereCls);
  366. return;
  367. }else{
  368. CFW.oWin.fnAlert('接收失败!');
  369. return;
  370. }
  371. });
  372. }
  373. /*
  374. * 待办任务撤销;
  375. */
  376. function cheXiao(workid) {
  377. var where = "<%=whereCls%>";
  378. var operid = '<%=Operator.getOperID()%>' ;
  379. //当前任务是个人待办时,则做撤销;
  380. new Service().appendQuery({
  381. configId:'WF.WF_WORK_ITE_U2',
  382. parameters:{OPERID:operid,WORK_ITEM_ID:workid},
  383. transform:'firstRow'/*只取第一条*/
  384. }).sentAjax('传值',function(data){
  385. CFW.oGlt.fnGetData('fw_blank_todolist_bpm',where);
  386. });
  387. }
  388. /**
  389. * 经办详情
  390. */
  391. function detail(pid){
  392. var title = encodeURIComponent('经办详情');
  393. var url = "blank_todolist_detail_bpm.jsp?pid=" + pid + "&title=" + title + "&_t=" + new Date().getTime();
  394. var position = "resizable:1;status:0;help:0;scroll:1;center:1;dialogWidth:850px;dialogHeight:450px";
  395. window.showModelessDialog(url,window,position);
  396. }
  397. function createCookie(name,value,millis,path,domain,secure) {
  398. var expires = "";
  399. if (millis != null) {
  400. var date = new Date();
  401. date.setTime(date.getTime()+(millis));
  402. expires = "; expires="+date.toGMTString();
  403. }
  404. value = escape(value);
  405. document.cookie = name+"="+value+expires+
  406. (( path ) ? "; path=" + path : "" ) +
  407. (( domain ) ? "; domain=" + domain : "" ) +
  408. (( secure ) ? "; secure" : "" );
  409. }
  410. function readCookie(name) {
  411. var nameEQ = name + "=";
  412. var ca = document.cookie.split(';');
  413. for(var i=0;i < ca.length;i++) {
  414. var c = ca[i];
  415. while (c.charAt(0)==' ') c = c.substring(1,c.length);
  416. if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
  417. }
  418. return null;
  419. }
  420. function bpmwfStart(url,noedname,bae007){
  421. url="${ctx}/"+url+"&NODENAME="+encodeURI(noedname);;
  422. window.location.href=url;
  423. }
  424. </script>
  425. <script>
  426. parent.mLoadStatus.workspace = true;
  427. </script>
  428. </html>