فهرست منبع

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

vian 5 سال پیش
والد
کامیت
b0d7673966

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 723 - 597
modules/main/facade/project_facade.js


+ 1 - 1
web/building_saas/js/global.js

@@ -20,7 +20,7 @@ function autoFlashHeight(){
     $(".main-data-full").height($(window).height()-headerHeight-toolsbarHeight-1);
     $(".main-data-full-fl").height($(window).height()-headerHeight-toolsbarHeight-37);
     $(".main-data-full-feeRate").height($(window).height()-headerHeight-78);
-    $(".main-data-full-tender").height($(window).height()-headerHeight-btntoolsbarHeight-10);
+    $(".main-data-full-tender").height($(window).height()-headerHeight-btntoolsbarHeight-10-30);  // 30是留个水平进度条位置
     $(".main-data-not").height($(window).height()-headerHeight-1);
     $(".main-data-side-search").height($(window).height()-headerHeight-toolsbarHeight-64);
     $(".side-content").height($(window).height()-headerHeight );

+ 5 - 0
web/building_saas/main/js/controllers/block_controller.js

@@ -578,6 +578,9 @@ let BlockController = {
             delete tem_ration.referenceRationID;//删除关联的主定额信息
             delete tem_ration.__v;
             delete tem_ration.sourceType;
+            delete tem_ration.quantityCoe;
+            delete tem_ration.rationQuantityCoe;
+            delete tem_ration.tenderQuantity;
 
             tem_ration.projectID = projectObj.project.ID();
             tem_ration.ID = uuid.v1();
@@ -604,6 +607,8 @@ let BlockController = {
             delete  temData.quantity_details;
             delete  temData.__v;
             delete  temData.sourceType;
+            delete  temData.quantityCoe;
+            delete  temData.rationQuantityCoe;
 
             temData.projectID = projectObj.project.ID();
             let newID = uuid.v1(); //新的清单ID

+ 8 - 3
web/building_saas/main/js/views/tender_price_view.js

@@ -226,12 +226,17 @@ let tender_obj={
 
     },
     onEnterCell : function (sender,args) {
-        let me = tender_obj, row = args.row, col = args.col;
+        let me = tender_obj, row = args.row, col = args.col, lock = false;
         if ([7, 8].includes(col)){                                  // 目标单价、目标合价
             let treeNode = me.tenderTree.items[row];
-            if (calcTools.isCalcBaseBill(treeNode)){                    // 公式结点只读
+            if (calcTools.isCalcBaseBill(treeNode))                   // 公式结点只读
+                lock = true;
+
+            if ((col = 7) && calcTools.isParentBill(treeNode))
+                lock = true;
+
+            if (lock)
                 me.tenderSheet.getCell(row, col).locked(true);
-            };
         }
     },
     updateChildrenValue:function (node,dataCode,value,datas,nodes) {

+ 58 - 44
web/building_saas/standard_interface/config.js

@@ -5,49 +5,63 @@
  */
 
 const INTERFACE_CONFIG = (() => {
-    const { EXPORT_KIND: { BID_INVITATION, BID_SUBMISSION, CONTROL } } = window.commonConstants;
+  const {
+    EXPORT_KIND: {
+      BID_INVITATION,
+      BID_SUBMISSION,
+      CONTROL
+    }
+  } = window.commonConstants;
 
-    // 注意:相同地区的导入导出接口js文件名称应相同。eg: 安徽马鞍山导出:在export目录下:anhui_maanshan.js; 在import目录下:anhui_maanshan.js;
-    return {
-        '安徽@马鞍山': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.MASGLZB',
-                [BID_SUBMISSION]: '.MASGLTB',
-                [CONTROL]: '.MASGLKZJ',
-            },
-        },
-        '安徽@淮北': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.HBGLZB',
-                [BID_SUBMISSION]: '.HBGLTB',
-                [CONTROL]: '.HBGLKZJ',
-            },
-        },
-        '安徽@芜湖': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.WHGLZB',
-                [BID_SUBMISSION]: '.WHGLTB',
-                [CONTROL]: '.WHGLKZJ',
-            },
-        },
-        '安徽@黄山': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.HSGLZB',
-                [BID_SUBMISSION]: '.HSGLTB',
-                [CONTROL]: '.HSGLKZJ',
-            },
-        },
-        '安徽@宣城': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.XCGLZB',
-                [BID_SUBMISSION]: '.XCGLTB',
-                [CONTROL]: '.XCGLKZJ',
-            },
-        },
-    };
+  // 注意:相同地区的导入导出接口js文件名称应相同。eg: 安徽马鞍山导出:在export目录下:anhui_maanshan.js; 在import目录下:anhui_maanshan.js;
+  return {
+    '安徽@马鞍山': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.MASGLZB',
+        [BID_SUBMISSION]: '.MASGLTB',
+        [CONTROL]: '.MASGLKZJ',
+      },
+    },
+    '安徽@淮北': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.HBGLZB',
+        [BID_SUBMISSION]: '.HBGLTB',
+        [CONTROL]: '.HBGLKZJ',
+      },
+    },
+    '安徽@芜湖': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.WHGLZB',
+        [BID_SUBMISSION]: '.WHGLTB',
+        [CONTROL]: '.WHGLKZJ',
+      },
+    },
+    '安徽@黄山': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.HSGLZB',
+        [BID_SUBMISSION]: '.HSGLTB',
+        [CONTROL]: '.HSGLKZJ',
+      },
+    },
+    '安徽@宣城': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.XCGLZB',
+        [BID_SUBMISSION]: '.XCGLTB',
+        [CONTROL]: '.XCGLKZJ',
+      },
+    },
+    '广东@中山': {
+      scriptName: 'guangdong_zhongshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.XML',
+        [BID_SUBMISSION]: '.XML',
+        [CONTROL]: '.XML',
+      },
+    }
+  };
 })()

