|
@@ -81,7 +81,8 @@ INTERFACE_EXPORT = (() => {
|
|
|
|
|
|
|
|
const feeLibNoMap = {
|
|
const feeLibNoMap = {
|
|
|
'eba0e7c0-cfe6-11ea-ba15-739be477d1fe': 'GYSFL-000000-2018-86',
|
|
'eba0e7c0-cfe6-11ea-ba15-739be477d1fe': 'GYSFL-000000-2018-86',
|
|
|
- '451d3180-e02e-11ea-8056-1514dfc2f39e': 'GYSFL-340000-2019-210'
|
|
|
|
|
|
|
+ '451d3180-e02e-11ea-8056-1514dfc2f39e': 'GYSFL-340000-2019-210',
|
|
|
|
|
+ '32923ff0-e912-11ea-8b20-d93bc370e960': 'GYSFL-440000-2019-544'
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const FixedCostMap = {
|
|
const FixedCostMap = {
|
|
@@ -107,12 +108,19 @@ INTERFACE_EXPORT = (() => {
|
|
|
"清单 第100章 总则": true,
|
|
"清单 第100章 总则": true,
|
|
|
"清单 第200章 路基": true,
|
|
"清单 第200章 路基": true,
|
|
|
"清单 第300章 路面": true,
|
|
"清单 第300章 路面": true,
|
|
|
- "第400章 桥梁、涵洞工程": true,
|
|
|
|
|
- "第500章 隧道": true,
|
|
|
|
|
- "第600章 交通安全设施": true,
|
|
|
|
|
- "第700章 绿化及环境保护设施": true,
|
|
|
|
|
- "第800章 机电工程": true,
|
|
|
|
|
- "第900章 附属区房建工程":true
|
|
|
|
|
|
|
+ "清单 第400章 桥梁、涵洞工程": true,
|
|
|
|
|
+ "清单 第500章 隧道": true,
|
|
|
|
|
+ "清单 第600章 交通安全设施": true,
|
|
|
|
|
+ "清单 第700章 绿化及环境保护设施": true,
|
|
|
|
|
+ "清单 第800章 机电工程": true,
|
|
|
|
|
+ "清单 第900章 附属区房建工程":true
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const ratioCodeMap = {
|
|
|
|
|
+ "01ZJF":"0",
|
|
|
|
|
+ "02JXF":"1",
|
|
|
|
|
+ "03WHF":"2",
|
|
|
|
|
+ "04ACFZF":"3"
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function getBasePrice(projectGLJID, tenderProject) {
|
|
function getBasePrice(projectGLJID, tenderProject) {
|
|
@@ -136,6 +144,57 @@ INTERFACE_EXPORT = (() => {
|
|
|
return rate
|
|
return rate
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ function billNameChecking(bNode,projectName,fixedFlag) {
|
|
|
|
|
+ let data = bNode.data;
|
|
|
|
|
+ let fail = null;
|
|
|
|
|
+ let pass = true;
|
|
|
|
|
+ if (data.flagsIndex && data.flagsIndex.fixed) {
|
|
|
|
|
+ let flag = data.flagsIndex.fixed.flag;
|
|
|
|
|
+ switch (flag) {
|
|
|
|
|
+ case fixedFlag.ONE_SEVEN_BILLS:
|
|
|
|
|
+ pass = data.name == "第100章至900章清单";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.PROVISIONAL_TOTAL:
|
|
|
|
|
+ pass = data.name == "已包含在清单合计中的材料、工程设备、专业工程暂估价合计";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.BILLS_TOTAL_WT_PROV:
|
|
|
|
|
+ pass = data.name == "清单合计减去材料、工程设备、专业工程暂估价合计";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.DAYWORK_LABOR:
|
|
|
|
|
+ pass = data.name == "计日工合计";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.LABOUR_SERVICE:
|
|
|
|
|
+ pass = data.name == "劳务";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.MATERIAL:
|
|
|
|
|
+ pass = data.name == "材料";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.CONSTRUCTION_MACHINE:
|
|
|
|
|
+ pass = data.name == "机械";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.PROVISIONAL:
|
|
|
|
|
+ pass = data.name == "暂列金额(不含计日工总额)";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.TOTAL_COST:
|
|
|
|
|
+ pass = data.name == "投标报价";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case fixedFlag.ONE_HUNDRED_BILLS:
|
|
|
|
|
+ pass = data.name == "清单 第100章 总则";
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (bNode.parent) {
|
|
|
|
|
+ const pdata = bNode.parent.data;
|
|
|
|
|
+ if (pdata.flagsIndex && pdata.flagsIndex.fixed && pdata.flagsIndex.fixed.flag == fixedFlag.ONE_SEVEN_BILLS) {
|
|
|
|
|
+ if (!sectionNameMap[data.name]) pass = false
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(pass == false)fail = { hint: `清单:"${data.name?data.name:""}",名字不符合规范!`, type: projectName }
|
|
|
|
|
+
|
|
|
|
|
+ return fail;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
*
|
|
*
|
|
|
* @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
|
|
* @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
|
|
@@ -146,6 +205,9 @@ INTERFACE_EXPORT = (() => {
|
|
|
*/
|
|
*/
|
|
|
async function entry(areaKey, exportKind, projectData, tenderDetailMap) {
|
|
async function entry(areaKey, exportKind, projectData, tenderDetailMap) {
|
|
|
const {
|
|
const {
|
|
|
|
|
+ CONFIG: {
|
|
|
|
|
+ TYPE
|
|
|
|
|
+ },
|
|
|
UTIL,
|
|
UTIL,
|
|
|
Element
|
|
Element
|
|
|
} = INTERFACE_EXPORT_BASE;
|
|
} = INTERFACE_EXPORT_BASE;
|
|
@@ -159,9 +221,9 @@ INTERFACE_EXPORT = (() => {
|
|
|
fixedFlag,
|
|
fixedFlag,
|
|
|
} = window.commonConstants;
|
|
} = window.commonConstants;
|
|
|
let cprjType = {
|
|
let cprjType = {
|
|
|
- 1: "ZBKZJ", // 招标
|
|
|
|
|
|
|
+ 1: "GCLQD", // 招标
|
|
|
2: "TBBJ", // 投标
|
|
2: "TBBJ", // 投标
|
|
|
- 3: "GCLQD", // 控制价
|
|
|
|
|
|
|
+ 3: "ZBKZJ", // 控制价
|
|
|
};
|
|
};
|
|
|
const isBidInvitation = exportKind === BID_INVITATION; // 是否是招标
|
|
const isBidInvitation = exportKind === BID_INVITATION; // 是否是招标
|
|
|
const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
|
|
const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
|
|
@@ -188,6 +250,10 @@ INTERFACE_EXPORT = (() => {
|
|
|
}
|
|
}
|
|
|
// 项目基本信息
|
|
// 项目基本信息
|
|
|
function SystemInfo(projectData) {
|
|
function SystemInfo(projectData) {
|
|
|
|
|
+ let baseInfo = _.find(projectData.property.basicInformation, {
|
|
|
|
|
+ dispName: "基本信息",
|
|
|
|
|
+ });
|
|
|
|
|
+ let makeData = _.find(baseInfo.items, { "key": "makeDate" });
|
|
|
let hardID = UTIL.generateHardwareId();
|
|
let hardID = UTIL.generateHardwareId();
|
|
|
let [cpuId, diskId, macId] = hardID.split(";");
|
|
let [cpuId, diskId, macId] = hardID.split(";");
|
|
|
const attrs = [{
|
|
const attrs = [{
|
|
@@ -212,7 +278,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "MakeDate",
|
|
name: "MakeDate",
|
|
|
- value: UTIL.getNowFormatTime(),
|
|
|
|
|
|
|
+ value: makeData?makeData.value:"",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Key1",
|
|
name: "Key1",
|
|
@@ -230,7 +296,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
if (isBidSubmission)
|
|
if (isBidSubmission)
|
|
|
attrs.splice(6, 0, {
|
|
attrs.splice(6, 0, {
|
|
|
name: "BidderVer",
|
|
name: "BidderVer",
|
|
|
- value: UTIL.getNowFormatTime(),
|
|
|
|
|
|
|
+ value: UTIL.getNowFormatTime(true),
|
|
|
});
|
|
});
|
|
|
Element.call(this, "SystemInfo", attrs);
|
|
Element.call(this, "SystemInfo", attrs);
|
|
|
}
|
|
}
|
|
@@ -397,7 +463,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
],
|
|
],
|
|
|
children: [],
|
|
children: [],
|
|
|
};
|
|
};
|
|
|
- if (isBidSubmission) { //导出到招标、招标控制价文件中,不输出这一部分。
|
|
|
|
|
|
|
+ if (isBidSubmission || isControl) { //导出到招标文件中,不输出这一部分。
|
|
|
let elecDatas = electrovalenceObj.getElectrovalenceDatas(null, pgljData.com_electrovalence, pgljData.gljList);
|
|
let elecDatas = electrovalenceObj.getElectrovalenceDatas(null, pgljData.com_electrovalence, pgljData.gljList);
|
|
|
electrovalenceObj.calcPertElectrovalenceMarketPrice(elecDatas);
|
|
electrovalenceObj.calcPertElectrovalenceMarketPrice(elecDatas);
|
|
|
for (let e of elecDatas) {
|
|
for (let e of elecDatas) {
|
|
@@ -425,7 +491,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
|
|
|
|
|
this.children.push(Param);
|
|
this.children.push(Param);
|
|
|
|
|
|
|
|
- function MP(g) {
|
|
|
|
|
|
|
+ function Mp(g) {
|
|
|
const attrs = [{
|
|
const attrs = [{
|
|
|
name: "Code",
|
|
name: "Code",
|
|
|
value: g.code,
|
|
value: g.code,
|
|
@@ -443,7 +509,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
value: g.unit,
|
|
value: g.unit,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- name: "BugetPrice",
|
|
|
|
|
|
|
+ name: "BudgetPrice",
|
|
|
value: g.priceInfo.tenderPrice,
|
|
value: g.priceInfo.tenderPrice,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -455,7 +521,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
value: g.unit_price.is_add,
|
|
value: g.unit_price.is_add,
|
|
|
},
|
|
},
|
|
|
];
|
|
];
|
|
|
- Element.call(this, "MP", attrs);
|
|
|
|
|
|
|
+ Element.call(this, "Mp", attrs);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function Material(g) {
|
|
function Material(g) {
|
|
@@ -476,7 +542,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
value: g.unit,
|
|
value: g.unit,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- name: "BugetPrice",
|
|
|
|
|
|
|
+ name: "BudgetPrice",
|
|
|
value: g.priceInfo.tenderPrice,
|
|
value: g.priceInfo.tenderPrice,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -647,7 +713,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
value: g.unit,
|
|
value: g.unit,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- name: "BugetPrice",
|
|
|
|
|
|
|
+ name: "BudgetPrice",
|
|
|
value: g.priceInfo.tenderPrice,
|
|
value: g.priceInfo.tenderPrice,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -725,7 +791,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
function FixedCostItem(item) {
|
|
function FixedCostItem(item) {
|
|
|
const attrs = [{
|
|
const attrs = [{
|
|
|
name: "FixedCostNo",
|
|
name: "FixedCostNo",
|
|
|
- value: item.code,
|
|
|
|
|
|
|
+ value: ratioCodeMap[item.code],
|
|
|
},{
|
|
},{
|
|
|
name: "Sum",
|
|
name: "Sum",
|
|
|
value: item.consumption,
|
|
value: item.consumption,
|
|
@@ -740,13 +806,13 @@ INTERFACE_EXPORT = (() => {
|
|
|
let Mechs = new emptyElement("Mechs");
|
|
let Mechs = new emptyElement("Mechs");
|
|
|
let gljKeyMap = {};
|
|
let gljKeyMap = {};
|
|
|
let temMechs = [];
|
|
let temMechs = [];
|
|
|
- if (isBidSubmission) { //导出到招标、招标控制价文件中,不输出这一部分。
|
|
|
|
|
|
|
+ if (isBidSubmission || isControl) { //导出到招标文件中,不输出这一部分。
|
|
|
for (let g of pgljData.gljList) {
|
|
for (let g of pgljData.gljList) {
|
|
|
let type = g.type + "";
|
|
let type = g.type + "";
|
|
|
gljKeyMap[gljUtil.getIndex(g)] = g;
|
|
gljKeyMap[gljUtil.getIndex(g)] = g;
|
|
|
type = type.charAt(0);
|
|
type = type.charAt(0);
|
|
|
if (type == "1") {
|
|
if (type == "1") {
|
|
|
- Mps.children.push(new MP(g));
|
|
|
|
|
|
|
+ Mps.children.push(new Mp(g));
|
|
|
} else if (type == "2" || type == 5) {
|
|
} else if (type == "2" || type == 5) {
|
|
|
Materials.children.push(new Material(g));
|
|
Materials.children.push(new Material(g));
|
|
|
} else if (type == "3") {
|
|
} else if (type == "3") {
|
|
@@ -768,9 +834,11 @@ INTERFACE_EXPORT = (() => {
|
|
|
let totalItem = null;
|
|
let totalItem = null;
|
|
|
let proItem = null; //暂列金额项
|
|
let proItem = null; //暂列金额项
|
|
|
let safeItem = null;
|
|
let safeItem = null;
|
|
|
|
|
+ let oneToSevenItem = null;
|
|
|
for (let b of bills) {
|
|
for (let b of bills) {
|
|
|
if (b.flagsIndex && b.flagsIndex.fixed && b.flagsIndex.fixed.flag == fixedFlag.TOTAL_COST) totalItem = b;
|
|
if (b.flagsIndex && b.flagsIndex.fixed && b.flagsIndex.fixed.flag == fixedFlag.TOTAL_COST) totalItem = b;
|
|
|
if (b.flagsIndex && b.flagsIndex.fixed && b.flagsIndex.fixed.flag == fixedFlag.PROVISIONAL) proItem = b;
|
|
if (b.flagsIndex && b.flagsIndex.fixed && b.flagsIndex.fixed.flag == fixedFlag.PROVISIONAL) proItem = b;
|
|
|
|
|
+ if (b.flagsIndex && b.flagsIndex.fixed && b.flagsIndex.fixed.flag == fixedFlag.ONE_SEVEN_BILLS) oneToSevenItem = b;
|
|
|
if(b.code == "102-3" && b.name=="安全生产费") safeItem = b;
|
|
if(b.code == "102-3" && b.name=="安全生产费") safeItem = b;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -787,7 +855,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
//输出招标文件时,取0
|
|
//输出招标文件时,取0
|
|
|
if (isBidInvitation) attrs[1].value = 0;
|
|
if (isBidInvitation) attrs[1].value = 0;
|
|
|
Element.call(this, "EprjInfo", attrs);
|
|
Element.call(this, "EprjInfo", attrs);
|
|
|
- this.children.push(new SummaryOfCost(totalItem, proItem,safeItem,feature));
|
|
|
|
|
|
|
+ this.children.push(new SummaryOfCost(totalItem, proItem,safeItem,oneToSevenItem,feature));
|
|
|
this.children.push(new MakeInfo(tenderProject));
|
|
this.children.push(new MakeInfo(tenderProject));
|
|
|
this.children.push(new Params(tenderProject));
|
|
this.children.push(new Params(tenderProject));
|
|
|
this.children.push(new getBillsItems(tenderProject));
|
|
this.children.push(new getBillsItems(tenderProject));
|
|
@@ -827,11 +895,13 @@ INTERFACE_EXPORT = (() => {
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Price",
|
|
name: "Price",
|
|
|
- value: b.tenderPrice
|
|
|
|
|
|
|
+ value: b.tenderPrice,
|
|
|
|
|
+ type: TYPE.DECIMAL
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "LimitedPrice",
|
|
name: "LimitedPrice",
|
|
|
- value: b.tenderPrice
|
|
|
|
|
|
|
+ value: b.tenderPrice,
|
|
|
|
|
+ type: TYPE.DECIMAL
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Quantity",
|
|
name: "Quantity",
|
|
@@ -846,7 +916,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
value: b.remark
|
|
value: b.remark
|
|
|
}
|
|
}
|
|
|
];
|
|
];
|
|
|
- if (isBidSubmission) {
|
|
|
|
|
|
|
+ if (isBidSubmission || isControl) {
|
|
|
attrs[7].value = b.quantity;
|
|
attrs[7].value = b.quantity;
|
|
|
attrs[8].value = b.totalPrice;
|
|
attrs[8].value = b.totalPrice;
|
|
|
}
|
|
}
|
|
@@ -897,6 +967,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
let items = new emptyElement("Items");
|
|
let items = new emptyElement("Items");
|
|
|
let rootNodes = tenderProject.mainTree.roots;
|
|
let rootNodes = tenderProject.mainTree.roots;
|
|
|
for (let r of rootNodes) {
|
|
for (let r of rootNodes) {
|
|
|
|
|
+
|
|
|
setItem(r, -1, items.children);
|
|
setItem(r, -1, items.children);
|
|
|
}
|
|
}
|
|
|
return items;
|
|
return items;
|
|
@@ -928,11 +999,33 @@ INTERFACE_EXPORT = (() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ function getItemType(node) {
|
|
|
|
|
+ let Bills = projectObj.project.Bills;
|
|
|
|
|
+ //是100~900章部分、或是计日工部分,叶子清单输出1,父项输出0;
|
|
|
|
|
+ if (Bills.isBelongOneToSeven(node)||Bills.isBelongDayWork(node)) {
|
|
|
|
|
+ if (node.children && node.children.length > 0) {
|
|
|
|
|
+ return node.children[0].sourceType == ModuleNames.ration ? 1 : 0
|
|
|
|
|
+ }
|
|
|
|
|
+ return 1 //叶子清单输出1
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return 0;
|
|
|
|
|
+ /* //非100~900章部分,
|
|
|
|
|
+ // 是暂列金额,判断暂列金额的金额等于0,则输出为0;暂列金额的金额不等于0,则输出为1;
|
|
|
|
|
+ if (node.data.name && node.data.name.indexOf("暂列金额") != -1) {
|
|
|
|
|
+ let sum = node.data.feesIndex && node.data.feesIndex.common ? node.data.feesIndex.common.tenderTotalFee : "";
|
|
|
|
|
+ return gljUtil.isNotEmpty(sum) ? 1 : 0
|
|
|
|
|
+ } else { //非暂列金额,则判断清单的工程量是否等于0,等于0,则输出0;不等于0,则输出1
|
|
|
|
|
+ return gljUtil.isNotEmpty(node.data.quantity) ? 1 : 0
|
|
|
|
|
+ } */
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
function bill(bNode, level) {
|
|
function bill(bNode, level) {
|
|
|
let data = bNode.data;
|
|
let data = bNode.data;
|
|
|
let CostKind = 3;
|
|
let CostKind = 3;
|
|
|
- if (data.name.indexOf("安全生产费") != -1) CostKind = 1;
|
|
|
|
|
- if (data.name.indexOf("暂列金额") != -1) CostKind = 2;
|
|
|
|
|
|
|
+ if (data.name && data.name.indexOf("安全生产费") != -1) CostKind = 1;
|
|
|
|
|
+ if (data.name && data.name.indexOf("暂列金额") != -1) CostKind = 2;
|
|
|
//1 = 工程量×综合单价;2 = 计算基数×费率;3 = 工程量×单价。
|
|
//1 = 工程量×综合单价;2 = 计算基数×费率;3 = 工程量×单价。
|
|
|
let CalcType = getCalcType(bNode);
|
|
let CalcType = getCalcType(bNode);
|
|
|
//取暂估价类型。读取造价书界面的专项暂定列。0=材料暂估价,1=工程设备暂估价,2=专业工程暂估价,没有选的输出为空。
|
|
//取暂估价类型。读取造价书界面的专项暂定列。0=材料暂估价,1=工程设备暂估价,2=专业工程暂估价,没有选的输出为空。
|
|
@@ -950,7 +1043,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
if (data.quantityCoe["material"]) MaterialRatio = data.quantityCoe["material"];
|
|
if (data.quantityCoe["material"]) MaterialRatio = data.quantityCoe["material"];
|
|
|
if (data.quantityCoe["machine"]) MechRatio = data.quantityCoe["machine"];
|
|
if (data.quantityCoe["machine"]) MechRatio = data.quantityCoe["machine"];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ let fail = billNameChecking(bNode,tenderProject.projectInfo.name,fixedFlag)
|
|
|
//fail: { hint: '错误提示', type: '提示所属(基本就是单位工程名称)' }
|
|
//fail: { hint: '错误提示', type: '提示所属(基本就是单位工程名称)' }
|
|
|
const attrs = [{
|
|
const attrs = [{
|
|
|
name: "ListCode",
|
|
name: "ListCode",
|
|
@@ -959,6 +1052,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "ListName",
|
|
name: "ListName",
|
|
|
value: data.name,
|
|
value: data.name,
|
|
|
|
|
+ fail:fail
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Unit",
|
|
name: "Unit",
|
|
@@ -967,6 +1061,8 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "Num",
|
|
name: "Num",
|
|
|
value: data.quantity,
|
|
value: data.quantity,
|
|
|
|
|
+ type: TYPE.DECIMAL,
|
|
|
|
|
+ toFix:3
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "QtyFormula",
|
|
name: "QtyFormula",
|
|
@@ -974,7 +1070,9 @@ INTERFACE_EXPORT = (() => {
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Price",
|
|
name: "Price",
|
|
|
- value: 0//data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderUnitFee : "",
|
|
|
|
|
|
|
+ value: 0,//data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderUnitFee : "",
|
|
|
|
|
+ type: TYPE.DECIMAL,
|
|
|
|
|
+ toFix:2
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Rate",
|
|
name: "Rate",
|
|
@@ -982,7 +1080,9 @@ INTERFACE_EXPORT = (() => {
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Sum",
|
|
name: "Sum",
|
|
|
- value: 0//data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderTotalFee : "",
|
|
|
|
|
|
|
+ value: 0,//data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderTotalFee : "",
|
|
|
|
|
+ type: TYPE.DECIMAL,
|
|
|
|
|
+ toFix:2
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ChapterKind",
|
|
name: "ChapterKind",
|
|
@@ -999,6 +1099,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "ProvisionalType",
|
|
name: "ProvisionalType",
|
|
|
value: ProvisionalType,
|
|
value: ProvisionalType,
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "MeterRules",
|
|
name: "MeterRules",
|
|
@@ -1012,7 +1113,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
name: "Remarks",
|
|
name: "Remarks",
|
|
|
value: data.remark,
|
|
value: data.remark,
|
|
|
},
|
|
},
|
|
|
- {
|
|
|
|
|
|
|
+ /* {
|
|
|
name: "MpRatio",
|
|
name: "MpRatio",
|
|
|
value: MpRatio,
|
|
value: MpRatio,
|
|
|
},
|
|
},
|
|
@@ -1031,20 +1132,23 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "AdjustedSums",
|
|
name: "AdjustedSums",
|
|
|
value: data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderTotalFee : "",
|
|
value: data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderTotalFee : "",
|
|
|
- },
|
|
|
|
|
|
|
+ }, */
|
|
|
{
|
|
{
|
|
|
name: "ItemType",
|
|
name: "ItemType",
|
|
|
- value: 1,
|
|
|
|
|
|
|
+ value: getItemType(bNode),
|
|
|
},
|
|
},
|
|
|
- {
|
|
|
|
|
|
|
+ /* {
|
|
|
name: "FomulaCode",
|
|
name: "FomulaCode",
|
|
|
value: ""
|
|
value: ""
|
|
|
- },
|
|
|
|
|
|
|
+ }, */
|
|
|
];
|
|
];
|
|
|
-
|
|
|
|
|
- if (isBidSubmission) {
|
|
|
|
|
|
|
+ //投标、招标控制价时。取单价。
|
|
|
|
|
+ //招标时,如果是“安全生产费”或“暂列金额”,取单价,否则取0。
|
|
|
|
|
+ if (isBidSubmission || isControl || CostKind==1 ||CostKind==2) {
|
|
|
attrs[5].value = data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderUnitFee : "";
|
|
attrs[5].value = data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderUnitFee : "";
|
|
|
attrs[7].value = data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderTotalFee : "";
|
|
attrs[7].value = data.feesIndex && data.feesIndex.common ? data.feesIndex.common.tenderTotalFee : "";
|
|
|
|
|
+ //暂列金额 数量为0的时候,单价输出0
|
|
|
|
|
+ if( CostKind==2 && !gljUtil.isNotEmpty(data.quantity)) attrs[5].value = 0
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Element.call(this, "Item", attrs);
|
|
Element.call(this, "Item", attrs);
|
|
@@ -1053,7 +1157,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
this.children.push(CostStructure(data))
|
|
this.children.push(CostStructure(data))
|
|
|
|
|
|
|
|
function CostComposition(bNode) {
|
|
function CostComposition(bNode) {
|
|
|
- if (isControl || isBidInvitation) return null;
|
|
|
|
|
|
|
+ if (isBidInvitation) return null;
|
|
|
let CostComposition = new emptyElement('CostComposition');
|
|
let CostComposition = new emptyElement('CostComposition');
|
|
|
let Norms = [];
|
|
let Norms = [];
|
|
|
let Costs = [];
|
|
let Costs = [];
|
|
@@ -1088,6 +1192,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "Sum",
|
|
name: "Sum",
|
|
|
value: bills.feesIndex && bills.feesIndex.common ? bills.feesIndex.common.tenderTotalFee : "",
|
|
value: bills.feesIndex && bills.feesIndex.common ? bills.feesIndex.common.tenderTotalFee : "",
|
|
|
|
|
+ type:TYPE.DECIMAL
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Remarks",
|
|
name: "Remarks",
|
|
@@ -1256,7 +1361,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
name: 'Sum',
|
|
name: 'Sum',
|
|
|
value: 0 //fee.tenderTotalFee
|
|
value: 0 //fee.tenderTotalFee
|
|
|
}]
|
|
}]
|
|
|
- if (isBidSubmission && item.feesIndex && item.feesIndex[type]) attrs[1].value = item.feesIndex[type].tenderTotalFee;
|
|
|
|
|
|
|
+ if ((isBidSubmission || isControl) && item.feesIndex && item.feesIndex[type]) attrs[1].value = item.feesIndex[type].tenderTotalFee;
|
|
|
Element.call(this, "CostItem", attrs);
|
|
Element.call(this, "CostItem", attrs);
|
|
|
}
|
|
}
|
|
|
return CostStructure;
|
|
return CostStructure;
|
|
@@ -1300,15 +1405,17 @@ INTERFACE_EXPORT = (() => {
|
|
|
|
|
|
|
|
const attrs = [{
|
|
const attrs = [{
|
|
|
name: "PrjArea",
|
|
name: "PrjArea",
|
|
|
- value: baseMap["location"] ? baseMap["location"].value : "",
|
|
|
|
|
|
|
+ value: baseMap["location"] ? baseMap["location"].value : ""
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "StartPileNo",
|
|
name: "StartPileNo",
|
|
|
value: baseMap["startChainages"] ? baseMap["startChainages"].value : "",
|
|
value: baseMap["startChainages"] ? baseMap["startChainages"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "EndPileNo",
|
|
name: "EndPileNo",
|
|
|
value: baseMap["endChainages"] ? baseMap["endChainages"].value : "",
|
|
value: baseMap["endChainages"] ? baseMap["endChainages"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "BuildType",
|
|
name: "BuildType",
|
|
@@ -1317,59 +1424,72 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "Terrain",
|
|
name: "Terrain",
|
|
|
value: Terrain,
|
|
value: Terrain,
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "RoadGrade",
|
|
name: "RoadGrade",
|
|
|
value: RoadGrade,
|
|
value: RoadGrade,
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "DesignSpeed",
|
|
name: "DesignSpeed",
|
|
|
value: DesignSpeed,
|
|
value: DesignSpeed,
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Structure",
|
|
name: "Structure",
|
|
|
value: Structure,
|
|
value: Structure,
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "SubgradeWidth",
|
|
name: "SubgradeWidth",
|
|
|
value: featrueMap["subgradeWidth"] ? featrueMap["subgradeWidth"].value : "",
|
|
value: featrueMap["subgradeWidth"] ? featrueMap["subgradeWidth"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "RoadLength",
|
|
name: "RoadLength",
|
|
|
value: featrueMap["roadLength"] ? featrueMap["roadLength"].value : "",
|
|
value: featrueMap["roadLength"] ? featrueMap["roadLength"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "BridgeLength",
|
|
name: "BridgeLength",
|
|
|
value: featrueMap["bridgeLength"] ? featrueMap["bridgeLength"].value : "",
|
|
value: featrueMap["bridgeLength"] ? featrueMap["bridgeLength"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "TunnelLength",
|
|
name: "TunnelLength",
|
|
|
value: featrueMap["tunnelLength"] ? featrueMap["tunnelLength"].value : "",
|
|
value: featrueMap["tunnelLength"] ? featrueMap["tunnelLength"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "BriTunRate",
|
|
name: "BriTunRate",
|
|
|
value: featrueMap["briTunRate"] ? featrueMap["briTunRate"].value : "",
|
|
value: featrueMap["briTunRate"] ? featrueMap["briTunRate"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "InterchangeNum",
|
|
name: "InterchangeNum",
|
|
|
value: featrueMap["interchangeNum"] ? featrueMap["interchangeNum"].value : "",
|
|
value: featrueMap["interchangeNum"] ? featrueMap["interchangeNum"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "StubLengths",
|
|
name: "StubLengths",
|
|
|
value: featrueMap["stubLengths"] ? featrueMap["stubLengths"].value : "",
|
|
value: featrueMap["stubLengths"] ? featrueMap["stubLengths"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "LaneLength",
|
|
name: "LaneLength",
|
|
|
value: featrueMap["laneLength"] ? featrueMap["laneLength"].value : "",
|
|
value: featrueMap["laneLength"] ? featrueMap["laneLength"].value : "",
|
|
|
|
|
+ mustHasValue: true
|
|
|
},
|
|
},
|
|
|
];
|
|
];
|
|
|
Element.call(this, "Params", attrs);
|
|
Element.call(this, "Params", attrs);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function SummaryOfCost(totalItem, proItem,safeItem,feature) {
|
|
|
|
|
|
|
+ function SummaryOfCost(totalItem, proItem,safeItem,oneToSevenItem,feature) {
|
|
|
let attrs = [{
|
|
let attrs = [{
|
|
|
name: "TenderSumLimit",
|
|
name: "TenderSumLimit",
|
|
|
value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0,
|
|
value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0,
|
|
|
|
|
+ type: TYPE.DECIMAL
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "BidTotal",
|
|
name: "BidTotal",
|
|
@@ -1377,11 +1497,11 @@ INTERFACE_EXPORT = (() => {
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "BillTotal",
|
|
name: "BillTotal",
|
|
|
- value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0,
|
|
|
|
|
|
|
+ value: oneToSevenItem.feesIndex && oneToSevenItem.feesIndex.common && oneToSevenItem.feesIndex.common.tenderTotalFee ? oneToSevenItem.feesIndex.common.tenderTotalFee : 0,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "CostForHSE",
|
|
name: "CostForHSE",
|
|
|
- value: safeItem&&safeItem.feesIndex && safeItem.feesIndex.common && safeItem.feesIndex.common.tenderTotalFee ? safeItem.feesIndex.common.tenderTotalFee : 0,
|
|
|
|
|
|
|
+ value: safeItem && safeItem.feesIndex && safeItem.feesIndex.common && safeItem.feesIndex.common.tenderTotalFee ? safeItem.feesIndex.common.tenderTotalFee : 0,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ProvisionalSums",
|
|
name: "ProvisionalSums",
|
|
@@ -1392,8 +1512,10 @@ INTERFACE_EXPORT = (() => {
|
|
|
value: totalItem.feesIndex && totalItem.feesIndex.estimate && totalItem.feesIndex.estimate.tenderTotalFee ? totalItem.feesIndex.estimate.tenderTotalFee : 0,
|
|
value: totalItem.feesIndex && totalItem.feesIndex.estimate && totalItem.feesIndex.estimate.tenderTotalFee ? totalItem.feesIndex.estimate.tenderTotalFee : 0,
|
|
|
},
|
|
},
|
|
|
];
|
|
];
|
|
|
- if(isBidInvitation) attrs = [] //招标
|
|
|
|
|
- if (isControl) attrs.splice(1, 5); //控制价
|
|
|
|
|
|
|
+ if (isBidInvitation) {
|
|
|
|
|
+ attrs.splice(0, 3) //招标
|
|
|
|
|
+ }
|
|
|
|
|
+ //if (isControl) attrs.splice(1, 5); //控制价
|
|
|
if (isBidSubmission) { //投标文件时,读工程特征中的 招标控制价 值
|
|
if (isBidSubmission) { //投标文件时,读工程特征中的 招标控制价 值
|
|
|
let tenderSumLimit = _.find(feature, { "key": "tenderSumLimit" });
|
|
let tenderSumLimit = _.find(feature, { "key": "tenderSumLimit" });
|
|
|
if(tenderSumLimit) attrs[0].value = tenderSumLimit.value
|
|
if(tenderSumLimit) attrs[0].value = tenderSumLimit.value
|
|
@@ -1412,7 +1534,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
//if (i.dispName == "编制日期") key = "编制时间";
|
|
//if (i.dispName == "编制日期") key = "编制时间";
|
|
|
baseMap[key] = i;
|
|
baseMap[key] = i;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ //mustHasValue
|
|
|
const attrs = [{
|
|
const attrs = [{
|
|
|
name: "ValuationModel",
|
|
name: "ValuationModel",
|
|
|
value: property.taxType,
|
|
value: property.taxType,
|
|
@@ -1424,6 +1546,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "Designer",
|
|
name: "Designer",
|
|
|
value: baseMap["designUnit"] ? baseMap["designUnit"].value : "",
|
|
value: baseMap["designUnit"] ? baseMap["designUnit"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Compile",
|
|
name: "Compile",
|
|
@@ -1436,57 +1559,70 @@ INTERFACE_EXPORT = (() => {
|
|
|
{
|
|
{
|
|
|
name: "CompileCertNo",
|
|
name: "CompileCertNo",
|
|
|
value: baseMap["compileCertNo"] ? baseMap["compileCertNo"].value : "",
|
|
value: baseMap["compileCertNo"] ? baseMap["compileCertNo"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "CompileDate",
|
|
name: "CompileDate",
|
|
|
- value: baseMap["compileDate"] ? baseMap["compileDate"].value : "",
|
|
|
|
|
|
|
+ value: baseMap["compileDate"] && baseMap["compileDate"].value != "" ? baseMap["compileDate"].value + "T00:00:00" : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Review",
|
|
name: "Review",
|
|
|
value: baseMap["reviewUnit"] ? baseMap["reviewUnit"].value : "",
|
|
value: baseMap["reviewUnit"] ? baseMap["reviewUnit"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ReviewApprover",
|
|
name: "ReviewApprover",
|
|
|
value: baseMap["reviewApprover"] ? baseMap["reviewApprover"].value : "",
|
|
value: baseMap["reviewApprover"] ? baseMap["reviewApprover"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ReviewCertNo",
|
|
name: "ReviewCertNo",
|
|
|
value: baseMap["reviewCertNo"] ? baseMap["reviewCertNo"].value : "",
|
|
value: baseMap["reviewCertNo"] ? baseMap["reviewCertNo"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ReviewDate",
|
|
name: "ReviewDate",
|
|
|
- value: baseMap["reviewDate"] ? baseMap["reviewDate"].value : "",
|
|
|
|
|
|
|
+ value: baseMap["reviewDate"] && baseMap["reviewDate"].value != "" ? baseMap["reviewDate"].value + "T00:00:00" : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "Examine",
|
|
name: "Examine",
|
|
|
value: baseMap["examineUnit"] ? baseMap["examineUnit"].value : "",
|
|
value: baseMap["examineUnit"] ? baseMap["examineUnit"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ExamineApprover",
|
|
name: "ExamineApprover",
|
|
|
value: baseMap["examineApprover"] ? baseMap["examineApprover"].value : "",
|
|
value: baseMap["examineApprover"] ? baseMap["examineApprover"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ExamineCertNo",
|
|
name: "ExamineCertNo",
|
|
|
value: baseMap["examineCertNo"] ? baseMap["examineCertNo"].value : "",
|
|
value: baseMap["examineCertNo"] ? baseMap["examineCertNo"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ExamineDate",
|
|
name: "ExamineDate",
|
|
|
- value: baseMap["examineDate"] ? baseMap["examineDate"].value : "",
|
|
|
|
|
|
|
+ value: baseMap["examineDate"] && baseMap["examineDate"].value != "" ? baseMap["examineDate"].value + "T00:00:00" : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "CompileExplain",
|
|
name: "CompileExplain",
|
|
|
value: baseMap["compileExplain"] ? baseMap["compileExplain"].value : "",
|
|
value: baseMap["compileExplain"] ? baseMap["compileExplain"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ExamineExplain",
|
|
name: "ExamineExplain",
|
|
|
value: baseMap["examineExplain"] ? baseMap["examineExplain"].value : "",
|
|
value: baseMap["examineExplain"] ? baseMap["examineExplain"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
name: "ProjectExplain",
|
|
name: "ProjectExplain",
|
|
|
value: baseMap["projectExplain"] ? baseMap["projectExplain"].value : "",
|
|
value: baseMap["projectExplain"] ? baseMap["projectExplain"].value : "",
|
|
|
|
|
+ mustHasValue:true
|
|
|
},
|
|
},
|
|
|
];
|
|
];
|
|
|
- if (isControl || isBidInvitation) { //招标、招标控制价文件,则以下的8、12~18则不输出
|
|
|
|
|
|
|
+ if (isBidInvitation) { //招标文件,则以下的8、12~18则不输出
|
|
|
attrs.splice(11, 7);
|
|
attrs.splice(11, 7);
|
|
|
attrs.splice(7, 1);
|
|
attrs.splice(7, 1);
|
|
|
}
|
|
}
|
|
@@ -1494,7 +1630,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
let data = new CprjInfo(projectData.name);
|
|
let data = new CprjInfo(projectData.name);
|
|
|
- data.children.push(new SystemInfo());
|
|
|
|
|
|
|
+ data.children.push(new SystemInfo(projectData));
|
|
|
data.children.push(new CostBasis());
|
|
data.children.push(new CostBasis());
|
|
|
let seriNo = 1;
|
|
let seriNo = 1;
|
|
|
let Rates = [];
|
|
let Rates = [];
|