DOCManage.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.oa.doc.DOCManage', {
  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. 'oa.doc.DOCManage','oa.doc.DocumentTreePanel','common.datalist.GridPanel','common.datalist.Toolbar','oa.doc.Header','oa.doc.Bottom',
  9. 'oa.doc.Submit','oa.doc.Save','oa.doc.resSubmit','oa.doc.Close','core.button.Print','oa.doc.DocView','oa.doc.Update',
  10. 'core.button.Upload','oa.doc.Delete','oa.doc.resAudit','oa.doc.Audit','core.form.FileField','oa.doc.OrgTreePanel',
  11. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','oa.doc.DocForm','core.form.YnField','oa.doc.DocPanel','oa.doc.DocTabPanel' ],
  12. init:function(){
  13. var me = this;
  14. this.flag=true;
  15. this.control({
  16. 'erpDocumentTreePanel[id=doctree]': {
  17. itemmousedown: function(selModel, record){
  18. if(!this.flag){
  19. return;
  20. }
  21. this.flag = false;
  22. setTimeout(function(){
  23. me.flag = true;
  24. me.loadTab(selModel, record,true);
  25. },20);
  26. },
  27. itemclick: function(selModel, record){
  28. if(!this.flag){
  29. return;
  30. }
  31. this.flag = false;
  32. setTimeout(function(){
  33. me.flag = true;
  34. me.loadTab(selModel, record,true);
  35. },20);
  36. },
  37. afterrender:function(tree){
  38. tree.selModel.on('select', function(selModel, record){
  39. if(record.childNodes.length > 0){
  40. selModel.isOnSelect = true;
  41. selModel.isOnSelect = false;
  42. me.setVirtualpath(record);
  43. } else {
  44. if(!selModel.isOnSelect){
  45. var arr = selModel.getSelection();
  46. arr.push(record);
  47. selModel.isOnSelect = true;
  48. selModel.select(arr);
  49. selModel.isOnSelect = false;
  50. me.setVirtualpath(record);
  51. }
  52. return;
  53. }
  54. });
  55. }
  56. },
  57. 'erpDocumentTreePanel[id=foldertree]': {
  58. itemmousedown: function(selModel, record){
  59. if(!this.flag){
  60. return;
  61. }
  62. this.flag = false;
  63. setTimeout(function(){
  64. me.flag = true;
  65. me.loadTab(selModel, record,false);
  66. },20);
  67. },
  68. itemclick: function(selModel, record){
  69. if(!this.flag){
  70. return;
  71. }
  72. this.flag = false;
  73. setTimeout(function(){
  74. me.flag = true;
  75. me.loadTab(selModel, record,false);
  76. },20);
  77. }
  78. },
  79. 'docgrid':{
  80. itemclick: function(selModel, record){
  81. var doctabs=Ext.getCmp('doctab');
  82. doctabs.fireEvent('tabItemChange',doctabs,record,'doc');
  83. var docpanel=Ext.getCmp('docpanel');
  84. docpanel.currentItem=record;
  85. docpanel.reSetButton(docpanel);
  86. }
  87. },
  88. 'textareafield':{
  89. beforerender:function(field){
  90. field.labelAlign='left';
  91. }
  92. },
  93. 'button[id=treeadd]':{
  94. click:function(btn){
  95. me.showAddWin(btn);
  96. }
  97. },
  98. 'button[id=treeupdate]':{
  99. click:function(btn){
  100. me.showUpdateWin(btn);
  101. }
  102. },
  103. 'button[id=treedelete]':{
  104. click:function(btn){
  105. me.deleteDir(btn);
  106. }
  107. },
  108. 'button[id=uploadDoc]':{
  109. click:function(btn){
  110. me.showUploadDoc(btn);
  111. }
  112. },
  113. //dyl
  114. 'button[id=read]' : {
  115. click : function(btn) {
  116. var select = Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
  117. var path = unescape(select.data.dl_filepath);
  118. var type = path.substring(path.lastIndexOf('.') + 1);
  119. var folderId = select.data.dl_parentid;
  120. var folderId = select.data.dl_parentid;
  121. if (type == 'doc'|| type =='docx'|| type == 'xls'|| type == 'xlsx') {
  122. Ext.Ajax.request({
  123. url : basePath + 'oa/doc/getHtml.action',
  124. params: {
  125. folderId:folderId,
  126. path:path,
  127. type:type
  128. },
  129. method : 'post',
  130. async:false,
  131. callback : function(opt, s, res){
  132. var r = new Ext.decode(res.responseText);
  133. if(r.exceptionInfo){
  134. showError(r.exceptionInfo);
  135. } else if(r.success){
  136. path=r.newPath;
  137. var url=basePath+ 'jsps/oa/doc/readWordOrExcel.jsp?path='+basePath+path;
  138. window.open(url);
  139. }
  140. }
  141. });
  142. } else if (type == 'pdf') {
  143. var url = basePath+ 'jsps/oa/doc/read.jsp?path='+ path + '&folderId='+ folderId;
  144. window.open(url);
  145. } else {
  146. showResult('提示','当前文件类型不支持在线预览,请先下载!',btn);
  147. }
  148. }
  149. },
  150. 'button[id=downloadDoc]':{
  151. click:function(btn){
  152. var select =Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
  153. var me = this;
  154. if (!Ext.fly('ext-attach-download')) {
  155. var frm = document.createElement('form');
  156. frm.id = 'ext-attach-download';
  157. frm.name = id;
  158. frm.className = 'x-hidden';
  159. document.body.appendChild(frm);
  160. }
  161. Ext.Ajax.request({
  162. url: basePath + 'doc/download.action?escape=1',
  163. method: 'post',
  164. form: Ext.fly('ext-attach-download'),
  165. isUpload: true,
  166. params: {
  167. path : unescape(select.data.dl_filepath),
  168. fileName:unescape(select.data.dl_name),
  169. folderId:select.data.dl_parentid
  170. },
  171. callback : function(options, success, response){
  172. if (!response) return;
  173. var restext=response.responseText;
  174. try{
  175. var res =new Ext.decode(restext);
  176. console.log(res);
  177. if(res.error) showResult('提示',res.error,btn);
  178. }catch (e){
  179. showResult('提示','您没有<下载>该文档的权限!',btn);
  180. }
  181. }
  182. });
  183. }
  184. },
  185. 'field[name=dl_virtualpath]':{
  186. afterrender:function(field){
  187. if(field.value==null){
  188. //field.setValue(Ext.getCmp('virtualpath').getText());
  189. }
  190. }
  191. },
  192. 'field[name=dl_parentid]':{
  193. afterrender:function(field){
  194. if(field.value==null || field.value==""){
  195. field.setValue(CurrentFolderId);
  196. }
  197. }
  198. },
  199. 'field[name=dlc_parentid]':{
  200. afterrender:function(field){
  201. if(field.value==null || field.value==""){
  202. field.setValue(CurrentFolderId);
  203. }
  204. }
  205. },
  206. 'field[name=dlc_olddlid]':{
  207. afterrender:function(field){
  208. if(field.value==null || field.value==""){
  209. field.setValue(Ext.getCmp('doctab').currentDoc.dl_id);
  210. }
  211. }
  212. },
  213. 'field[name=dlc_oldversion]':{
  214. afterrender:function(field){
  215. if(field.value==null || field.value==""){
  216. field.setValue(Ext.getCmp('doctab').currentDoc.dl_version);
  217. }
  218. }
  219. },
  220. 'mfilefield[name=dlc_oldfpid]':{
  221. beforerender:function(field){
  222. if(field.value==null || field.value==""){
  223. field.setValue(Ext.getCmp('doctab').currentDoc.dl_fpid);
  224. }
  225. }
  226. },
  227. 'button[id=switch]':{
  228. click:function(btn){
  229. if(btn.scanType=='list'){
  230. var panel=Ext.getCmp('docpanel');
  231. var grid=panel.items.items[0];
  232. grid.hide();
  233. panel.add({
  234. xtype:'docview',
  235. gridData:grid.store.data
  236. });
  237. btn.scanType='figure';
  238. }else{
  239. var view=Ext.getCmp('docview');
  240. if(view){
  241. view.hide();
  242. }
  243. var grid=Ext.getCmp('docgrid');
  244. grid.show();
  245. btn.scanType='list';
  246. }
  247. }
  248. },
  249. 'button[id=updatedoc]':{
  250. click:function(btn){
  251. me.showUpdateDoc(btn);
  252. }
  253. },
  254. 'button[id=rename]':{
  255. click:function(button){
  256. me.UpdateName("DocRename",button);
  257. }
  258. },
  259. 'button[id=updatefoldername]':{
  260. click:function(button){
  261. me.UpdateName("FolderRename",button);
  262. }
  263. },
  264. 'button[id=delete]':{
  265. click:function(btn){
  266. me.deleteDoc(btn);
  267. }
  268. },
  269. 'button[id=lockbutton]':{
  270. click:function(button){
  271. var docpanel=Ext.getCmp('docpanel');
  272. var select =docpanel.currentItem || Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
  273. warnMsg('确认锁定该文档?', function(btn){
  274. var changevalue=button.text=='锁定'?-1:0;
  275. if(btn == 'yes'){
  276. var params=new Object(),o={
  277. dl_locked:changevalue,
  278. dl_id:select.data.dl_id,
  279. dl_parentid:select.data.dl_parentid
  280. };
  281. params.formStore=unescape(Ext.JSON.encode(o).replace(/\\/g,"%"));
  282. params.caller="DocLocked";
  283. params.type="LOCK";
  284. me.UpdateByType(params);
  285. button.ownerCt.items.items[0].setValue(changevalue);
  286. showResult('提示','操作成功!',button);
  287. docpanel.loadNewStore(CurrentFolderId,docpanel.currentItem);
  288. }
  289. });
  290. }
  291. },
  292. 'erpSaveButton':{
  293. click:function(btn){
  294. me.SaveDir(btn);
  295. }
  296. },
  297. 'erpUpdateButton':{
  298. afterrender:function(btn){
  299. var status=Ext.getCmp('dl_statuscode').value;
  300. if(status!='ENTERING') btn.hide();
  301. }
  302. },
  303. 'erpUpdateButton':{
  304. afterrender:function(btn){
  305. var status=Ext.getCmp('dl_statuscode').value;
  306. if(status!='ENTERING') btn.hide();
  307. }
  308. },
  309. 'erpDeleteButton':{
  310. afterrender:function(btn){
  311. var status=Ext.getCmp('dl_statuscode').value;
  312. if(status!='ENTERING') btn.hide();
  313. }
  314. },
  315. 'erpSubmitButton':{
  316. afterrender:function(btn){
  317. var status=Ext.getCmp('dl_statuscode').value;
  318. if(status!='ENTERING') btn.hide();
  319. }
  320. },
  321. 'erpResSubmitButton':{
  322. afterrender:function(btn){
  323. var status=Ext.getCmp('dl_statuscode').value;
  324. if(status!='COMMITTED') btn.hide();
  325. }
  326. },
  327. 'erpAuditButton':{
  328. afterrender:function(btn){
  329. var status=Ext.getCmp('dl_statuscode').value;
  330. if(status!='COMMITTED') btn.hide();
  331. }
  332. },
  333. 'erpResAuditButton':{
  334. afterrender:function(btn){
  335. var status=Ext.getCmp('dl_statuscode').value;
  336. if(status!='AUDITED') btn.hide();
  337. }
  338. },
  339. 'button[id=setpower]':{
  340. click:function(button){
  341. var win = Ext.getCmp('powerwindow');
  342. if(!win){
  343. win= Ext.create('erp.view.oa.doc.PowerWindow');
  344. }
  345. var el=button.getEl();
  346. button.getEl().dom.disabled = true;
  347. if (win.isVisible()) {
  348. win.hide(el, function() {
  349. el.dom.disabled = false;
  350. });
  351. } else {
  352. win.show(el, function() {
  353. el.dom.disabled = false;
  354. Ext.getBody().disabled=true;
  355. });
  356. }
  357. }
  358. }
  359. });
  360. },
  361. deleteDir:function(btn){
  362. var tree = Ext.getCmp('doctree');
  363. var record=tree.getSelectionModel().getSelection()[0];
  364. Ext.Ajax.request({
  365. url : basePath + 'oa/documentlist/delete.action?caller=DocDeleteDir&_noc=1',
  366. params : {
  367. id:CurrentFolderId
  368. },
  369. method : 'post',
  370. async: false,
  371. callback : function(options,success,response){
  372. var localJson = new Ext.decode(response.responseText);
  373. if(localJson.exceptionInfo){
  374. var str = localJson.exceptionInfo;
  375. showError(str);
  376. }else {
  377. var win = parent.Ext.ComponentQuery.query('window');
  378. if(win){
  379. Ext.each(win, function(){
  380. this.close();
  381. });
  382. } else {
  383. window.close();
  384. }
  385. showResult('提示','删除成功!',btn);
  386. tree.refreshNodeByParentId(record.data.parentId,tree);
  387. }
  388. }
  389. });
  390. },
  391. deleteDoc:function(btn){
  392. var tree = Ext.getCmp('doctree');
  393. var items = Ext.getCmp('docgrid').selModel.getSelection();
  394. if(items.length<0) showResult('提示','请选择需要删除的文件!',btn);
  395. warnMsg('确认删除改文档?', function(btn){
  396. if(btn == 'yes'){
  397. var data=new Array(),o;
  398. Ext.Array.each(items,function(item){
  399. o=new Object();
  400. o.dl_id=item.data.dl_id;
  401. o.dl_parentid=item.data.dl_parentid;
  402. data.push(o);
  403. });
  404. Ext.Ajax.request({
  405. url : basePath + 'oa/documentlist/deleteDoc.action?_noc=1',
  406. params : {
  407. data :unescape(Ext.JSON.encode(data).replace(/\\/g,"%"))
  408. },
  409. method : 'post',
  410. callback : function(options,success,response){
  411. var localJson = new Ext.decode(response.responseText);
  412. if(localJson.exceptionInfo){
  413. var str = localJson.exceptionInfo;
  414. showError(str);
  415. }else {
  416. var docpanel=Ext.getCmp('docpanel');
  417. docpanel.loadNewStore(CurrentFolderId);
  418. showResult('提示','删除成功!',btn);
  419. }
  420. }
  421. });
  422. }
  423. });
  424. },
  425. showAddWin:function(button){
  426. var win = Ext.getCmp('add_win');
  427. if(!win){
  428. win=Ext.create('Ext.window.Window',{
  429. width: 550,
  430. height:350,
  431. closeAction: 'hide',
  432. id:'add_win',
  433. layout:'fit',
  434. title:'<div align="center" class="WindowTitle">创建目录</div>',
  435. listeners:{
  436. hide:function(win){
  437. win.destroy();
  438. }
  439. },
  440. items:[{
  441. xtype: 'erpDocFormPanel',
  442. bodyPadding: 13,
  443. autoScroll:true,
  444. fixedlayout:true,
  445. caller:'DocCreateDir',
  446. enableTools:false,
  447. frame:true,
  448. bodyStyle: 'border: none;',
  449. fieldDefaults: {
  450. margin: '6 0 0 0',
  451. labelWidth: 70
  452. },
  453. fieldDefaults: {
  454. labelAlign: 'right',
  455. labelWidth: 115,
  456. msgTarget: 'side'
  457. }
  458. }],
  459. buttonAlign:'center'
  460. });
  461. }
  462. var el=button.getEl();
  463. button.getEl().dom.disabled = true;
  464. if (win.isVisible()) {
  465. win.hide(el, function() {
  466. el.dom.disabled = false;
  467. });
  468. } else {
  469. win.show(el, function() {
  470. el.dom.disabled = false;
  471. Ext.getBody().disabled=true;
  472. });
  473. }
  474. },
  475. showUpdateWin:function(button){
  476. var win = Ext.getCmp('update_win');
  477. if(!win){
  478. win=Ext.create('Ext.window.Window',{
  479. width: 550,
  480. height:350,
  481. closeAction: 'hide',
  482. id:'update_win',
  483. layout:'fit',
  484. listeners:{
  485. hide:function(win){
  486. win.destroy();
  487. }
  488. },
  489. items:[{ xtype: 'erpDocFormPanel',
  490. bodyPadding: 13,
  491. autoScroll:true,
  492. fixedlayout:true,
  493. caller:'DocCreateDir',
  494. enableTools:false,
  495. frame:true,
  496. formCondition:"dl_id="+CurrentFolderId,
  497. bodyStyle: 'border: none;',
  498. fieldDefaults: {
  499. margin: '6 0 0 0',
  500. labelWidth: 70
  501. },
  502. fieldDefaults: {
  503. labelAlign: 'right',
  504. labelWidth: 115,
  505. msgTarget: 'side'
  506. }}],
  507. buttonAlign:'center'
  508. });
  509. }
  510. var el=button.getEl();
  511. button.getEl().dom.disabled = true;
  512. if (win.isVisible()) {
  513. win.hide(el, function() {
  514. el.dom.disabled = false;
  515. });
  516. } else {
  517. win.show(el, function() {
  518. el.dom.disabled = false;
  519. Ext.getBody().disabled=true;
  520. });
  521. }
  522. },
  523. showUploadDoc:function(button){
  524. var win = Ext.getCmp('uploaddoc_win');
  525. if(!win){
  526. win=Ext.create('Ext.window.Window',{
  527. width: 550,
  528. height:350,
  529. closeAction: 'hide',
  530. id:'uploaddoc_win',
  531. layout:'fit',
  532. title:'<div align="center" class="WindowTitle">上传文件</div>',
  533. listeners:{
  534. hide:function(win){
  535. win.destroy();
  536. }
  537. },
  538. items:[{
  539. xtype: 'erpDocFormPanel',
  540. bodyPadding: 13,
  541. autoScroll:true,
  542. fixedlayout:true,
  543. caller:'UploadDoc',
  544. enableTools:false,
  545. frame:true,
  546. bodyStyle: 'border: none;',
  547. fieldDefaults: {
  548. margin: '6 0 0 0',
  549. labelWidth: 70
  550. },
  551. fieldDefaults: {
  552. labelAlign: 'right',
  553. labelWidth: 115,
  554. msgTarget: 'side'
  555. }
  556. }],
  557. buttonAlign:'center'
  558. });
  559. }
  560. var el=button.getEl();
  561. button.getEl().dom.disabled = true;
  562. if (win.isVisible()) {
  563. win.hide(el, function() {
  564. el.dom.disabled = false;
  565. });
  566. } else {
  567. win.show(el, function() {
  568. el.dom.disabled = false;
  569. Ext.getBody().disabled=true;
  570. });
  571. }
  572. },
  573. showUpdateDoc:function(button){
  574. var win = Ext.getCmp('updatedoc_win');
  575. var docpanel=Ext.getCmp('doctab');
  576. if(!win){
  577. win=Ext.create('Ext.window.Window',{
  578. width: 550,
  579. height:350,
  580. closeAction: 'hide',
  581. id:'updatedoc_win',
  582. layout:'fit',
  583. title:'<div align="center" class="WindowTitle">修改文件</div>',
  584. listeners:{
  585. hide:function(win){
  586. win.destroy();
  587. }
  588. },
  589. items:[{
  590. xtype: 'erpDocFormPanel',
  591. bodyPadding: 13,
  592. autoScroll:true,
  593. fixedlayout:true,
  594. caller:'DocumentListChange',
  595. enableTools:false,
  596. frame:true,
  597. saveUrl:'oa/DocChange/save.action?caller=DocumentListChange',
  598. bodyStyle: 'border: none;',
  599. fieldDefaults: {
  600. margin: '6 0 0 0',
  601. labelWidth: 70
  602. },
  603. fieldDefaults: {
  604. labelAlign: 'right',
  605. labelWidth: 115,
  606. msgTarget: 'side'
  607. }
  608. }],
  609. buttonAlign:'center'
  610. });
  611. }
  612. var el=button.getEl();
  613. button.getEl().dom.disabled = true;
  614. if (win.isVisible()) {
  615. win.hide(el, function() {
  616. el.dom.disabled = false;
  617. });
  618. } else {
  619. win.show(el, function() {
  620. el.dom.disabled = false;
  621. Ext.getBody().disabled=true;
  622. });
  623. }
  624. },
  625. SaveDir: function(btn){
  626. var tree= Ext.getCmp('doctree');
  627. var closebool=true;
  628. var form=btn.ownerCt.ownerCt;
  629. if(form.caller=="DocumentListChange"){
  630. if(!form.down('#dlc_newattach').items.items[0].value){
  631. showResult('提示','请选择需要更新的文件!',btn);
  632. closebool=false;
  633. return;
  634. }
  635. }
  636. if(closebool){
  637. var form=Ext.getCmp('form');
  638. form.save(btn,form.caller);
  639. var docpanel=Ext.getCmp('docpanel');
  640. docpanel.loadNewStore(CurrentFolderId);
  641. }
  642. },
  643. UpdateByType:function(params){
  644. Ext.Ajax.request({//拿到tree数据
  645. url : basePath + 'oa/documentlist/DocUpdateByType.action',
  646. params:params,
  647. async:false,
  648. callback : function(options,success,response){
  649. }
  650. });
  651. },
  652. setVirtualpath:function(record){
  653. var data=record.raw!=undefined ? record.raw:record.data;
  654. Ext.getCmp('virtualpath').setText(data.url);
  655. },
  656. loadTab: function(selModel, record,bool){
  657. var me = this;
  658. if(record.isExpanded() && record.childNodes.length > 0){//是根节点,且已展开
  659. record.collapse(true,true);//收拢
  660. me.flag = true;
  661. } else {//未展开
  662. //看是否加载了其children
  663. if(record.childNodes.length == 0){
  664. //从后台加载
  665. var tree = selModel.ownerCt.ownerCt;
  666. var condition = tree.baseCondition;
  667. tree.setLoading(true, tree.body);
  668. Ext.Ajax.request({//拿到tree数据
  669. url : basePath + 'oa/documetlist/loadDir.action',
  670. params: {
  671. parentId: record.data['id'],
  672. condition: condition
  673. },
  674. callback : function(options,success,response){
  675. tree.setLoading(false);
  676. var res = new Ext.decode(response.responseText);
  677. if(res.tree){
  678. if(!record.get('level')) {
  679. record.set('level', 0);
  680. }
  681. Ext.each(res.tree, function(n){
  682. if(n.showMode == 2){//openBlank
  683. n.text = "<a href='" + basePath + me.parseUrl(n.url) + "' target='_blank'>" + n.text + "</a>";
  684. }
  685. if(!n.leaf) {
  686. n.level = record.get('level') + 1;
  687. n.iconCls = 'x-tree-icon-level-' + n.level;
  688. }
  689. });
  690. record.appendChild(res.tree);
  691. record.expand(false,true);//展开
  692. me.flag = true;
  693. } else if(res.exceptionInfo){
  694. showError(res.exceptionInfo);
  695. me.flag = true;
  696. }
  697. }
  698. });
  699. //加载grid的数据
  700. } else {
  701. record.expand(false,true);//展开
  702. me.flag = true;
  703. }
  704. }
  705. if(bool){
  706. if( CurrentFolderId !=record.data['id']){
  707. var docpanel=Ext.getCmp('docpanel');
  708. docpanel.loadNewStore(record.data['id']);
  709. //修改folderformValue
  710. var form=Ext.getCmp('folderForm');
  711. me.setFolderValue(record.data['id'],function(data){
  712. form.getForm().setValues(data);
  713. });
  714. }
  715. CurrentFolderId=record.data['id'];
  716. Ext.getCmp('uploadDoc').setDisabled(CurrentFolderId<10);
  717. me.changeTabs(record);
  718. }
  719. },
  720. onGridItemClick: function(selModel, record){//grid行选择
  721. var me = this;
  722. },
  723. UpdateName:function (caller,button){
  724. var win = Ext.getCmp('rename_win'),me=this;
  725. if(!win){
  726. var doctabs=Ext.getCmp('doctab');
  727. var select =doctabs.currentType==-1?Ext.getCmp('folderForm').getForm().getValues():Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
  728. win=Ext.create('Ext.window.Window',{
  729. width: 450,
  730. height:200,
  731. closeAction: 'hide',
  732. id:'rename_win',
  733. title:'<div align="center" class="WindowTitle">重命名</div>',
  734. listeners:{
  735. hide:function(win){
  736. win.destroy();
  737. }
  738. },
  739. bodyStyle:'background:#F0F0F0;color:#515151;',
  740. items:[{
  741. xtype:'textfield',
  742. fieldLabel:'名称',
  743. name:'dl_name',
  744. value:select.dl_name||select.data.dl_name,
  745. allowBlank:false,
  746. cls:'form-field-allowBlank',
  747. fieldStyle : "background:#FFFAFA;color:#515151;",
  748. id:'dl_name'
  749. }],
  750. buttons:[{
  751. cls:'x-btn-save',
  752. xtype:'button',
  753. handler:function(btn){
  754. var value=Ext.getCmp('dl_name').value;
  755. if(caller=='DocRename' && value.indexOf('.')<=0) showResult('提示','文件名格式不正确!',btn);
  756. if(value){
  757. var params=new Object(),o={
  758. dl_name:value,
  759. dl_id:select.dl_id||select.data.dl_id,
  760. dl_parentid:select.dl_parentid||select.data.dl_parentid
  761. };
  762. params.formStore=unescape(Ext.JSON.encode(o).replace(/\\/g,"%"));
  763. params.caller=caller;
  764. params.type="RENAME";
  765. me.UpdateByType(params);
  766. showResult('提示','更新成功!',btn);
  767. var docpanel=Ext.getCmp('docpanel');
  768. if(caller=='DocRename'){
  769. docpanel.loadNewStore(CurrentFolderId,docpanel.currentItem);
  770. }else {Ext.getCmp('folderForm').items.items[0].items.items[0].setValue(value);
  771. var tree=Ext.getCmp('doctree');
  772. tree.reset();
  773. docpanel.loadNewStore(0,docpanel.currentItem);
  774. }
  775. win.close();
  776. }
  777. }
  778. },{
  779. xtype:'erpCloseButton'
  780. }],
  781. buttonAlign:'center'
  782. });
  783. }
  784. var el=button.getEl();
  785. button.getEl().dom.disabled = true;
  786. if (win.isVisible()) {
  787. win.hide(el, function() {
  788. el.dom.disabled = false;
  789. });
  790. } else {
  791. win.show(el, function() {
  792. el.dom.disabled = false;
  793. Ext.getBody().disabled=true;
  794. });
  795. }
  796. },
  797. setFolderValue: function(folderId,fn) {
  798. Ext.Ajax.request({
  799. url : basePath + 'common/getFieldsData.action',
  800. async: false,
  801. params: {
  802. caller: 'Documentlist',
  803. fields: 'dl_name,dl_virtualpath,dl_createtime,dl_remark,dl_id,dl_creator,dl_parentid',
  804. condition: 'dl_id=\'' + folderId + '\''
  805. },
  806. method : 'post',
  807. callback : function(opt, s, res){
  808. var r = new Ext.decode(res.responseText);
  809. if(r.exceptionInfo){
  810. showError(r.exceptionInfo);
  811. } else if(r.success && r.data){
  812. fn.call(null, r.data);
  813. }
  814. }
  815. });
  816. },
  817. openTab : function (panel,id){
  818. var o = (typeof panel == "string" ? panel : id || panel.id);
  819. var main = parent.Ext.getCmp("content-panel");
  820. /*var tab = main.getComponent(o); */
  821. if(!main) {
  822. main =parent.parent.Ext.getCmp("content-panel");
  823. }
  824. var tab = main.getComponent(o);
  825. if (tab) {
  826. main.setActiveTab(tab);
  827. } else if(typeof panel!="string"){
  828. panel.id = o;
  829. var p = main.add(panel);
  830. main.setActiveTab(p);
  831. }
  832. },
  833. getCurrentStore: function(value){
  834. var grid = Ext.getCmp('grid');
  835. var items = grid.store.data.items;
  836. var array = new Array();
  837. var o = null;
  838. Ext.each(items, function(item, index){
  839. o = new Object();
  840. o.selected = false;
  841. if(index == 0){
  842. o.prev = null;
  843. } else {
  844. o.prev = items[index-1].data[keyField];
  845. }
  846. if(index == items.length - 1){
  847. o.next = null;
  848. } else {
  849. o.next = items[index+1].data[keyField];
  850. }
  851. var v = item.data[keyField];
  852. o.value = v;
  853. if(v == value)
  854. o.selected = true;
  855. array.push(o);
  856. });
  857. return array;
  858. },
  859. changeTabs:function (record){
  860. var doctabs=Ext.getCmp('doctab');
  861. doctabs.fireEvent('tabItemChange',doctabs,record,'folder');
  862. var docpanel=Ext.getCmp('docpanel');
  863. docpanel.currentItem=null;
  864. docpanel.reSetButton(docpanel);
  865. }
  866. });