Ext.QuickTips.init();
Ext.define('erp.controller.ma.update.DataUpdate', {
extend : 'Ext.app.Controller',
requires : ['erp.util.GridUtil', 'erp.util.BaseUtil'],
views : [ 'ma.update.DataUpdate', 'core.toolbar.Toolbar' ],
init : function() {
var me = this;
me.GridUtil = Ext.create('erp.util.GridUtil');
me.BaseUtil = Ext.create('erp.util.BaseUtil');
this.control({
'#updategrid':{
afterrender : function(f) {
f.addGrid= function(){
me.createGrid(this, Ext.getCmp('scheme_id_').value,Ext.getCmp('scheme_id_').rawValue, true);
};
}
},
'button[name=import]' : {
click : function(btn) {
me.onQueryClick();
},
afterrender : function() {
Ext.defer(function(){
me.onQueryClick();
}, 500);
}
},
'button[id=checkupdate]':{
click:function(btn){
if(btn.activeItem.itemIndex==1)me.checkData();
else me.updateData();
}
},
'button[name=history]' : {
click : function(btn) {
me.history();
}
},
'button[name=close]' : {
click : function() {
if (parent.Ext && parent.Ext.getCmp('content-panel')) {
parent.Ext.getCmp('content-panel').getActiveTab().close();
} else {
window.close();
}
}
},
'button[name=downloadError]' : {
click : function() {
grid=Ext.getCmp('updategrid-data');
window.location = basePath + 'ma/update/exportErrorExcel.xls?id=' +grid.ulid+'&title='+encodeURI(encodeURI("错误数据")) ;
}
}
});
},
onQueryClick : function() {
var me = this, win = me.querywin;
if (!win) {
var form = me.createQueryForm(), temp = me.createTempForm();
win = me.querywin = Ext.create('Ext.window.Window', {
closeAction : 'hide',
closable:false,
title : '选择更新方案',
height: 500,
width: 800,
id:'scheme-win',
layout: 'anchor',
modal: true,
items : [form, temp],
buttonAlign : 'center',
buttons : [{
text : '查看历史',
iconCls: 'history',
cls : 'x-btn-gray',
height : 26,
width : 100,
handler : function(b) {
me.history();
}
},{
text : '下载模板',
iconCls: 'x-button-icon-excel',
cls : 'x-btn-gray',
height : 26,
width : 100,
handler : function(b) {
me.exportExcel();
}
},{
xtype: 'form',
height : 26,
width : 100,
bodyStyle : 'background: transparent no-repeat 0 0;border: none;',
items : [ { xtype : 'filefield',
name : 'file',
buttonOnly : true,
hideLabel : true,
buttonConfig : {
iconCls : 'x-button-icon-excel',
cls : 'x-btn-gray',
width : 100,
height : 26,
text : $I18N.common.button.erpUpExcelButton
},
listeners : {
change : function(field) {
me.importData(field);
}
}} ],
}, {
text : $I18N.common.button.erpCloseButton,
height : 26,
width : 100,
cls : 'x-btn-gray',
handler : function(b) {
if(!Ext.getCmp('updategrid-data')){
Ext.getCmp('history').setDisabled(true);
Ext.getCmp('checkupdate').setDisabled(true);
}
b.ownerCt.ownerCt.hide();
}
}]
});
}
win.show();
},
createQueryForm:function(){
var me = this;
var form = Ext.create('Ext.form.Panel', {
region: 'center',
anchor: '100% 10%',
layout: 'column',
autoScroll: true,
defaults: {
columnWidth: 1,
margin: '4 8 4 8'
},
bodyStyle: 'background:#f1f2f5;',
items:[{
xtype:'combo',
flex:1,
fieldLabel:'更新方案',
allowBlank:false,
name:'scheme_id_',
id:'scheme_id_',
listConfig:{
maxHeight:180
},
store: schemeStore,
displayField: 'title_',
valueField: 'id_',
queryMode: 'local',
editable:false,
triggerAction : 'all',
listeners: {
afterRender : function(combo) {
if( schemeStore.getAt(0)!=null){
var firstValue = schemeStore.getAt(0).get('id_');
combo.setValue(firstValue);
me.getUpdateDetail(firstValue);}
},
select: function (combo, record, index) {
me.getUpdateDetail(record[0].data.id_);
}
}
}]
});
return form;
},
createTempForm : function() {
var me = this;
return Ext.create('Ext.form.Panel', {
id: 'temp',
title: '可修改信息',
anchor: '100% 90%',
bodyStyle: 'background:#f1f1f1;',
autoScroll : true,
items:[
{ id: 'tempContainer',
xtype: 'fieldcontainer',
defaultType: 'checkboxfield',
items: [],
layout:'column',
fieldDefaults: {
margin: '3 10 3 10'
}
}]
});
},
getUpdateDetail:function(id){
var me = this;
Ext.Ajax.request({
url : basePath + 'ma/update/getUpdateDetail.action',
params: {
id: id,
},
method : 'post',
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exception || res.exceptionInfo){
showError(res.exceptionInfo);
return;
}
if(!res.success){
return;
} else {
me.indexfields = res.indexfields;
me.updatedetails = res.updatedetails;
schemeDetails=me.indexfields.concat(me.updatedetails);
var b=me.indexfields,d = me.updatedetails, mainitems = new Array();
if(b && b.length > 0) {
Ext.each(b, function(i){
mainitems.push({
xtype: 'checkbox',
name: i.field_,
boxLabel:i.caption_!='null'?''+i.caption_+'':''+i.field_+'',
checked:true,
columnWidth: 0.25,
readOnly:true
});
});
}
if(d && d.length > 0) {
Ext.each(d, function(i){
mainitems.push({
xtype: 'checkbox',
name: i.field_,
boxLabel: i.caption_,
columnWidth: 0.25,
checked:i.checked_
});
});
}
Ext.getCmp('tempContainer').removeAll();
Ext.getCmp('tempContainer').add(mainitems);
Ext.getCmp('temp').doLayout(true);
}
}
});
},
exportExcel:function(){
var me=this;
var items = Ext.getCmp('tempContainer').items.items;
var checked = new Array();
Ext.each(items,function(item){
if(!item.readOnly && item.checked)checked.push(item.name);
});
if (checked.length!=0){
window.location = basePath + 'ma/update/exportExcel.xls?id=' + Ext.getCmp('scheme_id_').value +
'&title=' + (Ext.getCmp('scheme_id_').rawValue)+'&checked='+unescape(checked);
}else showError("请选择待更新的字段");
},
importData:function(field){
var me=this;
var bool = field.ownerCt.fireEvent('beforeimport', this);
if (bool != false) {
field.ownerCt.getForm().submit({
url: basePath + 'ma/update/importData.action?id=' + Ext.getCmp('scheme_id_').value,
waitMsg: "正在解析Excel",
success: function(fp, o){
field.reset();
me.createGrid(Ext.getCmp('updategrid'), Ext.getCmp('scheme_id_').value,Ext.getCmp('scheme_id_').rawValue, true);
Ext.getCmp('updategrid-data').ulid = o.result.ulid;
Ext.getCmp('updategrid-data').down('pagingtoolbar').dataCount = o.result.count;
Ext.getCmp('updategrid-data').down('pagingtoolbar').onLoad();
Ext.getCmp('updategrid-data').getGridData(1);
Ext.getCmp('checkupdate').setDisabled(false);
Ext.getCmp('history').setDisabled(false);
Ext.getCmp('downloaderror').hide();
field.ownerCt.ownerCt.ownerCt.hide();
},
failure: function(fp, o){
if(o.result.size){
showError(o.result.error + " " + Ext.util.Format.fileSize(o.result.size));
field.reset();
} else {
showError(o.result.error);
field.reset();
}
}
});
}
},
emptyData: function(arr){
var fields = new Array();
Ext.each(arr, function(a){
fields.push(a.field_);
});
return new Ext.data.Store({
fields: fields,
data: [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]
});
},
parseUpdateDetails: function(arr){
var me = this, d = new Array(),o;
d.push({xtype: 'rownumberer', width: 35});
Ext.each(arr, function(a){
o = new Object();
o.text = a.caption_;
o.dataIndex = a.field_;
o.width = a.width_;
o.dataType = a.type_;
o.editor = {
xtype: 'textfield'
};
o.renderer = function(val, meta, record, x, y, store, view){
return val;
};
d.push(o);
});
return d;
},
loadUpdateData: function(grid, page){
var f = (page-1) * 100 + 1,
t = page*100;
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'ma/update/getUpdateData.action',
params: {
condition: "ud_ulid=" + grid.ulid +
" AND ud_detno between " + f + " AND " + t
},
method: 'post',
callback: function(options, success, response){
var res = new Ext.decode(response.responseText);
grid.setLoading(false);
if(res.exceptionInfo != null){
showError(res.exceptionInfo);return;
} else {
var datas = new Array(), o;
Ext.each(res.data, function(d){
o = Ext.decode(d.ud_data);
o.ud_id = d.ud_id;
datas.push(o);
});
grid.store.loadData(datas);
}
}
});
},
createGrid: function(p, id,title, isReload) {
var me=this;
var store = me.emptyData(schemeDetails);
var updategrid= Ext.create('Ext.grid.Panel', {
anchor: '100% 100%',
id : 'updategrid-data',
cls : 'default-grid',
cfg: schemeDetails,//当前导入项的配置信息
ulid:-1,
checked:0,
columnLines: true,
columns: me.parseUpdateDetails(schemeDetails),
store: store,
dockedItems: [me.getDockedItems(store)],
getGridData: function(page){
me.loadUpdateData(this, page);
},
loadData: function(ulid, count, page){
this.ulid = ulid;
this.down('pagingtoolbar').dataCount = count;
this.down('pagingtoolbar').onLoad();
this.getGridData(page);
}
});
p.add(updategrid);
},
loadDefaultData: function(grid, page,ulid){
var f = (page-1) * 100 + 1,
t = page*100;
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'ma/update/getUpdateData.action',
params: {
condition: "ud_ulid =" + grid.ulid +
"AND UD_CHECKED=0 AND ud_detno between " + f + " AND " + t
},
method: 'post',
callback: function(options, success, response){
var res = new Ext.decode(response.responseText);
grid.setLoading(false);
if(res.exceptionInfo != null){
showError(res.exceptionInfo);return;
} else {
var datas = new Array(), o;
Ext.each(res.data, function(d){
o = Ext.decode(d.ud_data);
o.ud_id = d.ud_id;
datas.push(o);
});
grid.store.loadData(datas);
}
}
});
},
checkData:function(){
var me=this,grid=Ext.getCmp('updategrid-data');
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'ma/update/checkData.action',
params: {
ulid:grid.ulid
},
method: 'post',
callback: function(options, success, response){
var res = new Ext.decode(response.responseText);
grid.setLoading(false);
if(res.exceptionInfo != null){
/*console.log(Ext.getCmp('checkupdate').activeItem.itemIndex);
Ext.getCmp('checkupdate').activeItem.itemIndex=1;*/
Ext.getCmp('downloaderror').show();
me.loadDefaultData(grid,1);
showError(res.exceptionInfo);return;
} else {
grid.checked=1;
Ext.getCmp('downloaderror').hide();
alert('校验成功!');
}
}
});
},
updateData: function(){
var me=this,grid=Ext.getCmp('updategrid-data');
if(grid.checked==1){
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'ma/update/updateData.action',
params: {
ulid:grid.ulid
},
method: 'post',
callback: function(options, success, response){
var res = new Ext.decode(response.responseText);
grid.setLoading(false);
if(res.exceptionInfo != null){
showError(res.exceptionInfo);return;
} else {
alert('更新成功!');
}
}
});}
else showError('请先校验数据!');
},
history:function(){
var w = Ext.create('Ext.Window', {
width: '60%',
height: '80%',
id: 'history-win',
title: '更新数据历史记录',
autoShow: true,
layout: 'anchor',
items: [{
xtype: 'gridpanel',
anchor: '100% 100%',
columnLines: true,
columns: [{dataIndex: 'ul_id', hidden: true},{dataIndex: 'ul_usid', hidden: true},{dataIndex: 'ul_man', text: '更新人编号', flex: 1},
{dataIndex: 'ul_date', text: '日期', flex: 2},
{dataIndex: 'ul_count', text: '数据量(条)', flex: 1},
{dataIndex: 'ul_checked', text: '是否校验通过', flex: 1, renderer: function(val, m){
if(val == '否') {
m.style = 'float:right';
}
return val;
}}, {dataIndex: 'ul_success', text: '是否更新成功', flex: 1, renderer: function(val, m){
if(val == '否') {
m.style = 'float:right';
}
return val;
}}, {text: '', flex: 1, renderer: function(val, m, r){
return '载入';
}}],
store: Ext.create('Ext.data.Store', {
fields: ['ul_id', 'ul_usid', 'ul_man', 'ul_date', 'ul_count', 'ul_checked', 'ul_success'],
data: [{},{},{},{},{},{},{},{}]
})
}]
});
this.getUpdateLog(w.down('gridpanel'));
},
getUpdateLog: function(g){
Ext.Ajax.request({
url: basePath + 'ma/update/updateHistory.action',
params: {
id: Ext.getCmp('scheme_id_').value
},
method: 'post',
callback: function(opt, s, r){
var res = new Ext.decode(r.responseText);
var dd = res.data;
Ext.each(dd, function(d){
d.ul_date = Ext.Date.format(new Date(d.ul_date), 'Y-m-d H:i:s');
d.ul_checked = d.ul_checked == 1 ? '是' : '否';
d.ul_success = d.ul_success == 1 ? '是' : '否';
});
g.store.loadData(dd);
}
});
},
getDockedItems: function(store){
return {
xtype: 'pagingtoolbar',
store: store,
pageSize: 100,
dataCount: store.data.items.length,
page: 1,
dock: 'bottom',
displayInfo: true,
updateInfo : function(){
var page = this.child('#inputItem').getValue() || 1;
var me = this,
pageSize = me.pageSize || 100,
dataCount = me.dataCount || 20;
var displayItem = me.child('#displayItem'),
pageData = me.getPageData();
pageData.fromRecord = (page-1)*pageSize+1;
pageData.toRecord = page*pageSize > dataCount ? dataCount : page*pageSize;
pageData.total = dataCount;
var msg;
if (displayItem) {
if (me.dataCount === 0) {
msg = me.emptyMsg;
} else {
msg = Ext.String.format(
me.displayMsg,
pageData.fromRecord,
pageData.toRecord,
pageData.total
);
}
displayItem.setText(msg);
me.doComponentLayout();
}
},
getPageData : function(){
var me = this,
totalCount = me.dataCount;
return {
total : totalCount,
currentPage : me.page,
pageCount: Math.ceil(me.dataCount / me.pageSize),
fromRecord: ((me.page - 1) * me.pageSize) + 1,
toRecord: Math.min(me.page * me.pageSize, totalCount)
};
},
doRefresh:function(){
this.moveFirst();
},
onPagingKeyDown : function(field, e){
var me = this,
k = e.getKey(),
pageData = me.getPageData(),
increment = e.shiftKey ? 10 : 1,
pageNum = 0;
if (k == e.RETURN) {
e.stopEvent();
pageNum = me.readPageFromInput(pageData);
if (pageNum !== false) {
pageNum = Math.min(Math.max(1, pageNum), pageData.pageCount);
me.child('#inputItem').setValue(pageNum);
if(me.fireEvent('beforechange', me, pageNum) !== false){
me.page = pageNum;
me.ownerCt.getGridData(me.page);
}
}
} else if (k == e.HOME || k == e.END) {
e.stopEvent();
pageNum = k == e.HOME ? 1 : pageData.pageCount;
field.setValue(pageNum);
} else if (k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN) {
e.stopEvent();
pageNum = me.readPageFromInput(pageData);
if (pageNum) {
if (k == e.DOWN || k == e.PAGEDOWN) {
increment *= -1;
}
pageNum += increment;
if (pageNum >= 1 && pageNum <= pageData.pages) {
field.setValue(pageNum);
}
}
}
me.updateInfo();
me.resetTool(value);
},
moveFirst : function(){
var me = this;
me.child('#inputItem').setValue(1);
value = 1;
me.page = value;
me.ownerCt.getGridData(value);
me.updateInfo();
me.resetTool(value);
},
movePrevious : function(){
var me = this;
me.child('#inputItem').setValue(me.child('#inputItem').getValue() - 1);
value = me.child('#inputItem').getValue();
me.page = value;
me.ownerCt.getGridData(value);
me.updateInfo();
me.resetTool(value);
},
moveNext : function(){
var me = this,
last = me.getPageData().pageCount;
total = last;
me.child('#inputItem').setValue(me.child('#inputItem').getValue() + 1);
value = me.child('#inputItem').getValue();
me.page = value;
me.ownerCt.getGridData(value);
me.updateInfo();
me.resetTool(value);
},
moveLast : function(){
var me = this,
last = me.getPageData().pageCount;
total = last;
me.child('#inputItem').setValue(last);
value = me.child('#inputItem').getValue();
me.page = value;
me.ownerCt.getGridData(value);
me.updateInfo();
me.resetTool(value);
},
onLoad : function() {
var e = this, d, b, c, a;
if (!e.rendered) {
return ;
}
d = e.getPageData();
b = d.currentPage;
c = Math.ceil(e.dataCount / e.pageSize);
a = Ext.String.format(e.afterPageText, isNaN(c) ? 1 : c);
e.child("#afterTextItem").setText(a);
e.child("#inputItem").setValue(b);
e.child("#first").setDisabled(b === 1);
e.child("#prev").setDisabled(b === 1);
e.child("#next").setDisabled(b === c || c===1);//
e.child("#last").setDisabled(b === c || c===1);
e.child("#refresh").enable();
e.updateInfo();
e.fireEvent("change", e, d);
},
resetTool: function(value){
var pageCount = this.getPageData().pageCount;
this.child('#last').setDisabled(value == pageCount || pageCount == 1);
this.child('#next').setDisabled(value == pageCount || pageCount == 1);
this.child('#first').setDisabled(value <= 1);
this.child('#prev').setDisabled(value <= 1);
}
};
}
});