Ext.namespace('Shipping'); String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); } Shipping.MsCwGenlegAccitemsIndex = function (config) { Ext.applyIf(this, config); this.initUIComponents(); window.Shipping.MsCwGenlegAccitemsIndex.superclass.constructor.call(this); }; Ext.extend(Shipping.MsCwGenlegAccitemsIndex, Ext.Panel, { OprationStatus: null, //仅当弹出界面时使用 SelectedRecord: null, sqlcontext: '', initUIComponents: function () { this.formname = "formMsCwGenlegAccitemsIndex"; //期初录入 //#region 定义数据集 this.storeTreeList = Ext.create('Ext.data.TreeStore', { model: 'MsCwAccitemsModel', nodeParam: 'PACCGID', proxy: { type: 'ajax', url: '/MvcShipping/MsCwGenlegAccitems/GetDataListCA', reader: { id: 'GID', root: 'data', totalProperty: 'totalCount' } }, autoLoad: true, folderSort: false, //将叶子节点排列到非叶子节点后面 默认为false root: { name: '根节点', expanded: true, //checked: false, id: '0' } }); this.storeListHJ = Ext.create('Ext.data.Store', { model: 'MsCwAccitemsModel', remoteSort: true, proxy: { type: 'ajax', url: '/MvcShipping/MsCwGenlegAccitems/GetDataListHJ', reader: { id: 'GID', root: 'data', totalProperty: 'totalCount' } } }); //#endregion //#region 列定义 this.girdcolums = [{ sortable: true, dataIndex: 'GID', text: '唯一编码', hidden: true, width: 0 }, { xtype: 'treecolumn', //这是我们知道列将显示树 text: '科目', //sortable: true, dataIndex: 'NAME', width: 300 }, { text: '方向', //sortable: true, dataIndex: 'DC', width: 40, align: 'center' }, { text: '属性', dataIndex: 'ACCATTRIBUTE', width: 40, align: 'center' }, { text: '类别', dataIndex: 'ACCTYPE', //sortable: true, width: 80, align: 'center', hidden: true, width: 0 }, { text: '借', dataIndex: 'DR', width: 100, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), editor: { xtype: 'numberfield', allowBlank: false, selectOnFocus: true, allowDecimals: true, //允许输入小数 nanText: '请输入有效小数', value: 0.00, listeners: { scope: this, 'blur': function blur(_field, e) { if (_field.value == null) { _field.setValue("0"); } else { if(_field.value.toString() == "") { _field.setValue("0"); } } } } }, renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }, { text: '贷', dataIndex: 'CR', width: 100, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), editor: { xtype: 'numberfield', allowBlank: false, selectOnFocus: true, allowDecimals: true, //允许输入小数 nanText: '请输入有效小数', value: 0.00, listeners: { scope: this, 'blur': function blur(_field, e) { if (_field.value == null) { _field.setValue("0"); } else { if (_field.value.toString() == "") { _field.setValue("0"); } } } } }, renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }, { text: '损益类累计借方', dataIndex: 'PFADR', width: 100, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), editor: { xtype: 'numberfield', allowBlank: false, selectOnFocus: true, allowDecimals: true, //允许输入小数 nanText: '请输入有效小数', value: 0.00, listeners: { scope: this, 'blur': function blur(_field, e) { if (_field.value == null) { _field.setValue("0"); } else { if (_field.value.toString() == "") { _field.setValue("0"); } } } } }, renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }, { text: '损益类累计贷方', dataIndex: 'PFACR', width: 100, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), editor: { xtype: 'numberfield', allowBlank: false, selectOnFocus: true, allowDecimals: true, //允许输入小数 nanText: '请输入有效小数', value: 0.00, listeners: { scope: this, 'blur': function blur(_field, e) { if (_field.value == null) { _field.setValue("0"); } else { if (_field.value.toString() == "") { _field.setValue("0"); } } } } }, renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }, { text: '核算外币', dataIndex: 'ISFCY', //xtype: 'checkcolumn', xtype: "booleancolumn", trueText: "是", falseText: " ", //sortable: true, width: 60, align: 'center' }, { text: '核算部门', dataIndex: 'ISDEPTACC', //xtype: 'checkcolumn', xtype: "booleancolumn", trueText: "是", falseText: " ", //sortable: true, width: 60, align: 'center' }, { text: '核算人员', dataIndex: 'ISEMPLACC', //xtype: 'checkcolumn', xtype: "booleancolumn", trueText: "是", falseText: " ", //sortable: true, width: 60, align: 'center' }, { text: '核算客户', dataIndex: 'ISCORPACC', //xtype: 'checkcolumn', xtype: "booleancolumn", trueText: "是", falseText: " ", //sortable: true, width: 60, align: 'center' }, { text: '核算项目', dataIndex: 'ISITEMACC', //xtype: 'checkcolumn', xtype: "booleancolumn", trueText: "是", falseText: " ", //sortable: true, width: 60, align: 'center' }, { text: '是否入账', dataIndex: 'ISENABLE', //xtype: 'checkcolumn', xtype: "booleancolumn", trueText: "是", falseText: " ", //sortable: true, width: 60, align: 'center' }, { text: '末级科目', dataIndex: 'DETAILED', hidden: true, width: 0 }, { text: '月', dataIndex: 'MONTH', hidden: true, width: 0 }]; this.girdcolumsHJ = [{ sortable: true, dataIndex: 'GID', text: '科目状态', width: 100, align: 'center' }, { text: '借', dataIndex: 'DR', width: 120, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }, { text: '贷', dataIndex: 'CR', width: 120, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }, { text: '损益类科目本年累计数借方', dataIndex: 'PFADR', width: 150, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }, { text: '损益类科目本年累计数贷方', dataIndex: 'PFACR', width: 150, align: 'right', //renderer: Ext.util.Format.numberRenderer('00.00'), renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) { value = usMoney(value, 2, '', true); return value; } }]; //#endregion //#region treeList列表显示信息 //明细表表格 this.gridListCellEditing = Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1 //1单击,2双击 }); this.treeList = new Ext.tree.Panel({ region: 'center', split: true, store: this.storeTreeList, //collapsible: true, //允许展开和收缩 rootVisible: false, //false不显示根节点,默认为true hideHeaders: false, animate: false, lines: true, columnLines: true, rowLines: true, useArrows: true, //使用箭头样式 trackMouseOver: true, //高亮显示鼠标所在的行,默认为true, //enableHdMenu: true,//显示表格列的菜单 //stripeRows: true, //斑马线效果 //multiSelect: true, //动态增加列表项 //singleExpand: true, //若已展开一个结点A,此时去点击另一个同级或更高等级的结点B,会将A结点收起,并展开B结点(若B结点有子结点)。 //disableSelection: false,//禁止行选择,默认为false //viewConfig: { // enableTextSelection: true, //允许复制数据 // autoFill: 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.DETAILED == false && (cellIndex == 5 || cellIndex == 6 || cellIndex == 7 || cellIndex == 8)) { return false; } else { if ((cellIndex == 5 || cellIndex == 7) && record.data.DC == '贷') { return false; } // if ((cellIndex == 6 || cellIndex == 8) && record.data.DC == '借') { return false; } // if (record.data.ISFCY == true || record.data.ISDEPTACC == true || record.data.ISEMPLACC == true || record.data.ISCORPACC == true || record.data.ISITEMACC == true) { return false; } // if ((cellIndex == 5 || cellIndex == 6) && record.data.ACCATTRIBUTE == '损益') { return false; } // if ((cellIndex == 7 || cellIndex == 8) && record.data.ACCATTRIBUTE != '损益') { return false; } // if (record.data.ISENABLE) { return false; } return true; } }, 'edit': function (editor, e, eOpts) { if (e.value == e.originalValue) { return; } //需要自己实现里面的事件 //var bodydatas = []; //bodydatas.push(e.record); //var jsonBody = ConvertRecordsToJsonAll(bodydatas); // Ext.Msg.wait('正在保存数据, 请稍侯..'); Ext.Ajax.request({ waitMsg: '正在保存数据...', url: '/MvcShipping/MsCwGenlegAccitems/SaveRow', scope: this, params: { //body: jsonBody 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) { //var returnData = jsonresult.Data; //this.treeList.commit(); //this.storeTreeList.load({ params: { condition: "" }, waitMsg: "正在刷新数据...", scope: this }); this.storeListHJ.load({ params: { condition: "" }, waitMsg: "正在刷新数据...", 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 }); } } }); } } }); this.gridList = new Ext.grid.GridPanel({ store: this.storeListHJ, enableHdMenu: false, region: 'south', loadMask: { msg: "数据加载中,请稍等..." }, trackMouseOver: true, disableSelection: false, columns: this.girdcolumsHJ, height: 60 }); //#endregion //#region 按钮工具条/页面布局 this.panelBtn = new Ext.Panel({ region: "north", tbar: [{ text: "刷新", iconCls: "btnrefresh", handler: function (button, event) { this.onRefreshClick(); }, scope: this }, { text: "期初入账", id: 'btSubmit', name: 'btSubmit', iconCls: "btnsubmit", handler: function (button, event) { this.onISENABLEClick("1"); }, scope: this } //, { // text: "取消入账", // iconCls: "btnsubmit", // handler: function (button, event) { // this.onISENABLEClick("0"); // }, // scope: this //} //, '-', '帐套启用年月:', { // xtype: 'monthfield', // id: 'STARTMONTH', // name: 'STARTMONTH', // editable: false, // hideLabel: true, // width: 100 //}, { // text: "启用", // id: "btnSTARTMONTH", // iconCls: "btnsubmit", // handler: function (button, event) { // this.onSTARTMONTHClick(1); // }, // scope: this //}, { // text: "取消启用", // id: "btnNotSTARTMONTH", // iconCls: "btnsubmit", // handler: function (button, event) { // this.onSTARTMONTHClick(0); // }, // scope: this //} ] }); Ext.apply(this, { items: [this.panelBtn, this.treeList, this.gridList] }); //#endregion //#region 页面加载 this.gridList.on('beforeload', function (store) { Ext.apply(store.proxy.extraParams, { condition: "" }); }, this); this.InitGrid(); this.treeList.addListener('itemdblclick', function (dataview, record, item, cellIndex, e, b) { if ((record.data.ISFCY || record.data.ISDEPTACC || record.data.ISEMPLACC || record.data.ISCORPACC || record.data.ISITEMACC) && record.data.DETAILED) { this.SelectedRecord = record.data; this.OprationStatus = 'edit'; DsOpenEditWin('/MvcShipping/MsCwGenlegAccitems/Edit', "科目信息录入", "300", "600", "200", "200"); } }, this); //#endregion }, //end initUIComponents //#region 按钮函数 InitGrid: function () { this.storeListHJ.load({ params: { condition: "" }, waitMsg: "正在刷新数据...", scope: this }); Ext.Ajax.request({ waitMsg: '正在查询启用的账套...', url: '/MvcShipping/MsCwGenlegAccitems/GetSTARTMONTH', params: { STARTGID: "" }, callback: function (options, success, response) { if (success) { var result = Ext.JSON.decode(response.responseText); if (!result.Success) { //Ext.getCmp("btnNotSTARTMONTH").hide(); Ext.getCmp("btSubmit").disable(); return; } // //data = result.data; //Ext.getCmp('STARTMONTH').setValue(data); //Ext.getCmp("STARTMONTH").disable(); //置灰 //Ext.getCmp("btnSTARTMONTH").hide(); //隐藏 } else { Ext.MessageBox.alert('请求出现错误,请重试', response.responseText); } }, scope: this }); this.onISENABLEHide(); }, onColumnsHidden: function () { //var record = this.storeTreeList.getAt(0); var table = this.storeTreeList.tree; //.root.data var elems = table.getNodes(); var record = table.getRecord(elems[0]); var colu = this.gridList.columns; //获取列对象 if (record.MONTH.toString() == '01' || record.MONTH.toString() == '1') { colu[7].hidden = true; //设置第几列隐藏 colu[8].hidden = true; //设置第几列隐藏 } else { colu[7].hidden = false; //设置第几列隐藏 colu[8].hidden = false; //设置第几列隐藏 } }, onISENABLEHide: function () { Ext.Ajax.request({ waitMsg: '正在判断是否有未入账的数据...', url: '/MvcShipping/MsCwGenlegAccitems/GetISENABLE', callback: function (options, success, response) { if (success) { var result = Ext.JSON.decode(response.responseText); if (result.Success) { Ext.getCmp("btSubmit").enable(); } else { Ext.getCmp("btSubmit").disable(); //Ext.getCmp("btnNotSTARTMONTH").hide(); } } else { Ext.MessageBox.alert('请求出现错误,请重试', response.responseText); } }, scope: this }); }, onRefreshClick: function () { this.storeTreeList.load({ params: { condition: "" }, waitMsg: "正在刷新数据...", scope: this }); this.storeListHJ.load({ params: { condition: "" }, waitMsg: "正在刷新数据...", scope: this }); this.onISENABLEHide(); }, onISENABLEClick: function (ISENABLE) { this.storeListHJ.load({ params: { condition: "" }, waitMsg: "正在刷新数据...", scope: this }); if (ISENABLE == "0") { var selectedRecords = this.gridList.selModel.getSelection(); var rec = selectedRecords[0]; Ext.MessageBox.confirm('提示', '确定要取消入账吗?', function (btn) { if (btn == 'yes') { Ext.Msg.wait('正在取消入账数据...'); Ext.Ajax.request({ waitMsg: '正在取消入账数据...', url: '/MvcShipping/MsCwGenlegAccitems/setISENABLE', params: { ISENABLE: ISENABLE }, callback: function (options, success, response) { if (success) { var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { this.storeTreeList.load({ params: { condition: '' }, waitMsg: "正在刷新数据...", scope: this }); Ext.Msg.show({ title: '提示', msg: jsonresult.Message, icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); } 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); } else { var record = this.storeListHJ.getAt(0); //获取索引的数据对象 var sDR = record.get("DR"); //获取字段的名字 var sCR = record.get("CR"); //获取字段的名字 if (sDR == sCR) { Ext.MessageBox.confirm('提示', '确定入账吗?(提示:已经入账的将不予以操作!)', function (btn) { if (btn == 'yes') { Ext.Msg.wait('正在入账数据...'); Ext.Ajax.request({ waitMsg: '正在入账数据...', url: '/MvcShipping/MsCwGenlegAccitems/setISENABLE', params: { ISENABLE: ISENABLE }, callback: function (options, success, response) { if (success) { var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { this.storeTreeList.load({ params: { condition: '' }, waitMsg: "正在刷新数据...", scope: this }); this.onISENABLEHide(); Ext.Msg.show({ title: '提示', msg: jsonresult.Message, icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); } 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); } else { alert("“借贷不平衡”不允许入账!"); return false; } } }, //启用账套 暂时屏蔽不使用 onSTARTMONTHClick: function (isSTART) { var sSTARTMONTH = Ext.getCmp('STARTMONTH'); if (sSTARTMONTH.rawValue == null) { Ext.MessageBox.alert('提示', '请先选择帐套启用年月!'); return; } else { if (sSTARTMONTH.rawValue.toString().trim() == "") { Ext.MessageBox.alert('提示', '请先选择帐套启用年月!'); return; } } // if (isSTART == 1) { Ext.MessageBox.confirm('提示', '确定启用帐套吗?', function (btn) { if (btn == 'yes') { Ext.Msg.wait('正在启用帐套...'); Ext.Ajax.request({ waitMsg: '正在启用帐套...', url: '/MvcShipping/MsCwGenlegAccitems/setSTARTMONTH', params: { isSTART: isSTART, STARTMONTH: sSTARTMONTH.rawValue.toString().trim() }, callback: function (options, success, response) { if (success) { var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { Ext.getCmp("btSubmit").enable(); Ext.getCmp("STARTMONTH").disable(); //置灰 Ext.getCmp("btnSTARTMONTH").hide(); //隐藏 Ext.getCmp("btnNotSTARTMONTH").show(); //显示按钮 // this.storeTreeList.load({ params: { condition: '' }, waitMsg: "正在刷新数据...", scope: this }); Ext.Msg.show({ title: '提示', msg: jsonresult.Message, icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); } 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); } else { Ext.MessageBox.confirm('提示', '确定取消已启用的帐套吗?', function (btn) { if (btn == 'yes') { Ext.Msg.wait('正在取消帐套...'); Ext.Ajax.request({ waitMsg: '正在取消帐套...', url: '/MvcShipping/MsCwGenlegAccitems/setSTARTMONTH', params: { isSTART: isSTART, STARTMONTH: sSTARTMONTH.rawValue.toString().trim() }, callback: function (options, success, response) { if (success) { var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { Ext.getCmp("btSubmit").disable(); Ext.getCmp("STARTMONTH").enable(); //置灰 Ext.getCmp("btnSTARTMONTH").show(); Ext.getCmp("btnNotSTARTMONTH").hide(); // this.storeTreeList.load({ params: { condition: '' }, waitMsg: "正在刷新数据...", scope: this }); Ext.Msg.show({ title: '提示', msg: jsonresult.Message, icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); } 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); } }, //#region 获取 YYYY-mm-dd 格式的日期 GetDateStr: function (sdate, AddDayCount) { var dd = new Date(sdate); //获取选择的时期对象 dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期 var sdate = dd.toISOString(); sdate = sdate.toString().substr(0, 10); return sdate; }, //#endregion //#endregion OprationSwap: function () { var ret = new Array(); ret[0] = this.OprationStatus; ret[1] = this.storeTreeList; ret[2] = this.SelectedRecord; return ret; } });