فهرست منبع

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/YangHuCost

chenshilong 6 سال پیش
والد
کامیت
95350c7c8d

+ 27 - 0
modules/all_models/vehicle_vessel_tax_items.js

@@ -0,0 +1,27 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2019/2/18
+ * @version
+ */
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+
+const vehicleVesselTax = new Schema({
+    libID: String,
+    ID: String,
+    code: String,
+    name: String,
+    spec: String,
+    unit: String,
+    vehicleVesselTax: Number, //车船税
+    useTax: Number, //使用税
+    useTaxMeasure: Number, //使用税计量吨
+    annualMonth: Number, //年工作月
+    annualMachine: Number, //年工作台班
+}, {versionKey: false});
+
+mongoose.model('std_vehicleVesselTax_items', vehicleVesselTax, 'std_vehicleVesselTax_items');

+ 26 - 0
modules/all_models/vehicle_vessel_tax_lib.js

@@ -0,0 +1,26 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2019/2/18
+ * @version
+ */
+
+/*
+* 车船税编辑器
+* */
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+const oprSchema = require('../all_schemas/opr_schema');
+
+const vehicleVesselTaxLib = new Schema({
+    ID: String,
+    name: String,
+    creator: String,
+    createDate: Date,
+    recentOpr: [oprSchema]
+}, {versionKey: false});
+
+mongoose.model('std_vehicleVesselTax_lib', vehicleVesselTaxLib, 'std_vehicleVesselTax_lib');

+ 1 - 1
modules/glj/controllers/glj_controller.js

@@ -145,7 +145,7 @@ class GLJController extends BaseController {
                             }
                         }
                         let unitPriceUpdate = {
-                            base_price: basePrice,
+                           // base_price: basePrice, ---- 20190218 修改机械台班的组成物,仅重新计算机械预算价,定额价保持不变。
                             market_price: marketPrice
                         };
                         let unitPriceModel = new UnitPriceModel();

+ 8 - 1
modules/glj/models/glj_list_model.js

@@ -786,7 +786,14 @@ class GLJListModel extends BaseModel {
             let u_index = this.getIndex(tmp,['code','name','specs','unit','type']);
             unitPriceData[u_index] = tmp;
         }
-        return [gljData,mixRatioData,unitPriceData];
+        let c_gljData = [];
+        for(let g of gljData){//过滤掉不是组成物的工料机
+            let g_index =  this.getIndex(g,['code','name','specs','unit','type']);
+            if(mixRatioData[g_index]) c_gljData.push(g);
+        }
+
+
+        return [c_gljData,mixRatioData,unitPriceData];
 
     }
 

+ 1 - 1
modules/reports/controllers/rpt_controller.js

@@ -22,7 +22,7 @@ import rpt_pdf_util from "../util/rpt_pdf_util";
 import rpt_svg_util from "../util/rpt_svg_util";
 import fs from "fs";
 import strUtil from "../../../public/stringUtil";
-import rptDataExtractor from "../util/rpt_construct_data_util";
+import rptDataExtractor from "../util/rpt_yanghu_data_util";
 
 //统一回调函数
 let callback = function(req, res, err, data){

+ 97 - 3
modules/reports/util/rpt_construct_data_util.js

@@ -8,6 +8,8 @@ let consts = require('../../../modules/main/models/project_consts');
 
 let fsUtil = require("../../../public/fsUtil");
 let stringUtil = require("../../../public/stringUtil");
+let scMathUtil = require("../../../public/scMathUtil");
+let _ = require("lodash");
 
 let treeUtil = require('../../../public/treeUtil');
 let projectConst = consts.projectConst;
@@ -220,6 +222,12 @@ class Rpt_Data_Extractor {
                 }
             }
         }
+        if (rst.indexOf(projectConst.RATION) >= 0 &&
+            rst.indexOf(projectConst.RATION_GLJ) >= 0 && rst.indexOf(projectConst.RATION_COE) < 0) {
+            rst.push(projectConst.RATION_COE);
+            //备注:在此情况下,根据业务特点,有可能需要额外计算project工料机的基价单价及市场单价,需要用到一些额外信息处理。
+            //     这里也不精细控制,直接多加一个请求类型。以后说不定还有其他类型的请求,到时候再加。
+        }
         if (rst.length === 0) {
             rst.push(projectConst.RATION_ASS);
         }
