Pārlūkot izejas kodu

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

Tony Kang 3 gadi atpakaļ
vecāks
revīzija
5ec48a4f37

+ 31 - 30
modules/all_models/bills_template_items.js

@@ -1,42 +1,43 @@
 /**
  * Created by zhang on 2018/7/13.
  */
-const mongoose = require('mongoose');
+const mongoose = require("mongoose");
 let Schema = mongoose.Schema;
 
-let collectionName = 'std_bills_template_items';
+let collectionName = "std_bills_template_items";
 
 // 标记字段
 let flagsSchema = new Schema({
-    fieldName: String,
-    flag: Number
+  fieldName: String,
+  flag: Number,
 });
 let BillsTemplateSchema = {
-    // 树结构所需ID
-    ID: Number,
-    ParentID: Number,
-    NextSiblingID: Number,
-    // 编号
-    code: String,
-    // 名称
-    name: String,
-    // 单位
-    unit: String,
-    // 类别
-    type: Number,
-    // 标记
-    flags:{
-        type: [flagsSchema],
-        default: []
-    },
-    // 所属模板库ID
-    libID: {type:String,index:true},
-    //计算基数
-    calcBase: String,
-    //费率ID
-    feeRateID:Number,
-    quantity: String,
+  // 树结构所需ID
+  ID: Number,
+  ParentID: Number,
+  NextSiblingID: Number,
+  // 编号
+  code: String,
+  // 名称
+  name: String,
+  // 单位
+  unit: String,
+  // 类别
+  type: Number,
+  // 标记
+  flags: {
+    type: [flagsSchema],
+    default: [],
+  },
+  itemCharacterText: String,
+  jobContentText: String,
+  // 所属模板库ID
+  libID: { type: String, index: true },
+  //计算基数
+  calcBase: String,
+  //费率ID
+  feeRateID: Number,
+  quantity: String,
 };
 
-mongoose.model(collectionName, new Schema(BillsTemplateSchema, {versionKey: false, collection: collectionName}));
-
+mongoose.model(collectionName, new Schema(BillsTemplateSchema, { versionKey: false, collection: collectionName }));

+ 77 - 61
modules/pm/models/templates/bills_template_model.js

@@ -3,75 +3,91 @@
  * 清单模板,新建项目使用
  */
 const BaseModel = require("../../../common/base/base_model");
