AutoGetNum.js 6.7 KB

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