AssMain.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. /**
  2. * 辅助核算按钮
  3. */
  4. Ext.define('erp.view.core.button.AssMain', {
  5. extend: 'Ext.Button',
  6. alias: 'widget.erpAssMainButton',
  7. iconCls: 'x-button-icon-check',
  8. cls: 'x-btn-gray',
  9. id: 'assmainbutton',
  10. text: $I18N.common.button.erpAssMainButton,
  11. GridUtil: Ext.create('erp.util.GridUtil'),
  12. BaseUtil: Ext.create('erp.util.BaseUtil'),
  13. // disabled:true,
  14. cacheStoreForm: new Array(),
  15. cacheStoreGrid: new Array(),
  16. cacheStore: new Object(),
  17. //所有数据
  18. cacheAss: new Object(),
  19. //asstype改变时,cacheStore改变
  20. asstype: new Array(),
  21. asskind: new Array(),
  22. style: {
  23. marginLeft: '10px'
  24. },
  25. width: 85,
  26. listeners: {
  27. click: function() {
  28. var me = this;
  29. var form = me.ownerCt.ownerCt,
  30. id = Ext.getCmp(form.keyField).getValue();
  31. var win = Ext.getCmp('assmain-' + id);
  32. if (win) {
  33. win.show();
  34. } else {
  35. var grid = Ext.create('Ext.grid.Panel', {
  36. id: 'assgrid-main',
  37. anchor: '100% 100%',
  38. columns: [{
  39. text: 'ID',
  40. hidden: true,
  41. dataIndex: 'ass_id'
  42. },
  43. {
  44. text: 'ASS_CONID',
  45. hidden: true,
  46. dataIndex: 'ass_conid'
  47. },
  48. {
  49. text: '辅助类型',
  50. dataIndex: 'ass_asstype',
  51. hidden: true,
  52. flex: 1
  53. },
  54. {
  55. text: '核算项',
  56. dataIndex: 'ass_assname',
  57. flex: 1
  58. },
  59. {
  60. text: '编号表达式',
  61. dataIndex: 'ass_codefield',
  62. flex: 1,
  63. editor: {
  64. xtype: 'dbfindtrigger'
  65. }
  66. },
  67. {
  68. text: '名称表达式',
  69. dataIndex: 'ass_namefield',
  70. flex: 1
  71. }],
  72. store: new Ext.data.Store({
  73. fields: [{
  74. name: 'ass_id',
  75. type: 'number'
  76. },
  77. {
  78. name: 'ass_conid',
  79. type: 'number'
  80. },
  81. {
  82. name: 'ass_assname',
  83. type: 'string'
  84. },
  85. {
  86. name: 'ass_asstype',
  87. type: 'string'
  88. },
  89. {
  90. name: 'ass_codefield',
  91. type: 'string'
  92. },
  93. {
  94. name: 'ass_namefield',
  95. type: 'string'
  96. }]
  97. }),
  98. columnLines: true,
  99. plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
  100. clicksToEdit: 1
  101. })],
  102. listeners: {
  103. afterrender: function(grid) {
  104. var dbfinds = new Array();
  105. dbfinds.push({
  106. dbGridField: 've_code',
  107. field: 'ass_codefield',
  108. trigger: null
  109. });
  110. dbfinds.push({
  111. dbGridField: 've_name',
  112. field: 'ass_namefield',
  113. trigger: null
  114. });
  115. dbfinds.push({
  116. dbGridField: 'dp_code',
  117. field: 'ass_codefield',
  118. trigger: null
  119. });
  120. dbfinds.push({
  121. dbGridField: 'dp_name',
  122. field: 'ass_namefield',
  123. trigger: null
  124. });
  125. dbfinds.push({
  126. dbGridField: 'em_code',
  127. field: 'ass_codefield',
  128. trigger: null
  129. });
  130. dbfinds.push({
  131. dbGridField: 'em_name',
  132. field: 'ass_namefield',
  133. trigger: null
  134. });
  135. dbfinds.push({
  136. dbGridField: 'akd_asscode',
  137. field: 'ass_codefield',
  138. trigger: null
  139. });
  140. dbfinds.push({
  141. dbGridField: 'akd_assname',
  142. field: 'ass_namefield',
  143. trigger: null
  144. });
  145. dbfinds.push({
  146. dbGridField: 'wh_code',
  147. field: 'ass_codefield',
  148. trigger: null
  149. });
  150. dbfinds.push({
  151. dbGridField: 'wh_description',
  152. field: 'ass_namefield',
  153. trigger: null
  154. });
  155. dbfinds.push({
  156. dbGridField: 'cu_code',
  157. field: 'ass_codefield',
  158. trigger: null
  159. });
  160. dbfinds.push({
  161. dbGridField: 'cu_name',
  162. field: 'ass_namefield',
  163. trigger: null
  164. });
  165. grid.dbfinds = dbfinds;
  166. grid.plugins[0].on('beforeedit',
  167. function(e) {
  168. if (e.field == 'ass_codefield') {
  169. var column = e.column,
  170. btn = Ext.getCmp("assmainbutton"),
  171. type = e.record.get('ass_asstype'),
  172. kind;
  173. if (type) {
  174. kind = btn.asskind[type];
  175. if (kind) {
  176. column.setEditor(new erp.view.core.trigger.DbfindTrigger({
  177. findConfig: kind.ak_addkind == null ? '': ('ak_addkind=\'' + kind.ak_addkind + '\'')
  178. }));
  179. column.dbfind = kind.ak_dbfind + '|' + kind.ak_asscode;
  180. grid.dbfinds = [{
  181. field: 'ass_codefield',
  182. dbGridField: kind.ak_asscode
  183. },
  184. {
  185. field: 'ass_namefield',
  186. dbGridField: kind.ak_assname
  187. }];
  188. }
  189. }
  190. }
  191. /*
  192. if(e.field=='ass_codefield'){
  193. var record = e.record;
  194. var column = e.column;
  195. switch(record.data['ass_asstype']){
  196. // Vend 供应商 Vendor Vendor ve_code
  197. // Dept 部门 Department Department dp_code
  198. // Empl 员工 Emplyee Employee em_code
  199. // Otc 其它应收客户 AssAddData AssAddData aad_code
  200. // Otv 其它应付供应商 AssAddData AssAddData aad_code
  201. // Otp 项目 AssAddData AssAddData aad_code
  202. // Store 仓库 WareHouse WareHouse wh_code
  203. // Cust 客户 Customer Customer cu_code
  204. case "Vend":
  205. column.dbfind='Vendor|ve_code';
  206. break;
  207. case "Dept":
  208. column.dbfind='Department|dp_code';
  209. break;
  210. case "Empl":
  211. column.dbfind='Employee|em_code';
  212. break;
  213. case "Otc":
  214. column.dbfind='AssKindDetail|akd_asscode';
  215. break;
  216. case "Otv":
  217. column.dbfind='AssKindDetail|akd_asscode';
  218. break;
  219. case "Otp":
  220. column.dbfind='AssKindDetail|akd_asscode';
  221. break;
  222. case "Store":
  223. column.dbfind='WareHouse|wh_code';
  224. break;
  225. case "Cust":
  226. column.dbfind='Customer|cu_code';
  227. break;
  228. }
  229. }
  230. */
  231. });
  232. }
  233. }
  234. });
  235. win = Ext.create('Ext.Window', {
  236. width: 500,
  237. height: 360,
  238. layout: 'anchor',
  239. id: 'assmain-' + id,
  240. title: '辅助核算',
  241. items: [grid],
  242. buttonAlign: 'center',
  243. modal: true,
  244. buttons: [{
  245. text: $I18N.common.button.erpConfirmButton,
  246. cls: 'x-btn-blue',
  247. handler: function(btn) {
  248. var win = btn.ownerCt.ownerCt,
  249. ass = win.down('gridpanel');
  250. var data = new Array();
  251. ass.store.each(function(item) {
  252. data.push(item.data);
  253. });
  254. if (data.length > 0) {
  255. me.cacheStoreForm[Ext.getCmp(me.ownerCt.ownerCt.keyField).getValue()] = data;
  256. }
  257. win.hide();
  258. }
  259. },
  260. {
  261. text: $I18N.common.button.erpOffButton,
  262. cls: 'x-btn-blue',
  263. handler: function(btn) {
  264. btn.ownerCt.ownerCt.hide();
  265. }
  266. }]
  267. }).show();
  268. }
  269. me.getAssForm(win.down('gridpanel'), id, form.down('#ca_assname').getValue(), form.down('#ca_asstype').getValue());
  270. }
  271. },
  272. getAssData: function(id) {
  273. var me = this;
  274. var grid = Ext.getCmp('assgrid-main');
  275. Ext.each(grid.store.data.items,
  276. function(item, index) {
  277. // me.asstype = Ext.isEmpty(item.data['ass_asstype']) ?
  278. // new Array() : item.data['ass_asstype'].toString().split('#');
  279. me.asstype.push(item.data['ass_asstype']);
  280. var type = item.data['ass_asstype'];
  281. if (me.asskind[type]) {
  282. item.set('ass_asstype', me.asskind[type].ak_name);
  283. } else {
  284. Ext.Ajax.request({
  285. url: basePath + 'common/getFieldsData.action',
  286. async: false,
  287. params: {
  288. caller: 'AssKind',
  289. fields: 'ak_name,ak_table,ak_dbfind,ak_asscode,ak_assname,ak_addkind',
  290. condition: "ak_code='" + type + "'"
  291. },
  292. method: 'post',
  293. callback: function(options, success, response) {
  294. var localJson = new Ext.decode(response.responseText);
  295. if (localJson.exceptionInfo) {
  296. showError(localJson.exceptionInfo);
  297. return;
  298. }
  299. if (localJson.success) {
  300. var d = localJson.data;
  301. if (Ext.isEmpty(item.get('ass_asstype'))) item.set('ass_asstype', d.ak_name);
  302. me.asskind[type] = d;
  303. }
  304. }
  305. });
  306. }
  307. });
  308. var data = new Array();
  309. Ext.each(grid.store.data.items,
  310. function() {
  311. data.push(this.data);
  312. });
  313. /* if(data.length > 0){
  314. me.cacheStore[id] = data;
  315. }*/
  316. },
  317. getAssForm: function(grid, id, assname, asstype) {
  318. var me = this;
  319. if (!me.cacheStoreForm[id]) {
  320. if (id == null || id <= 0) {
  321. var data = new Array(),
  322. r = assname.split('#'),
  323. t = asstype.split('#');
  324. for (var i = 0; i < r.length; i++) {
  325. var o = new Object();
  326. o.ass_conid = id;
  327. o.ass_assname = r[i];
  328. o.ass_asstype = t[i];
  329. data.push(o);
  330. }
  331. grid.store.loadData(data);
  332. } else {
  333. var condition = "ass_conid=" + id;
  334. Ext.Ajax.request({
  335. url: basePath + 'common/getFieldsDatas.action',
  336. params: {
  337. caller: me.ownerCt.ownerCt.assCaller,
  338. fields: 'ass_id,ass_conid,ass_assname,ass_codefield,ass_namefield,ass_asstype',
  339. condition: condition
  340. },
  341. method: 'post',
  342. callback: function(options, success, response) {
  343. var res = new Ext.decode(response.responseText);
  344. if (res.exception || res.exceptionInfo) {
  345. showError(res.exceptionInfo);
  346. return;
  347. }
  348. var data = Ext.decode(res.data);
  349. var dd = new Array(),
  350. r = assname.split('#'),
  351. t = asstype.split('#');
  352. for (var i = 0; i < r.length; i++) {
  353. var o = new Object();
  354. Ext.Array.each(data,
  355. function(d) {
  356. if (d.ASS_ASSNAME == r[i]) {
  357. o.ass_id = d.ASS_ID;
  358. o.ass_conid = d.ASS_CONID;
  359. o.ass_assname = d.ASS_ASSNAME;
  360. o.ass_asstype = t[i];
  361. o.ass_codefield = d.ASS_CODEFIELD;
  362. o.ass_namefield = d.ASS_NAMEFIELD;
  363. dd.push(o);
  364. }
  365. });
  366. if (o.ass_id == null) {
  367. o.ass_conid = id;
  368. o.ass_assname = r[i];
  369. o.ass_asstype = t[i];
  370. dd.push(o);
  371. }
  372. }
  373. if (dd.length == 0) {
  374. dd = [{},
  375. {},
  376. {},
  377. {},
  378. {},
  379. {}];
  380. }
  381. grid.store.loadData(dd);
  382. me.getAssData();
  383. }
  384. });
  385. }
  386. } else {
  387. grid.store.loadData(me.cacheStoreForm[id]);
  388. }
  389. },
  390. initComponent: function() {
  391. this.callParent(arguments);
  392. }
  393. });