AssMain.js 16 KB

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