Ext.QuickTips.init();
Ext.define('erp.controller.oa.doc.DOCManage', {
extend: 'Ext.app.Controller',
FormUtil: Ext.create('erp.util.FormUtil'),
GridUtil: Ext.create('erp.util.GridUtil'),
BaseUtil: Ext.create('erp.util.BaseUtil'),
views:[
'oa.doc.DOCManage','oa.doc.DocumentTreePanel','common.datalist.GridPanel','common.datalist.Toolbar','oa.doc.Header','oa.doc.Bottom',
'oa.doc.Submit','oa.doc.Save','oa.doc.resSubmit','oa.doc.Close','core.button.Print','oa.doc.DocView','oa.doc.Update',
'core.button.Upload','oa.doc.Delete','oa.doc.resAudit','oa.doc.Audit','core.form.FileField','oa.doc.OrgTreePanel',
'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','oa.doc.DocForm','core.form.YnField','oa.doc.DocPanel','oa.doc.DocTabPanel' ],
init:function(){
var me = this;
this.flag=true;
this.control({
'erpDocumentTreePanel[id=doctree]': {
itemmousedown: function(selModel, record){
if(!this.flag){
return;
}
this.flag = false;
setTimeout(function(){
me.flag = true;
me.loadTab(selModel, record,true);
},20);
},
itemclick: function(selModel, record){
if(!this.flag){
return;
}
this.flag = false;
setTimeout(function(){
me.flag = true;
me.loadTab(selModel, record,true);
},20);
},
afterrender:function(tree){
tree.selModel.on('select', function(selModel, record){
if(record.childNodes.length > 0){
selModel.isOnSelect = true;
selModel.isOnSelect = false;
me.setVirtualpath(record);
} else {
if(!selModel.isOnSelect){
var arr = selModel.getSelection();
arr.push(record);
selModel.isOnSelect = true;
selModel.select(arr);
selModel.isOnSelect = false;
me.setVirtualpath(record);
}
return;
}
});
}
},
'erpDocumentTreePanel[id=foldertree]': {
itemmousedown: function(selModel, record){
if(!this.flag){
return;
}
this.flag = false;
setTimeout(function(){
me.flag = true;
me.loadTab(selModel, record,false);
},20);
},
itemclick: function(selModel, record){
if(!this.flag){
return;
}
this.flag = false;
setTimeout(function(){
me.flag = true;
me.loadTab(selModel, record,false);
},20);
}
},
'docgrid':{
itemclick: function(selModel, record){
var doctabs=Ext.getCmp('doctab');
doctabs.fireEvent('tabItemChange',doctabs,record);
var docpanel=Ext.getCmp('docpanel');
docpanel.currentItem=record;
docpanel.reSetButton(docpanel);
}
},
'textareafield':{
beforerender:function(field){
field.labelAlign='left';
}
},
'button[id=treeadd]':{
click:function(btn){
me.showAddWin(btn);
}
},
'button[id=treeupdate]':{
click:function(btn){
me.showUpdateWin(btn);
}
},
'button[id=treedelete]':{
click:function(btn){
me.deleteDir(btn);
}
},
'button[id=uploadDoc]':{
click:function(btn){
me.showUploadDoc(btn);
}
},
'button[id=read]' : {
click : function(btn) {
var select = Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
var path = unescape(select.data.dl_filepath);
var type = path.substring(path.lastIndexOf('.') + 1);
var folderId = select.data.dl_parentid;
var folderId = select.data.dl_parentid;
if (type == 'doc'|| type =='docx'|| type == 'xls'|| type == 'xlsx') {
Ext.Ajax.request({
url : basePath + 'oa/doc/getHtml.action',
params: {
folderId:folderId,
path:path,
type:type
},
method : 'post',
async:false,
callback : function(opt, s, res){
var r = new Ext.decode(res.responseText);
if(r.exceptionInfo){
showError(r.exceptionInfo);
} else if(r.success){
path=r.newPath;
var url=basePath+ 'jsps/oa/doc/readWordOrExcel.jsp?path='+basePath+path;
window.open(url);
}
}
});
} else if (type == 'pdf') {
var url = basePath+ 'jsps/oa/doc/read.jsp?path='+ path + '&folderId='+ folderId;
window.open(url);
} else {
showResult('提示','当前文件类型不支持在线预览,请先下载!',btn);
}
}
},
'button[id=downloadDoc]':{
click:function(btn){
var select =Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
var me = this;
if (!Ext.fly('ext-attach-download')) {
var frm = document.createElement('form');
frm.id = 'ext-attach-download';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url: basePath + 'doc/download.action?escape=1',
method: 'post',
form: Ext.fly('ext-attach-download'),
isUpload: true,
params: {
path : unescape(select.data.dl_filepath),
fileName:unescape(select.data.dl_name),
folderId:select.data.dl_parentid
},
callback : function(options, success, response){
if (!response) return;
var restext=response.responseText;
try{
var res =new Ext.decode(restext);
if(res.error) showResult('提示',res.error,btn);
}catch (e){
showResult('提示','您没有<下载>该文档的权限!',btn);
}
}
});
}
},
'field[name=dl_virtualpath]':{
afterrender:function(field){
if(field.value==null){
//field.setValue(Ext.getCmp('virtualpath').getText());
}
}
},
'field[name=dl_parentid]':{
afterrender:function(field){
if(field.value==null || field.value==""){
field.setValue(CurrentFolderId);
}
}
},
'field[name=dlc_parentid]':{
afterrender:function(field){
if(field.value==null || field.value==""){
field.setValue(CurrentFolderId);
}
}
},
'field[name=dlc_olddlid]':{
afterrender:function(field){
if(field.value==null || field.value==""){
field.setValue(Ext.getCmp('doctab').currentDoc.dl_id);
}
}
},
'field[name=dlc_oldversion]':{
afterrender:function(field){
if(field.value==null || field.value==""){
field.setValue(Ext.getCmp('doctab').currentDoc.dl_version);
}
}
},
'mfilefield[name=dlc_oldfpid]':{
beforerender:function(field){
if(field.value==null || field.value==""){
field.setValue(Ext.getCmp('doctab').currentDoc.dl_fpid);
}
}
},
'button[id=switch]':{
click:function(btn){
if(btn.scanType=='list'){
var panel=Ext.getCmp('docpanel');
var grid=panel.items.items[0];
grid.hide();
panel.add({
xtype:'docview',
gridData:grid.store.data
});
btn.scanType='figure';
}else{
var view=Ext.getCmp('docview');
if(view){
view.hide();
}
var grid=Ext.getCmp('docgrid');
grid.show();
btn.scanType='list';
}
}
},
'button[id=updatedoc]':{
click:function(btn){
me.showUpdateDoc(btn);
}
},
'button[id=rename]':{
click:function(button){
var win = Ext.getCmp('rename_win');
if(!win){
var select =Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
win=Ext.create('Ext.window.Window',{
width: 450,
height:200,
closeAction: 'hide',
id:'rename_win',
title:'
重命名
',
listeners:{
hide:function(win){
win.destroy();
}
},
bodyStyle:'background:#F0F0F0;color:#515151;',
items:[{
xtype:'textfield',
fieldLabel:'名称',
name:'dl_name',
value:select.data.dl_name,
allowBlank:false,
cls:'form-field-allowBlank',
fieldStyle : "background:#FFFAFA;color:#515151;",
id:'dl_name'
}],
buttons:[{
cls:'x-btn-save',
xtype:'button',
handler:function(btn){
var value=Ext.getCmp('dl_name').value;
if(value){
var params=new Object(),o={
dl_name:value+"."+select.data.dl_style,
dl_id:select.data.dl_id,
dl_parentid:select.data.dl_parentid
};
params.formStore=unescape(Ext.JSON.encode(o).replace(/\\/g,"%"));
params.caller="DocRename";
me.UpdateByType(params);
showResult('提示','更新成功!',btn);
var docpanel=Ext.getCmp('docpanel');
docpanel.loadNewStore(CurrentFolderId,docpanel.currentItem);
win.close();
}
}
},{
text: $I18N.common.button.erpCloseButton,
cls: 'x-btn-gray',
handler: function(btn) {
btn.ownerCt.ownerCt.close();
}
}],
buttonAlign:'center'
});
}
var el=button.getEl();
button.getEl().dom.disabled = true;
if (win.isVisible()) {
win.hide(el, function() {
el.dom.disabled = false;
});
} else {
win.show(el, function() {
el.dom.disabled = false;
Ext.getBody().disabled=true;
});
}
}
},
'button[id=delete]':{
click:function(btn){
me.deleteDoc(btn);
}
},
'button[id=lockbutton]':{
click:function(button){
var docpanel=Ext.getCmp('docpanel');
var select =docpanel.currentItem || Ext.getCmp('docgrid').getSelectionModel().getSelection()[0];
warnMsg('确认锁定该文档?', function(btn){
var changevalue=button.text=='锁定'?-1:0;
if(btn == 'yes'){
var params=new Object(),o={
dl_locked:changevalue,
dl_id:select.data.dl_id,
dl_parentid:select.data.dl_parentid
};
params.formStore=unescape(Ext.JSON.encode(o).replace(/\\/g,"%"));
params.caller="DocLocked";
params.type="LOCK";
me.UpdateByType(params);
button.ownerCt.items.items[0].setValue(changevalue);
showResult('提示','操作成功!',button);
docpanel.loadNewStore(CurrentFolderId,docpanel.currentItem);
}
});
}
},
'erpSaveButton':{
click:function(btn){
me.SaveDir(btn);
}
},
'erpUpdateButton':{
click:function(btn){
var form=btn.ownerCt.ownerCt;
form.update(btn,form.caller);
var docpanel=Ext.getCmp('docpanel');
docpanel.loadNewStore(CurrentFolderId);
}
},
'erpDeleteButton':{
afterrender:function(btn){
btn.hide();
}
},
'erpSubmitButton':{
afterrender:function(btn){
btn.hide();
}
},
'erpResSubmitButton':{
afterrender:function(btn){
btn.hide();
}
},
'erpAuditButton':{
afterrender:function(btn){
btn.hide();
}
},
'erpResAuditButton':{
afterrender:function(btn){
btn.hide();
}
},
'button[id=setpower]':{
click:function(button){
var win = Ext.getCmp('powerwindow');
if(!win){
win= Ext.create('erp.view.oa.doc.PowerWindow');
}
var el=button.getEl();
button.getEl().dom.disabled = true;
if (win.isVisible()) {
win.hide(el, function() {
el.dom.disabled = false;
});
} else {
win.show(el, function() {
el.dom.disabled = false;
Ext.getBody().disabled=true;
});
}
}
}
});
},
deleteDir:function(btn){
var tree = Ext.getCmp('doctree');
var record=tree.getSelectionModel().getSelection()[0];
Ext.Ajax.request({
url : basePath + 'oa/documentlist/delete.action?caller=DocDeleteDir&_noc=1',
params : {
id:CurrentFolderId
},
method : 'post',
async: false,
callback : function(options,success,response){
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
var str = localJson.exceptionInfo;
showError(str);
}else {
var win = parent.Ext.ComponentQuery.query('window');
if(win){
Ext.each(win, function(){
this.close();
});
} else {
window.close();
}
showResult('提示','删除成功!',btn);
tree.refreshNodeByParentId(record.data.parentId,tree);
}
}
});
},
deleteDoc:function(btn){
var tree = Ext.getCmp('doctree');
var items = Ext.getCmp('docgrid').selModel.getSelection();
if(items.length<0) showResult('提示','请选择需要删除的文件!',btn);
warnMsg('确认删除改文档?', function(btn){
if(btn == 'yes'){
var data=new Array(),o;
Ext.Array.each(items,function(item){
o=new Object();
o.dl_id=item.data.dl_id;
o.dl_parentid=item.data.dl_parentid;
data.push(o);
});
Ext.Ajax.request({
url : basePath + 'oa/documentlist/deleteDoc.action?_noc=1',
params : {
data :unescape(Ext.JSON.encode(data).replace(/\\/g,"%"))
},
method : 'post',
callback : function(options,success,response){
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
var str = localJson.exceptionInfo;
showError(str);
}else {
var docpanel=Ext.getCmp('docpanel');
docpanel.loadNewStore(CurrentFolderId);
showResult('提示','删除成功!',btn);
}
}
});
}
});
},
showAddWin:function(button){
var win = Ext.getCmp('add_win');
if(!win){
win=Ext.create('Ext.window.Window',{
width: 550,
height:350,
closeAction: 'hide',
id:'add_win',
layout:'fit',
title:'创建目录
',
listeners:{
hide:function(win){
win.destroy();
}
},
items:[{
xtype: 'erpDocFormPanel',
bodyPadding: 13,
autoScroll:true,
fixedlayout:true,
caller:'DocCreateDir',
enableTools:false,
frame:true,
bodyStyle: 'border: none;',
fieldDefaults: {
margin: '6 0 0 0',
labelWidth: 70
},
fieldDefaults: {
labelAlign: 'right',
labelWidth: 115,
msgTarget: 'side'
}
}],
buttonAlign:'center'
});
}
var el=button.getEl();
button.getEl().dom.disabled = true;
if (win.isVisible()) {
win.hide(el, function() {
el.dom.disabled = false;
});
} else {
win.show(el, function() {
el.dom.disabled = false;
Ext.getBody().disabled=true;
});
}
},
showUpdateWin:function(button){
var win = Ext.getCmp('update_win');
if(!win){
win=Ext.create('Ext.window.Window',{
width: 550,
height:350,
closeAction: 'hide',
id:'update_win',
layout:'fit',
listeners:{
hide:function(win){
win.destroy();
}
},
items:[{ xtype: 'erpDocFormPanel',
bodyPadding: 13,
autoScroll:true,
fixedlayout:true,
caller:'DocCreateDir',
enableTools:false,
frame:true,
formCondition:"dl_id="+CurrentFolderId,
bodyStyle: 'border: none;',
fieldDefaults: {
margin: '6 0 0 0',
labelWidth: 70
},
fieldDefaults: {
labelAlign: 'right',
labelWidth: 115,
msgTarget: 'side'
}}],
buttonAlign:'center'
});
}
var el=button.getEl();
button.getEl().dom.disabled = true;
if (win.isVisible()) {
win.hide(el, function() {
el.dom.disabled = false;
});
} else {
win.show(el, function() {
el.dom.disabled = false;
Ext.getBody().disabled=true;
});
}
},
showUploadDoc:function(button){
var win = Ext.getCmp('uploaddoc_win');
if(!win){
win=Ext.create('Ext.window.Window',{
width: 550,
height:350,
closeAction: 'hide',
id:'uploaddoc_win',
layout:'fit',
title:'上传文件
',
listeners:{
hide:function(win){
win.destroy();
}
},
items:[{
xtype: 'erpDocFormPanel',
bodyPadding: 13,
autoScroll:true,
fixedlayout:true,
caller:'UploadDoc',
enableTools:false,
frame:true,
bodyStyle: 'border: none;',
fieldDefaults: {
margin: '6 0 0 0',
labelWidth: 70
},
fieldDefaults: {
labelAlign: 'right',
labelWidth: 115,
msgTarget: 'side'
}
}],
buttonAlign:'center'
});
}
var el=button.getEl();
button.getEl().dom.disabled = true;
if (win.isVisible()) {
win.hide(el, function() {
el.dom.disabled = false;
});
} else {
win.show(el, function() {
el.dom.disabled = false;
Ext.getBody().disabled=true;
});
}
},
showUpdateDoc:function(button){
var win = Ext.getCmp('updatedoc_win');
var docpanel=Ext.getCmp('doctab');
if(!win){
win=Ext.create('Ext.window.Window',{
width: 550,
height:350,
closeAction: 'hide',
id:'updatedoc_win',
layout:'fit',
title:'修改文件
',
listeners:{
hide:function(win){
win.destroy();
}
},
items:[{
xtype: 'erpDocFormPanel',
bodyPadding: 13,
autoScroll:true,
fixedlayout:true,
caller:'DocumentListChange',
enableTools:false,
frame:true,
saveUrl:'oa/DocChange/save.action?caller=DocumentListChange',
bodyStyle: 'border: none;',
fieldDefaults: {
margin: '6 0 0 0',
labelWidth: 70
},
fieldDefaults: {
labelAlign: 'right',
labelWidth: 115,
msgTarget: 'side'
}
}],
buttonAlign:'center'
});
}
var el=button.getEl();
button.getEl().dom.disabled = true;
if (win.isVisible()) {
win.hide(el, function() {
el.dom.disabled = false;
});
} else {
win.show(el, function() {
el.dom.disabled = false;
Ext.getBody().disabled=true;
});
}
},
SaveDir: function(btn){
var tree= Ext.getCmp('doctree');
var closebool=true;
var form=btn.ownerCt.ownerCt;
if(form.caller=="DocumentListChange"){
if(!form.down('#dlc_newattach').items.items[0].value){
showResult('提示','请选择需要更新的文件!',btn);
closebool=false;
return;
}
}
if(closebool){
var form=Ext.getCmp('form');
form.save(btn,form.caller);
var docpanel=Ext.getCmp('docpanel');
docpanel.loadNewStore(CurrentFolderId);
}
},
UpdateByType:function(params){
Ext.Ajax.request({//拿到tree数据
url : basePath + 'oa/documentlist/DocUpdateByType.action',
params:params,
async:false,
callback : function(options,success,response){
}
});
},
setVirtualpath:function(record){
var data=record.raw!=undefined ? record.raw:record.data;
Ext.getCmp('virtualpath').setText(data.url);
},
loadTab: function(selModel, record,bool){
var me = this;
if(record.isExpanded() && record.childNodes.length > 0){//是根节点,且已展开
record.collapse(true,true);//收拢
me.flag = true;
} else {//未展开
//看是否加载了其children
if(record.childNodes.length == 0){
//从后台加载
var tree = selModel.ownerCt.ownerCt;
var condition = tree.baseCondition;
tree.setLoading(true, tree.body);
Ext.Ajax.request({//拿到tree数据
url : basePath + 'oa/documetlist/loadDir.action',
params: {
parentId: record.data['id'],
condition: condition
},
callback : function(options,success,response){
tree.setLoading(false);
var res = new Ext.decode(response.responseText);
if(res.tree){
if(!record.get('level')) {
record.set('level', 0);
}
Ext.each(res.tree, function(n){
if(n.showMode == 2){//openBlank
n.text = "" + n.text + "";
}
if(!n.leaf) {
n.level = record.get('level') + 1;
n.iconCls = 'x-tree-icon-level-' + n.level;
}
});
record.appendChild(res.tree);
record.expand(false,true);//展开
me.flag = true;
} else if(res.exceptionInfo){
showError(res.exceptionInfo);
me.flag = true;
}
}
});
//加载grid的数据
} else {
record.expand(false,true);//展开
me.flag = true;
}
}
if(bool){
if( CurrentFolderId !=record.data['id']){
var docpanel=Ext.getCmp('docpanel');
docpanel.loadNewStore(record.data['id']);
}
CurrentFolderId=record.data['id'];
Ext.getCmp('uploadDoc').setDisabled(CurrentFolderId<10);
me.changeTabs(record);
}
},
onGridItemClick: function(selModel, record){//grid行选择
var me = this;
},
openTab : function (panel,id){
var o = (typeof panel == "string" ? panel : id || panel.id);
var main = parent.Ext.getCmp("content-panel");
/*var tab = main.getComponent(o); */
if(!main) {
main =parent.parent.Ext.getCmp("content-panel");
}
var tab = main.getComponent(o);
if (tab) {
main.setActiveTab(tab);
} else if(typeof panel!="string"){
panel.id = o;
var p = main.add(panel);
main.setActiveTab(p);
}
},
getCurrentStore: function(value){
var grid = Ext.getCmp('grid');
var items = grid.store.data.items;
var array = new Array();
var o = null;
Ext.each(items, function(item, index){
o = new Object();
o.selected = false;
if(index == 0){
o.prev = null;
} else {
o.prev = items[index-1].data[keyField];
}
if(index == items.length - 1){
o.next = null;
} else {
o.next = items[index+1].data[keyField];
}
var v = item.data[keyField];
o.value = v;
if(v == value)
o.selected = true;
array.push(o);
});
return array;
},
changeTabs:function (record){
var doctabs=Ext.getCmp('doctab');
doctabs.fireEvent('tabItemChange',doctabs,record);
var docpanel=Ext.getCmp('docpanel');
docpanel.currentItem=null;
docpanel.reSetButton(docpanel);
}
});