Browse Source

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

zhangweicheng 4 years ago
parent
commit
3923b2fb04

+ 1 - 0
modules/all_models/projects.js

@@ -14,6 +14,7 @@ const shareSchema = new Schema({
     shareDate: String,
 }, {versionKey: false, _id: false});
 const ProjectSchema = new Schema({
+    "isTwoLevel": { type: Boolean, default: false },
     "ID": {type: Number, index: true},
     "ParentID": Number,
     "NextSiblingID": Number,

+ 2 - 3
web/building_saas/complementary_ration_lib/js/gljSelect.js

@@ -36,7 +36,6 @@ let gljSelOprObj = {
     switchToGljId: function (gljList) {
         for(let glj of gljList){
             glj.gljId = glj.ID;
-            delete glj.ID;
         }
     },
     /* getSelGljItems: function(gljData) {
@@ -324,7 +323,7 @@ let gljSelOprObj = {
                     cacheSection.push(data[i]);
                 }
             }
-            sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
+            // sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
             sheetsOprObj.showDataForGljSel(me.workBook.getSheet(0), me.setting, cacheSection, rationGLJOprObj.distTypeTree);
             me.workBook.getSheet(0).setRowCount(cacheSection.length);
             cacheSection = null;
@@ -399,7 +398,7 @@ $(document).ready(function () {
         gljSelOprObj.initView(gljLibId, false);
     });
     $('#gljSearchKeyword').on('keyup', _.debounce(function () {
-        gljSelOprObj.filterDatasAndShow();  
+        gljSelOprObj.filterDatasAndShow();
     }, 300));
     $('#selGlj').on('shown.bs.modal', function () {
         if (gljSelOprObj.workBook) {

+ 12 - 4
web/over_write/js/chongqing_2018_export.js

@@ -1063,9 +1063,14 @@ const XMLStandard = (function () {
             let appraisalSummary = new AppraisalSummary();
             project.children.unshift(appraisalSummary);
             //单项工程
-            for (let eng of projectData.children) {
-                let engElement = await loadEngineering(projectData.summaryInfo, eng);
-                project.children.push(engElement);
+            for (const eng of projectData.children) {
+                if (projectData.isTwoLevel) {
+                    const tenders = await loadEngineering(projectData.summaryInfo, eng);
+                    project.children.push(...tenders);
+                } else {
+                    const engElement = await loadEngineering(projectData.summaryInfo, eng);
+                    project.children.push(engElement);
+                }
             }
             //主要清单汇总、评审材料汇总 排在后面
             project.children = [...project.children.slice(2), mainBillsSummaryEle, appraisalSummary];
@@ -1089,6 +1094,7 @@ const XMLStandard = (function () {
         }
         /*
          * 加载单项工程数据
+         * 如果导入有isTwoLevel标记(导入文件只有两层),则导出只导出两层,忽略单项工程层
          * @param {Object}summaryInfo(项目汇总信息映射) {Object}engData(单项工程数据)
          * */
         async function loadEngineering(summaryInfo, engData) {
@@ -1097,6 +1103,7 @@ const XMLStandard = (function () {
             //费用构成
             let feeForm = new FeeFrom(summaryInfo[engData.ID]);
             engineering.children.push(feeForm);
+            const tenders = [];
             //分批次获取单位工程
             let tenderDetailMap = _cache.getItem('tenderDetailMap');
             for (let tenderData of engData.children) {
@@ -1113,8 +1120,9 @@ const XMLStandard = (function () {
                 }
                 tenderGljs = [];    //清空单位工程内所有的人材机(ID)
                 engineering.children.push(tender);
+                tenders.push(tender);
             }
-            return engineering;
+            return projectData.isTwoLevel ? tenders : engineering;
         }
         /*
          * 加载单位工程数据

+ 20 - 2
web/over_write/js/chongqing_2018_import.js

@@ -113,6 +113,9 @@ const importXML = (() => {
             count += eng.tenders.length;
         });
         obj.projectCount = count;
+        if (source.isTwoLevel) {
+            obj.isTwoLevel = true;
+        }
         return obj;
     }
     //基本信息相关
@@ -165,6 +168,20 @@ const importXML = (() => {
     }
     //单项工程
     function loadEng(source) {
+        const engs = arrayValue(source, ['标段', '单项工程']);
+        // 支持导入无单项工程数据,如果只有没有单项工程,自动生成一个单项工程数据
+        if (!engs.length) {
+            countData.projectCount++;
+            const eng = {
+                code: '1',
+                name: '单项工程',
+                projType: 'Engineering',
+                tenders: loadTender(source, ['标段', '单位工程']),
+            }
+            // 标记为两层结构,导出需要用到(虽然自动生成了三层,但是导出的时候需要只导出两层)
+            source.isTwoLevel = true;
+            return [eng];
+        }
         return arrayValue(source, ['标段', '单项工程']).map(src => {
             countData.projectCount++;
             return {
@@ -176,8 +193,8 @@ const importXML = (() => {
         });
     }
     //单位工程
-    function loadTender(engSrc) {
-        return arrayValue(engSrc, ['单位工程']).map(src => {
+    function loadTender(engSrc, path = ['单位工程']) {
+        return arrayValue(engSrc, path).map(src => {
             countData.projectCount++;
             countData.unitPriceFileCount++;
             return {
@@ -1621,6 +1638,7 @@ const importXML = (() => {
         xmlObj.ID = IDPlaceholder.project++;
         //获取到的转换后的最终上传数据
         let postConstructData = {
+            isTwoLevel: !!xmlObj.isTwoLevel,
             ID: xmlObj.ID,
             ParentID: xmlObj.ParentID,
             NextSiblingID: xmlObj.NextSiblingID,