소스 검색

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuCost

vian 5 년 전
부모
커밋
b39791c27c

+ 2 - 1
modules/reports/rpt_component/jpc_flow_tab.js

@@ -690,7 +690,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
                             // 2018-08-04 其实之前的判断逻辑完全是自找麻烦,而且还不够正确。其实只需要判断已经处理了多少行纪录(所有的都算,包括空白行),
                             // 与总的seg纪录数想比较,就很容易得到结果,而且能处理极端边界的情况。
                             pageStatus[JV.STATUS_SEGMENT_END] = true;
-                            pageStatus[JV.STATUS_REPORT_END] = true;
+                            // pageStatus[JV.STATUS_REPORT_END] = true;
+                            pageStatus[JV.STATUS_REPORT_END] = (segIdx === me.segments.length - 1);
                             private_resetBandArea();
                             let hasAdHocRow = ((adHocAutoHeightAmt > maxRowRec) || !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, handledRowAmt, maxRowRec, me.isEx));
                             // !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, currentRecAmt + adHocAutoHeightAmt, maxRowRec, me.isEx));

+ 159 - 21
web/building_saas/standard_interface/export/anhui_chizhou.js

@@ -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: '' }];

+ 50 - 44
web/building_saas/standard_interface/export/guangdong_zhongshan.js

