AssDetail.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. /**
  2. * 辅助核算按钮
  3. */
  4. Ext.define('erp.view.core.button.AssDetail',{
  5. extend: 'Ext.Button',
  6. alias: 'widget.erpAssDetailButton',
  7. cls: 'x-btn-gray',
  8. id: 'assdetail',
  9. text: $I18N.common.button.erpAssMainButton,
  10. GridUtil: Ext.create('erp.util.GridUtil'),
  11. BaseUtil: Ext.create('erp.util.BaseUtil'),
  12. cacheStoreForm: new Array(),
  13. width: 75,
  14. getGrid: function() {
  15. return this.ownerCt.ownerCt;
  16. },
  17. initComponent: function() {
  18. this.cacheStoreGrid = [];
  19. this.callParent(arguments);
  20. },
  21. listeners:{
  22. click: function(assBtn){
  23. var me = this;
  24. var grid = assBtn.getGrid();
  25. var record = grid.selModel.lastSelected;
  26. if(record){
  27. var id = record.get(grid.keyField) || (-grid.store.indexOf(record));
  28. var assGrid = Ext.create('Ext.grid.Panel', {
  29. anchor: '100% 100%',
  30. columns: [{
  31. text: 'ID',
  32. hidden: true,
  33. dataIndex: 'dass_id'
  34. },{
  35. text: 'DASS_CONDID',
  36. hidden: true,
  37. dataIndex: 'dass_condid'
  38. },{
  39. text: '辅助类型',
  40. dataIndex: 'dass_asstype',
  41. hidden: true,
  42. flex: 1
  43. },{
  44. text: '核算项',
  45. dataIndex: 'dass_assname',
  46. flex: 1
  47. },{
  48. text: '编号表达式',
  49. dataIndex: 'dass_codefield',
  50. flex: 1,
  51. editor: {
  52. xtype: 'dbfindtrigger',
  53. listeners:{
  54. focus: function(t){
  55. t.setHideTrigger(false);
  56. t.setReadOnly(false);//用disable()可以,但enable()无效
  57. var record = assGrid.selModel.lastSelected;
  58. var asstype = record.data['dass_asstype'];
  59. if(asstype == 'Otc' || asstype=='Otv' || asstype=='Otp'){
  60. t.dbBaseCondition ="ak_code='" + asstype + "'";
  61. } else
  62. t.dbBaseCondition = null;
  63. }
  64. }
  65. }
  66. },{
  67. text: '名称表达式',
  68. dataIndex: 'dass_namefield',
  69. flex: 1,
  70. editor: {
  71. xtype: 'textfield'
  72. }
  73. }],
  74. store: new Ext.data.Store({
  75. fields: [{name: 'dass_id', type: 'number'}, {name: 'dass_condid', type: 'number'},
  76. {name: 'dass_assname', type: 'string'},{name: 'dass_asstype', type: 'string'},
  77. {name: 'dass_codefield', type: 'string'},
  78. {name: 'dass_namefield', type: 'string'}]
  79. }),
  80. columnLines: true,
  81. plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
  82. clicksToEdit: 1
  83. })],
  84. listeners:{
  85. afterrender:function(g){
  86. g.plugins[0].on('beforeedit',function(e){
  87. if(e.field=='dass_codefield'){
  88. var record = e.record, column = e.column;
  89. var set = me.getDbfindSet(record.get('dass_asstype'));
  90. g.dbfinds = set.dbfinds;
  91. column.dbfind = set.dbfind;
  92. }
  93. });
  94. }
  95. }
  96. });
  97. var win = Ext.create('Ext.Window', {
  98. width: 500,
  99. height: 360,
  100. layout: 'anchor',
  101. title: '辅助核算',
  102. items: [assGrid],
  103. buttonAlign: 'center',
  104. modal: true,
  105. buttons: [{
  106. text: $I18N.common.button.erpConfirmButton,
  107. cls: 'x-btn-blue',
  108. handler: function(btn) {
  109. var win = btn.ownerCt.ownerCt,
  110. record = assBtn.getGrid().selModel.lastSelected,
  111. ass = win.down('gridpanel');
  112. var data = new Array();
  113. ass.store.each(function(item){
  114. data.push(item.data);
  115. });
  116. if(data.length > 0){
  117. assBtn.cacheStoreGrid[record.data[assBtn.getGrid().keyField] || (-assBtn.getGrid().store.indexOf(record))] = data;
  118. }
  119. win.close();
  120. }
  121. },{
  122. text: $I18N.common.button.erpOffButton,
  123. cls: 'x-btn-blue',
  124. handler: function(btn) {
  125. btn.ownerCt.ownerCt.close();
  126. }
  127. }]
  128. }).show();
  129. assBtn.getAssGrid(win.down('gridpanel'), id, record.get('ca_assname'),record.get('ca_asstype'));
  130. }
  131. }
  132. },
  133. getDbfindSet: function(type) {
  134. var sets = {
  135. 'Vend': {
  136. dbfind: 'Vendor|ve_code',
  137. dbfinds: [{dbGridField:'ve_code',field:'dass_codefield'},{dbGridField:'ve_name',field:'dass_namefield'}]
  138. },
  139. 'Dept': {
  140. dbfind: 'Department|dp_code',
  141. dbfinds: [{dbGridField:'dp_code',field:'dass_codefield'},{dbGridField:'dp_name',field:'dass_namefield'}]
  142. },
  143. 'Empl': {
  144. dbfind: 'Employee|em_code',
  145. dbfinds: [{dbGridField:'em_code',field:'dass_codefield'},{dbGridField:'em_name',field:'dass_namefield'}]
  146. },
  147. 'Store': {
  148. dbfind: 'WareHouse|wh_code',
  149. dbfinds: [{dbGridField:'wh_code',field:'dass_codefield'},{dbGridField:'wh_description',field:'dass_namefield'}]
  150. },
  151. 'Cust': {
  152. dbfind: 'Customer|cu_code',
  153. dbfinds: [{dbGridField:'cu_code',field:'dass_codefield'},{dbGridField:'cu_name',field:'dass_namefield'}]
  154. }
  155. };
  156. return sets[type] || {
  157. dbfind: 'AssKindDetail|akd_asscode',
  158. dbfinds: [{dbGridField:'akd_asscode',field:'dass_codefield'},{dbGridField:'akd_assname',field:'dass_namefield'}]
  159. };
  160. },
  161. getAssGrid: function(grid, id,assname,asstype) {
  162. var me = this;
  163. if(!me.cacheStoreGrid[id]){
  164. if(id == null || id <= 0){
  165. var data = new Array(),r = assname.split('#'),t = asstype.split('#');
  166. for(var i=0;i<r.length;i++){
  167. var o = new Object();
  168. o.dass_condid = id;
  169. o.dass_assname = r[i];
  170. o.dass_asstype = t[i];
  171. data.push(o);
  172. }
  173. grid.store.loadData(data);
  174. } else {
  175. var condition = "dass_condid=" + id;
  176. Ext.Ajax.request({
  177. url : basePath + 'common/getFieldsDatas.action',
  178. params: {
  179. caller: me.ownerCt.ownerCt.detailAssCaller,
  180. fields: 'dass_id,dass_condid,dass_assname,dass_codefield,dass_namefield,dass_asstype',
  181. condition: condition
  182. },
  183. method : 'post',
  184. callback : function(options,success,response){
  185. var res = new Ext.decode(response.responseText);
  186. if(res.exception || res.exceptionInfo){
  187. showError(res.exceptionInfo);
  188. return;
  189. }
  190. var data = Ext.decode(res.data);
  191. var dd = new Array(),r = assname.split('#'),t = asstype.split('#');
  192. for(var i=0;i<r.length;i++){
  193. var o = new Object();
  194. Ext.Array.each(data, function(d){
  195. if(d.DASS_ASSNAME == r[i]) {
  196. o.dass_id = d.DASS_ID;
  197. o.dass_condid = d.DASS_CONDID;
  198. o.dass_assname = d.DASS_ASSNAME;
  199. o.dass_asstype = t[i];
  200. o.dass_codefield = d.DASS_CODEFIELD;
  201. o.dass_namefield = d.DASS_NAMEFIELD;
  202. dd.push(o);
  203. }
  204. });
  205. if(o.dass_id == null) {
  206. o.dass_condid = id;
  207. o.dass_assname = r[i];
  208. o.dass_asstype = t[i];
  209. dd.push(o);
  210. }
  211. }
  212. if(dd.length == 0) {
  213. dd = [{}, {}, {}, {}, {},{}];
  214. }
  215. grid.store.loadData(dd);
  216. }
  217. });
  218. }
  219. } else {
  220. grid.store.loadData(me.cacheStoreGrid[id]);
  221. }
  222. }
  223. });