AttachMent.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. /**
  2. * 附件管理。
  3. * @returns {AttachMent}
  4. */
  5. if (typeof AttachMent == 'undefined') {
  6. AttachMent = {};
  7. }
  8. /**
  9. * 选择非直接上传附件时判断用flash还是html
  10. */
  11. AttachMent.addFile=function(obj){
  12. AttachMent.htmlUpLoadFile(obj);
  13. }
  14. /**
  15. * 选择直接上传附件时判断用flash还是html
  16. */
  17. AttachMent.directUpLoadFile=function(obj){
  18. AttachMent.htmlUpLoadFile(obj);
  19. }
  20. /**
  21. * flash附件非直接上传
  22. */
  23. AttachMent.FlexAddFile=function(obj){
  24. var inputObj=$(obj);
  25. var fieldName=inputObj.attr("field");
  26. var parent=inputObj.parent().parent();
  27. var divName="div.attachement";
  28. var inputName="input[name='" +fieldName +"'],textarea[name='" +fieldName +"']";
  29. //获取div对象。
  30. var divObj=$(divName,parent);
  31. var inputJson=inputObj.prev();//获取到textarea对象
  32. var aryJson=AttachMent.getFileJsonArray(divObj);
  33. //文件选择器
  34. FlexUploadDialog({isSingle:false,callback:function (fileIds,fileNames,filePaths,extPaths){
  35. if(fileIds==undefined || fileIds=="") return ;
  36. var aryFileId=fileIds.split(",");
  37. var aryName=fileNames.split(",");
  38. var aryExtPath=extPaths.split(",");
  39. for(var i=0;i<aryFileId.length;i++){
  40. var name=aryName[i];
  41. AttachMent.addJson(aryFileId[i],name,aryJson);
  42. }
  43. //获取json
  44. var json=JSON2.stringify(aryJson);
  45. var html=AttachMent.getHtml(aryJson);
  46. divObj.empty();
  47. divObj.append($(html));
  48. inputJson.text(json);
  49. inputJson.val(json);
  50. CustomForm.validate();
  51. }});
  52. };
  53. /**
  54. * 直接附件上传
  55. */
  56. AttachMent.directUpLoad=function(obj){
  57. var inputObj=$(obj);
  58. var fieldName=inputObj.attr("field");
  59. var parent=inputObj.parent().parent();
  60. var divName="div.attachement";
  61. var inputName="input[name='" +fieldName +"'],textarea[name='" +fieldName +"']";
  62. //获取div对象。
  63. var divObj=$(divName,parent);
  64. var inputJson=inputObj.prev();//获取到textarea对象
  65. var aryJson=AttachMent.getFileJsonArray(divObj);
  66. //文件上传
  67. DirectUploadDialog({callback:function (attachs){
  68. if(attachs==undefined || attachs==[]) return ;
  69. for(var i=0;i<attachs.length;i++){
  70. var fileId=attachs[i].fileId;
  71. var name=attachs[i].fileName;
  72. AttachMent.addJson(fileId,name,aryJson);
  73. }
  74. //获取json
  75. var json=JSON2.stringify(aryJson);
  76. var html=AttachMent.getHtml(aryJson);
  77. divObj.empty();
  78. divObj.append($(html));
  79. inputJson.val(json);
  80. inputJson.text(json);
  81. CustomForm.validate();
  82. }});
  83. };
  84. /**
  85. * html附件上传dialog
  86. * @param conf
  87. */
  88. AttachMent.htmlUpLoadFile=function(obj){
  89. var inputObj=$(obj);
  90. var fieldName=inputObj.attr("field");
  91. var parent=inputObj.parent().parent();
  92. var divName="div.attachement";
  93. var rights="w";
  94. var inputName="input[name='" +fieldName +"'],textarea[name='" +fieldName +"']";
  95. //获取div对象。
  96. var divObj=$(divName,parent);
  97. var inputJson=inputObj.prev();//获取到textarea对象
  98. var aryJson=AttachMent.getFileJsonArray(divObj);
  99. //文件选择器
  100. HtmlUploadDialog({max:30,callback:function (attachs){
  101. if(attachs==undefined || attachs==[]) return ;
  102. for(var i=0;i<attachs.length;i++){
  103. var fileId=attachs[i].fileId;
  104. var name=attachs[i].fileName;
  105. AttachMent.addJson(fileId,name,aryJson);
  106. }
  107. var json=JSON2.stringify(aryJson);
  108. var html=AttachMent.getHtml(aryJson,rights);
  109. divObj.empty();
  110. divObj.append($(html));
  111. inputJson.val(json);
  112. inputJson.text(json);
  113. if(typeof CustomForm != "undefined"){
  114. CustomForm.validate();
  115. }
  116. }});
  117. };
  118. /**
  119. * 删除附件
  120. * @param obj 删除按钮。
  121. */
  122. AttachMent.delFile=function(obj){
  123. var inputObj=$(obj);
  124. var parent=inputObj.parent();
  125. var divObj=parent.parent();
  126. var spanObj=$("span[name='attach']",parent);
  127. var divContainer=divObj.parent();
  128. var fileId=spanObj.attr("fileId");
  129. var aryJson=AttachMent.getFileJsonArray(divObj);
  130. AttachMent.delJson(fileId,aryJson);
  131. var json=JSON2.stringify(aryJson);
  132. var inputJsonObj=$("textarea",divContainer);
  133. if(aryJson.length == 0)
  134. json = "";
  135. //设置json
  136. inputJsonObj.val(json);
  137. //删除span
  138. parent.remove();
  139. CustomForm.validate();
  140. };
  141. /**
  142. * 初始化表单的附件字段数据。
  143. */
  144. AttachMent.init=function(parent){
  145. if( $.isEmpty(parent))
  146. parent = $("div[name='div_attachment_container']");
  147. parent.each(function(){
  148. var me=$(this);
  149. var atta =$("textarea[controltype='attachment']",me);
  150. var jsonStr = atta.val();
  151. if(!$.isEmpty(jsonStr)){
  152. jsonStr = jsonStr.replaceAll("¥@@¥","\"");
  153. atta.val(jsonStr);
  154. }
  155. var divAttachment=$("div.attachement",me);
  156. //json数据为空。
  157. AttachMent.insertHtml(divAttachment,jsonStr);
  158. });
  159. };
  160. /**
  161. * 附件插入显示
  162. * @param {} div
  163. * @param {} jsonStr
  164. */
  165. AttachMent.insertHtml= function(div,jsonStr){
  166. if($.isEmpty(jsonStr)) {
  167. div.empty();
  168. return ;
  169. }
  170. var jsonObj=[];
  171. try {
  172. jsonStr = jsonStr.replaceAll("¥@@¥","\"");
  173. jsonObj = jQuery.parseJSON(jsonStr);
  174. } catch (e) {
  175. }
  176. var a = div.attr("title");
  177. var html="";
  178. if(a!="bulletinGet"){
  179. html=AttachMent.getHtml(jsonObj);
  180. }else{
  181. html=AttachMent.getBulletinHtml(jsonObj);
  182. }
  183. div.empty();
  184. div.append($(html));
  185. };
  186. /**
  187. * 获取文件的html。
  188. * @param aryJson
  189. * @returns {String}
  190. */
  191. AttachMent.getHtml=function(aryJson){
  192. var str="";
  193. var template="";
  194. var templateW="<span class='attachement-span'><span fileId='#fileId#' name='attach' file='#file#' ><a class='attachment' target='_blank' path='#path#' onclick='AttachMent.handleClickItem(this)' title='#title#'>#name#</a></span><a href='javascript:;' onclick='AttachMent.download(this);' title='下载' class='download'></a>&nbsp;<a href='javascript:;' onclick='AttachMent.delFile(this);' class='cancel'></a></span>";
  195. template=templateW;
  196. for(var i=0;i<aryJson.length;i++){
  197. var obj=aryJson[i];
  198. var id=obj.id;
  199. var name=obj.name;
  200. var path =__ctx +"/platform/system/sysFile/file_" +obj.id+ ".ht";
  201. var file=id +"," + name ;
  202. var tmp=template.replace("#file#",file).replace("#path#",path).replace("#name#", AttachMent.parseName(name)).replace("#title#",name).replace("#fileId#", id);
  203. //附件如果是图片就显示到后面
  204. str+=tmp;
  205. }
  206. return str;
  207. };
  208. /**
  209. * 获取公告文件的html。
  210. * @param aryJson
  211. * @returns {String}
  212. */
  213. AttachMent.getBulletinHtml=function(aryJson){
  214. var str="";
  215. var template="";
  216. var templateW="<span class='attachement-span'><span fileId='#fileId#' name='attach' file='#file#' ><a class='attachment' target='_blank' path='#path#' onclick='AttachMent.handleClickItem(this)' title='#title#'>#name#</a></span><a href='javascript:;' onclick='AttachMent.download(this);' title='下载' class='download'></a></span>";
  217. template=templateW;
  218. for(var i=0;i<aryJson.length;i++){
  219. var obj=aryJson[i];
  220. var id=obj.id;
  221. var name=obj.name;
  222. var path =__ctx +"/platform/system/sysFile/file_" +obj.id+ ".ht";
  223. var file=id +"," + name ;
  224. var tmp=template.replace("#file#",file).replace("#path#",path).replace("#name#", AttachMent.parseName(name)).replace("#title#",name).replace("#fileId#", id);
  225. //附件如果是图片就显示到后面
  226. str+=tmp;
  227. }
  228. return str;
  229. };
  230. AttachMent.parseName = function(name){
  231. if(name.length >10)
  232. return name.substr(0,6)+"...";
  233. return name;
  234. }
  235. /**
  236. * 添加json。
  237. * @param fileId
  238. * @param name
  239. * @param path
  240. * @param aryJson
  241. */
  242. AttachMent.addJson=function(fileId,name,aryJson){
  243. var rtn=AttachMent.isFileExist(aryJson,fileId);
  244. if(!rtn){
  245. var obj={id:fileId,name:name};
  246. aryJson.push(obj);
  247. }
  248. };
  249. /**
  250. * 删除json。
  251. * @param fileId 文件ID。
  252. * @param aryJson 文件的JSON。
  253. */
  254. AttachMent.delJson=function(fileId,aryJson){
  255. for(var i=aryJson.length-1;i>=0;i--){
  256. var obj=aryJson[i];
  257. if(obj.id==fileId){
  258. aryJson.splice(i,1);
  259. }
  260. }
  261. };
  262. /**
  263. * 判断文件是否存在。
  264. * @param aryJson
  265. * @param fileId
  266. * @returns {Boolean}
  267. */
  268. AttachMent.isFileExist=function(aryJson,fileId){
  269. for(var i=0;i<aryJson.length;i++){
  270. var obj=aryJson[i];
  271. if(obj.id==fileId){
  272. return true;
  273. }
  274. }
  275. return false;
  276. };
  277. /**
  278. * 取得文件json数组。
  279. * @param divObj
  280. * @returns {Array}
  281. */
  282. AttachMent.getFileJsonArray=function(divObj){
  283. var aryJson=[];
  284. var arySpan=$("span[name='attach']",divObj);
  285. arySpan.each(function(i){
  286. var obj=$(this);
  287. var file=obj.attr("file");
  288. var aryFile=file.split(",");
  289. var obj={id:aryFile[0],name:aryFile[1]};
  290. aryJson.push(obj);
  291. });
  292. return aryJson;
  293. };
  294. /**
  295. * 点击附件事件处理
  296. * @param divObj
  297. * @returns {Array}
  298. */
  299. AttachMent.handleClickItem = function(obj){
  300. var _this = $(obj);
  301. var span = _this.closest("span");
  302. var fileId = span.attr("fileId");
  303. var url =__ctx+"/platform/system/sysFile/getJson.ht";
  304. var sysFile;
  305. $.ajax({
  306. url:url,
  307. data:{
  308. fileId:fileId
  309. },
  310. success:function(data){
  311. if(typeof(data)=="string"){
  312. $.ligerDialog.error('系统超时请重新登录!','提示');
  313. return ;
  314. }
  315. if(data.status!=1){
  316. $.ligerDialog.error(data.msg,'提示');
  317. }else{
  318. sysFile = data.sysFile;
  319. var path = _this.attr("path");
  320. if(/(doc)|(docx)|(xls)|(xlsx)|(ppt)|(pptx)/ig.test(sysFile.ext)){
  321. if($.browser.msie){
  322. window.open(path,'_blank');
  323. }else{
  324. var h=screen.availHeight-35;
  325. var w=screen.availWidth-5;
  326. var vars="top=0,left=0,height="+h+",width="+w+",status=no,toolbar=no,menubar=no,location=no,resizable=1,scrollbars=1";
  327. var showUrl = __ctx+"/platform/form/office/get.ht?fileId=" + fileId;
  328. window.open(showUrl,"myWindow",vars);
  329. }
  330. }else{
  331. window.open(path,'_blank');
  332. }
  333. }
  334. }
  335. });
  336. };
  337. /**
  338. * 下载
  339. */
  340. AttachMent.download = function(obj){
  341. var me = $(obj);
  342. var span = me.siblings("span");
  343. if(span.length >0)
  344. var fileId = span.attr("fileId");
  345. var path =__ctx+"/platform/system/sysFile/file_"+fileId+".ht?download=true";
  346. window.open(path,'_blank');
  347. }