@@ -251,6 +259,7 @@ class Rpt_Data_Extractor {
                         gljAssitantObj.componentGljIds[COMPONENT_GLJID_PRE + gljItem.glj_id] = gljItem;
                     }
                 }
+                //顺便做个排序(跟UI一致的排序)
             }
             let rationGLJDatas = getModuleDataByKey(rawDataObj.prjData, "ration_glj");
             let rationDatas = getModuleDataByKey(rawDataObj.prjData, "ration");
@@ -276,6 +285,15 @@ class Rpt_Data_Extractor {
                 setupFunc($PROJECT.SUMMARY, `SegmentDetail`, {"data": rawDataObj.SegmentDetail});
             }
         }
+        //综合费率
+        let feeRate = getModuleDataByKey(rawDataObj.prjData, "feeRate");
+        if (feeRate) {
+            //把综合费率树结构数据拉扁
+            // console.log(feeRate);
+            let newFeeRates = setupFeeRate(feeRate.data._doc);
+            // console.log(newFeeRates);
+            feeRate.data._doc.rates = newFeeRates;
+        }
 
         if (tpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
             for (let preHandle of tpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
@@ -311,6 +329,28 @@ class Rpt_Data_Extractor {
                 }
             }
         }
+        //一些计算(不保存数据,需要动态计算的)
+        if (rawDataObj.hasOwnProperty(`prj`)) {
+            let calcOptions = rawDataObj.prj._doc.property.calcOptions;
+            let decimalObj = rawDataObj.prj._doc.property.decimal;
+            let labourCoeDatas =  getModuleDataByKey(rawDataObj.prjData, "labour_coe");
+            let prjGLJDatas = getModuleDataByKey(rawDataObj.prjData, "projectGLJ");
+            let rationDatas = getModuleDataByKey(rawDataObj.prjData, "ration");
+            if (calcOptions && decimalObj && labourCoeDatas && labourCoeDatas && prjGLJDatas && rationDatas) {
+                for (let rationItem of rationDatas.data) {
+                    let glj = _.find(prjGLJDatas.data.gljList, {'id': rationItem.projectGLJID});
+                    if (glj) {
+                        let newGlj = gljUtil.getGLJPrice(glj, prjGLJDatas.data, calcOptions, labourCoeDatas, decimalObj, false, _, scMathUtil);
+                        rationItem.marketPrice = newGlj.marketPrice;
+                        rationItem.basePrice =  newGlj.basePrice;
+                        rationItem.adjustPrice = newGlj.adjustPrice;
+                        rationItem.marketUnitFee = newGlj.marketPrice;//更新树节点市场单价列的值
+                    }
+                }
+            }
+            // console.log("重新计算!");
+        }
+        //
         let rptDataObj = {};
         rptDataObj[JV.DATA_DISCRETE_DATA] = [];
         rptDataObj[JV.DATA_MASTER_DATA] = [];
