FormPanel.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. Ext.define('saas.view.sys.config.FormPanel', {
  2. extend: 'Ext.form.Panel',
  3. xtype: 'sys-config-formpanel',
  4. controller: 'sys-config-formpanel',
  5. viewModel: 'sys-config-formpanel',
  6. //字段属性
  7. _idField: 'id',
  8. _readUrl:'http://192.168.253.31:8560/api/account/company/read/current',
  9. _saveUrl:'http://192.168.253.31:8560/api/account/company/save',
  10. //基础属性
  11. frame:true,
  12. initId: 0,
  13. layout: 'vbox',
  14. autoScroll: true,
  15. border: 1,
  16. bodyPadding: 5,
  17. fieldDefaults: {
  18. margin: '0 5 5 30',
  19. labelAlign: 'right',
  20. labelWidth: 90,
  21. width:300,
  22. blankText: '该字段不能为空'
  23. },
  24. bbar:{
  25. frame:true,
  26. items:['->',{
  27. text:'保存',
  28. formBind:true,
  29. name:'save'
  30. },'->']
  31. },
  32. items: [{
  33. bind:'{id}',
  34. xtype: 'hidden',
  35. name: 'id',
  36. fieldLabel: 'id',
  37. allowBlank: true,
  38. width:600
  39. },{
  40. bind:'{name}',
  41. xtype: 'textfield',
  42. name: 'name',
  43. fieldLabel: '公司名称',
  44. allowBlank: true,
  45. editable:false,
  46. readOnly:true,
  47. width:600
  48. },{
  49. bind:'{address}',
  50. xtype: 'textfield',
  51. name: 'address',
  52. fieldLabel: '公司地址',
  53. beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
  54. allowBlank: false,
  55. width:600
  56. },{
  57. bind:'{tel}',
  58. xtype: 'textfield',
  59. name: 'tel',
  60. fieldLabel: '电话',
  61. beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
  62. allowBlank: false,
  63. width:500
  64. },{
  65. bind:'{fax}',
  66. xtype: 'textfield',
  67. name: 'fax',
  68. fieldLabel: '传真',
  69. allowBlank: true,
  70. width:500
  71. }
  72. // ,{
  73. // bind:'{en_begindate}',
  74. // xtype : "datefield",
  75. // name : "en_begindate",
  76. // format:'Y-m-d H:i:s',
  77. // fieldLabel : "开账日期",
  78. // allowBlank : true,
  79. // editable:false,
  80. // hideTrigger:true,
  81. // readOnly:true,
  82. // width:500
  83. // }
  84. // ,{
  85. // bind:'{en_pricemethod}',
  86. // displayField : "display",
  87. // editable:false,
  88. // hideTrigger : false,
  89. // maxLength : 100.0,
  90. // width:500,
  91. // minValue : null,
  92. // queryMode : "local",
  93. // valueField : "value",
  94. // xtype : "combo",
  95. // value:'WACC',
  96. // store:{
  97. // fields: ['display', 'value'],
  98. // data : [
  99. // {"display":"加权平均法", "value":'WACC'},
  100. // {"display":"先进先出法", "value":'FIFO'}
  101. // ]
  102. // },
  103. // name : "en_pricemethod",
  104. // beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
  105. // fieldLabel : "库存计算方式",
  106. // allowBlank : false,
  107. // }
  108. // ,{
  109. // ignore:true,
  110. // bind:'{updateTime}',
  111. // xtype : "datefield",
  112. // name : "updateTime",
  113. // fieldLabel : "更新时间",
  114. // allowBlank : true,
  115. // hideTrigger:true,
  116. // format:'Y-m-d H:i:s',
  117. // editable:false,
  118. // readOnly:true,
  119. // width:500,
  120. // }
  121. ,{
  122. xtype: 'form',
  123. width:600,
  124. frame: false,
  125. border: false,
  126. minHeight: 22,
  127. bodyStyle: 'padding:2px;',
  128. layout: 'hbox',
  129. items:[{
  130. bind:'{signet}',
  131. name : "signet",
  132. allowBlank : true,
  133. hidden:true,
  134. xtype:'numberfield'
  135. },{
  136. allowBlank : true,
  137. width:500,
  138. fieldLabel:'打印章上传',
  139. xtype: 'filefield',
  140. emptyText: '请选择图片',
  141. buttonText: '',
  142. buttonConfig: {
  143. iconCls: 'x-fa fa-picture-o',
  144. },
  145. createFileInput : function() {
  146. var me = this;
  147. me.fileInputEl = me.button.el.createChild({
  148. name: me.getName(),
  149. cls: Ext.baseCSSPrefix + 'form-file-input',
  150. tag: 'input',
  151. type: 'file',
  152. size: 1,
  153. accept:"image/*"
  154. }).on('change', me.onFileChange, me);
  155. },
  156. listeners: {
  157. afterrender:function(field,ops){
  158. var fileEl = field.fileInputEl.dom;
  159. fileEl.setAttribute("accept","image/*");
  160. },
  161. change: function(field){
  162. var form = field.ownerCt.ownerCt;
  163. var myForm = field.ownerCt;
  164. var fileEl = field.fileInputEl.dom;
  165. var fd = new FormData();
  166. fd.append('file', fileEl.files[0]);
  167. form.setLoading(true);
  168. Ext.Ajax.request({
  169. url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
  170. cors: true,
  171. useDefaultXhrHeader: false,
  172. method: 'post',
  173. rawData: fd,
  174. headers: {
  175. 'Access-Control-Allow-Origin': '*',
  176. 'Authorization': saas.util.State.get('session').token,
  177. //"Content-Type": 'multipart/form-data' //文件上传的格式,
  178. "Content-Type":null
  179. },
  180. success: function (response, opts) {
  181. form.setLoading(false);
  182. saas.util.BaseUtil.showToast('上传成功');
  183. var res = Ext.decode(response.responseText);
  184. if(res.success){
  185. var data = res.data;
  186. var name = data.name + " (" + Ext.util.Format.fileSize(data.size) + ")";
  187. myForm.down('[name=signet]').setValue(data.id);
  188. field.setRawValue(name);
  189. }else{
  190. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  191. }
  192. },
  193. failure: function (response, opts) {
  194. form.setLoading(false);
  195. var res = Ext.decode(response.responseText);
  196. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  197. }
  198. });
  199. }
  200. }
  201. },{
  202. hidden:true,
  203. name:'showSignetPhoto',
  204. xtype:'button',
  205. iconCls: 'x-fa fa-picture-o'
  206. }]
  207. },{
  208. xtype: 'form',
  209. width:600,
  210. frame: false,
  211. border: false,
  212. minHeight: 22,
  213. bodyStyle: 'padding:2px;',
  214. layout: 'hbox',
  215. items:[{
  216. bind:'{logoUrl}',
  217. name : "logoUrl",
  218. allowBlank : true,
  219. hidden:true,
  220. xtype:'numberfield'
  221. },{
  222. allowBlank : true,
  223. width:500,
  224. fieldLabel:'Logo上传',
  225. xtype: 'filefield',
  226. emptyText: '请选择图片',
  227. buttonText: '',
  228. buttonConfig: {
  229. iconCls: 'x-fa fa-picture-o',
  230. },
  231. createFileInput : function() {
  232. var me = this;
  233. me.fileInputEl = me.button.el.createChild({
  234. name: me.getName(),
  235. cls: Ext.baseCSSPrefix + 'form-file-input',
  236. tag: 'input',
  237. type: 'file',
  238. size: 1,
  239. accept:"image/*"
  240. }).on('change', me.onFileChange, me);
  241. },
  242. listeners: {
  243. afterrender:function(field,ops){
  244. var fileEl = field.fileInputEl.dom;
  245. fileEl.setAttribute("accept","image/*");
  246. },
  247. change: function(field){
  248. var form = field.ownerCt.ownerCt;
  249. var myForm = field.ownerCt;
  250. var fileEl = field.fileInputEl.dom;
  251. var fd = new FormData();
  252. fd.append('file', fileEl.files[0]);
  253. form.setLoading(true);
  254. Ext.Ajax.request({
  255. url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
  256. cors: true,
  257. useDefaultXhrHeader: false,
  258. method: 'post',
  259. rawData: fd,
  260. headers: {
  261. 'Access-Control-Allow-Origin': '*',
  262. 'Authorization': saas.util.State.get('session').token,
  263. //"Content-Type": 'multipart/form-data' //文件上传的格式,
  264. "Content-Type":null
  265. },
  266. success: function (response, opts) {
  267. form.setLoading(false);
  268. saas.util.BaseUtil.showToast('上传成功');
  269. var res = Ext.decode(response.responseText);
  270. if(res.success){
  271. var data = res.data;
  272. var name = data.name + " (" + Ext.util.Format.fileSize(data.size) + ")";
  273. myForm.down('[name=logoUrl]').setValue(data.id);
  274. field.setRawValue(name);
  275. }else{
  276. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  277. }
  278. },
  279. failure: function (response, opts) {
  280. form.setLoading(false);
  281. var res = Ext.decode(response.responseText);
  282. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  283. }
  284. });
  285. }
  286. }
  287. },{
  288. hidden:true,
  289. name:'showLogoPhoto',
  290. xtype:'button',
  291. iconCls: 'x-fa fa-picture-o'
  292. }]
  293. }],
  294. initComponent: function () {
  295. var me = this,
  296. viewModel = me.getViewModel();
  297. var url = me._readUrl;
  298. saas.util.BaseUtil.request({url })
  299. .then(function(res) {
  300. if(res.success) {
  301. var d = res.data;
  302. viewModel.setData(d)
  303. }
  304. })
  305. .catch(function(response) {
  306. console.error(response);
  307. });
  308. me.callParent(arguments);
  309. },
  310. refresh:function(){
  311. this.ownerCt.setTitle('参数设置')
  312. }
  313. });