FormPanel.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  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: 'vbox',
  129. items:[{
  130. bind:'{signet}',
  131. name : "signet",
  132. allowBlank : true,
  133. hidden:true,
  134. xtype:'textfield'
  135. },{
  136. allowBlank : true,
  137. width:150,
  138. buttonOnly:true,
  139. fieldLabel:'打印章上传',
  140. xtype: 'filefield',
  141. name:'signetFilefield',
  142. buttonText: '选择图片',
  143. createFileInput : function() {
  144. var me = this;
  145. me.fileInputEl = me.button.el.createChild({
  146. name: me.getName(),
  147. cls: Ext.baseCSSPrefix + 'form-file-input',
  148. tag: 'input',
  149. type: 'file',
  150. size: 1,
  151. accept:"image/*"
  152. }).on('change', me.onFileChange, me);
  153. },
  154. listeners: {
  155. afterrender:function(field,ops){
  156. var fileEl = field.fileInputEl.dom;
  157. fileEl.setAttribute("accept","image/*");
  158. },
  159. change: function(field){
  160. var form = field.ownerCt.ownerCt;
  161. var myForm = field.ownerCt;
  162. var fileEl = field.fileInputEl.dom;
  163. var fd = new FormData();
  164. fd.append('file', fileEl.files[0]);
  165. form.setLoading(true);
  166. Ext.Ajax.request({
  167. url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
  168. cors: true,
  169. useDefaultXhrHeader: false,
  170. method: 'post',
  171. rawData: fd,
  172. headers: {
  173. 'Access-Control-Allow-Origin': '*',
  174. 'Authorization': saas.util.State.get('session').token,
  175. //"Content-Type": 'multipart/form-data' //文件上传的格式,
  176. "Content-Type":null
  177. },
  178. success: function (response, opts) {
  179. form.setLoading(false);
  180. saas.util.BaseUtil.showToast('上传成功');
  181. var res = Ext.decode(response.responseText);
  182. if(res.success){
  183. var data = res.data;
  184. var name = data.name + " (" + Ext.util.Format.fileSize(data.size) + ")";
  185. myForm.down('[name=signet]').setValue(data.fullPath);
  186. field.setRawValue(name);
  187. //读取图片
  188. if(data.id){
  189. var img = myForm.down('[name=SignetPhoto]');
  190. img.el.dom.src = 'http://192.168.253.31:8560/api/file/download?path='+data.fullPath;
  191. var showSignetPhoto = form.down('[name=showSignetPhoto]');
  192. showSignetPhoto.show();
  193. }
  194. }else{
  195. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  196. }
  197. },
  198. failure: function (response, opts) {
  199. form.setLoading(false);
  200. var res = Ext.decode(response.responseText);
  201. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  202. }
  203. });
  204. }
  205. }
  206. },{
  207. xtype:'displayfield',
  208. margin:'0 0 0 150',
  209. value:'支持 JPG、JPEG、PNG、BMP 格式 , 图片小于10M ',
  210. },{
  211. xtype: 'image',
  212. width: 100,
  213. height: 100,
  214. margin:'0 0 5 150',
  215. src:'resources/images/default/basePhoto.png',
  216. name:'SignetPhoto',
  217. },{
  218. margin:'0 0 5 151',
  219. xtype:'container',
  220. name:'showSignetPhoto',
  221. cls:'x-container-group',
  222. hidden:true,
  223. items:[{
  224. width: 45,
  225. height: 24,
  226. xtype:'button',
  227. text:'查看',
  228. handler:function(b){
  229. var form = b.ownerCt.ownerCt.ownerCt;
  230. var img = form.down('[name=SignetPhoto]');
  231. form.lookPic(img);
  232. }
  233. },{
  234. margin:'0 0 0 10',
  235. width: 45,
  236. height: 24,
  237. xtype:'button',
  238. text:'下载',
  239. handler:function(b){
  240. var form = b.ownerCt.ownerCt.ownerCt;
  241. var path = form.down('[name=signet]').value;
  242. form.downLoad(path);
  243. }
  244. }]
  245. }]
  246. },{
  247. xtype: 'form',
  248. width:600,
  249. frame: false,
  250. border: false,
  251. minHeight: 22,
  252. bodyStyle: 'padding:2px;',
  253. layout: 'vbox',
  254. items:[{
  255. bind:'{logoUrl}',
  256. name : "logoUrl",
  257. allowBlank : true,
  258. hidden:true,
  259. xtype:'textfield'
  260. },{
  261. allowBlank : true,
  262. width:150,
  263. buttonOnly:true,
  264. fieldLabel:'Logo上传',
  265. name:'logoFilefield',
  266. xtype: 'filefield',
  267. buttonText: '选择图片',
  268. createFileInput : function() {
  269. var me = this;
  270. me.fileInputEl = me.button.el.createChild({
  271. name: me.getName(),
  272. cls: Ext.baseCSSPrefix + 'form-file-input',
  273. tag: 'input',
  274. type: 'file',
  275. size: 1,
  276. accept:"image/*"
  277. }).on('change', me.onFileChange, me);
  278. },
  279. listeners: {
  280. afterrender:function(field,ops){
  281. var fileEl = field.fileInputEl.dom;
  282. fileEl.setAttribute("accept","image/*");
  283. },
  284. change: function(field){
  285. var form = field.ownerCt.ownerCt;
  286. var myForm = field.ownerCt;
  287. var fileEl = field.fileInputEl.dom;
  288. var fd = new FormData();
  289. fd.append('file', fileEl.files[0]);
  290. form.setLoading(true);
  291. Ext.Ajax.request({
  292. url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
  293. cors: true,
  294. useDefaultXhrHeader: false,
  295. method: 'post',
  296. rawData: fd,
  297. headers: {
  298. 'Access-Control-Allow-Origin': '*',
  299. 'Authorization': saas.util.State.get('session').token,
  300. //"Content-Type": 'multipart/form-data' //文件上传的格式,
  301. "Content-Type":null
  302. },
  303. success: function (response, opts) {
  304. form.setLoading(false);
  305. saas.util.BaseUtil.showToast('上传成功');
  306. var res = Ext.decode(response.responseText);
  307. if(res.success){
  308. var data = res.data;
  309. var name = data.name + " (" + Ext.util.Format.fileSize(data.size) + ")";
  310. myForm.down('[name=logoUrl]').setValue(data.fullPath);
  311. //读取图片
  312. if(data.id){
  313. var img = myForm.down('[name=LogoPhoto]');
  314. img.el.dom.src = 'http://192.168.253.31:8560/api/file/download?path='+data.fullPath;
  315. var showLogoPhoto = form.down('[name=showLogoPhoto]');
  316. showLogoPhoto.show();
  317. }
  318. }else{
  319. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  320. }
  321. },
  322. failure: function (response, opts) {
  323. form.setLoading(false);
  324. var res = Ext.decode(response.responseText);
  325. saas.util.BaseUtil.showToast('上传失败: ' + res.message);
  326. }
  327. });
  328. }
  329. }
  330. },{
  331. xtype:'displayfield',
  332. margin:'0 0 0 150',
  333. value:'支持 JPG、JPEG、PNG、BMP 格式 , 图片小于10M ',
  334. },{
  335. xtype: 'image',
  336. style:'border:1px solid #f7f7f7;',
  337. width: 100,
  338. height: 100,
  339. margin:'0 0 5 150',
  340. src:'resources/images/default/basePhoto.png',
  341. name:'LogoPhoto',
  342. },{
  343. name:'showLogoPhoto',
  344. margin:'0 0 5 151',
  345. xtype:'container',
  346. cls:'x-container-group',
  347. hidden:true,
  348. items:[{
  349. width: 45,
  350. height: 24,
  351. xtype:'button',
  352. text:'查看',
  353. handler:function(b){
  354. var form = b.ownerCt.ownerCt.ownerCt;
  355. var img = form.down('[name=LogoPhoto]');
  356. form.lookPic(img);
  357. }
  358. },{
  359. margin:'0 0 0 10',
  360. width: 45,
  361. height: 24,
  362. xtype:'button',
  363. text:'下载',
  364. handler:function(b){
  365. var form = b.ownerCt.ownerCt.ownerCt;
  366. var path = form.down('[name=logoUrl]').value;
  367. form.downLoad(path);
  368. }
  369. }]
  370. }]
  371. }],
  372. initComponent: function () {
  373. var me = this,
  374. viewModel = me.getViewModel();
  375. var url = me._readUrl;
  376. saas.util.BaseUtil.request({url })
  377. .then(function(res) {
  378. if(res.success) {
  379. var d = res.data;
  380. viewModel.setData(d);
  381. viewModel.notify();
  382. me.load(me);
  383. }
  384. })
  385. .catch(function(response) {
  386. console.error(response);
  387. });
  388. me.callParent(arguments);
  389. },
  390. refresh:function(){
  391. this.ownerCt.setTitle('参数设置')
  392. },
  393. load:function(form){
  394. //打印章
  395. var signet = form.down('[name=signet]').value;
  396. if(signet&&signet!=''){
  397. var img = form.down('[name=SignetPhoto]');
  398. img.el.dom.src = 'http://192.168.253.31:8560/api/file/download?path='+signet;
  399. // var name = data.name + " (" + Ext.util.Format.fileSize(data.size) + ")";
  400. // myForm.down('[name=signet]').setValue(data.fullPath);
  401. // field.setRawValue(name);
  402. var showSignetPhoto = form.down('[name=showSignetPhoto]');
  403. showSignetPhoto.show();
  404. }
  405. //Logo
  406. var logoUrl = form.down('[name=logoUrl]').value;
  407. if(logoUrl&&logoUrl!=''){
  408. var img = form.down('[name=LogoPhoto]');
  409. img.el.dom.src = 'http://192.168.253.31:8560/api/file/download?path='+logoUrl;
  410. var showLogoPhoto = form.down('[name=showLogoPhoto]');
  411. showLogoPhoto.show();
  412. }
  413. //文件名称
  414. // var viewModel = form.getViewModel();
  415. // if(viewModel.data.fileInfoList&&viewModel.data.fileInfoList.length!=0){
  416. // var logo = viewModel.data.fileInfoList[0].logo;
  417. // var logoName = logo.name + " (" + Ext.util.Format.fileSize(logo.size) + ")";
  418. // var signet = viewModel.data.fileInfoList[0].signet;
  419. // var signetName = signet.name + " (" + Ext.util.Format.fileSize(signet.size) + ")";
  420. // }
  421. },
  422. lookPic:function(img){
  423. var me = this, resizer = me.resizer,
  424. imageframe = document.getElementById('ext-image-frame');
  425. var src = img.el.dom.src;
  426. if (!imageframe) {
  427. var el = Ext.DomHelper.append(document.body, '<img id="ext-image-frame" src="' + src +
  428. '" width="500" height="400" style="position:absolute;left:0;top:0px;"/>', true);
  429. imageframe = el.dom;
  430. } else {
  431. imageframe.src = src;
  432. }
  433. if (!resizer) {
  434. resizer = this.resizer = Ext.create('Ext.resizer.Resizer', {
  435. target: 'ext-image-frame',
  436. pinned: true,
  437. width: 410,
  438. height: 310,
  439. minWidth: 100,
  440. minHeight: 80,
  441. preserveRatio: true,
  442. handles: 'all',
  443. dynamic: true,
  444. constrainTo:me.getEl()
  445. });
  446. var resizerEl = resizer.getEl();
  447. resizerEl.on('dblclick', function(){
  448. resizerEl.hide(true);
  449. });
  450. }
  451. resizer.getEl().center();
  452. resizer.getEl().show(true);
  453. Ext.DomHelper.applyStyles(imageframe, 'position:absolute;z-index:100;');
  454. },
  455. downLoad:function(path){
  456. //ajax 响应下载必须要创建一个form实例
  457. window.location.href = 'http://192.168.253.31:8560/api/file/download?path='+path;
  458. // if (!Ext.fly('ext-attach-download')) {
  459. // var frm = document.createElement('form');
  460. // frm.id = 'ext-attach-download';
  461. // frm.name = id;
  462. // frm.className = 'x-hidden';
  463. // document.body.appendChild(frm);
  464. // }
  465. // Ext.Ajax.request({
  466. // url: 'http://192.168.253.31:8560/api/file/download?path='+path,
  467. // method: 'post',
  468. // form: Ext.fly('ext-attach-download'),
  469. // isUpload: true,
  470. // params: ''
  471. // });
  472. }
  473. });