Ext.define('saas.view.sys.config.FormPanel', { extend: 'Ext.form.Panel', xtype: 'sys-config-formpanel', controller: 'sys-config-formpanel', viewModel: 'sys-config-formpanel', //字段属性 _idField: 'id', _readUrl:'/api/account/company/read/current', _saveUrl:'/api/account/company/save', requires: [ 'Ext.form.field.File' ], //基础属性 frame:true, initId: 0, layout: 'vbox', autoScroll: true, border: 1, bodyPadding: 5, fieldDefaults: { margin: '0 5 5 30', labelAlign: 'right', labelWidth: 90, width:300, blankText: '该字段不能为空' }, bbar:{ frame:true, items:['->',{ text:'保存', formBind:true, name:'save' },'->'] }, items: [{ bind:'{id}', xtype: 'hidden', name: 'id', fieldLabel: 'id', allowBlank: true, width:600 },{ bind:'{name}', xtype: 'textfield', name: 'name', fieldLabel: '公司名称', allowBlank: true, editable:false, readOnly:true, width:600 },{ bind:'{address}', xtype: 'textfield', name: 'address', fieldLabel: '公司地址', beforeLabelTextTpl : "*", allowBlank: false, width:600 },{ bind:'{tel}', xtype: 'textfield', name: 'tel', fieldLabel: '电话', beforeLabelTextTpl : "*", allowBlank: false, width:500 },{ bind:'{fax}', xtype: 'textfield', name: 'fax', fieldLabel: '传真', allowBlank: true, width:500 } // ,{ // bind:'{en_begindate}', // xtype : "datefield", // name : "en_begindate", // format:'Y-m-d H:i:s', // fieldLabel : "开账日期", // allowBlank : true, // editable:false, // hideTrigger:true, // readOnly:true, // width:500 // } // ,{ // bind:'{en_pricemethod}', // displayField : "display", // editable:false, // hideTrigger : false, // maxLength : 100.0, // width:500, // minValue : null, // queryMode : "local", // valueField : "value", // xtype : "combo", // value:'WACC', // store:{ // fields: ['display', 'value'], // data : [ // {"display":"加权平均法", "value":'WACC'}, // {"display":"先进先出法", "value":'FIFO'} // ] // }, // name : "en_pricemethod", // beforeLabelTextTpl : "*", // fieldLabel : "库存计算方式", // allowBlank : false, // } // ,{ // ignore:true, // bind:'{updateTime}', // xtype : "datefield", // name : "updateTime", // fieldLabel : "更新时间", // allowBlank : true, // hideTrigger:true, // format:'Y-m-d H:i:s', // editable:false, // readOnly:true, // width:500, // } ,{ xtype: 'form', width:600, frame: false, border: false, minHeight: 22, bodyStyle: 'padding:2px;', layout: 'vbox', items:[{ bind:'{signet}', name : "signet", allowBlank : true, hidden:true, xtype:'textfield' },{ allowBlank : true, width:150, buttonOnly:true, fieldLabel:'打印章上传', xtype: 'filefield', name:'signetFilefield', buttonText: '选择图片', createFileInput : function() { var me = this; me.fileInputEl = me.button.el.createChild({ name: me.getName(), cls: Ext.baseCSSPrefix + 'form-file-input', tag: 'input', type: 'file', size: 1, accept:"image/*" }).on('change', me.onFileChange, me); }, listeners: { afterrender:function(field,ops){ var fileEl = field.fileInputEl.dom; fileEl.setAttribute("accept","image/*"); }, change: function(field){ var form = field.ownerCt.ownerCt; var myForm = field.ownerCt; var fileEl = field.fileInputEl.dom; var fd = new FormData(); fd.append('file', fileEl.files[0]); fd.append('folderId', 0); form.setLoading(true); Ext.Ajax.request({ url: '/api/file/upload',//这里是填写需要跨域访问的URL cors: true, useDefaultXhrHeader: false, method: 'post', rawData: fd, headers: { 'Access-Control-Allow-Origin': '*', 'Authorization': saas.util.State.get('session').token, //"Content-Type": 'multipart/form-data' //文件上传的格式, "Content-Type":null }, success: function (response, opts) { form.setLoading(false); saas.util.BaseUtil.showSuccessToast('上传成功'); var res = Ext.decode(response.responseText); if(res.success){ var data = res.data; var name = data.name + " (" + Ext.util.Format.fileSize(data.size) + ")"; myForm.down('[name=signet]').setValue(data.fullPath); field.setRawValue(name); //读取图片 if(data.id){ var serverOptions = Ext.manifest.server; var img = myForm.down('[name=SignetPhoto]'); img.el.dom.src = serverOptions.basePath + '/api/file/download?path='+data.fullPath; var showSignetPhoto = form.down('[name=showSignetPhoto]'); showSignetPhoto.show(); } }else{ saas.util.BaseUtil.showErrorToast('上传失败: ' + res.message); } }, failure: function (response, opts) { form.setLoading(false); var res = Ext.decode(response.responseText); saas.util.BaseUtil.showErrorToast('上传失败: ' + res.message); } }); } } },{ xtype:'displayfield', margin:'0 0 0 150', value:'支持 JPG、JPEG、PNG、BMP 格式 , 图片小于10M ', },{ xtype: 'image', width: 100, height: 100, margin:'0 0 5 150', src:'resources/images/default/basePhoto.png', name:'SignetPhoto', },{ margin:'0 0 5 151', xtype:'container', name:'showSignetPhoto', cls:'x-container-group', hidden:true, items:[{ width: 45, height: 24, xtype:'button', text:'查看', handler:function(b){ var form = b.ownerCt.ownerCt.ownerCt; var img = form.down('[name=SignetPhoto]'); form.lookPic(img); } },{ margin:'0 0 0 10', width: 45, height: 24, xtype:'button', text:'下载', handler:function(b){ var form = b.ownerCt.ownerCt.ownerCt; var path = form.down('[name=signet]').value; form.downLoad(path); } }] }] },{ xtype: 'form', width:600, frame: false, border: false, minHeight: 22, bodyStyle: 'padding:2px;', layout: 'vbox', items:[{ bind:'{logoUrl}', name : "logoUrl", allowBlank : true, hidden:true, xtype:'textfield' },{ allowBlank : true, width:150, buttonOnly:true, fieldLabel:'Logo上传', name:'logoFilefield', xtype: 'filefield', buttonText: '选择图片', createFileInput : function() { var me = this; me.fileInputEl = me.button.el.createChild({ name: me.getName(), cls: Ext.baseCSSPrefix + 'form-file-input', tag: 'input', type: 'file', size: 1, accept:"image/*" }).on('change', me.onFileChange, me); }, listeners: { afterrender:function(field,ops){ var fileEl = field.fileInputEl.dom; fileEl.setAttribute("accept","image/*"); }, change: function(field){ var form = field.ownerCt.ownerCt; var myForm = field.ownerCt; var fileEl = field.fileInputEl.dom; var fd = new FormData(); fd.append('folderId', 0); fd.append('file', fileEl.files[0]); form.setLoading(true); Ext.Ajax.request({ url: '/api/file/upload',//这里是填写需要跨域访问的URL cors: true, useDefaultXhrHeader: false, method: 'post', rawData: fd, headers: { 'Access-Control-Allow-Origin': '*', 'Authorization': saas.util.State.get('session').token, //"Content-Type": 'multipart/form-data' //文件上传的格式, "Content-Type":null }, success: function (response, opts) { form.setLoading(false); saas.util.BaseUtil.showSuccessToast('上传成功'); var res = Ext.decode(response.responseText); if(res.success){ var data = res.data; var name = data.name + " (" + Ext.util.Format.fileSize(data.size) + ")"; myForm.down('[name=logoUrl]').setValue(data.fullPath); //读取图片 if(data.id){ var serverOptions = Ext.manifest.server; var img = myForm.down('[name=LogoPhoto]'); img.el.dom.src = serverOptions.basePath + '/api/file/download?path='+data.fullPath; var showLogoPhoto = form.down('[name=showLogoPhoto]'); showLogoPhoto.show(); } }else{ saas.util.BaseUtil.showErrorToast('上传失败: ' + res.message); } }, failure: function (response, opts) { form.setLoading(false); var res = Ext.decode(response.responseText); saas.util.BaseUtil.showErrorToast('上传失败: ' + res.message); } }); } } },{ xtype:'displayfield', margin:'0 0 0 150', value:'支持 JPG、JPEG、PNG、BMP 格式 , 图片小于10M ', },{ xtype: 'image', style:'border:1px solid #f7f7f7;', width: 100, height: 100, margin:'0 0 5 150', src:'resources/images/default/basePhoto.png', name:'LogoPhoto', },{ name:'showLogoPhoto', margin:'0 0 5 151', xtype:'container', cls:'x-container-group', hidden:true, items:[{ width: 45, height: 24, xtype:'button', text:'查看', handler:function(b){ var form = b.ownerCt.ownerCt.ownerCt; var img = form.down('[name=LogoPhoto]'); form.lookPic(img); } },{ margin:'0 0 0 10', width: 45, height: 24, xtype:'button', text:'下载', handler:function(b){ var form = b.ownerCt.ownerCt.ownerCt; var path = form.down('[name=logoUrl]').value; form.downLoad(path); } }] }] }], initComponent: function () { var me = this, viewModel = me.getViewModel(); var url = me._readUrl; saas.util.BaseUtil.request({url }) .then(function(res) { if(res.success) { var d = res.data; viewModel.setData(d); viewModel.notify(); me.load(me); } }) .catch(function(response) { console.error(response); }); me.callParent(arguments); }, refresh:function(){ this.ownerCt.setTitle('参数设置') }, load:function(form){ var serverOptions = Ext.manifest.server; //打印章 var signet = form.down('[name=signet]').value; if(signet&&signet!=''){ var img = form.down('[name=SignetPhoto]'); img.el.dom.src = serverOptions.basePath + '/api/file/download?path='+signet; var showSignetPhoto = form.down('[name=showSignetPhoto]'); showSignetPhoto.show(); } //Logo var logoUrl = form.down('[name=logoUrl]').value; if(logoUrl&&logoUrl!=''){ var img = form.down('[name=LogoPhoto]'); img.el.dom.src = serverOptions.basePath + '/api/file/download?path='+logoUrl; var showLogoPhoto = form.down('[name=showLogoPhoto]'); showLogoPhoto.show(); } //文件名称 // var viewModel = form.getViewModel(); // if(viewModel.data.fileInfoList&&viewModel.data.fileInfoList.length!=0){ // var logo = viewModel.data.fileInfoList[0].logo; // var logoName = logo.name + " (" + Ext.util.Format.fileSize(logo.size) + ")"; // var signet = viewModel.data.fileInfoList[0].signet; // var signetName = signet.name + " (" + Ext.util.Format.fileSize(signet.size) + ")"; // } }, lookPic:function(img){ var me = this, resizer = me.resizer, imageframe = document.getElementById('ext-image-frame'); var src = img.el.dom.src; if (!imageframe) { var el = Ext.DomHelper.append(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: 410, height: 310, minWidth: 100, minHeight: 80, preserveRatio: true, handles: 'all', dynamic: true, constrainTo:me.getEl() }); 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;'); }, downLoad:function(path){ var serverOptions = Ext.manifest.server; window.location.href = serverOptions.basePath + '/api/file/download?path='+path; //ajax 响应下载必须要创建一个form实例 // 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: 'http://192.168.253.31:8560/api/file/download?path='+path, // method: 'post', // form: Ext.fly('ext-attach-download'), // isUpload: true, // params: '' // }); } });