/** * Created by CSL on 2017-05-18. */ var pageObj = { initPage: function (){ $("#drirect-dinge").click(function(){ $(this).attr('href', "/rationRepository/ration" + "?repository=" + getQueryString("repository")) }); $("#gongliao").click(function(){ $(this).attr('href', "/rationRepository/lmm" + "?repository=" + getQueryString("repository")) }); var libID = getQueryString("repository"); var libName = storageUtil.getSessionCache("RationGrp","repositoryID_" + libID); if (libName) { var html = $("#rationname")[0].outerHTML; html = html.replace("XXX定额库", libName); $("#rationname")[0].outerHTML = html; }; coeList.show(); } }; var coeList = { mainSpread: null, detailSpread: null, datas: [], libID: Number, tempID: -999999, // 本地新增一条数据给的默认ID,用作标记,服务端返回新ID后替换该ID colDefMain: [ {name: "ID", displayName: "ID", size: 60, hAlign: "center", readOnly: true}, {name: "name", displayName: "名称", size: 280}, {name: "content", displayName: "内容", size: 250} ], colDefContent: [ {name: "coeType", displayName: "类型", size: 100, hAlign: "center"}, {name: "gljCode", displayName: "工料机编号", size: 100, dataType: "String", formatter: "@", hAlign: "center"}, {name: "operator", displayName: "操作符", size: 60, hAlign: "center"}, {name: "amount", displayName: "数量", size: 80, hAlign: "right"} ], show: function (){ var me = this; me.libID = getQueryString("repository"); me.getDatas(); me.mainSpread = sheetObj.create($('#mainSpread')[0], me.colDefMain, me.datas); me.detailSpread = sheetObj.create($('#contentSpread')[0], me.colDefContent, me.datas[0].coes); var coeType = new GC.Spread.Sheets.CellTypes.ComboBox(); coeType.items(["单个","定额","人工","材料","机械"]); me.detailSpread.getSheet(0).getRange(-1, 0, -1, 1).cellType(coeType); var operType = new GC.Spread.Sheets.CellTypes.ComboBox(); operType.items(["+","-","*","/","="]); me.detailSpread.getSheet(0).getRange(-1, 2, -1, 1).cellType(operType); me.detailSpread.options.showVerticalScrollbar = false; me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onMainEnterCell); me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onMainCellChanged); me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onMainRangeChanged); me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onDetailCellChanged); me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onDetailRangeChanged); }, getDatas: function () { var me = this; $.ajax({ type:"POST", url:"/rationRepository/api/getCoeList", data:{"libID": me.libID}, dataType:"json", cache:false, async: false, timeout:20000, success: function (result) { if (result.data) { me.datas = result.data; }; }, error: function (result) { alert('内部程序错误!'); } }) }, /*getLibID: function(libName){ var me = this; $.ajax({ type:"POST", url:"/rationRepository/api/getLibIDByName", data:{"libName": libName}, dataType:"json", cache:false, async: false, timeout:20000, success: function (result) { if (result.data) { me.libID = result.data; } }, error: function (result) { alert('内部程序错误!'); } }) },*/ onMainEnterCell: function(sender, args) { var me = coeList; var row = args.sheet.getActiveRowIndex(); me.detailSpread.suspendPaint(); var dSheet = me.detailSpread.getSheet(0); var dData = me.datas[row].coes; if (dData == undefined){ dSheet.setDataSource([]); dSheet.setRowCount(0); }else{ dSheet.setDataSource(dData); me.showNullRow(dSheet); }; me.detailSpread.resumePaint(); }, onMainCellChanged: function(sender, args) { if (args.propertyName !== "value"){return;}; var me = coeList; var row = args.sheet.getActiveRowIndex(); var obj = me.datas[row]; if (obj.ID == undefined){ // 空行录入,即新增 obj.libID = me.libID; obj.ID = me.tempID; if (obj.name == undefined){obj.name = '';}; // 生成属性,令属性存储顺序一致 if (obj.content == undefined){obj.content = '';}; obj.coes = [{coeType:"定额", operator:"*", amount: "0"}]; me.datas[row] = obj; me.save([obj],[],[]); me.detailSpread.suspendPaint(); me.detailSpread.getSheet(0).setDataSource(me.datas[row].coes); me.detailSpread.resumePaint(); var sheet = me.mainSpread.getSheet(0); me.showNullRow(sheet); } else{ // 正常修改 me.save([],[],[obj]); }; }, onMainRangeChanged: function(sender, args) { if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) { if (!confirm('确定要删除本条附注条件吗?')){ args.cancel = true; return; } var me = coeList; var obj = me.datas[args.row]; me.save([],[obj],[]); args.sheet.deleteRows(args.row, 1); }; }, onDetailCellChanged: function(sender, args) { if (args.propertyName !== "value"){return;}; var me = coeList; var mainRow = me.mainSpread.getSheet(0).getActiveRowIndex(); var detailRow = args.sheet.getActiveRowIndex(); var detailDatas = me.datas[mainRow].coes; var curDetailData = detailDatas[detailRow]; if (curDetailData !== undefined){ // 当在空白行输入时,curDetailData为undefined。 var curType = curDetailData.coeType; if (curType !== '单个'){ me.detailSpread.suspendPaint(); curDetailData.gljCode = null; me.detailSpread.resumePaint(); }; if (curDetailData.operator == undefined){ curDetailData.operator = "*"; } ; if (curDetailData.amount == undefined){ curDetailData.amount = "0"; } ; }; /* var curType = args.sheet.getValue(detailRow, 0); if (curType !== '单个'){ me.detailSpread.suspendEvent(); args.sheet.setValue(detailRow, 1, null); me.detailSpread.resumeEvent(); //args.sheet.getCell(row, 1).backColor("red"); } else{ //args.sheet.getCell(row, 1).backColor("Blue"); };*/ var obj = me.datas[mainRow]; me.save([],[],[obj]); me.showNullRow(args.sheet); }, onDetailRangeChanged: function(sender, args) { if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) { if (!confirm('确定要删除该类型的明细数据吗?')){ args.cancel = true; return; } var me = coeList; var detailData = args.sheet.getDataSource(); args.sheet.deleteRows(args.row, 1); var mainRow = me.mainSpread.getSheet(0).getActiveRowIndex(); var obj = me.datas[mainRow]; me.save([],[],[obj]); }; }, showNullRow: function(sheet){ var datas = sheet.getDataSource(); //alert('004: datas.length: ' + datas.length + ', sheet.getRowCount: ' + sheet.getRowCount()); var lastData = datas[datas.length - 1]; if (!$.isEmptyObject(lastData)){ sheet.addRows(sheet.getRowCount(), 1); //alert('005: datas.length: ' + datas.length + ', sheet.getRowCount: ' + sheet.getRowCount()); }; }, save: function(addArr, deleteArr, updateArr) { var me = coeList; //var addArrTemp = []; //var deleteArrTemp = []; var updateArrTemp = []; // 空行会产生空对象数据,清理空对象会给sheet的空行效果带来奇怪的干扰,这里要中转一下。 if (updateArr.length > 0){ $.extend(true, updateArrTemp, updateArr); //debug.d('011: ', updateArrTemp); //debug.d('012: ', updateArr); deleteEmptyObject(updateArrTemp[0].coes); //debug.d('013: ', updateArrTemp); //debug.d('014: ', updateArr); //return; }; $.ajax({ type:"POST", url:"api/saveCoeList", data: {"data": JSON.stringify({"addArr": addArr, "deleteArr": deleteArr, "updateArr": updateArrTemp})}, dataType:"json", cache:false, timeout:5000, success:function(result){ if (result.error) { alert(result.message); } else { // 成功。更新从后台返回的新ID。 if (addArr.length > 0){ for (var i = 0; i < me.datas.length; i++) { if (me.datas[i].ID == me.tempID){ me.datas[i].ID = result.data; me.mainSpread.getSheet(0).repaint(); break; } } }; } }, error:function(err){ alert("内部程序错误!"); } }) } }; pageObj.initPage();