|
|
@@ -85,14 +85,11 @@ let divideObj = {
|
|
|
if(parentMap[-1]&&parentMap[-1].length>0){
|
|
|
for(let r of parentMap[-1]){
|
|
|
r.collapsed = false;
|
|
|
+ setItemsPrice(r);
|
|
|
datas.push(r)
|
|
|
if(parentMap[r.ID] && parentMap[r.ID].length > 0){
|
|
|
for(let c of parentMap[r.ID]){
|
|
|
- if(c.fees){
|
|
|
- let commonFee = _.find(c.fees,{"fieldName":"common"})
|
|
|
- if (commonFee)
|
|
|
- c.marketPrice = commonFee.unitFee;
|
|
|
- }
|
|
|
+ setItemsPrice(c);
|
|
|
datas.push(c);
|
|
|
}
|
|
|
}
|
|
|
@@ -100,6 +97,25 @@ let divideObj = {
|
|
|
}
|
|
|
return datas;
|
|
|
}
|
|
|
+
|
|
|
+ function setItemsPrice(item){
|
|
|
+ if(item.fees){
|
|
|
+ let commonFee = _.find(item.fees,{"fieldName":"common"})
|
|
|
+ if (commonFee){
|
|
|
+ item.marketPrice = commonFee.unitFee;
|
|
|
+ item.marketTotalFee = commonFee.totalFee;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ showCalcProgramDatas:function(){
|
|
|
+ if(!$('#divede_calc_nav').hasClass('active')) return;
|
|
|
+ this.divideSubSpread.setActiveSheetIndex(1);
|
|
|
+ //this.rationGLJDatas = getTreeRationGLJDatas();
|
|
|
},
|
|
|
|
|
|
showRationGLJDatas:function(){
|
|
|
@@ -243,9 +259,9 @@ let divideObj = {
|
|
|
if(data){
|
|
|
if(data.itemType == "分摊项"){
|
|
|
//金额,预算价,取费类别不可编辑
|
|
|
- if(dataCode =="marketTotalFee" || dataCode =="marketPrice" || dataCode =="programID" ) return false;
|
|
|
+ if(dataCode =="marketTotalFee" || dataCode =="marketUnitFee" || dataCode =="programID" ) return false;
|
|
|
//有子项时,单价不可编辑
|
|
|
- if(dataCode =="marketUnitFee"&& _.find(me.divideDatas,{ParentID:data.ID})) return false;
|
|
|
+ if(dataCode =="marketPrice"&& _.find(me.divideDatas,{ParentID:data.ID})) return false;
|
|
|
}
|
|
|
if( data.itemType == "量价" && dataCode =="marketTotalFee") return false//量价:“金额”不可编辑。
|
|
|
if(data.itemType == "定额"){ //定额:“单位”、“单价”、“金额”、“预算价”
|
|
|
@@ -284,6 +300,7 @@ let divideObj = {
|
|
|
let selected = this.getSelectedItem();
|
|
|
if(itemType!="分摊项"){//当插入定额或者量价时:
|
|
|
newItem.ParentID = selected.itemType == "分摊项"?selected.ID:selected.ParentID;
|
|
|
+ newItem.fees = [{fieldName:"common",tenderTotalFee:0,unitFee:0,totalFee:0,tenderUnitFee:0}];
|
|
|
}
|
|
|
if(itemType == "定额") newItem.type = rationType.ration;
|
|
|
if(itemType == "量价"){
|
|
|
@@ -296,19 +313,20 @@ let divideObj = {
|
|
|
datas.push({type:"add",doc:newItem});
|
|
|
await this.updateItem(datas);
|
|
|
},
|
|
|
- calcBills:function(bills){
|
|
|
+ calcBills:function(bills,deleteMap){
|
|
|
let divideSetting = projectObj.project.divide_setting.datas;
|
|
|
let subNodes = [];
|
|
|
let item=null;
|
|
|
for(let c of divideSetting.divideList){
|
|
|
if(c.ParentID == bills.ID){
|
|
|
+ if(deleteMap && deleteMap[c.ID]) continue;
|
|
|
this.initFeeIndexs(c);
|
|
|
subNodes.push({data:c, sourceType:"ration", calcType: 1, updateData:[]});
|
|
|
}
|
|
|
if(c.ID == bills.ID) item = c;
|
|
|
}
|
|
|
projectObj.project.calcProgram.innerCalcBill({data:item, sourceType:"bills", calcType: 3, updateData:[],children:subNodes},3);
|
|
|
- console.log(item)
|
|
|
+ return item;
|
|
|
},
|
|
|
initFeeIndexs:function(item){
|
|
|
item.feesIndex = {};
|
|
|
@@ -327,9 +345,15 @@ let divideObj = {
|
|
|
for(let s of this.divideDatas){
|
|
|
if(s.ParentID == selected.ID) subItems.push({type:"delete",ID:s.ID});
|
|
|
}
|
|
|
+ }else{
|
|
|
+ let deleteMap = {};
|
|
|
+ deleteMap[selected.ID] = true;
|
|
|
+ let item = this.calcBills({ID:selected.ParentID},deleteMap);
|
|
|
+ subItems.push({ID:item.ID,type:'update',doc:{fees:item.fees}});
|
|
|
}
|
|
|
subItems.push({type:"delete",ID:selected.ID,itemType:selected.itemType});
|
|
|
await this.updateItem(subItems);
|
|
|
+
|
|
|
},
|
|
|
getNewSeqs:function(selected,newItem){
|
|
|
let seq = 1,datas=[],refreshSeq = false;
|
|
|
@@ -394,23 +418,25 @@ let divideObj = {
|
|
|
if(pEngineer) data.programID = pEngineer;
|
|
|
data.divideDatas = datas;
|
|
|
let sel = this.divideSheet.getSelections()[0];
|
|
|
- this.divideSheet.setSelection(sel.row+1,sel.col,sel.rowCount,sel.colCount);
|
|
|
await this.updateDivideRation(data);
|
|
|
+ this.divideSheet.setSelection(sel.row+1,sel.col,sel.rowCount,sel.colCount);
|
|
|
|
|
|
},
|
|
|
updateDivideRation:async function(data){
|
|
|
- let divideSetting = projectObj.project.divide_setting.datas
|
|
|
+ let divideSetting = projectObj.project.divide_setting.datas;
|
|
|
+ let newRation = data;
|
|
|
try {
|
|
|
$.bootstrapLoading.start();
|
|
|
let result = await ajaxPost("/ration/updateDivideRation",data)
|
|
|
if(data.type=="add"){
|
|
|
data.divideDatas.push({type:"add",doc:result.ration});
|
|
|
this.refreshDivideCaches(data.divideDatas);
|
|
|
+ newRation = result.ration;
|
|
|
if(result.projectGLJList) projectObj.project.projectGLJ.loadNewProjectGLJToCaches(result.projectGLJList,true);
|
|
|
if(result.ration_gljs) divideSetting.ration_gljs = divideSetting.ration_gljs.concat(result.ration_gljs);
|
|
|
if(result.ration_coes) divideSetting.ration_coes = divideSetting.ration_coes.concat(result.ration_coes);
|
|
|
}
|
|
|
- await this.calcDivideItem(data);
|
|
|
+ await this.calcDivideItem(newRation);
|
|
|
} catch (error) {
|
|
|
console.log(error)
|
|
|
}
|
|
|
@@ -419,30 +445,33 @@ let divideObj = {
|
|
|
},
|
|
|
calcDivideItem:async function(divide){
|
|
|
let updateDatas = [];
|
|
|
+ let children =[];
|
|
|
let divideSetting = projectObj.project.divide_setting.datas
|
|
|
if(divide.itemType != "分摊项"){//不是分摊项,调用计算程序
|
|
|
let parentSum = 0;
|
|
|
let parent = null;
|
|
|
projectObj.project.calcProgram.innerCalcRation({data:divide, sourceType:"ration", calcType: 1, updateData:[]});
|
|
|
if(divide.itemType == "定额"){
|
|
|
- let comnonFee = _.find(divide.fees,{"fieldName":"common"})
|
|
|
- if(comnonFee)updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees,marketUnitFee:comnonFee.unitFee,marketTotalFee:comnonFee.totalFee}});
|
|
|
-
|
|
|
+ updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees}});
|
|
|
}else{
|
|
|
- updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees,marketUnitFee:divide.marketUnitFee,marketTotalFee:divide.marketTotalFee}});
|
|
|
+ updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees,marketUnitFee:divide.marketUnitFee}});
|
|
|
}
|
|
|
- parentSum = this.getTotolFee(divide);
|
|
|
for(let c of divideSetting.divideList){
|
|
|
if(c.ID == divide.ParentID) parent = c;
|
|
|
- if(c.ParentID == divide.ParentID && c.ID != divide.ID){
|
|
|
- parentSum = scMathUtil.roundForObj(parentSum+this.getTotolFee(c),getDecimal("process"))
|
|
|
+ if(c.ParentID == divide.ParentID){
|
|
|
+ let t = c.ID != divide.ID?c:divide;
|
|
|
+ this.initFeeIndexs(t);
|
|
|
+ children.push({data:t, sourceType:"ration", calcType: 1, updateData:[]});
|
|
|
}
|
|
|
}
|
|
|
- parentSum = scMathUtil.roundForObj(parentSum,getDecimal("bills.totalPrice"));
|
|
|
- if(parent && parent.marketTotalFee != parentSum) updateDatas.push({ID:parent.ID,type:'update',doc:{marketTotalFee:parentSum}});;
|
|
|
+ if(children.length > 0){
|
|
|
+ projectObj.project.calcProgram.innerCalcBill({data:parent, sourceType:"bills", calcType: 3, updateData:[],children:children},3);
|
|
|
+ updateDatas.push({ID:parent.ID,type:'update',doc:{fees:parent.fees}});
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ divide = this.calcBills(divide);
|
|
|
+ updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees}});
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
updateDatas.length > 0?await this.updateItem(updateDatas):this.showDatas();
|
|
|
},
|
|
|
|
|
|
@@ -511,14 +540,24 @@ let divideObj = {
|
|
|
if(recode.itemType == "分摊项"){
|
|
|
if(dataCode == "quantity"){
|
|
|
value = scMathUtil.roundForObj(value,3);
|
|
|
- let tu = scMathUtil.roundForObj(recode.marketUnitFee&&recode.marketUnitFee!=""?recode.marketUnitFee:0,getDecimal("bills.unitPrice"))
|
|
|
- doc["marketTotalFee"] = scMathUtil.roundForObj(value * tu,getDecimal("bills.totalPrice"))
|
|
|
+ let commonFee = _.find(recode.fees,{"fieldName":"common"})
|
|
|
+ if (commonFee){
|
|
|
+ let tu = scMathUtil.roundForObj(commonFee.unitFee&&commonFee.unitFee!=""?commonFee.unitFee:0,getDecimal("bills.unitPrice"))
|
|
|
+ commonFee.totalFee = scMathUtil.roundForObj(value * tu,getDecimal("bills.totalPrice"));
|
|
|
+ doc["fees"] = recode.fees;
|
|
|
+ }
|
|
|
}
|
|
|
- if(dataCode == "marketUnitFee"){
|
|
|
+ if(dataCode == "marketPrice"){
|
|
|
value = scMathUtil.roundForObj(value,getDecimal("bills.unitPrice"));
|
|
|
- let tq = scMathUtil.roundForObj(recode.quantity && recode.quantity!=""?recode.quantity:0,3)
|
|
|
- doc["marketTotalFee"] = scMathUtil.roundForObj(value * tq,getDecimal("bills.totalPrice"))
|
|
|
+ let commonFee = _.find(recode.fees,{"fieldName":"common"})
|
|
|
+ if (commonFee){
|
|
|
+ //let tu = scMathUtil.roundForObj(commonFee.unitFee&&commonFee.unitFee!=""?commonFee.unitFee:0,getDecimal("bills.unitPrice"))
|
|
|
+ commonFee.unitFee = scMathUtil.roundForObj(value,getDecimal("bills.unitPrice"));
|
|
|
+ doc["fees"] = recode.fees;
|
|
|
+ }
|
|
|
+ return {ID:recode.ID,type:'update',doc:doc};
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
if(recode.itemType =="定额"&& dataCode == 'quantity'){
|
|
|
if(value){
|
|
|
@@ -528,7 +567,7 @@ let divideObj = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(recode.itemType =="量价" && dataCode=="marketPrice") dataCode=="marketUnitFee"
|
|
|
+ if(recode.itemType =="量价" && dataCode=="marketPrice") dataCode="marketUnitFee"
|
|
|
doc[dataCode]=value;
|
|
|
return {ID:recode.ID,type:'update',doc:doc}
|
|
|
},
|
|
|
@@ -547,6 +586,8 @@ let divideObj = {
|
|
|
this.divideSubSheet = this.divideSubSpread.getSheet(0);
|
|
|
sheetCommonObj.initSheet(this.divideSubSheet, gljCol.ration_glj_setting, 0);
|
|
|
SheetDataHelper.protectdSheet(this.divideSubSheet);
|
|
|
+ this.calcProgramSheet = this.divideSubSpread.getSheet(1);
|
|
|
+ calcProgramObj.initSheet(this.calcProgramSheet);
|
|
|
},
|
|
|
initNavItem(){
|
|
|
let selected = this.getSelectedItem();
|
|
|
@@ -701,7 +742,7 @@ let divideObj = {
|
|
|
},
|
|
|
callback: function (key, opt) {
|
|
|
let selected = me.getSelectedItem();
|
|
|
- me.calcBills(selected);
|
|
|
+ console.log(me.calcBills(selected));
|
|
|
}
|
|
|
},
|
|
|
"removeItem": {
|
|
|
@@ -889,4 +930,9 @@ $('#divide_zmhs_toogle').bind('click',function (){
|
|
|
$("#divide_hs-nav").click();
|
|
|
}
|
|
|
$("#divide_zmhs_toogle").hide();
|
|
|
+});
|
|
|
+
|
|
|
+$('.divideBottom ul li a').bind('click',function () {
|
|
|
+ divideObj.showRationGLJDatas();
|
|
|
+ divideObj.showCalcProgramDatas();
|
|
|
});
|