|
@@ -50,6 +50,7 @@ let tender_obj={
|
|
|
this.tenderTreeSetting.setAutoFitRow = MainTreeCol.getEvent("setAutoFitRow");
|
|
|
this.tenderController = TREE_SHEET_CONTROLLER.createNew(this.tenderTree, this.tenderSheet, this.tenderTreeSetting);
|
|
|
this.tenderSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSheetValueChange);
|
|
|
+ this.tenderSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onTenderRangeChange);
|
|
|
this.tenderSheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onEditStarting);
|
|
|
this.tenderController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, this.treeSelectedChanged);
|
|
|
// this.tenderController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, this.onSelectionChange);
|
|
@@ -89,35 +90,85 @@ let tender_obj={
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- onSheetValueChange : function (sender,args) {
|
|
|
- let me = tender_obj, row = args.row, col = args.col;
|
|
|
- let node = me.tenderTree.items[row];
|
|
|
- let dataCode = me.tenderSetting.header[col].dataCode;
|
|
|
- let value = args.newValue;
|
|
|
- let updateData = {type:node.sourceType,data:{'ID' : node.data.ID}};
|
|
|
- let datas = [],nodes = [];
|
|
|
+ onTenderRangeChange:function (sender,info) {
|
|
|
+ let me = tender_obj;
|
|
|
+ let changeInfo=[];
|
|
|
+ if(info.action == GC.Spread.Sheets.RangeChangedAction.clear){
|
|
|
+ if(me.editChecking(info.row,info.col) == false){
|
|
|
+ me.tenderController.refreshTreeNode(me.materialTree.selected, false);
|
|
|
+ }else {
|
|
|
+ info.newValue = null;
|
|
|
+ me.onSheetValueChange(sender,info);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ let canChange = true;
|
|
|
+ for(let c of info.changedCells){
|
|
|
+ let value= info.sheet.getCell(c.row, c.col).text();
|
|
|
+ changeInfo.push({row:c.row,col:c.col,value:value});
|
|
|
+ if(me.editChecking(c.row,c.col,true)==false){//如果不能编辑
|
|
|
+ canChange = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (!projectGljObject.checkData(c.col,me.tenderSetting,value)) {
|
|
|
+ alert('输入的数据类型不对,请重新输入!');
|
|
|
+ canChange = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(canChange == false){
|
|
|
+ tender_obj.showTenderData();
|
|
|
+ }else {
|
|
|
+ me.batchUpdateValue(changeInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (value&&!projectGljObject.checkData(col,me.tenderSetting,value)) {
|
|
|
- setTimeout(function () {//为了不与click事件冲突
|
|
|
- alert('输入的数据类型不对,请重新输入!');
|
|
|
- },200);
|
|
|
- updateData = null;
|
|
|
+ },
|
|
|
+ batchUpdateValue:function (changeInfo) {
|
|
|
+ let me = tender_obj,updateNodes = [],datas = [],nodes=[];
|
|
|
+ let dataMap = {};//用来去重复
|
|
|
+ for(let c of changeInfo){
|
|
|
+ let dataCode = me.tenderSetting.header[c.col].dataCode;
|
|
|
+ let node = me.tenderTree.items[c.row];
|
|
|
+ me.getUpdateData(c.value,dataCode,node,updateNodes);
|
|
|
}
|
|
|
- if(dataCode == 'is_adjust_price'){//不调价,修改父项后,子项也跟着更新
|
|
|
- if(value == true){
|
|
|
- value = 1;
|
|
|
- }else if(value == false){
|
|
|
- value = 0;
|
|
|
+ for(let u of updateNodes){//有可能会有重复的数据,需要按相同的ID组合起来。
|
|
|
+ if(dataMap[u.data.ID]){
|
|
|
+ for(let key in u.data){
|
|
|
+ if(key == 'ID'){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ dataMap[u.data.ID].data[key] = u.data[key];
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ dataMap[u.data.ID] = u;
|
|
|
}
|
|
|
+ }
|
|
|
+ for(let IDKey in dataMap){
|
|
|
+ datas.push(dataMap[IDKey]);
|
|
|
+ let temNode = me.tenderTree.findNode(IDKey);
|
|
|
+ if(temNode) nodes.push(temNode);
|
|
|
+ }
|
|
|
+ me.updateTenderData(datas,function () {
|
|
|
+ me.tenderController.refreshTreeNode(nodes, false);
|
|
|
+ });
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ getUpdateData:function(value,dataCode,node,updateNodes,nodes){
|
|
|
+ let me = tender_obj;
|
|
|
+ let updateData = {type:node.sourceType,data:{'ID' : node.data.ID}};
|
|
|
+ if(dataCode === 'is_adjust_price'){
|
|
|
+ value = value? 1:0;
|
|
|
if(value == 1){
|
|
|
updateData = me.cleanTenderCoe(updateData,node);//打勾不调价后清空消耗量调整系数
|
|
|
}
|
|
|
- me.updateChildrenValue(node,dataCode,value,datas,nodes);
|
|
|
+ me.updateChildrenValue(node,dataCode,value,updateNodes,nodes);
|
|
|
}
|
|
|
if(updateData&&dataCode.indexOf("Coe") != -1 ){//如果是调整系统项,级联更新子项
|
|
|
value = scMathUtil.roundForObj(value,getDecimal('process'));
|
|
|
- me.updateChildrenValue(node,dataCode,value,datas,nodes);
|
|
|
+ me.updateChildrenValue(node,dataCode,value,updateNodes,nodes);
|
|
|
}
|
|
|
+
|
|
|
//在目标造价综合单价中输入数值,按项目属性中的清单单价精度取舍,并清空当前行的目标造价综合合价
|
|
|
if(dataCode == 'targetUnitFee'){
|
|
|
value = scMathUtil.roundForObj(value,getDecimal('unitPrice',node));
|
|
@@ -127,11 +178,24 @@ let tender_obj={
|
|
|
value = scMathUtil.roundForObj(value,getDecimal('totalPrice',node));
|
|
|
updateData?updateData.data["targetUnitFee"] = null:'';
|
|
|
}
|
|
|
- if(updateData){
|
|
|
- updateData.data[dataCode] = value;
|
|
|
- datas.push(updateData);
|
|
|
+ updateData.data[dataCode] = value;
|
|
|
+ updateNodes.push(updateData);
|
|
|
+ nodes?nodes.push(node):'';
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ onSheetValueChange : function (sender,args) {
|
|
|
+ let me = tender_obj, row = args.row, col = args.col;
|
|
|
+ let node = me.tenderTree.items[row];
|
|
|
+ let dataCode = me.tenderSetting.header[col].dataCode;
|
|
|
+ let value = args.newValue;
|
|
|
+ let datas = [],nodes = [];
|
|
|
+ if (value&&!projectGljObject.checkData(col,me.tenderSetting,value)) {
|
|
|
+ alert('输入的数据类型不对,请重新输入!');
|
|
|
+ nodes.push(node);
|
|
|
+ }else {
|
|
|
+ me.getUpdateData(value,dataCode,node,datas,nodes);
|
|
|
}
|
|
|
- nodes.push(node);
|
|
|
me.updateTenderData(datas,function () {
|
|
|
me.tenderController.refreshTreeNode(nodes, false);
|
|
|
});
|
|
@@ -149,7 +213,7 @@ let tender_obj={
|
|
|
continue;
|
|
|
}
|
|
|
datas.push(updateData);
|
|
|
- nodes.push(c);
|
|
|
+ nodes?nodes.push(c):"";
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -287,7 +351,7 @@ let tender_obj={
|
|
|
}
|
|
|
|
|
|
},
|
|
|
- editChecking:function (row,col) {//return false表示不能编辑
|
|
|
+ editChecking:function (row,col,isPaste = false) {//return false表示不能编辑
|
|
|
let me = tender_obj;
|
|
|
let dataCode = me.tenderSetting.header[col].dataCode;
|
|
|
let lockColumns = me.tenderSetting.view.lockColumns;
|
|
@@ -295,7 +359,7 @@ let tender_obj={
|
|
|
if(lockColumns.indexOf(col)!= -1){
|
|
|
return false;
|
|
|
}
|
|
|
- if(dataCode == 'is_adjust_price'){
|
|
|
+ if(isPaste == false && dataCode == 'is_adjust_price'){//对于是粘贴或是拖动填充过来的数据,不调价不做判断
|
|
|
return false;
|
|
|
}
|
|
|
if(row >= me.tenderTree.items.length){
|