Преглед изворни кода

导入材料预算价Excel,框架

chenshilong пре 3 година
родитељ
комит
e2f5b4e366
1 измењених фајлова са 33 додато и 58 уклоњено
  1. 33 58
      web/building_saas/main/js/views/project_glj_view.js

+ 33 - 58
web/building_saas/main/js/views/project_glj_view.js

@@ -1764,67 +1764,39 @@ $(function () {
   });
 
   let importJson = null;
-  
-  function showAlert(msg) {
+
+  function showAlert(msg, isHint) {
     $("#showAlert").removeClass("alert-success");
-    $("#showAlert").addClass("alert-danger");
+    if (isHint) $("#showAlert").addClass("alert-info");
+    else $("#showAlert").addClass("alert-danger");
     $("#showAlert").text(msg);
     $("#showAlert").show();
   }
 
-  function extactDatas(sheets) {
-    debugger;
+  function getExcelData(sheets) {
+    const err = "当前Excel文件格式不正确,请参考导出Excel材料预算价文件!";
+    const sheet = sheets["材料预算价"];
+    if (!sheet) throw err;
+    const sheetData = sheet.data.dataTable;
+    if (!sheetData) throw err;
+    const isRightHead =
+      sheetData[0][0].value === "编号" &&
+      sheetData[0][1].value === "名称" &&
+      sheetData[0][2].value === "规格" &&
+      sheetData[0][3].value === "单位" &&
+      sheetData[0][4].value === "预算价";
+    if (!isRightHead) throw err;
+
     let rst = [];
-    let curSheetType = null;
-    for (let sheetName in sheets) {
-      let sheetData = sheets[sheetName];
-      if (!sheetData.data.dataTable || sheetData.index !== 0) {
-        continue;
-      }
-      let sheetType = getFileType(sheetData);
-      if (curSheetType !== null && sheetType !== curSheetType) {
-        throw "excel文件中存在不同格式的表格。";
-      }
-      curSheetType = sheetType;
-      let colMapping = getColMapping(sheetType);
-      let datas = [];
-      if (sheetType === fileType.gcl) {
-        datas = extractGCLDatas(sheetData, colMapping);
-      } else if (sheetType === fileType.qdsl) {
-        datas = extractSLDatas(sheetData, colMapping);
-      } else {
-        const slSheetData = transformGCLExToSL(sheetData);
-        datas = extractSLDatas(slSheetData, colMapping);
-      }
-      rst = rst.concat(datas);
-    }
-    //编号去除空格 清除多余数据 设置数据
-    for (let data of rst) {
-      if (data.code && typeof data.code === "string") {
-        data.code = data.code.replace(/\s/g, "");
-      }
-      if (data.unit === "㎡") {
-        data.unit = "m2";
-      } else if (data.unit === "m³") {
-        data.unit = "m3";
-      }
-      data.projectID = projectObj.project.ID();
-      data.type = billType.BILL;
-      delete data.parent;
-      delete data.depth;
-    }
-    //将表根节点的ParentID设置成第100章至700章清单的ID
-    let fixedBill = projectObj.project.Bills.tree.roots.find(
-      (node) => node.data && node.data.flagsIndex && node.data.flagsIndex.fixed && node.data.flagsIndex.fixed.flag === fixedFlag.ONE_SEVEN_BILLS
-    );
-    let rootDatas = rst.filter((data) => data.ParentID === -1);
-    for (let root of rootDatas) {
-      root.ParentID = fixedBill.data.ID;
-    }
-    //清单 第100章 总则清单需要加上固定ID
-    let oneHundredBills = rootDatas.find((data) => data.name && /第100章/.test(data.name));
-    if (oneHundredBills) {
-      oneHundredBills.flags = [{ flag: fixedFlag.ONE_HUNDRED_BILLS, fieldName: "fixed" }];
+    for (let row = 1; row < sheet.rowCount; row++) {
+      const rowData = {
+        code: sheetData[row][0].value,
+        name: sheetData[row][1].value,
+        specs: sheetData[row][2].value,
+        unit: sheetData[row][3].value,
+        unitPrice: sheetData[row][4].value,
+      };
+      rst.push(rowData);
     }
     return rst;
   }
@@ -1881,10 +1853,13 @@ $(function () {
         throw "项目数据出错";
       }
 
-      let importPriceData = extactDatas(importJson.sheets);
-      if (importPriceData.length === 0) {
-        throw "当前Excel文件格式不正确,请参考导出Excel材料预算价文件!";
+      let priceData = getExcelData(importJson.sheets);
+      if (priceData.length === 0) {
+        throw "当前Excel文件没有材料预算价!";
       }
+
+      showAlert("正在导入预算价...", true);
+      //
     } catch (err) {
       console.log(err);
       showAlert(err);