|
@@ -92,8 +92,11 @@ var subRateObject={
|
|
|
//this.subRateSheet.bind(GC.Spread.Sheets.Events.ValueChanged, me.onSheetValueChange);
|
|
|
this.subRateSheet.name('subRateSheet');
|
|
|
}
|
|
|
+ /* 20201209 改成和公路一样
|
|
|
subRateObject.datas = projectObj.project.FeeRate.getSubViewData(item);
|
|
|
- subRateObject.valueMap=projectObj.project.FeeRate.getValueMap(item);
|
|
|
+ subRateObject.valueMap=projectObj.project.FeeRate.getValueMap(item);
|
|
|
+
|
|
|
+ */
|
|
|
subRateObject.showSubRateData();
|
|
|
disableRightMenu("subRate",this.subRateSpread);
|
|
|
if(projectReadOnly){
|
|
@@ -103,17 +106,50 @@ var subRateObject={
|
|
|
sheetCommonObj.disableSpread(this.subRateSpread);
|
|
|
}
|
|
|
},
|
|
|
+ /* 20201209 改成和公路一样
|
|
|
+ showSubRateData:function () {
|
|
|
+ this.subRateSheet.setRowCount(0);
|
|
|
+ sheetCommonObj.showData(this.subRateSheet, this.subRateSetting, this.datas);
|
|
|
+ this.subRateSheet.setRowCount(this.datas.length);
|
|
|
+ for(let row =0; row < this.datas.length;row++){
|
|
|
+ this.setComboOptionCell(row,1,this.datas[row],this.subRateSheet);
|
|
|
+ }
|
|
|
+ }, */
|
|
|
+
|
|
|
showSubRateData:function () {
|
|
|
+ let preSelections = this.subRateSheet.getSelections();
|
|
|
+ this.datas = projectObj.project.FeeRate.getAllSubRates();
|
|
|
this.subRateSheet.setRowCount(0);
|
|
|
sheetCommonObj.showData(this.subRateSheet, this.subRateSetting, this.datas);
|
|
|
this.subRateSheet.setRowCount(this.datas.length);
|
|
|
+ let parentMap=_.groupBy(this.datas, 'ParentID');
|
|
|
+ let visibleMap = {};
|
|
|
+ this.subRateSheet.suspendPaint();
|
|
|
+ this.subRateSheet.suspendEvent();
|
|
|
for(let row =0; row < this.datas.length;row++){
|
|
|
this.setComboOptionCell(row,1,this.datas[row],this.subRateSheet);
|
|
|
+ this.setTreeNodeCellType(this.datas,row,parentMap,visibleMap,this.subRateSheet);
|
|
|
+ }
|
|
|
+ this.subRateSheet.resumeEvent();
|
|
|
+ this.subRateSheet.resumePaint();
|
|
|
+ if(preSelections){//定位光标到之前的位置
|
|
|
+ this.subRateSheet.setSelection(preSelections[0].row,preSelections[0].col,preSelections[0].rowCount,preSelections[0].colCount);
|
|
|
}
|
|
|
},
|
|
|
onSubRateSelectChanged:function (e,info) {
|
|
|
info.sheet.repaint();
|
|
|
},
|
|
|
+ setTreeNodeCellType:function (datas,row,parentMap,visibleMap,sheet) {
|
|
|
+ delete parentMap.undefined;//去掉无用节点
|
|
|
+ let treeNode = sheetCommonObj.getTreeNodeCellType(datas,row,parentMap);
|
|
|
+ treeNode.treeNodeType = false;
|
|
|
+ if((datas[row].subList && datas[row].subList.length >0)||datas[row].isSub == true ){
|
|
|
+ treeNode.treeNodeType = true;
|
|
|
+ visibleMap[datas[row].ID] = treeNode.collapsed;
|
|
|
+ }
|
|
|
+ sheet.setCellType(row, 0, treeNode, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ if(visibleMap[datas[row].ParentID]) sheet.getRange(row , -1, 1, -1).visible(!visibleMap[datas[row].ParentID]);//显示或隐藏
|
|
|
+ },
|
|
|
setComboOptionCell:function(row,col,subRate,sheet){
|
|
|
let options=[];
|
|
|
for(let op of subRate.optionList){
|
|
@@ -153,7 +189,9 @@ var subRateObject={
|
|
|
feeRateObject.updateBySelect(rate,selectMap,mapID);
|
|
|
}
|
|
|
},
|
|
|
- onSubRateValueChange:function (e,info) {
|
|
|
+/*
|
|
|
+ 20201209 改成和公路一样
|
|
|
+onSubRateValueChange:function (e,info) {
|
|
|
console.info(info);
|
|
|
let me = subRateObject, selectValueList=[],selectMap={};
|
|
|
if(me.datas&&me.datas.length>0){
|
|
@@ -171,7 +209,54 @@ var subRateObject={
|
|
|
feeRateObject.updateBySelect(rate,selectMap,mapID);
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+ */
|
|
|
+ onSubRateValueChange:function (e,info,feeRateCoe) {
|
|
|
+ let me = subRateObject, subList=null;
|
|
|
+ let value = info.newValue;
|
|
|
+ let subRate = me.datas[info.row];
|
|
|
+ if(subRate.editable == true || subRate.isSub == true){//是可编辑的,要检查数据类型
|
|
|
+ let checkResult = scMathUtil.isNumOrFormula(value);
|
|
|
+ if(checkResult!=null && !isNaN(checkResult)){
|
|
|
+ value = scMathUtil.roundForObj(checkResult,getDecimal("feeRate"));
|
|
|
+ }else {
|
|
|
+ alert('当前输入的数据类型不正确,请重新输入。');
|
|
|
+ return me.showSubRateData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(subRate.isSub == true){//是树节点的子节点,计算父节点的值
|
|
|
+ let parentRate = _.find(me.datas,{"ID":subRate.ParentID});//找到父节点
|
|
|
+ if(parentRate){
|
|
|
+ let sum = 0;
|
|
|
+ subList = _.cloneDeep(parentRate.subList);
|
|
|
+ for(let s of subList){//按比例计算
|
|
|
+ if(s.ID == subRate.ID) s.value = value;//当前项要用新输入的值
|
|
|
+ let v_a = scMathUtil.roundForObj(s.value * s.amount,getDecimal("process"))
|
|
|
+ sum = scMathUtil.roundForObj(sum + v_a,getDecimal("feeRate"));
|
|
|
+ }
|
|
|
+ value = sum;
|
|
|
+ subRate = parentRate;//把subRate 指向parentRate
|
|
|
+ }
|
|
|
+ } else if(subRate.subList && subRate.subList.length > 0){//输入树节结的父结点,子结点都等于父节点的值
|
|
|
+ subList = _.cloneDeep(subRate.subList);
|
|
|
+ for(let t of subList){
|
|
|
+ t.value = value
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(me.timeStamp = null){
|
|
|
+ me.timeStamp = +new Date()
|
|
|
+ feeRateObject.setRateFromSub(subRate,value,subList,info.newValue,feeRateCoe);
|
|
|
+ }else {
|
|
|
+ let now = +new Date();
|
|
|
+ if(now - me.timeStamp < 500){
|
|
|
+ setTimeout(function () {
|
|
|
+ feeRateObject.setRateFromSub(subRate,value,subList,info.newValue,feeRateCoe);
|
|
|
+ },500)
|
|
|
+ }else {
|
|
|
+ feeRateObject.setRateFromSub(subRate,value,subList,info.newValue,feeRateCoe);
|
|
|
+ }
|
|
|
+ me.timeStamp = now;
|
|
|
+ }
|
|
|
+ },
|
|
|
destorySpreadView:function () {
|
|
|
if(this.views){
|
|
|
this.views.destroy();
|