浏览代码

feat: 公路云版,新增建议估算、可行性估算、概算项目选项;养护云版保持不变

TASK #3568
vian 4 年之前
父节点
当前提交
4f5a20c58a

+ 17 - 2
modules/all_models/compilation.js

@@ -35,12 +35,27 @@ let modelSchema = {
         type: Boolean,
         default: false
     },
-    // 清单计价规则
+    // 建议估算
+    suggestion_valuation: {
+        type: [childrenSchema],
+        default: []
+    },
+    // 可行性估算
+    feasibility_valuation: {
+        type: [childrenSchema],
+        default: []
+    },
+    // 概算
+    rough_valuation: {
+        type: [childrenSchema],
+        default: []
+    },
+    // 预算
     bill_valuation: {
         type: [childrenSchema],
         default: []
     },
-    // 定额计价规则
+    // 工程量清单
     ration_valuation: {
         type: [childrenSchema],
         default: []

+ 25 - 5
modules/pm/controllers/pm_controller.js

@@ -33,6 +33,7 @@ let sectionTreeDao = new SectionTreeDao();
 let consts = require('../../main/models/project_consts');
 let rp = require('request-promise');
 const commonUtil = require('../../../public/common_util');
+const { ValuationText } = require('../../../public/common_constants');
 //统一回调函数
 let callback = function (req, res, err, message, data) {
     res.json({ error: err, message: message, data: data });
@@ -308,18 +309,34 @@ module.exports = {
         sessionCompilation = request.session.sessionCompilation;
         //更新用户的使用过的费用定额列表
         let isFirst = await pm_facade.isFirst(request.session.sessionUser.id, compilationData._id.toString());
+        
+        let engineeringLibModel = new EngineeringLibModel();
+
+        // 建议估算
+        let suggestionValuation = sessionCompilation.suggestion_valuation !== undefined ?
+            sessionCompilation.suggestion_valuation : [];
+        suggestionValuation = await engineeringLibModel.getLib(suggestionValuation);
+
+        // 可行性估算
+        let feasibilityValuation = sessionCompilation.feasibility_valuation !== undefined ?
+            sessionCompilation.feasibility_valuation : [];
+        feasibilityValuation = await engineeringLibModel.getLib(feasibilityValuation);
+
+        // 概算
+        let roughValuation = sessionCompilation.rough_valuation !== undefined ?
+            sessionCompilation.rough_valuation : [];
+        roughValuation = await engineeringLibModel.getLib(roughValuation);
+        
         // 清单计价
         let billValuation = sessionCompilation.bill_valuation !== undefined ?
             sessionCompilation.bill_valuation : [];
-
-        // 获取标准库数据
-        let engineeringLibModel = new EngineeringLibModel();
         billValuation = await engineeringLibModel.getLib(billValuation);
 
         // 定额计价
         let rationValuation = sessionCompilation.ration_valuation !== undefined ?
             sessionCompilation.ration_valuation : [];
         rationValuation = await engineeringLibModel.getLib(rationValuation);
+
         let absoluteUrl = compilationData.overWriteUrl ? request.app.locals.rootDir + compilationData.overWriteUrl : request.app.locals.rootDir;
         let overWriteUrl = fs.existsSync(absoluteUrl) && fs.statSync(absoluteUrl).isFile() ? compilationData.overWriteUrl : null;
         //欢迎页显示控制
@@ -335,6 +352,9 @@ module.exports = {
             userID: request.session.sessionUser.id,
             compilationData: JSON.stringify(sessionCompilation),
             overWriteUrl: overWriteUrl,
+            suggestionValuation: JSON.stringify(suggestionValuation),
+            feasibilityValuation: JSON.stringify(feasibilityValuation),
+            roughValuation: JSON.stringify(roughValuation),
             billValuation: JSON.stringify(billValuation),
             rationValuation: JSON.stringify(rationValuation),
             engineeringList: JSON.stringify(engineering.List),
@@ -812,7 +832,7 @@ module.exports = {
                     orgUserIDs.push(proj.userID);
                     if (proj.projType === projType.tender) {
                         // 设置项目类别
-                        proj.valuationType = proj.property.valuationType === 'bill' ? '预算' : '工程量清单';
+                        proj.valuationType = ValuationText[proj.property.valuationType] || '';
                         proj._valuationType = proj.property.valuationType;
                         //设置工程专业
                         proj.feeStandardName = proj.property.feeStandardName || '';
@@ -846,7 +866,7 @@ module.exports = {
                                 consProjIDs.push(projC.ID);
                             } else if (projC.projType === projType.tender) {
                                 // 设置项目类别
-                                projC.valuationType = projC.property.valuationType === 'bill' ? '预算' : '工程量清单';
+                                projC.valuationType = ValuationText[projC.property.valuationType] || '';
                                 projC._valuationType = projC.property.valuationType;
                                 //设置工程专业
                                 projC.feeStandardName = projC.property.feeStandardName || '';

+ 2 - 1
modules/pm/facade/pm_facade.js

@@ -126,6 +126,7 @@ const {
     fixedFlag,
     SharePermissionChangeType,
     GRANULARITY,
+    ValuationType,
     BOQType
 } = require('../../../public/common_constants');
 const notDeleted = [{deleteInfo: null}, {'deleteInfo.deleted': false}];
@@ -1984,7 +1985,7 @@ async function importInterfaceProject(importObj, userID, compilation, overWriteU
         //呈现选项
         data.property.displaySetting = displaySetting;
 
-        data.property.billsCalcMode = defaultCalcMode || data.property.valuationType == 'bill' ? 2 : 1;
+        data.property.billsCalcMode = defaultCalcMode || data.property.valuationType !== ValuationType.BOQ ? 2 : 1;
         data.property.zanguCalcMode = 0;
         //计算选项
         data.property.calcOptions = calcOptions;

+ 5 - 5
modules/pm/models/project_model.js

@@ -31,7 +31,7 @@ const {
     bookmarkSetting
 } = require('./project_property_template');
 const optionSetting = require('../../options/models/optionTypes');
-const { ValuationType } = require('../../../public/common_constants');
+const { ValuationType, ValuationText } = require('../../../public/common_constants');
 let FeeRateFiles = mongoose.model('fee_rate_file');
 let counter = require("../../../public/counter/counter.js");
 
@@ -198,7 +198,7 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                         }
                         //项目类别(valuationType)、养护类别(engineering)、费用标准(feeStandard)根据新建分选的选项去赋值
                         let assign = {
-                            valuationType: data.updateData.property.valuationType === ValuationType.BUDGET ? '预算' : '工程量清单',
+                            valuationType: ValuationText[data.updateData.property.valuationType] || '',
                             engineering: data.updateData.property.engineeringName,
                             feeStandard: data.updateData.property.feeStandardName,
                             // 新建分段文件时,默认将“编制范围”填写分段文件的名称
@@ -217,12 +217,12 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                     }
                     //呈现选项
                     data.updateData.property.displaySetting = displaySetting;
-                    let defaultCalcMode = overWrite && overWrite.defaultCalcMode || ((data.updateData.property.valuationType == 'bill') ? 2 : 1);
+                    let defaultCalcMode = overWrite && overWrite.defaultCalcMode || ((data.updateData.property.valuationType !== ValuationType.BOQ) ? 2 : 1);
                     data.updateData.property.billsCalcMode = defaultCalcMode;
                     data.updateData.property.zanguCalcMode = 0;
                     //计算选项
                     data.updateData.property.calcOptions = calcOptions;
-                    if (data.updateData.property.valuationType == 'bill') {//价差预备费
+                    if (data.updateData.property.valuationType !== ValuationType.BOQ) {//价差预备费
                         //年造价增涨率
                         data.updateData.property.costGrowthRate = 0;
                         //增涨计费年限
@@ -807,7 +807,7 @@ ProjectsDAO.prototype.defaultSettings = async function (userID, compilation, pro
         overWrite = require("../../.."+compilation.overWriteUrl);
     }
     //关于计算
-    let defaultCalcMode = overWrite && overWrite.defaultCalcMode || ((project.property.valuationType == 'bill') ? 2 : 1);
+    let defaultCalcMode = overWrite && overWrite.defaultCalcMode || ((project.property.valuationType !== ValuationType.BOQ) ? 2 : 1);
     cloneProperty.billsCalcMode = defaultCalcMode;
     cloneProperty.zanguCalcMode = 0;
     cloneProperty.calcOptions = calcOptions;

+ 9 - 2
modules/users/models/compilation_model.js

@@ -60,8 +60,15 @@ class CompilationModel extends BaseModel {
         if (!compilationData  || compilationData.bill_valuation === undefined) {
             return compilationData;
         }
+        const fields = ['suggestion', 'feasibility', 'rough', 'bill', 'ration'];
+        fields.forEach(field => {
+            const valField = `${field}_valuation`;
+            if (compilationData[valField] && compilationData[valField].length > 0) {
+                compilationData[valField] = compilationData[valField].filter(item => item.enable);
+            }
+        });
 
-        if (compilationData.bill_valuation.length > 0) {
+        /* if (compilationData.bill_valuation.length > 0) {
             let enableValuation = [];
             for (let index in compilationData.bill_valuation) {
                 if (compilationData.bill_valuation[index].enable) {
@@ -79,7 +86,7 @@ class CompilationModel extends BaseModel {
                 }
             }
             compilationData.ration_valuation = enableValuation;
-        }
+        } */
 
         return compilationData;
     }

+ 11 - 0
public/common_constants.js

@@ -109,9 +109,19 @@
 
     // 项目类别,叫bill和ratoin,是建筑的计价类型为清单、定额计价,延用。
     const ValuationType = {
+        SUGGESTION: 'suggestion', // 建议估算
+        FEASIBILITY: 'feasibility', // 可行性估算
+        ROUGH: 'rough', // 概算
         BUDGET: 'bill', // 预算
         BOQ: 'ration' // 工程量清单
     };
+    const ValuationText = {
+        [ValuationType.SUGGESTION]: '建议估算',
+        [ValuationType.FEASIBILITY]: '可行性估算',
+        [ValuationType.ROUGH]: '概算',
+        [ValuationType.BUDGET]: '预算',
+        [ValuationType.BOQ]: '工程量清单',
+    }
 
     // 工程量清单类型
     const BOQType = {
@@ -187,6 +197,7 @@
         COMPLEMENTARY_LIB,
         COMPILATION,
         ValuationType,
+        ValuationText,
         BOQType,
         SourceType,
         StorageKey,

+ 9 - 9
web/building_saas/main/js/models/calc_base.js

@@ -1323,10 +1323,10 @@ let cbCalctor = {
     if (figure === 'NONE') {
       return 0;
     }
-    if (calcBase.project.property.valuationType === 'bill') { //预算
-      return baseFigureTemplate.budget[calcBase.baseFigures[figure]['base']]();
-    } else { //工程量清单
+    if (calcBase.project.property.valuationType === commonConstants.ValuationType.BOQ) { // 工程量清单
       return baseFigureTemplate.boq[calcBase.baseFigures[figure]['base']]();
+    } else {
+      return baseFigureTemplate.budget[calcBase.baseFigures[figure]['base']]();
     }
   },
   //调价后计算基数
@@ -1334,10 +1334,10 @@ let cbCalctor = {
     if (figure === 'NONE') {
       return 0;
     }
-    if (calcBase.project.property.valuationType === 'bill') { //预算
-      return baseFigureTemplate.budget[calcBase.baseFigures[figure]['base']](true);
-    } else { //工程量清单
+    if (calcBase.project.property.valuationType === commonConstants.ValuationType.BOQ) { // 工程量清单
       return baseFigureTemplate.boq[calcBase.baseFigures[figure]['base']](true);
+    } else {
+      return baseFigureTemplate.budget[calcBase.baseFigures[figure]['base']](true);
     }
   },
   //ID引用
@@ -1389,10 +1389,10 @@ let calcBase = {
     me.project = project;
     me.fixedFlag = fixedFlag;
     cbTools.setFixedBills(project, me.fixedBills, me.fixedFlag);
-    if (project.property.valuationType === 'bill') { //预算
-      me.baseFigures = baseFigureMap.budget;
-    } else { //工程量清单
+    if (project.property.valuationType === commonConstants.ValuationType.BOQ) {
       me.baseFigures = baseFigureMap.boq;
+    } else {
+      me.baseFigures = baseFigureMap.budget;
     }
     cbTools.setBaseBills(me.baseFigures, me.fixedBills);
     //设置清单固定行可用基数映射

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

@@ -1074,7 +1074,7 @@
    },
    // 概预算项目
    isBudgetProject() {
-     return projectObj.project.property.valuationType == 'bill';
+     return projectObj.project.property.valuationType !== 'ration';
    },
    // 招投标项目
    isBillProject() {

+ 1 - 1
web/building_saas/main/js/views/glj_col.js

@@ -252,7 +252,7 @@ let gljCol = {
             me.removeCol('adjustPrice',me.project_glj_setting);
             me.removeCol('adjustPrice',me.mixRatio_Setting);
         }
-        if(projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType == "bill"){
+        if(projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType !== "ration"){
             me.removeCol('is_adjust_price',me.project_glj_setting);
         }
         

+ 1 - 1
web/building_saas/main/js/views/main_tree_col.js

@@ -252,7 +252,7 @@ let MainTreeCol = {
     forQuantity2: function (node) {
       if (node.sourceType !== ModuleNames.bills) return true;//不是清单,只读
       //如果是预算项目的,所有清单的数量1、数量2不做输入限制。
-      if (projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType == "bill") return false;
+      if (projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType !== "ration") return false;
       if (node.data.type == billType.DXFY || (node.data.type == billType.BILL && MainTreeCol.readOnly.billsParent(node))) return true;//大项费用、清单父项行,工程量只读。
       return false
     },

+ 3 - 3
web/building_saas/main/js/views/project_info.js

@@ -78,12 +78,12 @@ var projectInfoObj = {
             }
 
             //打开预算项目时,右侧“清单规则”显示为“项目表”,打开工程量清单项目时,右侧“清单规则”显示为“清单范本”。
-            $('#stdBillsGuidanceTab').text(data.property.valuationType === BUDGET ? '项目表' : '清单范本');
+            $('#stdBillsGuidanceTab').text(data.property.valuationType === BOQ ? '清单范本' : '项目表');
             //init decimal
             setDecimal(decimalObj, data.property.decimal);
             billsQuanDecimal.datas = data.property.billsQuantityDecimal || [billsDecimalView.angleDecimal];
             // 建设项目为工程量清单项目显示基本信息,预算项目不显示
-            if (data.property.projectValuationType === BUDGET) {
+            if (data.property.projectValuationType !== BOQ) {
                 // 隐藏基本信息
                 $('#tab_poj-settings-basicInfo').removeClass('active');
                 $('#tab_poj-settings-basicInfo').hide();
@@ -104,7 +104,7 @@ var projectInfoObj = {
             });
             SHARE_TO.handleEventListener();
             $("[data-toggle='tooltip']").tooltip();
-            if (data.property.valuationType == BUDGET) {
+            if (data.property.valuationType !== BOQ) {
                 $("#tab_tender_price").css('display', 'none');
             }/*  else {
                 $("#about-calc").css('display', 'none');

+ 1 - 1
web/building_saas/main/js/views/project_property_decimal_view.js

@@ -288,7 +288,7 @@ $(document).ready(function () {
     $('#poj-set').on('shown.bs.modal', function (e) {
         let v_data = m_getInitData(decimalObj);
         v_initPanel(v_data);
-        let headerText =  projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType == "bill"?"项目节":"清单";//项目属性-小数位数,“清单”改文字为“项目节”,工程量清单中保持不变。
+        let headerText =  projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType !== "bill"?"清单":"项目节";//项目属性-小数位数,“清单”改文字为“项目节”,工程量清单中保持不变。
         $("#bills_decimal_header").text(headerText);
     });
 

+ 5 - 5
web/building_saas/main/js/views/project_view.js

@@ -1167,7 +1167,7 @@ var projectObj = {
     },
     isInsertEquipmentVisable:function(selected){
       //浙江不管是预算或者工程量清单,都是隐藏,overwrite文件重写   
-      if(this.project.property.valuationType =='bill' ){//属于预算项目的情况下,在固定清单可见
+      if(this.project.property.valuationType !=='ration' ){//属于预算项目的情况下,在固定清单可见
         //属于的固定清单
         let belongFlag = cbTools.getBelongFlag(selected);
         if (belongFlag && belongFlag === fixedFlag.EQUIPMENT_ACQUISITION_FEE) {
@@ -1239,7 +1239,7 @@ var projectObj = {
     },
     loadMainSpreadContextMenu: function () {
         var project = this.project, spread = this.mainSpread, controller = this.mainController;
-        let insertBillsName = project.projectInfo.property && project.projectInfo.property.valuationType == commonConstants.ValuationType.BUDGET?"插入项目节":"插入清单";//右键“插入清单”改文字为“插入项目节”,工程量清单中保持不变。
+        let insertBillsName = project.projectInfo.property && project.projectInfo.property.valuationType == commonConstants.ValuationType.BOQ?"插入清单":"插入项目节";//右键“插入清单”改文字为“插入项目节”,工程量清单中保持不变。
         $.contextMenu({
             selector: '#billsSpread',
             selectableSubMenu: true,
@@ -2432,7 +2432,7 @@ $('#poj-set').on('show.bs.modal', function () {
         //江西重定义了leafBillGetFeeType的内容
         // 预算:bill, 正算,rationPrice: 2,
         // 清单:ration, 反算,rationPriceConverse: 1,
-        let defaultCalcMode = (projectObj.project.property.valuationType == 'bill') ? leafBillGetFeeType.rationPrice : leafBillGetFeeType.rationPriceConverse;
+        let defaultCalcMode = (projectObj.project.property.valuationType !== 'ration') ? leafBillGetFeeType.rationPrice : leafBillGetFeeType.rationPriceConverse;
         let ft = (projectObj.project.property.billsCalcMode !== undefined && projectObj.project.property.billsCalcMode !== null) ?
             projectObj.project.property.billsCalcMode : defaultCalcMode;
 
@@ -2452,7 +2452,7 @@ $('#poj-set').on('show.bs.modal', function () {
     }
     let propertyInfo = projectObj.project.projectInfo.property;
     //关于计算-价差预备费//预算项目才有
-    if (propertyInfo.valuationType === 'bill') {
+    if (propertyInfo.valuationType !== 'ration') {
         $('#jcybf').show();
         //年造价增涨率,单位为%
         $('#costGrowthRate').val(propertyInfo.costGrowthRate ? propertyInfo.costGrowthRate * 100 : 0);
@@ -2606,7 +2606,7 @@ $('#property_ok').click(function () {
     };
 
     //价差预备费,预算项目才有
-    if (project.property.valuationType === 'bill') {
+    if (project.property.valuationType !== 'ration') {
         let costGrowthRateV = $('#costGrowthRate').val(),
             costGrowthRate = costGrowthRateV ? parseFloat(costGrowthRateV / 100) : 0,
             growthPeriodV = $('#growthPeriod').val(),

+ 19 - 2
web/building_saas/pm/html/project-management.html

@@ -340,9 +340,23 @@
                     <div class="form-group row" id="val-type-group">
                         <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">项目类别</label>
                         <div class="col">
+                            <% if (compilationName.includes('公路造价')) { %>
                             <div class="custom-control custom-radio custom-control-inline">
-                                <input type="radio" value="bill" checked id="radioBill" name="valuation_type" class="custom-control-input">
-                                <label class="custom-control-label" for="radioBill">预算</label>
+                                <input type="radio" value="suggestion" checked id="radioSuggestion" name="valuation_type" class="custom-control-input">
+                                <label class="custom-control-label" for="radioSuggestion">建议估算</label>
+                            </div>
+                            <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="feasibility" id="radioFeasibility" name="valuation_type" class="custom-control-input">
+                                <label class="custom-control-label" for="radioFeasibility">可行性估算</label>
+                            </div>
+                            <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="rough" id="radioRough" name="valuation_type" class="custom-control-input">
+                                <label class="custom-control-label" for="radioRough">概算</label>
+                            </div>
+                            <% } %>
+                            <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="bill" id="radioBill" name="valuation_type" class="custom-control-input">
+                                <label class="custom-control-label" <%= compilationName.includes('公路造价') ? '' : 'checked' %> for="radioBill">预算</label>
                             </div>
                             <div class="custom-control custom-radio custom-control-inline">
                                 <input type="radio" value="ration" id="radioRation" name="valuation_type" class="custom-control-input">
@@ -794,6 +808,9 @@
     autoFlashHeight();
 </script>
 <script type="text/javascript">
+    let suggestionValuation = '<%- suggestionValuation %>';
+    let feasibilityValuation = '<%- feasibilityValuation %>';
+    let roughValuation = '<%- roughValuation %>';
     let billValuation = '<%- billValuation %>';
     let rationValuation = '<%- rationValuation %>';
     let engineeringList = '<%- engineeringList %>';

+ 38 - 7
web/building_saas/pm/js/pm_newMain.js

@@ -36,7 +36,8 @@ let taxTypeMap = {
 let regions = [];
 
 const { 
-    ValuationType: { BUDGET, BOQ },
+    ValuationType: { SUGGESTION, FEASIBILITY, ROUGH, BUDGET, BOQ },
+    ValuationText,
     BOQType: { BID_INVITATION, BID_SUBMISSION },
 } = window.commonConstants;
 const { 
@@ -2400,7 +2401,7 @@ function initProjects(callback, expandCallback) {
         //设置项目类别
         for (let data of datas) {
             if (data.projType === projectType.tender && data.property.valuationType) {
-                data.valuationType = data.property.valuationType === 'bill' ? '预算' : '工程量清单';
+                data.valuationType = ValuationText[data.property.valuationType] || '';
             }
         }
         CommonAjax.post('/options/getOptions', [], function (rstData) {
@@ -2554,8 +2555,22 @@ function initProjectOptSet($target) {
     const html = `<div class="form-group row">
                         <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">项目类型</label>
                         <div class="col">
+                            ${COMPILATION_NAME.includes('公路造价') ? `
                             <div class="custom-control custom-radio custom-control-inline">
-                                <input type="radio" value="${BUDGET}" name="valuation-type" checked id="type-budget" class="custom-control-input">
+                                <input type="radio" value="${SUGGESTION}" name="valuation-type" checked id="type-suggestion" class="custom-control-input">
+                                <label class="custom-control-label" for="type-suggestion">建议估算</label>
+                            </div>
+                            <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="${FEASIBILITY}" name="valuation-type" id="type-feasibility" class="custom-control-input">
+                                <label class="custom-control-label" for="type-feasibility">可行性估算</label>
+                            </div>
+                            <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="${ROUGH}" name="valuation-type" id="type-rough" class="custom-control-input">
+                                <label class="custom-control-label" for="type-rough">概算</label>
+                            </div>
+                            ` : ''}
+                            <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="${BUDGET}" name="valuation-type" ${COMPILATION_NAME.includes('公路造价') ? '' : 'checked'} id="type-budget" class="custom-control-input">
                                 <label class="custom-control-label" for="type-budget">预算</label>
                             </div>
                             <div class="custom-control custom-radio custom-control-inline">
@@ -2717,7 +2732,7 @@ function AddTenderItems(selected, projName, tenderName, projectProperty, propert
                         } else if(data.updateData.projType === projectType.tender){
                             tenderData = data.updateData;
                             tenderData.feeStandardName = tenderData.property.feeStandardName || '';
-                            tenderData.valuationType = tenderData.property.valuationType === 'bill' ? '预算' : '工程量清单';
+                            tenderData.valuationType = ValuationText[tenderData.property.valuationType] || '';
                         }
                     }
                 });
@@ -2746,7 +2761,7 @@ function AddTenderItems(selected, projName, tenderName, projectProperty, propert
                         data.updateData.shareInfo = [];
                         setInitSummaryData(data.updateData);
                         data.updateData.feeStandardName = data.updateData.property.feeStandardName || '';
-                        data.updateData.valuationType = data.updateData.property.valuationType === 'bill' ? '预算' : '工程量清单';
+                        data.updateData.valuationType = ValuationText[data.updateData.property.valuationType] || '';
                         const tenderNode = projTreeObj.insert(data.updateData, tempProj, null);
                         const rows = [tenderNode.serialNo()];
                         sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true);
@@ -2852,10 +2867,26 @@ function getEngineeringLib(cascadeName, engineeringList) {
     return null;
 }
 
+function getValuationData(type) {
+    let valuationData = [];
+    if (type === SUGGESTION) {
+        valuationData = JSON.parse(suggestionValuation);
+    } else if (type === FEASIBILITY) {
+        valuationData = JSON.parse(feasibilityValuation);
+    } else if (type === ROUGH) {
+        valuationData = JSON.parse(roughValuation);
+    } else if (type === BUDGET) {
+        valuationData = JSON.parse(billValuation);
+    } else {
+        valuationData = JSON.parse(rationValuation);
+    }
+    return valuationData;
+}
+
 function getEngineeringList(){
     let valuation = $("#valuation").val();
     let valuationType = $("input[name='valuation_type']:checked").val();
-    let valuationData = valuationType === 'bill' ? JSON.parse(billValuation) : JSON.parse(rationValuation);
+    let valuationData = getValuationData(valuationType);
     let engineeringList = [];
     for(let tmp of valuationData) {
         if (tmp.id === valuation) {
@@ -3149,7 +3180,7 @@ function AddTender() {
         }
 
         let engineering = undefined;
-        let valuationData = valuationType === BUDGET ? JSON.parse(billValuation) : JSON.parse(rationValuation);
+        let valuationData = getValuationData(valuationType);
         let engineeringList = [];
         for(let tmp of valuationData) {
             if (tmp.id === valuation) {

+ 1 - 1
web/over_write/js/hunan_2020.js

@@ -392,7 +392,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
 
 if (typeof projectObj !== 'undefined') {
     projectObj.isInsertEquipmentVisable = function (selected) {
-        if (projectObj.project.property.valuationType == 'bill') {//预算项目中,右键“插入设备”,仅在第一部分中显示。
+        if (projectObj.project.property.valuationType !== 'ration') {//预算项目中,右键“插入设备”,仅在第一部分中显示。
             return projectObj.project.Bills.isConstructionInstall(selected);
         }
         return true;   //湖南不管是预算或者工程量清单,都显示