PictureShowPlugin.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606
  1. /**
  2. * 图片展示插件,用于自定义表单。
  3. *
  4. * PictureShowPlugin.init();
  5. * 加载控件。
  6. * 注意图片控件一共由四部分组成大图 + 小图片集合(包括上、下张功能) + 打开图片原图的隐藏DIV + 上传功能(控件可以编辑和必填时才有)
  7. * 图片控件 每加载(上传或者点击小图片)一次就产生一个ZOOM容器(用于做扩大功能的),此时必需要在每次加载前把控件自己对应的前ZOOM容器删除,再加载产生一个新的(为了保持一致才产生新的)
  8. * 我们可以通过序号(图片控件和容器的控件要保持一致)对两者进行管理
  9. *
  10. */
  11. PictureShowPlugin={
  12. //图片信息对象数据
  13. fileObjs:null,
  14. //图片信息对象数据
  15. pictureShowObjs:null,
  16. //可以展示控件下面多少个小图片
  17. showNum:null,
  18. //可以展示控件上面大图片的宽
  19. pictureWidth:null,
  20. //可以展示控件上面大图片的高
  21. pictureHeight:null,
  22. //是否初始化tab中的图片控件产生的ZOOM容器的隐藏问题。 在FormUtil用到
  23. isTabItemZoom:true,
  24. //是否序号化容器
  25. isZoomNum:true,
  26. //最近修改的容器序号
  27. lastZoomNum:null,
  28. //是什么浏览器 (小写)
  29. browserName:null,
  30. //最近点击过的图片控件对象名称
  31. lastPictureShowName:null,
  32. //初始化
  33. init:function(){
  34. this.pictureShowObjs = new Array();
  35. this.getBrowserName(); //初始化浏览器名称
  36. this.lastZoomNum=null,
  37. this.showNum = 5; //可以展示控件下面多少个小图片 默认
  38. this.pictureWidth = 320; //可以展示控件 上面大图片的宽 默认
  39. this.pictureHeight = (this.pictureWidth*3)/4; //可以展示控件上面大图片的高 默认 4:3
  40. this.fileObjs=$("input[controltype='pictureShow']");
  41. $.ligerDialog.waitting('正在加载图片控件,请稍候...');
  42. for ( var i = 0; i < this.fileObjs.length; i++) {
  43. var fileObj = this.fileObjs.get(i);
  44. fileObj.setAttribute("myNum",i); //记录序号 一定要设置,后面的处理会用到
  45. var name=fileObj.getAttribute("name");
  46. var jsonData = PictureShowPlugin.getData(name); //获取隐藏域的JSON数据
  47. //整个容器DIV 容器样式修改 parseInt("123") = 123
  48. var divId="div_" + name.replaceAll(":","_");
  49. var div_rq = $("#" + divId);
  50. //容器 宽度处理
  51. var widthStr = div_rq.css("width");
  52. if(typeof(widthStr)==undefined||widthStr==null||widthStr==""){
  53. widthStr ="0px";
  54. }
  55. var dwidth = parseInt(widthStr.toLowerCase().replaceAll("px",""));
  56. var lwidth = dwidth; //大图片宽度
  57. if(dwidth < this.pictureWidth){
  58. lwidth = this.pictureWidth;
  59. }
  60. var swidth = (lwidth - 60 - this.showNum * 12 ) / this.showNum ; // (lwidth-40 -this.showNum * 4 )/this.showNum结果是小图片的宽度,其过程 为减去两边按钮 20 + 10 + 20 +10 ,再减去 小图片之间的空格 为 10 * this.showNum 个 ,然后再除以this.showNum后得出每个小图片的宽度
  61. dwidth = lwidth + 20; //大图片宽度 +20 误差
  62. div_rq.css("width", dwidth + "px"); //容器宽度
  63. lwidth = dwidth - 4 ;
  64. //容器 高度处理
  65. var heightStr = div_rq.css("height");
  66. if(typeof(heightStr)==undefined||heightStr==null||heightStr==""){
  67. heightStr ="0px";
  68. }
  69. var dheight = parseInt(heightStr.toLowerCase().replaceAll("px",""));
  70. var lheight = dheight; //大图片的高度
  71. if(dheight<this.pictureHeight){
  72. lheight = this.pictureHeight;
  73. }
  74. var sheight = swidth * (lheight/lwidth); //按照 大图片比例得出 小图片的比例 和高度
  75. dheight = lheight + 30 + sheight; // 大图片高 + 中间两小区域的间隔 + 小图片的高度 = 容器高度
  76. dheight = dheight + 20; //最终容器高度(加个误差)
  77. div_rq.css("height",dheight + "px");
  78. //图片DIV
  79. var pictureId="div_" + name.replaceAll(":","_") +"_container";
  80. //加载控件。
  81. var pictureObj= new PictureShowControl();
  82. pictureObj.initPicture(name,pictureId,{jsonData:jsonData,pictureWidth:lwidth,pictureHeight:lheight,swidth:swidth,sheight:sheight,showNum:this.showNum,myNum:i,sortType:"asc",browserName:this.browserName});
  83. this.pictureShowObjs.push(pictureObj);
  84. this.lastPictureShowName = name;
  85. }
  86. //js键盘事件监听键盘的删除按键:由最近激活的图片控件做相应的操作
  87. if(this.pictureShowObjs.length>0){
  88. this.deleteOnKeyUp();
  89. }
  90. $.ligerDialog.closeWaitting();
  91. },
  92. //如果有图片展示插件。则保存后将返回的附件id放到隐藏域。
  93. upLoadPictureFile:function(t){
  94. var inputObj = $(t); //点击上传的按钮
  95. var fieldName = inputObj.attr("field");
  96. var fieldObj = $("input[name='"+fieldName+"']"); //JSON存放的隐藏对象,用于提交时保存到数据库中
  97. var myNum = fieldObj.attr("myNum");
  98. var myObj = this.pictureShowObjs[myNum]; //实例化( new PictureShowControl() )时属于自己的对象(通过序号获取)
  99. var jsonStr = fieldObj.val();
  100. var jsonData = null;
  101. //是否序号化ZOOM容器 (注意:要放到上传再处理这个问题,否则失效)
  102. /*if(this.isZoomNum){ //第一次做上传修改时要ZOOM窗口序号化
  103. this.initZoomContainer();
  104. this.isZoomNum = false;
  105. }else{
  106. if(this.lastZoomNum!=null){ //不为空时,有最近修改过的情况
  107. this.setZoomContainer();
  108. }
  109. } */
  110. //以下是用模态窗口的方式打开
  111. pictureShowUploadDialog({uploadType:"pictureShow",fileFormates:"*.jpg;*.jpeg;*.bmp;*.png;*.gif;*.tiff;*.pcx;*.fpx;*.svg;*.psd",callback:function (fileIds,fileNames,filePaths,extPaths){
  112. //没有返回上传的图片相关信息时禁止执行
  113. if(typeof(fileIds)==undefined || fileIds==""){ //有上传图片时才执行下去
  114. return false;
  115. }
  116. $.ligerDialog.waitting('正在渲染图片控件,请稍候...');
  117. //判断之前的JSON数据
  118. if(typeof(jsonStr)==undefined||jsonStr==null||jsonStr==""){ //没有数据时,制造一个空壳数据
  119. jsonData = {
  120. jsonArry:new Array(),
  121. creator:"宏天软件",
  122. createTime:new Date()
  123. };
  124. }else{
  125. jsonData = eval('(' + jsonStr + ')');
  126. }
  127. var aryFileId=fileIds.split(",");
  128. var aryName=fileNames.split(",");
  129. jsonData = PictureShowPlugin.setData(fieldName,aryFileId,aryName,jsonData); //图片展示成功后把JSON数据放入到保存的隐藏域 并返回设置的JSON值
  130. // jsonData = PictureShowPlugin.getData(fieldName); //获取隐藏域的JSON数据 设置时返回有值不用再拿
  131. var pictureId="div_" + fieldName.replaceAll(":","_") +"_container";
  132. myObj.initPicture(fieldName,pictureId,{jsonData:jsonData,pictureWidth:myObj.config.pictureWidth,pictureHeight:myObj.config.pictureHeight,swidth:myObj.swidth,sheight:myObj.sheight,showNum:myObj.config.showNum,myNum:myNum,sortType:"desc",browserName:PictureShowPlugin.browserName});
  133. PictureShowPlugin.lastZoomNum = myNum; //因为ZOOM 和 图片对象的序号是一致的 最近修改的ZOOM容器
  134. //下面是防止控件偶尔出现渲染过慢时导致其它的 图片控件出现小问题,所以在该图片控件上传后其它图片都要激活一次(补救)
  135. for ( var i = 0; i < PictureShowPlugin.pictureShowObjs.length; i++) {
  136. if(i==myNum){
  137. var obj = PictureShowPlugin.pictureShowObjs[i];
  138. $("a.gallery_active",$("#div_" + obj.newName + "_allImg")).each(function(){
  139. $(this).trigger("click");
  140. });
  141. break;
  142. }
  143. }
  144. $.ligerDialog.closeWaitting();
  145. }});
  146. this.lastPictureShowName = fieldName; //最新有激活过的控件标志
  147. },
  148. /**
  149. * PictureShow图片展示控件的小图片的删除功能事件- 键盘监听DELETE 和 DEL
  150. */
  151. deleteOnKeyUp:function(){
  152. document.onkeyup=function(event){
  153. var e = event || window.event || arguments.callee.caller.arguments[0];
  154. if(e && (e.keyCode==46||e.keyCode==110) ){ // 按 Delete keycode 46 = Delete 或者小键盘 Del = 110
  155. //要做的事情
  156. var lastPictureShowName = PictureShowPlugin.lastPictureShowName;
  157. if(typeof(lastPictureShowName)!=undefined&&lastPictureShowName!=null){
  158. $("a[field='"+lastPictureShowName+"']").each(function(index){
  159. var aObj = $(this);
  160. if(aObj.hasClass("del")){
  161. PictureShowPlugin.deletePictureFile(this);
  162. return false;
  163. }
  164. });
  165. }
  166. }
  167. }
  168. },
  169. /**
  170. * PictureShow图片展示控件的图片的删除功能事件
  171. */
  172. deletePictureFile:function(t){
  173. var delObj = $(t);
  174. var fieldName = delObj.attr("field");
  175. var fieldObj = $("input[name='"+fieldName+"']"); //JSON存放的隐藏对象,用于提交时保存到数据库中
  176. var myNum = fieldObj.attr("myNum");
  177. var myObj = this.pictureShowObjs[myNum]; //实例化( new PictureShowControl() )时属于自己的对象(通过序号获取)
  178. var newName = myObj.newName;
  179. var myImg = 'my_'+ newName +'_images'; //大图片ID
  180. var imgObj = $("#"+ myImg);
  181. var pictureId="div_" + fieldName.replaceAll(":","_") +"_container";
  182. //处理样式
  183. var arrys = $("a",$("#div_"+newName+"_allImg")); //本容器所有小图片集合
  184. var len = arrys.length;
  185. var delId = "";
  186. var delTitle = "";
  187. var delIndex = 0;
  188. if(len>1){
  189. arrys.each(function(index){
  190. var aObj = $(this);
  191. if(aObj.hasClass("gallery_active")){
  192. delIndex = index;
  193. if( index<len-1 ){
  194. arrys.each(function(num){
  195. if(num==index+1){
  196. PictureShowPlugin.onClikeImage(this,myNum);
  197. }
  198. });
  199. }else{
  200. arrys.each(function(num){
  201. if(num==len-2){
  202. PictureShowPlugin.onClikeImage(this,myNum);;
  203. }
  204. });
  205. }
  206. delId = aObj.attr("id");
  207. delTitle = aObj.attr("title");
  208. if(typeof(delId)!=undefined&&delId!=null&&delId!=""){
  209. aObj.remove();
  210. }
  211. return false;
  212. }
  213. });
  214. //删除JSON中的数据,并重新排序
  215. var jsonData = this.getData(fieldName);
  216. var jsonArry = jsonData.jsonArry;
  217. if(typeof(jsonArry)!=undefined&&jsonArry!=null&&jsonArry.length>0){
  218. var arry = new Array();
  219. for ( var i = 0; i < jsonArry.length; i++) {
  220. var obj = jsonArry[i];
  221. if(delId!=obj.id){ //排除要删除的图片ID
  222. arry.push(obj)
  223. }
  224. }
  225. jsonData.jsonArry = arry;
  226. if(arry.length>0){
  227. arrys = $("a",$("#div_"+newName+"_allImg")); //重新获取 本容器所有小图片集合
  228. if(arry.length>myObj.config.showNum){
  229. //重新排序显示:后面的图片的补上显示
  230. if( myObj.globalNum<=delIndex && myObj.globalNum+myObj.config.showNum<len){ //后面有可以补上的图片
  231. //myObj.globalNum保持不变
  232. if(myObj.globalNum<0){
  233. myObj.globalNum = 0;
  234. }
  235. }else{
  236. if(myObj.globalNum>0){ //删除的小图上原来是的,后面没有补上的,就向前借1
  237. myObj.globalNum = myObj.globalNum-1; //向前借1
  238. }
  239. }
  240. //在显示图片或者显示图片后面的隐藏图片 后面补上 globalNum保持不变
  241. //排序
  242. arrys.each(function(index){
  243. var aobj = $(this);
  244. if( myObj.globalNum<=index && index< myObj.globalNum + myObj.config.showNum){
  245. aobj.show();
  246. }else{
  247. aobj.hide();
  248. }
  249. });
  250. //处理上、下一张按钮样式
  251. if(myObj.globalNum + myObj.config.showNum >= arry.length){
  252. $("#a_"+newName+"_next").attr("class","pictureShow_n_next");
  253. $("#a_"+newName+"_prev").attr("class","pictureShow_prev");
  254. }else if(myObj.globalNum<=0){
  255. $("#a_"+newName+"_next").attr("class","pictureShow_next");
  256. $("#a_"+newName+"_prev").attr("class","pictureShow_n_prev");
  257. }else{
  258. $("#a_"+newName+"_next").attr("class","pictureShow_next");
  259. $("#a_"+newName+"_prev").attr("class","pictureShow_prev");
  260. }
  261. }else{ //不需要重新排序
  262. myObj.globalNum=0;
  263. arrys.each(function(index){
  264. $(this).show();
  265. });
  266. $("#a_"+newName+"_prev").attr("class","pictureShow_n_prev");
  267. $("#a_"+newName+"_next").attr("class","pictureShow_n_next");
  268. }
  269. //重新初始化大图片的点击事件
  270. myObj.initImageClick(imgObj,false); //首先移除之前的点击事件
  271. myObj.initImageClick(imgObj,true); //再建立新的点击事件
  272. //重新给值
  273. var valueStr = JSON2.stringify(jsonData).replace(/\"/g,"'");
  274. fieldObj.val(valueStr);
  275. }else{
  276. fieldObj.val("");
  277. myObj.initPicture(fieldName,pictureId,{jsonData:jsonData,pictureWidth:myObj.config.pictureWidth,pictureHeight:myObj.config.pictureHeight,swidth:myObj.swidth,sheight:myObj.sheight,showNum:myObj.config.showNum,myNum:myNum,sortType:"asc",browserName:PictureShowPlugin.browserName});
  278. }
  279. }
  280. }else{
  281. arrys.each(function(index){
  282. var aObj = $(this);
  283. delId = aObj.attr("id");
  284. delTitle = aObj.attr("title");
  285. if(typeof(delId)!=undefined&&delId!=null&&delId!=""){
  286. aObj.remove();
  287. return false;
  288. }
  289. });
  290. fieldObj.val("");
  291. var data = this.getData(fieldName);
  292. myObj.initPicture(fieldName,pictureId,{jsonData:data,pictureWidth:myObj.config.pictureWidth,pictureHeight:myObj.config.pictureHeight,swidth:myObj.swidth,sheight:myObj.sheight,showNum:myObj.config.showNum,myNum:myNum,sortType:"asc",browserName:PictureShowPlugin.browserName});
  293. }
  294. //删除数据库的数据
  295. if(typeof(delId)!=undefined&&delId!=null&&delId!=""){
  296. var path = __ctx +'/platform/system/sysFile/del.ht';
  297. $.post(path,{fileId:delId},function(){});
  298. }
  299. this.lastPictureShowName = fieldName; //最新有激活过的控件标志
  300. },
  301. //如果有图片展示插件。上传图片后将返回的附件id和名称组成ITML写到页面上来展示图片。
  302. setHtml:function(me,myObj,newName){
  303. var url = me.attr("data-image"),
  304. lurl = me.attr("data-zoom-image"),
  305. id = me.attr("id");
  306. title = me.attr("title");
  307. var midImg = ImageQtip.getImage(url,{id:"my_"+newName+"_images",title:title,zoomUrl:lurl,maxWidth:myObj.config.pictureWidth,maxHeight:myObj.config.pictureHeight});
  308. $("a.gallery_active",$("#div_" + myObj.newName + "_allImg")).removeClass("gallery_active");
  309. me.addClass("gallery_active");
  310. $("div.cnt_div",myObj.controlObj).empty().append(midImg); //重新生成一个IMG
  311. //打开原图片设置
  312. var url=__ctx + '/platform/system/sysFile/pictureShow.ht?id='+id+'&type=large';
  313. url = url +'&title='+encodeURIComponent(title);
  314. var html = ' <a id="grouped_'+newName+'_elements" title="'+title+'" href="'+url+'" ></a> ';
  315. $('#hidden_'+newName+'_ImageDiv').html(html);
  316. },
  317. //如果有图片展示插件。上传图片后设置好图片。
  318. resetEvent:function(myObj,newName){
  319. var myImg = 'my_'+ newName +'_images'; //大图片ID
  320. var div_allImg = "div_" + newName + "_allImg"; //所有小图片集合DIV
  321. var imgObj = $('#'+ myImg);
  322. //初始化放大图片功能 (myObj 为图片对象 ,div_allImg为小图片集合的ID)
  323. // myObj.initMyImage(imgObj,div_allImg);
  324. //重新初始化大图片的点击事件
  325. myObj.initImageClick(imgObj,false); //首先移除之前的点击事件
  326. myObj.initImageClick(imgObj,true); //再建立新的点击事件
  327. //生成了新的ZOMM后序号一定要修改最近修改的容器序号
  328. this.lastZoomNum = myObj.config.myNum;
  329. },
  330. //如果有图片展示插件。上传图片后将返回的附件id和名称放到隐藏域。
  331. /** jsonData 为图片组的相关信息 JSON 格式如下:
  332. * {
  333. * "jsonArry":"[{'id':'10000003990001','name':'QQ图片20130704170006.jpg'},{'id':'10000003990000','name':'QQ图片20130704170006.jpg'}]",
  334. * "creator":"李四",
  335. * "createTime":"2013-10-23"
  336. * }
  337. * */
  338. setData:function(fieldName,aryFileId,aryName,jsonData){
  339. var fieldObj = $("input[name='"+fieldName+"']");
  340. for(var i=0;i<aryFileId.length;i++){
  341. var jsonObj = {
  342. id:aryFileId[i],
  343. name:aryName[i]
  344. };
  345. jsonData.jsonArry.push(jsonObj);
  346. }
  347. jsonData.creator = "宏天";
  348. jsonData.createTime = new Date();
  349. var valueStr = JSON2.stringify(jsonData).replace(/\"/g,"'");
  350. fieldObj.val(valueStr);
  351. return jsonData;
  352. },
  353. //获取JSON值。
  354. /** jsonData 为图片组的相关信息 JSON 格式如下:
  355. * {
  356. * "jsonArry":"[{'id':'10000003990001','name':'QQ图片20130704170006.jpg'},{'id':'10000003990000','name':'QQ图片20130704170006.jpg'}]",
  357. * "creator":"李四",
  358. * "createTime":"2013-10-23"
  359. * }
  360. * */
  361. getData:function(fieldName){
  362. var fieldObj = $("input[name='"+fieldName+"']");
  363. var jsonStr = fieldObj.val();
  364. var jsonData = null;
  365. if(typeof(jsonStr)==undefined||jsonStr==null||jsonStr==""){ //没有数据时,制造一个空壳数据
  366. jsonData = {
  367. jsonArry:new Array(),
  368. creator:"宏天",
  369. createTime:new Date()
  370. } ;
  371. // var valueStr = JSON2.stringify(jsonData).replace(/\"/g,"'");
  372. }else{
  373. jsonData = eval('(' + jsonStr + ')');
  374. }
  375. return jsonData;
  376. },
  377. /**
  378. * 处理插件上在火有多个zoomContainer的问题 (加上序号方便管理,只需要一次初始化序号)
  379. */
  380. initZoomContainer:function(){
  381. $('div.zoomContainer').each(function(index){
  382. $(this).attr("zoomContainerNum",index); //按照顺序设置Zoom插件渲染容器 和 图片控件对象的myNum是序号是一样的,都是按页面中的顺序设置
  383. });
  384. },
  385. /**
  386. * 设置最后一个zoomContainer是最近修改容器序号,所以把容器设置成自己的序号,用于 处理插件上在火狐上的问题(有多余的zoomContainer的对象 )
  387. */
  388. setZoomContainer:function(){
  389. var arrays = $('div.zoomContainer');
  390. if(arrays.length>0){
  391. arrays.get(arrays.length-1).setAttribute("zoomContainerNum",this.lastZoomNum); //最后一个容器器为最近修改的
  392. }
  393. },
  394. /**
  395. * PictureShow图片展示控件的小图片的触发事件
  396. */
  397. onClikeImage:function(t,myNum){
  398. var me = $(t);
  399. /// if(me.hasClass("gallery_active"))return;
  400. var myObj = this.pictureShowObjs[myNum],
  401. newName = myObj.newName;
  402. // if(this.lastZoomNum!=null){ //不为空时,有最近修改过的情况
  403. // this.setZoomContainer(); //把原来最近修改上传图片后没有设置序号的重新设置
  404. // }
  405. // myObj.cleanMyZoomContainer(); //清空之前的ZOOM 重新生成一个ZOOM
  406. this.setHtml(me, myObj, newName); //重新设置HTML
  407. this.resetEvent(myObj, newName); //重新设置图片事件
  408. this.lastPictureShowName = myObj.fileName; //最新有激活过的控件标志
  409. },
  410. /**
  411. * 设置浏览器名称
  412. */
  413. getBrowserName:function(){
  414. var ua=navigator.userAgent.toLowerCase();
  415. if(ua.indexOf("msie")>=0){
  416. type="MSIE";
  417. }else if(ua.indexOf("firefox")>=0){
  418. type="Firefox";
  419. }else if(ua.indexOf("chrome")>=0){
  420. type="Chrome";
  421. }else if(ua.indexOf("opera")>=0){
  422. type="Opera";
  423. }else if (ua.indexOf("netscape")>=0){
  424. type="Netscape";
  425. }else{
  426. type="other";
  427. }
  428. this.browserName = type;
  429. return type;
  430. },
  431. /**
  432. * PictureShow图片展示控件的上、下张小图片的触发事件
  433. */
  434. changeImageNum:function(num,type){
  435. var myObj = this.pictureShowObjs[num];
  436. var newName = myObj.newName;
  437. var arrys = $("a",$("#div_"+newName+"_allImg"));
  438. var aLength = arrys.length;
  439. var showNum = myObj.config.showNum;
  440. var globalNum = myObj.globalNum;
  441. if(aLength>showNum){
  442. if(type=='next'){
  443. if(globalNum<0){
  444. globalNum = 0;
  445. }else if(globalNum+showNum>=aLength){
  446. // alert("已经是最后一张了!");
  447. return false;
  448. }
  449. arrys.each(function(index){
  450. var obj = $(this);
  451. if(index==globalNum){
  452. obj.hide();
  453. }else if(index==globalNum+showNum){
  454. obj.show();
  455. }
  456. });
  457. globalNum = globalNum + 1;
  458. //处理上、下一张按钮样式
  459. if(globalNum+showNum>=aLength){
  460. $("#a_"+newName+"_next").attr("class","pictureShow_n_next");
  461. }else{
  462. $("#a_"+newName+"_next").attr("class","pictureShow_next");
  463. }
  464. $("#a_"+newName+"_prev").attr("class","pictureShow_prev");
  465. }else{
  466. if(globalNum<0){
  467. globalNum = 0;
  468. }else if(globalNum+showNum<=showNum){
  469. // alert("已经是第一张了!");
  470. return false;
  471. }
  472. globalNum = globalNum - 1;
  473. arrys.each(function(index){
  474. var obj = $(this);
  475. if(index==globalNum+showNum){
  476. obj.hide();
  477. }else if(index==globalNum){
  478. obj.show();
  479. }
  480. });
  481. //处理上、下一张按钮样式
  482. if(globalNum+showNum<=showNum){
  483. $("#a_"+newName+"_prev").attr("class","pictureShow_n_prev");
  484. }else{
  485. $("#a_"+newName+"_prev").attr("class","pictureShow_prev");
  486. }
  487. $("#a_"+newName+"_next").attr("class","pictureShow_next");
  488. }
  489. PictureShowPlugin.pictureShowObjs[num].globalNum = globalNum;
  490. }else{
  491. //处理两个上、下张按键
  492. $("#a_"+newName+"_prev").attr("class","pictureShow_n_prev");
  493. $("#a_"+newName+"_next").attr("class","pictureShow_n_next");
  494. }
  495. this.lastPictureShowName = myObj.fileName; //最新有激活过的控件标志
  496. }
  497. };
  498. /**
  499. * 直接文件上传文本框。
  500. * 使用方法。
  501. * UploadDialog({callback:function(json){
  502. * for(var i=0;i<json.length;i++){
  503. * var obj=json[i];
  504. * alert(obj.fileId +"," + obj.fileName);
  505. * }
  506. * }}) ;
  507. * @param conf
  508. */
  509. function pictureShowUploadDialog(conf) {
  510. if(!conf) conf={};
  511. var url=__ctx + "/platform/system/sysFile/uploadDialog.ht";
  512. var winArgs="dialogWidth:450px;dialogHeight:300px;help:0;status:0;scroll:1;center:1";
  513. url=url.getNewUrl();
  514. /*var rtn=window.showModalDialog(url,conf,winArgs);
  515. if(rtn!=undefined){
  516. if(conf.callback){
  517. var fileIds = new Array();
  518. var fileNames = new Array();
  519. var filePaths = new Array();
  520. var extPath = new Array();
  521. for(var i=0;i<rtn.length;i++){
  522. var fileObj=rtn[i];
  523. fileIds.push(fileObj.fileId);
  524. fileNames.push(fileObj.fileName);
  525. var ext=$.getFileExtName(fileObj.fileName);
  526. // filePaths.push("/platform/system/sysFile/file_id" +fileObj.fileId +".ht");
  527. extPath.push(ext);
  528. }
  529. conf.callback.call(this,fileIds.join(','),fileNames.join(','),filePaths.join(','),extPath.join(','));
  530. }*/
  531. /*KILLDIALOG*/
  532. var that = this;
  533. DialogUtil.open({
  534. height:300,
  535. width: 450,
  536. title : '文件上传',
  537. url: url,
  538. isResize: true,
  539. //自定义参数
  540. conf: conf,
  541. sucCall:function(rtn){
  542. if(conf.callback){
  543. var fileIds = new Array();
  544. var fileNames = new Array();
  545. var filePaths = new Array();
  546. var extPath = new Array();
  547. for(var i=0;i<rtn.length;i++){
  548. var fileObj=rtn[i];
  549. fileIds.push(fileObj.fileId);
  550. fileNames.push(fileObj.fileName);
  551. var ext=$.getFileExtName(fileObj.fileName);
  552. extPath.push(ext);
  553. }
  554. conf.callback.call(that,fileIds.join(','),fileNames.join(','),filePaths.join(','),extPath.join(','));
  555. }
  556. }
  557. });
  558. }