FormPanel.js 11 KB

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