DOCManage.js 27 KB

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