bpmNodeMessageEdit.jsp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. <%--
  2. time:2011-12-31 15:48:59
  3. desc:edit the 流程节点消息
  4. --%>
  5. <%@page language="java" pageEncoding="UTF-8"%>
  6. <%@include file="/commons/include/html_doctype.html"%>
  7. <html>
  8. <head>
  9. <title>编辑 流程节点消息</title>
  10. <%@include file="/commons/include/form.jsp" %>
  11. <link href="${ctx}/js/jquery/plugins/token-input-facebook.css" rel="stylesheet" type="text/css" />
  12. <script type="text/javascript" src="${ctx}/js/jquery/plugins/jquery.tokeninput.js"></script>
  13. <script type="text/javascript" src="${ctx }/js/hotent/platform/system/SysDialog.js"></script>
  14. <script type="text/javascript" src="${ctx}/js/hotent/platform/system/TemplateDialog.js"></script>
  15. <script type="text/javascript" charset="utf-8" src="${ctx}/js/ueditor2/form-setting/editor_config.js"></script>
  16. <script type="text/javascript" charset="utf-8" src="${ctx}/js/ueditor2/editor_api.js"></script>
  17. <script type="text/javascript">
  18. var dialog = frameElement.dialog; //调用页面的dialog对象(ligerui对象)
  19. var mailEditor;
  20. var innerEditor;
  21. var obj;
  22. function showRequest(formData, jqForm, options) {
  23. return true;
  24. }
  25. $(function() {
  26. ueditorInit()//初始化编辑器
  27. $("a.save").click(save);
  28. $(".token-input").each(function(){
  29. var _this=$(this);
  30. _this.tokenInput([],{theme:"facebook",onDelete:deleteBpmUserCondition});
  31. //初始化原有数据
  32. var recs = _this.val();
  33. if(!recs){
  34. return;
  35. }
  36. var conds = $.parseJSON(recs);
  37. var tokenData=getTokensFromConditions(conds);
  38. $(tokenData).each(function(){
  39. _this.tokenInput("add",this);
  40. });
  41. });
  42. handFlowVars()
  43. });
  44. function ueditorInit(){
  45. mailEditor = new baidu.editor.ui.Editor
  46. ({minFrameHeight:100,initialFrameWidth:'100%',lang:'zh_cn',toolbars:
  47. [['source','undo','redo','bold','italic', 'underline',
  48. 'subscript','superscript', 'removeformat',
  49. 'selectall', 'forecolor', 'fontsize', 'backcolor','justifyleft',
  50. 'justifyright', 'justifycenter', 'justifyjustify',
  51. 'sendperson','readperson','jumpurl' ,'taskname','htmldefform','textdefform']]
  52. });
  53. innerEditor = new baidu.editor.ui.Editor
  54. ({minFrameHeight:100,initialFrameWidth:'100%',lang:'zh_cn',toolbars:
  55. [['source','undo','redo','bold','italic', 'underline',
  56. 'subscript','superscript', 'removeformat',
  57. 'selectall', 'forecolor', 'fontsize', 'backcolor','justifyleft',
  58. 'justifyright', 'justifycenter', 'justifyjustify'
  59. ,'sendperson','readperson','jumpurl' ,'taskname','htmldefform','textdefform']]
  60. });
  61. mailEditor.render("template_mail");
  62. innerEditor.render("template_inner");
  63. }
  64. function handFlowVars(){
  65. $("select[name='selFlowVar']").change(function(){
  66. var val=$(this).val();
  67. var thisEditor=$(this).closest('tr').find('textarea');
  68. var editorName=$(thisEditor).attr('name');
  69. var text=$(this).find("option:selected").text();
  70. if(val.length==0) return;
  71. if(text=="发起人(长整型)")
  72. text=text.replace("(长整型)","");
  73. var inStr="{"+text+":"+val+"}";
  74. // Check the active editing mode.
  75. if(editorName.indexOf('mail')!=-1){
  76. var html = mailEditor.getContent();
  77. mailEditor.setContent(html+inStr);
  78. }else{
  79. var html = innerEditor.getContent();
  80. innerEditor.setContent(html+inStr);
  81. }
  82. });
  83. }
  84. function getTokensFromConditions(conds){
  85. var tokenData=[];
  86. for(var i=0;i<conds.length;i++){
  87. var id = conds[i].id;
  88. var name = "批次号["+conds[i].groupNo+"] - "+conds[i].conditionShow;
  89. tokenData.push({id:id,name:name});
  90. }
  91. return tokenData;
  92. };
  93. function save(){
  94. var valRes=validata();
  95. if(!valRes) return;
  96. var rtn=$("#bpmNodeMessageForm").valid();
  97. if(!rtn) return;
  98. var url=__ctx+ "/platform/bpm/bpmNodeMessage/save.ht";
  99. $('#template_mail').val(mailEditor.getContent());
  100. $('#template_inner').val(innerEditor.getContent());
  101. var para=$('#bpmNodeMessageForm').serialize();
  102. $.post(url,para,showResult);
  103. }
  104. function validata(){
  105. var isFlag = true;
  106. $(".token-input").each(function(){
  107. var _this = $(this);
  108. var datas = _this.tokenInput("get");
  109. if(!datas||datas.length>0){
  110. isFlag=false;
  111. }
  112. });
  113. if(isFlag){
  114. $.ligerDialog.warn('至少需要填写一种消息发送方式的参数','提示信息');
  115. return false;
  116. }
  117. var mailDatas = $("#receiver_mail").tokenInput("get");
  118. if(mailDatas && mailDatas.length>0){
  119. if($("#subject_mail").val()==""){
  120. $.ligerDialog.warn('请输入邮件的主题','提示信息');
  121. return false;
  122. }
  123. }else{
  124. if($("#subject_mail").val()!=""){
  125. $.ligerDialog.warn('请设置邮件接收人','提示信息');
  126. return false;
  127. }
  128. }
  129. var innerDatas = $("#receiver_inner").tokenInput("get");
  130. if(innerDatas && innerDatas.length>0){
  131. if($("#subject_inner").val()==""){
  132. $.ligerDialog.warn('请输入站内信息的主题','提示信息');
  133. return false;
  134. }
  135. }else{
  136. if($("#subject_inner").val()!=""){
  137. $.ligerDialog.warn('请设置站内信息接收人','提示信息');
  138. return false;
  139. }
  140. }
  141. return true;
  142. }
  143. function showResult(responseText)
  144. {
  145. var obj=new com.hotent.form.ResultMessage(responseText);
  146. if(!obj.isSuccess()){
  147. $.ligerDialog.err("提示信息","流程节点消息保存失败!",obj.getMessage());
  148. return;
  149. }else{
  150. $.ligerDialog.success(obj.getMessage(),'提示信息',function(rtn){
  151. if(rtn) dialog.close();
  152. });
  153. }
  154. }
  155. //设置消息接收人
  156. function receiverSetting(type){
  157. var hw = $.getWindowRect();
  158. var dialogWidth = hw.width*9/10;
  159. var dialogHeight = hw.height*9/10;
  160. var actDefId=$("#actDefId").val();
  161. var nodeId = $("#nodeId").val();
  162. var url = __ctx+"/platform/bpm/bpmNodeMessage/receiverSetting.ht?actDefId="+actDefId+"&nodeId="+nodeId+"&type="+type;
  163. var winArgs="dialogWidth="+dialogWidth+"px;dialogHeight="+dialogHeight+"px;help:0;status:0;scroll:1;center:1;resizable:1";
  164. url=url.getNewUrl();
  165. //var rtn = window.showModalDialog(url,"",winArgs);
  166. //window.location.reload();
  167. //reloadToken(type);
  168. /*KILLDIALOG*/
  169. DialogUtil.open({
  170. height:dialogHeight,
  171. width: dialogWidth,
  172. title : '消息接收人',
  173. url: url,
  174. isResize: true,
  175. //自定义参数
  176. sucCall:function(rtn){
  177. reloadToken(type);
  178. }
  179. });
  180. };
  181. function reloadToken(type){
  182. var actDefId=$("#actDefId").val();
  183. var nodeId = $("#nodeId").val();
  184. var url = __ctx+"/platform/bpm/bpmNodeMessage/getReceiverUserCondition.ht";
  185. var param = {
  186. actDefId:actDefId,
  187. nodeId:nodeId,
  188. receiverType:type
  189. }
  190. var tokenContainer = $(".token-input[rtype="+type+"]");
  191. $.post(url,param,function(data){
  192. if(!data.status){
  193. var tokenData=getTokensFromConditions(data.conditions);
  194. tokenContainer.tokenInput("clearOnly");
  195. $(tokenData).each(function(){
  196. tokenContainer.tokenInput("add",this);
  197. });
  198. }else{
  199. $.ligerDialog.error("重新加载出错!","出错");
  200. }
  201. });
  202. };
  203. function deleteBpmUserCondition(data){
  204. var tokenContainer = $(this);
  205. var type = tokenContainer.attr("rtype");
  206. var id=data.id;
  207. var url =__ctx + '/platform/bpm/bpmUserCondition/delByAjax.ht';
  208. $.post(url,{id:id},function(t){
  209. var resultData=eval('('+t+')');
  210. if(!resultData.result){
  211. $.ligerDialog.error("删除出错!","出错提示");
  212. reloadToken(type);
  213. }
  214. });
  215. };
  216. /**
  217. * Select Template
  218. */
  219. function slectTemplate(txtId,isText){
  220. var objcondExpCode=document.getElementById(txtId);
  221. TemplateDialog({isText:isText,callback:function(content){
  222. if(txtId=='template_mail'){
  223. var html = mailEditor.getContent();
  224. mailEditor.setContent(html+content);
  225. }else if(txtId=='template_inner'){
  226. var html = innerEditor.getContent();
  227. innerEditor.setContent(html+content);
  228. }else{
  229. jQuery.insertText(objcondExpCode,content);
  230. }
  231. }});
  232. };
  233. </script>
  234. </head>
  235. <body>
  236. <div class="tbar-title">
  237. <span class="tbar-label">消息参数设置</span>
  238. </div>
  239. <div class="panel-toolbar">
  240. <div class="toolBar">
  241. <div class="group"><a class="link save" id="btnSearch"><span></span>保存</a></div>
  242. <div class="l-bar-separator"></div>
  243. <div class="group"><a class="link del" onclick="javasrcipt:dialog.close()"><span></span>关闭</a></div>
  244. </div>
  245. </div>
  246. </div>
  247. <div class="panel-body">
  248. <form id="bpmNodeMessageForm" method="post" action="save.ht">
  249. <div class="panel-detail">
  250. <div class="foldBox">
  251. <div class="title" >
  252. 邮件信息
  253. </div>
  254. <div class="content" >
  255. <table class="table-detail" cellpadding="0" cellspacing="0" border="0">
  256. <tr>
  257. <th width="20%">发送: </th>
  258. <td><input type="checkbox" id="sendMail" name="sendMail" value="1" <c:if test="${mailMessage.isSend==1}">checked="checked"</c:if> /></td>
  259. </tr>
  260. <tr>
  261. <th width="20%">邮件主题: </th>
  262. <td><input type="text" id="subject_mail" name="subject_mail" value="${mailMessage.subject}" class="inputText" style="width:325px !important"/></td>
  263. </tr>
  264. <tr>
  265. <th width="20%">邮件接收人: </th>
  266. <td valign="top">
  267. <textarea rtype="3" id="receiver_mail" class="token-input" name="receiver_mail" rows="2" readonly="readonly" style="width:328px !important">${receiverMailCondJsons}</textarea>
  268. <a href="javascript:;" onclick="receiverSetting(3)" class="link edit">设置</a>
  269. </td>
  270. </tr>
  271. <tr>
  272. <th width="20%">普通抄送: </th>
  273. <td>
  274. <textarea rtype="4" id="copyTo_mail" class="token-input" name="copyTo_mail" rows="3" readonly="readonly" style="width:328px !important">${copyToMailCondJsons}</textarea>
  275. <a href="javascript:;" onclick="receiverSetting(4)" class="link edit">设置</a>
  276. </td>
  277. </tr>
  278. <tr>
  279. <th width="20%">秘密抄送: </th>
  280. <td>
  281. <textarea rtype="5" id="bcc_mail" class="token-input" name="bcc_mail" rows="2" readonly="readonly" style="width:328px !important">${bccMailCondJsons}</textarea>
  282. <a href="javascript:;" onclick="receiverSetting(5)" class="link edit">设置</a>
  283. </td>
  284. </tr>
  285. <tr>
  286. <th width="20%">邮件模版: </th>
  287. <td>
  288. <div>
  289. 表单变量:<f:flowVar defId="${defId}" controlName="selFlowVar"></f:flowVar>
  290. <a href="javascript:;" class="link var" title="选择模板内容" onclick="slectTemplate('template_mail',false)">选择模板内容</a>
  291. </div>
  292. <textarea id="template_mail" name="template_mail">${fn:escapeXml(mailMessage.template)}</textarea>
  293. </td>
  294. </tr>
  295. </table>
  296. </div>
  297. </div>
  298. <div class="foldBox">
  299. <div class="title" >
  300. 内部消息
  301. </div>
  302. <div class="content" >
  303. <table class="table-detail" cellpadding="0" cellspacing="0" border="0">
  304. <tr>
  305. <th width="20%">发送: </th>
  306. <td><input type="checkbox" id="sendInner" name="sendInner" value="1" <c:if test="${innerMessage.isSend==1}">checked="checked"</c:if>/></td>
  307. </tr>
  308. <tr>
  309. <th width="20%">消息主题: </th>
  310. <td><input type="text" id="subject_inner" name="subject_inner" value="${innerMessage.subject}" class="inputText" style="width:324px !important"/></td>
  311. </tr>
  312. <tr>
  313. <th width="20%">消息接收人: </th>
  314. <td valign="top">
  315. <textarea rtype="6" id="receiver_inner" class="token-input" name="receiver_inner" rows="3" readonly="readonly" style="width:328px !important">${receiverInnerCondJsons}</textarea>
  316. <a href="javascript:;" onclick="receiverSetting(6)" class="link edit">设置</a>
  317. </td>
  318. </tr>
  319. <tr>
  320. <th width="20%">消息模版: </th>
  321. <td>
  322. <div>
  323. 表单变量:<f:flowVar defId="${defId}" controlName="selFlowVar"></f:flowVar>
  324. <a href="javascript:;" class="link var" title="选择模板内容" onclick="slectTemplate('template_inner',false)">选择模板内容</a>
  325. </div>
  326. <textarea id="template_inner" name="template_inner">${fn:escapeXml(innerMessage.template)}</textarea>
  327. </td>
  328. </tr>
  329. </table>
  330. </div>
  331. </div>
  332. <div class="foldBox">
  333. <div class="title" >
  334. 手机短信
  335. </div>
  336. <div class="content" >
  337. <table class="table-detail" cellpadding="0" cellspacing="0" border="0">
  338. <tr>
  339. <th width="20%">发送: </th>
  340. <td><input type="checkbox" id="sendMobile" name="sendMobile" value="1" <c:if test="${smsMessage.isSend==1}">checked="checked"</c:if> /></td>
  341. </tr>
  342. <tr>
  343. <th width="20%">短信接收人: </th>
  344. <td valign="top">
  345. <textarea rtype="7" id="receiver_mobile" class="token-input" name="receiver_mobile" rows="3" readonly="readonly" style="width:328px !important">${receiverMobileCondJsons}</textarea>
  346. <a href="javascript:;" onclick="receiverSetting(7)" class="link edit">设置</a>
  347. </td>
  348. </tr>
  349. <tr>
  350. <th width="20%">短信模版: </th>
  351. <td>
  352. <div>
  353. <a href="javascript:;" class="link var" title="选择模板内容" onclick="slectTemplate('template_mobile',true)">选择模板内容</a>
  354. </div>
  355. <textarea rows="5" cols="30" id="template_mobile" name="template_mobile">${fn:escapeXml(smsMessage.template)}</textarea>
  356. </td>
  357. </tr>
  358. </table>
  359. </div>
  360. </div>
  361. <input type="hidden" id="id" name="id" value="${id}" class="inputText"/>
  362. <input type="hidden" id="actDefId" name="actDefId" value="${actDefId}" class="inputText"/>
  363. <input type="hidden" id="nodeId" name="nodeId" value="${nodeId}" class="inputText"/>
  364. <input type="hidden" id="mailMessageId" name="mailMessageId" value="${mailMessage.id}" class="inputText"/>
  365. <input type="hidden" id="innerMessageId" name="innerMessageId" value="${innerMessage.id}" class="inputText"/>
  366. <input type="hidden" id="smsMessageId" name="smsMessageId" value="${smsMessage.id}" class="inputText"/>
  367. </div>
  368. </form>
  369. </div>
  370. </body>
  371. </html>