Tony Kang 3 rokov pred
rodič
commit
cc41f2a920

+ 1 - 0
web/building_saas/main/js/views/project_view.js

@@ -2410,6 +2410,7 @@ $('#open-export-modal').click(() => {
     CommonHeader.doAfterValidateVersion(
         () => $('#interface-export-modal').modal('show'),
         () => alert(`${commonUtil.getVersionText()}不提供此功能。`)
+        // () => $('#interface-export-modal').modal('show'), // 暂时
     );
 });
 

+ 53 - 15
web/building_saas/standard_interface/export/zhejiang_xiangshan.js

@@ -397,8 +397,38 @@ INTERFACE_EXPORT = (() => {
         const programText = curTender.calcProgram.compiledTemplateMaps[node.data.programID];
         return programText === '费率为0' ? '4' : '3';
       }
+
+      function billDEXXB(node) {
+        // 叶子清单生成定额信息表用
+        const { mainFee, assFee } = getMaterialFee(node);
+        const attrs = [
+          {name: '序号', value: '' },
+          {name: 'GUID', value: uuid.v1()},
+          {name: '定额编号', value: ''},
+          {name: '定额名称', value: node.data.name, minLen: 1 },
+          {name: '单位', value: node.data.unit, minLen: 1 },
+          {name: '数量', value: node.data.tenderQuantity, type: TYPE.DECIMAL},
+          {name: '单价', value: getFee(node.data.fees, 'common.tenderUnitFee', exportKind), type: TYPE.DECIMAL},
+          {name: '合价', value: getFee(node.data.fees, 'common.tenderTotalFee', exportKind), type: TYPE.DECIMAL},
+          {name: '备注', value: node.data.remark },
+          {name: '数据类型', value: (node.data.specialProvisional === '材料暂估') ? '1' : '2' },
+          {name: '人工费', value: getUnitFee(getFee(node.data.fees, 'marketLabour.tenderTotalFee', exportKind), node.data.tenderQuantity, 2), type: TYPE.DECIMAL},
+          {name: '主材费', value: mainFee, type: TYPE.DECIMAL},
+          {name: '辅材费', value: assFee, type: TYPE.DECIMAL},
+          {name: '设备费', value: getUnitFee(getFee(node.data.fees, 'equipment.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+          {name: '机械使用费', value:  getUnitFee(getFee(node.data.fees, 'machine.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+          {name: '措施费1', value: getUnitFee(COMPILATION_NAME.includes('公路造价') ? getFee(node.data.fees, 'measure1.tenderTotalFee', exportKind) : getFee(node.data.fees, 'otherDirect.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+          {name: '措施费2', value: getUnitFee(COMPILATION_NAME.includes('公路造价') ? getFee(node.data.fees, 'measure2.tenderTotalFee', exportKind) : getFee(node.data.fees, 'composite.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+          {name: '企业管理费', value: getUnitFee(COMPILATION_NAME.includes('公路造价') ? getFee(node.data.fees, 'manage.tenderTotalFee', exportKind) : getFee(node.data.fees, 'local.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+          {name: '规费', value: getUnitFee(COMPILATION_NAME.includes('公路造价') ? getFee(node.data.fees, 'force.tenderTotalFee', exportKind) : getFee(node.data.fees, 'indirect.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+          {name: '利润', value: getUnitFee(getFee(node.data.fees, 'profit.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+          {name: '税金', value: getUnitFee(getFee(node.data.fees, 'tax.tenderTotalFee', exportKind), node.data.tenderQuantity, fD), type: TYPE.DECIMAL},
+        ];
+        Element.call(this, '定额信息表', attrs);
+      }
+
       function DEXXB(node) {
-        if (node.data.code == '1-2-14-1') debugger;
+        // if (node.data.code == '1-2-14-1') debugger;
         const { mainFee, assFee } = getMaterialFee(node);
         const attrs = [
           {name: '序号', value: rationSeq ++ },
@@ -557,11 +587,11 @@ INTERFACE_EXPORT = (() => {
         });
         return qdzcb.children.length ? qdzcb : null;
       }
-  
+
       /* 生成定额信息表 */
       function createDEXXB(node) {
         const rst = [];
-        // if(isBidInvitation) return rst; //招标工程量清单不导出定额数据
+        if(isBidInvitation) return rst; //招标工程量清单不导出定额数据
         node.children.forEach(ration => {
           const dexxb = new DEXXB(ration);
           rst.push(dexxb);
@@ -590,19 +620,27 @@ INTERFACE_EXPORT = (() => {
         function setupGCLQDMX(nodes) {
           const rst = [];
           nodes.forEach(node => {
-            const glcqdmx = new GongCLQDMX(node);
-            rst.push(glcqdmx);
-            if (!node.source.children.length && node.children.length) {
-              // 清单主材表
-              const qdzcb = createQDZCB(node);
-              if (qdzcb) {
-                glcqdmx.children.push(qdzcb);
-              }
-              // 定额
-              glcqdmx.children.push(...createDEXXB(node));
+            // if (node.data.name === '利用石方') debugger;
+            if (node.data.specialProvisional !== undefined && node.data.specialProvisional !== null && node.data.specialProvisional !== '' && node.children.length === 0) {
+              //象山的坑,叶子清单(专项暂定)要转成定额信息表
+              const dexxb = new billDEXXB(node);
+              rst.push(dexxb);              
             } else {
-              // 子清单
-              glcqdmx.children.push(...setupGCLQDMX(node.children));
+              // 原逻辑:
+              const glcqdmx = new GongCLQDMX(node);
+              rst.push(glcqdmx);
+              if (!node.source.children.length && node.children.length) {
+                // 清单主材表
+                const qdzcb = createQDZCB(node);
+                if (qdzcb) {
+                  glcqdmx.children.push(qdzcb);
+                }
+                // 定额
+                glcqdmx.children.push(...createDEXXB(node));
+              } else {
+                // 子清单
+                glcqdmx.children.push(...setupGCLQDMX(node.children));
+              }
             }
           });
           return rst;

+ 34 - 12
web/building_saas/standard_interface/import/zhejiang_xiangshan.js

@@ -136,18 +136,40 @@ INTERFACE_IMPORT = (() => {
             const rBillItems = arrayValue(src, ['定额信息表']); // 导入后作为清单处理
             if (rBillItems.length > 0) {
               rBillItems.forEach((rationXml, index) => {
-                const item = {
-                  // seq: index + 1,
-                  // fees,
-                  GUID: getValue(rationXml, ['_GUID']),
-                  code: getValue(rationXml, ['_定额编号']),
-                  name: getValue(rationXml, ['_定额名称']),
-                  unit: getValue(rationXml, ['_单位']),
-                  tenderQuantity: getValue(rationXml, ['_数量']),
-                  quantity: getValue(rationXml, ['_数量']),
-                  remark: getValue(rationXml, ['_备注']),
-                };
-                bill.children.push(item);
+                let srcSpecialProvisional = getValue(src, ['_数据类型']);
+                // let specialProvisional = '';
+                // switch (srcSpecialProvisional) {
+                //   case '1':
+                //     specialProvisional = '材料暂估';
+                //     break;
+                //   case '2':
+                //     specialProvisional = '工程设备';
+                //     break;
+                //   case '4':
+                //     // 不取费定额
+                //     specialProvisional = '专业工程';
+                //     break;
+                //   case '3':
+                //       // 表示普通定额
+                //   default:
+                //     specialProvisional = '';
+                //     break;
+                // }
+                if (srcSpecialProvisional === '1' || srcSpecialProvisional === '2') {
+                  const item = {
+                    // seq: index + 1,
+                    // fees,
+                    GUID: getValue(rationXml, ['_GUID']),
+                    code: getValue(rationXml, ['_定额编号']),
+                    name: getValue(rationXml, ['_定额名称']),
+                    unit: getValue(rationXml, ['_单位']),
+                    tenderQuantity: getValue(rationXml, ['_数量']),
+                    quantity: getValue(rationXml, ['_数量']),
+                    remark: getValue(rationXml, ['_备注']),
+                    // specialProvisional,
+                  };
+                  bill.children.push(item);
+                }
               });
             }
             return bill;