SingleForm.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.oa.custom.SingleForm', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'oa.custom.SingleForm','core.form.Panel','core.form.CheckBoxGroup',
  9. 'core.button.UUListener','core.button.Sync','core.form.MultiField','core.form.FileField','core.button.FormBook',
  10. 'core.button.Add','core.button.Save','core.button.Close','core.button.Update','core.button.Delete','core.button.DeleteDetail',
  11. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.toolbar.Toolbar','core.trigger.MultiDbfindTrigger','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit',
  12. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail','core.button.ResSubmit','core.button.PrintByCondition',
  13. 'core.button.Scan','core.button.Banned','core.button.ResBanned','core.form.MultiField','core.button.Confirm','core.button.ResConfirm','core.button.Sync',
  14. 'core.grid.TfColumn','core.button.DbfindButton','core.button.ComboButton', 'core.form.YnField','core.form.ConDateHourMinuteField','core.form.DateHourMinuteField',
  15. 'core.grid.ItemGrid','core.button.PrintPDF','core.form.FtDateField','core.button.SubmitApproves','core.button.ResSubmitApproves','core.button.Check','core.form.ColorField',
  16. 'core.form.CheckBoxGroup','core.form.RadioGroup','core.button.CallProcedureByConfig','core.button.Modify','core.form.MultiField1'
  17. ],
  18. init:function(){
  19. var me = this;
  20. this.control({
  21. 'erpSubmitApprovesButton':{
  22. afterrender:function(btn){
  23. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  24. var approvestatus=Ext.getCmp("ct_approvestatuscode");
  25. if(!((status && status.value == 'AUDITED')&&(approvestatus&&approvestatus.value =='ENTERING'))){
  26. btn.hide();
  27. }
  28. },
  29. click:function(btn){
  30. this.SubmitApproves(Ext.getCmp(me.getForm(btn).keyField).value);
  31. }
  32. },
  33. 'erpResSubmitApprovesButton':{
  34. afterrender:function(btn){
  35. var status=Ext.getCmp("ct_approvestatuscode");
  36. if(status && status.value != 'COMMITED'){
  37. btn.hide();
  38. }
  39. },
  40. click:function(btn){
  41. this.ResSubmitApproves(Ext.getCmp(me.getForm(btn).keyField).value);
  42. }
  43. },
  44. 'erpModifyCommonButton':{
  45. afterrender:function(btn){
  46. var status=Ext.getCmp("CT_STATUSCODE");
  47. if(status && status.value != 'AUDITED'){
  48. btn.hide();
  49. }
  50. }
  51. },
  52. 'erpCheckButton':{
  53. afterrender:function(btn){
  54. var status=Ext.getCmp("ct_approvestatuscode");
  55. if(status && status.value != 'COMMITED'){
  56. btn.hide();
  57. }
  58. },
  59. click:function(btn){
  60. me.FormUtil.onCheck(Ext.getCmp(me.getForm(btn).keyField).value);
  61. }
  62. },
  63. 'dbfindtrigger[name=custlinkman]':{//客户服务单据使用
  64. beforetrigger: function(field) {
  65. var custcode = Ext.getCmp('custcode');
  66. if(custcode&&custcode.value!=''){
  67. field.dbBaseCondition = " ct_cucode = '" +custcode.value+"'";
  68. }else if(custcode){
  69. showError('请先选择客户');
  70. return false;
  71. }
  72. }
  73. },
  74. 'erpSaveButton': {
  75. click: function(btn){
  76. var form = me.getForm(btn);
  77. if(!Ext.isEmpty(form.codeField) && Ext.getCmp(form.codeField) && (
  78. Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == '')){
  79. me.BaseUtil.getRandomNumber(caller);//自动添加编号
  80. }
  81. this.FormUtil.beforeSave(this);
  82. }
  83. },
  84. 'erpDeleteButton' : {
  85. click: function(btn){
  86. me.FormUtil.onDelete(Ext.getCmp(me.getForm(btn).keyField).value);
  87. }
  88. },
  89. 'erpUpdateButton': {
  90. click: function(btn){
  91. this.FormUtil.onUpdate(this);
  92. }
  93. },
  94. 'erpAddButton': {
  95. click: function(btn){
  96. var title = btn.ownerCt.ownerCt.title || ' ';
  97. var url = window.location.href;
  98. url = url.replace(basePath, '');
  99. url = url.substring(0, url.lastIndexOf('formCondition')-1);
  100. me.FormUtil.onAdd('add' + caller, title, url);
  101. }
  102. },
  103. 'erpCloseButton': {
  104. click:function(btn){
  105. me.FormUtil.beforeClose(me);
  106. }
  107. },
  108. 'erpSubmitButton': {
  109. afterrender: function(btn){
  110. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  111. if(status && status.value != 'ENTERING'){
  112. btn.hide();
  113. }
  114. },
  115. click: function(btn){
  116. me.FormUtil.onSubmit(Ext.getCmp(me.getForm(btn).keyField).value);
  117. }
  118. },
  119. 'erpResSubmitButton': {
  120. afterrender: function(btn){
  121. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  122. if(status && status.value != 'COMMITED'){
  123. btn.hide();
  124. }
  125. },
  126. click: function(btn){
  127. me.FormUtil.onResSubmit(Ext.getCmp(me.getForm(btn).keyField).value);
  128. }
  129. },
  130. 'erpAuditButton': {
  131. afterrender: function(btn){
  132. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  133. if(status && status.value != 'COMMITED'){
  134. btn.hide();
  135. }
  136. },
  137. click: function(btn){
  138. me.FormUtil.onAudit(Ext.getCmp(me.getForm(btn).keyField).value);
  139. }
  140. },
  141. 'erpBannedButton': {
  142. afterrender:function(btn){
  143. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  144. if(status && status.value != 'CANUSE'){
  145. btn.hide();
  146. }
  147. },
  148. click: function(btn){
  149. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  150. me.FormUtil.onBanned(crid);
  151. }
  152. },
  153. 'erpResBannedButton': {
  154. afterrender:function(btn){
  155. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  156. if(status && status.value != 'BANNED'){
  157. btn.hide();
  158. }
  159. },
  160. click: function(btn){
  161. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  162. me.FormUtil.onResBanned(crid);
  163. }
  164. },
  165. 'erpResAuditButton': {
  166. afterrender: function(btn){
  167. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  168. var approvestatus=Ext.getCmp("ct_approvestatuscode");
  169. if(approvestatus){
  170. if((status && status.value == 'AUDITED')&&(approvestatus&&approvestatus.value=='ENTERING')){
  171. }else{
  172. btn.hide();
  173. }
  174. }else{
  175. if((status && status.value != 'AUDITED')||(Ext.getCmp('ct_confirmstatus')&&Ext.getCmp('ct_confirmstatus').value=='已确认')){
  176. btn.hide();
  177. }
  178. }
  179. },
  180. click: function(btn){
  181. me.FormUtil.onResAudit(Ext.getCmp(me.getForm(btn).keyField).value);
  182. }
  183. },
  184. 'erpPrintButton': {
  185. click: function(btn){
  186. var condition = '{CUSTOMTABLE.CT_ID}=' + Ext.getCmp(me.getForm(btn).keyField).value + '';
  187. me.FormUtil.onwindowsPrint(Ext.getCmp(me.getForm(btn).keyField).value,'',condition);
  188. }
  189. },
  190. 'dbfindtrigger[name=CT_VARCHAR500_1]': {
  191. afterrender: function(f){
  192. if(caller=='Testapply'){
  193. f.onTriggerClick = function(){
  194. me.getModuleTree();
  195. };
  196. f.autoDbfind = false;
  197. }
  198. }
  199. },
  200. 'erpConfirmButton': {
  201. afterrender: function(btn){
  202. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  203. if((status && status.value != 'AUDITED')||(Ext.getCmp('ct_confirmstatus')&&Ext.getCmp('ct_confirmstatus').value=='已确认')){
  204. btn.hide();
  205. }
  206. },
  207. click: function(btn){
  208. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  209. me.FormUtil.onConfirm(crid);
  210. }
  211. },
  212. 'erpResConfirmButton': {
  213. afterrender: function(btn){
  214. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  215. if((status && status.value != 'AUDITED')||(Ext.getCmp('ct_confirmstatus')&&Ext.getCmp('ct_confirmstatus').value!='已确认')){
  216. btn.hide();
  217. }
  218. },
  219. click: function(btn){
  220. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  221. me.onResConfirm(crid);
  222. }
  223. },
  224. 'treepanel': {
  225. itemmousedown: function(selModel, record){
  226. var tree = selModel.ownerCt;
  227. me.loadTree(tree, record);
  228. }
  229. },
  230. });
  231. },
  232. getForm: function(btn){
  233. return btn.ownerCt.ownerCt;
  234. },
  235. onChange: function(field, value){
  236. field.setValue(value);
  237. if(value == 'C'){
  238. }
  239. },
  240. print:function(btn){
  241. var form=Ext.getCmp('form');
  242. var oldstr=window.document.body.innerHTML;
  243. Ext.each(btn.ownerCt.items.items,function(b){
  244. b.hide();
  245. });
  246. document.getElementById('form').style.height='auto';
  247. document.getElementById('form-body').style.height='auto';
  248. var inputs=document.getElementsByTagName('input');
  249. var item_f=Ext.getCmp('form').items.items;
  250. var bdhtml=window.document.body.innerHTML;
  251. winname = window.open('', "_blank",'');
  252. winname.document.title = '项目确认书打印'+Ext.getCmp('CT_ID').value;
  253. winname.document.body.innerHTML='<link rel="stylesheet" ' +
  254. 'href="'+basePath+'resource/ext/resources/css/ext-all-gray.css" type="text/css"></link>' +
  255. '<link rel="stylesheet" href="'+basePath+'resource/css/main.css" type="text/css"></link>' +
  256. '<div>'+bdhtml+'</div>';
  257. Ext.each(item_f,function(item){
  258. if(item.xtype=='combo'||item.xtype=='erpYnField'){
  259. winname.document.getElementById(item.name+'-bodyEl').getElementsByTagName('input')[1].value=item.rawValue;
  260. }
  261. if(item.xtype=='textfield'||item.xtype=='numberfield'||item.xtype=='dbfindtrigger'){
  262. winname.document.getElementById(item.name+'-bodyEl').getElementsByTagName('input')[0].value=item.value;
  263. }
  264. if(item.xtype=='datefield'){
  265. winname.document.getElementById(item.name+'-bodyEl').getElementsByTagName('input')[0].value=item.rawValue;
  266. }
  267. if(item.xtype=='textareafield'){
  268. winname.document.getElementById(item.name+'-bodyEl').getElementsByTagName('textarea')[0].value=item.rawValue;
  269. }
  270. if(item.xtype=='multifield'&&item.logic!=''){
  271. winname.document.getElementById(item.name+'-bodyEl').getElementsByTagName('input')[0].value=item.value;
  272. winname.document.getElementById(item.secondname+'-bodyEl').getElementsByTagName('input')[0].value=item.secondvalue;
  273. }
  274. });
  275. winname.print();
  276. winname.close();
  277. location.reload();
  278. },
  279. save: function(){
  280. //默认流程CAllER 和页面caller一致;
  281. var flowcaller=Ext.getCmp('fo_flowcaller');
  282. if(!flowcaller.value){
  283. flowcaller.setValue(Ext.getCmp('fo_caller').value);
  284. }
  285. var grid = Ext.getCmp('grid');
  286. var dd = grid.getChange();
  287. if(dd.added.length > 0) {
  288. var form = Ext.getCmp('form');
  289. this.FormUtil.getSeqId(form);
  290. this.FormUtil.save(form.getValues(), Ext.encode(dd.added));
  291. } else {
  292. showError('请至少配置一个有效字段!');
  293. }
  294. },
  295. update: function(){
  296. var grid = Ext.getCmp('grid'), items = grid.store.data.items;
  297. var field = Ext.getCmp('fo_table'), id = Ext.getCmp('fo_id').value;
  298. Ext.Array.each(items, function(item){
  299. if(item.data['fd_field'] != null && item.data['fd_field'] != ''){
  300. item.set('fd_table', field.value);
  301. item.set('fd_foid', id);
  302. }
  303. });
  304. var me = this;
  305. if(! me.FormUtil.checkForm()){
  306. return;
  307. }
  308. var dd = grid.getChange();
  309. me.FormUtil.update(Ext.getCmp('form').getValues(), Ext.encode(dd.added),
  310. Ext.encode(dd.updated), Ext.encode(dd.deleted));
  311. },
  312. getModuleTree: function(){
  313. var w = Ext.create('Ext.Window',{
  314. title: '查找模板',
  315. height: "100%",
  316. width: "80%",
  317. maximizable : true,
  318. buttonAlign : 'center',
  319. layout : 'anchor',
  320. items: [{
  321. anchor: '100% 100%',
  322. xtype: 'treepanel',
  323. rootVisible: false,
  324. useArrows: true,
  325. store: Ext.create('Ext.data.TreeStore', {
  326. root : {
  327. text: 'root',
  328. id: 'root',
  329. expanded: true
  330. }
  331. })
  332. }],
  333. buttons : [{
  334. text : '关 闭',
  335. iconCls: 'x-button-icon-close',
  336. cls: 'x-btn-gray',
  337. handler : function(btn){
  338. btn.ownerCt.ownerCt.close();
  339. }
  340. },{
  341. text: '确定',
  342. iconCls: 'x-button-icon-confirm',
  343. cls: 'x-btn-gray',
  344. handler: function(btn){
  345. var t = btn.ownerCt.ownerCt.down('treepanel');
  346. if(!Ext.isEmpty(t.title)) {
  347. Ext.getCmp('CT_VARCHAR500_1').setValue(t.title);
  348. }
  349. btn.ownerCt.ownerCt.close();
  350. }
  351. }]
  352. });
  353. w.show();
  354. this.loadTree(w.down('treepanel'), null);
  355. },
  356. loadTree: function(tree, record){
  357. var pid = 0;
  358. if(record) {
  359. if (record.get('leaf')) {
  360. return;
  361. } else {
  362. if(record.isExpanded() && record.childNodes.length > 0){
  363. record.collapse(true, true);//收拢
  364. return;
  365. } else {
  366. if(record.childNodes.length != 0){
  367. record.expand(false, true);//展开
  368. return;
  369. }
  370. }
  371. }
  372. pid = record.get('id');
  373. }
  374. tree.setLoading(true);
  375. Ext.Ajax.request({
  376. url : basePath + 'common/lazyTree.action?_noc=1',
  377. params: {
  378. parentId: pid,
  379. condition: 'sn_using=1'
  380. },
  381. callback : function(options,success,response){
  382. tree.setLoading(false);
  383. var res = new Ext.decode(response.responseText);
  384. if(res.tree){
  385. if(record) {
  386. record.appendChild(res.tree);
  387. record.expand(false,true);//展开
  388. tree.setTitle(record.getPath('text', '/').replace('root', '').replace('//', '/'));
  389. } else {
  390. tree.store.setRootNode({
  391. text: 'root',
  392. id: 'root',
  393. expanded: true,
  394. children: res.tree
  395. });
  396. }
  397. } else if(res.exceptionInfo){
  398. showError(res.exceptionInfo);
  399. }
  400. }
  401. });
  402. },
  403. onResConfirm: function(id){
  404. var form = Ext.getCmp('form');
  405. Ext.Ajax.request({
  406. url : basePath + form.resConfirmUrl,
  407. params: {
  408. id: id,
  409. caller:caller
  410. },
  411. method : 'post',
  412. callback : function(options,success,response){
  413. var localJson = new Ext.decode(response.responseText);
  414. if(localJson.success){
  415. window.location.reload();
  416. }
  417. if (localJson.exceptionInfo) {
  418. showError(localJson.exceptionInfo);
  419. }
  420. }
  421. });
  422. },
  423. SubmitApproves:function(id){
  424. var me = this;
  425. var form = Ext.getCmp('form');
  426. Ext.Ajax.request({
  427. url : basePath + form.submitApprovesUrl,
  428. params: {
  429. id: id
  430. },
  431. method : 'post',
  432. callback : function(options,success,response){
  433. var localJson = new Ext.decode(response.responseText);
  434. if(localJson.success){
  435. me.FormUtil.getMultiAssigns(id, caller+'!Confirm',form);
  436. } else {
  437. if(localJson.exceptionInfo){
  438. var str = localJson.exceptionInfo;
  439. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  440. str = str.replace('AFTERSUCCESS', '');
  441. me.FormUtil.getMultiAssigns(id, caller+'!Confirm', form,me.FormUtil.showAssignWin);
  442. }
  443. showMessage("提示", str);
  444. }
  445. }
  446. }
  447. });
  448. },
  449. ResSubmitApproves:function(id){
  450. var me = this;
  451. var form = Ext.getCmp('form');
  452. Ext.Ajax.request({
  453. url : basePath + form.resSubmitApprovesUrl,
  454. params: {
  455. id: id
  456. },
  457. method : 'post',
  458. callback : function(options,success,response){
  459. var localJson = new Ext.decode(response.responseText);
  460. if(localJson.success){
  461. window.location.reload();
  462. }
  463. if (localJson.exceptionInfo) {
  464. showError(localJson.exceptionInfo);
  465. }
  466. }
  467. });
  468. }
  469. });