outMailEdit.jsp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/commons/include/html_doctype.html" %>
  3. <%@page import="com.hotent.core.api.util.PropertyUtil"%>
  4. <html>
  5. <head>
  6. <title>邮件</title>
  7. <%@include file="/commons/include/form.jsp" %>
  8. <f:link href="tree/zTreeStyle.css"></f:link>
  9. <script type="text/javascript" src="${ctx}/servlet/ValidJs?form=outMail"></script>
  10. <script type="text/javascript" charset="utf-8" src="${ctx}/js/ueditor2/form-setting/editor_config.js"></script>
  11. <script type="text/javascript" charset="utf-8" src="${ctx}/js/ueditor2/editor_api.js"></script>
  12. <script type="text/javascript" src="${ctx}/js/hotent/platform/mail/MailDef.js"></script>
  13. <script type="text/javascript" src="${ctx}/js/lg/plugins/ligerLayout.js"></script>
  14. <script type="text/javascript" src="${ctx}/js/tree/jquery.ztree.js"></script>
  15. <link href="${ctx}/js/jquery/plugins/attach.css" rel="stylesheet" />
  16. <script type="text/javascript" src="${ctx}/js/jquery/plugins/jquery.qtip.js" ></script>
  17. <script type="text/javascript" src="${ctx}/js/jquery/plugins/jquery.attach.js" ></script>
  18. <script type="text/javascript" src="${ctx}/js/hotent/platform/system/FlexUploadDialog.js" ></script>
  19. <style type="text/css">
  20. html,body{ padding:0px; margin:0; width:100%;height:100%;overflow: hidden;}
  21. .tree-title{overflow:hidden;width:8000px;}
  22. .ztree{overflow: auto;}
  23. .link-btn {
  24. cursor: pointer;
  25. display: inline-block;
  26. padding: 0 4px 1px 20px;
  27. }
  28. .link-remove {
  29. background: url(${ctx}/styles/default/images/button/remove.png) 0px 3px no-repeat !important;
  30. text-decoration: none;
  31. }
  32. </style>
  33. <script type="text/javascript">
  34. var menu
  35. var uploadType = '<%=PropertyUtil.getByAlias("uploadType")%>';
  36. $(function() {
  37. loadTree("initTree");
  38. layout();
  39. var mailUeditor = new baidu.editor.ui.Editor({minFrameHeight:300,initialFrameWidth:'100%',lang:'zh_cn'});
  40. mailUeditor.render("content");
  41. $("a.run").click(function() {
  42. var obj=$(this);
  43. var addressName = $("#receiverAddresses").val();
  44. $('#content').val(mailUeditor.getContent());
  45. if(addressName == ""){
  46. $("#warn").show();
  47. setTimeout(function(){$("#warn").hide()}, 3000);
  48. return;
  49. }
  50. submit(2,obj);
  51. });
  52. $('#dataFormDraft').click(function() {
  53. var obj=$(this);
  54. var addressName = $("#receiverAddresses").val();
  55. $('#content').val(mailUeditor.getContent());
  56. if(addressName == ""){
  57. $("#warn").show();
  58. setTimeout(function(){$("#warn").hide()}, 3000);
  59. return;
  60. }
  61. submit(3,obj);
  62. });
  63. getMenu()
  64. $("input[address='true']").click(changeClass);
  65. $("#sortingByTimes").click(function() {
  66. loadTree("sortingByTimes");
  67. });
  68. $("#sortingByLasttime").click(function() {
  69. loadTree("sortingByLasttime");
  70. });
  71. });
  72. function submit(action,obj){
  73. if(obj.hasClass('disabled')) return false;
  74. var rtn=$("#outMailForm").valid();
  75. if(!rtn) return;
  76. $.ligerDialog.waitting("正在发送,请您耐心等待...");
  77. $('#types').val(action);
  78. $('#isReply').val(0);
  79. $('#outMailForm').get(0).submit();
  80. }
  81. //重 置
  82. function reset(obj) {
  83. $('#receiverAddresses').val('');
  84. $('#ccAddresses').val('');
  85. $('#bcCAddresses').val('');
  86. $('#title').val('');
  87. $('#fileIds').val('');
  88. $('#fileIdsShow').html('');
  89. }
  90. //布局
  91. function layout(){
  92. $("#layout").ligerLayout( {
  93. leftWidth : 230,
  94. onHeightChanged: heightChanged
  95. });
  96. //取得layout的高度
  97. var height = $(".l-layout-center").height();
  98. $("#linkmanTree").height(height-60);
  99. };
  100. //布局大小改变的时候通知tab,面板改变大小
  101. function heightChanged(options){
  102. $("#linkmanTree").height(options.middleHeight - 60);
  103. };
  104. //树
  105. var linkmanTree;
  106. //加载树
  107. function loadTree(condition){
  108. var setting = {
  109. data: {
  110. key : {
  111. name: "linkAddress"
  112. },
  113. simpleData: {
  114. enable: true,
  115. idKey: "linkId"
  116. }
  117. },
  118. view:{
  119. showIcon:false
  120. },
  121. callback:{
  122. onClick: zTreeOnLeftClick,
  123. onRightClick : zTreeOnRightClick
  124. }
  125. };
  126. $.post("${ctx}/platform/mail/outMailLinkman/getOutMailLinkmanData.ht",{condition:condition},function(result){
  127. linkmanTree= $.fn.zTree.init($("#linkmanTree"), setting, result);}
  128. );
  129. };
  130. //右击
  131. function zTreeOnRightClick(e, treeId, treeNode) {
  132. linkmanTree.selectNode(treeNode);
  133. menu.hide();
  134. if (treeNode.isRoot == 1) {//根节点时,把删除和编辑隐藏掉
  135. menu_root.show({
  136. top : e.pageY,
  137. left : e.pageX
  138. });
  139. } else {
  140. justifyRightClickPosition(e);
  141. menu.show({
  142. top : e.pageY,
  143. left : e.pageX
  144. });
  145. }
  146. };
  147. //右键菜单
  148. function getMenu() {
  149. menu = $.ligerMenu({
  150. top : 100,
  151. left : 100,
  152. width : 100,
  153. items:<f:menu>
  154. [
  155. {
  156. text : '删除',
  157. click : 'delNode',
  158. alias:'delOrg'
  159. }
  160. ]
  161. </f:menu>
  162. });
  163. }
  164. function delNode() {
  165. var treeNode=getSelectNode();
  166. var params = "id=" + treeNode.linkId;
  167. $.post("${ctx}/platform/mail/outMailLinkman/del.ht", params, function(data) {
  168. var json =JSON.parse(data);
  169. if(json.result=='1'){
  170. linkmanTree.removeNode(treeNode);
  171. $.ligerDialog.success(json.message);
  172. }else{
  173. $.ligerDialog.warn(json.message);
  174. }
  175. });
  176. };
  177. function getSelectNode(){
  178. linkmanTree = $.fn.zTree.getZTreeObj("linkmanTree");
  179. var nodes = linkmanTree.getSelectedNodes();
  180. var treeNode = nodes[0];
  181. return treeNode;
  182. }
  183. //左击
  184. function zTreeOnLeftClick(event, treeId, treeNode){
  185. var txtAddress=$("input.focus[address='true']");
  186. if(txtAddress.length==0){
  187. $.ligerDialog.warn("请选择要填入的地址","提示信息");
  188. return;
  189. }
  190. var address=treeNode.linkAddress;
  191. address=address.substring(address.indexOf('(')+1,address.indexOf(')'));
  192. var thistemp=txtAddress.val();
  193. if(thistemp==''){
  194. txtAddress.val(address);
  195. }else{
  196. var arrtemp=thistemp.split(',');
  197. for(var i=0;i<arrtemp.length;i++){
  198. if(arrtemp[i]==address){
  199. txtAddress.val(thistemp); break;
  200. }else{
  201. txtAddress.val(thistemp+","+address);
  202. }
  203. }
  204. }
  205. };
  206. //改变样式
  207. function changeClass() {
  208. var obj=$(this);
  209. var aryAddress=$("input[address='true']");
  210. aryAddress.attr('class', 'inputText');
  211. obj.attr('class', "focus");
  212. };
  213. /*选择联系人*/
  214. function selectLinkMan(object){
  215. linkManDialog({callback:function (data){
  216. var arryName =[];
  217. var arryAddress = [];
  218. var addressObj=$(object).parent().children("input[type='text']");
  219. var nameObj=$(object).parent().children("input[type='hidden']");
  220. var beforeAddresses= addressObj.val();/*已经填写的地址*/
  221. var beforeNames=nameObj.val();
  222. for(var i = 0 ; i < data.length ; i++){
  223. var temddata = data[i].value.split("#");
  224. if(beforeAddresses.indexOf(temddata[2]) > -1){
  225. continue;
  226. }
  227. arryName.push(temddata[1]);
  228. arryAddress.push(temddata[2]);
  229. }
  230. var obj={name:arryName.join(","),address:arryAddress.join(",")};
  231. if(obj.address ==""){
  232. return;
  233. }
  234. if(beforeAddresses != ""){
  235. nameObj.val(beforeNames+','+obj.name);
  236. addressObj.val(beforeAddresses+','+obj.address);
  237. }
  238. else{
  239. nameObj.val(obj.name);
  240. addressObj.val(obj.address);
  241. }
  242. }});
  243. }
  244. /*联系人对话框*/
  245. function linkManDialog(conf){
  246. if(!conf) conf={};
  247. var url=__ctx + "/platform/oa/oaLinkman/selector.ht";
  248. var dialog = null;
  249. dialog = DialogUtil.open({
  250. passConf : {dialog:dialog},
  251. url:url,
  252. title : "联系人",
  253. width : 600,
  254. height : 400,
  255. modal : true,
  256. resizable : true,
  257. buttons:[{
  258. text:'确定',
  259. onclick:function(){
  260. var arrylinkman = dialog.jiframe.contents().find("input[name='linkmandata'][checked]");
  261. if(conf.callback){
  262. conf.callback(arrylinkman);
  263. dialog.close();
  264. }else{
  265. dialog.close();
  266. }
  267. }
  268. },{
  269. text:'取消',
  270. onclick: function (item,dialog) { dialog.close(); }
  271. }]
  272. });
  273. }
  274. </script>
  275. </head>
  276. <body>
  277. <div id="layout">
  278. <div position="right" title="最近联系人">
  279. <div class="tree-toolbar" id="pToolbar">
  280. <div class="toolBar"
  281. style="text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
  282. <div class="group" >
  283. <a class="link reload" id="sortingByTimes" >次数</a>
  284. </div>
  285. <div class="group" >
  286. <a class="link reload" id="sortingByLasttime" >最后发送</a>
  287. </div>
  288. </div>
  289. </div>
  290. <div id="linkmanTree" class="ztree">
  291. </div>
  292. </div>
  293. <div id="editor" position="center" style="overflow: auto;">
  294. <div position="center">
  295. <div class="panel">
  296. <div class="panel-top">
  297. <div class="tbar-title">
  298. <span class="tbar-label">新建邮件</span>
  299. </div>
  300. <div class="panel-toolbar">
  301. <div class="toolBar">
  302. <div class="group"><f:a alias="sendMail" css="link run" showNoRight="false"><span></span>发送</f:a></div>
  303. <div class="l-bar-separator"></div>
  304. <div class="group"><f:a alias="saveOutmail" css="link save" showNoRight="false" id="dataFormDraft"><span></span>保存草稿</f:a></div>
  305. <div class="l-bar-separator"></div>
  306. <div class="group"><a class="link undo" id="dataFormRest" onclick="reset(this)"><span></span>重置</a></div>
  307. </div>
  308. </div>
  309. </div>
  310. <div class="panel-body">
  311. <form id="outMailForm" method="post" action="send.ht" >
  312. <table class="table-detail" cellpadding="0" cellspacing="0" border="0">
  313. <tr>
  314. <th width="15%">发件人:<span class="required">*</span></th>
  315. <td>
  316. <select id="senderAddresses" name="senderAddresses" style="width: 35%;">
  317. <c:forEach items="${outMailUserSetingList}" var="mail">
  318. <option value="${mail.mailAddress}" address="${mail.id}" <c:if test="${mail.isDefault==1}">selected='selected'</c:if>>${mail.mailAddress}</option>
  319. </c:forEach>
  320. </select>
  321. </td>
  322. </tr>
  323. <tr >
  324. <th width="15%">收件人:<span class="required">*</span></th>
  325. <td height="45" >
  326. <input type="text" address="true" id="receiverAddresses" name="receiverAddresses" value="${outMail.receiverAddresses}" class="inputText" style="width: 80%;"/>
  327. <input type="hidden" id="receiverNames" name="receiverNames" value="" class="inputText" style="width: 80%;"/>
  328. <a class="link search" onclick="selectLinkMan(this);"><span ></span>选择</a>&nbsp;&nbsp;<span id="warn" style="color:red;" class="hidden">*收件人必填</span>
  329. <br>(注:可以直接单击最近联系人列表,也可手动输入,多个收件人以","号分割如两个收件人:aaa@163.com,bbb@163.com)
  330. </td>
  331. </tr>
  332. <tr>
  333. <th width="15%">抄送人: </th>
  334. <td>
  335. <input type="text" address="true" id="ccAddresses" name="ccAddresses" value="${outMail.ccAddresses}" class="inputText" style="width: 80%;"/>
  336. <input type="hidden" id="ccAddrName" name="ccAddrName" value="" class="inputText" style="width: 80%;"/>
  337. <a class="link search" onclick="selectLinkMan(this);"><span ></span>选择</a>
  338. </td>
  339. </tr>
  340. <tr >
  341. <th width="15%">暗送人: </th>
  342. <td>
  343. <input type="text" address="true" id="bcCAddresses" name="bcCAddresses" value="${outMail.bcCAddresses}" class="inputText" style="width: 80%;"/>
  344. <input type="hidden" id="bcCAddrName" name="bcCAddrName" value="" class="inputText" style="width: 80%;"/>
  345. <a class="link search" onclick="selectLinkMan(this);"><span ></span>选择</a>
  346. </td>
  347. </tr>
  348. <tr>
  349. <th width="15%">主题: </th>
  350. <td><input type="text" id="title" name="title" value="${outMail.title}" class="inputText" style="width: 80%;"/></td>
  351. </tr>
  352. <tr>
  353. <th width="15%">附件: </th>
  354. <td>
  355. <input type="text" name="fileIds" id="fileIds" class="attach" attachType="1" value="${outMail.fileIds}" />
  356. </td>
  357. </tr>
  358. <tr>
  359. <th width="15%">发送内容: </th>
  360. <td>
  361. <textarea name="content" id="content" >${outMail.content}</textarea>
  362. </td>
  363. </tr>
  364. </table>
  365. <input type="hidden" name="mailId" value="${outMail.mailId}" />
  366. <input name="types" id="types" type="hidden" value="${mail.mailAddress}"/>
  367. <input type="hidden" id="isReply" name="isReply" value="${mail.isReply}"/>
  368. </form>
  369. </div>
  370. </div>
  371. </div>
  372. </div>
  373. </body>
  374. </html>