|
@@ -1,47 +1,7 @@
|
|
/**
|
|
/**
|
|
* Created by Zhong on 2017/11/28.
|
|
* Created by Zhong on 2017/11/28.
|
|
*/
|
|
*/
|
|
-//清单固定行
|
|
|
|
-const fixedFlag = {
|
|
|
|
- // 分部分项工程
|
|
|
|
- SUB_ENGINERRING: 1,
|
|
|
|
- // 措施项目
|
|
|
|
- MEASURE: 2,
|
|
|
|
- // 施工技术措施项目
|
|
|
|
- CONSTRUCTION_TECH: 3,
|
|
|
|
- // 安全文明施工按实计算费用
|
|
|
|
- SAFETY_CONSTRUCTION_ACTUAL: 4,
|
|
|
|
- // 施工组织措施专项费用
|
|
|
|
- CONSTRUCTION_ORGANIZATION: 5,
|
|
|
|
- // 安全文明施工专项费用
|
|
|
|
- SAFETY_CONSTRUCTION: 6,
|
|
|
|
- // 其他项目
|
|
|
|
- OTHER: 7,
|
|
|
|
- // 暂列金额
|
|
|
|
- PROVISIONAL: 8,
|
|
|
|
- // 暂估价
|
|
|
|
- ESTIMATE: 9,
|
|
|
|
- // 材料(工程设备)暂估价
|
|
|
|
- MATERIAL_PROVISIONAL: 10,
|
|
|
|
- // 专业工程暂估价
|
|
|
|
- ENGINEERING_ESITIMATE: 11,
|
|
|
|
- // 计日工
|
|
|
|
- DAYWORK: 12,
|
|
|
|
- // 总承包服务费
|
|
|
|
- TURN_KEY_CONTRACT: 13,
|
|
|
|
- // 索赔与现场签证
|
|
|
|
- CLAIM_VISA: 14,
|
|
|
|
- // 规费
|
|
|
|
- CHARGE: 15,
|
|
|
|
- // 社会保险费及住房公积金 Social insurance fee and housing accumulation fund
|
|
|
|
- SOCIAL_INSURANCE_HOUSING_FUND: 16,
|
|
|
|
- // 工程排污费 charges for disposing pollutants
|
|
|
|
- POLLUTANTS: 17,
|
|
|
|
- // 税金
|
|
|
|
- TAX: 18,
|
|
|
|
- //工程造价
|
|
|
|
- ENGINEERINGCOST: 19
|
|
|
|
-};
|
|
|
|
|
|
+
|
|
|
|
|
|
let cbTools = {
|
|
let cbTools = {
|
|
isDef: function (v) {
|
|
isDef: function (v) {
|
|
@@ -70,6 +30,38 @@ let cbTools = {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ //通过行获取根节点清单
|
|
|
|
+ getBillByRow: function (items, row) {
|
|
|
|
+ if(cbTools.isDef(items[row]) &&
|
|
|
|
+ cbTools.isUnDef(items[row]['parent'])&&
|
|
|
|
+ cbTools.isDef(items[row]['sourceType']) &&
|
|
|
|
+ items[row]['sourceType'] === calcBase.project.Bills.getSourceType()){
|
|
|
|
+ return items[row];
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ },
|
|
|
|
+ //获取该节点所有父节点
|
|
|
|
+ getParents: function (node) {
|
|
|
|
+ let rst = [];
|
|
|
|
+ rParent(node);
|
|
|
|
+ return rst;
|
|
|
|
+ function rParent(node){
|
|
|
|
+ if(cbTools.isDef(node.parent)){
|
|
|
|
+ rst.push(node.parent);
|
|
|
|
+ rParent(node.parent);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //获取所有节点的ID
|
|
|
|
+ getNodeIDs: function (nodes) {
|
|
|
|
+ let rst = [];
|
|
|
|
+ for(let i = 0, len = nodes.length; i < len; i++){
|
|
|
|
+ if(this.isDef(nodes[i]['data']['ID'])){
|
|
|
|
+ rst.push(nodes[i]['data']['ID']);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+ },
|
|
//需要用到计算基数的时候,先找出所有的固定清单,避免每个基数都要去遍历寻找清单
|
|
//需要用到计算基数的时候,先找出所有的固定清单,避免每个基数都要去遍历寻找清单
|
|
setFixedBills: function (project, billsObj, fixedFlag) {
|
|
setFixedBills: function (project, billsObj, fixedFlag) {
|
|
let bills = project.Bills.datas;
|
|
let bills = project.Bills.datas;
|
|
@@ -190,20 +182,28 @@ let cbTools = {
|
|
return tempBases;
|
|
return tempBases;
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
|
|
+ //获取基数和行引用
|
|
getBase(node);
|
|
getBase(node);
|
|
let bases = Array.from(new Set(tempBases));
|
|
let bases = Array.from(new Set(tempBases));
|
|
|
|
+ //根据基数和行引用获取清单ID
|
|
for(let i = 0, len = bases.length; i < len; i++){
|
|
for(let i = 0, len = bases.length; i < len; i++){
|
|
- if(cbTools.isDef(calcBase.baseFigures[bases[i]])){
|
|
|
|
- block.push(calcBase.baseFigures[bases[i]]['fixedBill']['bill']['ID']);
|
|
|
|
|
|
+ if(bases[i]['type'] === 'base' && cbTools.isDef(calcBase.baseFigures[bases[i]['value']])){
|
|
|
|
+ block.push(calcBase.baseFigures[bases[i]['value']]['fixedBill']['bill']['ID']);
|
|
|
|
+ }
|
|
|
|
+ else if(bases[i]['type'] === 'row'){
|
|
|
|
+ let node = cbTools.getBillByRow(calcBase.project.mainTree.items, bases[i]['value'] - 1);
|
|
|
|
+ if(cbTools.isDef(node)){
|
|
|
|
+ block.push(node.data.ID);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return Array.from(new Set(block));
|
|
return Array.from(new Set(block));
|
|
}
|
|
}
|
|
function getBase(node){
|
|
function getBase(node){
|
|
if(node && node.children.length === 0){
|
|
if(node && node.children.length === 0){
|
|
- if(cbTools.isDef(node.data.calcBase)){
|
|
|
|
- let figures = cbParser.getFigure(node.data.calcBase);
|
|
|
|
- tempBases = tempBases.concat(figures);
|
|
|
|
|
|
+ if(cbTools.isDef(node.data.calcBase) && node.data.calcBase !== ''){
|
|
|
|
+ let figureF = cbParser.getFigureF(cbParser.getFigure(node.data.calcBase), cbParser.getRArr(cbParser.getFArr(node.data.calcBase)));
|
|
|
|
+ tempBases = tempBases.concat(figureF);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if(node && node.children.length > 0) {
|
|
else if(node && node.children.length > 0) {
|
|
@@ -228,52 +228,52 @@ let baseFigureTemplate = {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.common.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common.totalFee) ? bill.feesIndex.common.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXDEJJRGF': function () {
|
|
'FBFXDEJJRGF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.labour.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.labour) && cbTools.isDef(bill.feesIndex.labour.totalFee) ? bill.feesIndex.labour.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXDEJJCLF': function () {
|
|
'FBFXDEJJCLF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.material.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.material) && cbTools.isDef(bill.feesIndex.material.totalFee) ? bill.feesIndex.material.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXDEJJJXF': function () {
|
|
'FBFXDEJJJXF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.machine.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.machine) && cbTools.isDef(bill.feesIndex.machine.totalFee) ? bill.feesIndex.machine.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXTZRGF': function () {
|
|
'FBFXTZRGF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.adjustLabour.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.adjustLabour) && cbTools.isDef(bill.feesIndex.adjustLabour.totalFee) ? bill.feesIndex.adjustLabour.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXTZJSRGF': function () {
|
|
'FBFXTZJSRGF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.adjustMachineLabour.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.adjustMachineLabour) && cbTools.isDef(bill.feesIndex.adjustMachineLabour.totalFee) ? bill.feesIndex.adjustMachineLabour.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXZCF': function () {
|
|
'FBFXZCF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.mainMaterial.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.mainMaterial) && cbTools.isDef(bill.feesIndex.mainMaterial.totalFee) ? bill.feesIndex.mainMaterial.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXSBF': function () {
|
|
'FBFXSBF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.mainMaterial.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.equipment) && cbTools.isDef(bill.feesIndex.equipment.totalFee) ? bill.feesIndex.equipment.totalFee : 0;
|
|
},
|
|
},
|
|
'FBFXWJJCLF': function () {
|
|
'FBFXWJJCLF': function () {
|
|
- return 0;
|
|
|
|
|
|
+ return (this['FBFXZCF']() + this['FBFXSBF']()).toDecimal(decimalObj.bills.totalPrice);
|
|
},
|
|
},
|
|
'FBFXRGGR': function () {
|
|
'FBFXRGGR': function () {
|
|
return 0;
|
|
return 0;
|
|
@@ -285,13 +285,13 @@ let baseFigureTemplate = {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.MEASURE]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.MEASURE]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.common.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common.totalFee) ? bill.feesIndex.common.totalFee : 0;
|
|
},
|
|
},
|
|
'ZZCSXMF': function () {
|
|
'ZZCSXMF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.common.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common.totalFee) ? bill.feesIndex.common.totalFee : 0;
|
|
},
|
|
},
|
|
'ZZCSXMDEJJZJGCF': function () {
|
|
'ZZCSXMDEJJZJGCF': function () {
|
|
return (this['ZZCSXMDEJJRGF']() + this['ZZCSXMDEJJCLF']() + this['ZZCSXMDEJJJXF']()).toDecimal(decimalObj.bills.totalPrice);
|
|
return (this['ZZCSXMDEJJRGF']() + this['ZZCSXMDEJJCLF']() + this['ZZCSXMDEJJJXF']()).toDecimal(decimalObj.bills.totalPrice);
|
|
@@ -300,67 +300,70 @@ let baseFigureTemplate = {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.labour.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.labour) && cbTools.isDef(bill.feesIndex.labour.totalFee) ? bill.feesIndex.labour.totalFee : 0;
|
|
},
|
|
},
|
|
'ZZCSXMDEJJCLF': function () {
|
|
'ZZCSXMDEJJCLF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.material.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.material) && cbTools.isDef(bill.feesIndex.material.totalFee) ? bill.feesIndex.material.totalFee : 0;
|
|
},
|
|
},
|
|
'ZZCSXMDEJJJXF': function () {
|
|
'ZZCSXMDEJJJXF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.machine.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.machine) && cbTools.isDef(bill.feesIndex.machine.totalFee) ? bill.feesIndex.machine.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMF': function () {
|
|
'JSCSXMF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.common.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common.totalFee) ? bill.feesIndex.common.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMDEJJRGF': function () {
|
|
'JSCSXMDEJJRGF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.labour.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.labour) && cbTools.isDef(bill.feesIndex.labour.totalFee) ? bill.feesIndex.labour.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMDEJJCLF': function () {
|
|
'JSCSXMDEJJCLF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.material.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.material) && cbTools.isDef(bill.feesIndex.material.totalFee) ? bill.feesIndex.material.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMDEJJJXF': function () {
|
|
'JSCSXMDEJJJXF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.machine.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.machine) && cbTools.isDef(bill.feesIndex.machine.totalFee) ? bill.feesIndex.machine.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMTZRGF': function () {
|
|
'JSCSXMTZRGF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.adjustLabour.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.adjustLabour) && cbTools.isDef(bill.feesIndex.adjustLabour.totalFee) ? bill.feesIndex.adjustLabour.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMTZJSRGF': function () {
|
|
'JSCSXMTZJSRGF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.adjustMachineLabour.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.adjustMachineLabour) && cbTools.isDef(bill.feesIndex.adjustMachineLabour.totalFee) ? bill.feesIndex.adjustMachineLabour.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMZCF': function () {
|
|
'JSCSXMZCF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.mainMaterial.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.mainMaterial) && cbTools.isDef(bill.feesIndex.mainMaterial.totalFee) ? bill.feesIndex.mainMaterial.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMSBF': function () {
|
|
'JSCSXMSBF': function () {
|
|
- return 0;
|
|
|
|
|
|
+ let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
|
|
|
|
+ if(cbTools.isUnDef(bill)) return 0;
|
|
|
|
+ if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.equipment) && cbTools.isDef(bill.feesIndex.equipment.totalFee) ? bill.feesIndex.equipment.totalFee : 0;
|
|
},
|
|
},
|
|
'JSCSXMWJJCLF': function () {
|
|
'JSCSXMWJJCLF': function () {
|
|
- return 0;
|
|
|
|
|
|
+ return (this['JSCSXMZCF']() + this['JSCSXMSBF']()).toDecimal(decimalObj.bills.totalPrice);
|
|
},
|
|
},
|
|
'JSCSXMRGGR': function () {
|
|
'JSCSXMRGGR': function () {
|
|
return 0;
|
|
return 0;
|
|
@@ -372,19 +375,19 @@ let baseFigureTemplate = {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.OTHER]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.OTHER]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.common.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common.totalFee) ? bill.feesIndex.common.totalFee : 0;
|
|
},
|
|
},
|
|
'GF': function () {
|
|
'GF': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CHARGE]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.CHARGE]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.common.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common.totalFee) ? bill.feesIndex.common.totalFee : 0;
|
|
},
|
|
},
|
|
'SJ': function () {
|
|
'SJ': function () {
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.TAX]['bill'];
|
|
let bill = calcBase.fixedBills[calcBase.fixedFlag.TAX]['bill'];
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill)) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
|
|
- return bill.feesIndex.common.totalFee || 0;
|
|
|
|
|
|
+ return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common.totalFee) ? bill.feesIndex.common.totalFee : 0;
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
@@ -435,12 +438,23 @@ let cbAnalyzer = {
|
|
},
|
|
},
|
|
//输入合法性
|
|
//输入合法性
|
|
inputLegal: function (exp) {
|
|
inputLegal: function (exp) {
|
|
- let ilegalRex = /[^0-9,\u4e00-\u9fa5,\+,\-,\/,\*,\(,\),.]/g;
|
|
|
|
|
|
+ let ilegalRex = /[^0-9,\u4e00-\u9fa5,\+,\-,\/,\*,\(,\),.,{,},F]/g;
|
|
return !ilegalRex.test(exp);
|
|
return !ilegalRex.test(exp);
|
|
},
|
|
},
|
|
//基数合法性、存在性
|
|
//基数合法性、存在性
|
|
baseLegal: function (baseFigures, exp) {
|
|
baseLegal: function (baseFigures, exp) {
|
|
|
|
+ //保证中文表达式在{}里
|
|
|
|
+ let cnExps = cbParser.getCN(exp);
|
|
let expFigures = cbParser.getFigure(exp);
|
|
let expFigures = cbParser.getFigure(exp);
|
|
|
|
+ if(cnExps.length !== expFigures.length){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ for(let i = 0, len = cnExps.length; i < len; i++){
|
|
|
|
+ if(cnExps[i] !== expFigures[i]){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //基数存在性
|
|
for(let i = 0, len = expFigures.length; i < len; i++){
|
|
for(let i = 0, len = expFigures.length; i < len; i++){
|
|
if(cbTools.isUnDef(baseFigures[expFigures[i]])){
|
|
if(cbTools.isUnDef(baseFigures[expFigures[i]])){
|
|
return false;
|
|
return false;
|
|
@@ -448,29 +462,56 @@ let cbAnalyzer = {
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
},
|
|
},
|
|
|
|
+ //行引用合法性、存在性
|
|
|
|
+ fLegal: function (items, exp) {
|
|
|
|
+ //提取行引用
|
|
|
|
+ let fArr = cbParser.getFArr(exp);
|
|
|
|
+ //提取行数
|
|
|
|
+ let rArr = cbParser.getRArr(fArr);
|
|
|
|
+ //判断合法性和存在性
|
|
|
|
+ for(let i = 0, len = rArr.length; i < len; i++){
|
|
|
|
+ let idx = rArr[i] - 1;
|
|
|
|
+ if(cbTools.isUnDef(cbTools.getBillByRow(items, idx))){
|
|
|
|
+ calcBase.errMsg = '行引用不合法';
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ },
|
|
//循环计算
|
|
//循环计算
|
|
cycleCalc: function (node, baseFigures, exp) {
|
|
cycleCalc: function (node, baseFigures, exp) {
|
|
let stack = [];
|
|
let stack = [];
|
|
if(node.sourceType !== calcBase.project.Bills.getSourceType()){
|
|
if(node.sourceType !== calcBase.project.Bills.getSourceType()){
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- let sbillID = cbTools.getBaseBill(node).data.ID;
|
|
|
|
- let expFigures = cbParser.getFigure(exp);
|
|
|
|
- for(let i = 0, len = expFigures.length; i < len; i++){
|
|
|
|
- let figure = expFigures[i];
|
|
|
|
- if(cbTools.isDef(baseFigures[figure])){
|
|
|
|
- let bill = baseFigures[figure]['fixedBill']['bill'];
|
|
|
|
- if(checkStack(getRefStack([bill.ID]), sbillID)){
|
|
|
|
- console.log('循环计算');
|
|
|
|
- calcBase.errMsg = '表达式出现循环计算';
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
|
|
+ //用于判断的起始清单ID
|
|
|
|
+ let sIDs = cbTools.getNodeIDs(Array.from(new Set([cbTools.getBaseBill(node)].concat(cbTools.getParents(node)))));
|
|
|
|
+ let figureF = cbParser.getFigureF(cbParser.getFigure(exp), cbParser.getRArr(cbParser.getFArr(exp)));
|
|
|
|
+ for(let i = 0, len = figureF.length; i < len; i++){
|
|
|
|
+ let figure = figureF[i];
|
|
|
|
+ let bill = null;
|
|
|
|
+ if(figure.type === 'base' && cbTools.isDef(baseFigures[figure.value])){
|
|
|
|
+ bill = baseFigures[figure.value]['fixedBill']['bill'];
|
|
|
|
+ }
|
|
|
|
+ else if(figure.type === 'row'){
|
|
|
|
+ let tempBill = cbTools.getBillByRow(calcBase.project.mainTree.items, figure.value - 1);
|
|
|
|
+ bill = cbTools.isDef(tempBill) ? tempBill.data : null;
|
|
|
|
+ }
|
|
|
|
+ if(cbTools.isDef(bill) && checkStack(getRefStack([bill.ID]), sIDs)){
|
|
|
|
+ console.log('循环计算');
|
|
|
|
+ calcBase.errMsg = '表达式出现循环计算';
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
return false;
|
|
- function checkStack(stack, startBillID){
|
|
|
|
|
|
+ function checkStack(stack, sIDs){
|
|
//引用栈发现了初始引用
|
|
//引用栈发现了初始引用
|
|
- return stack.indexOf(startBillID) !== -1;
|
|
|
|
|
|
+ for(let i = 0, len = sIDs.length; i < len; i++){
|
|
|
|
+ if(stack.indexOf(sIDs[i]) !== -1){
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
function getRefStack(billIDs){
|
|
function getRefStack(billIDs){
|
|
stack = Array.from(new Set(stack.concat(billIDs)));
|
|
stack = Array.from(new Set(stack.concat(billIDs)));
|
|
@@ -484,23 +525,27 @@ let cbAnalyzer = {
|
|
return stack;
|
|
return stack;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- //四则运算合法性,前端控制不允许重复出现运算符,这里主要判断()的使用问题,这里再判断一次
|
|
|
|
- arithmeticLeagl: function (exp) {
|
|
|
|
|
|
+ //四则运算合法性,前端控制不允许重复出现运算符,这里主要判断()的使用问题,这里再判断一次,控制行引用只能F
|
|
|
|
+ arithmeticLegal: function (exp) {
|
|
let ilegalRex = /[\+,\-,\*,\/]{2}/g;
|
|
let ilegalRex = /[\+,\-,\*,\/]{2}/g;
|
|
- return !ilegalRex.test(exp);
|
|
|
|
|
|
+ let rex2 = /[{]{2}/g;
|
|
|
|
+ let rex3 = /[}]{2}/g;
|
|
|
|
+ let rex4 = /[F]{2}/g
|
|
|
|
+ return !ilegalRex.test(exp) && !rex2.test(exp) && !rex3.test(exp) && !rex4.test(exp);
|
|
},
|
|
},
|
|
//
|
|
//
|
|
legalExp: function (node) {
|
|
legalExp: function (node) {
|
|
let exp = this.standar(node.data.userCalcBase);
|
|
let exp = this.standar(node.data.userCalcBase);
|
|
if(this.inputLegal(exp)){
|
|
if(this.inputLegal(exp)){
|
|
if(this.baseLegal(cbTools.getFigure(node), exp)){
|
|
if(this.baseLegal(cbTools.getFigure(node), exp)){
|
|
- if(!this.cycleCalc(node, cbTools.getFigure(node), exp)){
|
|
|
|
- if(this.arithmeticLeagl(exp)){
|
|
|
|
- return exp;
|
|
|
|
|
|
+ if(this.fLegal(calcBase.project.mainTree.items, exp)){
|
|
|
|
+ if(!this.cycleCalc(node, cbTools.getFigure(node), exp)){
|
|
|
|
+ if(this.arithmeticLegal(exp)){
|
|
|
|
+ return exp;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return null;
|
|
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
@@ -508,8 +553,24 @@ let cbAnalyzer = {
|
|
|
|
|
|
//输入式转换器
|
|
//输入式转换器
|
|
let cbParser = {
|
|
let cbParser = {
|
|
- //获取表达式中的基数
|
|
|
|
- getFigure: function(expr){
|
|
|
|
|
|
+ //获取行引用 eg: F10
|
|
|
|
+ getFArr: function (exp) {
|
|
|
|
+ let fRex = /F\d+/g;
|
|
|
|
+ let fArr = exp.match(fRex);
|
|
|
|
+ return cbTools.isDef(fArr) ? fArr : [];
|
|
|
|
+ },
|
|
|
|
+ //获取行 eg: F10 10
|
|
|
|
+ getRArr: function (fArr) {
|
|
|
|
+ let rRex = /\d+/g;
|
|
|
|
+ let tempArr = [];
|
|
|
|
+ for(let i = 0, len = fArr.length; i < len; i++){
|
|
|
|
+ tempArr = tempArr.concat(fArr[i].match(rRex));
|
|
|
|
+ }
|
|
|
|
+ let rArr = Array.from(new Set(tempArr));
|
|
|
|
+ return rArr;
|
|
|
|
+ },
|
|
|
|
+ //获取表达式中的中文式,没有{}需求时
|
|
|
|
+ getCN: function(expr){
|
|
let rst = [];
|
|
let rst = [];
|
|
let cnRex = /[^\u4e00-\u9fa5]/;
|
|
let cnRex = /[^\u4e00-\u9fa5]/;
|
|
let temp = expr.split(cnRex);
|
|
let temp = expr.split(cnRex);
|
|
@@ -520,12 +581,42 @@ let cbParser = {
|
|
}
|
|
}
|
|
return rst;
|
|
return rst;
|
|
},
|
|
},
|
|
|
|
+ //获取表达式中的基数
|
|
|
|
+ getFigure: function(expr){
|
|
|
|
+ let rst = [];
|
|
|
|
+ let rex = /\{([^}]*)\}/g;
|
|
|
|
+ let temp = expr.match(rex);
|
|
|
|
+ if(cbTools.isDef(temp)){
|
|
|
|
+ for(let i = 0, len = temp.length; i < len; i++){
|
|
|
|
+ rst.push(temp[i].replace(/[{,}]/g, ''));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+ },
|
|
|
|
+ //获取表达式中的基数和行
|
|
|
|
+ getFigureF: function (figures, rArr) {
|
|
|
|
+ let rst = [];
|
|
|
|
+ for(let i = 0, len = figures.length; i < len; i++){
|
|
|
|
+ let obj = Object.create(null);
|
|
|
|
+ obj.type = 'base';
|
|
|
|
+ obj.value = figures[i];
|
|
|
|
+ rst.push(obj);
|
|
|
|
+ }
|
|
|
|
+ for(let i = 0, len = rArr.length; i < len; i++){
|
|
|
|
+ let obj = Object.create(null);
|
|
|
|
+ obj.type = 'row';
|
|
|
|
+ obj.value = rArr[i];
|
|
|
|
+ rst.push(obj);
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+ },
|
|
|
|
|
|
//将表达式转换为可编译的表达式
|
|
//将表达式转换为可编译的表达式
|
|
toCompileExpr: function(v){
|
|
toCompileExpr: function(v){
|
|
if(v === ''){
|
|
if(v === ''){
|
|
return '$CBC.base(\'NONE\')';
|
|
return '$CBC.base(\'NONE\')';
|
|
}
|
|
}
|
|
|
|
+ //基数
|
|
let strs = this.getFigure(v);
|
|
let strs = this.getFigure(v);
|
|
let exps = [];
|
|
let exps = [];
|
|
for(let i = 0, len = strs.length; i < len; i++){
|
|
for(let i = 0, len = strs.length; i < len; i++){
|
|
@@ -533,10 +624,23 @@ let cbParser = {
|
|
exp.orgExp = strs[i];
|
|
exp.orgExp = strs[i];
|
|
exps.push(exp);
|
|
exps.push(exp);
|
|
}
|
|
}
|
|
|
|
+ //去{}
|
|
|
|
+ v = v.replace(/[{, }]/g, '');
|
|
for(let i = 0, len = exps.length;i < len; i++){
|
|
for(let i = 0, len = exps.length;i < len; i++){
|
|
- exps[i].compileExp = '$CBC.base(\'' + exps[i].orgExp;
|
|
|
|
- exps[i].compileExp = exps[i].compileExp + '\')';
|
|
|
|
- v = v.replace(new RegExp(exps[i].orgExp,"g"), exps[i].compileExp);
|
|
|
|
|
|
+ exps[i].compileExp = '$CBC.base(\'' + exps[i].orgExp + '\')';
|
|
|
|
+ v = v.replace(new RegExp(exps[i].orgExp, 'g'), exps[i].compileExp);
|
|
|
|
+ }
|
|
|
|
+ //行引用
|
|
|
|
+ let fArr = this.getFArr(v);
|
|
|
|
+ let fExps = [];
|
|
|
|
+ for(let i = 0, len = fArr.length; i < len; i++){
|
|
|
|
+ let fExp = Object.create(null);
|
|
|
|
+ fExp.orgExp = fArr[i];
|
|
|
|
+ fExps.push(fExp);
|
|
|
|
+ }
|
|
|
|
+ for(let i = 0, len = fExps.length; i < len; i++){
|
|
|
|
+ fExps[i].compileExp = '$CBC.f(\'' + fExps[i].orgExp + '\')';
|
|
|
|
+ v = v.replace(new RegExp(fExps[i].orgExp, 'g'), fExps[i].compileExp);
|
|
}
|
|
}
|
|
return v;
|
|
return v;
|
|
}
|
|
}
|
|
@@ -550,6 +654,14 @@ let cbCalctor = {
|
|
}
|
|
}
|
|
return baseFigureTemplate[calcBase.baseFigures[figure]['base']]();
|
|
return baseFigureTemplate[calcBase.baseFigures[figure]['base']]();
|
|
},
|
|
},
|
|
|
|
+ //行引用
|
|
|
|
+ f: function (fExp) {
|
|
|
|
+ let r = cbParser.getRArr([fExp]);
|
|
|
|
+ return cbTools.isDef(calcBase.project.mainTree.items[r[0] - 1]['data']['feesIndex']) &&
|
|
|
|
+ cbTools.isDef(calcBase.project.mainTree.items[r[0] - 1]['data']['feesIndex']['common'])&&
|
|
|
|
+ cbTools.isDef(calcBase.project.mainTree.items[r[0] - 1]['data']['feesIndex']['common']['totalFee']) ?
|
|
|
|
+ calcBase.project.mainTree.items[r[0] - 1]['data']['feesIndex']['common']['totalFee'] : 0;
|
|
|
|
+ },
|
|
//计算
|
|
//计算
|
|
exec: function () {
|
|
exec: function () {
|
|
|
|
|
|
@@ -586,7 +698,7 @@ let calcBase = {
|
|
getBaseBill: function (node) {
|
|
getBaseBill: function (node) {
|
|
return cbTools.getBaseBill(node);
|
|
return cbTools.getBaseBill(node);
|
|
},
|
|
},
|
|
- calculate: function (node) {
|
|
|
|
|
|
+ calculate: function (node, reCalc = null) {
|
|
let me = calcBase,
|
|
let me = calcBase,
|
|
$CBA = cbAnalyzer,
|
|
$CBA = cbAnalyzer,
|
|
$CBP = cbParser,
|
|
$CBP = cbParser,
|
|
@@ -595,14 +707,16 @@ let calcBase = {
|
|
me.success = false;
|
|
me.success = false;
|
|
me.errMsg = '表达式不正确';
|
|
me.errMsg = '表达式不正确';
|
|
//分析输入式合法性
|
|
//分析输入式合法性
|
|
- let exp = $CBA.legalExp(node);
|
|
|
|
|
|
+ let exp = reCalc
|
|
|
|
+ ? cbTools.isDef(node.data.calcBase)
|
|
|
|
+ ? node.data.calcBase
|
|
|
|
+ : ''
|
|
|
|
+ : $CBA.legalExp(node);
|
|
if(!cbTools.isDef(exp)){
|
|
if(!cbTools.isDef(exp)){
|
|
throw '表达式不正确';
|
|
throw '表达式不正确';
|
|
}
|
|
}
|
|
-
|
|
|
|
//输入式转换表达式
|
|
//输入式转换表达式
|
|
let compileExp = $CBP.toCompileExpr(exp);
|
|
let compileExp = $CBP.toCompileExpr(exp);
|
|
-
|
|
|
|
//计算
|
|
//计算
|
|
let calcBaseValue = eval(compileExp);
|
|
let calcBaseValue = eval(compileExp);
|
|
if(!cbTools.isNum(calcBaseValue)){
|
|
if(!cbTools.isNum(calcBaseValue)){
|
|
@@ -613,8 +727,6 @@ let calcBase = {
|
|
me.success = true;
|
|
me.success = true;
|
|
node.data.calcBase = exp;
|
|
node.data.calcBase = exp;
|
|
node.data.calcBaseValue = parseFloat(calcBaseValue).toDecimal(decimalObj.decimal('totalPrice', node));
|
|
node.data.calcBaseValue = parseFloat(calcBaseValue).toDecimal(decimalObj.decimal('totalPrice', node));
|
|
- /* me.project.calcProgram.calculate(node);
|
|
|
|
- me.project.calcProgram.saveNode(node);*/
|
|
|
|
}
|
|
}
|
|
catch (err){
|
|
catch (err){
|
|
alert(me.errMsg);
|
|
alert(me.errMsg);
|