Feedback.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.sys.Feedback', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. currentManfield:null,
  7. views:[
  8. 'core.form.Panel','sys.Feedback','core.form.MultiField','core.button.Reply',
  9. 'core.button.Add','core.button.Submit','core.button.ResSubmit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
  10. 'core.button.Upload','core.button.Update','core.button.Delete','core.button.ResAudit','core.button.ForBidden',
  11. 'core.button.ResForBidden','core.form.FileField','core.button.TurnProject','core.button.TurnBuglist','core.button.Checktask','core.button.Endfeedback',
  12. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.form.YnField','core.trigger.AutoCodeTrigger','core.button.Canceltask','core.button.Back','core.button.Confirm',
  13. 'core.button.ChangeHandler','core.button.ProcessConfirm','core.button.Modify'
  14. ],
  15. init:function(){
  16. var me = this;
  17. this.control({
  18. /*'erpFormPanel': {
  19. afterrender:function(form){
  20. Ext.defer(function(){
  21. var _k=form.down('#fb_kind').getValue(),
  22. _p=form.down('#fb_position').getValue(),
  23. fbid=form.down('#fb_id').getValue(),
  24. _status=form.down('#fb_statuscode').getValue(),info=null,hasfocused=false,handmanid=null;
  25. if(_status!='ENTERING' && _status!='REPLYED'){
  26. info=me.getCurrentFlow(_k,_p);
  27. if(_p=='End'){
  28. var datalistId = getUrlParam('datalistId');
  29. var datalist = parent.Ext.getCmp(datalistId);
  30. if(datalist){
  31. var record = datalist.currentRecord;
  32. if (record.get('fb_position')=='End')handmanid=record.get('em_id');
  33. }
  34. }else {
  35. handmanid=form.down('#'+info['ff_handmanfield']).getValue();
  36. me.currentManfield=info['ff_handmanfield'];
  37. Ext.getCmp(info['ff_handmanfield']).on('change',function(){
  38. var buttons=Ext.ComponentQuery.query('erpChangeHandlerButton');
  39. if(buttons) buttons[0].setDisabled(false);
  40. });
  41. }
  42. if(handmanid==emid){
  43. Ext.Array.each(form.items.items,function(item){
  44. if(item.groupName==info['ff_caption']){
  45. console.log(item.fieldLabel);
  46. console.log(item.value);
  47. if(item.fieldLabel=='处理时间' || item.fieldLabel=='回复时间' ){
  48. item.setValue(new Date());
  49. item.setReadOnly(false);
  50. }else if(item.fieldLabel=='预计完成时间' && item.value){
  51. }else if(item.name=='fb_backman'){
  52. item.setValue(em_name);
  53. }else {
  54. if(!hasfocused) {item.focus(false, 200); hasfocused=true;} item.setReadOnly(false);
  55. item.setFieldStyle("background:#fffac0;color:#515151;");
  56. if(me.RelativeFields[_p] && item.name==me.RelativeFields[_p].remarkField) item.setValue(null);
  57. }
  58. }
  59. });
  60. }else {
  61. form.down('erpConfirmButton').hide();
  62. form.down('erpChangeHandlerButton').hide();
  63. form.down('erpBackButton').hide();
  64. }
  65. }
  66. //插入处理日志
  67. if(fbid){
  68. var data= me.loadNewStore(fbid);
  69. var index=me.getInsertIndex();
  70. form.insert(index,{
  71. xtype: 'fieldset',
  72. title: '<h2><img src="' + basePath + 'resource/images/icon/communicate.png" width=20/>处理明细</h2>',
  73. collapsible: true,
  74. //collapsed: true,
  75. columnWidth:1,
  76. layout: 'anchor',
  77. defaults: {
  78. anchor: '100%',
  79. labelStyle: 'padding-left:4px;'
  80. },
  81. items:[{
  82. autoScroll: true,
  83. xtype: 'dataview',
  84. tpl:Ext.create('Ext.XTemplate',
  85. '<tpl for=".">',
  86. '<div class="search-item">',
  87. '<h3><span>{fl_date}<br /> {fl_man}</span>',
  88. '<font color="blue">{fl_position:this.formatTitle} &nbsp;&nbsp;</font></h3>',
  89. '<p>处理方式 :<font color="green">{fl_kind:this.formatKind}</font> {fl_remark}</p>',
  90. '</div></tpl>',
  91. {formatKind: function(value){
  92. if(value=='PLAN') return '回复处理';
  93. else if(value=='CHANGEHANDLER') return '变更处理人';
  94. else if(value=='REVIEW') return '确认处理';}
  95. },{
  96. formatTitle:function(value){
  97. if(value=='TechnicalService') return '技术支持部处理信息';
  98. else if(value=='R&D') return '研发部处理信息';
  99. else if(value=='ProductDept') return '产品部处理信息';
  100. else if(value=='Test') return '测试部处理信息';
  101. else if(value=='End') return '回复处理';
  102. }
  103. }),
  104. store: Ext.create('Ext.data.Store', {
  105. fields:[{name: 'fl_man' },
  106. {name: 'fl_date'},
  107. {name: 'fl_position'},
  108. {name: 'fl_remark'},
  109. {name: 'fl_kind'}
  110. ],
  111. data:data
  112. })
  113. }]
  114. });
  115. }
  116. },200);
  117. }
  118. },*/
  119. 'erpFormPanel': {
  120. afterrender:function(form){
  121. Ext.defer(function(){
  122. var _k=form.down('#fb_kind').getValue(),
  123. _p=form.down('#fb_position').getValue(),
  124. fbid=form.down('#fb_id').getValue(),
  125. _status=form.down('#fb_statuscode').getValue(),info=null,hasfocused=false,handmanid=null;
  126. if(_status!='ENTERING' && _status!='REPLYED'){
  127. if(!me.info){
  128. info=me.getCurrentFlow(_k,_p);
  129. me.info=info;
  130. }else info=me.info;
  131. me.otherfields=info['ff_otherfields']?info['ff_otherfields'].split(','):[];
  132. if(_p=='End'){
  133. var datalistId = getUrlParam('datalistId');
  134. var datalist = parent.Ext.getCmp(datalistId);
  135. if(datalist){
  136. var record = datalist.currentRecord;
  137. if (record.get('fb_position')=='End')handmanid=record.get('em_id');
  138. }else handmanid=form.down('#'+info['ff_manidfield']).getValue();
  139. }else {
  140. handmanid=form.down('#'+info['ff_manidfield']).getValue();
  141. me.currentManfield=info['ff_manidfield'];
  142. Ext.getCmp(info['ff_manidfield']).on('change',function(){
  143. var buttons=Ext.ComponentQuery.query('erpChangeHandlerButton');
  144. if(buttons) buttons[0].setDisabled(false);
  145. });
  146. }
  147. if(handmanid==emid){
  148. Ext.Array.each(form.items.items,function(item){
  149. if(item.groupName==info['ff_caption']){
  150. if(item.name==info['ff_dealdatefield']){
  151. item.setValue(new Date());
  152. }else if(item.name=='fb_backman'){
  153. item.setValue(em_name);
  154. }else {
  155. if(!hasfocused) {item.focus(false, 200); hasfocused=true;} item.setReadOnly(false);
  156. item.setFieldStyle("background:#fffac0;color:#515151;");
  157. if(Ext.Array.contains(me.otherfields,item.name)){
  158. item.setValue(null);
  159. }
  160. }
  161. }
  162. });
  163. }else {
  164. form.down('erpConfirmButton').hide();
  165. form.down('erpChangeHandlerButton').hide();
  166. form.down('erpBackButton').hide();
  167. }
  168. }
  169. //插入处理日志
  170. if(fbid){
  171. var data= me.loadNewStore(fbid);
  172. var index=me.getInsertIndex();
  173. form.insert(index,{
  174. xtype: 'fieldset',
  175. title: '<h2><img src="' + basePath + 'resource/images/icon/communicate.png" width=20/>处理明细</h2>',
  176. collapsible: true,
  177. columnWidth:1,
  178. layout: 'anchor',
  179. defaults: {
  180. anchor: '100%',
  181. labelStyle: 'padding-left:4px;'
  182. },
  183. items:[{
  184. autoScroll: true,
  185. xtype: 'dataview',
  186. tpl:Ext.create('Ext.XTemplate',
  187. '<tpl for=".">',
  188. '<div class="search-item">',
  189. '<h3><span>{fl_date}<br /> {fl_man}</span>',
  190. '<font color="blue">{fl_position:this.formatTitle} &nbsp;&nbsp;</font></h3>',
  191. '<p>处理方式 :<font color="green">{fl_kind:this.formatKind}</font> {fl_remark}</p>',
  192. '</div></tpl>',
  193. {formatKind: function(value){
  194. if(value=='PLAN') return '回复处理';
  195. else if(value=='CHANGEHANDLER') return '变更处理人';
  196. else if(value=='REVIEW') return '确认处理';}
  197. },{
  198. formatTitle:function(value){
  199. if(value=='TechnicalService') return '技术支持部处理信息';
  200. else if(value=='R&D') return '研发部处理信息';
  201. else if(value=='ProductDept') return '产品部处理信息';
  202. else if(value=='Test') return '测试部处理信息';
  203. else if(value=='End') return '回复处理';
  204. else return value;
  205. }
  206. }),
  207. store: Ext.create('Ext.data.Store', {
  208. fields:[{name: 'fl_man' },
  209. {name: 'fl_date'},
  210. {name: 'fl_position'},
  211. {name: 'fl_remark'},
  212. {name: 'fl_kind'}
  213. ],
  214. data:data
  215. })
  216. }]
  217. });
  218. }
  219. },100);
  220. }
  221. },
  222. 'erpSaveButton': {
  223. click: function(btn){
  224. var form = me.getForm(btn);
  225. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  226. me.BaseUtil.getRandomNumber();//自动添加编号
  227. }
  228. this.FormUtil.beforeSave(this);
  229. }
  230. },
  231. 'erpDeleteButton' : {
  232. click: function(btn){
  233. me.FormUtil.onDelete(Ext.getCmp('fb_id').value);
  234. }
  235. },
  236. 'erpTurnProject' : {
  237. click: function(btn){
  238. me.FormUtil.onDelete(Ext.getCmp('fb_id').value);
  239. }
  240. },
  241. 'erpCanceltaskButton':{
  242. click: function(btn){
  243. Ext.Ajax.request({
  244. url : basePath + '/sys/feedback/canceltask.action',
  245. params: {
  246. id: Ext.getCmp('fb_id').value,
  247. },
  248. method : 'post',
  249. callback : function(options,success,response){
  250. var localJson = new Ext.decode(response.responseText);
  251. if(localJson.exceptionInfo){
  252. var str = localJson.exceptionInfo;
  253. showError(str);
  254. }else{
  255. alert('修改成功!');
  256. }
  257. }
  258. });
  259. }
  260. },
  261. 'erpChangeHandlerButton':{
  262. click:function(btn){
  263. var newhandmanid=Ext.getCmp(me.currentManfield);
  264. var oldemid=newhandmanid.originalValue;
  265. var newemid=newhandmanid.value;
  266. var data=me.getDirtyValues(),allowsave=false;
  267. Ext.each(Ext.Object.getKeys(data), function(k){
  268. if(me.FormUtil.contains(k, 'ext-', true)){
  269. delete data[k];
  270. }
  271. if(!me.FormUtil.contains(k, 'fb_man', true) && !me.FormUtil.contains(k, 'fb_description', true)){
  272. delete data[k];
  273. }
  274. });
  275. if(oldemid==newemid){
  276. showError('未做任何处理人修改!'); return;
  277. }
  278. data.fb_id=Ext.getCmp('fb_id').getValue();
  279. data.fb_position=Ext.getCmp('fb_position').getValue();
  280. data.fb_kind=Ext.getCmp('fb_kind').getValue();
  281. me.FormUtil.setLoading(true);
  282. Ext.Ajax.request({
  283. url: basePath + 'sys/feedback/changeHandler.action',
  284. params:{
  285. data:unescape(escape(Ext.JSON.encode(data)))
  286. },
  287. method: 'post',
  288. callback: function(options,success,response){
  289. me.FormUtil.setLoading(false);
  290. var res=Ext.decode(response.responseText);
  291. if(res.exceptionInfo){
  292. showError(localJson.exceptionInfo);return;
  293. }else if(res.success){
  294. showMessage('提示','变更成功!',1000);
  295. window.location.reload();
  296. }
  297. btn.setDisabled(true);
  298. }
  299. });
  300. },
  301. afterrender:function(btn){
  302. var status=Ext.getCmp('fb_statuscode').getValue(),position=Ext.getCmp('fb_position').getValue();
  303. if(status!='AUDITED' || position=='End') btn.hide();
  304. }
  305. },
  306. 'erpTurnBuglist' : {
  307. click: function(btn){
  308. var form= Ext.getCmp('form');
  309. Ext.Ajax.request({
  310. url : basePath + form.turnBuglistUrl,
  311. params: {
  312. id: Ext.getCmp('fb_id').value
  313. },
  314. method : 'post',
  315. callback : function(options,success,response){
  316. var localJson = new Ext.decode(response.responseText);
  317. if(localJson.exceptionInfo){
  318. var str = localJson.exceptionInfo;
  319. showError(str);
  320. }else{
  321. window.location.href = basePath + "jsps/plm/test/newchecklist.jsp?formCondition=cl_idIS" + localJson.id+"&gridCondition=cld_clidIS"+localJson.id;
  322. }
  323. }
  324. });
  325. }
  326. },
  327. 'erpUpdateButton': {
  328. click: function(btn){
  329. this.FormUtil.onUpdate(this);
  330. }
  331. },
  332. 'erpAddButton': {
  333. click: function(){
  334. me.FormUtil.onAdd('addFeedback', '新增系统问题反馈', 'jsps/sys/Feedback.jsp?caller=Feedback');
  335. }
  336. },
  337. 'erpCloseButton': {
  338. click: function(btn){
  339. me.FormUtil.beforeClose(me);
  340. }
  341. },
  342. 'erpSubmitButton': {
  343. afterrender: function(btn){
  344. var status = Ext.getCmp('fb_statuscode');
  345. if(status && status.value != 'ENTERING'){
  346. btn.hide();
  347. }
  348. },
  349. click: function(btn){
  350. me.FormUtil.onSubmit(Ext.getCmp('fb_id').value);
  351. }
  352. },
  353. 'erpResSubmitButton': {
  354. afterrender: function(btn){
  355. var status = Ext.getCmp('fb_statuscode');
  356. if(status && status.value != 'COMMITED'){
  357. btn.hide();
  358. }
  359. },
  360. click: function(btn){
  361. me.FormUtil.onResSubmit(Ext.getCmp('fb_id').value);
  362. }
  363. },
  364. 'erpReplyButton': {
  365. afterrender: function(btn){
  366. var status = Ext.getCmp('fb_statuscode');
  367. if(status && status.value != 'AUDITED'){
  368. btn.hide();
  369. }
  370. },
  371. click: function(btn){
  372. var form= Ext.getCmp('form');
  373. Ext.Ajax.request({
  374. url : basePath + form.replyUrl,
  375. params: {
  376. id: Ext.getCmp('fb_id').value,
  377. comment:Ext.getCmp('fb_uasdetail').getValue(),
  378. },
  379. method : 'post',
  380. callback : function(options,success,response){
  381. var localJson = new Ext.decode(response.responseText);
  382. if(localJson.exceptionInfo){
  383. var str = localJson.exceptionInfo;
  384. showError(str);
  385. }else{
  386. alert('回复成功');
  387. window.location.href = basePath + "jsps/sys/Feedback.jsp?caller=UASFeedback&&formCondition=fb_idIS" + Ext.getCmp('ts_id').value;
  388. }
  389. }
  390. });
  391. }
  392. },
  393. 'erpAuditButton': {
  394. afterrender: function(btn){
  395. var status = Ext.getCmp('fb_statuscode');
  396. if(status && status.value != 'COMMITED'){
  397. btn.hide();
  398. }
  399. },
  400. click: function(btn){
  401. me.FormUtil.onAudit(Ext.getCmp('fb_id').value);
  402. }
  403. },
  404. 'erpBackButton':{
  405. afterrender:function(btn){
  406. var status=Ext.getCmp('fb_statuscode').getValue(),currentposition=Ext.getCmp('fb_position').getValue(),relativefield=null,form=btn.ownerCt.ownerCt;
  407. if(status!='AUDITED' || currentposition=='End' ) btn.hide();
  408. if(status=='AUDITED' && currentposition !='End'){
  409. var _k=form.down('#fb_kind').getValue(),
  410. _p=form.down('#fb_position').getValue();
  411. me.info=me.getCurrentFlow(_k,_p);
  412. relativefield=me.info['ff_plandatefield'];
  413. if(!relativefield || (relativefield && Ext.getCmp(relativefield).value)){
  414. btn.hide();
  415. }
  416. }
  417. },
  418. click:function(btn){
  419. var data=me.getDirtyValues(),allowsave=false;
  420. if(me.info){
  421. if(data[me.info['ff_plandatefield']]) allowsave=true;
  422. }
  423. if(!allowsave){
  424. showError('回复需设置预计完成时间!'); return;
  425. }
  426. Ext.Ajax.request({
  427. url : basePath + '/sys/feedback/backPlan.action',
  428. params: {
  429. data:unescape(escape(Ext.JSON.encode(data)))
  430. },
  431. method : 'post',
  432. callback : function(options,success,response){
  433. var localJson = new Ext.decode(response.responseText);
  434. if(localJson.exceptionInfo){
  435. var str = localJson.exceptionInfo;
  436. showError(str);
  437. }else{
  438. showMessage('提示','回复成功!',1000);
  439. window.location.reload();
  440. }
  441. }
  442. });
  443. }
  444. },
  445. 'erpConfirmButton':{
  446. afterrender:function(btn){
  447. var status=Ext.getCmp('fb_statuscode').getValue();
  448. if(status!='AUDITED') btn.hide();
  449. },
  450. click:function(btn){
  451. var data=me.getDirtyValues();
  452. Ext.each(Ext.Object.getKeys(data), function(k){
  453. if(me.FormUtil.contains(k, 'ext-', true)){
  454. delete r[k];
  455. }
  456. });
  457. Ext.Ajax.request({
  458. url : basePath + '/sys/feedback/confirm.action',
  459. params: {
  460. data:unescape(escape(Ext.JSON.encode(data)))
  461. },
  462. method : 'post',
  463. callback : function(options,success,response){
  464. var localJson = new Ext.decode(response.responseText);
  465. if(localJson.exceptionInfo){
  466. var str = localJson.exceptionInfo;
  467. showError(str);
  468. }else{
  469. showMessage('提示','确认成功!',1000);
  470. window.location.reload();
  471. }
  472. }
  473. });
  474. }
  475. },
  476. 'erpProcessConfirmButton':{
  477. click:function(btn){
  478. var data=me.getDirtyValues(),form=btn.ownerCt.ownerCt,step=null;
  479. var dirtys=me.getEditValues(form);
  480. Ext.each(Ext.Object.getKeys(data), function(k){
  481. if(me.FormUtil.contains(k, 'ext-', true)){
  482. delete r[k];
  483. }
  484. });
  485. Ext.each(Ext.Object.getKeys(dirtys), function(k){
  486. var field=Ext.getCmp(k);
  487. if(field && field.groupName) {
  488. step=field.groupName;
  489. return false;
  490. }
  491. });
  492. Ext.Ajax.request({
  493. url : basePath + '/sys/feedback/processConfirm.action',
  494. params: {
  495. data:unescape(escape(Ext.JSON.encode(data))),
  496. step:step
  497. },
  498. method : 'post',
  499. callback : function(options,success,response){
  500. var localJson = new Ext.decode(response.responseText);
  501. if(localJson.exceptionInfo){
  502. var str = localJson.exceptionInfo;
  503. showError(str);
  504. }else{
  505. showMessage('提示','确认成功!',1000);
  506. //window.location.reload();
  507. }
  508. }
  509. });
  510. }
  511. },
  512. 'dbfindtrigger[name=fb_module]': {
  513. afterrender: function(f){
  514. f.onTriggerClick = function(){
  515. me.getModuleTree();
  516. };
  517. f.autoDbfind = false;
  518. }
  519. },
  520. 'treepanel': {
  521. itemmousedown: function(selModel, record){
  522. var tree = selModel.ownerCt;
  523. me.loadTree(tree, record);
  524. }
  525. },
  526. 'erpChecktaskButton':{
  527. click: function(btn){
  528. Ext.Ajax.request({
  529. url : basePath + '/sys/feedback/changestatus.action',
  530. params: {
  531. id: Ext.getCmp('fb_id').value,
  532. },
  533. method : 'post',
  534. callback : function(options,success,response){
  535. var localJson = new Ext.decode(response.responseText);
  536. if(localJson.exceptionInfo){
  537. var str = localJson.exceptionInfo;
  538. showError(str);
  539. }else{
  540. alert('修改成功!');
  541. }
  542. }
  543. });
  544. }
  545. },
  546. 'erpEndfeedbackButton':{
  547. click: function(btn){
  548. Ext.Ajax.request({
  549. url : basePath + '/sys/feedback/Endfeedback.action',
  550. params: {
  551. id: Ext.getCmp('fb_id').value,
  552. },
  553. method : 'post',
  554. callback : function(options,success,response){
  555. var localJson = new Ext.decode(response.responseText);
  556. if(localJson.exceptionInfo){
  557. var str = localJson.exceptionInfo;
  558. showError(str);
  559. }else{
  560. alert('修改成功!');
  561. }
  562. }
  563. });
  564. }
  565. },
  566. 'erpResAuditButton': {
  567. afterrender: function(btn){
  568. var status = Ext.getCmp('fb_statuscode');
  569. if(status && status.value != 'AUDITED'){
  570. btn.hide();
  571. }
  572. },
  573. click: function(btn){
  574. me.FormUtil.onResAudit(Ext.getCmp('fb_id').value);
  575. }
  576. }
  577. });
  578. },
  579. getForm: function(btn){
  580. return btn.ownerCt.ownerCt;
  581. },
  582. getModuleTree: function(){
  583. var w = Ext.create('Ext.Window',{
  584. title: '查找模板',
  585. height: "100%",
  586. width: "80%",
  587. maximizable : true,
  588. buttonAlign : 'center',
  589. layout : 'anchor',
  590. items: [{
  591. anchor: '100% 100%',
  592. xtype: 'treepanel',
  593. rootVisible: false,
  594. useArrows: true,
  595. store: Ext.create('Ext.data.TreeStore', {
  596. root : {
  597. text: 'root',
  598. id: 'root',
  599. expanded: true
  600. }
  601. })
  602. }],
  603. buttons : [{
  604. text : '关 闭',
  605. iconCls: 'x-button-icon-close',
  606. cls: 'x-btn-gray',
  607. handler : function(btn){
  608. btn.ownerCt.ownerCt.close();
  609. }
  610. },{
  611. text: '确定',
  612. iconCls: 'x-button-icon-confirm',
  613. cls: 'x-btn-gray',
  614. handler: function(btn){
  615. var t = btn.ownerCt.ownerCt.down('treepanel');
  616. if(!Ext.isEmpty(t.title)) {
  617. Ext.getCmp('fb_module').setValue(t.title);
  618. }
  619. btn.ownerCt.ownerCt.close();
  620. }
  621. }]
  622. });
  623. w.show();
  624. this.loadTree(w.down('treepanel'), null);
  625. },
  626. loadTree: function(tree, record){
  627. var pid = 0;
  628. if(record) {
  629. if (record.get('leaf')) {
  630. return;
  631. } else {
  632. if(record.isExpanded() && record.childNodes.length > 0){
  633. record.collapse(true, true);//收拢
  634. return;
  635. } else {
  636. if(record.childNodes.length != 0){
  637. record.expand(false, true);//展开
  638. return;
  639. }
  640. }
  641. }
  642. pid = record.get('id');
  643. }
  644. tree.setLoading(true);
  645. Ext.Ajax.request({
  646. url : basePath + 'common/lazyTree.action?_noc=1',
  647. params: {
  648. parentId: pid,
  649. condition: 'sn_using=1'
  650. },
  651. callback : function(options,success,response){
  652. tree.setLoading(false);
  653. var res = new Ext.decode(response.responseText);
  654. if(res.tree){
  655. if(record) {
  656. record.appendChild(res.tree);
  657. record.expand(false,true);//展开
  658. tree.setTitle(record.getPath('text', '/').replace('root', '').replace('//', '/'));
  659. } else {
  660. tree.store.setRootNode({
  661. text: 'root',
  662. id: 'root',
  663. expanded: true,
  664. children: res.tree
  665. });
  666. }
  667. } else if(res.exceptionInfo){
  668. showError(res.exceptionInfo);
  669. }
  670. }
  671. });
  672. },
  673. getCurrentFlow: function(kind,position) {
  674. var result = false;
  675. Ext.Ajax.request({
  676. url : basePath + 'sys/feedback/getCurrentNode.action',
  677. async: false,
  678. params: {
  679. kind:kind,
  680. position:position
  681. },
  682. method : 'post',
  683. callback : function(opt, s, res){
  684. var r = new Ext.decode(res.responseText);
  685. if(r.exceptionInfo){
  686. showError(r.exceptionInfo);return;
  687. } else if(r.data){
  688. result = r.data;
  689. }
  690. }
  691. });
  692. return result;
  693. },
  694. getDirtyValues:function(){
  695. var form=Ext.getCmp('form'),values=this.getEditValues(form);
  696. values.fb_id=Ext.getCmp('fb_id').getValue();
  697. values.fb_position=Ext.getCmp('fb_position').getValue();
  698. values.fb_kind=Ext.getCmp('fb_kind').getValue();
  699. return values;
  700. },
  701. getEditValues:function(form){
  702. var values=new Object(),formvalues=form.getForm().getValues();
  703. Ext.Array.each(form.items.items,function(item){
  704. if(!item.readOnly && item.name && item.value){
  705. values[item.name]=formvalues[item.name];
  706. }
  707. });
  708. return values;
  709. },
  710. loadNewStore: function(id){
  711. var data=null;
  712. Ext.Ajax.request({//拿到grid的columns
  713. url : basePath + "common/loadNewGridStore.action",
  714. params: {
  715. caller:'Feedback',
  716. condition:'fl_fbid='+id +' order by fl_id asc'
  717. },
  718. async:false,
  719. method : 'post',
  720. callback : function(options,success,response){
  721. var res = new Ext.decode(response.responseText);
  722. if(res.exceptionInfo){
  723. showError(res.exceptionInfo);return;
  724. }
  725. data = res.data;
  726. }
  727. });
  728. return data;
  729. },
  730. getInsertIndex:function(){
  731. var form=Ext.getCmp('form'),i=0;
  732. Ext.Array.each(form.items.items,function(item,index){
  733. if(item.name=='fb_position'){
  734. i=index;
  735. }
  736. });
  737. return i+1;
  738. }
  739. });