jquery.attach.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. (function($){
  2. // 操作附件访问路径
  3. var fileUrl = __ctx+"/platform/system/sysFile/";
  4. // 初始化控件
  5. $.fn.attach = function(){
  6. var input = $(this);
  7. input.css("display","none");
  8. var td = input.parent();
  9. var ul=$('<ul></ul>');
  10. ul.attr('id',input.attr('id')+"Show");
  11. td.append(ul);
  12. var link = $('<a href="javascript:;"></a>');
  13. link.html("添加附件");
  14. link.bind('click',function(){
  15. var type = input.attr("attachType");
  16. type = typeof type!='undefined'?type:1;
  17. if(type==1){
  18. attachUpload1($(this));
  19. }else if(type==2){
  20. attachUpload2($(this));
  21. }
  22. });
  23. td.append(link);
  24. var attachs = getAttachs(input);
  25. initAttach(input,attachs);
  26. setJsonStr(input,attachs);
  27. };
  28. // 打开上传控件
  29. function attachUpload1(tdobj){
  30. var curobj = tdobj.parent().find('input:first');
  31. var isSingle=0;
  32. var url=__ctx + "/platform/system/sysFile/dialog.ht?isSingle="+isSingle;
  33. url=url.getNewUrl();
  34. var param = window;
  35. param.curobj = curobj;
  36. param.returnValue = returnValue;
  37. //openwindow (url, '附件上传', "700", "500");
  38. var conf={};
  39. conf.callback=function(fileIds,fileNames,filePaths,extPath){
  40. var ids = fileIds.split(',');
  41. var names =fileNames.split(',');
  42. var exts =extPath.split(',');
  43. var paths =filePaths.split(',');
  44. var atts =[];
  45. for(i=0;i<ids.length;i++){
  46. var att ={};
  47. att.fileId=ids[i];
  48. att.fileName=names[i];
  49. att.note="";
  50. att.status="";
  51. atts.push(att);
  52. }
  53. returnValue(atts);
  54. };
  55. FlexUploadDialog(conf);
  56. }
  57. // 打开上传控件
  58. function attachUpload2(tdobj){
  59. var curobj = tdobj.parent().find('input:first');
  60. var url=__ctx+"/platform/system/sysFile/uploadDialog.ht?typeId=0";
  61. url=url.getNewUrl();
  62. var param = window;
  63. param.curobj = curobj;
  64. param.atthMaxSize = curobj.atthMaxSize;
  65. param.sizeUnit = curobj.sizeUnit;
  66. param.returnValue = returnValue;
  67. var conf={};
  68. conf.callback=returnValue;
  69. DirectUploadDialog(conf);
  70. }
  71. function returnValue(atts){
  72. var curobj =window.curobj;
  73. var attachs = getAttachs(curobj);
  74. for(var idx=0;idx<atts.length;idx++){
  75. attachs.push(atts[idx]);
  76. }
  77. initAttach(curobj,atts);
  78. setJsonStr(curobj,attachs);
  79. }
  80. function openwindow(url,name,iWidth,iHeight)
  81. {
  82. var url; //转向网页的地址;
  83. var name; //网页名称,可为空;
  84. var iWidth; //弹出窗口的宽度;
  85. var iHeight; //弹出窗口的高度;
  86. var iTop = (window.screen.availHeight-30-iHeight)/2; //获得窗口的垂直位置;
  87. var iLeft = (window.screen.availWidth-10-iWidth)/2; //获得窗口的水平位置;
  88. window.open(url,name,'height='+iHeight+',,innerHeight='+iHeight+',width='+iWidth+',innerWidth='+iWidth+',top='+iTop+',left='+iLeft+',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no');
  89. }
  90. // 初始化附件内容
  91. function initAttach(obj,attachs)
  92. {
  93. for(var idx=0;idx<attachs.length;idx++){
  94. var attach = attachs[idx];
  95. var li = $("<li style='float:left;'></li>");
  96. li.attr('id',attach.fileId);
  97. var attachDiv=$("<div></div>").addClass('attach-div');
  98. var attachAttach=$("<span></span>").addClass('attach-sign');
  99. var attachLabel = $("<span></span>").addClass('attach-label');
  100. var downlink = $("<a></a>");
  101. var delurl = fileUrl+"download.ht?fileId="+attach.fileId;
  102. downlink.attr("href",delurl);
  103. downlink.html(attach.fileName);
  104. attachLabel.append(downlink);
  105. var attachBtn = $("<span></span>").addClass('attach-del').append("&nbsp;");
  106. attachDiv.append(attachAttach);
  107. attachDiv.append(attachLabel);
  108. attachDiv.append(attachBtn);
  109. li.append(attachDiv);
  110. $("#"+obj.attr("id")+"Show").append(li);
  111. }
  112. attachQtip();
  113. attachDel();
  114. }
  115. // 得到附件json
  116. function getAttachs(obj){
  117. var str = "{\'attachs\':[]}";
  118. if(obj.val()!=''){
  119. str = obj.val();
  120. }
  121. var jsonobj = eval("("+str+")");
  122. return jsonobj.attachs;
  123. }
  124. // 得到附件json字符串
  125. function setJsonStr(curobj,attachs){
  126. var sb=new StringBuffer();
  127. for(var idx=0;idx<attachs.length;idx++){
  128. var attach = attachs[idx];
  129. if(typeof attach!='undefined'){
  130. sb.append("{\'id\':\'");sb.append(attach.fileId);sb.append("\',");
  131. sb.append("\'name\':\'");sb.append(attach.fileName);sb.append("\'},");
  132. }
  133. }
  134. var json = sb.toString();
  135. if(json.length>0){
  136. json=json.toString().substring(0,json.length-1);
  137. }
  138. curobj.val("{\'attachs\':["+json+"]}");
  139. }
  140. // 绑定显示附件信息层动作
  141. function attachQtip()
  142. {
  143. $('.attach-label').each(function(){
  144. var obj = $(this);
  145. var item = obj.closest('li');
  146. var attachId = item.attr('id');
  147. var url = fileUrl+'getFile.ht';
  148. var params ={};
  149. params.fileId = attachId;
  150. $.post(url,params,function(result){
  151. var html = getTableHtml(result);
  152. obj.qtip({
  153. content:{
  154. text:html,
  155. title:{
  156. text:result.fileName
  157. }
  158. },
  159. position: {
  160. at:'center',
  161. target:'event',
  162. adjust: {
  163. x:-5,
  164. y:-5
  165. },
  166. viewport: $(window)
  167. },
  168. show:{
  169. effect: function(offset) {
  170. $(this).slideDown(200);
  171. }
  172. },
  173. hide: {
  174. event:'mouseleave',
  175. fixed:true
  176. },
  177. style: {
  178. classes:'ui-tooltip-light ui-tooltip-shadow'
  179. }
  180. });
  181. });
  182. });
  183. }
  184. // 删除附件
  185. function attachDel(){
  186. $('.attach-del').each(function(){
  187. var curobj = $(this);
  188. curobj.bind('click',function(){
  189. $.ligerDialog.confirm('确认删除吗?','提示信息',function(rtn) {
  190. if(rtn) {
  191. var attach = curobj.closest('li');
  192. var url = fileUrl+'/delByFileId.ht';
  193. var param = {};
  194. param.ids = attach.attr('id');
  195. $.post(url,param,function(result){
  196. var obj = eval("("+result+")");
  197. if (obj.success)
  198. {
  199. var input = curobj.closest('ul').prev('input');
  200. var attachs = getAttachs(input);
  201. $.each(attachs,function(i,item){
  202. if(attach.attr('id')==item.id){
  203. delete attachs[i];
  204. setJsonStr(input,attachs);
  205. }
  206. });
  207. attach.remove();
  208. }
  209. else
  210. {
  211. $.ligerDialog.err('提示信息',"页面出错了",obj.message);
  212. }
  213. });
  214. }
  215. });
  216. });
  217. });
  218. }
  219. //构建显示的html
  220. function getTableHtml(attach)
  221. {
  222. var html=[];
  223. if(attach!=''){
  224. var sb=new StringBuffer();
  225. sb.append('<table class="attach-table" cellpadding="0" cellspacing="0" border="0">');
  226. sb.append('<tr><th width="30%">文件名: </th>');
  227. sb.append('<td>'+attach.fileName+'</td></tr>');
  228. sb.append('<tr><th width="30%">文件类型: </th>');
  229. sb.append('<td>'+attach.ext+'</td></tr>');
  230. sb.append('<tr><th width="30%">文件说明: </th>');
  231. sb.append('<td>'+attach.note+'</td></tr>');
  232. sb.append('<tr><th width="30%">文件大小: </th>');
  233. sb.append('<td>'+attach.totalBytes+'</td></tr>');
  234. sb.append("</table><br>");
  235. html.push('<div class="attach-info">');
  236. html.push(sb.toString());
  237. }else{
  238. html.push('<div class="attach-info-null">');
  239. html.push('附件不存在!');
  240. }
  241. html.push('</div>');
  242. return html.join('');
  243. }
  244. })(jQuery);
  245. $(function(){
  246. $('.attach').each(function(){
  247. $(this).attach();
  248. });
  249. });