|
|
@@ -178,33 +178,34 @@ INTERFACE_EXPORT = (() => {
|
|
|
|
|
|
function addRations(ABillItem, ABillNode){
|
|
|
for (let i = 0; i < ABillItem.children.length; i++) {
|
|
|
- let r = ABillItem.children[i].data;
|
|
|
+ let r = ABillItem.children[i];
|
|
|
+ let rData = ABillItem.children[i].data;
|
|
|
const attrs = [
|
|
|
- { name: '序号', value: i + 1},
|
|
|
- { name: '定额编号', value: r.code},
|
|
|
- { name: '定额名称', value: r.name},
|
|
|
- { name: '单位', value: r.unit},
|
|
|
- { name: '数量', value: r.tenderQuantity},
|
|
|
- { name: '单价', value: r.feesIndex && r.feesIndex.common ? r.feesIndex.common.tenderUnitFee : 0},
|
|
|
- { name: '合价', value: r.feesIndex && r.feesIndex.common ? r.feesIndex.common.tenderTotalFee : 0},
|
|
|
+ { name: '序号', value: r.row()},
|
|
|
+ { name: '定额编号', value: rData.code},
|
|
|
+ { name: '定额名称', value: rData.name},
|
|
|
+ { name: '单位', value: rData.unit},
|
|
|
+ { name: '数量', value: rData.tenderQuantity},
|
|
|
+ { name: '单价', value: rData.feesIndex && rData.feesIndex.common ? rData.feesIndex.common.tenderUnitFee : 0},
|
|
|
+ { name: '合价', value: rData.feesIndex && rData.feesIndex.common ? rData.feesIndex.common.tenderTotalFee : 0},
|
|
|
{ name: '备注', value: ''},
|
|
|
- { name: '数据类型', value: GetRationDataType(ABillItem.children[i])},
|
|
|
- { name: '人工费', value: getFee(r.fees, 'marketLabour.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
- { name: '主材费', value: getFee(r.fees, 'marketMaterial.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
+ { name: '数据类型', value: GetRationDataType(r)},
|
|
|
+ { name: '人工费', value: getFee(rData.fees, 'marketLabour.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
+ { name: '主材费', value: getFee(rData.fees, 'marketMaterial.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
{ name: '辅材费', value: 0},
|
|
|
- { name: '机械使用费', value: getFee(r.fees, 'marketMachine.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
+ { name: '机械使用费', value: getFee(rData.fees, 'marketMachine.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
{ name: '设备费', value: 0},
|
|
|
- { name: '措施费1', value: getFee(r.fees, 'measure.tenderTotalFee'), type: TYPE.DECIMAL}, // FQuery2.FieldByName('OtherDirectFee'},
|
|
|
+ { name: '措施费1', value: getFee(rData.fees, 'measure.tenderTotalFee'), type: TYPE.DECIMAL}, // FQuery2.FieldByName('OtherDirectFee'},
|
|
|
{ name: '措施费2', value: 0}, //getFee(r.fees, 'measure.tenderTotalFee'), type: TYPE.DECIMAL
|
|
|
- { name: '企业管理费', value: getFee(r.fees, 'manage.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
- { name: '规费', value: getFee(r.fees, 'force.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
- { name: '利润', value: getFee(r.fees, 'profit.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
- { name: '税金', value: getFee(r.fees, 'tax.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
+ { name: '企业管理费', value: getFee(rData.fees, 'manage.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
+ { name: '规费', value: getFee(rData.fees, 'force.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
+ { name: '利润', value: getFee(rData.fees, 'profit.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
+ { name: '税金', value: getFee(rData.fees, 'tax.tenderTotalFee'), type: TYPE.DECIMAL},
|
|
|
];
|
|
|
let rationNode = new CreateNode('定额信息表', attrs);
|
|
|
ABillNode.children.push(rationNode);
|
|
|
|
|
|
- addRationGLJs(r, rationNode);
|
|
|
+ addRationGLJs(rData, rationNode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -216,7 +217,7 @@ INTERFACE_EXPORT = (() => {
|
|
|
serialNo++;
|
|
|
let zmh = (AItem.parent == vTree.roots[0]) ? getNum(AItem.data.name) : AItem.data.code;
|
|
|
const attrs = [
|
|
|
- {name: "序号", value: serialNo}, //AItem.data.ID
|
|
|
+ {name: "序号", value: AItem.row()}, //AItem.data.ID
|
|
|
{name: "清单章节号", value: zmh},
|
|
|
{name: "子目号", value: zmh},
|
|
|
{name: "子目名称", value: AItem.data.name},
|
|
|
@@ -288,6 +289,142 @@ INTERFACE_EXPORT = (() => {
|
|
|
recursiveAddBills(vTree.roots[0].children[0], gongCLQDB);
|
|
|
};
|
|
|
|
|
|
+ function createJiRGXXB(tenderData, jiRGXXB){
|
|
|
+ let vJRG, vKind, vChild;
|
|
|
+ let vJRGNode, vKindNode, vChildNode;
|
|
|
+
|
|
|
+ vJRG = vTree.roots.find(function getElement(e) {return e.getFlag() == fixedFlag.DAYWORK_LABOR});
|
|
|
+ let attrs = [
|
|
|
+ { name: '序号', value: vJRG.row() },
|
|
|
+ { name: '名称', value: vJRG.data.name },
|
|
|
+ { name: '数据类型', value: 0 },
|
|
|
+ { name: '合价', value: isBidInvitation ? 0 : ( vJRG.data.feesIndex && vJRG.data.feesIndex.common ? vJRG.data.feesIndex.common.tenderTotalFee : 0) },
|
|
|
+ ];
|
|
|
+ vJRGNode = new CreateNode('计日工信息标题', attrs);
|
|
|
+ jiRGXXB.children.push(vJRGNode);
|
|
|
+
|
|
|
+ function getDataType_JRG(name) {
|
|
|
+ if (name.includes('劳务'))
|
|
|
+ return 1
|
|
|
+ else if (name.includes('材料'))
|
|
|
+ return 2
|
|
|
+ else if (name.includes('机械'))
|
|
|
+ return 3
|
|
|
+ else
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (let i = 0; i < vJRG.children.length; i++) {
|
|
|
+ vKind = vJRG.children[i];
|
|
|
+ let attrs = [
|
|
|
+ { name: '序号', value: vKind.row() },
|
|
|
+ { name: '名称', value: vKind.data.name },
|
|
|
+ { name: '数据类型', value: getDataType_JRG(vKind.data.name) },
|
|
|
+ { name: '合价', value: isBidInvitation ? 0 : (vKind.data.feesIndex && vKind.data.feesIndex.common ? vKind.data.feesIndex.common.tenderTotalFee : 0) },
|
|
|
+ ];
|
|
|
+ vKindNode = new CreateNode('计日工信息标题', attrs);
|
|
|
+ jiRGXXB.children.push(vKindNode);
|
|
|
+
|
|
|
+ for (let j = 0; j < vKind.children.length; i++) {
|
|
|
+ vChild = vKind.children[j];
|
|
|
+
|
|
|
+ let attrs = [
|
|
|
+ { name: '编号', value: vChild.data.code },
|
|
|
+ { name: '名称', value: vChild.data.name },
|
|
|
+ { name: '数据类型', value: getDataType_JRG(vKind.data.name) + 3},
|
|
|
+ { name: '单位', value: vChild.data.unit },
|
|
|
+ { name: '暂定数量', value: vChild.data.quantity },
|
|
|
+ { name: '单价', value: isBidInvitation ? 0 : (vChild.data.feesIndex && vChild.data.feesIndex.common ? vChild.data.feesIndex.common.tenderUnitFee : 0) },
|
|
|
+ { name: '合价', value: isBidInvitation ? 0 : (vChild.data.feesIndex && vChild.data.feesIndex.common ? vChild.data.feesIndex.common.tenderTotalFee : 0) }
|
|
|
+ ];
|
|
|
+ vChildNode = new CreateNode('计日工信息明细', attrs);
|
|
|
+ vKindNode.children.push(vChildNode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function createZaoJHZB(tenderData, ZaoJHZB) {
|
|
|
+ const map_ZC_LB = [
|
|
|
+ {key: '第100章至700章清单', zc: '', lb: '1'},
|
|
|
+ {key: '已包含在清单合计中的材料', zc: '', lb: '2'},
|
|
|
+ {key: '清单合计减去材料', zc: '', lb: '3'},
|
|
|
+ {key: '计日工合计', zc: '', lb: '4'},
|
|
|
+ {key: '暂列金额', zc: '', lb: '5'},
|
|
|
+ {key: '投标报价', zc: '', lb: '6'},
|
|
|
+ {key: '第100章 ', zc: '100', lb: '11'}, // 我们软件"章"字后面有2个空格!
|
|
|
+ {key: '第200章 ', zc: '200', lb: '12'},
|
|
|
+ {key: '第300章 ', zc: '300', lb: '13'},
|
|
|
+ {key: '第400章 ', zc: '400', lb: '14'},
|
|
|
+ {key: '第500章 ', zc: '500', lb: '15'},
|
|
|
+ {key: '第600章 ', zc: '600', lb: '16'},
|
|
|
+ {key: '第700章 ', zc: '700', lb: '17'}
|
|
|
+ ]
|
|
|
+
|
|
|
+ function getZCLB(name, kind){
|
|
|
+ let rst = '';
|
|
|
+ for (let i = 0; i < map_ZC_LB.length; i++){
|
|
|
+ if (name.includes(map_ZC_LB[i].key)){
|
|
|
+ if (kind == 1)
|
|
|
+ rst = map_ZC_LB[i].zc
|
|
|
+ else if (kind == 2)
|
|
|
+ rst = map_ZC_LB[i].lb;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ }
|
|
|
+
|
|
|
+ function getJE(node){
|
|
|
+ if (isBidInvitation && ![fixedFlag.PROVISIONAL_TOTAL, fixedFlag.PROVISIONAL].includes(node.getFlag()))
|
|
|
+ return 0
|
|
|
+ else
|
|
|
+ return (node.data.feesIndex && node.data.feesIndex.common ? node.data.feesIndex.common.tenderTotalFee : 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ let nodes = [...vTree.roots, ...vTree.roots[0].children];
|
|
|
+
|
|
|
+ for (let i = 0; i < nodes.length; i++){
|
|
|
+ let node = nodes[i];
|
|
|
+ let attrs = [
|
|
|
+ { name: '序号', value: node.row() },
|
|
|
+ { name: '章次', value: getZCLB(node.data.name, 1) },
|
|
|
+ { name: '名称', value: node.data.name },
|
|
|
+ { name: '金额', value: getJE(node) },
|
|
|
+ { name: '类别', value: getZCLB(node.data.name, 2) },
|
|
|
+ { name: '备注', value: node.data.remark }
|
|
|
+ ];
|
|
|
+ const zaoJHZMX = new CreateNode('造价汇总明细', attrs);
|
|
|
+ ZaoJHZB.children.push(zaoJHZMX);
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ function createRenCJHZ(tenderData, RenCJHZ) {
|
|
|
+ const pGLJs = tenderDetailMap[tenderData.ID].projectGLJ.datas.gljList;
|
|
|
+ for (let i = 0; i < pGLJs.length; i++){
|
|
|
+ let pGLJ = pGLJs[i];
|
|
|
+ let attrs = [
|
|
|
+ { name: '人材机标识', value: pGLJ.glj_id },
|
|
|
+ { name: '人材机编号', value: pGLJ.code },
|
|
|
+ { name: '人材机名称', value: pGLJ.name },
|
|
|
+ { name: '规格型号', value: pGLJ.specs },
|
|
|
+ { name: '单位', value: pGLJ.unit },
|
|
|
+ { name: '数量', value: pGLJ.quantity },
|
|
|
+ { name: '单价', value: pGLJ.unit_price.market_price },
|
|
|
+ { name: '人材机类别', value: pGLJ.type },
|
|
|
+ { name: '是否主要材料', value: pGLJ.is_main_material }, // , type: TYPE.BOOL
|
|
|
+ { name: '是否甲供', value: pGLJ.supply },
|
|
|
+ { name: '是否暂估', value: pGLJ.is_evaluate },
|
|
|
+ { name: '备注', value: pGLJ.remark }
|
|
|
+ ];
|
|
|
+ // if (pGLJ.type != 9){
|
|
|
+ const renCJHZMXB = new CreateNode('人材机汇总明细表', attrs);
|
|
|
+ RenCJHZ.children.push(renCJHZMXB);
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
// 生成标段工程
|
|
|
function createGLBDGC(tenderData, gongLGCSJ, gongLGCHZ, Num){
|
|
|
let attrs0 = [
|
|
|
@@ -306,8 +443,9 @@ INTERFACE_EXPORT = (() => {
|
|
|
gongLBDGC.children = [gongCLQDB, jiRGXXB, ZaoJHZB, RenCJHZ];
|
|
|
|
|
|
createGCLQDB(tenderData, gongCLQDB);
|
|
|
- // createJiRGXXB(jiRGXXB);
|
|
|
-
|
|
|
+ createJiRGXXB(tenderData, jiRGXXB);
|
|
|
+ createZaoJHZB(tenderData, ZaoJHZB);
|
|
|
+ createRenCJHZ(tenderData, RenCJHZ);
|
|
|
|
|
|
// 同步生成 公路工程汇总明细 数据
|
|
|
const attrs2 = [{ name: '备注', value: '' }];
|