|
|
|
|
|
Ext.namespace('Shipping');
|
|
|
//#region 获取 YYYY-mm-dd 格式的日期
|
|
|
//var xhr = new XMLHttpRequest();
|
|
|
//var currdate = new Date();
|
|
|
//xhr.open("HEAD", location.href, true);
|
|
|
//xhr.onreadystatechange = function () {
|
|
|
// if (xhr.readyState == 4 && xhr.status == 200) {
|
|
|
// var datestr = xhr.getResponseHeader("Date");
|
|
|
// currdate = new Date(datestr);
|
|
|
// }
|
|
|
//}
|
|
|
//xhr.send(null);
|
|
|
//#endregion
|
|
|
Shipping.MsOpCtnrDynaEdit = function (config) {
|
|
|
Ext.applyIf(this, config);
|
|
|
this.initUIComponents();
|
|
|
window.Shipping.MsOpCtnrDynaEdit.superclass.constructor.call(this);
|
|
|
};
|
|
|
|
|
|
Ext.extend(Shipping.MsOpCtnrDynaEdit, Ext.Panel, {
|
|
|
parentWin: null,
|
|
|
OpStatus: 'add',
|
|
|
StoreList: null,
|
|
|
EditRecord: null,
|
|
|
parentRecord: null,
|
|
|
|
|
|
|
|
|
initUIComponents: function () {
|
|
|
this.formname = 'MsCtnrDynaEdit';
|
|
|
|
|
|
this.CtnrDynaBodyDel = [];
|
|
|
|
|
|
|
|
|
|
|
|
//#region 数据集定义
|
|
|
//空重
|
|
|
this.storeCTNEF = Ext.create('Ext.data.Store', {
|
|
|
fields: ['FType', 'NAME']
|
|
|
});
|
|
|
this.storeCTNEF.add({ "FType": 'E', "NAME": "空" });
|
|
|
this.storeCTNEF.add({ "FType": 'F', "NAME": "重" });
|
|
|
|
|
|
this.comboxCTNEF = Ext.create('DsExt.ux.RefTableCombox', {
|
|
|
store: this.storeCTNEF,
|
|
|
fieldLabel: '空重',
|
|
|
valueField: 'FType',
|
|
|
displayField: 'NAME',
|
|
|
forceSelection: true,
|
|
|
name: 'CTNEF'
|
|
|
});
|
|
|
|
|
|
|
|
|
this.storeCodeLoadport = Ext.create('DsExt.ux.RefTableStore', {
|
|
|
model: 'DsShipping.ux.CodeLoadportModel',
|
|
|
proxy: { url: '/CommMng/BasicDataRef/GetCodeLoadportList' }
|
|
|
});
|
|
|
this.storeCodeLoadport.load();
|
|
|
this.comboxPORT = Ext.create('DsExt.ux.RefTableCombox', {
|
|
|
fieldLabel: '所在港口',
|
|
|
store: this.storeCodeLoadport,
|
|
|
//forceSelection: true,
|
|
|
id: 'PORT',
|
|
|
name: 'PORT',
|
|
|
valueField: 'PORT',
|
|
|
displayField: 'CodeAndName',
|
|
|
matchFieldWidth: false //下拉款自适应宽度
|
|
|
|
|
|
//
|
|
|
});
|
|
|
|
|
|
|
|
|
//场站
|
|
|
this.storeYARD = Ext.create('DsExt.ux.RefTableStore', {
|
|
|
model: 'DsShipping.ux.CustomRefModel',
|
|
|
proxy: { url: '/CommMng/BasicDataRef/GetCustomRefListYARD' }
|
|
|
});
|
|
|
this.storeYARD.load();
|
|
|
//
|
|
|
this.comboxYARD = Ext.create('DsExt.ux.RefTableCombox', {
|
|
|
fieldLabel: '场站',
|
|
|
store: this.storeYARD,
|
|
|
forceSelection: true,
|
|
|
queryMode: 'remote',
|
|
|
minChars: 0,
|
|
|
queryParam: 'CODENAME',
|
|
|
name: 'YARD',
|
|
|
valueField: 'CustName',
|
|
|
displayField: 'CodeAndName'
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
//人员信息加载
|
|
|
this.storeOpCode = Ext.create('DsExt.ux.RefTableStore', {
|
|
|
model: 'DsShipping.ux.UserRefModel',
|
|
|
proxy: { url: '/CommMng/BasicDataRef/GetUserRefList' }
|
|
|
});
|
|
|
this.storeOpCode.load();
|
|
|
//操 作
|
|
|
this.comboxOP = Ext.create('DsExt.ux.RefTableCombox', {
|
|
|
fieldLabel: '操作',
|
|
|
store: this.storeOpCode,
|
|
|
forceSelection: true,
|
|
|
name: 'OP',
|
|
|
valueField: 'UserName',
|
|
|
displayField: 'CodeAndName',
|
|
|
enableKeyEvents: true
|
|
|
});
|
|
|
//箱动态类型
|
|
|
this.storeCTNSTATUS = Ext.create('DsExt.ux.RefEnumStore', {});
|
|
|
this.storeCTNSTATUS.load({ params: { enumTypeId: 99060 } });
|
|
|
this.comboxCTNSTATUS = Ext.create('DsExt.ux.RefEnumCombox', {
|
|
|
store: this.storeCTNSTATUS,
|
|
|
fieldLabel: '箱动态',
|
|
|
name: 'CTNSTATUS',
|
|
|
valueField: 'EnumValueName',
|
|
|
displayField: 'EnumValueName'
|
|
|
});
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
//#region form定义
|
|
|
|
|
|
//编辑form:formEdit
|
|
|
this.formEdit = Ext.widget('form', {
|
|
|
// layout: "border",
|
|
|
region: 'north',
|
|
|
height: 170,
|
|
|
frame: true,
|
|
|
bodyPadding: 1,
|
|
|
trackResetOnLoad: true,
|
|
|
fieldDefaults: {
|
|
|
margins: '1 1 1 1',
|
|
|
labelAlign: 'right',
|
|
|
flex: 1,
|
|
|
labelWidth: 64,
|
|
|
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: 'CTNGID',
|
|
|
hidden: true,
|
|
|
name: 'CTNGID'
|
|
|
}, {
|
|
|
fieldLabel: '箱号', flex: 1,
|
|
|
name: 'CNTRNO',
|
|
|
id: 'CNTRNO',
|
|
|
readOnly:true
|
|
|
|
|
|
},this.comboxPORT,
|
|
|
this.comboxYARD,
|
|
|
this.comboxCTNSTATUS,
|
|
|
this.comboxCTNEF
|
|
|
]
|
|
|
}//container_1 end
|
|
|
,
|
|
|
|
|
|
{
|
|
|
xtype: 'container',
|
|
|
layout: 'hbox',
|
|
|
defaultType: 'textfield',
|
|
|
items: [
|
|
|
{
|
|
|
fieldLabel: '主提单号', flex: 1,
|
|
|
name: 'MBLNO',
|
|
|
id: 'MBLNO'
|
|
|
|
|
|
|
|
|
},
|
|
|
{
|
|
|
fieldLabel: '动态日期',
|
|
|
name: 'CTNSTATUSTIME',
|
|
|
format: 'Y-m-d',
|
|
|
labelWidth: 90,
|
|
|
xtype: 'datefield',
|
|
|
enableKeyEvents: true
|
|
|
|
|
|
},
|
|
|
{
|
|
|
fieldLabel: '箱型', flex: 1,
|
|
|
name: 'CTNALL',
|
|
|
id: 'CTNALL',
|
|
|
xtype: 'hidden'
|
|
|
|
|
|
|
|
|
},
|
|
|
{
|
|
|
fieldLabel: '箱源', flex: 1,
|
|
|
name: 'CNTRSOURCE',
|
|
|
id: 'CNTRSOURCE',
|
|
|
xtype: 'hidden'
|
|
|
|
|
|
|
|
|
},
|
|
|
{ xtype: 'hidden' }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
]
|
|
|
}
|
|
|
|
|
|
]
|
|
|
}
|
|
|
]
|
|
|
});
|
|
|
//#endregion
|
|
|
|
|
|
//#region 编辑
|
|
|
|
|
|
//数据集
|
|
|
this.storeCtnrDyna = Ext.create('Ext.data.Store', {
|
|
|
model: 'MsOpCtnrDetail',
|
|
|
pageSize: this.PageSize,
|
|
|
remoteSort: false,
|
|
|
pruneModifiedRecords: true,
|
|
|
proxy: {
|
|
|
type: 'ajax',
|
|
|
url: '/MvcShipping/MsOpCtnr/GetDynaList',
|
|
|
reader: {
|
|
|
id: 'GID',
|
|
|
root: 'data',
|
|
|
totalProperty: 'totalCount'
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
var _this = this;
|
|
|
this.columns = [
|
|
|
{
|
|
|
sortable: true, //1
|
|
|
dataIndex: 'GID',
|
|
|
header: '惟一编号',
|
|
|
width: 80, hidden: true
|
|
|
}, {
|
|
|
sortable: true, //1
|
|
|
dataIndex: 'CTNGID',
|
|
|
header: '箱号',
|
|
|
width: 80, hidden: true
|
|
|
}, {
|
|
|
sortable: true, //1
|
|
|
dataIndex: 'CNTRNO',
|
|
|
header: '箱号',
|
|
|
width: 80, hidden: false, editor: {
|
|
|
xtype: 'textfield'
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
sortable: true,
|
|
|
dataIndex: 'CTNEF',
|
|
|
header: '空重',
|
|
|
width: 80,
|
|
|
editor: this.comboxCTNEF
|
|
|
},{
|
|
|
sortable: true,
|
|
|
dataIndex: 'CTNSTATUS',
|
|
|
header: '当前箱动态',
|
|
|
width: 80,
|
|
|
editor: this.comboxCTNSTATUS
|
|
|
},
|
|
|
{
|
|
|
sortable: true,
|
|
|
dataIndex: 'CTNSTATUSTIME',
|
|
|
header: '箱动态时间',
|
|
|
width: 80,
|
|
|
editor: {
|
|
|
xtype: 'datefield',
|
|
|
format: 'Y-m-d',
|
|
|
selectOnFocus: true
|
|
|
},
|
|
|
renderer: Ext.util.Format.dateRenderer('Y-m-d')
|
|
|
},
|
|
|
|
|
|
{
|
|
|
sortable: true,
|
|
|
dataIndex: 'PORT',
|
|
|
header: '当前地点',
|
|
|
width: 80,
|
|
|
editor: this.comboxPORTDetail
|
|
|
},
|
|
|
{
|
|
|
sortable: true,
|
|
|
dataIndex: 'YARD',
|
|
|
header: '当前场站',
|
|
|
width: 80,
|
|
|
editor: this.comboxYARDDetail
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
sortable: true,
|
|
|
dataIndex: 'REMARK',
|
|
|
header: '备注',
|
|
|
width: 80,
|
|
|
editor: {
|
|
|
xtype: 'textfield'
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
];
|
|
|
this.girdcolums = this.columns;
|
|
|
this.girdcolums = DsTruck.GetGridPanel(USERID, this.formname, this.girdcolums, 1); //使用者id,表名,中间column数组,跳过一开始的几列
|
|
|
|
|
|
this.cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
|
|
|
clicksToEdit: 1
|
|
|
});
|
|
|
this.CheckBoxModel = Ext.create('Ext.selection.CheckboxModel');
|
|
|
|
|
|
this.formCtnrInBody = new Ext.grid.GridPanel({
|
|
|
store: this.storeCtnrDyna,
|
|
|
enableHdMenu: false,
|
|
|
region: 'center',
|
|
|
columnLines: true,
|
|
|
//layout: "border",
|
|
|
//title: '费用明细',
|
|
|
loadMask: { msg: "数据加载中,请稍等..." },
|
|
|
trackMouseOver: true,
|
|
|
disableSelection: false,
|
|
|
plugins: [this.cellEditing],
|
|
|
selModel: this.CheckBoxModel,
|
|
|
selType: 'cellmodel',
|
|
|
features: [{
|
|
|
ftype: 'summary'//Ext.grid.feature.Summary表格汇总特性
|
|
|
}],
|
|
|
tbar: [{ xtype: 'label', text: '集装箱信息',
|
|
|
style: 'font-size:18px',
|
|
|
labelColor: '#099',
|
|
|
|
|
|
//style:'background-color: #4b9bf5',
|
|
|
x: '5%',
|
|
|
y: '5%'
|
|
|
}, {
|
|
|
text: '增加', id: "add1",
|
|
|
tooltip: '增加',
|
|
|
iconCls: "btnadddetail",
|
|
|
handler: function (button, event) {
|
|
|
|
|
|
this.onAddCtnrInClick(button, event);
|
|
|
},
|
|
|
scope: this
|
|
|
}, {
|
|
|
text: '删除', id: "del1",
|
|
|
tooltip: '删除',
|
|
|
iconCls: "btndeletedetail",
|
|
|
handler: function (button, event) {
|
|
|
|
|
|
this.onDelCtnrInClick(button, event);
|
|
|
},
|
|
|
scope: this
|
|
|
}, '-', {
|
|
|
// id: "saveandclose",
|
|
|
text: "保存",
|
|
|
iconCls: "btnsave",
|
|
|
handler: function (button, event) {
|
|
|
|
|
|
this.Save('0');
|
|
|
},
|
|
|
scope: this
|
|
|
}, '-', {
|
|
|
text: "保存列表样式",
|
|
|
menu: [{ text: "保存",
|
|
|
handler: function (button, event) {
|
|
|
_this.girdcolums = DsTruck.SaveGridPanel(USERID, _this.formname, _this.formCtnrInBody.columns, _this.girdcolums, 0, true); //使用者id,表名,中间column数组,跳过一开始的几列
|
|
|
|
|
|
}
|
|
|
}, { text: "初始化",
|
|
|
handler: function (menu, event) {
|
|
|
_this.formCtnrInBody.reconfigure(_this.storeCtnrDyna, _this.columns);
|
|
|
_this.girdcolums = DsTruck.SaveGridPanel(USERID, _this.formname, _this.formCtnrInBody.columns, _this.columns, 0, true); //使用者id,表名,中间column数组,跳过一开始的几列
|
|
|
}
|
|
|
}],
|
|
|
scope: this
|
|
|
}],
|
|
|
columns: this.girdcolums,
|
|
|
listeners: {
|
|
|
'beforeedit': function (o) {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
});
|
|
|
//////////////////////////////////////////////明细<<<< CtnrIn列表 >>>>结束
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//公共按钮Toolbar:panelBtn
|
|
|
this.panelBtn = new Ext.Panel({
|
|
|
region: "north",
|
|
|
tbar: [
|
|
|
{
|
|
|
// id: "saveandclose",
|
|
|
text: "保存",
|
|
|
iconCls: "btnsave",
|
|
|
handler: function (button, event) {
|
|
|
this.Save('0');
|
|
|
},
|
|
|
scope: this
|
|
|
}, {
|
|
|
// id: "saveandclose",
|
|
|
text: "保存并关闭",
|
|
|
handler: function (button, event) {
|
|
|
this.Save('1');
|
|
|
},
|
|
|
scope: this
|
|
|
}, '-',
|
|
|
{
|
|
|
// id: "saveandclose",
|
|
|
text: "关闭",
|
|
|
handler: function (button, event) {
|
|
|
window.close();
|
|
|
},
|
|
|
scope: this
|
|
|
}
|
|
|
|
|
|
]
|
|
|
}); //end 按钮Toolbar
|
|
|
|
|
|
this.panelTop;
|
|
|
//#region//布局
|
|
|
parentWin = window.parent.opener;
|
|
|
if (parentWin) {
|
|
|
var ret = parentWin.OprationSwap();
|
|
|
this.OpStatus = ret[0]; //edit
|
|
|
this.StoreList = ret[1];
|
|
|
this.EditRecord = ret[2]; //SelectedRecord
|
|
|
this.parentRecord = ret[3];
|
|
|
|
|
|
}
|
|
|
this.panelTop = new Ext.Panel({
|
|
|
region: "north",
|
|
|
height: 120,
|
|
|
items: [this.panelBtn, this.formEdit]
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.panelDetail = new Ext.Panel({
|
|
|
layout: "border",
|
|
|
region: 'center',
|
|
|
items: [this.formCtnrInBody]
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ext.apply(this, {
|
|
|
items: [this.panelTop, this.panelDetail]
|
|
|
});
|
|
|
|
|
|
|
|
|
this.InitData();
|
|
|
//#endregion
|
|
|
//集中绑定事件
|
|
|
|
|
|
|
|
|
|
|
|
}, //end initUIComponents
|
|
|
|
|
|
|
|
|
parentfunction: function (button, event) {
|
|
|
var ret1 = window.parent.opener.OprationSwap();
|
|
|
ret1[3]();
|
|
|
|
|
|
},
|
|
|
|
|
|
getLinenum: function (button, event) {
|
|
|
var _L = 0;
|
|
|
for (var i = 0; i < this.storeCtnrDyna.getCount(); i++) {
|
|
|
var _t = parseInt(this.storeCtnrDyna.getAt(i).get("LINENUM"));
|
|
|
if (_t > _L) { _L = _t; }
|
|
|
}
|
|
|
_L++;
|
|
|
return _L;
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
InitData: function () {
|
|
|
this.OpStatus = 'add';
|
|
|
var condition = '';
|
|
|
|
|
|
if (parentWin) {
|
|
|
var ret = parentWin.OprationSwap();
|
|
|
this.OpStatus = ret[0]; //edit
|
|
|
this.StoreList = ret[1];
|
|
|
this.EditRecord = ret[2]; //SelectedRecord
|
|
|
this.parentRecord = ret[3];
|
|
|
|
|
|
}
|
|
|
|
|
|
condition = " CTNGID='" + this.EditRecord.get('CTNGID') + "'";
|
|
|
this.LoadData(this.OpStatus, condition);
|
|
|
|
|
|
|
|
|
//this.LoadMustBe();
|
|
|
}, //end InitData
|
|
|
|
|
|
//载入数据
|
|
|
LoadData: function (OpStatus, condition) {
|
|
|
if (COMPANYID == "" || DEPTGID == "") {
|
|
|
alert("登录信息不全,请退出重新登录");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
this.OpStatus = OpStatus;
|
|
|
var basicForm = this.formEdit.getForm();
|
|
|
basicForm.findField("CTNGID").setValue(this.EditRecord.get('CTNGID'));
|
|
|
basicForm.findField("CNTRNO").setValue(this.EditRecord.get('CNTRNO'));
|
|
|
basicForm.findField("PORT").setValue(this.EditRecord.get('PORT'));
|
|
|
basicForm.findField("YARD").setValue(this.EditRecord.get('YARD'));
|
|
|
|
|
|
basicForm.findField("CTNEF").setValue(this.EditRecord.get('CTNEF'));
|
|
|
basicForm.findField("CTNSTATUS").setValue(this.EditRecord.get('CTNSTATUS'));
|
|
|
basicForm.findField("CTNSTATUSTIME").setValue(this.EditRecord.get('CTNSTATUSTIME'));
|
|
|
basicForm.findField("MBLNO").setValue(this.EditRecord.get('MBLNO'));
|
|
|
basicForm.findField("CTNSTATUSTIME").setValue(this.EditRecord.get('CTNSTATUSTIME'));
|
|
|
basicForm.findField("CTNALL").setValue(this.EditRecord.get('CTNALL'));
|
|
|
basicForm.findField("CNTRSOURCE").setValue(this.EditRecord.get('CNTRSOURCE'));
|
|
|
|
|
|
|
|
|
|
|
|
var CTNGID = this.EditRecord.get('CTNGID');
|
|
|
this.storeCtnrDyna.load({
|
|
|
params: { start: 0, limit: this.PageSize, sort: '', condition: "CTNGID='" + CTNGID + "'" },
|
|
|
waitMsg: "正在查询数据...",
|
|
|
scope: this
|
|
|
});
|
|
|
|
|
|
}, // end LoadDate
|
|
|
|
|
|
Save: function (type) {
|
|
|
var basicForm = this.formEdit.getForm();
|
|
|
var CTNGID = basicForm.findField('CTNGID').value;
|
|
|
if (!basicForm.isValid()) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
|
|
|
var data = this.formEdit.getForm().getValues();
|
|
|
|
|
|
|
|
|
if (COMPANYID == "" || DEPTGID == "") {
|
|
|
Ext.MessageBox.alert("提示", "登录信息不全,请退出重新登录");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var _this = this;
|
|
|
Ext.Msg.wait('正在更新动态数据, 请稍侯..');
|
|
|
Ext.Ajax.request({
|
|
|
waitMsg: '正在更新动态数据...',
|
|
|
url: '/MvcShipping/MsOpCtnr/SaveDyna',
|
|
|
scope: this,
|
|
|
async: false,
|
|
|
params: {
|
|
|
OpStatus: this.OpStatus,
|
|
|
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) {
|
|
|
var returnData = jsonresult.Data;
|
|
|
|
|
|
|
|
|
this.storeCtnrDyna.commitChanges();
|
|
|
if (type == '0') {
|
|
|
this.OpStatus = 'edit';
|
|
|
var CTNGID = _this.EditRecord.get('CTNGID');
|
|
|
this.storeCtnrDyna.load({
|
|
|
params: { start: 0, limit: this.PageSize, sort: '', condition: " CTNGID='" + CTNGID + "'" },
|
|
|
waitMsg: "正在查询数据...",
|
|
|
scope: this
|
|
|
});
|
|
|
} else if (type == '1') {//保存并关闭
|
|
|
|
|
|
window.close();
|
|
|
}
|
|
|
|
|
|
} 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
|
|
|
getLinenum: function (button, event) {
|
|
|
var _L = 0;
|
|
|
for (var i = 0; i < this.storeWMSIN.getCount(); i++) {
|
|
|
var _t = parseInt(this.storeWMSIN.getAt(i).get("LINENUM"));
|
|
|
if (_t > _L) { _L = _t; }
|
|
|
}
|
|
|
_L++;
|
|
|
return _L;
|
|
|
},
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |