AutoGetNum.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.product.AutoGetNum', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. views:[
  7. 'scm.product.ProductKindTree','scm.product.AutoGetNum'
  8. ],
  9. init:function(){
  10. var me = this;
  11. me.lastSelected = null;
  12. me.lastCode = '';
  13. me.codeisnull = true;
  14. this.control({
  15. 'prodkindtree': {
  16. itemmousedown: function(selModel, record){
  17. me.loadTab(selModel, record);
  18. me.lastSelected = record;
  19. },
  20. itemdblclick: function(view, record){
  21. me.lastSelected = record;
  22. var btn = Ext.getCmp('confirm');
  23. btn.fireEvent('click', btn);
  24. }
  25. },
  26. 'button[name=code]': {
  27. afterrender: function(btn) {
  28. if('PreProduct' == parent.window.caller) {
  29. btn.hide();
  30. me.getSetting('PreGetCode', function(bool){// PreGetCode == true 表示允许在新物料申请的时候生成料号
  31. if(bool) {
  32. btn.show();
  33. }
  34. });
  35. }
  36. },
  37. click: function(btn){
  38. if(me.lastSelected != null){
  39. if(me.lastSelected.isLeaf() || me.lastSelected.childNodes.length == 0){
  40. Ext.Ajax.request({
  41. url : basePath + me.getUrl(),
  42. params: {
  43. id: me.lastSelected.data['id']
  44. },
  45. method : 'post',
  46. callback : function(options,success,response){
  47. var localJson = new Ext.decode(response.responseText);
  48. if(localJson.exceptionInfo){
  49. showError(localJson.exceptionInfo);
  50. }
  51. if(localJson.success){
  52. Ext.getCmp('auto_code').setValue(me.lastCode + localJson.number);
  53. me.codeisnull = false;
  54. if(!me.codeisnull){
  55. var f = parent.Ext.ComponentQuery.query('autocodetrigger');
  56. if(f){
  57. if(me.lastSelected != null){
  58. var s = me.lastSelected.getPath('text', ';').split(';'),
  59. arr = new Array();
  60. Ext.each(s, function(){
  61. if(this != '' && this != 'root') {
  62. arr.push(String(this));
  63. }
  64. });
  65. var val = Ext.getCmp('auto_code').value;
  66. f[0].setValue(val);
  67. f[0].fireEvent('aftertrigger', f[0], val, arr, me.lastSelected);
  68. }
  69. }
  70. parent.Ext.getCmp('win').close();
  71. } else {
  72. showError("物料编号还没有生成!");
  73. }
  74. }
  75. }
  76. });
  77. } else {
  78. showError("[" + me.lastSelected.data['text'] + "]下面还有详细种类!");
  79. }
  80. } else {
  81. showError("请选择种类!");
  82. }
  83. }
  84. },
  85. 'button[name=confirm]':{
  86. click:function(){
  87. var f = parent.Ext.ComponentQuery.query('autocodetrigger');
  88. if(f){
  89. if(me.lastSelected != null){
  90. var s = me.lastSelected.getPath('text', ';').split(';'),
  91. arr = new Array();
  92. Ext.each(s, function(){
  93. if(this != '' && this != 'root') {
  94. arr.push(this);
  95. }
  96. });
  97. parent.Ext.getCmp('win').close();
  98. f[0].fireEvent('aftertrigger', f[0], null, arr, me.lastSelected);
  99. }
  100. }
  101. }
  102. },
  103. 'button[name=close]': {
  104. click: function(){
  105. parent.Ext.getCmp('win').close();
  106. }
  107. }
  108. });
  109. },
  110. loadTab: function(selModel, record){
  111. var me = this;
  112. var tree = Ext.getCmp('tree-panel');
  113. if (record.get('leaf')) {
  114. } else {
  115. if(record.isExpanded() && record.childNodes.length > 0){//是根节点,且已展开
  116. record.collapse(true,true);//收拢
  117. } else {//未展开
  118. //看是否加载了其children
  119. if(record.childNodes.length == 0){
  120. //从后台加载
  121. tree.setLoading(true, tree.body);
  122. Ext.Ajax.request({//拿到tree数据
  123. url : basePath + tree.getUrl(),
  124. params: {
  125. parentid: record.data['id'],
  126. allKind:this.allKind
  127. },
  128. async: false,
  129. callback : function(options,success,response){
  130. tree.setLoading(false);
  131. var res = new Ext.decode(response.responseText);
  132. if(res.tree){
  133. record.appendChild(res.tree);
  134. record.expand(false,true);//展开
  135. } else if(res.exceptionInfo){
  136. showError(res.exceptionInfo);
  137. }
  138. }
  139. });
  140. } else {
  141. record.expand(false,true);//展开
  142. }
  143. }
  144. }
  145. tree.getExpandedItems(record);
  146. me.lastCode = '';
  147. var choose = new Array();
  148. Ext.each(tree.expandedNodes, function(){
  149. me.lastCode += this.data['qtip'];
  150. choose.push(this.data['text']);
  151. });
  152. var c = Ext.getCmp('choose');
  153. c.show();
  154. c.update({nodes: choose});
  155. Ext.getCmp('auto_code').setValue(me.lastCode);
  156. me.codeisnull = true;
  157. },
  158. getUrl: function(){
  159. type = type || 'Product';
  160. var url = 'scm/product/getProductKindNum.action';
  161. switch (type) {
  162. case 'Vendor':
  163. url = 'scm/purchase/getVendorKindNum.action';break;
  164. case 'Customer':
  165. url = 'scm/sale/getCustomerKindNum.action';break;
  166. }
  167. return url;
  168. },
  169. getSetting : function(type, fn) {
  170. Ext.Ajax.request({
  171. url : basePath + 'common/getFieldData.action',
  172. async: false,
  173. params: {
  174. caller: 'Setting',
  175. field: 'se_value',
  176. condition: 'se_what=\'' + type + '\''
  177. },
  178. method : 'post',
  179. callback : function(opt, s, res){
  180. var r = new Ext.decode(res.responseText);
  181. if(r.exceptionInfo){
  182. showError(r.exceptionInfo);return;
  183. } else if(r.success && r.data){
  184. fn.call(null, r.data == 'true');
  185. }
  186. }
  187. });
  188. }
  189. });