/**
* 显示附件名称、大小;
* 附件删除、下载、显示
*/
Ext.define('erp.view.core.trigger.TrashField', {
extend : 'Ext.form.field.Trigger',
alias : 'widget.trashfield',
trigger1Cls: 'x-form-download-trigger',
trigger2Cls: 'x-form-trash-trigger',
fieldStyle: 'background:#C6E2FF;color:#D9D9D9;',
autoShow: true,
initComponent : function() {
this.callParent(arguments);
},
listeners : {
afterrender : function() {
var me = this, c = Ext.Function.bind(me.onTrigger1Click, me);
Ext.EventManager.on(me.inputEl, {
click : c,
scope : me,
buffer : 100
});
Ext.DomHelper.applyStyles(me.inputEl.dom, 'border:none;');
//取消延时影藏trigger的写法
/* // 只读时,隐藏删除trigger
Ext.defer(function(){
var form = me.up('form');
if(me.ownerCt.readOnly) {
me.getEl().down("." + me.trigger2Cls).applyStyles({visibility: 'hidden'});
}
}, 200);*/
}
},
onTrigger1Click: function(e){
var path = this.realpath;
if(this.isImage(path)) {
var menu = this.createMenu();
menu.path = path;
menu.showAt(e.getXY());
} else {
this.download();
}
},
onTrigger2Click: function(){
var me = this;
warnMsg('确定删除' + me.value, function(btn){
if(btn == 'yes'){
var v = me.ownerCt.down('hidden').value.replace(me.filepath + ';', '');
me.updateAttachField(v, '删除附件', function(){
me.ownerCt.down('hidden').setValue(v);
me.ownerCt.filesize -= me.filesize;
me.ownerCt.setTitle('
附件' +
'(总大小:' + Ext.util.Format.fileSize(me.ownerCt.filesize) + ")");
});
}
});
},
download : function() {
var me = this;
if (!Ext.fly('ext-attach-download')) {
var frm = document.createElement('form');
frm.id = 'ext-attach-download';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url: basePath + 'common/downloadbyId.action',
method: 'post',
form: Ext.fly('ext-attach-download'),
isUpload: true,
params: {
id: me.filepath
}
});
},
createMenu : function() {
var me = this, menu = this.menu;
if (!menu) {
menu = this.menu = Ext.create('Ext.menu.Menu', {
items : [{
text : '查看',
handler : function() {
me.showAttach(menu.path);
}
}, {
text : '下载',
handler : function() {
me.download();
}
}]
});
}
return menu;
},
showAttach : function() {
var me = this, resizer = me.resizer,
imageframe = document.getElementById('ext-image-frame');
var imgOwnerCt=Ext.getCmp(me.id).ownerCt.ownerCt.ownerCt;
src = basePath + 'common/download.action?path=' + me.realpath.replace(/\+/g, '%2B');
if (!imageframe) {
var el = Ext.DomHelper.append(imgOwnerCt!=null?imgOwnerCt.id:document.body, '
', true);
imageframe = el.dom;
} else {
imageframe.src = src;
}
if (!resizer) {
resizer = this.resizer = Ext.create('Ext.resizer.Resizer', {
target: 'ext-image-frame',
pinned: true,
width: 510,
height: 410,
minWidth: 100,
minHeight: 80,
preserveRatio: true,
handles: 'all',
dynamic: true
});
var resizerEl = resizer.getEl();
resizerEl.on('dblclick', function(){
resizerEl.hide(true);
});
}
resizer.getEl().center();
resizer.getEl().show(true);
Ext.DomHelper.applyStyles(imageframe, 'position:absolute;z-index:100;');
},
isImage : function(path) {
if (Ext.isEmpty(path)) {
return false;
}
if (!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(path)) {
return false;
}
return true;
},
resetField:function(bool){
var me=this;
if(bool)
me.getEl().down("." + me.trigger2Cls).applyStyles({visibility: 'hidden'});
else{
me.getEl().down("." + me.trigger2Cls).applyStyles({visibility: 'visible'});
}
},
updateAttachField: function(value, type, fn) {
var form = this.ownerCt.ownerCt;
if(form.keyField){
var field = this.ownerCt.name,me = this, val = Ext.getCmp(form.keyField).value;
if(!Ext.isEmpty(val)) {
Ext.Ajax.request({
url: basePath + 'common/attach/change.action',
params: {
caller: caller,
table: form.tablename.toUpperCase().split("LEFT")[0],
update: field + '=\'' + value + '\'',
condition: form.keyField + '=' + val,
type: type
},
callback: function(opt, s, r) {
var res = Ext.decode(r.responseText);
if(res.success) {
if(fn) {
fn.call();
me.destroy();
}
} else {
showError(res.exceptionInfo);
}
}
});
} else {
fn && fn.call();
this.destroy();
}
}
}
});