|
|
@@ -7,9 +7,9 @@ let divideObj = {
|
|
|
{headerName: "单位", headerWidth: 100, dataCode: "unit", dataType: "String",cellType:'comboBox',editable:true,options:['m', 'm2', 'm3', 'km', 't', 'kg', '台班', '工日', '昼夜', '元', '项', '处', '个', '件',
|
|
|
'根', '组', '系统', '台', '套', '株', '丛', '缸', '支', '只', '块', '座', '对', '份', '樘', '攒', '榀']},
|
|
|
{headerName: "工程量", headerWidth: 80, dataCode: "quantity", dataType: "Number",validator:"number",getText:"notZero"},
|
|
|
- {headerName: "单价", headerWidth: 100, dataCode: "marketUnitFee", dataType: "Number",validator:"number",getText:"notZero"},
|
|
|
+ {headerName: "单价", headerWidth: 100, dataCode: "marketPrice", dataType: "Number",validator:"number",getText:"notZero"},
|
|
|
{headerName: "金额", headerWidth: 100, dataCode: "marketTotalFee", dataType: "Number",validator:"number",getText:"notZero"},
|
|
|
- {headerName: "预算价", headerWidth: 100, dataCode: "marketPrice", dataType: "Number",validator:"number",getText:"notZero"},
|
|
|
+ {headerName: "预算价", headerWidth: 100, dataCode: "marketUnitFee", dataType: "Number",validator:"number",getText:"notZero"},
|
|
|
{headerName: "取费类别", headerWidth: 60, dataCode: "programID", hAlign:'center', dataType: "String",cellType:'comboBox',editorValueType:true}
|
|
|
],
|
|
|
view:{
|
|
|
@@ -88,6 +88,10 @@ let divideObj = {
|
|
|
datas.push(r)
|
|
|
if(parentMap[r.ID] && parentMap[r.ID].length > 0){
|
|
|
for(let c of parentMap[r.ID]){
|
|
|
+ if(c.fees){
|
|
|
+ let comnonFee = _.find(c.fees,{"fieldName":"common"})
|
|
|
+ c.marketPrice = comnonFee.unitFee;
|
|
|
+ }
|
|
|
datas.push(c);
|
|
|
}
|
|
|
}
|
|
|
@@ -172,9 +176,9 @@ let divideObj = {
|
|
|
return datas;
|
|
|
}
|
|
|
},
|
|
|
- getRationGLJDatas : function (){//这里是给计算程序统一调用的方法,树结构不用这个方法了
|
|
|
+ getRationGLJDatas : function (ration){//这里是给计算程序统一调用的方法,树结构不用这个方法了
|
|
|
let datas = [];
|
|
|
- let selected = divideObj.getSelectedItem();
|
|
|
+ let selected = ration;
|
|
|
let divideSetting = projectObj.project.divide_setting.datas;
|
|
|
if(selected && selected.itemType=="定额"){
|
|
|
for(r of divideSetting.ration_gljs){
|
|
|
@@ -184,7 +188,7 @@ let divideObj = {
|
|
|
datas.push(newr);
|
|
|
}
|
|
|
}
|
|
|
- gljOprObj.combineWithProjectGlj(datas);
|
|
|
+ gljOprObj.combineWithProjectGlj(datas,false,selected);
|
|
|
}
|
|
|
return datas;
|
|
|
},
|
|
|
@@ -291,6 +295,21 @@ let divideObj = {
|
|
|
datas.push({type:"add",doc:newItem});
|
|
|
await this.updateItem(datas);
|
|
|
},
|
|
|
+ calcBills:function(bills){
|
|
|
+ let divideSetting = projectObj.project.divide_setting.datas;
|
|
|
+ let subNodes = [];
|
|
|
+ let item=null;
|
|
|
+ for(let c of divideSetting.divideList){
|
|
|
+ if(c.ParentID == bills.ID){
|
|
|
+ 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(selected)
|
|
|
+ },
|
|
|
deleteItem:async function(){
|
|
|
let selected = this.getSelectedItem();
|
|
|
let subItems = [];
|
|
|
@@ -383,11 +402,49 @@ let divideObj = {
|
|
|
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);
|
|
|
} catch (error) {
|
|
|
console.log(error)
|
|
|
}
|
|
|
$.bootstrapLoading.end();
|
|
|
- this.showDatas();
|
|
|
+ //this.showDatas();
|
|
|
+ },
|
|
|
+ calcDivideItem:async function(divide){
|
|
|
+ let updateDatas = [];
|
|
|
+ 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}});
|
|
|
+
|
|
|
+ }else{
|
|
|
+ updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees,marketUnitFee:divide.marketUnitFee,marketTotalFee:divide.marketTotalFee}});
|
|
|
+ }
|
|
|
+ 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"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ parentSum = scMathUtil.roundForObj(parentSum,getDecimal("bills.totalPrice"));
|
|
|
+ if(parent && parent.marketTotalFee != parentSum) updateDatas.push({ID:parent.ID,type:'update',doc:{marketTotalFee:parentSum}});;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ updateDatas.length > 0?await this.updateItem(updateDatas):this.showDatas();
|
|
|
+ },
|
|
|
+
|
|
|
+ getTotolFee:function name(divide) {
|
|
|
+ if(divide.itemType == "定额"){
|
|
|
+ let comnonFee = _.find(divide.fees,{"fieldName":"common"})
|
|
|
+ return comnonFee && comnonFee.totalFee ? comnonFee.totalFee:0;
|
|
|
+ }else if(divide.itemType == "量价"){
|
|
|
+ return divide.marketTotalFee;
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
updateCustomerCoe:function(result){
|
|
|
@@ -428,8 +485,8 @@ let divideObj = {
|
|
|
alert('输入的数据类型不对,请重新输入!');
|
|
|
return me.showDatas();
|
|
|
}
|
|
|
-
|
|
|
await me.updateItem([me.getDivideUpdateData(recode,dataCode,value)]);
|
|
|
+ await me.calcDivideItem(recode);
|
|
|
},
|
|
|
onDivideSelectionChange:function(sender,args){
|
|
|
let me = divideObj;
|
|
|
@@ -455,6 +512,15 @@ let divideObj = {
|
|
|
doc["marketTotalFee"] = scMathUtil.roundForObj(value * tq,getDecimal("bills.totalPrice"))
|
|
|
}
|
|
|
}
|
|
|
+ if(recode.itemType =="定额"&& dataCode == 'quantity'){
|
|
|
+ if(value){
|
|
|
+ value = scMathUtil.roundForObj(parseFloat(value) / FilterNumberFromUnit(recode.unit),getDecimal("ration.quantity"));
|
|
|
+ }else {
|
|
|
+ value = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(recode.itemType =="量价" && dataCode=="marketPrice") dataCode=="marketUnitFee"
|
|
|
doc[dataCode]=value;
|
|
|
return {ID:recode.ID,type:'update',doc:doc}
|
|
|
},
|
|
|
@@ -619,6 +685,17 @@ let divideObj = {
|
|
|
console.log(selected)
|
|
|
}
|
|
|
},
|
|
|
+ "calcBills": {
|
|
|
+ name: "计算分摊项",
|
|
|
+ icon: 'fa-sign-in',
|
|
|
+ disabled: function () {
|
|
|
+ return me.rightClickTarget.row === undefined
|
|
|
+ },
|
|
|
+ callback: function (key, opt) {
|
|
|
+ let selected = me.getSelectedItem();
|
|
|
+ me.calcBills(selected);
|
|
|
+ }
|
|
|
+ },
|
|
|
"removeItem": {
|
|
|
name: "删除",
|
|
|
icon: 'fa-trash-o',
|