Meetingroomapply.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.oa.meeting.Meetingroomapply', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. GridUtil: Ext.create('erp.util.GridUtil'),
  7. views:[
  8. 'oa.meeting.Meetingroomapply','core.form.Panel','core.form.FileField','core.form.MultiField','core.grid.Panel2',
  9. 'core.button.Add','core.button.Submit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
  10. 'core.button.Upload','core.button.Update','core.button.Delete','core.button.ResAudit','core.button.ResSubmit',
  11. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.trigger.AutoCodeTrigger','core.trigger.MultiDbfindTrigger',
  12. 'core.form.YnField','core.trigger.DbfindTrigger','core.button.Scan','oa.meeting.MeetingDetail','core.grid.YnColumn',
  13. 'erp.view.core.button.AddDetail','erp.view.core.button.DeleteDetail','oa.meeting.MeetingDetailbar','core.button.ConfirmMan',
  14. 'core.button.TurnDoc'
  15. ],
  16. init:function(){
  17. var me = this;
  18. this.control({
  19. 'hidden[id=ma_mrcode]':{
  20. change:function(f){
  21. var grid=Ext.getCmp('grid');
  22. var code=f.value;
  23. grid.store.each(function(record){
  24. if(!me.GridUtil.isBlank(grid, record.data)) {
  25. record.set('mad_mrcode', code);
  26. }
  27. });
  28. }
  29. },
  30. 'erpGridPanel2': {
  31. itemclick: this.onGridItemClick
  32. },
  33. 'MeetingDetail':{
  34. itemclick: this.onGridItemClick2
  35. },
  36. 'erpTurnTurnDocButton':{
  37. afterrender:function(btn){
  38. var status = Ext.getCmp('ma_statuscode');
  39. if(status && status.value != 'AUDITED'){
  40. btn.hide();
  41. }
  42. },
  43. click:function(btn){
  44. var ma_id=Ext.getCmp('ma_id').value;
  45. Ext.Ajax.request({
  46. url : basePath + 'oa/meeting/turnDoc.action',
  47. params : {
  48. caller:caller,
  49. ma_id:ma_id
  50. },
  51. method : 'post',
  52. callback : function(options,success,response){
  53. var localJson = new Ext.decode(response.responseText);
  54. if(localJson.success){
  55. showMessage("提示", localJson.log);
  56. window.location.reload();
  57. } else if(localJson.exceptionInfo){
  58. var str = localJson.exceptionInfo;
  59. showError(str);
  60. }
  61. }
  62. });
  63. }
  64. },
  65. 'erpConfirmManButton':{
  66. afterrender: function(btn){
  67. var status = Ext.getCmp('ma_statuscode');
  68. if(status && status.value != 'AUDITED'){
  69. btn.hide();
  70. }
  71. },
  72. click:function(){
  73. var nCaller='Meeting!Attend';
  74. var condition='md_meid='+Ext.getCmp('ma_id').value;
  75. var url='oa/meeting/confirmMan.action';
  76. var win = new Ext.window.Window({
  77. id : 'win',
  78. height: "100%",
  79. width: "80%",
  80. maximizable : true,
  81. buttonAlign : 'center',
  82. layout : 'anchor',
  83. items: [{
  84. tag : 'iframe',
  85. frame : true,
  86. anchor : '100% 100%',
  87. layout : 'fit',
  88. html : '<iframe id="iframe_' + caller + '" src="' + basePath + 'jsps/common/editorColumn.jsp?caller=' + nCaller
  89. + "&condition=" + condition +'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>'
  90. }],
  91. buttons : [{
  92. name: 'confirm',
  93. text : $I18N.common.button.erpConfirmButton,
  94. iconCls: 'x-button-icon-confirm',
  95. cls: 'x-btn-gray',
  96. listeners: {
  97. buffer: 500,
  98. click: function(btn) {
  99. var grid = Ext.getCmp('win').items.items[0].body.dom.getElementsByTagName('iframe')[0].contentWindow.Ext.getCmp("editorColumnGridPanel");
  100. btn.setDisabled(true);
  101. grid.updateAction(url);
  102. }
  103. }
  104. }, {
  105. text : $I18N.common.button.erpCloseButton,
  106. iconCls: 'x-button-icon-close',
  107. cls: 'x-btn-gray',
  108. handler : function(){
  109. Ext.getCmp('win').close();
  110. window.location.reload();
  111. }
  112. }]
  113. });
  114. win.show();
  115. }
  116. },
  117. 'erpSubmitButton': {
  118. afterrender: function(btn){
  119. var status = Ext.getCmp('ma_statuscode');
  120. if(status && status.value != 'ENTERING'){
  121. btn.hide();
  122. }
  123. },
  124. click: function(btn){
  125. me.FormUtil.onSubmit(Ext.getCmp('ma_id').value);
  126. }
  127. },'erpResSubmitButton': {
  128. afterrender: function(btn){
  129. var status = Ext.getCmp('ma_statuscode');
  130. if(status && status.value != 'COMMITED'){
  131. btn.hide();
  132. }
  133. },
  134. click: function(btn){
  135. me.FormUtil.onResSubmit(Ext.getCmp('ma_id').value);
  136. }
  137. },
  138. 'erpAuditButton': {
  139. afterrender: function(btn){
  140. var status = Ext.getCmp('ma_statuscode');
  141. if(status && status.value != 'COMMITED'){
  142. btn.hide();
  143. }
  144. },
  145. click: function(btn){
  146. me.FormUtil.onAudit(Ext.getCmp('ma_id').value);
  147. }
  148. },
  149. 'erpResAuditButton': {
  150. afterrender: function(btn){
  151. var status = Ext.getCmp('ma_statuscode');
  152. if(status && status.value != 'AUDITED'){
  153. btn.hide();
  154. }
  155. },
  156. click: function(btn){
  157. me.FormUtil.onResAudit(Ext.getCmp('ma_id').value);
  158. }
  159. },
  160. 'erpSaveButton': {
  161. click: function(btn){
  162. var form = me.getForm(btn);
  163. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  164. me.BaseUtil.getRandomNumber();//自动添加编号
  165. }
  166. me.beforeSave(this);
  167. }
  168. },
  169. 'erpDeleteButton' : {
  170. afterrender: function(btn){
  171. var status = Ext.getCmp('ma_statuscode');
  172. if(status && status.value != 'ENTERING'){
  173. btn.hide();
  174. }
  175. },
  176. click: function(btn){
  177. me.FormUtil.onDelete(Ext.getCmp('ma_id').value);
  178. }
  179. },
  180. 'erpUpdateButton': {
  181. afterrender: function(btn){
  182. var status = Ext.getCmp('ma_statuscode');
  183. if(status && status.value != 'ENTERING'){
  184. btn.hide();
  185. }
  186. },
  187. click: function(btn){
  188. me.beforeUpdate(this);
  189. }
  190. },
  191. 'erpAddButton': {
  192. click: function(){
  193. me.FormUtil.onAdd('addMeetingroomapply', '新增会议室申请', 'jsps/oa/meeting/meetingroomapply.jsp');
  194. }
  195. },
  196. 'erpCloseButton': {
  197. click: function(btn){
  198. me.FormUtil.beforeClose(me);
  199. }
  200. }
  201. });
  202. },
  203. onGridItemClick: function(selModel, record){//grid行选择
  204. this.GridUtil.onGridItemClick(selModel, record);
  205. },
  206. onGridItemClick2: function(selModel,record){
  207. this.onGridItemClick(selModel,record,'MeetingDetail');
  208. },
  209. beforeSave: function(){
  210. var me = this;
  211. var form = Ext.getCmp('form');
  212. if(! me.FormUtil.checkForm()){
  213. return;
  214. }
  215. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  216. me.FormUtil.getSeqId(form);
  217. }
  218. var detail = Ext.getCmp('grid');
  219. var detail2 = Ext.getCmp('MeetingDetail');
  220. Ext.each(detail.store.data.items, function(item){
  221. if(item.data.vd_id == null || item.data.vd_id == 0){
  222. item.data.vd_id = -item.index;
  223. }
  224. });
  225. var param1 = me.GridUtil.getGridStore(detail);
  226. var param2 = new Array();
  227. if(detail2){
  228. param2 =me.GridUtil.getGridStore(detail2);
  229. }
  230. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  231. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  232. if(form.getForm().isValid()){
  233. Ext.each(form.items.items, function(item){
  234. if(item.xtype == 'numberfield'){
  235. if(item.value == null || item.value == ''){
  236. item.setValue(0);
  237. }
  238. }
  239. });
  240. var r = form.getValues();
  241. /* r.vo_currencytype = Ext.getCmp('vo_currencytype').value ? -1 : 0;
  242. r.vo_errstring = r.vo_errstring == '正常' ? '' : r.vo_errstring;*/
  243. me.save(r, param1, param2);
  244. }else{
  245. me.FormUtil.checkForm();
  246. }
  247. },
  248. save: function(){
  249. var params = new Object();
  250. var r = arguments[0];
  251. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  252. if(contains(k, 'ext-', true)){
  253. delete r[k];
  254. }
  255. });
  256. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  257. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  258. params.param2 = unescape(arguments[2].toString().replace(/\\/g,"%"));
  259. /*for(var i=2; i<arguments.length; i++) { //兼容多参数
  260. params['param' + i] = unescape(arguments[i].toString().replace(/\\/g,"%"));
  261. }*/
  262. var me = this;
  263. var form = Ext.getCmp('form');
  264. //me.getActiveTab().setLoading(true);//loading...
  265. Ext.Ajax.request({
  266. url : basePath + form.saveUrl,
  267. params : params,
  268. method : 'post',
  269. callback : function(options,success,response){
  270. var localJson = new Ext.decode(response.responseText);
  271. if(localJson.success){
  272. saveSuccess(function(){
  273. //add成功后刷新页面进入可编辑的页面
  274. var value = r[form.keyField];
  275. var formCondition = form.keyField + "IS" + value ;
  276. if(me.contains(window.location.href, '?', true)){
  277. window.location.href = window.location.href + '&formCondition=' +
  278. formCondition+'&gridCondition=mad_maidIS'+value;
  279. } else {
  280. window.location.href = window.location.href + '?formCondition=' +
  281. formCondition+'&gridCondition=mad_maidIS'+value;
  282. }
  283. });
  284. } else if(localJson.exceptionInfo){
  285. var str = localJson.exceptionInfo;
  286. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  287. str = str.replace('AFTERSUCCESS', '');
  288. saveSuccess(function(){
  289. //add成功后刷新页面进入可编辑的页面
  290. var value = r[form.keyField];
  291. var formCondition = form.keyField + "IS" + value ;
  292. if(me.contains(window.location.href, '?', true)){
  293. window.location.href = window.location.href + '&formCondition=' +
  294. formCondition+'&gridCondition=mad_maidIS'+value;
  295. } else {
  296. window.location.href = window.location.href + '?formCondition=' +
  297. formCondition+'&gridCondition=mad_maidIS'+value;
  298. }
  299. });
  300. showError(str);
  301. } else {
  302. showError(str);
  303. return;
  304. }
  305. } else{
  306. saveFailure();//@i18n/i18n.js
  307. }
  308. }
  309. });
  310. },
  311. beforeUpdate: function(){
  312. var me = this;
  313. var form = Ext.getCmp('form');
  314. if(! me.FormUtil.checkForm()){
  315. return;
  316. }
  317. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  318. me.FormUtil.getSeqId(form);
  319. }
  320. var detail = Ext.getCmp('grid');
  321. var detail2 = Ext.getCmp('MeetingDetail');
  322. /*Ext.each(detail.store.data.items, function(item){
  323. if(item.data.vd_id == null || item.data.vd_id == 0){
  324. item.data.vd_id = -item.index;
  325. }
  326. });*/
  327. var param1 = me.GridUtil.getGridStore(detail);
  328. var param2 = new Array();
  329. if(detail2) {
  330. param2 = me.GridUtil.getGridStore(detail2);
  331. }
  332. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  333. param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]";
  334. if(form.getForm().isValid()){
  335. Ext.each(form.items.items, function(item){
  336. if(item.xtype == 'numberfield'){
  337. if(item.value == null || item.value == ''){
  338. item.setValue(0);
  339. }
  340. }
  341. });
  342. var r = form.getValues();
  343. /*r.vo_currencytype = Ext.getCmp('vo_currencytype').value ? -1 : 0;
  344. r.vo_errstring = r.vo_errstring == '正常' ? '' : r.vo_errstring;*/
  345. me.update(r, param1, param2);
  346. }else{
  347. me.FormUtil.checkForm();
  348. }
  349. },
  350. update:function(){
  351. var params = new Object();
  352. var r = arguments[0];
  353. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  354. if(contains(k, 'ext-', true)){
  355. delete r[k];
  356. }
  357. });
  358. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  359. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  360. params.param2 = unescape(arguments[2].toString().replace(/\\/g,"%"));
  361. var me = this;
  362. var form = Ext.getCmp('form');
  363. //me.getActiveTab().setLoading(true);//loading...
  364. Ext.Ajax.request({
  365. url : basePath + form.updateUrl,
  366. params : params,
  367. method : 'post',
  368. callback : function(options,success,response){
  369. //me.getActiveTab().setLoading(false);
  370. var localJson = new Ext.decode(response.responseText);
  371. if(localJson.success){
  372. saveSuccess(function(){
  373. //add成功后刷新页面进入可编辑的页面
  374. var value = r[form.keyField];
  375. var formCondition = form.keyField + "IS" + value ;
  376. if(me.contains(window.location.href, '?', true)){
  377. window.location.href = window.location.href + '&formCondition=' +
  378. formCondition;
  379. } else {
  380. window.location.href = window.location.href + '?formCondition=' +
  381. formCondition;
  382. }
  383. });
  384. } else if(localJson.exceptionInfo){
  385. var str = localJson.exceptionInfo;
  386. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  387. str = str.replace('AFTERSUCCESS', '');
  388. saveSuccess(function(){
  389. //add成功后刷新页面进入可编辑的页面
  390. var value = r[form.keyField];
  391. var formCondition = form.keyField + "IS" + value ;
  392. if(me.contains(window.location.href, '?', true)){
  393. window.location.href = window.location.href + '&formCondition=' +
  394. formCondition;
  395. } else {
  396. window.location.href = window.location.href + '?formCondition=' +
  397. formCondition;
  398. }
  399. });
  400. showError(str);
  401. } else {
  402. showError(str);
  403. return;
  404. }
  405. } else{
  406. saveFailure();//@i18n/i18n.js
  407. }
  408. }
  409. });
  410. },
  411. contains: function(string,substr,isIgnoreCase){
  412. if(isIgnoreCase){
  413. string=string.toLowerCase();
  414. substr=substr.toLowerCase();
  415. }
  416. var startChar=substr.substring(0,1);
  417. var strLen=substr.length;
  418. for(var j=0;j<string.length-strLen+1;j++){
  419. if(string.charAt(j)==startChar){//如果匹配起始字符,开始查找
  420. if(string.substring(j,j+strLen)==substr){//如果从j开始的字符与str匹配,那ok
  421. return true;
  422. }
  423. }
  424. }
  425. return false;
  426. },
  427. getForm: function(btn){
  428. return btn.ownerCt.ownerCt;
  429. }
  430. });