/** * Created by CSL on 2017-06-08. */ var rationCoeObj = { spread: null, datas: [], libID: Number, tempID: -999999, // 本地新增一条数据给的默认ID,用作标记,服务端返回新ID后替换该ID colDef: [ {name: "ID", displayName: "ID", size: 70, hAlign: "center"}, {name: "name", displayName: "名称", size: 400, readOnly: true}, {name: "content", displayName: "内容", size: 500, readOnly: true} ], show: function (){ var me = this; me.libID = getQueryString("repository"); me.getDatas(); me.spread = sheetObj.create($('#rationCoeSpread')[0], me.colDef, me.datas); me.spread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onMainCellChanged); me.spread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onMainRangeChanged); }, 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('内部程序错误!'); } }) }, onMainCellChanged: function(sender, args) { if (args.propertyName !== "value"){return;}; var me = rationCoeObj; 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],[],[]); var sheet = me.spread.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 = rationCoeObj; var obj = me.datas[args.row]; me.save([],[obj],[]); args.sheet.deleteRows(args.row, 1); }; }, showNullRow: function(sheet){ var datas = sheet.getDataSource(); var lastData = datas[datas.length - 1]; if (!$.isEmptyObject(lastData)){ sheet.addRows(sheet.getRowCount(), 1); }; }, save: function(addArr, deleteArr, updateArr) { var me = rationCoeObj; //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.spread.getSheet(0).repaint(); break; } } }; } }, error:function(err){ alert("内部程序错误!"); } }) } };