+ 185 - 0
web/building_saas/standard_interface/export/guangdong_zhongshan.js

@@ -0,0 +1,185 @@
+// INTERFACE_EXPORT =,必须这么写,这样才能在导出时动态加载脚本后,覆盖前端代码
+INTERFACE_EXPORT = (() => {
+  'use strict';
+
+  /**
+   * 
+   * @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
+   * @param {Number} exportKind - 导出类型,招标、投标、控制价
+   * @param {Object} projectData - 项目表数据:{ 建设项目Data, children: [单位工程...] }
+   * @param {Object} tenderDetailMap - 单位工程ID与getData接口数据(projectObj.project的结构)的映射。
+   * @return {Promise<Array>} - 返回的数据结构必须按照规定:[{ data, exportKind, fileName }],参考web\building_saas\standard_interface\index.js中的注释说明
+   */
+  async function entry(areaKey, exportKind, projectData, tenderDetailMap) {
+    console.log(areaKey)
+    //<CprjInfo CprjName="中山接口报错" CprjType="QDYS">
+    const {
+      UTIL,
+      Element,
+    } = INTERFACE_EXPORT_BASE;
+
+    const {
+      EXPORT_KIND: {
+        BID_INVITATION,
+        BID_SUBMISSION,
+        CONTROL
+      },
+      fixedFlag,
+    } = window.commonConstants
+    let cprjType = {
+      1: 'ZBKZJ', // 招标
+      2: 'TBBJ', // 投标
+      3: 'GCLQD' // 控制价
+    }
+
+    const isBidInvitation = exportKind === BID_INVITATION; // 是否是招标
+    const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
+    const isControl = exportKind === CONTROL; // 是否是控制价
+
+    // 建设项目根节点信息
+    function CprjInfo(projectName) {
+      const attrs = [{
+        name: 'CprjName',
+        value: projectName
+      }, {
+        name: 'CprjType',
+        value: cprjType[exportKind]
+      }];
+      Element.call(this, 'CprjInfo', attrs);
+    }
+    // 项目基本信息
+    function SystemInfo(projectData) {
+      let hardID = UTIL.generateHardwareId();
+      let [cpuId, diskId, macId] = hardID.split(';');
+      const attrs = [{
+          name: 'Name',
+          value: '公路工程造价数据标准'
+        }, {
+          name: 'Version',
+          value: '1.0'
+        }, {
+          name: 'SoftwareName',
+          value: '纵横公路云造价'
+        },
+        {
+          name: 'SoftwareVer',
+          value: VERSION
+        }, {
+          name: 'SoftwareCompany',
+          value: '珠海纵横创新软件有限公司'
+        }, {
+          name: 'MakeDate',
+          value: ''
+        }, {
+          name: 'Key1',
+          value: window.btoa(VERSION)
+        }, {
+          name: 'Key2',
+          value: window.btoa(diskId)
+        }, {
+          name: 'Key3',
+          value: window.btoa(macId)
+        }
+      ];
+      if (isBidSubmission) attrs.splice(6, 0, {
+        name: 'BidderVer',
+        value: ''
+      })
+      Element.call(this, 'SystemInfo', attrs);
+    }
+
+    //造价依据
+    function CostBasis() { // ItemStandardNo="GYSFX-000000-2018-86"
+      const attrs = [{
+        name: 'MakeRuleNo',
+        value: 'GYSBB-000000-2018-86'
+      }, {
+        name: 'MakeRuleName',
+        value: '公路工程建设项目概算预算编制办法'
+      }, {
+        name: 'ItemStandardNo',
+        value: 'GYSFX-000000-2018-86'
+      }];
+      Element.call(this, 'CostBasis', attrs);
+
+      //定额库信息
+
+      //to do 改成实际的值
+      function NormLib() {
+        const attrs = [{
+          name: 'NormLibNo',
+          value: '0'
+        }, {
+          name: 'NormLibName',
+          value: '部颁公路工程预算定额(2018)'
+        }, {
+          name: 'Type',
+          value: 'ZDEK'
+        }];
+        Element.call(this, 'NormLib', attrs);
+      }
+      this.children.push(new NormLib());
+    }
+
+    function Rate(feeRateInfo) {
+      //RateNo="1" Name="纵横软件测试版本" RateLibNo="GYSFL-000000-2018-86"
+      const attrs = [{
+        name: 'RateNo',
+        value: feeRateInfo.ID
+      }, {
+        name: 'Name',
+        value: feeRateInfo.name
+      }, {
+        name: 'RateLibNo',
+        value: feeRateInfo.libID
+      }];
+      Element.call(this, 'Rate', attrs);
+
+      let RateParams = {
+        name: 'RateParams',
+        attrs: [],
+        children: []
+      }
+      RateParams.children.push(new RateParam());
+      this.children.push(RateParams);
+
+      function RateParam() {
+        //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
+        const attrs = [{
+          name: 'RateTypeNo',
+          value: 'DJSGZJFFL'
+        }, {
+          name: 'RateParamNo',
+          value: '0'
+        }, {
+          name: 'Ratio',
+          value: '100'
+        }];
+        Element.call(this, 'RateParam', attrs);
+      }
+
+
+
+    }
+
+
+    let data = new CprjInfo(projectData.name);
+    data.children.push(new SystemInfo());
+    data.children.push(new CostBasis());
+    let feeRataDatas = tenderDetailMap[projectObj.project.ID()].FeeRate.datas;
+    data.children.push(new Rate(feeRataDatas));
+
+
+
+
+    return [{
+      data: data,
+      exportKind: exportKind,
+      fileName: projectData.name + INTERFACE_CONFIG[areaKey]['fileSuffix'][exportKind]
+    }]
+
+  }
+  return {
+    entry,
+  };
+})();