Ext.namespace('Shipping'); String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); } Shipping.MsCtExplanIndex = function (config) { Ext.applyIf(this, config); this.initUIComponents(); window.Shipping.MsCtExplanIndex.superclass.constructor.call(this); }; Ext.extend(Shipping.MsCtExplanIndex, Ext.Panel, { OprationStatus: null, //仅当弹出界面时使用 SelectedRecord: null, isKeyAdd: 0, initUIComponents: function () { this.formname = "formMsCtExplanIndex"; //页面名称 //#region gridList列表 this.storeList = Ext.create('Ext.data.Store', { model: 'MsCtExplanModel', remoteSort: true, proxy: { type: 'ajax', url: '/MvcShipping/MsCtExplan/GetDataList', reader: { id: 'GID', root: 'data', totalProperty: 'totalCount' } } }); this.girdcolums = [{ dataIndex: 'GID', text: '唯一编码', width: 0, hidden: true }, { text: '摘要类别', dataIndex: 'EXPLANTYPE', width: 188, //align: 'center', editor: { xtype: 'textfield', selectOnFocus: true, enableKeyEvents: true, //激活键盘事件 listeners: { scope: this, 'keyup': { fn: function (_field, e) { if (e.getKey() == 40) { this.storeListDetail.removeAll(); this.isKeyAdd = 1; this.onAddClick(); } }, scope: this } } } }, { text: '模块类别', dataIndex: 'MODULETYPE', //align: 'center', width: 0, hidden: true }]; this.gridListCellEditing = Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1 //1单击,2双击 }); this.gridList = new Ext.grid.GridPanel({ region: 'center', store: this.storeList, enableHdMenu: false, //是否显示表格列的菜单 hideHeaders: false, //是否隐藏表头 rowLines: true, columnLines: true, loadMask: { msg: "数据加载中,请稍等..." }, plugins: [this.gridListCellEditing], selType: 'cellmodel', columns: this.girdcolums, listeners: { scope: this, 'cellclick': function (_thisTable, td, cellIndex, record, tr, rowIndex, e, eOpts) { if (record.data.EXPLANTYPE == "(所有类别)") { return false; } this.storeListDetail.load({ params: { condition: "LINKGID='" + record.data.GID + "'" }, waitMsg: "正在刷新数据...", scope: this }); parentWin = window.parent.opener; if (parentWin) { return false; } }, 'edit': function (editor, e, eOpts) { if (e.value == e.originalValue) { return; } if (e.value == "(所有类别)") { return; } Ext.Msg.wait('正在保存数据, 请稍侯..'); Ext.Ajax.request({ waitMsg: '正在保存数据...', url: '/MvcShipping/MsCtExplan/Save', params: { data: Ext.JSON.encode(e.record.data) }, callback: function (options, success, response) { if (success) { Ext.MessageBox.hide(); var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { this.storeList.load({ params: { condition: "MODULETYPE='出纳'" }, waitMsg: "正在刷新数据...", callback: function (options, success, response) { if (this.isKeyAdd == 1) { this.isKeyAdd = 0; this.onAddClick(); } }, async: false, scope: this }); } 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 }); } }, //async: false, scope: this }); } } }); this.storeList.load({ params: { condition: "MODULETYPE='出纳'" }, waitMsg: "正在查询数据...", scope: this }); //#endregion //#region gridListDetail列表 this.storeListDetail = Ext.create('Ext.data.Store', { model: 'MsCtExplanDetailModel', remoteSort: true, proxy: { type: 'ajax', url: '/MvcShipping/MsCtExplan/GetDataListDetail', reader: { id: 'GID', root: 'data', totalProperty: 'totalCount' } } }); this.girdcolumsDetail = [{ dataIndex: 'GID', text: '唯一编码', width: 0, hidden: true }, { text: '摘要', dataIndex: 'EXPLAN', width: 400, //align: 'center', editor: { xtype: 'textfield', selectOnFocus: true, enableKeyEvents: true, //激活键盘事件 listeners: { scope: this, 'keyup': { fn: function (_field, e) { if (e.getKey() == 40) { this.isKeyAdd = 1; this.onAddDetailClick(); } }, scope: this } } } }]; this.gridListCellEditingDetail = Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1 //1单击,2双击 }); this.gridListDetail = new Ext.grid.GridPanel({ region: 'center', store: this.storeListDetail, enableHdMenu: false, //是否显示表格列的菜单 hideHeaders: false, //是否隐藏表头 rowLines: true, columnLines: true, loadMask: { msg: "数据加载中,请稍等..." }, plugins: [this.gridListCellEditingDetail], selType: 'cellmodel', columns: this.girdcolumsDetail, listeners: { scope: this, 'cellclick': function (_thisTable, td, cellIndex, record, tr, rowIndex, e, eOpts) { parentWin = window.parent.opener; if (parentWin) { return false; } }, 'edit': function (editor, e, eOpts) { if (e.value == e.originalValue) { return; } var selections = this.gridList.getSelectionModel().getSelection(); //获得选中的项 if (selections.length == 0) { Ext.Msg.show({ title: '错误', msg: "请先选择摘要类别!", icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); return; } var sLINKGID = selections[0].data.GID; // Ext.Msg.wait('正在保存数据, 请稍侯..'); Ext.Ajax.request({ waitMsg: '正在保存数据...', url: '/MvcShipping/MsCtExplan/SaveDetail', params: { data: Ext.JSON.encode(e.record.data), sLINKGID: sLINKGID }, callback: function (options, success, response) { if (success) { Ext.MessageBox.hide(); var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { this.storeListDetail.load({ params: { condition: "LINKGID='" + sLINKGID + "'" }, waitMsg: "正在刷新数据...", callback: function (options, success, response) { if (this.isKeyAdd == 1) { this.isKeyAdd = 0; this.onAddDetailClick(); } }, async: false, scope: this }); } 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 }); } }, //async: false, scope: this }); } } }); this.gridListDetail.addListener('itemdblclick', function (dataview, record, item, index, e, b) { _this = this; parentWin = window.parent.opener; if (parentWin) { this.onF7DbClick(parentWin, record); } }, this); //#endregion //#region 按钮工具条/页面布局 this.panelBtn = new Ext.Panel({ region: "north", tbar: [{ text: '添加', tooltip: '添加', id: "btnadd", iconCls: "btnadd", handler: function (button, event) { this.onAddClick(button, event); }, scope: this }, '-', { text: '删除', tooltip: '删除', id: "btndel", iconCls: "btndelete", handler: function (button, event) { this.onDelClick(button, event); }, scope: this }] }); //end 按钮Toolbar this.panelBtnDetail = new Ext.Panel({ region: "north", tbar: [{ text: '添加明细', tooltip: '添加明细', id: "btnaddDetail", iconCls: "btnadd", handler: function (button, event) { this.onAddDetailClick(button, event); }, scope: this }, '-', { text: '删除明细', tooltip: '删除明细', id: "btndelDetail", iconCls: "btndelete", handler: function (button, event) { this.onDelDetailClick(button, event); }, scope: this }] }); //end 按钮Toolbar this.panelWest = new Ext.Panel({ layout: "border", region: "west", //region: "center", width: 200, frame: true, items: [this.panelBtn, this.gridList] }); this.panelCenter = new Ext.Panel({ layout: "border", region: "center", //height: 100, frame: true, items: [this.panelBtnDetail, this.gridListDetail] }); Ext.apply(this, { items: [this.panelWest, this.panelCenter] }); //#endregion }, //end initUIComponents //#region 按钮函数 onAddClick: function () { var record = Ext.create('MsCtExplanModel', { GID: '*', EXPLANTYPE: '', MODULETYPE: '出纳' }); this.storeList.add(record); var n = this.storeList.getCount(); this.gridListCellEditing.startEditByPosition({ row: n - 1, column: 0 }); }, onDelClick: function () { var selectedRecords = this.gridList.selModel.getSelection(); if (selectedRecords.length <= 0) { //Ext.Msg.show({ title: '警告', msg: '请选中要操作的数据!', icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); return false; } var rec = selectedRecords[0]; Ext.MessageBox.confirm('提示', '确定删除该记录(包含明细)吗?', function (btn) { if (btn == 'yes') { Ext.Msg.wait('正在删除数据...'); Ext.Ajax.request({ waitMsg: '正在删除数据...', url: '/MvcShipping/MsCtExplan/Delete', params: { data: Ext.JSON.encode(rec.data) }, callback: function (options, success, response) { if (success) { var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { this.storeList.load({ params: { condition: "MODULETYPE='出纳'" }, waitMsg: "正在查询数据...", scope: this }); this.storeListDetail.removeAll(); //Ext.Msg.show({ title: '提示', msg: jsonresult.Message, icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); Ext.Msg.hide(); } else { Ext.Msg.show({ title: '错误', msg: jsonresult.Message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } } }, failure: function (response, options) { Ext.Msg.show({ title: '警告', msg: '服务器响应出错,请重试', icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); }, scope: this }); //end Ext.Ajax.request } }, this); }, onAddDetailClick: function () { var record = Ext.create('MsCtExplanDetailModel', { GID: '*', EXPLAN: '' }); this.storeListDetail.add(record); var n = this.storeListDetail.getCount(); this.gridListCellEditingDetail.startEditByPosition({ row: n - 1, column: 0 }); }, onDelDetailClick: function () { var selectedRecords = this.gridListDetail.selModel.getSelection(); if (selectedRecords.length <= 0) { //Ext.Msg.show({ title: '警告', msg: '请选中要操作的数据!', icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); return false; } var rec = selectedRecords[0]; Ext.MessageBox.confirm('提示', '确定删除该记录吗?', function (btn) { if (btn == 'yes') { Ext.Msg.wait('正在删除明细数据...'); Ext.Ajax.request({ waitMsg: '正在删除明细数据...', url: '/MvcShipping/MsCtExplan/DeleteDetail', params: { data: Ext.JSON.encode(rec.data) }, callback: function (options, success, response) { if (success) { var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { var selections = this.gridList.getSelectionModel().getSelection(); //获得选中的项 var sLINKGID = selections[0].data.GID; this.storeListDetail.load({ params: { condition: "LINKGID='" + sLINKGID + "'" }, waitMsg: "正在刷新数据...", scope: this }); //Ext.Msg.show({ title: '提示', msg: jsonresult.Message, icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); Ext.Msg.hide(); } else { Ext.Msg.show({ title: '错误', msg: jsonresult.Message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } } }, failure: function (response, options) { Ext.Msg.show({ title: '警告', msg: '服务器响应出错,请重试', icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); }, scope: this }); //end Ext.Ajax.request } }, this); }, //#endregion //#region F7返回双击事件 onF7DbClick: function (parentWin, record) { if (record.data.EXPLAN.toString() == '') { Ext.Msg.show({ title: '警告', msg: '不允许选择为空数据!', icon: Ext.Msg.WARNING, buttons: Ext.Msg.OK }); return; } var ret = parentWin.OprationSwap2(); var selections = ret[0]; selections.setValue(record.data.EXPLAN.toString()); window.close(); } //#endregion });