|
@@ -276,14 +276,15 @@ var installation_fee = {
|
|
|
userID: userID
|
|
|
};
|
|
|
let oldITypeRations = _.cloneDeep(project.Ration.getAllInstallTypeRation())//取所有旧的安装增加费定额-没有用的要删除
|
|
|
- let oldRationMap = {}, deleteRationNodes = [], deleteBillsNodes = [];
|
|
|
+ let oldRationMap = {}, deleteRationNodes = [], deleteBillsNodes = [],reCalBillIDS = [];
|
|
|
let isChange = newBills.length>0;//记录数据是否发生了改变;
|
|
|
- for(let o of oldITypeRations){//过滤出要删除的定额
|
|
|
+ for(let o of oldITypeRations){//过滤出要删除的定额 - 同时对应的父项也要重新更新计算
|
|
|
if(rationKeyMap[o.installationKey]==undefined){
|
|
|
updateData.ration.delete.push(o);
|
|
|
let d_node = project.mainTree.getNodeByID(o.ID);
|
|
|
if(d_node){
|
|
|
deleteRationNodes.push(d_node);
|
|
|
+ reCalBillIDS.push(o.billsItemID);
|
|
|
isChange = true;
|
|
|
}
|
|
|
}
|
|
@@ -302,8 +303,8 @@ var installation_fee = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- for(let tem_bx of BXs){//过滤要删除的补项
|
|
|
- if(usedBXMap[tem_bx.ParentID]==undefined){
|
|
|
+ for(let tem_bx of BXs){//过滤要删除的 自动生成的补项
|
|
|
+ if(tem_bx.code.startsWith('BAZF')&& usedBXMap[tem_bx.ParentID]==undefined){
|
|
|
updateData.bills.delete.push(tem_bx);
|
|
|
let b_node = project.mainTree.getNodeByID(tem_bx.ID);
|
|
|
if(b_node){
|
|
@@ -331,9 +332,16 @@ var installation_fee = {
|
|
|
calRations = addNewNodes(updateData);
|
|
|
});
|
|
|
for(let u of updateData.ration.update){
|
|
|
- let unode = projectObj.project.mainTree.findNode(u.ID);
|
|
|
+ let unode = projectObj.project.mainTree.findNode(u.ID);
|
|
|
unode?calRations.push(unode):'';
|
|
|
}
|
|
|
+ if(reCalBillIDS.length > 0){
|
|
|
+ reCalBillIDS = _.uniq(reCalBillIDS);
|
|
|
+ for(let bID of reCalBillIDS){
|
|
|
+ let bnode = projectObj.project.mainTree.findNode(bID);
|
|
|
+ bnode?calRations.push(bnode):''; //现在计算程序支持同时传入清单和定额了,所以能放一起
|
|
|
+ }
|
|
|
+ }
|
|
|
setTreeSelection(selectedNode);
|
|
|
let endTime = +new Date();
|
|
|
console.log(`计算安装增加费时间——${endTime - startTime}`);
|
|
@@ -493,13 +501,13 @@ var installation_fee = {
|
|
|
projectID: parseInt(project.ID()),
|
|
|
ParentID:billID_key,
|
|
|
NextSiblingID:-1,
|
|
|
- code : 'BAZF',
|
|
|
name:'安装增加费',
|
|
|
unit:'元',
|
|
|
quantity:'1',
|
|
|
type:billType.BX
|
|
|
};
|
|
|
BXNodeData.ID = uuid.v1();
|
|
|
+ BXNodeData.code = getBXCode("BAZF",usedBXMap);
|
|
|
FBMap[billID_key] = BXNodeData;
|
|
|
newBills.push(BXNodeData);
|
|
|
}
|
|
@@ -519,6 +527,22 @@ var installation_fee = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ function getBXCode(code,BXMap) {//自动生成物补项编号加001、002等后缀
|
|
|
+ let codes = [];
|
|
|
+ let i = 1;
|
|
|
+ let newCode = '';
|
|
|
+ for(let key in BXMap){
|
|
|
+ codes.push(BXMap[key].code);
|
|
|
+ }
|
|
|
+ while (true){
|
|
|
+ newCode = code + seqString(i,3);
|
|
|
+ if(codes.indexOf(newCode)==-1){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ return newCode;
|
|
|
+ }
|
|
|
|
|
|
function allInOne(item,rule,rations,newBills,pre_key,rationKeyMap) {//统一设置
|
|
|
let billData = getBillNodeData(item,rule,newBills);//取对应的清单或生成一个新的清单数据
|
|
@@ -562,8 +586,6 @@ var installation_fee = {
|
|
|
newRationData = setNewRationProperty(newRationData,nextID,rule);
|
|
|
return newRationData;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
function getBillNodeData(item,rule,newBills) {
|
|
|
let billData = null;
|
|
|
let billID = null;
|
|
@@ -590,7 +612,6 @@ var installation_fee = {
|
|
|
function getBillsByID(billID){
|
|
|
return _.find(allBillsDatas,{"ID":billID});
|
|
|
}
|
|
|
-
|
|
|
function getBillsByCode(code){
|
|
|
return _.find(allBillsDatas, function(b) {
|
|
|
if(b.code&&b.code.indexOf(code)!=-1){
|
|
@@ -600,8 +621,6 @@ var installation_fee = {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
function calcQuantity(rule,ration) {//计算单条定额的三个消耗量
|
|
|
let gljDecimal = getDecimal('glj.quantity');
|
|
|
let labourQuantity = 0, materialQuantity = 0, machineQuantity = 0;
|
|
@@ -718,10 +737,6 @@ var installation_fee = {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
installation_fee.prototype.resetToDefault = function (callback) {
|
|
|
let me = this;
|
|
|
let installFees = [];
|