You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/SysMng/ViewJs/DBTableConn/DBTableConnEdit.js

701 lines
22 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

///<reference path="../../../../Views/../TruckMng/Scripts/ext-all-debug.js" />
Ext.namespace('BaseProject');
var BillNoCount=0;
Shipping.DBTableConnEdit = function (config) {
Ext.applyIf(this, config);
this.initUIComponents();
window.Shipping.DBTableConnEdit.superclass.constructor.call(this);
};
function getSaved(){
if (panelEdit.formEdit.getForm().isDirty()== true )
{
return true;
}
else return false;
}
Ext.extend(Shipping.DBTableConnEdit, Ext.Panel, {
parentWin: null,
OpStatus: 'edit',
StoreList: null,
editRecord: null,
initUIComponents: function () {
this.bodyDel = [];
this.formname = "modDBTableConnEdit";
//#region 编辑form:formEdit
this.formEdit = Ext.widget('form', {
// layout: "border",
region: 'north',
height:180,
//collapsed: false,
//collapsible: true,
frame: true,
bodyPadding: 3,
trackResetOnLoad: true,
fieldDefaults: {
margins: '4 0 0 0',
labelAlign: 'right',
flex: 1,
labelWidth: 60,
msgTarget: 'qtip'
//,split:true
},
items: [
{//fieldset 1
xtype: 'fieldset',
defaultType: 'textfield',
layout: 'anchor',
defaults: {
anchor: '100%'
},
items: [{//container_1
xtype: 'container',
layout: 'hbox',
defaultType: 'textfield',
items: [{
fieldLabel: 'ID',
hidden: true,
name: 'ID'
}, {
fieldLabel: '名称',flex:3,
name: 'NAME'
}, {
fieldLabel: '同步方式', flex: 3, tooltip: '时间标签/实际同步时间/单号/日期/空,分别代表\ln\ln按时间标签判断是否更新/按来源时间标签晚于同步开始时间/只同步指定单号的数据/只比对时间晚于条件内日期的数据/(即完全同步)',
name: 'SYNCTYPE'
}, {
fieldLabel: '开始时间', flex: 2,
name: 'SYNCSTARTTIME', readOnly: true
}, {
fieldLabel: '完成时间', flex: 2,
name: 'SYNCTIME', readOnly: true
}, {
fieldLabel: '状态', flex: 2, tooltip: '此值为正在进行时最好不要强制执行',
name: 'SYNCSTATES',readOnly:true
}, {
fieldLabel: '同步频率', flex: 1,tooltip:'自动同步设置,暂时无用',
name: 'SYNCFREQ',
xtype: 'numberfield',
selectOnFocus: true, //得到焦点时自动选择文本
allowDecimals: false, //允许输入小数
decimalPrecision: 0, //允许保留的小数位数,并四舍五入
nanText: '请输入有效数值', hidden: true,
hideTrigger: false //是否隐藏上下调节按钮
}, {
fieldLabel: '时间戳',
name: 'TIMEMARK', flex: 0, hidden: true, margins: '0'
}
]
}, {//container_2
xtype: 'container',
layout: 'hbox',
defaultType: 'textfield',
items: [
{
fieldLabel: '来源库', flex: 1,
name: 'FROMDB'
}, {
fieldLabel: '来源表', flex: 1,
name: 'FROMTABLE'
}, {
fieldLabel: '来源主键', flex: 1,
name: 'FROMPKEY'
}, {
fieldLabel: '时间标签', flex: 1,tooltip:'来源时间标签字段名',
name: 'FROMTIMEMARK'
}
]
}, {//container_3
xtype: 'container',
layout: 'hbox',
defaultType: 'textfield',
items: [
{
fieldLabel: '目标库', flex: 1,
name: 'TODB'
}, {
fieldLabel: '目标表', flex: 1,
name: 'TOTABLE'
}, {
fieldLabel: '目标主键', flex: 1,
name: 'TOPKEY'
}, {
fieldLabel: '时间标签', flex: 1, tooltip: '目标时间标签字段名',
name: 'TOTIMEMARK'
}
]
}, {//container_4
xtype: 'container',
layout: 'hbox',
defaultType: 'textfield',
items: [
{
fieldLabel: '说明', flex: 1,
name: 'DESCRPTION'
}
]
}, {//container_4
xtype: 'container',
layout: 'hbox',
defaultType: 'textfield',
items: [
{
fieldLabel: '条件', flex: 1,
name: 'CONDITION'
}
]
}
]
}]
}); //end this.formEdit
//#endregion
//数据集
this.storeBody = Ext.create('Ext.data.Store', {
model: 'SYS_TABLECONN_FIELDmb',
pageSize: 9999,
remoteSort: false,
proxy: {
type: 'ajax',
url: '/SysMng/DBTableConn/GetBodyList',
reader: {
id: 'ID',
root: 'data',
totalProperty: 'totalCount'
}
}
});
this.Bodycolumns = [
{
dataIndex: 'ID',
header: 'ID',
width: 80,
hidden: true
},
{
dataIndex: 'CONNID',
header: 'CONNID',
width: 80,
hidden: true
},{
dataIndex: 'NAME',
header: '名称',
width: 80,
editor: {
xtype: 'textfield', //numberfield textfield
selectOnFocus: true
}
},{
dataIndex: 'FROMFIELDNAME',
header: '来源字段',
width: 120,
editor: {
xtype: 'textfield', //numberfield textfield
selectOnFocus: true
}
}, {
dataIndex: 'TOFIELDNAME',
header: '目标字段',
width: 120,
editor: {
xtype: 'textfield', //numberfield textfield
selectOnFocus: true
}
}, {
dataIndex: 'CALCULATE',
header: '计算',
width: 80,
editor: {
xtype: 'textfield', //numberfield textfield
selectOnFocus: true
}
}];
//表格
this.cellEditingBody = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
this.Body_CBModel = Ext.create('Ext.selection.CheckboxModel');
this.gridBody = new Ext.grid.GridPanel({
store: this.storeBody,
layout: "border",
enableHdMenu: false,
region: 'center',
//height: 160,
title: '字段信息',
loadMask: { msg: "数据加载中,请稍等..." },
trackMouseOver: true,
disableSelection: false,
plugins: [this.cellEditingBody],
selModel: this.Body_CBModel,
selType: 'cellmodel',
tbar: [{
text: '增加明细',
tooltip: '增加明细',
iconCls: "btnadddetail",
handler: function (button, event) {
this.onAddBodyClick(button, event);
},
scope: this
}, '-', {
text: '删除明细',
tooltip: '删除明细',
iconCls: "btndeletedetail",
handler: function (button, event) {
this.onDelBodyClick(button, event);
},
scope: this
}, {
text: "保存列表样式",
id: "btnsavelist",
handler: function (button, event) {
var tempcolumns = this.gridBody.columns;
DsTruck.SaveGridPanel(USERID, _this.formname, tempcolumns,1);
},
scope: this
}],
columns: this.Bodycolumns
});
this.Bodycolumns = DsTruck.GetGridPanel(USERID, this.formname, this.Bodycolumns);
//使用者id表名 中间column数组跳过一开始的几列
this.gridBody.reconfigure(this.storeBody, this.Bodycolumns);
//#endregion 明细<<<< 字段表 >>>>结束
//公共按钮Toolbar:panelBtn
this.panelBtn = new Ext.Panel({
region: "north",
tbar: [
{
// id: "saveandclose",
text: "保存",
//disabled: true,
id: "SAVE1",
handler: function (button, event) {
this.Save('0');
},
scope: this
}, {
// id: "saveandclose",
text: "保存并关闭",
//disabled: true,
id: "SAVE2",
handler: function (button, event) {
this.Save('1');
},
scope: this
},'-',
{
// id: "saveandclose",
text: "关闭",
handler: function (button, event) {
window.close();
},
scope: this
}, '-',
{
// id: "saveandclose",
text: "同步数据",
//disabled: true,
id: "DoSync",
handler: function (button, event) {
this.DoSync();
},
scope: this
}
]
}); //end 按钮Toolbar
//#region 布局
/* 3 */
this.panelTop = new Ext.Panel({
layout: "border",
region: "north",
height: 32,
items: [this.panelBtn]//, this.formEdit]
});
this.panelBody = new Ext.Panel({
layout: "border",
region: 'center',
margin: '0 0',
height: 320,
split: true,
items: [this.gridBody]
});
this.page_1 = new Ext.Panel({
title: "班级信息",
autoScroll: true,
layout: "border",
region: 'center',
autoScroll: true,
split: true,
items: [this.formEdit, this.panelBody]
});
this.MainTab = new Ext.tab.Panel({
layout: "border",
region: "center",
items: [this.page_1
]
})
Ext.apply(this, {
items: [this.panelTop, this.formEdit, this.panelBody]
});
//#endregion
parentWin = window.parent.opener;
this.InitData();
//集中绑定编辑后事件
this.gridBody.on('edit', function (editor, e, eOpts) {
this.BodyAfterEdit(editor, e, eOpts);
}, this);
this.cellEditingBody.on('beforeedit', function (editor, e) {
return this.BodyBeforeEdit(editor, e);
}, this);
}, //end initUIComponents
//#region Body相关方法
onAddBodyClick: function (button, event) {
//var _r=this.reLine();
var record = Ext.create('SYS_TABLECONN_FIELDmb', {
'ID': NewGuid()
});
this.storeBody.add(record);
var n = this.storeBody.getCount();
this.cellEditingBody.startEditByPosition({ row: n - 1, column: 2 });
},
onDelBodyClick: function (button, event) {
var selectedRecords = this.gridBody.selModel.getSelection();
Ext.MessageBox.confirm('提示', '确定删除记录吗?', function (btn) {
if (btn == 'yes') {
var _Used=0;
for (var i = 0; i < selectedRecords.length; i++) {
var rec = selectedRecords[i];
var ID=rec.data.ID;
if (ID == "" || ID == null) {
//continue;
} else {
/*
Ext.Ajax.request({
waitMsg: '正在查询数据...',
url: '/CommMng/BasicDataRef/GeneralSelect',
scope: this,
async:false,
params: {condition: "select Count(*) GVALUE,'' as GID from Import_appstate where isnull(cancellation,0)=0 and cargo_id="+cargo_id+" "} ,
waitMsg: "正在查询数据...",
callback: function (options, success, response) {
var result = Ext.JSON.decode(response.responseText);
_Used=parseFloat(result.data[0].GVALUE);
}
});*/
}
//if (parseFloat( _Used)>0){
// alert("此商品已配证,不能删除");
//}else{
if (rec.ID != "" || rec.ID != "*") //如果是新增但没有保存的数据,没有必要提交到后台
{
this.bodyDel.push(rec);
}
this.storeBody.remove(selectedRecords[i]);
//}
}
}
}, this);
},
BodyAfterEdit: function(editor, e, eOpts) {
//alert(e.field);
},
BodyBeforeEdit: function (editor, e) {
var ID = e.record.get('ID');
var canedit=true;
//alert(e.field);
return canedit;
},
//#endregion 明细表<<<商品>>>的相关方法
InitData: function () {
this.opStatus = 'edit';
var condition = '';
if (parentWin) {
var ret = parentWin.OprationSwap();
this.opStatus = ret[0];
this.StoreList = ret[1];
this.editRecord = ret[2];
// this.parentfunction = ret[3];
}
if (this.opStatus == 'edit')
condition = " ID='" + this.editRecord.get('ID') + "'";
this.LoadData(this.opStatus, condition);
}, //end InitData
//载入数据
LoadData: function (opstatus, condition) {
//三个获得当前时间的函数 已于master页面中实现
//alert(currdate);
//alert(currdateStr);
//alert(currdateTime);
if (opstatus == "edit") {
this.formEdit.getForm().setValues(this.editRecord.data);
}
this.opStatus = opstatus;
Ext.Ajax.request({
waitMsg: '正在查询主表数据...',
url: '/SysMng/DBTableConn/GetData',
params: {
handle: opstatus,
condition: condition
},
callback: function (options, success, response) {
if (success) {
var result = Ext.JSON.decode(response.responseText);
if (!result.Success) {
Ext.Msg.show({
title: '提示',
msg: result.Message,
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.OK
});
return;
}
var data = result.data;
this.formEdit.getForm().setValues(data);
function setsave(){ saved = true; }
var task = new Ext.util.DelayedTask(setsave);
task.delay(500);//
//完成载入后,将状态设为已存储
} else {
Ext.MessageBox.alert('请求出现错误,请重试', response.responseText);
}
},
scope: this
});//request over
if (this.opStatus == 'edit') {
var s = " CONNID='" + this.editRecord.get('ID') + "'";
//alert(s);
this.storeBody.load({ params: { condition: s } });
}
}, // end LoadDate
checkedit: function () {
if (this.storeBody.getCount() == 0) { return true; }
else {
for (var i = 0; i < this.storeBody.getCount() ; i += 1) {
var member = this.storeBody.getAt(i).data;
if (member.NAME == "" || member.FROMFIELDNAME == "" || member.TOFIELDNAME == "") {
alert("请填写名称和双方向字段名");
return false;
} else { return true; }
}
}
},
Save: function (type) {
if (!this.checkedit()) {
return;
}
var basicForm = this.formEdit.getForm();
if (!basicForm.isValid()) {
return;
}
if (!validateEditorGridPanel(this.gridBody)) {
return;
}
var data = this.formEdit.getForm().getValues();
var Bodydatas = [];
for (var i = 0; i < this.storeBody.getCount(); i += 1) {
var member = this.storeBody.getAt(i);
Bodydatas.push(member);
}
//学生明细
var SaveBody = ConvertRecordsToJson(Bodydatas);
var SaveDelBody = ConvertRecordsToJsonAll(this.bodyDel);
Ext.Msg.wait('正在保存数据, 请稍侯..');
Ext.Ajax.request({
waitMsg: '正在保存数据...',
url: '/SysMng/DBTableConn/Save',
scope: this,
params: {
opstatus: this.opStatus,
data: Ext.JSON.encode(data),
Body: SaveBody,
DelBody: SaveDelBody
},
callback: function (options, success, response) {
if (success) {
Ext.MessageBox.hide();
var jsonresult = Ext.JSON.decode(response.responseText);
if (jsonresult.Success) {
//this.storeXS.commitChanges();
var returnData = jsonresult.Data;
billno="";
if (this.opStatus == 'add') {
var arrNewRecords = this.StoreList.add(returnData);
this.editRecord = arrNewRecords[0];
this.opStatus = 'edit';
this.formEdit.getForm().setValues(returnData);
}
else if (this.opStatus == 'edit') {
var editp = Ext.create('SYS_TABLECONNmb', returnData);
this.editRecord.fields.each(function (field) {
if (field.persist) {
name = field.name;
//alert(name + ' -- ' + editp.get(name));
//if (name != 'id')
this.editRecord.set(name, editp.get(name));
}
}, this);
this.editRecord.commit();
this.formEdit.getForm().setValues(returnData);
}
//重新载入子列表
this.storeBody.load({ params: { condition: " CONNID='" + this.editRecord.get('ID') + "'" } });
} else {
Ext.Msg.show({ title: '错误', msg: jsonresult.Message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK });
}
} else {
Ext.Msg.show({ title: '请重试',
msg: '服务器响应出错',
icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK
});
}
//alert('03');
}
});
} //end save
,
DoSync: function () {
if (!this.checkedit()) {
return;
}
if (this.opStatus == 'add') {
return;
}
var basicForm = this.formEdit.getForm();
if (!basicForm.isValid()) {
return;
}
if (!validateEditorGridPanel(this.gridBody)) {
return;
}
var data = this.formEdit.getForm().getValues();
//var Bodydatas = [];
//for (var i = 0; i < this.storeBody.getCount() ; i += 1) {
// var member = this.storeBody.getAt(i);
// Bodydatas.push(member);
//}
//var SaveBody = ConvertRecordsToJson(Bodydatas);
//var SaveDelBody = ConvertRecordsToJsonAll(this.bodyDel);
//Ext.Msg.wait('正在保存数据, 请稍侯..');
Ext.Ajax.request({
//waitMsg: '正在保存数据...',
url: '/SysMng/DBTableConn/DoSync',
method: 'POST',
scope: this,
params: {
data: Ext.JSON.encode(data)
},
//callback: function (options, success, response) {
// if (success) {
// Ext.MessageBox.hide();
// var jsonresult = Ext.JSON.decode(response.responseText);
// if (jsonresult.Success) {
// } else {
// Ext.Msg.show({ title: '错误', msg: jsonresult.Message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK });
// }
// } else {
// Ext.Msg.show({
// title: '请重试',
// msg: '服务器响应出错',
// icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK
// });
// }
//},
failure:function(res){
//////
}
});
} //end save
});