/** * Created by CSL on 2017-06-08. */ //modified by zhong on 2017-09-25 var rationCoeOprObj = { sheet: null, libID: null, curRation: null, tempDelArr: [], cache: {}, setting: { header:[ {headerName:"编码",headerWidth:120,dataCode:"ID", dataType: "Number", hAlign: 'left'}, {headerName:"名称",headerWidth:400,dataCode:"name", dataType: "String"}, {headerName:"内容",headerWidth:300,dataCode:"content", dataType: "String"} ], view:{ comboBox:[], lockColumns:[1,2] } }, buildSheet: function(sheet) { var me = this; me.sheet = sheet; me.libID = storageUtil.getSessionCache("RationGrp","repositoryID"); // 不可靠,有时取不到 if (me.libID == undefined){me.libID = getQueryString('repository')}; sheetCommonObj.initSheet(me.sheet, me.setting, 30); me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting); me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted); me.sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded); // me.sheet.bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged); }, onClipboardPasting: function(sender, args) { var me = rationCoeOprObj; if (args.cellRange.colCount != 1 || args.cellRange.col != 0 || !(me.curRation)) { args.cancel = true; } }, onClipboardPasted: function(e, info) { var me = rationCoeOprObj; if (me.libID) { // 修改第一列(编号) if (info.cellRange.col == 0) { me.tempDelArr = []; var coeIDs = []; var items = sheetCommonObj.analyzePasteData({header:[{dataCode: "ID"}] }, info); let curCache = typeof me.cache["_Coe_" + me.curRation.ID] !== 'undefined' ? me.cache["_Coe_" + me.curRation.ID] : []; let isRefresh = false; for(let i = 0, len = items.length; i < len; i++){ let row = i + info.cellRange.row; //update if(row < curCache.length){ let isExist = false; for(let j = 0, jLen = curCache.length; j < jLen; j++){ if(items[i].ID === curCache[j].ID && j !== row){ isExist = true; break; } } if(!isExist){ me.tempDelArr.push({org: curCache[row], newID: items[i].ID}); coeIDs.push(items[i].ID); } else{ isRefresh = true; } } else{ coeIDs.push(items[i].ID); } } //delete in front if(me.tempDelArr.length > 0){ for(let i = 0, len = me.tempDelArr.length; i < len; i++){ for(let j = 0; j < curCache.length; j++){ if(me.tempDelArr[i].org.ID === curCache[j].ID){ curCache.splice(j, 1); break; } } } } me.addCoeItems(coeIDs); if(isRefresh){ me.showCoeItems(me.curRation.ID); } } else { //修改其它列。 } } }, onEditEnded: function(sender, args){ var me = rationCoeOprObj; if (args.col == 0 && args.editingText && args.editingText.toString().trim().length > 0 && !isNaN(args.editingText)) { // 编号列 let curCahe = typeof me.cache["_Coe_" + me.curRation.ID] !== 'undefined' ? me.cache["_Coe_" + me.curRation.ID] : []; me.tempDelArr = []; //update if(args.row < curCahe.length && args.editingText != curCahe[args.row].ID){ let isExist = false; for(let i = 0, len = curCahe.length; i < len; i++){ if(args.editingText == curCahe[i].ID){ isExist = true; break; } } if(!isExist){ me.tempDelArr.push({org: curCahe[args.row], newID: args.editingText}); curCahe.splice(args.row, 1); me.addCoeItems([args.editingText]); } else{ me.showCoeItems(me.curRation.ID); } } //insert else{ me.addCoeItems([args.editingText]); } } else{ me.showCoeItems(me.curRation.ID); } }, bindRationCoeDel: function () { let me = rationCoeOprObj; let workBook = me.sheet.getParent(); workBook.commandManager().register('rationCoeDel', function () { let sels = me.sheet.getSelections(), isUpdate = false; let curCahe = me.cache["_Coe_" + me.curRation.ID]; for(let i = 0, len = sels.length; i < len; i ++ ){ if(sels[i].colCount === me.setting.header.length){ if(sels[i].row < curCahe.length){ isUpdate = true; curCahe.splice(sels[i].row, sels[i].rowCount); } } } if(isUpdate){ me.updateCurRation(); sheetCommonObj.cleanData(me.sheet, me.setting, -1); me.showCoeItems(me.curRation.ID); } }); workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false); workBook.commandManager().setShortcutKey('rationCoeDel', GC.Spread.Commands.Key.del, false, false, false, false); }, getRecoveryArr: function (tempDelArr, newArr) {//获得更新的coe不存在,恢复删除的被更新数据 let rst = []; for(let i = 0, len = tempDelArr.length; i < len; i++){ let isExist = false; for(let j = 0, jLen = newArr.length; j < jLen; j++){ if(tempDelArr[i].newID == newArr[j].ID){ isExist = true; break; } } if(!isExist){ rst.push(tempDelArr[i].org); } } return rst; }, addCoeItems: function(coeIDs) { var me = this; sheetCommonObj.cleanData(me.sheet, me.setting, -1); var curCache = me.cache["_Coe_" + me.curRation.ID]; var temp = []; if (curCache) { for (var i = 0; i < coeIDs.length; i++) { var isExist = false; for (let obj of curCache) { if (obj.ID == coeIDs[i]) { isExist = true; break; }; }; if (!isExist) { temp.push(coeIDs[i]); }; }; }else{ for (let obj of coeIDs){temp.push(obj)}; }; if(temp.length == 0){ me.showCoeItems(me.curRation.ID); sheetCommonObj.lockCells(me.sheet, me.setting); }else{ $.ajax({ type:"POST", url:"api/getCoeItemsByIDs", data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": temp})}, dataType:"json", cache:false, timeout:5000, success:function(result){ if (result) { var rstArr = []; for (let obj of result.data){rstArr.push(obj)}; if (curCache) { curCache = curCache.concat(rstArr); }else{ curCache = rstArr; } let recoveryArr = me.getRecoveryArr(me.tempDelArr, result.data); if(recoveryArr.length > 0){ curCache = curCache.concat(recoveryArr); } me.cache["_Coe_" + me.curRation.ID] = curCache; me.updateCurRation(); me.showCoeItems(me.curRation.ID); }; sheetCommonObj.lockCells(me.sheet, me.setting); }, error:function(err){ alert(err); } }); }; }, getCoeItems: function(ration, callback) { var me = this; me.curRation = ration; if (ration == undefined || ration.rationCoeList == undefined || ration.rationCoeList.length == 0){return;}; var coeList = ration.rationCoeList; var curCache = me.cache["_Coe_" + ration.ID]; if (curCache && curCache.length > 0) { me.showCoeItems(ration.ID); sheetCommonObj.lockCells(me.sheet, me.setting); } else { var data = {"libID": me.libID, "coeIDs": coeList}; $.ajax({ type:"POST", url:"api/getCoeItemsByIDs", data: {"data": JSON.stringify(data)}, dataType:"json", cache:false, timeout:5000, success:function(result){ sheetCommonObj.cleanData(me.sheet, me.setting, -1); if (result.data) { var tempResult = []; for (let obj of result.data) { tempResult.push(obj); }; me.cache["_Coe_" + ration.ID] = tempResult; me.showCoeItems(ration.ID); } sheetCommonObj.lockCells(me.sheet, me.setting); callback(); }, error:function(err){ alert(err); } }); }; }, showCoeItems: function(rationID) { var me = this; var curCache = me.cache["_Coe_" + rationID]; if (curCache) { curCache.sort(function(a, b) { var rst = 0; if (a.ID > b.ID) rst = 1 else if (a.ID < b.ID) rst = -1; return rst; }); sheetsOprObj.showData(me.sheet, me.setting, curCache); } }, updateCurRation: function() { var me = this, updateArr = []; if (me.curRation) { var rst = []; var curCache = me.cache["_Coe_" + me.curRation.ID]; if (curCache) { for (let obj of curCache) { rst.push(obj.ID); }; me.curRation.rationCoeList = rst; updateArr.push(me.curRation); rationOprObj.mixUpdateRequest(updateArr, [], []); }; }; } }