-const mongoose = require('mongoose');
-const BillsTemplateSchema = mongoose.model('std_bills_template_items');
+const mongoose = require("mongoose");
+const BillsTemplateSchema = mongoose.model("std_bills_template_items");
 
 class BillsTemplateModel extends BaseModel {
-    /**
-     * 构造函数
-     *
-     * @return {void}
-     */
-    constructor() {
-        let parent = super();
-        parent.model = BillsTemplateSchema;
-        parent.init();
-    }
+  /**
+   * 构造函数
+   *
+   * @return {void}
+   */
+  constructor() {
+    let parent = super();
+    parent.model = BillsTemplateSchema;
+    parent.init();
+  }
 
-    /**
-     * 获取模板库对应的清单模板
-     * @param libID
-     * @returns {*}
-     */
-    async getTemplateData (libID) {
-        // 筛选字段
-        let field = {_id: 1, valuationId: 1, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1, flags: 1, calcBase: 1};
-        let data = await this.findDataByCondition({valuationId: valuationId, engineering: engineering}, field, false);
+  /**
+   * 获取模板库对应的清单模板
+   * @param libID
+   * @returns {*}
+   */
+  async getTemplateData(libID) {
+    // 筛选字段
+    let field = { _id: 1, valuationId: 1, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1, flags: 1, calcBase: 1 };
+    let data = await this.findDataByCondition({ valuationId: valuationId, engineering: engineering }, field, false);
 
-        return data === null ? [] : data;
-    }
+    return data === null ? [] : data;
+  }
 
-    /**
-     * 新建项目时,获取模板库对应的清单模板
-     * @param valuationId
-     * @param engineering
-     * @returns {*}
-     */
-    async getTemplateDataForNewProj (libID) {
-        // 筛选字段
-        let field = {_id: 0, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1, flags: 1,type:1, calcBase: 1,feeRateID:1,quantity:1};
-        let data = await this.findDataByCondition({libID: libID}, field, false);
+  /**
+   * 新建项目时,获取模板库对应的清单模板
+   * @param valuationId
+   * @param engineering
+   * @returns {*}
+   */
+  async getTemplateDataForNewProj(libID) {
+    // 筛选字段
+    let field = {
+      _id: 0,
+      ID: 1,
+      ParentID: 1,
+      NextSiblingID: 1,
+      code: 1,
+      name: 1,
+      unit: 1,
+      flags: 1,
+      type: 1,
+      calcBase: 1,
+      feeRateID: 1,
+      quantity: 1,
+      itemCharacterText: 1,
+      jobContentText: 1,
+    };
+    let data = await this.findDataByCondition({ libID: libID }, field, false);
 
-        return data === null ? [] : data;
-    }
+    return data === null ? [] : data;
+  }
 
-    async updateTemplate (valuationId, datas) {
-        try {
-            for (let data of datas) {
-                data.data.valuationId = valuationId;
-                let condition = {valuationId: valuationId, ID: data.data.ID}, result;
-                if (data.type === 'update') {
-                    result = await this.db.update(condition, data.data);
-                    if (result === undefined || result.ok ===undefined || !result.ok) {
-                        throw '更新数据错误';
-                    }
-                } else if (data.type === 'new') {
-                    result = await this.db.create(data.data);
-                    if (!result) {
-                        throw '新增数据错误';
-                    }
-                } else if (data.type === 'delete') {
-                    result = await this.db.delete(condition);
-                    if (result === undefined || result.ok ===undefined || !result.ok) {
-                        throw '删除数据错误';
-                    }
-                }
-            }
-            return true;
-        } catch (error) {
-            console.log(error);
+  async updateTemplate(valuationId, datas) {
+    try {
+      for (let data of datas) {
+        data.data.valuationId = valuationId;
+        let condition = { valuationId: valuationId, ID: data.data.ID },
+          result;
+        if (data.type === "update") {
+          result = await this.db.update(condition, data.data);
+          if (result === undefined || result.ok === undefined || !result.ok) {
+            throw "更新数据错误";
+          }
+        } else if (data.type === "new") {
+          result = await this.db.create(data.data);
+          if (!result) {
+            throw "新增数据错误";
+          }
+        } else if (data.type === "delete") {
+          result = await this.db.delete(condition);
+          if (result === undefined || result.ok === undefined || !result.ok) {
+            throw "删除数据错误";
+          }
         }
+      }
+      return true;
+    } catch (error) {
+      console.log(error);
     }
-};
+  }
+}
 
 module.exports = BillsTemplateModel;

+ 126 - 11
web/over_write/js/henan_2022.js

@@ -23,7 +23,7 @@ if (typeof feeRateObject !== "undefined") {
 // 清单基数
 const littleFixNames = ["小修", "养护检查预算", "日常养护预算"];
 const progression = ["养护单位(业主)管理费", "工程监理费", "设计文件审查费"];
-const deficiency = { 养护工程监理费: 10000, 设计文件审查费: 10000 };
+const deficiency = { 工程监理费: 10000, 设计文件审查费: 10000 };
 if (typeof baseFigureMap !== "undefined") {
   const { fixedFlag } = commonConstants;
   const budgetMap = {
@@ -51,7 +51,7 @@ if (typeof baseFigureMap !== "undefined") {
     // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
     "养护单位(业主)管理费": {
       isProgressive: true,
-      base: "YHDWYZGLF",
+      base: "YHGLDWXMGLF",
       fixedFlag: null,
       filter: [fixedFlag.MAINTENANCE_EXPENSES],
       pick: true,
@@ -99,6 +99,48 @@ if (typeof baseFigureMap !== "undefined") {
       filter: [fixedFlag.SPREAD_BUDGET_FEE],
       pick: true,
     },
+    "设计文件审查费(一阶段)": {
+      isProgressive: true,
+      base: "SJWJSCFYJD",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    "设计文件审查费(二阶段)": {
+      isProgressive: true,
+      base: "SJWJSCFEJD",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    "工程设计费(一阶段)": {
+      isProgressive: true,
+      base: "GCSJFYJD",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    "工程设计费(二阶段)": {
+      isProgressive: true,
+      base: "GCSJFEJD",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    招标代理费及标底编制费: {
+      isProgressive: true,
+      base: "ZBDLFJBDBZF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    "招标代理费及标底编制费(未实行招标代理)": {
+      isProgressive: true,
+      base: "ZBDLFJBDBZFWSXZBDL",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
   };
   const boqMap = {
     //仅允许用于固定类别是“第100章至700章清单”以外的清单
@@ -209,7 +251,7 @@ if (typeof baseFigureTemplate !== "undefined") {
       }
     },
     // 养护单位(业主)管理费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算。。
-    YHDWYZGLF(tender) {
+    YHGLDWXMGLF(tender) {
       const baseFee = this["DEJZAZGCF"](tender);
       if (!tender) {
         calcBase.baseProgressiveFee = baseFee;
@@ -236,19 +278,13 @@ if (typeof baseFigureTemplate !== "undefined") {
         deficiency
       );
     },
-    // 养护工程监理费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算
+    // 工程监理费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算
     YHGCJLF(tender) {
       const baseFee = this["DEJZAZGCF"](tender);
       if (!tender) {
         calcBase.baseProgressiveFee = baseFee;
       }
-      return calculateUtil.getProgressiveFee(
-        baseFee,
-        "养护工程监理费",
-        projectObj.project.property.progressiveInterval,
-        decimalObj.bills.totalPrice,
-        deficiency
-      );
+      return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
     },
     // 养护工程监理费(路线工程) 算法:以{定额建筑安装工程费}为基数,采用累进办法计算
     YHGCJLFLXGC(tender) {
@@ -372,6 +408,85 @@ if (typeof baseFigureTemplate !== "undefined") {
       //= P * [(1+i)^(n-1) -1]
       return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
     },
+    // 设计文件审查费(一阶段) 算法:以{定额建筑安装工程费}为基数,采用累进办法计算。
+    SJWJSCFYJD(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "设计文件审查费(一阶段)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    SJWJSCFEJD(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "设计文件审查费(二阶段)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    GCSJFYJD(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "工程设计费(一阶段)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    GCSJFEJD(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "工程设计费(二阶段)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    ZBDLFJBDBZF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "招标代理费及标底编制费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    ZBDLFJBDBZFWSXZBDL(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "招标代理费及标底编制费(未实行招标代理)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
   };
 
   baseFigureTemplate.boq = {

+ 9 - 9
web/over_write/js/sichuan_2013.js

@@ -72,12 +72,12 @@ if (typeof baseFigureMap !== "undefined") {
       pick: false,
     },
 
-    "养护工程费(不含保险费、施工环保、水保费、安全生产费)": {
-      base: "YHGCFBHBXHBSBAQ",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, INSURANCE_FEE, EP_WP_INSURANCE_FEE, SAFE_COST],
-      pick: false,
-    },
+    // "养护工程费(不含保险费、施工环保、水保费、安全生产费)": {
+    //   base: "YHGCFBHBXHBSBAQ", AAAAA
+    //   fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+    //   filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, INSURANCE_FEE, EP_WP_INSURANCE_FEE, SAFE_COST],
+    //   pick: false,
+    // },
     // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
     养护单位管理费: {
       isProgressive: true,
@@ -169,9 +169,9 @@ if (typeof baseFigureTemplate !== "undefined") {
     DEGLYHGCF(tender) {
       return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "rationCommon");
     },
-    YHGCFBHBXHBSBAQ(tender) {
-      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
-    },
+    // YHGCFBHBXHBSBAQ(tender) { AAAAA
+    //   return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
+    // },
     // 养护单位管理费 算法:以{公路养护工程费总额}为基数,采用累进办法计算
     YHDWGLF(tender) {
       const baseFee = this["GLYHGCF"](tender);