Ext.define('Ext.ux.form.field.ImgField', {
extend: 'Ext.form.FieldContainer',
alias: 'widget.imgfield',
layout: "hbox",
defaults: {
hideLabel: true
},
isFormField: true,
defaultBindProperty: 'value',
cls: 'remoteimg-field',
initComponent: function () {
var me = this;
Ext.apply(me, {
items: [{
xtype: 'hidden',
name: 'imgPath'
}, {
xtype: 'image',
height: 170,
width: 135,
hidden: true,
src: '',
style: {
'background-color': '#e6dede'
}
}, {
xtype: 'filefield',
name: 'file',
cls: 'upload-bth',
height: 170,
width: 135,
buttonText: '上传头像',
buttonOnly: true,
hideLabel: true,
// hidden: true,
buttonConfig: {
cls: 'x-filefield-button'
},
listeners: {
change: function (field) {
if (!!field.value) {
me.upload(field);
}
}
}
}, {
xtype: 'component',
cls: 'tool-bar',
hidden: true,
html: '
',
listeners: {
boxready: function(component) {
component.el.dom.onclick = function() {
if(event.target.classList.contains('enlarge')) {
me.enlargeImg();
}else if(event.target.classList.contains('delete')) {
me.deleteImg();
}
};
}
}
}]
});
me.callParent(arguments);
},
listeners: {
boxready: function(container, width, height, e) {
container.el.dom.onmouseenter = function() {
if(container.items.items[1].isVisible()) {
container.items.items[3].setHidden(false);
}
};
container.el.dom.onmouseleave = function() {
if(container.items.items[1].isVisible()) {
container.items.items[3].setHidden(true);
}
}
}
},
setValue: function(v) {
var me = this,
items = me.items.items,
imgPath = items[0],
img = items[1],
fileField = items[2];
if(!!v) {
imgPath.setValue(v);
img.setSrc(v);
img.setHidden(false);
fileField.setHidden(true);
}
me.publishState('value', v);
},
getValue: function() {
return this.items.items[0].value;
},
getValueField: function () {
return this.items.items[0];
},
isValid: function () {
return this.getValueField().isValid();
},
isDirty: function () {
return this.getValueField().isDirty();
},
setReadOnly: function (val) {
var me = this,
items = me.items.items,
imgPath = items[0],
fileField = items[2];
imgPath.setReadOnly(val);
fileField.button.setDisabled(val);
},
resetOriginalValue: function() {
this.getValueField().resetOriginalValue();
},
/**
* 上传附件
*/
upload: function (field) {
var me = this;
var fd = new FormData();
fd.append('file', field.fileInputEl.dom.files[0]);
fd.append('folderId', 0);
me.setLoading(true);
Ext.Ajax.request({
// url: 'http://10.1.80.101:9520/api/file/upload', //这里是填写需要跨域访问的URL
url: '/api/file/upload',//这里是填写需要跨域访问的URL
cors: true,
useDefaultXhrHeader: false,
method: 'post',
rawData: fd,
headers: {
// 'Access-Control-Allow-Origin': '*',
// 'Authorization': uas.util.State.get('session').token,
//"Content-Type": 'multipart/form-data' //文件上传的格式,
"Content-Type":null
},
success: function (response, opts) {
me.setLoading(false);
var res = Ext.decode(response.responseText);
if (res.success) {
var data = res.data,
accessPath = Ext.manifest.server.nodeServer.basePath +
'/file/download?filename='+data.name+'&path='+data.path+'&size='+data.size;
me.setValue(accessPath);
} else {
console.error('failure', res);
}
},
failure: function (response, opts) {
me.setLoading(false);
console.error('failure', res);
}
});
},
enlargeImg: function() {
var me = this;
var win = Ext.getCmp('enlarge-win');
if(!win) {
win = Ext.create('Ext.window.Window', {
width: 350,
height: 400,
layout: 'fit',
items: [{
xtype: 'image',
src: me.getValue()
}]
});
}
win.show();
},
deleteImg: function() {
var me = this,
items = me.items.items,
imgPath = items[0],
img = items[1],
fileField = items[2];
console.log("delete");
// Ext.showConfirm('确认删除', '是否确认删除该头像?')
// .then(function(yes) {
// if(yes == 'yes') {
// imgPath.setValue(null);
// img.setSrc(null);
// fileField.reset();
// fileField.setHidden(false);
// img.setHidden(true);
// me.publishState('value', null);
// }
// });
}
});