瀏覽代碼

概算汇总,从Excel复制粘贴多行量,没有造价计算。

chenshilong 2 年之前
父節點
當前提交
80b93cd946
共有 2 個文件被更改,包括 218 次插入189 次删除
  1. 218 188
      web/building_saas/budget-summary/js/budgetSummarySheet.js
  2. 0 1
      web/building_saas/main/js/models/calc_program.js

+ 218 - 188
web/building_saas/budget-summary/js/budgetSummarySheet.js

@@ -1,12 +1,9 @@
-
 let budgetSummaryTreeSetting;
 /* 建设其他费表格相关 */
 const budgetSummaryObj = (() => {
-
   const { isEmptyVal, isDef, isNumber } = window.commonUtil;
   const { fixedFlag, BudgetArea, BudgetType } = window.commonConstants;
 
-
   let curBudgetType = BudgetType.BUILDING;
 
   // 原始数据
@@ -25,31 +22,62 @@ const budgetSummaryObj = (() => {
 
   // 单位设置下拉框
   const setUnitCombo = (sheet, data) => {
-    const unitCol = budgetSummaryTreeSetting.cols.findIndex(item => item.data.field === 'unit');
+    const unitCol = budgetSummaryTreeSetting.cols.findIndex((item) => item.data.field === "unit");
     if (unitCol >= 0) {
       TREE_SHEET_HELPER.massOperationSheet(sheet, () => {
         const comboBox = sheetCommonObj.getDynamicCombo();
         comboBox
           .itemHeight(10)
-          .items(['m', 'm2', 'm3', 'km', 't', 'kg', '台班', '工日', '昼夜', '元', '项', '处', '个', '件',
-            '根', '组', '系统', '台', '套', '株', '丛', '缸', '支', '只', '块', '座', '对', '份', '樘', '攒', '榀'])
+          .items([
+            "m",
+            "m2",
+            "m3",
+            "km",
+            "t",
+            "kg",
+            "台班",
+            "工日",
+            "昼夜",
+            "元",
+            "项",
+            "处",
+            "个",
+            "件",
+            "根",
+            "组",
+            "系统",
+            "台",
+            "套",
+            "株",
+            "丛",
+            "缸",
+            "支",
+            "只",
+            "块",
+            "座",
+            "对",
+            "份",
+            "樘",
+            "攒",
+            "榀",
+          ])
           .editable(true);
         data.forEach((item, index) => {
           sheet.getCell(index, unitCol).cellType(comboBox);
-        })
+        });
       });
     }
-  }
+  };
 
   const getFieldByCol = (col) => {
     const item = budgetSummaryTreeSetting.cols[col];
-    return item && item.data && item.data.field || null;
-  }
+    return (item && item.data && item.data.field) || null;
+  };
 
   // 单元格值验证器
   const validator = {
     text() {
-      return true
+      return true;
     },
     number(val) {
       return !isDef(val) || isNumber(val);
@@ -58,10 +86,10 @@ const budgetSummaryObj = (() => {
   const getValidator = (col) => {
     const item = budgetSummaryTreeSetting.cols[col];
     if (!item) {
-      return 'text';
+      return "text";
     }
-    return validator[item.data.type || 'text'];
-  }
+    return validator[item.data.type || "text"];
+  };
 
   // 单元格文本转换处理
   const textFactory = {
@@ -69,40 +97,40 @@ const budgetSummaryObj = (() => {
       if (node.data.calcBase && node.data.calcBase !== "") {
         return cbParser.toFExpr(node.data.calcBase);
       }
-      return '';
+      return "";
     },
-    'feesIndex.common.unitFee': (node) => {
+    "feesIndex.common.unitFee": (node) => {
       if (node && node.data.area === BudgetArea.CONSTRUCTION_FEE) {
         // 实时计算显示单价
-        const totalFee = _.get(node, 'data.feesIndex.common.totalFee', 0);
+        const totalFee = _.get(node, "data.feesIndex.common.totalFee", 0);
         const quantity = node.data.quantity || 0;
         if (!totalFee || !quantity) {
-          return '';
+          return "";
         }
         return scMathUtil.roundForObj(totalFee / quantity, 2); // 小数位数写死2位置
       }
       if (node && node.data.area === BudgetArea.CONSTRUCTION_OTHER_FEE) {
-        return _.get(node, 'data.feesIndex.common.unitFee', '') || '';
+        return _.get(node, "data.feesIndex.common.unitFee", "") || "";
       }
-      return '';
+      return "";
     },
-    'feesIndex.common.totalFee': (node) => {
-      return _.get(node, 'data.feesIndex.common.totalFee', '') || '';
+    "feesIndex.common.totalFee": (node) => {
+      return _.get(node, "data.feesIndex.common.totalFee", "") || "";
     },
-    'feesIndex.estimation.totalFee': (node) => {
-      return _.get(node, 'data.feesIndex.estimation.totalFee', '') || '';
+    "feesIndex.estimation.totalFee": (node) => {
+      return _.get(node, "data.feesIndex.estimation.totalFee", "") || "";
     },
-    'feesIndex.building.totalFee': (node) => {
-      return _.get(node, 'data.feesIndex.building.totalFee', '') || '';
+    "feesIndex.building.totalFee": (node) => {
+      return _.get(node, "data.feesIndex.building.totalFee", "") || "";
     },
-    'feesIndex.installation.totalFee': (node) => {
-      return _.get(node, 'data.feesIndex.installation.totalFee', '') || '';
+    "feesIndex.installation.totalFee": (node) => {
+      return _.get(node, "data.feesIndex.installation.totalFee", "") || "";
     },
-    'feesIndex.equipment.totalFee': (node) => {
-      return _.get(node, 'data.feesIndex.equipment.totalFee', '') || '';
+    "feesIndex.equipment.totalFee": (node) => {
+      return _.get(node, "data.feesIndex.equipment.totalFee", "") || "";
     },
-    'feesIndex.other.totalFee': (node) => {
-      return _.get(node, 'data.feesIndex.other.totalFee', '') || '';
+    "feesIndex.other.totalFee": (node) => {
+      return _.get(node, "data.feesIndex.other.totalFee", "") || "";
     },
   };
 
@@ -120,11 +148,11 @@ const budgetSummaryObj = (() => {
           return;
         }
         const textFunc = textFactory[field];
-        const val = textFunc ? textFunc(node) : node.data[field] || '';
+        const val = textFunc ? textFunc(node) : node.data[field] || "";
         sheet.setValue(row, col, val);
       });
     });
-  }
+  };
 
   // 刷新整个表格
   const refreshAll = (sheet) => {
@@ -132,16 +160,16 @@ const budgetSummaryObj = (() => {
     const colCount = budgetSummaryTreeSetting.cols.length;
     for (let row = 0; row < tree.items.length; row++) {
       for (let col = 0; col < colCount; col++) {
-        changedCells.push({ row, col })
+        changedCells.push({ row, col });
       }
     }
     refreshData(sheet, changedCells);
-  }
+  };
 
   // 更新数据
   const bulkOperation = async (bulkData) => {
     if (bulkData.length) {
-      await ajaxPost('/bills/bulkOperation', { bulkData });
+      await ajaxPost("/bills/bulkOperation", { bulkData });
     }
   };
 
@@ -149,9 +177,9 @@ const budgetSummaryObj = (() => {
   const calcEstimate = (nodes) => {
     const dataArr = [];
     const parentIDs = new Set();
-    nodes.forEach(node => parentIDs.add(node.data.ParentID));
+    nodes.forEach((node) => parentIDs.add(node.data.ParentID));
     const parentNodes = [];
-    parentIDs.forEach(parentID => {
+    parentIDs.forEach((parentID) => {
       const node = tree.findNode(parentID);
       if (!node) {
         return;
@@ -161,18 +189,18 @@ const budgetSummaryObj = (() => {
         return;
       }
       let estimateFee = 0;
-      node.children.forEach(child => {
-        const childEstimateItem = child.data.fees && child.data.fees.find(item => item.fieldName === 'estimation') || null;
+      node.children.forEach((child) => {
+        const childEstimateItem = (child.data.fees && child.data.fees.find((item) => item.fieldName === "estimation")) || null;
         const childEstimateFee = childEstimateItem ? childEstimateItem.totalFee : 0;
         estimateFee = scMathUtil.roundForObj(estimateFee + childEstimateFee, decimalObj.bills.totalPrice);
       });
-      const estimateItem = node.data.fees && node.data.fees.find(item => item.fieldName === 'estimation') || null;
+      const estimateItem = (node.data.fees && node.data.fees.find((item) => item.fieldName === "estimation")) || null;
       const orgEstimateFee = estimateItem ? estimateItem.totalFee : 0;
       if (orgEstimateFee !== estimateFee) {
         if (estimateItem) {
           estimateItem.totalFee = estimateFee;
         } else {
-          node.data.fees.push({ fieldName: 'estimation', totalFee: estimateFee, unitFee: 0 });
+          node.data.fees.push({ fieldName: "estimation", totalFee: estimateFee, unitFee: 0 });
         }
         dataArr.push({ ID: node.data.ID, fees: node.data.fees });
       }
@@ -207,35 +235,36 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.start();
       const IDMap = {};
       const bulkData = [];
+
       changedCells.forEach(({ row, col }) => {
         const node = tree.items[row];
         if (!node) {
           return;
         }
-        if (!nodes.find(n => n.data.ID !== node.data.ID)) {
+        if (!nodes.find((n) => n.data.ID === node.data.ID)) {
           nodes.push(node);
         }
         const field = getFieldByCol(col);
-        const value = sheet.getValue(row, col) || '';
-        const data = (IDMap[node.data.ID] || (IDMap[node.data.ID] = {}));
-        if (['feesIndex.common.unitFee'].includes(field)) {
+        const value = sheet.getValue(row, col) || "";
+        const data = IDMap[node.data.ID] || (IDMap[node.data.ID] = {});
+        if (["feesIndex.common.unitFee"].includes(field)) {
           const fees = node.data.fees || [];
-          const feeItem = fees.find(item => item.fieldName === 'common');
+          const feeItem = fees.find((item) => item.fieldName === "common");
           if (feeItem) {
             feeItem.unitFee = value;
           } else {
-            fees.push({ fieldName: 'common', totalFee: 0, unitFee: +value });
+            fees.push({ fieldName: "common", totalFee: 0, unitFee: +value });
           }
           data[field] = fees;
           node.data[field] = fees;
           node.data.feesIndex = getFeeIndex(node.data.fees);
-        } else if (field === 'feesIndex.estimation.totalFee') {
+        } else if (field === "feesIndex.estimation.totalFee") {
           const fees = node.data.fees || [];
-          const feeItem = fees.find(item => item.fieldName === 'estimation');
+          const feeItem = fees.find((item) => item.fieldName === "estimation");
           if (feeItem) {
             feeItem.totalFee = value;
           } else {
-            fees.push({ fieldName: 'estimation', totalFee: +value, unitFee: 0 });
+            fees.push({ fieldName: "estimation", totalFee: +value, unitFee: 0 });
           }
           data.fees = fees;
           node.data.fees = fees;
@@ -245,20 +274,20 @@ const budgetSummaryObj = (() => {
           data[field] = value;
           node.data[field] = value;
         }
-        if (field === 'calcBase') {
+        if (field === "calcBase") {
           node.data.userCalcBase = value;
           projectObj.project.calcBase.calculate(node, null, false);
           if (!projectObj.project.calcBase.success) {
             throw projectObj.project.calcBase.errMsg;
           } else if (isEmptyVal(value)) {
             // 删除清单基数,单价要清空
-            calcTools.setFieldValue(node, 'feesIndex.common.unitFee', 0);
+            calcTools.setFieldValue(node, "feesIndex.common.unitFee", 0);
           }
           data.calcBase = node.data.calcBase;
           data.calcBaseValue = node.data.calcBaseValue;
           data.tenderCalcBaseValue = node.data.tenderCalcBaseValue;
         }
-        if (['quantity', 'feesIndex.common.unitFee', 'calcBase', 'feeRate'].includes(field) && node.data.area !== BudgetArea.CONSTRUCTION_FEE) {
+        if (["quantity", "feesIndex.common.unitFee", "calcBase", "feeRate"].includes(field) && node.data.area !== BudgetArea.CONSTRUCTION_FEE) {
           needCalc = true;
         }
       });
@@ -280,8 +309,8 @@ const budgetSummaryObj = (() => {
       if (calcEstimateNodes.length) {
         dataArr.push(...calcEstimate(calcEstimateNodes));
       }
-      
-      dataArr.forEach(item => {
+
+      dataArr.forEach((item) => {
         delete item.projectID;
         const data = IDMap[item.ID];
         if (data) {
@@ -291,55 +320,51 @@ const budgetSummaryObj = (() => {
         }
       });
       // 保存节点
-      Object
-        .entries(IDMap)
-        .forEach(([ID, data]) => {
-          const node = tree.findNode(ID);
-          if (!node) {
-            return;
-          }
-          // 处理被计算程序计算冲掉的估算总额
-          const orgData = orgMap[ID];
-          const orgEstimationItem = orgData.fees && orgData.fees.find(item => item.fieldName === 'estimation');
-          const orgEstimationFee = orgEstimationItem ? orgEstimationItem.totalFee : 0;
-          const estimationItem = data.fees && data.fees.find(item => item.fieldName === 'estimation');
-          const estimationFee = estimationItem ? estimationItem.totalFee : 0;
-          if (orgEstimationFee !== estimationFee) {
-            if (!estimationItem && data.fees) {
-              data.fees.push({ fieldName: 'estimation', totalFee: orgEstimationFee });
-            }
+      Object.entries(IDMap).forEach(([ID, data]) => {
+        const node = tree.findNode(ID);
+        if (!node) {
+          return;
+        }
+        // 处理被计算程序计算冲掉的估算总额
+        const orgData = orgMap[ID];
+        const orgEstimationItem = orgData.fees && orgData.fees.find((item) => item.fieldName === "estimation");
+        const orgEstimationFee = orgEstimationItem ? orgEstimationItem.totalFee : 0;
+        const estimationItem = data.fees && data.fees.find((item) => item.fieldName === "estimation");
+        const estimationFee = estimationItem ? estimationItem.totalFee : 0;
+        if (orgEstimationFee !== estimationFee) {
+          if (!estimationItem && data.fees) {
+            data.fees.push({ fieldName: "estimation", totalFee: orgEstimationFee });
           }
-          
-          // 处理其他费用
-          if (node.isBelongToFlags([fixedFlag.CONSTRUCTION_OTHER_FEE])) {
-            const fees = data.fees || [];
-            const commonFeeItem = fees.find(item => item.fieldName === 'common');
-            const otherFeeItem = fees.find(item => item.fieldName === 'other');
-            if (otherFeeItem) {
-              otherFeeItem.totalFee = commonFeeItem && commonFeeItem.totalFee || 0;
-            } else {
-              fees.push({ fieldName: 'other', totalFee: commonFeeItem && commonFeeItem.totalFee || 0 });
-            }
+        }
+
+        // 处理其他费用
+        if (node.isBelongToFlags([fixedFlag.CONSTRUCTION_OTHER_FEE])) {
+          const fees = data.fees || [];
+          const commonFeeItem = fees.find((item) => item.fieldName === "common");
+          const otherFeeItem = fees.find((item) => item.fieldName === "other");
+          if (otherFeeItem) {
+            otherFeeItem.totalFee = (commonFeeItem && commonFeeItem.totalFee) || 0;
+          } else {
+            fees.push({ fieldName: "other", totalFee: (commonFeeItem && commonFeeItem.totalFee) || 0 });
           }
-          const actualID = node.data.area === BudgetArea.CONSTRUCTION_FEE ? node.data.orgProjectID : ID;
-          const updateType = node.data.area === BudgetArea.CONSTRUCTION_FEE ? 'updateProject' : 'update';
-          bulkData.push({ type: updateType, data: { ...data, ID: actualID } });
-        });
+        }
+        const actualID = node.data.area === BudgetArea.CONSTRUCTION_FEE ? node.data.orgProjectID : ID;
+        const updateType = node.data.area === BudgetArea.CONSTRUCTION_FEE ? "updateProject" : "update";
+        bulkData.push({ type: updateType, data: { ...data, ID: actualID } });
+      });
       await bulkOperation(bulkData);
-      Object
-        .entries(IDMap)
-        .forEach(([ID, data]) => {
-          const node = tree.findNode(ID);
-          if (node) {
-            Object.assign(node.data, data);
-            node.data.feesIndex = getFeeIndex(node.data.fees);
-            orgMap[ID] = _.cloneDeep(node.data);
-          }
-        });
+      Object.entries(IDMap).forEach(([ID, data]) => {
+        const node = tree.findNode(ID);
+        if (node) {
+          Object.assign(node.data, data);
+          node.data.feesIndex = getFeeIndex(node.data.fees);
+          orgMap[ID] = _.cloneDeep(node.data);
+        }
+      });
       refreshAll(sheet);
     } catch (err) {
       console.log(err);
-      nodes.forEach(node => {
+      nodes.forEach((node) => {
         const orgItem = orgMap[node.data.ID];
         if (orgItem) {
           node.data = _.cloneDeep(orgItem);
@@ -351,11 +376,11 @@ const budgetSummaryObj = (() => {
     } finally {
       $.bootstrapLoading.end();
     }
-  }
+  };
   // 是否是属于工程费用区域的节点
   const isConstructionFeeArea = (node) => {
     return node && node.data && node.data.area === BudgetArea.CONSTRUCTION_FEE;
-  }
+  };
   // 工具栏可操作性
   let upLevelDisabled = false;
   let downLevelDisabled = false;
@@ -363,28 +388,33 @@ const budgetSummaryObj = (() => {
   let downMoveDisabled = false;
   const refreshToolsBar = (node) => {
     upLevelDisabled = !node || !node.canUpLevel() || isConstructionFeeArea(node) || (node.nextSibling && node.data.calcBase);
-    downLevelDisabled = !node || !node.canDownLevel() || isConstructionFeeArea(node) || isConstructionFeeArea(node.preSibling) || (node.preSibling && node.preSibling.data.calcBase);
+    downLevelDisabled =
+      !node ||
+      !node.canDownLevel() ||
+      isConstructionFeeArea(node) ||
+      isConstructionFeeArea(node.preSibling) ||
+      (node.preSibling && node.preSibling.data.calcBase);
     upMoveDisabled = !node || !node.canUpMove() || isConstructionFeeArea(node) || isConstructionFeeArea(node.preSibling);
     downMoveDisabled = !node || !node.canDownMove() || isConstructionFeeArea(node) || isConstructionFeeArea(node.nextSibling);
     if (upLevelDisabled) {
-      $('#budget-upLevel').addClass('disabled');
+      $("#budget-upLevel").addClass("disabled");
     } else {
-      $('#budget-upLevel').removeClass('disabled');
+      $("#budget-upLevel").removeClass("disabled");
     }
     if (downLevelDisabled) {
-      $('#budget-downLevel').addClass('disabled');
+      $("#budget-downLevel").addClass("disabled");
     } else {
-      $('#budget-downLevel').removeClass('disabled');
+      $("#budget-downLevel").removeClass("disabled");
     }
     if (upMoveDisabled) {
-      $('#budget-upMove').addClass('disabled');
+      $("#budget-upMove").addClass("disabled");
     } else {
-      $('#budget-upMove').removeClass('disabled');
+      $("#budget-upMove").removeClass("disabled");
     }
     if (downMoveDisabled) {
-      $('#budget-downMove').addClass('disabled');
+      $("#budget-downMove").addClass("disabled");
     } else {
-      $('#budget-downMove').removeClass('disabled');
+      $("#budget-downMove").removeClass("disabled");
     }
   };
   // 表格选中相关
@@ -424,13 +454,13 @@ const budgetSummaryObj = (() => {
     },
     RangeChanged(sender, args) {
       edit(args.sheet, args.changedCells);
-    }
-  }
+    },
+  };
   const bindEvents = (sheet) => {
     Object.entries(events).forEach(([ev, evFunc]) => {
       sheet.bind(GC.Spread.Sheets.Events[ev], evFunc);
     });
-  }
+  };
 
   /* 只读相关 */
   // 单元格锁定判断
@@ -441,21 +471,21 @@ const budgetSummaryObj = (() => {
     name(node) {
       return !!(node && (node.getFlag() || node.data.area === BudgetArea.CONSTRUCTION_FEE));
     },
-    'feesIndex.estimation.totalFee'(node) {
+    "feesIndex.estimation.totalFee"(node) {
       return !!(!node || node.children.length);
     },
-    'feesIndex.common.unitFee'(node) {
-      return !!(node && (node.data.area === BudgetArea.CONSTRUCTION_FEE));
+    "feesIndex.common.unitFee"(node) {
+      return !!(node && node.data.area === BudgetArea.CONSTRUCTION_FEE);
     },
     calcBase(node) {
-      return !!(node && (node.children.length  || node.data.area === BudgetArea.CONSTRUCTION_FEE));
+      return !!(node && (node.children.length || node.data.area === BudgetArea.CONSTRUCTION_FEE));
     },
     feeRate(node) {
       return !!(node && (node.children.length || node.data.area === BudgetArea.CONSTRUCTION_FEE));
     },
     remark(node) {
       return !!(node && node.data.area === BudgetArea.CONSTRUCTION_FEE);
-    }
+    },
   };
   const lockData = (sheet, nodes, isMass = true) => {
     const lock = () => {
@@ -484,7 +514,7 @@ const budgetSummaryObj = (() => {
         }
       }
       return endIndex; */
-    }
+    };
     if (isMass) {
       TREE_SHEET_HELPER.massOperationSheet(sheet, () => {
         return lock();
@@ -492,18 +522,18 @@ const budgetSummaryObj = (() => {
     } else {
       return lock();
     }
-  }
+  };
 
   /* 单元格类型 */
   const calcBaseButtonCallback = (hitInfo) => {
-    calcBaseView.onCalcBaseButtonClick(hitInfo, 'budget');
+    calcBaseView.onCalcBaseButtonClick(hitInfo, "budget");
   };
   const cellTypeFactory = {
     calcBase(node) {
       const locked = lockFactory.calcBase(node);
       return sheetCommonObj.getCusButtonCellType(calcBaseButtonCallback, locked);
-    }
-  }
+    },
+  };
 
   /* 设置可编辑区域节点的只读性和单元格类型 */
   const setCells = (sheet, startRow, nodes) => {
@@ -530,12 +560,12 @@ const budgetSummaryObj = (() => {
         }
       });
     }
-  }
+  };
   /* 初始化表格 */
   const initSpread = () => {
     if (!spread) {
       // spread = sheetCommonObj.createSpread($('#budget-summary-sheet')[0], 1);
-      spread = SheetDataHelper.createNewSpread($('#budget-summary-sheet')[0]);
+      spread = SheetDataHelper.createNewSpread($("#budget-summary-sheet")[0]);
       sheetCommonObj.spreadDefaultStyle(spread);
       // 设置表头
       const sheet = spread.getSheet(0);
@@ -548,14 +578,14 @@ const budgetSummaryObj = (() => {
       spread.refresh();
     }
     return spread;
-  }
+  };
 
   // 初始化树
   const initTree = (data, sheet, setting) => {
-    tree = idTree.createNew({ id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true });
+    tree = idTree.createNew({ id: "ID", pid: "ParentID", nid: "NextSiblingID", rootId: -1, autoUpdate: true });
     const controller = TREE_SHEET_CONTROLLER.createNew(tree, sheet, setting, false, true);
     tree.loadDatas(data);
-    tree.items.forEach(node => {
+    tree.items.forEach((node) => {
       node.source = node;
       node.sourceType = ModuleNames.bills;
     });
@@ -567,21 +597,21 @@ const budgetSummaryObj = (() => {
       setCells(sheet, 0, tree.items);
       // 表格格式化
       budgetSummaryTreeSetting.cols.forEach((item, index) => {
-        sheet.setFormatter(-1, index, item.formatter || '@', GC.Spread.Sheets.SheetArea.viewport);
+        sheet.setFormatter(-1, index, item.formatter || "@", GC.Spread.Sheets.SheetArea.viewport);
       });
     });
     selectCell(sheet.getActiveRowIndex(), sheet.getActiveColumnIndex());
-  }
+  };
 
   /* 右键菜单 */
   // 更新树结构数据
   const updateTree = (sheet, updateData) => {
     // 更新数据
-    updateData.forEach(item => {
-      if (item.type === 'new') {
+    updateData.forEach((item) => {
+      if (item.type === "new") {
         orgMap[item.data.ID] = _.cloneDeep(item.data);
-        rawData.push(item.data)
-      } else if (item.type === 'update') {
+        rawData.push(item.data);
+      } else if (item.type === "update") {
         if (orgMap[item.data.ID]) {
           Object.assign(orgMap[item.data.ID], item.data);
         }
@@ -591,7 +621,7 @@ const budgetSummaryObj = (() => {
         }
       } else {
         delete orgMap[item.data.ID];
-        const removeIndex = rawData.findIndex(d => d.ID === item.data.ID);
+        const removeIndex = rawData.findIndex((d) => d.ID === item.data.ID);
         if (removeIndex > -1) {
           rawData.splice(removeIndex, 1);
         }
@@ -599,7 +629,7 @@ const budgetSummaryObj = (() => {
     });
     // 重新初始化树
     initTree(rawData, sheet, budgetSummaryTreeSetting);
-  }
+  };
   let loading = false;
   // 插入
   const insert = async (sheet, selected) => {
@@ -610,8 +640,8 @@ const budgetSummaryObj = (() => {
       loading = true;
       $.bootstrapLoading.start();
       const updateData = tree.getInsertData(selected.data.ParentID, selected.data.NextSiblingID, uuid.v1());
-      const newData = updateData.filter(item => item.type === 'new');
-      newData.forEach(item => {
+      const newData = updateData.filter((item) => item.type === "new");
+      newData.forEach((item) => {
         item.data.fees = [];
         item.data.flags = [];
         item.feesIndex = {};
@@ -628,7 +658,7 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.end();
       loading = false;
     }
-  }
+  };
   // 删除
   const remove = async (sheet, selected) => {
     try {
@@ -646,7 +676,7 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.end();
       loading = false;
     }
-  }
+  };
   // 升级
   const upLevel = async (selected) => {
     if (!spread || !tree) {
@@ -669,7 +699,7 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.end();
       loading = false;
     }
-  }
+  };
   // 降级
   const downLevel = async (selected) => {
     if (!spread || !tree) {
@@ -692,7 +722,7 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.end();
       loading = false;
     }
-  }
+  };
   // 上移
   const upMove = async (selected) => {
     if (!spread || !tree) {
@@ -719,7 +749,7 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.end();
       loading = false;
     }
-  }
+  };
   // 下移
   const downMove = async (selected) => {
     if (!spread || !tree) {
@@ -746,8 +776,7 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.end();
       loading = false;
     }
-
-  }
+  };
   // 初始化右键菜单
   const initContextMenu = () => {
     if (!spread) {
@@ -757,45 +786,45 @@ const budgetSummaryObj = (() => {
     let curNode;
     const sheet = spread.getSheet(0);
     $.contextMenu({
-      selector: '#budget-summary-sheet',
+      selector: "#budget-summary-sheet",
       build: function ($trigger, e) {
         const target = SheetDataHelper.safeRightClickSelection($trigger, e, spread);
         curRow = target.row;
-        curNode = tree && tree.items[curRow] || null;
+        curNode = (tree && tree.items[curRow]) || null;
         selectCell(target.row, target.col, true);
         return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
       },
       items: {
         insert: {
-          name: '插入行',
-          icon: 'fa-sign-in',
+          name: "插入行",
+          icon: "fa-sign-in",
           disabled() {
             return !curNode || (curNode.data.area === BudgetArea.CONSTRUCTION_FEE && curNode.getFlag() !== fixedFlag.CONSTRUCTION_FEE);
           },
           callback() {
             insert(sheet, curNode);
-          }
+          },
         },
         remove: {
-          name: '删除行',
-          icon: 'fa-remove',
+          name: "删除行",
+          icon: "fa-remove",
           disabled() {
             return !curNode || isConstructionFeeArea(curNode) || curNode.getFlag();
           },
           callback() {
             remove(sheet, curNode);
-          }
+          },
         },
         refresh: {
-          name: '刷新数据',
-          icon: 'fa-refresh',
+          name: "刷新数据",
+          icon: "fa-refresh",
           callback() {
             init(projectObj.project.property.rootProjectID);
-          }
+          },
         },
-      }
+      },
     });
-  }
+  };
 
   // 初始化
   const init = async (constructionID) => {
@@ -803,13 +832,13 @@ const budgetSummaryObj = (() => {
       $.bootstrapLoading.start();
       // 得先计算费用汇总(概算汇总计算基于费用汇总算出来的总金额)
       await projectObj.project.calcProgram.getGatherFeeData();
-      const { budgetType, treeData, costGrowthRate, growthPeriod } = await ajaxPost('/bills/initialBudgetSummary', { constructionID });
+      const { budgetType, treeData, costGrowthRate, growthPeriod } = await ajaxPost("/bills/initialBudgetSummary", { constructionID });
       budgetSummaryTreeSetting = budgetType === BudgetType.BUILDING ? budgetInstallationSetting : budgetRailSetting;
       curBudgetType = budgetType;
       calcSetting.costGrowthRate = costGrowthRate;
       calcSetting.growthPeriod = growthPeriod;
-      $('#costGrowthRate').val(costGrowthRate);
-      $('#growthPeriod').val(growthPeriod);
+      $("#costGrowthRate").val(costGrowthRate);
+      $("#growthPeriod").val(growthPeriod);
       rawData = treeData;
       rawData.forEach((item) => {
         if (item.quantity) {
@@ -825,7 +854,7 @@ const budgetSummaryObj = (() => {
       });
       const spread = initSpread();
       const sheet = spread.getSheet(0);
-      rawData.forEach(item => {
+      rawData.forEach((item) => {
         orgMap[item.ID] = _.cloneDeep(item);
       });
       initTree(rawData, sheet, budgetSummaryTreeSetting);
@@ -838,47 +867,50 @@ const budgetSummaryObj = (() => {
     } finally {
       $.bootstrapLoading.end();
     }
-  }
+  };
 
   // 点击tab,重新初始化
-  $('#tab-budget-summary').click(function () {
-    if (!$(this).hasClass('active')) {
+  $("#tab-budget-summary").click(function () {
+    if (!$(this).hasClass("active")) {
       init(projectObj.project.property.rootProjectID);
     }
   });
-  $('#budget-upLevel').click(() => {
+  $("#budget-upLevel").click(() => {
     upLevel();
   });
-  $('#budget-downLevel').click(() => {
+  $("#budget-downLevel").click(() => {
     downLevel();
   });
-  $('#budget-upMove').click(() => {
+  $("#budget-upMove").click(() => {
     upMove();
   });
-  $('#budget-downMove').click(() => {
+  $("#budget-downMove").click(() => {
     downMove();
   });
 
   /* 建设项目设置 */
-  $('#openConstructionSet').click(() => {
-    $('#constructionSet').modal('show');
+  $("#openConstructionSet").click(() => {
+    $("#constructionSet").modal("show");
   });
   function isKeyNumber(keyCode) {
     // 数字
     if (keyCode >= 48 && keyCode <= 57) {
       return true;
-    } else if (keyCode >= 96 && keyCode <= 105) { //小键盘数字
+    } else if (keyCode >= 96 && keyCode <= 105) {
+      //小键盘数字
       return true;
-    } else if (keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39 || keyCode == 108 || keyCode == 110) {  // Backspace, del, 左右方向键
+    } else if (keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39 || keyCode == 108 || keyCode == 110) {
+      // Backspace, del, 左右方向键
       return true;
-    } else if (keyCode >= 112 && keyCode <= 123) { //F1 -F12
+    } else if (keyCode >= 112 && keyCode <= 123) {
+      //F1 -F12
       return true;
     }
     return false;
   }
 
   //年造价增涨率
-  $('#costGrowthRate').keydown(function (e) {
+  $("#costGrowthRate").keydown(function (e) {
     return isKeyNumber(e.keyCode);
   });
   //计费年限
@@ -886,34 +918,33 @@ const budgetSummaryObj = (() => {
     return isKeyNumber(e.keyCode);
   });
   // 确认设置
-  $('#construction-set-ok').click(async () => {
+  $("#construction-set-ok").click(async () => {
     try {
       $.bootstrapLoading.start();
-      const curCostGrowthRate = $('#costGrowthRate').val();
-      const curGrowthPeriod = $('#growthPeriod').val();
+      const curCostGrowthRate = $("#costGrowthRate").val();
+      const curGrowthPeriod = $("#growthPeriod").val();
       const bulkData = [
         {
-          type: 'updateProject',
+          type: "updateProject",
           data: {
             ID: projectObj.project.property.rootProjectID,
-            'property.costGrowthRate': curCostGrowthRate,
-            'property.growthPeriod': curGrowthPeriod,
-          }
-        }
+            "property.costGrowthRate": curCostGrowthRate,
+            "property.growthPeriod": curGrowthPeriod,
+          },
+        },
       ];
       await bulkOperation(bulkData);
       calcSetting.costGrowthRate = curCostGrowthRate;
       calcSetting.growthPeriod = curGrowthPeriod;
     } catch (err) {
       alert(err);
-      $('#costGrowthRate').val(calcSetting.costGrowthRate);
-      $('#growthPeriod').val(calcSetting.growthPeriod);
+      $("#costGrowthRate").val(calcSetting.costGrowthRate);
+      $("#growthPeriod").val(calcSetting.growthPeriod);
     } finally {
       $.bootstrapLoading.end();
     }
   });
 
-
   // 对外暴露
   return {
     getTree: () => tree,
@@ -921,5 +952,4 @@ const budgetSummaryObj = (() => {
     calcSetting,
     edit,
   };
-
 })();

+ 0 - 1
web/building_saas/main/js/models/calc_program.js

@@ -1821,7 +1821,6 @@ class CalcProgram {
 
   // 清单部分抽取出来,供分摊清单公用。commonCalcType:1 叶子清单汇总定额的费用类别; 2 父清单汇总子清单的费用类别。3: 分摊:叶子清单汇总定额的费用类别。
   innerCalcBill(treeNode, commonCalcType, tender = tenderTypes.ttCalc) {
-    debugger;
     let me = this;
     treeNode.data.programID = null;
     calcTools.initFees(treeNode);