Explorar o código

Merge branch '1.0.0_online' of http://192.168.1.41:3000/SmartCost/ConstructionCost into 1.0.0_online

chenshilong %!s(int64=6) %!d(string=hai) anos
pai
achega
91a718f36b

+ 13 - 3
modules/templates/controllers/bills_template_controller.js

@@ -35,10 +35,20 @@ module.exports = {
         });
         });
     },
     },
     getNeedfulTemplate: async function (req, res) {
     getNeedfulTemplate: async function (req, res) {
-        let data = JSON.parse(req.body.data);
+        let data = JSON.parse(req.body.data),
+            allTemplateLibIDs = data.allTemplateLibIDs;
         try {
         try {
-            let needfulDatas = await BillsTemplateData.getNeedfulTemplate(data.templateLibID);
-            callback(req, res, 0, 'succes', needfulDatas);
+            let task = [];
+            for (let templateLibID of allTemplateLibIDs) {
+                task.push(BillsTemplateData.getNeedfulTemplate(templateLibID));
+            }
+            let needfulDatas = await Promise.all(task);
+            let mapping = {};
+            needfulDatas.forEach((data, index) => {
+                let curLibID = allTemplateLibIDs[index];
+                mapping[curLibID] = data;
+            });
+            callback(req, res, 0, 'succes', mapping);
         } catch (err) {
         } catch (err) {
             console.log(err);
             console.log(err);
             callback(req, res, 1, err, null);
             callback(req, res, 1, err, null);

+ 1 - 1
web/building_saas/main/html/main.html

@@ -166,7 +166,7 @@
                               <a class="nav-link px-3 right-nav-link"  href="javascript:void(0)" id = 'locateTab' relaPanel="#locate">查找定位</a>
                               <a class="nav-link px-3 right-nav-link"  href="javascript:void(0)" id = 'locateTab' relaPanel="#locate">查找定位</a>
                           </li>-->
                           </li>-->
                           <li class="nav-item">
                           <li class="nav-item">
-                              <a class="nav-link px-1 right-nav-link" href="javascript:void(0)" id = 'stdBillsGuidanceTab' relaPanel="#zy">清单</a>
+                              <a class="nav-link px-1 right-nav-link" href="javascript:void(0)" id = 'stdBillsGuidanceTab' relaPanel="#zy">标准清单</a>
                           </li>
                           </li>
                          <!-- <li class="nav-item">
                          <!-- <li class="nav-item">
                               <a class="nav-link px-3" href="javascript:void(0)" id = 'stdBillsTab' relaPanel="#qd">清单规则</a>
                               <a class="nav-link px-3" href="javascript:void(0)" id = 'stdBillsTab' relaPanel="#qd">清单规则</a>

+ 20 - 7
web/building_saas/main/js/models/importStandardInterface.js

@@ -1335,6 +1335,9 @@ const ImportXML = (() => {
                     bills.feeRate = '';
                     bills.feeRate = '';
                     continue;
                     continue;
                 }
                 }
+                if (typeof bills.calcBase !== 'string') {
+                    bills.calcBase = String(bills.calcBase);
+                }
                 //提取基数
                 //提取基数
                 bills.calcBase = bills.calcBase.replace(/\s/g, '');
                 bills.calcBase = bills.calcBase.replace(/\s/g, '');
                 let bases = bills.calcBase.split(/[\+\-\*\/]/g);
                 let bases = bills.calcBase.split(/[\+\-\*\/]/g);
@@ -1417,6 +1420,18 @@ const ImportXML = (() => {
                 shareInfo: [],
                 shareInfo: [],
                 engs: []
                 engs: []
             };
             };
+            // 所有的清单模板库ID
+            let allTemplateLibIDs = [];
+            xmlObj.engs.forEach(eng => {
+                eng.tenders.forEach(tender => {
+                    let templateLibID = tender.property.templateLibID;
+                    if (!allTemplateLibIDs.includes(templateLibID)) {
+                        allTemplateLibIDs.push(templateLibID);
+                    }
+                });
+            });
+            // 模板映射:{[templateLibID]: data}
+            let templateMapping = await ajaxPost('/template/bills/api/getNeedfulTemplate', {allTemplateLibIDs});
             for (let i = 0; i < xmlObj.engs.length; i++) {
             for (let i = 0; i < xmlObj.engs.length; i++) {
                 let curEng = xmlObj.engs[i],
                 let curEng = xmlObj.engs[i],
                     preEng = postConstructData.engs[i - 1];
                     preEng = postConstructData.engs[i - 1];
@@ -1448,7 +1463,8 @@ const ImportXML = (() => {
                         preTender.tender.NextSiblingID = curTender.ID;
                         preTender.tender.NextSiblingID = curTender.ID;
                     }
                     }
                     //提取详细数据
                     //提取详细数据
-                    let postTenderData = await transformTender(curTender, IDPlaceholder);
+                    let needfulTemplate = _.cloneDeep(templateMapping[curTender.property.templateLibID]);
+                    let postTenderData = await transformTender(curTender, IDPlaceholder, needfulTemplate);
                     postTenderData.tender.property.rootProjectID = postConstructData.ID;
                     postTenderData.tender.property.rootProjectID = postConstructData.ID;
                     postEngData.tenders.push(postTenderData);
                     postEngData.tenders.push(postTenderData);
                 }
                 }
@@ -1458,8 +1474,8 @@ const ImportXML = (() => {
         };
         };
 
 
         //转换单位工程的数据(直接可插入数据库的数据),返回{tender: {}, bills: [], ration: [], rationGLJ: [], projectGLJ: [], unitPrice: [], mixRatio: []}
         //转换单位工程的数据(直接可插入数据库的数据),返回{tender: {}, bills: [], ration: [], rationGLJ: [], projectGLJ: [], unitPrice: [], mixRatio: []}
-        async function transformTender(tenderData, IDPlaceholder) {
-            let detailData = await transformBills(tenderData, IDPlaceholder);
+        async function transformTender(tenderData, IDPlaceholder, needfulTemplate) {
+            let detailData = await transformBills(tenderData, IDPlaceholder, needfulTemplate);
             //提取需要插入的单位工程数据
             //提取需要插入的单位工程数据
             let tender = {
             let tender = {
                 ID: tenderData.ID,
                 ID: tenderData.ID,
@@ -1481,10 +1497,7 @@ const ImportXML = (() => {
             return detailData;
             return detailData;
         }
         }
         //转换清单数据
         //转换清单数据
-        async function transformBills(tenderData, IDPlaceholder) {
-            //获取清单模板数据
-            let needfulTemplate = await ajaxPost('/template/bills/api/getNeedfulTemplate',
-                {templateLibID: tenderData.property.templateLibID});
+        async function transformBills(tenderData, IDPlaceholder, needfulTemplate) {
             //处理单位工程费用汇总的清单,这一部分没有靠谱的规则,特殊处理。
             //处理单位工程费用汇总的清单,这一部分没有靠谱的规则,特殊处理。
             setupFeeSummary(tenderData.feeSummary, needfulTemplate);
             setupFeeSummary(tenderData.feeSummary, needfulTemplate);
             //处理添加清单数据
             //处理添加清单数据

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

@@ -197,7 +197,6 @@ const BillsSub = (function() {
         }
         }
         $('#qdjlTools').show();
         $('#qdjlTools').show();
         // 库名称、清单子菜单名称动态显示
         // 库名称、清单子菜单名称动态显示
-        $('#stdBillsGuidanceTab').text(libText);
         $('#linkQDJL').text(libText);
         $('#linkQDJL').text(libText);
         // 监听按钮事件
         // 监听按钮事件
         bindListener();
         bindListener();

+ 1 - 2
web/building_saas/pm/js/pm_import.js

@@ -442,12 +442,10 @@ const importView = (() => {
                 if (sameDepthProjs.find(node => node.data.name === xmlObj.name)) {
                 if (sameDepthProjs.find(node => node.data.name === xmlObj.name)) {
                     xmlObj.name += `(${moment(Date.now()).format('YYYY-MM-DD HH:mm:ss')})`;
                     xmlObj.name += `(${moment(Date.now()).format('YYYY-MM-DD HH:mm:ss')})`;
                 }
                 }
-                //console.log(xmlObj);
                 $('#importInterface').modal('hide');
                 $('#importInterface').modal('hide');
                 pr.start('导入文件', '正在生成文件,请稍候……');
                 pr.start('导入文件', '正在生成文件,请稍候……');
                 let importData = await importXML.transformData(xmlObj);
                 let importData = await importXML.transformData(xmlObj);
                 let blob = new Blob([JSON.stringify(importData)], {type: 'text/plain;charset=utf-8'});
                 let blob = new Blob([JSON.stringify(importData)], {type: 'text/plain;charset=utf-8'});
-                console.log(blob);
                 let formData = new FormData();
                 let formData = new FormData();
                 formData.append('file', blob);
                 formData.append('file', blob);
                 $.ajax({
                 $.ajax({
@@ -477,6 +475,7 @@ const importView = (() => {
                     STATE.importing = false;
                     STATE.importing = false;
                 }, 500);
                 }, 500);
                 pr.end();
                 pr.end();
+                console.log(err);
                 alert(err);
                 alert(err);
             }
             }
         });
         });