TrashField.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /**
  2. * 显示附件名称、大小;
  3. * 附件删除、下载、显示
  4. */
  5. Ext.define('erp.view.core.trigger.TrashField', {
  6. extend : 'Ext.form.field.Trigger',
  7. alias : 'widget.trashfield',
  8. trigger1Cls: 'x-form-download-trigger',
  9. trigger2Cls: 'x-form-trash-trigger',
  10. fieldStyle: 'background:#C6E2FF;color:#D9D9D9;',
  11. autoShow: true,
  12. initComponent : function() {
  13. this.callParent(arguments);
  14. },
  15. listeners : {
  16. afterrender : function() {
  17. var me = this, c = Ext.Function.bind(me.onTrigger1Click, me);
  18. Ext.EventManager.on(me.inputEl, {
  19. click : c,
  20. scope : me,
  21. buffer : 100
  22. });
  23. Ext.DomHelper.applyStyles(me.inputEl.dom, 'border:none;');
  24. //取消延时影藏trigger的写法
  25. /* // 只读时,隐藏删除trigger
  26. Ext.defer(function(){
  27. var form = me.up('form');
  28. if(me.ownerCt.readOnly) {
  29. me.getEl().down("." + me.trigger2Cls).applyStyles({visibility: 'hidden'});
  30. }
  31. }, 200);*/
  32. }
  33. },
  34. onTrigger1Click: function(e){
  35. var path = this.realpath;
  36. if(this.isImage(path)) {
  37. var menu = this.createMenu();
  38. menu.path = path;
  39. menu.showAt(e.getXY());
  40. } else {
  41. this.download();
  42. }
  43. },
  44. onTrigger2Click: function(){
  45. var me = this;
  46. warnMsg('确定删除' + me.value, function(btn){
  47. if(btn == 'yes'){
  48. var v = me.ownerCt.down('hidden').value.replace(me.filepath + ';', '');
  49. me.updateAttachField(v, '删除附件', function(){
  50. me.ownerCt.down('hidden').setValue(v);
  51. me.ownerCt.filesize -= me.filesize;
  52. me.ownerCt.setTitle('<img src="' + basePath + 'resource/images/icon/clip.png" width=20 height=20/>附件' +
  53. '(总大小:' + Ext.util.Format.fileSize(me.ownerCt.filesize) + ")");
  54. });
  55. }
  56. });
  57. },
  58. download : function() {
  59. var me = this;
  60. if (!Ext.fly('ext-attach-download')) {
  61. var frm = document.createElement('form');
  62. frm.id = 'ext-attach-download';
  63. frm.name = id;
  64. frm.className = 'x-hidden';
  65. document.body.appendChild(frm);
  66. }
  67. Ext.Ajax.request({
  68. url: basePath + 'common/downloadbyId.action',
  69. method: 'post',
  70. form: Ext.fly('ext-attach-download'),
  71. isUpload: true,
  72. params: {
  73. id: me.filepath
  74. }
  75. });
  76. },
  77. createMenu : function() {
  78. var me = this, menu = this.menu;
  79. if (!menu) {
  80. menu = this.menu = Ext.create('Ext.menu.Menu', {
  81. items : [{
  82. text : '查看',
  83. handler : function() {
  84. me.showAttach(menu.path);
  85. }
  86. }, {
  87. text : '下载',
  88. handler : function() {
  89. me.download();
  90. }
  91. }]
  92. });
  93. }
  94. return menu;
  95. },
  96. showAttach : function() {
  97. var me = this, resizer = me.resizer,
  98. imageframe = document.getElementById('ext-image-frame');
  99. var imgOwnerCt=Ext.getCmp(me.id).ownerCt.ownerCt.ownerCt;
  100. src = basePath + 'common/download.action?path=' + me.realpath.replace(/\+/g, '%2B');
  101. if (!imageframe) {
  102. var el = Ext.DomHelper.append(imgOwnerCt!=null?imgOwnerCt.id:document.body, '<img id="ext-image-frame" src="' + src +
  103. '" width="500" height="400" style="position:absolute;left:0;top:0;"/>', true);
  104. imageframe = el.dom;
  105. } else {
  106. imageframe.src = src;
  107. }
  108. if (!resizer) {
  109. resizer = this.resizer = Ext.create('Ext.resizer.Resizer', {
  110. target: 'ext-image-frame',
  111. pinned: true,
  112. width: 510,
  113. height: 410,
  114. minWidth: 100,
  115. minHeight: 80,
  116. preserveRatio: true,
  117. handles: 'all',
  118. dynamic: true
  119. });
  120. var resizerEl = resizer.getEl();
  121. resizerEl.on('dblclick', function(){
  122. resizerEl.hide(true);
  123. });
  124. }
  125. resizer.getEl().center();
  126. resizer.getEl().show(true);
  127. Ext.DomHelper.applyStyles(imageframe, 'position:absolute;z-index:100;');
  128. },
  129. isImage : function(path) {
  130. if (Ext.isEmpty(path)) {
  131. return false;
  132. }
  133. if (!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(path)) {
  134. return false;
  135. }
  136. return true;
  137. },
  138. resetField:function(bool){
  139. var me=this;
  140. if(bool)
  141. me.getEl().down("." + me.trigger2Cls).applyStyles({visibility: 'hidden'});
  142. else{
  143. me.getEl().down("." + me.trigger2Cls).applyStyles({visibility: 'visible'});
  144. }
  145. },
  146. updateAttachField: function(value, type, fn) {
  147. var form = this.ownerCt.ownerCt;
  148. if(form.keyField){
  149. var field = this.ownerCt.name,me = this, val = Ext.getCmp(form.keyField).value;
  150. if(!Ext.isEmpty(val)) {
  151. Ext.Ajax.request({
  152. url: basePath + 'common/attach/change.action',
  153. params: {
  154. caller: caller,
  155. table: form.tablename.toUpperCase().split("LEFT")[0],
  156. update: field + '=\'' + value + '\'',
  157. condition: form.keyField + '=' + val,
  158. type: type
  159. },
  160. callback: function(opt, s, r) {
  161. var res = Ext.decode(r.responseText);
  162. if(res.success) {
  163. if(fn) {
  164. fn.call();
  165. me.destroy();
  166. }
  167. } else {
  168. showError(res.exceptionInfo);
  169. }
  170. }
  171. });
  172. } else {
  173. fn && fn.call();
  174. this.destroy();
  175. }
  176. }
  177. }
  178. });