LogicDesc.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.ma.logic.LogicDesc', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'ma.logic.LogicDesc','core.form.Panel','core.grid.Panel2','core.form.YnField',
  9. 'core.button.Add','core.button.Save','core.button.Close','core.button.Test','core.button.Update',
  10. 'core.button.Publish','core.form.FileField','core.button.Sync',
  11. 'core.trigger.DbfindTrigger','core.trigger.MultiDbfindTrigger','core.toolbar.Toolbar'
  12. ],
  13. init:function(){
  14. var me = this;
  15. this.control({
  16. 'field[name=ld_pwd]': {
  17. afterrender: function(f){
  18. f.el.dom.getElementsByTagName('input')[0].type = "password";
  19. }
  20. },
  21. 'textarea[name=ld_source]': {
  22. afterrender: function(f){
  23. f.setHeight(300);
  24. }
  25. },
  26. 'textarea[name=ld_desc]': {
  27. afterrender: function(f){
  28. f.setHeight(40);
  29. }
  30. },
  31. 'combobox[name=ld_mtype]': {
  32. afterrender: function(f){
  33. //me.showDefaultParams(f);
  34. },
  35. change: function(f){
  36. me.showDefaultParams(f);
  37. }
  38. },
  39. 'combobox[name=ld_type]': {
  40. afterrender: function(t) {
  41. me.checkType(t.value);
  42. },
  43. change: function(t){
  44. me.checkType(t.value);
  45. }
  46. },
  47. 'field[name=ld_classname]': {
  48. afterrender: function(f){
  49. if(Ext.isEmpty(f.value)){
  50. f.hide();
  51. } else {
  52. f.show();
  53. }
  54. }
  55. },
  56. 'field[name=ld_methodname]': {
  57. afterrender: function(f){
  58. if(Ext.isEmpty(f.value)){
  59. f.hide();
  60. } else {
  61. f.show();
  62. }
  63. }
  64. },
  65. 'field[name=ld_lncode]': {
  66. afterrender: function(f){
  67. if (!Ext.isEmpty(ld_lncode) && Ext.isEmpty(f.value) ) {
  68. f.setValue(ld_lncode);
  69. }
  70. }
  71. },
  72. 'multidbfindtrigger[name=ldf_field]': {
  73. focus: function(t){
  74. t.setHideTrigger(false);
  75. t.setReadOnly(false);
  76. var record = Ext.getCmp('grid').selModel.getLastSelected();
  77. var tab = record.data['ldf_table'];
  78. if(tab != null && tab != ''){
  79. t.dbBaseCondition = "upper(ddd_tablename)='" + tab.toUpperCase() + "'";
  80. }
  81. }
  82. },
  83. 'field[name=ldf_table]': {
  84. change: function(f){
  85. if (!Ext.isEmpty(f.value)) {
  86. f.setValue(f.value.toUpperCase());
  87. }
  88. }
  89. },
  90. 'dbfindtrigger[name=ld_module]': {
  91. afterrender: function(f){
  92. f.onTriggerClick = function(){
  93. me.getLogicTree();
  94. };
  95. f.autoDbfind = false;
  96. }
  97. },
  98. 'erpSaveButton': {
  99. click: function(btn){
  100. this.FormUtil.beforeSave(me);
  101. }
  102. },
  103. 'erpUpdateButton': {
  104. click: function(btn){
  105. var s = Ext.getCmp('ld_status').value;
  106. if (s == '无效') {//无效状态下,直接更新
  107. this.FormUtil.onUpdate(this);
  108. } else {//有效状态下,升级版本
  109. var f = Ext.getCmp('ld_type');
  110. if(f && f.value == 0) {
  111. warnMsg('当前更改需要升级算法的版本,确定升级版本?', function(btn){
  112. if(btn == 'yes'){
  113. var c = Ext.getCmp('ld_code'),
  114. v = Ext.getCmp('ld_version');
  115. me.FormUtil.onAdd('addLogicChange', '算法升级', 'jsps/ma/logic/logicChange.jsp?lc_ldcode=' + c +
  116. "&lc_oldversion=" + v);
  117. }
  118. });
  119. } else {
  120. showError('当前类型的算法(系统算法和主算法)不支持修改和升级!');
  121. }
  122. }
  123. }
  124. },
  125. 'erpAddButton': {
  126. click: function(){
  127. me.FormUtil.onAdd('addLogicDesc', '添加新算法', 'jsps/ma/logic/logicDesc.jsp');
  128. }
  129. },
  130. 'erpCloseButton': {
  131. click: function(btn){
  132. this.FormUtil.beforeClose(me);
  133. }
  134. },
  135. 'erpGridPanel2': {
  136. itemclick: function(selModel, record){
  137. this.GridUtil.onGridItemClick(selModel, record);
  138. }
  139. },
  140. 'erpTestButton': {
  141. afterrender: function(btn){
  142. var f = Ext.getCmp('ld_test');
  143. if (f.value == '测试通过') {
  144. btn.hide();
  145. }
  146. },
  147. click: function(btn){
  148. Ext.Ajax.request({
  149. url: basePath + 'ma/logic/testLogicDesc.action',
  150. params: {
  151. id: Ext.getCmp('ld_id').value
  152. },
  153. method: 'post',
  154. callback: function(options, success, response){
  155. var res = new Ext.decode(response.responseText);
  156. if(res.log) {
  157. showError(res.log);
  158. } else {
  159. alert("测试通过");
  160. window.location.reload();
  161. }
  162. }
  163. });
  164. }
  165. },
  166. 'erpPublishButton': {
  167. afterrender: function(btn){
  168. var f = Ext.getCmp('ld_status'),
  169. t = Ext.getCmp('ld_test');
  170. if (t.value != '测试通过' || f.value != '无效') {
  171. btn.hide();
  172. }
  173. if (f.value == '有效') {
  174. var items = f.ownerCt.items.items;
  175. Ext.each(items, function(item){
  176. item.setReadOnly(true);
  177. item.setFieldStyle('background:#f1f1f1;');
  178. });
  179. Ext.getCmp('grid').readOnly = true;
  180. }
  181. },
  182. click: function(btn){
  183. var tab = me.BaseUtil.getActiveTab();
  184. tab.setLoading(true);
  185. Ext.Ajax.request({
  186. url: basePath + 'ma/logic/publishLogicDesc.action',
  187. params: {
  188. id: Ext.getCmp('ld_id').value
  189. },
  190. method: 'post',
  191. callback: function(options, success, response){
  192. tab.setLoading(false);
  193. var res = new Ext.decode(response.responseText);
  194. if(res.exceptionInfo) {
  195. showError(res.exceptionInfo);
  196. return;
  197. }
  198. if(res.log) {
  199. showError(res.log);
  200. } else {
  201. alert("发布成功,您现在可以到【算法配置】里面将该算法配置到相应的单据逻辑中");
  202. window.location.reload();
  203. }
  204. }
  205. });
  206. }
  207. },
  208. 'treepanel': {
  209. itemmousedown: function(selModel, record){
  210. var tree = selModel.ownerCt;
  211. me.loadTree(tree, record);
  212. }
  213. }
  214. });
  215. },
  216. getForm: function(btn){
  217. return btn.ownerCt.ownerCt;
  218. },
  219. showDefaultParams: function(f){
  220. var form = f.ownerCt,
  221. idx = 0;
  222. if(!Ext.getCmp('defaultParams')){
  223. Ext.each(form.items.items, function(item, i){
  224. if(item.id == f.id){
  225. idx = i;
  226. }
  227. });
  228. form.insert(idx + 3 , {
  229. xtype: 'displayfield',
  230. columnWidth: 1 - f.columnWidth,
  231. id: 'defaultParams'
  232. });
  233. }
  234. var d = Ext.getCmp('defaultParams'),
  235. v = d.value;
  236. switch(f.value){
  237. case 'save':
  238. v = '参数:主表数据(HashMap<Object, Object> store), 明细表数据(ArrayList<Map<Object, Object>> gstore), 语言(String language)';
  239. break;
  240. case 'commit':
  241. v = '参数:单据ID(Integer id), 语言(String language), 操作人员信息(Employee employee)';
  242. break;
  243. case 'resCommit':
  244. v = '参数:单据ID(Integer id), 语言(String language), 操作人员信息(Employee employee)';
  245. break;
  246. case 'delete':
  247. v = '参数:单据ID(Integer id), 语言(String language)';
  248. break;
  249. case 'deletedetail':
  250. v = '参数:明细行ID(Integer id), 语言(String language)';
  251. break;
  252. case 'audit':
  253. v = '参数:单据ID(Integer id), 语言(String language), 操作人员信息(Employee employee)';
  254. break;
  255. case 'resAudit':
  256. v = '参数:单据ID(Integer id), 语言(String language), 操作人员信息(Employee employee)';
  257. break;
  258. case 'post':
  259. v = '参数:单据ID(Integer id), 语言(String language)';
  260. break;
  261. case 'resPost':
  262. v = '参数:单据ID(Integer id), 语言(String language)';
  263. break;
  264. case 'turn':
  265. v = '参数:单据ID(Integer id), 语言(String language)';
  266. break;
  267. case 'resTurn':
  268. v = '参数:单据ID(Integer id), 语言(String language)';
  269. break;
  270. }
  271. d.setValue(v);
  272. },
  273. checkType: function(val){
  274. if(val == -1) {
  275. Ext.getCmp('ld_source').allowBlank = true;
  276. Ext.getCmp('ld_source').hide();
  277. Ext.getCmp('ld_classname').show();
  278. Ext.getCmp('ld_methodname').show();
  279. Ext.getCmp('ld_classname').allowBlank = false;
  280. Ext.getCmp('ld_classname').setFieldStyle('background:#fffac0;');
  281. Ext.getCmp('ld_methodname').allowBlank = false;
  282. Ext.getCmp('ld_methodname').setFieldStyle('background:#fffac0;');
  283. } else {
  284. Ext.getCmp('ld_source').allowBlank = false;
  285. Ext.getCmp('ld_source').show();
  286. Ext.getCmp('ld_classname').hide();
  287. Ext.getCmp('ld_methodname').hide();
  288. Ext.getCmp('ld_classname').allowBlank = true;
  289. Ext.getCmp('ld_classname').setFieldStyle('background:#f1f1f1;');
  290. Ext.getCmp('ld_methodname').allowBlank = true;
  291. Ext.getCmp('ld_methodname').setFieldStyle('background:#f1f1f1;');
  292. }
  293. },
  294. getLogicTree: function(){
  295. var w = Ext.create('Ext.Window',{
  296. title: '查找模板',
  297. height: "100%",
  298. width: "80%",
  299. maximizable : true,
  300. buttonAlign : 'center',
  301. layout : 'anchor',
  302. items: [{
  303. anchor: '100% 100%',
  304. xtype: 'treepanel',
  305. rootVisible: false,
  306. useArrows: true,
  307. store: Ext.create('Ext.data.TreeStore', {
  308. root : {
  309. text: 'root',
  310. id: 'root',
  311. expanded: true
  312. }
  313. })
  314. }],
  315. buttons : [{
  316. text : '关 闭',
  317. iconCls: 'x-button-icon-close',
  318. cls: 'x-btn-gray',
  319. handler : function(btn){
  320. btn.ownerCt.ownerCt.close();
  321. }
  322. },{
  323. text: '确定',
  324. iconCls: 'x-button-icon-confirm',
  325. cls: 'x-btn-gray',
  326. handler: function(btn){
  327. var t = btn.ownerCt.ownerCt.down('treepanel');
  328. if(!Ext.isEmpty(t.title)) {
  329. Ext.getCmp('ld_module').setValue(t.title);
  330. }
  331. btn.ownerCt.ownerCt.close();
  332. }
  333. }]
  334. });
  335. w.show();
  336. this.loadTree(w.down('treepanel'), null);
  337. },
  338. loadTree: function(tree, record){
  339. var pid = 0;
  340. if(record) {
  341. if (record.get('leaf')) {
  342. return;
  343. } else {
  344. if(record.isExpanded() && record.childNodes.length > 0){
  345. record.collapse(true, true);//收拢
  346. return;
  347. } else {
  348. if(record.childNodes.length != 0){
  349. record.expand(false, true);//展开
  350. return;
  351. }
  352. }
  353. }
  354. pid = record.get('id');
  355. }
  356. tree.setLoading(true);
  357. Ext.Ajax.request({
  358. url : basePath + 'common/lazyTree.action',
  359. params: {
  360. parentId: pid,
  361. condition: 'sn_logic=1'
  362. },
  363. callback : function(options,success,response){
  364. tree.setLoading(false);
  365. var res = new Ext.decode(response.responseText);
  366. if(res.tree){
  367. if(record) {
  368. record.appendChild(res.tree);
  369. record.expand(false,true);//展开
  370. tree.setTitle(record.getPath('text', '/').replace('root', '').replace('//', '/'));
  371. } else {
  372. tree.store.setRootNode({
  373. text: 'root',
  374. id: 'root',
  375. expanded: true,
  376. children: res.tree
  377. });
  378. }
  379. } else if(res.exceptionInfo){
  380. showError(res.exceptionInfo);
  381. }
  382. }
  383. });
  384. }
  385. });