@@ -63,6 +63,7 @@ INTERFACE_EXPORT = (() => {
   const itemFeeMap = {
     'marketLabour': 'RGF',
     'marketMaterial': 'CLF',
+    'marketMachine':'JXSYF',
     'marketEquipment': 'SBGZF',
     'direct': 'DEZJF',
     'equipment': 'DESBF',
@@ -371,29 +372,32 @@ INTERFACE_EXPORT = (() => {
         ],
         children: [],
       };
-      let elecDatas = electrovalenceObj.getElectrovalenceDatas(null, pgljData.com_electrovalence, pgljData.gljList);
-      electrovalenceObj.calcPertElectrovalenceMarketPrice(elecDatas);
-      for (let e of elecDatas) {
-        let Electro = {
-          name: "Electro",
-          attrs: [{
-              name: "Code",
-              value: e.code,
-            },
-            {
-              name: "Price",
-              value: e.electPrice,
-            },
-            {
-              name: "Ratio",
-              value: e.coe,
-            },
-          ],
-          children: [],
-        };
-        Param.children.push(Electro);
+      if (isBidSubmission) { //导出到招标、招标控制价文件中,不输出这一部分。
+        let elecDatas = electrovalenceObj.getElectrovalenceDatas(null, pgljData.com_electrovalence, pgljData.gljList);
+        electrovalenceObj.calcPertElectrovalenceMarketPrice(elecDatas);
+        for (let e of elecDatas) {
+          let Electro = {
+            name: "Electro",
+            attrs: [{
+                name: "Code",
+                value: e.code,
+              },
+              {
+                name: "Price",
+                value: e.electPrice,
+              },
+              {
+                name: "Ratio",
+                value: e.coe,
+              },
+            ],
+            children: [],
+          };
+          Param.children.push(Electro);
+        }
       }
 
+
       this.children.push(Param);
 
       function MP(g) {
@@ -704,9 +708,6 @@ INTERFACE_EXPORT = (() => {
           Element.call(this, "FixedCostItem", attrs);
 
         }
-        
-        
-
       }
 
       let Mps = new emptyElement("Mps");
@@ -714,22 +715,23 @@ INTERFACE_EXPORT = (() => {
       let Mechs = new emptyElement("Mechs");
       let gljKeyMap = {};
       let temMechs = [];
-      for (let g of pgljData.gljList) {
-        let type = g.type + "";
-        gljKeyMap[gljUtil.getIndex(g)] = g;
-        type = type.charAt(0);
-        if (type == "1") {
-          Mps.children.push(new MP(g));
-        } else if (type == "2" || type == 5) {
-          Materials.children.push(new Material(g));
-        } else if (type == "3") {
-          temMechs.push(g);
+      if (isBidSubmission) { //导出到招标、招标控制价文件中,不输出这一部分。
+        for (let g of pgljData.gljList) {
+          let type = g.type + "";
+          gljKeyMap[gljUtil.getIndex(g)] = g;
+          type = type.charAt(0);
+          if (type == "1") {
+            Mps.children.push(new MP(g));
+          } else if (type == "2" || type == 5) {
+            Materials.children.push(new Material(g));
+          } else if (type == "3") {
+            temMechs.push(g);
+          }
+        }
+        for (let t of temMechs) { 
+          Mechs.children.push(new Mech(t,gljKeyMap));
         }
       }
-      for (let t of temMechs) { 
-        Mechs.children.push(new Mech(t,gljKeyMap));
-      }
-
       this.children.push(Mps);
       this.children.push(Materials);
       this.children.push(Mechs);
@@ -737,6 +739,7 @@ INTERFACE_EXPORT = (() => {
 
     function EprjInfo(tenderProject) {
       let bills = tenderProject.Bills.datas;
+      let feature = tenderProject.property.projectFeature ? tenderProject.property.projectFeature : [];
       let totalItem = null;
       let proItem = null; //暂列金额项
       for (let b of bills) {
@@ -754,7 +757,7 @@ INTERFACE_EXPORT = (() => {
         },
       ];
       Element.call(this, "EprjInfo", attrs);
-      this.children.push(new SummaryOfCost(totalItem, proItem));
+      this.children.push(new SummaryOfCost(totalItem, proItem,feature));
       this.children.push(new MakeInfo(tenderProject));
       this.children.push(new Params(tenderProject));
       this.children.push(new getBillsItems(tenderProject));
@@ -916,7 +919,7 @@ INTERFACE_EXPORT = (() => {
               value: data.quantity,
             },
             {
-              name: "QtyFomula",
+              name: "QtyFormula",
               value: data.calcBase //data.calcBase ? cbParser.toFExpr(data.calcBase, tenderProject.mainTree.items) : "",
             },
             {
@@ -1297,7 +1300,7 @@ INTERFACE_EXPORT = (() => {
       Element.call(this, "Params", attrs);
     }
 
-    function SummaryOfCost(totalItem, proItem) {
+    function SummaryOfCost(totalItem, proItem,feature) {
       const attrs = [{
           name: "TenderSumLimit",
           value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0,
@@ -1323,9 +1326,12 @@ INTERFACE_EXPORT = (() => {
           value: totalItem.feesIndex && totalItem.feesIndex.estimate && totalItem.feesIndex.estimate.tenderTotalFee ? totalItem.feesIndex.estimate.tenderTotalFee : 0,
         },
       ];
-      if (isBidInvitation || isControl) attrs.splice(1, 1); //招标 - 控制价
-      if (isBidSubmission) attrs.splice(0, 1); //投标
-
+      if(isBidInvitation) attrs = [] //招标
+      if (isControl) attrs.splice(1, 5); //控制价
+      if (isBidSubmission) { //投标文件时,读工程特征中的 招标控制价 值
+        let tenderSumLimit = _.find(feature, { "dispName": "招标控制价" }); 
+        if(tenderSumLimit) attrs[0].value = tenderSumLimit.value
+      } 
       Element.call(this, "SummaryOfCost", attrs);
     }
 

+ 8 - 0
web/over_write/js/quanguo_2018.js

@@ -95,6 +95,14 @@ function overwriteRationCalcBases() {
     type: 'measure',
     name: '措施费'
   },
+    {
+      type: 'measure1',
+      name: '措施费I'
+    },
+    {
+      type: 'measure2',
+      name: '措施费II'
+    },
   {
     type: 'manage',
     name: '企业管理费'

+ 19 - 0
web/over_write/js/shandong_2016.js

@@ -352,6 +352,25 @@ if (typeof gljOprObj !== 'undefined') {
     }
 }
 
+
+if (typeof electrovalenceObj !== 'undefined') {
+  electrovalenceObj.options = [
+      { code: "870", name: "电网电", specs: "", unit: "kW·h", type: "201" },
+      { code: "1791", name: "5kw以内柴油发电机组", specs: "5GF1", unit: "台班", type: "301" },
+      { code: "1792", name: "15kw以内柴油发电机组", specs: "12GF1", unit: "台班", type: "301" },
+      { code: "1793", name: "30kw以内柴油发电机组", specs: "30GFY-2", unit: "台班", type: "301" },
+      { code: "1794", name: "50kw以内柴油发电机组", specs: "50GFY-2", unit: "台班", type: "301" },
+      { code: "1795", name: "75kw以内柴油发电机组", specs: "75GFY-4", unit: "台班", type: "301" },
+      { code: "1796", name: "100kw以内柴油发电机组", specs: "90GFZ", unit: "台班", type: "301" },
+      { code: "1797", name: "120kw以内柴油发电机组", specs: "120GFY-4", unit: "台班", type: "301" },
+      { code: "1798", name: "160kw以内柴油发电机组", specs: "160GF", unit: "台班", type: "301" },
+      { code: "1799", name: "200kw以内柴油发电机组", specs: "200GF", unit: "台班", type: "301" },
+      { code: "1800", name: "250kw以内柴油发电机组", specs: "250GF4-4", unit: "台班", type: "301" },
+      { code: "1801", name: "320kw以内柴油发电机组", specs: "320GF-2", unit: "台班", type: "301" }
+  ]
+}
+
+
 if (typeof module !== "undefined" && !module.nodeType) {
   module.exports = {
     progression,