CommonPage.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.opensys.CommonPage', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.BaseUtil', 'erp.util.FormUtil', 'erp.util.RenderUtil'],
  5. views:['opensys.commonpage.ViewPort','core.form.Panel2',
  6. 'core.trigger.DbfindTrigger','core.trigger.AddDbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField',
  7. 'core.form.MultiField','core.form.YnField','core.trigger.TextAreaTrigger','core.form.FileField',
  8. 'core.button.Save','core.button.Close','core.button.Add','core.button.Update','core.button.Delete','core.button.Submit','core.button.ResSubmit',
  9. 'core.button.Audit','core.button.ResAudit','core.button.OpensysConfirm','core.form.CheckBoxGroup','core.button.PrintPDF'
  10. ],
  11. init:function(){
  12. var me = this;
  13. this.BaseUtil = Ext.create('erp.util.BaseUtil');
  14. this.FormUtil = Ext.create('erp.util.FormUtil');
  15. this.GridUtil = Ext.create('erp.util.GridUtil');
  16. this.control({
  17. 'dbfindtrigger':{
  18. afterrender:function(f){
  19. Ext.apply(f, {
  20. extend: 'Ext.form.field.Trigger',
  21. triggerCls: 'x-form-search-trigger',
  22. selecteddata:new Array(),
  23. initComponent: function() {
  24. this.addEvents({
  25. aftertrigger: true,
  26. beforetrigger: true
  27. });
  28. this.callParent(arguments);
  29. },
  30. onTriggerClick:this.onTriggerClick
  31. });
  32. }
  33. },
  34. 'htmleditor': {
  35. afterrender: function(f){
  36. if(!f.defaultValue){
  37. f.defaultValue='';
  38. }
  39. }
  40. },
  41. 'erpGridPanel2': {
  42. itemclick: this.onGridItemClick,
  43. reconfigure: function(grid){
  44. var form = Ext.getCmp('form');
  45. if(form)
  46. me.resize(form, grid);
  47. }
  48. },
  49. 'erpSaveButton': {
  50. click: function(btn){
  51. var form = me.getForm(btn);
  52. if(!Ext.isEmpty(form.codeField) && Ext.getCmp(form.codeField) && (
  53. Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == '')){
  54. me.BaseUtil.getRandomNumber(caller);//自动添加编号
  55. }
  56. this.FormUtil.beforeSave(this);
  57. }
  58. },
  59. 'erpDeleteButton' : {
  60. click: function(btn){
  61. me.FormUtil.onDelete(Ext.getCmp(me.getForm(btn).keyField).value);
  62. }
  63. },
  64. 'erpUpdateButton': {
  65. click: function(btn){
  66. this.FormUtil.onUpdate(this);
  67. }
  68. },
  69. 'erpAddButton': {
  70. click: function(btn){
  71. var title = btn.ownerCt.ownerCt.title || ' ';
  72. var url = window.location.href;
  73. url = url.replace(basePath, '');
  74. url = url.substring(0, url.lastIndexOf('formCondition')-1);
  75. me.FormUtil.onAdd('add' + caller, title, url);
  76. }
  77. },
  78. 'erpCloseButton': {
  79. click: function(btn){
  80. me.FormUtil.beforeClose(me);
  81. }
  82. },
  83. 'erpSubmitButton': {
  84. afterrender: function(btn){
  85. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  86. if(status && status.value != 'ENTERING'){
  87. btn.hide();
  88. }
  89. },
  90. click: function(btn){
  91. me.FormUtil.onSubmit(Ext.getCmp(me.getForm(btn).keyField).value);
  92. }
  93. },
  94. 'erpResSubmitButton': {
  95. afterrender: function(btn){
  96. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  97. if(status && status.value != 'COMMITED'){
  98. btn.hide();
  99. }
  100. },
  101. click: function(btn){
  102. me.FormUtil.onResSubmit(Ext.getCmp(me.getForm(btn).keyField).value);
  103. }
  104. },
  105. 'erpAuditButton': {
  106. afterrender: function(btn){
  107. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  108. if(status && status.value != 'COMMITED'){
  109. btn.hide();
  110. }
  111. },
  112. click: function(btn){
  113. me.FormUtil.onAudit(Ext.getCmp(me.getForm(btn).keyField).value);
  114. }
  115. },
  116. 'erpBannedButton': {
  117. afterrender:function(btn){
  118. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  119. if(status && status.value != 'CANUSE' && status.value != 'AUDITED'){
  120. btn.hide();
  121. }
  122. },
  123. click: function(btn){
  124. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  125. me.FormUtil.onBanned(crid);
  126. }
  127. },
  128. 'erpResBannedButton': {
  129. afterrender:function(btn){
  130. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  131. if(status && status.value != 'DISABLE'){
  132. btn.hide();
  133. }
  134. },
  135. click: function(btn){
  136. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  137. me.FormUtil.onResBanned(crid);
  138. }
  139. },
  140. 'erpEndButton': {
  141. afterrender:function(btn){
  142. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  143. if(status && status.value != 'CANUSE' && status.value != 'AUDITED'){
  144. btn.hide();
  145. }
  146. },
  147. click: function(btn){
  148. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  149. me.FormUtil.onEnd(crid);
  150. }
  151. },
  152. 'erpResEndButton': {
  153. afterrender:function(btn){
  154. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  155. if(status && status.value != 'FINISH'){
  156. btn.hide();
  157. }
  158. },
  159. click: function(btn){
  160. var crid = Ext.getCmp(me.getForm(btn).keyField).value;
  161. me.FormUtil.onResEnd(crid);
  162. }
  163. },
  164. 'erpResAuditButton': {
  165. afterrender: function(btn){
  166. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  167. if(status && status.value != 'AUDITED'){
  168. btn.hide();
  169. }
  170. },
  171. click: function(btn){
  172. me.FormUtil.onResAudit(Ext.getCmp(me.getForm(btn).keyField).value);
  173. }
  174. },
  175. 'erpConfirmButton': {
  176. click: function(btn){
  177. me.FormUtil.onConfirm(Ext.getCmp(me.getForm(btn).keyField).value);
  178. }
  179. }
  180. });
  181. },
  182. getForm: function(btn){
  183. return btn.ownerCt.ownerCt;
  184. },onTriggerClick: function() {
  185. var trigger = this,
  186. bool = true; // 放大镜所在
  187. bool = trigger.fireEvent('beforetrigger', trigger);
  188. dbCaller=this.dbCaller|| (typeof caller === 'undefined' ? '' : caller);
  189. if (bool == false) {
  190. return;
  191. }
  192. this.setFieldStyle('background:#C6E2FF;');
  193. var key = this.triggerName||this.name,
  194. // name属性
  195. dbfind = '',
  196. // 需要dbfind的表和字段
  197. dbBaseCondition = '',
  198. dbCondition = '',
  199. dbGridCondition = '',
  200. findConfig = this.findConfig,
  201. dbKey = this.dbKey,
  202. mappingKey = this.mappingKey,
  203. gridKey = this.gridKey,
  204. mappinggirdKey = this.mappinggirdKey;
  205. window.onTriggerClick = this.id;
  206. // 存在查询条件的字段
  207. if (findConfig) {
  208. dbCondition = (typeof findConfig == 'function' ? findConfig.call(null) : findConfig);
  209. }
  210. if (dbKey) {
  211. var dbKeyValue = Ext.getCmp(dbKey).value;
  212. if (dbKeyValue) {
  213. dbCondition = mappingKey + " IS '" + dbKeyValue + "'";
  214. } else {
  215. showError(this.dbMessage);
  216. return
  217. }
  218. }
  219. if (gridKey) {
  220. var gridKeys = gridKey.split('|');
  221. var mappinggirdKeys = mappinggirdKey.split('|');
  222. var gridErrorMessages = this.gridErrorMessage.split('|');
  223. for (var i = 0; i < gridKeys.length; i++) {
  224. var gridkeyvalue = Ext.getCmp(gridKeys[i]).value;
  225. if (i == 0) {
  226. if (gridkeyvalue) {
  227. dbGridCondition = mappinggirdKeys[i] + " IS '" + gridkeyvalue + "' ";
  228. } else {
  229. showError(gridErrorMessages[i]);
  230. return
  231. }
  232. } else {
  233. if (gridkeyvalue) {
  234. dbGridCondition = dbGridCondition + " AND " + mappinggirdKeys[i] + " IS '" + gridkeyvalue + "' ";
  235. } else {
  236. showError(gridErrorMessages[i]);
  237. return
  238. }
  239. }
  240. }
  241. }
  242. if (this.dbBaseCondition) {
  243. dbBaseCondition = this.dbBaseCondition;
  244. }
  245. if (!trigger.ownerCt || trigger.column) { // 如果是grid的dbfind
  246. var grid = Ext.ComponentQuery.query('gridpanel');
  247. if(!trigger.dbfind){
  248. if(trigger.column.dataIndex == key){//
  249. dbfind = trigger.column.dbfind;
  250. }else{
  251. Ext.Array.each(grid,
  252. function(g, index) {
  253. Ext.Array.each(g.columns,
  254. function(column) {
  255. if (column.dataIndex == key ) {
  256. dbfind = column.dbfind;
  257. trigger.owner = g;
  258. }
  259. });
  260. });
  261. }
  262. }else dbfind=trigger.dbfind;
  263. }
  264. var keyValue = this.value, ob = this.dbOrderby || ''; // 当前值
  265. keyValue = keyValue == null ? '': keyValue;
  266. var width = Ext.isIE ? screen.width * 0.7 * 0.9 : '80%',
  267. height = Ext.isIE ? screen.height * 0.75 : '95%';
  268. //针对有些特殊窗口显示较小
  269. width =this.winWidth ? this.winWidth:width;
  270. height=this.winHeight ? this.winHeight:height;
  271. var dbwin = new Ext.window.Window({
  272. id: 'dbwin',
  273. title: '查找',
  274. height: height,
  275. width: width,
  276. maximizable: true,
  277. buttonAlign: 'center',
  278. layout: 'anchor',
  279. items: [{
  280. tag: 'iframe',
  281. frame: true,
  282. anchor: '100% 100%',
  283. layout: 'fit',
  284. html: '<iframe id="iframe_dbfind" src="' + basePath + 'jsps/opensys/dbfind.jsp?key=' + key + "&dbfind=" + dbfind + "&dbGridCondition=" + encodeURIComponent(dbGridCondition) + "&dbCondition=" + encodeURIComponent(dbCondition) + "&dbBaseCondition=" + encodeURIComponent(dbBaseCondition) + "&keyValue=" + encodeURIComponent(keyValue) + "&trigger=" + trigger.id + "&caller=" + dbCaller + "&ob=" + ob + '" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>'
  285. }],
  286. buttons: [{
  287. text: '关 闭',
  288. iconCls: 'x-button-icon-close',
  289. cls: 'x-btn-gray',
  290. handler: function() {
  291. Ext.getCmp('dbwin').close();
  292. }
  293. },
  294. {
  295. text: '重置条件',
  296. id: 'reset',
  297. cls: 'x-btn-gray',
  298. hidden: true,
  299. handler: function() {
  300. var grid = Ext.getCmp('dbwin').el.dom.getElementsByTagName('iframe')[0].contentWindow.document.defaultView.Ext.getCmp('dbfindGridPanel');
  301. grid.resetCondition();
  302. grid.getCount();
  303. }
  304. }]
  305. });
  306. dbwin.show();
  307. trigger.lastTriggerId = null;
  308. }
  309. });