Ext.QuickTips.init();
Ext.define('erp.controller.pm.make.MakeIMEI', {
extend: 'Ext.app.Controller',
requires: ['erp.util.BaseUtil','erp.util.GridUtil'],
views: ['common.init.Template', 'core.button.UpExcel', 'core.trigger.DbfindTrigger', 'core.trigger.MultiDbfindTrigger',
'core.toolbar.Toolbar'],
init: function(){
var me = this;
me.BaseUtil = Ext.create('erp.util.BaseUtil');
me.GridUtil = Ext.create('erp.util.GridUtil');
this.control({
'form[id=upexcel]': {
afterrender: function(btn){
btn.upexcel = function(field){
if(btn.grid){
btn.getForm().submit({
url: basePath + 'pm/make/upexcel.action?caller='+caller,
waitMsg: "正在解析Excel",
success: function(fp, o){
field.reset();
btn.grid.ilid = o.result.ilid;
btn.grid.down('pagingtoolbar').dataCount = o.result.count;
/*btn.grid.down('pagingtoolbar').pageSize = o.result.count;*/
btn.grid.down('pagingtoolbar').onLoad(o.result.count);
btn.grid.getGridData(1);
Ext.getCmp('check').show();
Ext.getCmp('toformal').hide();
Ext.getCmp('thisdelete').hide();
//Ext.getCmp('saveupdates').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();
}
}
});
}
};
}
},
'button[id=export]': {
click: function(btn){
var grid = btn.ownerCt.ownerCt.down('gridpanel');
if(grid){
me.BaseUtil.exportGrid(grid);
}
}
},
'button[id=rule]': {
click: function(btn){
this.openUrl();
}
},
'button[id=check]': {
click: function(btn){
var grid = btn.ownerCt.ownerCt.down('gridpanel');
if(grid && grid.down('pagingtoolbar').dataCount<=0) showMessage('提示', '无数据');
else if(grid) me.checkdata(grid);
}
},
'button[id=history]': {
click: function(btn){
var grid = btn.ownerCt.ownerCt.down('gridpanel');
if(grid){
me.showHistory(grid.caller);
}
}
},
'button[id=toformal]': {
click: function(btn){
var grid = btn.ownerCt.ownerCt.down('gridpanel');
var bool = false;
if(grid && grid.ilid > 0) {
if(grid.down('pagingtoolbar').dataCount<=0) showMessage('提示', '无数据');
else {
for(var i = 0 ; i < grid.errorNodesStr.length ; i++){
if(grid.errorNodesStr[i]!=''){
bool = true;
break;
}
}
if(bool) {
showMessage('提示', '测试未通过,无法转入正式');
} else {
me.toformal(grid);
}
}
}
}
},
'button[id=thisdelete]': {
click: function(btn){
var grid = btn.ownerCt.ownerCt.down('gridpanel');
var bool = false;
if(grid && grid.ilid > 0) {
if(grid.down('pagingtoolbar').dataCount<=0) showMessage('提示', '无数据');
else {
for(var i = 0 ; i < grid.errorNodesStr.length ; i++){
if(grid.errorNodesStr[i]!=''){
bool = true;
break;
}
}
if(bool) {
showMessage('提示', '测试未通过,无需删除数据');
} else {
me.thisdelete(grid,me);
}
}
}
}
},
/*'button[id=saveupdates]': {
click: function(btn){
var grid = btn.ownerCt.ownerCt.down('gridpanel');
if(grid && grid.ilid > 0) {
me.saveUpdates(grid);
}
}
},*/
'#template': {
afterrender: function(p) {
this.getDetails(p, caller, false);
}
}
});
},
getDetails: function(p, caller, isReload){
if(caller != p.caller || isReload){
p.caller = caller;
var me = this;
Ext.Ajax.request({
url: basePath + 'common/singleGridPanel.action',
params: {
caller: caller,
condition:''
},
method: 'post',
callback: function(options, success, response){
var res = new Ext.decode(response.responseText);
if(res.exceptionInfo != null){
Ext.getCmp('upexcel').hide();
showError(res.exceptionInfo);return;
} else {
p.removeAll();
var store = me.emptyData(res.columns);
p.add({
xtype: 'grid',
id: 'template-data',
anchor: "100% 100%",
cls: 'custom',
caller: caller,
ilid: -1,
cfg: res.columns,//当前导入项的配置信息
columnLines: true,
viewConfig: {
style: { overflow: 'hidden', overflowX: 'hidden' }
},
columns: me.parseInitDetails(res.columns),
store: store,
dockedItems: [me.getDockedItems(store)],
getGridData: function(page){
me.loadInitData(this, page);
},
loadData: function(ilid, count, page){
this.ilid = ilid;
this.down('pagingtoolbar').dataCount = count;
this.down('pagingtoolbar').onLoad();
this.getGridData(page);
Ext.getCmp('toformal').show();
if(caller!='ProductSmt!Import'){
Ext.getCmp('thisdelete').show();
}
//Ext.getCmp('saveupdates').show();
Ext.getCmp('check').show();
},
deleteData: function(ilid){
me.ondelete(ilid);
},
reset: function(){
this.ilid = -1;
this.down('pagingtoolbar').dataCount = 25;
this.down('pagingtoolbar').onLoad();
this.store.removeAll(true);
this.store.loadData([{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]);
},
showErrors: function(page){
var grid = this,items = grid.store.data.items,
columns = grid.columns,d,lineError,fieldS,errorS,nodesStr = grid.errorNodesStr,log = '',
f = (page-1) * 100,t = page*100;
if(nodesStr && nodesStr.length > 0) {
var end = t校验状态: {log}
'
],
toggleRow: function(rowIdx) {
var rowNode = this.view.getNode(rowIdx),
row = Ext.get(rowNode),
nextBd = Ext.get(row).down(this.rowBodyTrSelector),
record = this.view.getRecord(rowNode),
grid = this.getCmp();
if (row.hasCls(this.rowCollapsedCls)) {
row.removeCls(this.rowCollapsedCls);
nextBd.removeCls(this.rowBodyHiddenCls);
this.recordsExpanded[record.internalId] = true;
this.view.fireEvent('expandbody', rowNode, record, nextBd.dom);
} else {
row.addCls(this.rowCollapsedCls);
nextBd.addCls(this.rowBodyHiddenCls);
this.recordsExpanded[record.internalId] = false;
this.view.fireEvent('collapsebody', rowNode, record, nextBd.dom);
}
this.view.up('gridpanel').invalidateScroller();
this.view.up('gridpanel').doComponentLayout();
//this.view.up('gridpanel').view.refresh();//速度慢
}
}, Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
})]
});
var btn = Ext.getCmp('upexcel');
if(btn) {
btn.show();
btn.grid = p.down('gridpanel');
}
}
}
});
}
},
parseInitDetails: function(arr){
var me = this, d = new Array(),o;
var dd = 'import_detno';
if(caller == 'Make!IMEI'){
dd = 'MIL_DETNO'
}
d.push({xtype: 'rownumberer', width: 35, text:'序号', dataIndex:dd});
d.push({
text: '导入日志',
dataIndex: 'log',
hidden: true,
renderer: function(val, meta){
meta.style = 'height:0px;';
}
});
d.push({
text: 'ID',
dataIndex: 'dg_id',
hidden: true
});
var num = 0;
Ext.each(arr, function(a){
if(a.dataIndex.toUpperCase().indexOf('DETNO')<0){
o = new Object();
o.text = a.text;
o.dataIndex = a.dataIndex;
o.hidden = a.hidden;
o.width = a.width;
o.caller = caller;
o.num = num++;
/*o.rule = a.id_rule;
o.dataType = a.id_type;*/
/*o.isNeed = a.id_need == 1 ? '是' : '否';
o.logic = a.id_logic;
o.logicdesc = me.parseLogic(o.logic);*/
o.editor = {
xtype: 'textfield',
cls:null,
displayField:"display",
editable:true,
format:"",
hideTrigger:true,
maxLength:4000,
minValue:null,
positiveNum:false,
queryMode:"local",
store:null,
valueField:"value"
};
o.renderer = function(val, meta, record, x, y, store, view){
if(view) {
var grid = view.ownerCt,nodesStr = grid.errorNodesStr,cm = grid.columns[y],page = grid.down('pagingtoolbar').page;
var index = (page-1)*100+x;
if(nodesStr && nodesStr.length > 0) {
if(nodesStr[index] != ''){
var lineError = nodesStr[index].split(";")
for(var i = 0 ; i 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);
}
};
},
getPathString: function(tree, record){//path:/root/5/12
var str = tree.ownerCt.title;
return record.getPath('text', '»').replace('root', str);
},
ondelete: function(id){
var grid = Ext.getCmp('template-data');
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'system/deleteInitData.action',
params: {
id: id
},
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 {
if(id == grid.ilid) {//如果删除的是当前显示的数据,要清除当前grid的数据
grid.reset();
}
}
}
});
},
showHistory: function(caller){
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: 'il_id', hidden: true},{dataIndex: 'il_caller', hidden: true},{dataIndex: 'il_date', text: '日期', flex: 2},
{dataIndex: 'il_sequence', text: '次数', flex: 1},{dataIndex: 'il_count', text: '数据量(条)', flex: 1},
{dataIndex: 'il_checked', text: '是否已校验', flex: 1, renderer: function(val, m){
if(val == '否') {
m.style = 'float:right';
}
return val;
}},{dataIndex: 'il_success',text:'是否校验通过', flex: 1, renderer: function(val, m){
if(val == '否') {
m.style = 'float:right';
}
return val;
}},
{dataIndex: 'il_toformal', 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: ['il_id', 'il_caller', 'il_date', 'il_sequence', 'il_count', 'il_checked', 'il_success', 'il_toformal'],
data: [{},{},{},{},{},{},{},{},{},{}]
})
}]
});
this.getInitLog(w.down('gridpanel'), caller);
},
getInitLog: function(g, c){
Ext.Ajax.request({
url: basePath + 'system/initHistory.action',
params: {
caller: c
},
method: 'post',
callback: function(opt, s, r){
var res = new Ext.decode(r.responseText);
var dd = res.data;
Ext.each(dd, function(d){
d.il_date = Ext.Date.format(new Date(d.il_date), 'Y-m-d H:i:s');
d.il_checked = d.il_checked == 1 ? '是' : '否';
d.il_success = d.il_success == 1 ? '是' : '否';
d.il_toformal = d.il_toformal == 1 ? '是' : '否';
});
g.store.loadData(dd);
}
});
},
loadInitData: function(grid, page){
var f = (page-1) * 100 + 1,
t = page*100;
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'system/getInitData.action',
params: {
condition: "id_ilid=" + grid.ilid +
" AND id_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.id_data);
o.id_id = d.id_id;
datas.push(o);
});
grid.store.loadData(datas);
grid.showErrors(page);
}
}
});
},
/* saveInitDetails: function(grid, caller){
var me = this,datas = [],items = grid.store.data.items,d;
Ext.each(items, function(i){
if(i.dirty) {
d = i.data;
if(!Ext.isEmpty(d.id_field) && !Ext.isEmpty(d.id_table)) {
d.id_field=d.id_field.trim();
d.id_need = d.id_need ? 1 : 0;
d.id_visible = d.id_visible ? 1 : 0;
d.id_caller = caller;
d.id_fieldtype =Ext.isEmpty(d.id_fieldtype)? 0:d.id_fieldtype;
d.id_width = Ext.isEmpty(d.id_width) ? 100 : d.id_width;
datas.push(d);
}
}
});
Ext.Ajax.request({
url: basePath + 'system/saveInitDetail.action',
method: 'post',
params: {
data: unescape(Ext.encode(datas).replace(/\\/g,"%"))
},
callback: function(opt, s, r) {
var rs = Ext.decode(r.responseText);
if(!rs || rs.exceptionInfo) {
showError(rs.exceptionInfo);
} else {
alert('保存成功!');
grid.ownerCt.destroy();
me.getDetails(Ext.getCmp('template'), caller, true);
}
}
});
},*/
fieldTypes: function(f, record){
var g = Ext.getCmp('initdetails'), dd = g.store.data.items,ff = [];
Ext.each(dd, function(i){
if(i.data.id_field != record.data.id_field) {
ff.push({
display: i.data.id_caption,
value: i.data.id_field
});
}
});
var ww = Ext.create('Ext.Window', {
autoShow: true,
modal: true,
title: '默认值',
width: '55%',
height: '50%',
layout: 'column',
items: [{
xtype: 'fieldcontainer',
name: 'keyField',
columnWidth: 1,
items: [{
xtype: 'radio',
columnWidth: 1,
boxLabel: '自动取ID',
name: 'default'
}],
getValue: function(){
return 'keyField';
},
setValue: function(){
this.down('radio').setValue(true);
}
},{
xtype: 'fieldcontainer',
name: 'codeField',
columnWidth: 1,
items: [{
xtype: 'radio',
columnWidth: 1,
boxLabel: '自动取编号',
name: 'default'
}],
getValue: function(){
return 'codeField';
},
setValue: function(){
this.down('radio').setValue(true);
}
},{
xtype: 'fieldcontainer',
name: 'date',
columnWidth: 1,
layout: 'hbox',
items: [{
xtype: 'radio',
boxLabel: '当前时间',
name: 'default'
},{
xtype: 'checkbox',
inputValue: 'yy-MM-dd',
separator: ' ',
boxLabel: '年月日'
},{
xtype: 'checkbox',
inputValue: 'HH:mm:ss',
separator: '',
boxLabel: '时分秒'
}],
getValue: function(){
var rr = this.query('checkbox[checked=true]'), vv = '', len = rr.length;
Ext.each(rr, function(r, idx){
if(r.xtype == 'checkbox' && r.inputValue) {
vv += r.inputValue;
if(idx < len - 1) {
vv += r.separator;
}
}
});
if(vv == '') {
return '';
}
return 'date(' + vv + ')';
},
setValue: function(v){
this.down('radio').setValue(true);
v = v.substring(v.indexOf('(') + 1, v.indexOf(')'));
var y = v.split(' '),arr,me = this;
Ext.each(y, function(i){
arr = me.down('checkbox[inputValue=' + i + ']');
if(arr)
arr.setValue(true);
});
}
},{
xtype: 'fieldcontainer',
name: 'replace',
columnWidth: 1,
layout: 'hbox',
items: [{
xtype: 'radio',
name: 'default',
boxLabel: '替代值'
},{
xtype: 'fieldcontainer',
items: [{
xtype: 'textfield',
emptyText: '显示值'
},{
xtype: 'textfield',
emptyText: '实际值'
}],
getValue: function(){
var val = this.items.items[0],dis = this.items.items[1];
if(!Ext.isEmpty(val.value) && !Ext.isEmpty(dis.value)) {
return val.value + ':' + dis.value;
}
return '';
},
setValue: function(v) {
if(!Ext.isEmpty(v)) {
this.items.items[0].setValue(v.split(':')[0]);
this.items.items[1].setValue(v.split(':')[1] || '');
}
}
},{
xtype: 'button',
iconCls: 'x-button-icon-add',
cls: 'x-btn-tb',
handler: function(b){
b.ownerCt.insert(b.ownerCt.items.items.length - 1, {
xtype: 'fieldcontainer',
items: [{
xtype: 'textfield',
emptyText: '显示值'
},{
xtype: 'textfield',
emptyText: '实际值'
}],
getValue: function(){
var val = this.items.items[0],dis = this.items.items[1];
if(!Ext.isEmpty(val.value) && !Ext.isEmpty(dis.value)) {
return val.value + ':' + dis.value;
}
return '';
},
setValue: function(v) {
if(!Ext.isEmpty(v)) {
this.items.items[0].setValue(v.split(':')[0]);
this.items.items[1].setValue(v.split(':')[1] || '');
}
}
});
}
}],
getValue: function(){
var tx = this.query('fieldcontainer'),val = '';
Ext.each(tx, function(t){
if(!Ext.isEmpty(t.getValue())) {
if(val == '') {
val = t.getValue();
} else {
val += ',' + t.getValue();
}
}
});
if(val == '') {
return null;
}
return 'replace(' +val + ')';
},
setValue: function(v){
var m = this;
this.down('radio').setValue(true);
var t = v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')).split(',');
Ext.each(t, function(r, i){
if(i == 0) {
m.down('fieldcontainer').setValue(r);
} else {
var f = Ext.create('Ext.form.FieldContainer', {
items: [{
xtype: 'textfield',
emptyText: '显示值'
},{
xtype: 'textfield',
emptyText: '实际值'
}],
getValue: function(){
var val = this.items.items[0],dis = this.items.items[1];
if(!Ext.isEmpty(val.value) && !Ext.isEmpty(dis.value)) {
return val.value + ':' + dis.value;
}
return '';
},
setValue: function(v) {
if(!Ext.isEmpty(v)) {
this.items.items[0].setValue(v.split(':')[0]);
this.items.items[1].setValue(v.split(':')[1] || '');
}
}
});
m.insert(m.items.items.length - 1, f);
f.setValue(r);
}
});
}
},{
xtype: 'fieldcontainer',
name: 'copy',
columnWidth: 1,
layout: 'hbox',
items: [{
xtype: 'radio',
boxLabel: '等于字段',
name: 'default'
},{
xtype: 'combo',
displayField: 'display',
valueField: 'value',
queryMode: 'local',
editable: false,
store: Ext.create('Ext.data.Store', {
fields: ['display','value'],
data: ff
})
},{
xtype: 'radio',
name: 'condition',
inputValue: 'if',
boxLabel: '只在值为空时'
},{
xtype: 'radio',
name: 'condition',
inputValue: 'of',
boxLabel: '任何情况下',
checked: true
}],
getValue: function(){
var rr = this.query('radio[name=condition]'), vv = '';
Ext.each(rr, function(){
if(this.checked) {
vv = this.inputValue;
}
});
return 'copy' + vv + '(' + this.down('combo').value + ')';
},
setValue: function(v) {
this.down('radio').setValue(true);
this.down('combo').setValue(v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')));
var ff = v.substring(4, v.indexOf('('));
this.down('radio[inputValue=' + ff + ']').setValue(true);
}
},{
xtype: 'fieldcontainer',
name: 'others',
columnWidth: 1,
layout: 'hbox',
items: [{
xtype: 'radio',
boxLabel: '其它',
name: 'default'
},{
xtype: 'textfield'
}],
getValue: function() {
return this.down('textfield').value;
},
setValue: function(v) {
this.down('radio').setValue(true);
this.down('textfield').setValue(v);
}
}],
buttonAlign: 'center',
buttons: [{
text: '确定',
handler: function(b){
var w = b.ownerCt.ownerCt;
var val = '',ch = w.query('radio[name="default"]'),cc = null;
Ext.each(ch, function(){
if(this.checked) {
cc = this;
}
});
if(cc) {
v = cc.ownerCt.getValue();
if(v != null) {
val = v;
}
}
f.setValue(val);
record.set('id_default', val);
w.close();
}
},{
text: '取消',
handler: function(b){
b.ownerCt.ownerCt.close();
}
}]
});
var fc = ww.query('fieldcontainer');
if(!Ext.isEmpty(f.value)) {
var vv = f.value,bool = false;
Ext.each(fc, function(r){
if(contains(vv, r.name, true)) {
bool = true;
r.setValue(vv);
}
});
if(!bool) {
ww.down('fieldcontainer[name=others]').setValue(vv);
}
}
},
logicTypes: function(f, record){
var g = Ext.getCmp('initdetails'), dd = g.store.data.items,ff = [];
Ext.each(dd, function(i){
if(i.data.id_field != record.data.id_field) {
ff.push({
display: i.data.id_caption,
value: i.data.id_field
});
}
});
var ww = Ext.create('Ext.Window', {
autoShow: true,
modal: true,
title: '逻辑表达式',
width: '80%',
height: '60%',
layout: 'column',
padding: 15,
items: [{
xtype: 'fieldcontainer',
name: 'unique',
columnWidth: 1,
items: [{
xtype: 'checkbox',
boxLabel: '唯一性'
}],
getValue: function(){
return 'unique(' + record.data.id_table + '|' + record.data.id_field + ')';
},
setValue: function(v){
this.down('checkbox').setValue(true);
}
},{
xtype: 'fieldcontainer',
name: 'upper',
columnWidth: 1,
items: [{
xtype: 'checkbox',
boxLabel: '强制转大写'
}],
getValue: function(){
return 'upper(' + record.data.id_field + ')';
},
setValue: function(v){
this.down('checkbox').setValue(true);
}
},{
xtype: 'fieldcontainer',
name: 'trim',
columnWidth: 1,
layout: 'column',
items: [{
xtype: 'checkbox',
columnWidth: 0.1,
boxLabel: '禁用字符'
},{
xtype: 'textfield',
columnWidth: 0.1
},{
xtype: 'button',
iconCls: 'x-button-icon-add',
cls: 'x-btn-tb',
handler: function(b){
b.ownerCt.insert(b.ownerCt.items.items.length - 1, {
xtype: 'textfield',
columnWidth: 0.1
});
}
}],
getValue: function(){
var tx = this.query('textfield'),val = '';
Ext.each(tx, function(t){
if(!Ext.isEmpty(t.value)) {
if(val == '') {
val = t.value;
} else {
val += ',' + t.value;
}
}
});
if(val == '') {
return null;
}
return 'trim(' +val + ')';
},
setValue: function(v){
var m = this;
m.down('checkbox').setValue(true);
var t = v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')).split(',');
Ext.each(t, function(r, i){
if(i == 0) {
m.down('textfield').setValue(r);
} else {
m.insert(m.items.items.length - 1, {
xtype: 'textfield',
columnWidth: 0.1,
value: r
});
}
});
}
},{
xtype: 'fieldcontainer',
name: 'combo',
columnWidth: 1,
layout: 'column',
items: [{
xtype: 'checkbox',
columnWidth: 0.1,
boxLabel: '可选范围'
},{
xtype: 'textfield',
columnWidth: 0.1
},{
xtype: 'button',
iconCls: 'x-button-icon-add',
cls: 'x-btn-tb',
handler: function(b){
b.ownerCt.insert(b.ownerCt.items.items.length - 1, {
xtype: 'textfield',
columnWidth: 0.1
});
}
}],
getValue: function(){
var tx = this.query('textfield'),val = '';
Ext.each(tx, function(t){
if(!Ext.isEmpty(t.value)) {
if(val == '') {
val = t.value;
} else {
val += ',' + t.value;
}
}
});
if(val == '') {
return null;
}
return 'combo(' +val + ')';
},
setValue: function(v){
var m = this;
m.down('checkbox').setValue(true);
var t = v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')).split(',');
Ext.each(t, function(r, i){
if(i == 0) {
m.down('textfield').setValue(r);
} else {
m.insert(m.items.items.length - 1, {
xtype: 'textfield',
columnWidth: 0.1,
value: r
});
}
});
}
},{
xtype: 'fieldcontainer',
name: 'accord',
columnWidth: 1,
layout: 'column',
items: [{
xtype: 'checkbox',
columnWidth: 0.1,
boxLabel: '关联'
},{
columnWidth: 0.3,
emptyText: '表',
id: 'accord_table',
name: 'accord_table',
xtype: 'dbfindtrigger'
},{
columnWidth: 0.3,
emptyText: '字段',
id: 'accord_field',
name: 'accord_field',
dbKey: 'accord_table',
mappingKey: 'ddd_tablename',
dbMessage: '请选择表名',
xtype: 'dbfindtrigger'
}],
getValue: function(){
var at = this.down('dbfindtrigger[name=accord_table]'),
af = this.down('dbfindtrigger[name=accord_field]');
if(!Ext.isEmpty(at.value) && !Ext.isEmpty(af.value)) {
return 'accord(' + at.value + '|' + af.value + ')';
}
return null;
},
setValue: function(v){
this.down('checkbox').setValue(true);
var t = v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')).split('|');
this.down('dbfindtrigger[name=accord_table]').setValue(t[0]);
this.down('dbfindtrigger[name=accord_field]').setValue(t[1]);
}
},{
xtype: 'fieldcontainer',
name: 'diffence',
columnWidth: 1,
layout: 'column',
items: [{
xtype: 'checkbox',
columnWidth: 0.1,
boxLabel: '不同于'
},{
columnWidth: 0.3,
xtype: 'combo',
displayField: 'display',
valueField: 'value',
queryMode: 'local',
editable: false,
store: Ext.create('Ext.data.Store', {
fields: ['display','value'],
data: ff
})
}],
getValue: function(){
var c = this.down('combo');
if(!Ext.isEmpty(c.value)) {
return 'diffence(' + c.value + ')';
}
return null;
},
setValue: function(v){
this.down('checkbox').setValue(true);
this.down('combo').setValue(v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')));
}
},{
xtype: 'fieldcontainer',
name: 'combine',
columnWidth: 1,
layout: 'column',
items: [{
xtype: 'checkbox',
columnWidth: 0.1,
boxLabel: '组合校验'
},{
columnWidth: 0.3,
xtype: 'combo',
displayField: 'display',
valueField: 'value',
queryMode: 'local',
multiSelect: true,
editable: false,
store: Ext.create('Ext.data.Store', {
fields: ['display','value'],
data: ff
})
}],
getValue: function(){
var c = this.down('combo');
if(!Ext.isEmpty(c.value)) {
return 'combine(' + c.value + ')';
}
return null;
},
setValue: function(v){
this.down('checkbox').setValue(true);
this.down('combo').setValue(v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')));
}
},{
xtype: 'fieldcontainer',
name: 'minValue',
columnWidth: 1,
layout: 'column',
items: [{
xtype: 'checkbox',
columnWidth: 0.1,
boxLabel: '最小值'
},{
columnWidth: 0.3,
xtype: 'numberfield'
}],
getValue: function(){
var c = this.down('numberfield');
if(!Ext.isEmpty(c.value)) {
return 'minValue(' + c.value + ')';
}
return null;
},
setValue: function(v){
this.down('checkbox').setValue(true);
this.down('minValue').setValue(v.substring(v.indexOf('(') + 1, v.lastIndexOf(')')));
}
}],
buttonAlign: 'center',
buttons: [{
text: '确定',
handler: function(b){
var w = b.ownerCt.ownerCt;
var val = '',ch = w.query('checkbox[checked=true]'),v;
Ext.each(ch, function(c){
v = c.ownerCt.getValue();
if(v != null) {
if(val != '') {
val += ';';
}
val += v;
}
});
f.setValue(val);
record.set('id_logic', val);
w.close();
}
},{
text: '取消',
handler: function(b){
b.ownerCt.ownerCt.close();
}
}]
});
var fc = ww.query('fieldcontainer');
if(!Ext.isEmpty(f.value)) {
var vv = f.value.split(';');
Ext.each(vv, function(s){
Ext.each(fc, function(r){
if(contains(s, r.name, true)) {
r.setValue(s);
}
});
});
}
},
dataTypes: function(f, record){
var v = f.value,a = v.substring(v.indexOf('(') + 1, v.indexOf(')')),x = 30,y = 0;
if(a) {
x = a.split(',')[0];
y = a.split(',')[1];
}
var isDate = contains(f.value, 'date', true), isStr = contains(f.value, 'varchar2', true);
Ext.create('Ext.Window', {
autoShow: true,
modal: true,
title: '数据类型',
width: '40%',
height: '30%',
items: [{
xtype: 'container',
padding: '10 5 5 10',
items: [{
xtype: 'radio',
boxLabel: '日期',
name: 'type',
checked: isDate,
inputValue: 'date()',
listeners: {
change : function(){
if(this.checked) {
this.ownerCt.down('numberfield[name=length_y]').hide();
this.ownerCt.down('numberfield[name=length_x]').hide();
} else {
this.ownerCt.down('numberfield[name=length_x]').show();
}
}
}
},{
xtype: 'radio',
boxLabel: '字符串',
name: 'type',
checked: isStr,
inputValue: 'varchar2'
},{
xtype: 'radio',
boxLabel: '数字',
name: 'type',
checked: !isDate && !isStr,
inputValue: 'number',
listeners: {
change : function(){
if(this.checked) {
this.ownerCt.down('numberfield[name=length_y]').show();
this.ownerCt.down('numberfield[name=length_x]').setMaxValue(38);
this.ownerCt.down('numberfield[name=length_x]').validate();
} else {
this.ownerCt.down('numberfield[name=length_y]').hide();
this.ownerCt.down('numberfield[name=length_x]').setMaxValue(2000);
}
}
}
},{
xtype: 'numberfield',
fieldLabel: '长度',
name: 'length_x',
format: '0',
value: x,
hidden: isDate,
maxText: '超过最大长度',
listeners: {
change: function(f){
var a = f.ownerCt.down('radio[checked=true]').inputValue;
if(a == 'number') {
f.setMaxValue(38);
} else {
f.setMaxValue(2000);
}
}
}
},{
xtype: 'numberfield',
fieldLabel: '小数位数',
name: 'length_y',
hidden: isDate || isStr,
format: '0',
maxValue: 57,
maxText: '超过最大数57',
value: y
}]
}],
buttonAlign: 'center',
buttons: [{
text: '确定',
handler: function(b){
var w = b.ownerCt.ownerCt;
v = w.down('radio[checked=true]').inputValue;
x = w.down('numberfield[name=length_x]').value || 0;
y = w.down('numberfield[name=length_y]').value || 0;
if(v == 'varchar2') {
v += '(' + x + ')';
} else if (v == 'number') {
v += '(' + x + ',' + y + ')';
}
f.setValue(v);
record.set(f.name, v);
w.close();
}
},{
text: '取消',
handler: function(b){
b.ownerCt.ownerCt.close();
}
}]
});
},
/**
* 数据校验
*/
checkdata: function(grid){
var me = this;
var p = Ext.create('Ext.ProgressBar', {
width: '60%',
text: '准备校验中...',
floating: true,
renderTo: Ext.getBody()
}).show();
grid.setLoading(true);
//先删除上次校验记录
me.beforeCheck(grid, p, function(){
// 校验+清除校验环境
me.onCheck(grid, p, function(){
//刷新grid.renderer
me.getCheckResult(grid, p);
})
});
},
beforeCheck: function(grid, process, callback) {
Ext.Ajax.request({
url: basePath + 'pm/make/beforeCheckLog.action',
params: {
id: grid.ilid
},
method: 'post',
callback: function(opt, s, r) {
var res = Ext.decode(r.responseText);
if(res.success) {
callback.call();
} else {
alert('系统错误,准备校验失败!');
grid.setLoading(false);
process.destroy();
}
}
});
},
onCheck: function(grid, process, callback) {
process.updateProgress(0.4, '准备完毕,正在校验...', true);
Ext.Ajax.request({
url: basePath + 'pm/make/checkInitData.action',
timeout: 300000,
params: {
id: grid.ilid,
caller : caller
},
method: 'post',
callback: function(opt, s, r){
var res = Ext.decode(r.responseText);
if(!res) {
grid.setLoading(false);
p.destroy();
Ext.Msg.alert('发现错误', '连接超时');
} else if(res.success) {
process.updateProgress(0.8, '校验完成,正在获取校验结果...', true);
callback.call();
}
}
});
},
/**
* 从数据库取校验结果
*/
getCheckResult: function(grid, p){
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'pm/make/getCheckResult.action',
timeout: 60000,
params: {
id: grid.ilid
},
method: 'post',
callback: function(opt, s, r){
p.destroy();
grid.setLoading(false);
var rs = r.responseText;
if(rs != null && rs != '') {
grid.errorNodesStr = rs.replace(/\s/g, '').split('/');
} else {
grid.errorNodesStr = [];
alert('系统错误,未找到校验结果.');
}
grid.showErrors(1);
Ext.getCmp('toformal').show();
if(caller !='ProductSmt!Import'){
Ext.getCmp('thisdelete').show();
}
//Ext.getCmp('saveupdates').show();
}
});
},
toformal: function(grid){
var count = grid.down('pagingtoolbar').dataCount, pageSize = 2000, page = 0, a, b,
len = Math.ceil(count/pageSize), index = 0;
var p = Ext.create('Ext.ProgressBar', {
width: '60%',
text: '准备中...',
floating: true,
renderTo: Ext.getBody()
}).show();
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'system/beforeToFormal.action',
params: {
id: grid.ilid
},
callback: function(opt, s, r){
if (!s) {
grid.setLoading(false);
p.destroy();
showError('网络或系统错误!');return;
}
var res = Ext.decode(r.responseText);
if(res.success) {
while (page*pageSize < count) {
a = page * pageSize + 1;
b = (page + 1) * pageSize;
p.updateProgress(index/len, '开始导入' + index/len*100 + '%', true);
Ext.Ajax.request({
url: basePath + 'pm/make/toFormalData.action',
timeout: 30000,
method: 'post',
async: false,
params: {
id: grid.ilid,
start: a,
end: b
},
callback: function(_opt, _s, _r){
var rs = Ext.decode(_r.responseText);
if(rs.exceptionInfo) {
grid.setLoading(false);
p.destroy();
showError(rs.exceptionInfo);return;
} else if(_s){
index++;
p.updateProgress(index/len, '完成' + index/len*100 + '%', true);
if(index == len) {
grid.setLoading(false);
p.destroy();
alert('转入成功!');
Ext.getCmp('check').hide();
Ext.getCmp('toformal').hide();
Ext.Ajax.request({
url: basePath + 'pm/make/afterToFormal.action',
params: {
id: grid.ilid
},
callback: function(){
}
});
}
} else
return;
}
});
page++;
}
} else {
grid.setLoading(false);
p.destroy();
showError(res.exceptionInfo);
}
}
});
},
/**
* 保存已修改的数据
*//*
saveUpdates: function(grid){
var items = grid.store.data.items,arr = new Array(), d;
Ext.each(items, function(item){
if(item.dirty) {
d = item.data;
delete d.log;
arr.push(d);
}
});
Ext.Ajax.request({
url: basePath + 'system/updateInitData.action',
method: 'post',
params: {
data: Ext.encode(arr)
},
callback: function(opt, s, r) {
var res = Ext.decode(r.responseText);
if(res.success) {
alert('保存成功!');
grid.getGridData(1);
}
}
});
},*/
parseLogic: function(logic) {
if(logic != null) {
var gc = logic.split(';'), str = '';
for(var i in gc) {
var s = gc[i];
if(s != null) {
if(s.indexOf('unique') > -1) {
str += '唯一性;';
} else if(s.indexOf('trim') > -1) {
str += '不能包含' + s.replace('trim', '') + ';';
} else if(s.indexOf('combo') > -1) {
str += '只能是' + s.replace('combo', '') + '之一;';
} else if(s.indexOf('accord') > -1) {
str += '必须存在于' + s.replace('accord', '') + '中;';
}else if(s.indexOf('combine') > -1) {
str += '组合字段在关联表中不存在;';
} else if(s.indexOf('diffence') > -1) {
str += '必须与' + s.replace('diffence', '') + '不同;';
}else if(s.indexOf('minValue') > -1) {
str += '必须大于' + s.replace('minValue', '') + ';';
}
}
}
return str;
}
return null;
},
openUrl: function() {
var me = this, value = caller;
var keyField = 'dg_caller';
var pfField = 'dg_caller';
var formCondition = keyField + "IS" + value ;
var gridCondition = pfField + "IS" + value;
var panelId = caller + keyField + "_" + value + gridCondition;
var panel = Ext.getCmp(panelId);
var main = parent.Ext.getCmp("content-panel");
var url = 'jsps/ma/detailgrid.jsp';
if(!main){
main = parent.parent.Ext.getCmp("content-panel");
}
if(!panel){
var title = "";
if (value.toString().length>4) {
title = value.toString().substring(value.toString().length-4);
} else {
title = value;
}
var myurl = '';
if(me.BaseUtil.contains(url, '?', true)){
myurl = url + '&formCondition='+formCondition+'&gridCondition='+gridCondition;
} else {
myurl = url + '?formCondition='+formCondition+'&gridCondition='+gridCondition;
}
myurl += "&datalistId=" + main.getActiveTab().id;
if(main._mobile) {
main.addPanel(me.BaseUtil.getActiveTab().title+'('+title+')', myurl, panelId);
} else {
panel = {
title : me.BaseUtil.getActiveTab().title+'('+title+')',
tag : 'iframe',
tabConfig:{tooltip:me.BaseUtil.getActiveTab().tabConfig.tooltip+'('+keyField + "=" + value+')'},
border : false,
layout : 'fit',
iconCls : 'x-tree-icon-tab-tab1',
html : '',
closable : true,
listeners : {
close : function(){
if(!main){
main = parent.parent.Ext.getCmp("content-panel");
}
main.setActiveTab(main.getActiveTab().id);
}
}
};
this.openTab(panel, panelId);
}
}else{
main.setActiveTab(panel);
}
},
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);
}
},
parseError : function(lineError,items,columns,i){
log = '';
log += '| 字段 | 错误 |
';
item = items[i%100];
var d = item.data;
if(lineError.length==0){
item.set('log', '');
}else{
for(var j = 0; j < lineError.length-1 ; j++){
var fieldS = lineError[j].split('-')[0];
var errorS = lineError[j].split('-')[1];
Ext.each(columns, function(c, idx){
if(idx > 0 ){
if(c.dataIndex.toLocaleLowerCase() == fieldS){
log += '| ' + c.text + ' | '
+ (errorS || '') + ' |
';
}
}
});
}
if(log != '') {
log += '
';
}
item.set('log', log);
}
},
//删除导入数据
thisdelete: function(grid,me){
grid.setLoading(true);
Ext.Ajax.request({
url: basePath + 'pm/make/thisdelete.action',
params: {
id: grid.ilid,
caller : caller
},
callback: function(opt, s, r){
if (!s) {
grid.setLoading(false);
showError('网络或系统错误!');return;
}
var res = Ext.decode(r.responseText);
if(res.success) {
grid.setLoading(false);
alert('删除成功!');
me.getDetails(Ext.getCmp('template'), caller, true);
Ext.getCmp('check').hide();
Ext.getCmp('toformal').hide();
Ext.getCmp('thisdelete').hide();
} else {
grid.setLoading(false);
showError(res.exceptionInfo);
}
}
});
}
});