@@ -1124,9 +1164,13 @@ function sortData(sourceData, sortCfg, prjData) {
             break;
         case "self_define":
             if (sortCfg[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]) {
-                let selfDefFunc = null;
-                eval('selfDefFunc = ' + sortCfg[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]);
-                tempRstArr.sort(selfDefFunc);
+                let selfDefFuncA = null;
+                eval('selfDefFuncA = ' + sortCfg[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]);
+                if (selfDefFuncA !== null) {
+                    tempRstArr.sort(selfDefFuncA);
+                } else {
+                    console.log('sorting function is null!!!');
+                }
             }
             replaceActDataArr(sourceData, tempRstArr);
             break;
@@ -1143,6 +1187,43 @@ function setupMainFunc(obj, prop, ownRawObj) {
     obj[prop].getFee = ext_mainGetFee;
 }
 
+function setupFeeRate(feeRateData){
+    let cacheObj = {}, topArr = [], rstArr = [], id_pre = 'ID_';
+    const rateProperties = [];
+    for (let rate of feeRateData.rates) {
+        cacheObj[id_pre + rate._doc.ID] = {"obj": rate._doc, "items": []};
+        // cacheObj[id_pre + rate.ID].items = [];
+        if (rate._doc.ParentID === null || rate._doc.ParentID === undefined) {
+            topArr.push(cacheObj[id_pre + rate._doc.ID]);
+        }
+    }
+    for (let rate of feeRateData.rates) {
+        if (rate._doc.ParentID && cacheObj[id_pre + rate._doc.ParentID]) {
+            cacheObj[id_pre + rate._doc.ParentID].items.push(cacheObj[id_pre + rate._doc.ID]);
+            if (rateProperties.indexOf(rate._doc.name) < 0) {
+                rateProperties.push(rate._doc.name);
+            }
+        }
+    }
+    let pri_func_set_property_rate = function (orgRateItem, rstRateItem) {
+        rstRateItem[orgRateItem.obj.name] = orgRateItem.obj.rate;
+        for (let subOrgRateItem of orgRateItem.items) {
+            pri_func_set_property_rate(subOrgRateItem, rstRateItem);
+        }
+    };
+    for (let topRate of topArr) {
+        let rstItem = {"name": topRate.obj.name};
+        for (let property of rateProperties) {
+            rstItem[property] = 0;
+        }
+        for (let dtlRateItem of topRate.items) {
+            pri_func_set_property_rate(dtlRateItem, rstItem);
+        }
+        rstArr.push(rstItem);
+    }
+    return rstArr;
+}
+
 function setupFunc(obj, prop, ownRawObj) {
     obj[prop] = {};
     obj[prop]["myOwnRawDataObj"] = ownRawObj;
@@ -1154,6 +1235,8 @@ function setupFunc(obj, prop, ownRawObj) {
     obj[prop].getArrayValues = ext_getArrayValues;
     obj[prop].getArrayItemByKey = ext_getArrayItemByKey;
     obj[prop].getPropertyByFlag = ext_getPropertyByFlag;
+    obj[prop].getSubRateProperty = ext_getRateProperty;
+    obj[prop].getRateProperty = ext_getRateProperty;
     obj[prop].getBlank = ext_getBlank;
     if (prop === projectConst.CALC_PROGRAM) obj[prop].getCalcProperty = ext_getCalcProperty;
     if (prop === projectConst.FEERATE) obj[prop].getFeeRate = ext_getFeeRate;
@@ -1250,6 +1333,17 @@ function ext_mainGetPropety(propKey) {
     return rst;
 }
 
+function ext_getRateProperty(propKey) {
+    let rst = [], parentObj = this;
+    let dtObj = parentObj["myOwnRawDataObj"];
+    if (propKey && dtObj) {
+        for (let rate of dtObj.data._doc.rates) {
+            rst.push(rate[propKey]);
+        }
+    }
+    return rst;
+}
+
 function ext_getPropety(propKey) {
     let rst = [], parentObj = this;
     let dtObj = parentObj["myOwnRawDataObj"];

+ 1 - 1
test/unit/reports/test_cover_01.js

@@ -40,7 +40,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 1 - 1
test/unit/reports/test_cover_02.js

@@ -38,7 +38,7 @@ let userId_Leng = "59cdf14a0034a1000ba52b97"; //小冷User Id 换成_id了
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 1 - 1
test/unit/reports/test_rpt_11_2.js

@@ -42,7 +42,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 9 - 4
test/unit/reports/test_rpt_test_template.js

@@ -31,6 +31,9 @@ let demoPrjId = - 1;
 // let demoRptId = 22; //03
 // let demoRptId = 26; //07
 let demoRptId = 28; //09
+// let demoRptId = 24; //05
+// let demoRptId = 20; //01
+// let demoRptId = 23; //04 综合费率表
 
 let pagesize = "A4";
 //288: 11-2表(新)
@@ -43,7 +46,8 @@ let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 //demoPrjId = 1626; //QA:
 // demoPrjId = 2260; //QA:
 // demoPrjId = 410; //QA:
-demoPrjId = 313; //PROD:
+// demoPrjId = 313; //PROD:
+demoPrjId = 435; //PROD:
 // demoPrjId = 4107; //UAT:
 //*/
 let userId_Dft = userId_Leng;
@@ -55,7 +59,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 import rpt_xl_util from "../../../modules/reports/util/rpt_excel_util";
 import rpt_pdf_util from "../../../modules/reports/util/rpt_pdf_util";
 
@@ -71,7 +75,8 @@ test('测试 - 测试模板啦: ', function (t) {
         rptDataUtil.initialize(rptTpl._doc);
         let filter = rptDataUtil.getDataRequestFilter();
         // filter.push('ration');  //临时用
-        // filter.push('feeRate'); //临时用2
+        filter.push('feeRate'); //临时用2
+        // filter.push('projectGLJ'); //临时用3
         console.log(filter);
         //正常应该根据报表模板定义的数据类型来请求数据
         rptTplDataFacade.prepareProjectData(userId_Dft, demoPrjId, filter, function (err, msg, rawDataObj) {
@@ -79,7 +84,7 @@ test('测试 - 测试模板啦: ', function (t) {
                 try {
                     fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
-                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
+                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/YangHuCost/tmp/rptTplAssembledData_测试模板.jsp");
                     //it's time to build the report!!!
                     let printCom = JpcEx.createNew();

+ 1 - 1
test/unit/reports/test_summary.js

@@ -57,7 +57,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-let rptDataExtractor = require("../../../modules/reports/util/rpt_construct_data_util");
+let rptDataExtractor = require("../../../modules/reports/util/rpt_yanghu_data_util");
 let rpt_xl_util = require("../../../modules/reports/util/rpt_excel_util");
 let rpt_pdf_util = require("../../../modules/reports/util/rpt_pdf_util");
 

+ 1 - 1
test/unit/reports/test_svg_data.js

@@ -40,7 +40,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 import rpt_svg_util from "../../../modules/reports/util/rpt_svg_util";
 
 let fs = require('fs');

+ 1 - 1
test/unit/reports/test_tpl_05.js

@@ -45,7 +45,7 @@ let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade"
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 let pm_facade = require('../../../modules/pm/facade/pm_facade');
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 1 - 1
test/unit/reports/test_tpl_07.js

@@ -39,7 +39,7 @@ let userId_Dft = "595328da1934dc327cad08eb";
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 1 - 1
test/unit/reports/test_tpl_09.js

@@ -40,7 +40,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 1 - 1
test/unit/reports/test_tpl_09_1.js

@@ -46,7 +46,7 @@ let userId_Dft = userId_HaiZhu;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 1 - 1
test/unit/reports/test_tpl_10.js

@@ -45,7 +45,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 1 - 1
test/unit/reports/test_tpl_11.js

@@ -43,7 +43,7 @@ let userId_Dft = userId_Leng;
 let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
 let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
 
-import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+import rptDataExtractor from "../../../modules/reports/util/rpt_yanghu_data_util";
 
 let fs = require('fs');
 //设置Date Format函数

+ 5 - 2
web/building_saas/main/js/controllers/block_controller.js

@@ -537,10 +537,13 @@ let BlockController = {
 
         function createBillsData(billsData) { //ID、重新生成code
             let temData = _.cloneDeep(billsData);
+            console.log(temData.children);
             //删除旧数据
+            if(temData.children && temData.children.length>0){//如果是有子项,说明是计算得到的,要删除重新计算,没有子项,但是fees有值,说明是自已输入的,值要一起粘贴
+                delete  temData.fees;
+                delete  temData.feesIndex;
+            }
             delete  temData._id;
-            delete  temData.fees;
-            delete  temData.feesIndex;
             delete  temData.children;
             delete  temData.quantity_details;
             delete  temData.__v;

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

@@ -583,21 +583,21 @@ let baseFigureTemplate = {
         'LXGCJLF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender),
                 fee = cbTools.getProgressiveFee(baseFee, '路线工程监理费');
-            return fee < 20000 ? 20000 : fee;
+            return fee > 0 && fee < 20000 ? 20000 : fee;
         },
         //{独立桥梁隧道工程监理费}
         //使用累进办法计算,不足2万按2万,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}
         'QLSDGCJLF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender),
                 fee = cbTools.getProgressiveFee(baseFee, '独立桥梁隧道工程监理费');
-            return fee < 20000 ? 20000 : fee;
+            return fee > 0 && fee < 20000 ? 20000 : fee;
         },
         //{设计文件审查费}
         // 使用累进办法计算,不足3千按3千,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}
         'SJWJSCF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender),
                 fee = cbTools.getProgressiveFee(baseFee, '设计文件审查费');
-            return fee < 3000 ? 3000 : fee;
+            return fee > 0 && fee < 3000 ? 3000 : fee;
         },
         //{路线勘察设计费}
         // 使用累进办法计算,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}

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

@@ -233,6 +233,10 @@ let calcTools = {
             if (treeNode.data.feesIndex[arr[1]][arr[2]] != value) {
                 treeNode.data.feesIndex[arr[1]][arr[2]] = value;
                 treeNode.updateData.feesIndex = treeNode.data.feesIndex;
+                if(fieldName == 'feesIndex.common.unitFee'){
+                    let fee = _.find(treeNode.updateData.fees,{'fieldName':arr[1]});
+                    if(fee) fee[arr[2]] = value;
+                }
                 treeNode.changed = true;
             }
         }

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

@@ -133,7 +133,7 @@ Composition.prototype.updateConsumptionInCache = function (pid,recode,updateData
         }
         // 设置父级3个价格
         parentGlj.unit_price.market_price =  updateData.market_price;
-        parentGlj.unit_price.base_price =  updateData.base_price;
+       // parentGlj.unit_price.base_price =  updateData.base_price;
         return mglj.id;
     }
 }

+ 4 - 0
web/building_saas/main/js/models/ration_glj.js

@@ -591,6 +591,10 @@ let ration_glj = {
                         repositoryId: glj.repositoryId
                     };
                     if(pEngineer) new_glj.programID = pEngineer;
+                    let belongFlag = cbTools.getBelongFlag(selected);
+                    if (belongFlag && belongFlag === fixedFlag.EQUIPMENT_ACQUISITION_FEE) {
+                        new_glj.programID = projectObj.project.calcProgram.compiledTemplateMaps['设备购置'];
+                    }
                     if (glj.hasOwnProperty("compilationId")) {
                         new_glj.from = "cpt";
                         if (glj.code.indexOf('-') != -1) {//这条工料机是用户通过修改名称、规格、型号等保存到补充工料机库的

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

@@ -767,7 +767,7 @@ projectGljObject={
         }
         value = scMathUtil.roundToString(value,getDecimal("glj.quantity"));
         let [parentMarketPrice, parentBasePrice] = me.getCompositionSumPrice('modify', row, value);
-        let updateData ={id: recode.mix_ratio_id, field: 'mix_ratio.' + dataCode, value: value, market_price: parentMarketPrice, base_price: parentBasePrice};
+        let updateData ={id: recode.mix_ratio_id, field: 'mix_ratio.' + dataCode, value: value, market_price: parentMarketPrice};//, base_price: parentBasePrice ---20190218 修改机械台班的组成物,仅重新计算机械预算价,定额价保持不变。
         let prow = parentSheet.getActiveRowIndex();//取父机械或组成物的下标
         let prowData = parentSheet.name() == 'projectGljSheet'?me.projectGljSheetData[prow]:me.materialTree.items[prow].data;
         composition.updateConsumption(updateData,recode,prowData.id,function (sid) {

+ 13 - 4
web/building_saas/main/js/views/project_view.js

@@ -1348,26 +1348,35 @@ var projectObj = {
                         return !project.Ration.canAdd(project.mainTree.selected);
                     },
                     callback: function (key, opt) {
-                        var selected = project.mainTree.selected;
-                        if(selected.sourceType == ModuleNames.bills){
+                        let selected = project.mainTree.selected;
+                       /* if(selected.sourceType == ModuleNames.bills){
                             if(selected.data.type == billType.FX||selected.data.type ==billType.BILL){
                                 if(selected.data.calcBase&&selected.data.calcBase!=""){
                                     alert("当前有基数计算,不能插入定额/量价/人材机。");
                                     return;
                                 }
                             }
+                        }*/
+                        if(selected.data.calcBase&&selected.data.calcBase!=""){
+                            alert("当前有基数计算,不能插入定额/量价/人材机。");
+                            return;
                         }
                         getGLJData('insert');// ProjectController.addRation(project, controller, rationType.volumePrice);
                     },
                     visible: function(key, opt){//2018-11-08  新需求,这个按钮先隐藏,有需要再放开
                         let selected = project.mainTree.selected;
-                        if (selected && selected.sourceType == ModuleNames.bills) {
+                        //属于的固定清单
+                        let belongFlag = cbTools.getBelongFlag(selected);
+                        if (belongFlag && belongFlag === fixedFlag.EQUIPMENT_ACQUISITION_FEE) {
+                            return true;
+                        }
+                        /*if (selected && selected.sourceType == ModuleNames.bills) {
                             //属于的固定清单
                             let belongFlag = cbTools.getBelongFlag(selected);
                             if (belongFlag && belongFlag === fixedFlag.EQUIPMENT_ACQUISITION_FEE) {
                                 return true;
                             }
-                        }
+                        }*/
                         return false;
                     }
                 },

+ 11 - 10
web/building_saas/pm/js/pm_newMain.js

@@ -961,7 +961,7 @@ const projTreeObj = {
                 hitinfo.sheet.repaint();
             }
         };
-        TreeNodeCellType.prototype.processMouseMove = function (hitInfo) {
+        /*TreeNodeCellType.prototype.processMouseMove = function (hitInfo) {
             let sheet = hitInfo.sheet;
 
             let div = sheet.getParent().getHost();
@@ -975,7 +975,7 @@ const projTreeObj = {
                 canvas.style.cursor='default';
             }
             return false;
-        };
+        };*/
         TreeNodeCellType.prototype.processMouseEnter = function (hitinfo) {
             let text = hitinfo.sheet.getText(hitinfo.row, hitinfo.col);
             let value = hitinfo.sheet.getValue(hitinfo.row, hitinfo.col);
@@ -1001,6 +1001,13 @@ const projTreeObj = {
         }
         return new TreeNodeCellType();
     },
+    setFileSelectButton:function (row,col,node,sheet,setting) {
+        if(!setting) setting = this.setting;
+        let dataCode = setting.header[col]['dataCode'];
+        if(node.data.projType == "Tender" && (dataCode=="feeRateFile" || dataCode == "unitPriceFile")){
+            sheet.setCellType(row, col,sheetCommonObj.getCusButtonCellType(projTreeObj.cusButtonClick,false),GC.Spread.Sheets.SheetArea.viewport);
+        }
+    },
     setCellValue: function (cell, node,sheet,setting) {
         //const sheet = this.workBook.getActiveSheet();
         if(!setting) setting = this.setting;
@@ -1023,9 +1030,6 @@ const projTreeObj = {
         else {
             value = isDef(node.data[dataCode]) ? node.data[dataCode] : '';
         }
-        if(node.data.projType == "Tender" && (dataCode=="feeRateFile" || dataCode == "unitPriceFile")){
-            sheet.setCellType(row, col,sheetCommonObj.getCusButtonCellType(projTreeObj.cusButtonClick,false),GC.Spread.Sheets.SheetArea.viewport);
-        }
         sheet.setValue(row, col, value);
     },
     showTreeData: function (nodes, setting,sheet) {
@@ -1046,11 +1050,7 @@ const projTreeObj = {
                         sheet.getCell(i, j).hAlign(GC.Spread.Sheets.HorizontalAlign.center);
                     }
                     me.setCellValue({row: i, col: j}, nodes[i],sheet,setting);
-                    let dataCode = headers[j].dataCode;
-                    if(nodes[i].data.projType == "Tender" && (dataCode=="feeRateFile" || dataCode == "unitPriceFile")) {
-                        sheet.setCellType(i, j,sheetCommonObj.getCusButtonCellType(me.cusButtonClick,false),GC.Spread.Sheets.SheetArea.viewport);
-                    }
-                    //sheet.setValue(i, j, nodes[i]['data'][dataCode]);
+                    me.setFileSelectButton(i,j,nodes[i],sheet,setting);
                 }
                 sheet.getCell(i, 1,GC.Spread.Sheets.SheetArea.viewport).locked(true);
             }
@@ -1075,6 +1075,7 @@ const projTreeObj = {
             let rIdx = me.tree.items.indexOf(n);
             for(let i = 0; i < header.length; i++){
                 me.setCellValue({row: rIdx, col: i}, n,sheet);
+                me.setFileSelectButton(rIdx,i,n,sheet);
             }
         }
 

+ 2 - 2
web/building_saas/pm/js/pm_share.js

@@ -389,7 +389,7 @@ const pmShare = (function () {
                 hitinfo.sheet.repaint();
             }
         };
-        TreeNodeCellType.prototype.processMouseMove = function (hitInfo) {
+        /*TreeNodeCellType.prototype.processMouseMove = function (hitInfo) {
             let sheet = hitInfo.sheet;
             let div = sheet.getParent().getHost();
             let canvasId = div.id + "vp_vp";
@@ -402,7 +402,7 @@ const pmShare = (function () {
                 canvas.style.cursor='default';
             }
             return false;
-        };
+        };*/
         TreeNodeCellType.prototype.processMouseEnter = function (hitinfo) {
             let text = hitinfo.sheet.getText(hitinfo.row, hitinfo.col);
             let value = hitinfo.sheet.getValue(hitinfo.row, hitinfo.col);