Jelajahi Sumber

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

vian 5 tahun lalu
induk
melakukan
1ac6b6450b

+ 2 - 3
config/gulpConfig.js

@@ -97,7 +97,6 @@ module.exports = {
         'public/web/sheet/sheet_common.js',
         'public/web/slideResize.js',
        // 'lib/ztree/*.js',
-        'lib/spreadjs/sheets/gc.spread.sheets.all.11.1.2',
        // 'lib/spreadjs/views/gc.spread.views.dataview.10.0.0.min.js',
        // "lib/spreadjs/views/common/gc.spread.common.10.0.0.min.js",
       //  'lib/spreadjs/views/plugins/gc.spread.views.gridlayout.10.0.0.min.js',
@@ -213,7 +212,7 @@ module.exports = {
         'lib/jquery-contextmenu/jquery.contextMenu.css',
     ],
     compleRation_ration_jspaths:[
-        '/public/web/uuid.js',
+        'public/web/uuid.js',
         'lib/jquery-contextmenu/jquery.contextMenu.min.js',
         'lib/jquery-contextmenu/jquery.ui.position.js',
         'lib/ztree/jquery.ztree.core.js',
@@ -240,7 +239,7 @@ module.exports = {
         'web/building_saas/complementary_ration_lib/js/ration_glj.js',
         'web/building_saas/complementary_ration_lib/js/ration_coe.js',
         'web/building_saas/complementary_ration_lib/js/ration_assist.js',
-        'web/building_saas/complementary_ration_lib/js/ration_installation.js.js',
+        'web/building_saas/complementary_ration_lib/js/ration_installation.js',
         'public/web/slideResize.js',
         'web/building_saas/complementary_ration_lib/js/coe.js',
         'web/building_saas/complementary_ration_lib/js/init.js'

+ 86 - 87
gulpfile.js

@@ -96,7 +96,7 @@ let compleGljOptions = {
     csspaths: compleGlj_csspaths,
     concatName: 'compleGlj.all.min',
     srcHtml: 'web/src/html/complementary_glj_lib/tools-gongliaoji.html',
-    htmlDest: 'web/building_saas/complementary_glj_lib/html/tools-gongliaoji.html',
+    htmlDest: 'web/building_saas/complementary_glj_lib/html',
     htmlName: 'tools-gongliaoji.html',
     injectList: [
         'web/dest/scripts/compleGlj.all.min' + version + '.js',
@@ -112,7 +112,7 @@ let compleRation_rationOptions = {
     csspaths: compleRation_ration_csspaths,
     concatName: 'compleRation_ration.all.min',
     srcHtml: 'web/src/html/complementary_ration_lib/dinge.html',
-    htmlDest: 'web/building_saas/complementary_ration_lib/html/dinge.html',
+    htmlDest: 'web/building_saas/complementary_ration_lib/html',
     htmlName: 'dinge.html',
     injectList: [
         'web/dest/scripts/compleRation_ration.all.min' + version + '.js',
@@ -129,7 +129,7 @@ let compleRation_gljOptions = {
     csspaths: compleRation_glj_csspaths,
     concatName: 'compleRation_glj.all.min',
     srcHtml: 'web/src/html/complementary_ration_lib/gongliao.html',
-    htmlDest: 'web/building_saas/complementary_ration_lib/html/gongliao.html',
+    htmlDest: 'web/building_saas/complementary_ration_lib/html',
     htmlName: 'gongliao.html',
     injectList: [
         'web/dest/scripts/compleRation_glj.all.min' + version + '.js',
@@ -146,7 +146,7 @@ let compleRation_coeOptions = {
     csspaths: compleRation_coe_csspaths,
     concatName: 'compleRation_coe.all.min',
     srcHtml: 'web/src/html/complementary_ration_lib/fuzhu.html',
-    htmlDest: 'web/building_saas/complementary_ration_lib/html/fuzhu.html',
+    htmlDest: 'web/building_saas/complementary_ration_lib/html',
     htmlName: 'fuzhu.html',
     injectList: [
         'web/dest/scripts/compleRation_coe.all.min' + version + '.js',
@@ -163,7 +163,7 @@ let compleRation_instOptions = {
     csspaths: compleRation_inst_csspaths,
     concatName: 'compleRation_inst.all.min',
     srcHtml: 'web/src/html/complementary_ration_lib/anzhuang.html',
-    htmlDest: 'web/building_saas/complementary_ration_lib/html/anzhuang.html',
+    htmlDest: 'web/building_saas/complementary_ration_lib/html',
     htmlName: 'anzhuang.html',
     injectList: [
         'web/dest/scripts/compleRation_inst.all.min' + version + '.js',
@@ -183,7 +183,7 @@ let unitPriceOptions={
   injectList:['web/dest/scripts/unitPrice.all.min.'+version+'.js']
 }
 
-function minify(options) {
+function minify(options,done) {
     if(options.jspaths){
         return gulp.src(options.jspaths)
             .pipe($.plumber())
@@ -191,7 +191,7 @@ function minify(options) {
             .pipe($.concat(options.concatName+"."+version+".js"))
             .pipe(gulp.dest(scriptsDest));
     }
-    return null;
+    return done();
 }
 
 function css(options,done) {
@@ -207,8 +207,7 @@ function css(options,done) {
 
 function inject(options) {
     var target = gulp.src(options.htmlDest+'/'+options.htmlName);
-    var sources = gulp.src(options.injectList, {read: false});
-
+    var sources = gulp.src(options.injectList, {read: false,allowEmpty: true});
     return target.pipe($.plumber())
         .pipe($.inject(sources))
         .pipe(gulp.dest(options.htmlDest));
@@ -229,42 +228,42 @@ gulp.task('css',function () {
     return css(commonOptions);
 })
 
-gulp.task('common', gulp.parallel('minify','css'));
+gulp.task('common', gulp.series('minify','css'));
 
-gulp.task('login_minify',gulp.series('common'), function (){
-    return minify(loginOptions);
+gulp.task('login_minify', function (){
+  return minify(loginOptions);
 });
 
 gulp.task('login_css',function (done) {
     return css(loginOptions,done);
 })
 
-gulp.task('login_inject',gulp.parallel('login_minify','login_css'),function () {
-    return inject(loginOptions);
-})
+gulp.task('login_inject',gulp.series('login_minify','login_css',function () {
+  return inject(loginOptions);
+}))
 
-gulp.task('login',gulp.series('login_inject'), function (){
-    return htmlmin(loginOptions);
-});
+gulp.task('login',gulp.series('login_inject', function (){
+  return htmlmin(loginOptions);
+}));
 
 
-gulp.task('header_minify',gulp.series('common'), function (){
-    return minify(headerOptions);
+gulp.task('header_minify',function (done){
+  return minify(headerOptions,done);
 });
 
 gulp.task('header_css',function (done) {
     return css(headerOptions,done);
 })
 
-gulp.task('header_inject',gulp.parallel('header_minify','header_css'),function () {
-    return inject(headerOptions);
-})
+gulp.task('header_inject',gulp.series('header_minify','header_css',function () {
+  return inject(headerOptions);
+}))
 
-gulp.task('header',gulp.series('header_inject'), function (){
-    return htmlmin(headerOptions);
-});
+gulp.task('header',gulp.series('header_inject', function (){
+  return htmlmin(headerOptions);
+}));
 
-gulp.task('pm_minify',gulp.series('common'), function (){
+gulp.task('pm_minify',function (){
     return minify(pmOptions);
 });
 
@@ -272,120 +271,120 @@ gulp.task('pm_css',function (done) {
     return css(pmOptions,done);
 })
 
-gulp.task('pm_inject',gulp.parallel('pm_minify','pm_css'),function () {
-    return inject(pmOptions);
-})
+gulp.task('pm_inject',gulp.series('pm_minify','pm_css',function () {
+  return inject(pmOptions);
+}))
 
-gulp.task('pm',gulp.series('pm_inject'), function (){
-    return htmlmin(pmOptions);
-});
+gulp.task('pm',gulp.series('pm_inject', function (){
+  return htmlmin(pmOptions);
+}));
 
-gulp.task('main_minify',gulp.series('common'), function (){
-    return minify(mainOptions);
+gulp.task('main_minify',function (){
+  return minify(mainOptions);
 });
 
 gulp.task('main_css',function (done) {
     return css(mainOptions,done);
 })
 
-gulp.task('main_inject',gulp.series('main_minify'),function () {//, ['main_minify','main_css'  ] main css 打包到一起会出现样式冲突问题, 现改成不打包
-    return inject(mainOptions);
-})
+gulp.task('main_inject',gulp.series('main_minify',function () {//, ['main_minify','main_css'  ] main css 打包到一起会出现样式冲突问题, 现改成不打包
+return inject(mainOptions);
+}))
 
-gulp.task('main',gulp.series('main_inject'), function (){
-    return htmlmin(mainOptions);
-});
+gulp.task('main',gulp.series('main_inject', function (){
+  return htmlmin(mainOptions);
+}));
 
-gulp.task('compleGlj_minify', gulp.series('common'), function () {
-    return minify(compleGljOptions);
+gulp.task('compleGlj_minify', function () {
+  return minify(compleGljOptions);
 });
 
 gulp.task('compleGlj_css', function (done) {
     return css(compleGljOptions,done);
 });
 
-gulp.task('compleGlj_inject', gulp.parallel('compleGlj_minify', 'compleGlj_css'), function () {
-    return inject(compleGljOptions);
-});
+gulp.task('compleGlj_inject', gulp.series('compleGlj_minify', 'compleGlj_css', function () {
+  return inject(compleGljOptions);
+}));
 
-gulp.task('compleGlj', gulp.series('compleGlj_inject'), function () {
-    return htmlmin(compleGljOptions);
-});
+gulp.task('compleGlj', gulp.series('compleGlj_inject', function () {
+  return htmlmin(compleGljOptions);
+}));
 
-gulp.task('compleRation_ration_minify', gulp.series('common'), function () {
-    return minify(compleRation_rationOptions);
+gulp.task('compleRation_ration_minify', function () {
+  return minify(compleRation_rationOptions);
 });
 
 gulp.task('compleRation_ration_css', function (done) {
     return css(compleRation_rationOptions,done);
 });
 
-gulp.task('compleRation_ration_inject', gulp.parallel('compleRation_ration_minify', 'compleRation_ration_css'), function () {
-    return inject(compleRation_rationOptions);
-});
+gulp.task('compleRation_ration_inject', gulp.series('compleRation_ration_minify', 'compleRation_ration_css', function () {
+  return inject(compleRation_rationOptions);
+}));
 
-gulp.task('compleRation_ration', gulp.parallel('compleRation_ration_inject'), function () {
-    return htmlmin(compleRation_rationOptions);
-});
+gulp.task('compleRation_ration', gulp.series('compleRation_ration_inject', function () {
+  return htmlmin(compleRation_rationOptions);
+}));
 
-gulp.task('compleRation_glj_minify', gulp.series('common'), function () {
-    return minify(compleRation_gljOptions);
+gulp.task('compleRation_glj_minify',  function () {
+  return minify(compleRation_gljOptions);
 });
 
 gulp.task('compleRation_glj_css', function (done) {
     return css(compleRation_gljOptions,done);
 });
 
-gulp.task('compleRation_glj_inject', gulp.parallel('compleRation_glj_minify', 'compleRation_glj_css'), function () {
-    return inject(compleRation_gljOptions);
-});
+gulp.task('compleRation_glj_inject', gulp.series('compleRation_glj_minify', 'compleRation_glj_css', function () {
+  return inject(compleRation_gljOptions);
+}));
 
-gulp.task('compleRation_glj', gulp.series('compleRation_glj_inject'), function () {
-    return htmlmin(compleRation_gljOptions);
-});
+gulp.task('compleRation_glj', gulp.series('compleRation_glj_inject', function () {
+  return htmlmin(compleRation_gljOptions);
+}));
 
-gulp.task('compleRation_coe_minify', gulp.series('common'), function () {
-    return minify(compleRation_coeOptions);
+gulp.task('compleRation_coe_minify',  function () {
+  return minify(compleRation_coeOptions);
 });
 
 gulp.task('compleRation_coe_css', function (done) {
     return css(compleRation_coeOptions,done);
 });
 
-gulp.task('compleRation_coe_inject', gulp.parallel('compleRation_coe_minify', 'compleRation_coe_css'), function () {
-    return inject(compleRation_coeOptions);
-});
+gulp.task('compleRation_coe_inject', gulp.series('compleRation_coe_minify', 'compleRation_coe_css', function () {
+  return inject(compleRation_coeOptions);
+}));
 
-gulp.task('compleRation_coe', gulp.series('compleRation_coe_inject'), function () {
-    return htmlmin(compleRation_coeOptions);
-});
+gulp.task('compleRation_coe', gulp.series('compleRation_coe_inject', function () {
+  return htmlmin(compleRation_coeOptions);
+}));
 
-gulp.task('compleRation_inst_minify', gulp.series('common'), function () {
-    return minify(compleRation_instOptions);
-});
+gulp.task('compleRation_inst_minify', function () {
+  return minify(compleRation_instOptions);
+} );
 
 gulp.task('compleRation_inst_css', function (done) {
     return css(compleRation_instOptions,done);
 });
 
-gulp.task('compleRation_inst_inject', gulp.parallel('compleRation_inst_minify', 'compleRation_inst_css'), function () {
-    return inject(compleRation_instOptions);
-});
+gulp.task('compleRation_inst_inject', gulp.series('compleRation_inst_minify', 'compleRation_inst_css', function () {
+  return inject(compleRation_instOptions);
+}));
 
-gulp.task('compleRation_inst', gulp.series('compleRation_inst_inject'), function () {
-    return htmlmin(compleRation_instOptions);
-});
+gulp.task('compleRation_inst', gulp.series('compleRation_inst_inject', function () {
+  return htmlmin(compleRation_instOptions);
+}));
 
 gulp.task('unitPrice_minify', function (){
   return minify(unitPriceOptions);
 });
 
-gulp.task('unitPrice_inject',gulp.series('unitPrice_minify'),function (){
+gulp.task('unitPrice_inject',gulp.series('unitPrice_minify',function (){
   return inject(unitPriceOptions);
-})
+}))
 
-gulp.task('unit_price',gulp.series('unitPrice_inject'), function (){
+gulp.task('unit_price',gulp.series('unitPrice_inject', function (){
   return htmlmin(unitPriceOptions);
-});
+}));
 
-gulp.task('build',gulp.parallel('header','login','pm','main', 'compleGlj', 'compleRation_ration', 'compleRation_glj', 'compleRation_coe', 'compleRation_inst','unit_price'));
+gulp.task('build',gulp.series('common','header','login','pm','main', 'compleGlj', 'compleRation_ration', 'compleRation_glj', 'compleRation_coe', 'compleRation_inst','unit_price'));

+ 24 - 0
modules/main/facade/bid_facade.js

@@ -0,0 +1,24 @@
+/**
+ * Created by zhang on 2019/9/11.
+ */
+
+
+module.exports={
+    getData:getData
+};
+
+const mongoose = require('mongoose');
+let bidEvaluationListModel = mongoose.model("bid_evaluation_list");
+let consts = require('../../main/models/project_consts');
+
+
+
+function getData(projectID, callback) {
+    bidEvaluationListModel.find({'projectID': projectID}).lean().exec((err, datas) => {
+        if (err) {
+            callback(1, '', null);
+        } else {
+            callback(0, consts.projectConst.BID_EVALUATION_LIST, datas);
+        }
+    })
+}

+ 2 - 0
modules/main/models/project.js

@@ -20,6 +20,7 @@ let installation_facade = require('../facade/installation_facade');
 let pmController = require('../../pm/controllers/pm_controller');
 let divide_facade = require('../facade/divide_facade');
 let evaluate_facade = require('../facade/evaluate_facade');
+let bid_facade = require('../facade/bid_facade');
 
 const commonFacade = require('../../main/facade/common_facade');
 const GLJListModel = require("../../glj/models/glj_list_model");
@@ -48,6 +49,7 @@ moduleMap[projectConsts.RATION_TEMPLATE] = ration_template;
 moduleMap[projectConsts.PROJECT_INFO] = pmController;
 moduleMap[projectConsts.DIVIDE_SETTING] = divide_facade;
 moduleMap[projectConsts.EVALUATE_LIST] = evaluate_facade;
+moduleMap[projectConsts.BID_EVALUATION_LIST] = bid_facade;
 
 var Project = function (){};
 

+ 1 - 0
modules/main/models/project_consts.js

@@ -23,6 +23,7 @@ let projectConst = {
     INSTALLATION_FEE:'installation_fee',
     PROJECT_INFO: 'project_info',
     EVALUATE_LIST:'evaluate_list',
+    BID_EVALUATION_LIST:'bid_evaluation_list',
     DIVIDE_SETTING:'divide_setting'
 };
 

+ 11 - 6
modules/pm/facade/pm_facade.js

@@ -93,6 +93,7 @@ const shareListModel = mongoose.model('share_list');
 let welcomeModel = mongoose.model("welcome_setting");
 let divideModel = mongoose.model("divide_setting");
 let evaluateListModel = mongoose.model("evaluate_list");
+let bidListModel = mongoose.model("bid_evaluation_list");
 
 let featureLibModel =  mongoose.model("std_project_feature_lib");
 let scMathUtil = require('../../../public/scMathUtil').getUtil();
@@ -588,7 +589,8 @@ async function copyProject(userID, compilationID, data, newProjectID = null, del
         copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,quantityDetailModel),
         copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,rationInstallationModel),
         copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,rationTemplateModel),
-        copyMaterialList(originalID,newProjectID,projectGLJMap.IDMap,evaluateListModel)
+        copyMaterialList(originalID,newProjectID,projectGLJMap.IDMap,evaluateListModel),
+        copyMaterialList(originalID,newProjectID,projectGLJMap.IDMap,bidListModel),
     ];
     if(originalProperty.calcProgramFile){
         copyTasks.push(commonCopy(newProjectID,originalProperty.calcProgramFile.ID,calcProgramFileID,calcProgramsModel));
@@ -1642,7 +1644,7 @@ async function exportTenderData(data){
     result.labourCoes = await labourCoesModel.findOne({projectID:data.projectID}).lean();
     result.divide_setting = await divideModel.findOne({projectID:data.projectID}, '-_id').lean();
     result.evaluateList = await evaluateListModel.find({projectID:data.projectID}, '-_id').lean();
-
+    result.bidList = await bidListModel.find({projectID:data.projectID}, '-_id').lean();
     return cipher.aesEncrypt(JSON.stringify(result));
 }
 
@@ -1796,9 +1798,9 @@ async function importProject(data,req,updateData) {
             let [constructionProjectID,projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap] = await handleMainProjectDatas(mainData,updateData,req.session.sessionUser.id);
             result.constructionProjectID = constructionProjectID;
             if(datas.length > 1 ){//生成后统一次插入 2020-05-29
-              let newProjectSettings=[],bills=[],rations=[],projectGLJs=[],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[],newCalcProgramsFiles=[],newLabourCoes=[],newDivides=[],evaluateList;
+              let newProjectSettings=[],bills=[],rations=[],projectGLJs=[],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[],newCalcProgramsFiles=[],newLabourCoes=[],newDivides=[],evaluateList=[],bidList=[];
                 for(let i = 1;i<datas.length;i++){
-                  let [newProjectSetting,tbills,trations,tprojectGLJs,trationGLJs,trationCoes,tquantityDetails,trationInstallations,trationTemplates,newCalcProgramsFile,newLabourCoe,newDivide,tevaluateList] =  await handleEachProject(datas[i],projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap)
+                  let [newProjectSetting,tbills,trations,tprojectGLJs,trationGLJs,trationCoes,tquantityDetails,trationInstallations,trationTemplates,newCalcProgramsFile,newLabourCoe,newDivide,tevaluateList,tbidList] =  await handleEachProject(datas[i],projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap)
                   if(newProjectSetting) newProjectSettings.push(newProjectSetting);
                   if(tbills.length > 0) bills = bills.concat(tbills);
                   if(trations.length > 0) rations = rations.concat(trations);
@@ -1812,6 +1814,7 @@ async function importProject(data,req,updateData) {
                   if(newLabourCoe) newLabourCoes.push(newLabourCoe);
                   if(newDivide) newDivides.push(newDivide);
                   if(tevaluateList.length > 0) evaluateList = evaluateList.concat(tevaluateList);
+                  if(tbidList.length > 0) bidList = bidList.concat(tbidList);
                 }
 
                 if(newProjectSettings.length > 0) await insertMany(newProjectSettings,projectSettingModel);
@@ -1827,6 +1830,7 @@ async function importProject(data,req,updateData) {
                 if(newLabourCoes.length>0) await insertMany(newLabourCoes,labourCoesModel);
                 if(newDivides.length>0) await divideModel.insertMany(newDivides);
                 if(evaluateList.length > 0) await insertMany(evaluateList,evaluateListModel);
+                if(bidList.length > 0) await insertMany(bidList,bidListModel);
             }
 
          }
@@ -1835,7 +1839,7 @@ async function importProject(data,req,updateData) {
 }
 
 async function handleEachProject(data,projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap){
-    let bills = [],rations = [],projectGLJs = [],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[],evaluateList=[];
+    let bills = [],rations = [],projectGLJs = [],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[],evaluateList=[],bidList=[];
     let newProjectSetting =null,newCalcProgramsFile = null,newLabourCoe = null,newDivide=null;
     let billsIDMap = {},projectGLJIDMap={},rationIDMap = {};
     let newProjectID = projectIDMap[data.projSetting.projectID];
@@ -1884,6 +1888,7 @@ async function handleEachProject(data,projectIDMap,labourCoeFileIDMap,calcProgra
     if(data.rationInstallations && data.rationInstallations.length > 0) rationInstallations = setRationSubList(data.rationInstallations,newProjectID,billsIDMap,rationIDMap,projectGLJIDMap);
     if(data.rationTemplates && data.rationTemplates.length > 0) rationTemplates = setRationSubList(data.rationTemplates,newProjectID,billsIDMap,rationIDMap,projectGLJIDMap);
     if(data.evaluateList && data.evaluateList.length > 0) evaluateList = setMaterialList(data.evaluateList,newProjectID,projectGLJIDMap);
+    if(data.bidList && data.bidList.length > 0) bidList = setMaterialList(data.bidList,newProjectID,projectGLJIDMap);
 
     //生成projectSetting 文件
     if(data.projSetting){
@@ -1917,7 +1922,7 @@ async function handleEachProject(data,projectIDMap,labourCoeFileIDMap,calcProgra
       delete newDivide._id;
     } 
 
-    return [newProjectSetting,bills,rations,projectGLJs,rationGLJs,rationCoes,quantityDetails,rationInstallations,rationTemplates,newCalcProgramsFile,newLabourCoe,newDivide,evaluateList]
+    return [newProjectSetting,bills,rations,projectGLJs,rationGLJs,rationCoes,quantityDetails,rationInstallations,rationTemplates,newCalcProgramsFile,newLabourCoe,newDivide,evaluateList,bidList]
 
 }
 

+ 1 - 1
public/web/scMathUtil.js

@@ -173,7 +173,7 @@ let scMathUtil = {
     roundForObj:function(obj,decimal){
         let me = this;
         let value;
-        if(obj === undefined || obj === null) return 0;
+        if(obj === undefined || obj === null || isNaN(obj)) return 0;
         let n = Math.pow(10,decimal);
         if(me.isNumber(obj)){
           value = Math.round(obj * n) / n;

+ 0 - 1
web/building_saas/css/custom.css

@@ -56,7 +56,6 @@ legend.legend {
 .filterType {
     width: 98px;
     float: left;
-    height: 100%;
 }
 
 .left {

+ 57 - 0
web/building_saas/glj/html/project_glj.html

@@ -24,6 +24,7 @@
         <ul class="nav flex-column nav-side mt-2 mb-2"  style="margin-top: 0px!important;">
             <li class="nav-item"><a class="nav-link active" href="#" id="ALL">所有工料机</a></li>
             <li class="nav-item"><a class="nav-link" href="javascript:void(0)" id="ZGCL">暂估材料</a></li>
+            <li class="nav-item"><a class="nav-link" href="javascript:void(0)" id="PBCL">评标材料</a></li>
         </ul>
       </div>
 
@@ -320,4 +321,60 @@
             </div>
         </div>
     </div>
+</div>
+
+<!--暂估材料弹出 从人材机汇总中选择-->
+<div class="modal fade" id="selectPGLJ" data-backdrop="static">
+  <div class="modal-dialog modal-lg" role="document">
+      <div class="modal-content">
+          <div class="modal-header">
+              <h5 class="modal-title">从人材机汇总中选择</h5>
+              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                  <span aria-hidden="true">&times;</span>
+              </button>
+          </div>
+          <div class="modal-body" style="padding: 0px">
+              <div class="btn-toolbar" style="margin: 10px">
+                  <div class="btn-group btn-group-sm mr-2">
+                      <button type="button" class="btn btn-outline-primary pglj_sel_check_btn">全选</button>
+                      <button type="button" class="btn btn-outline-primary pglj_sel_check_btn">全选主材</button>
+                      <button type="button" class="btn btn-outline-primary pglj_sel_check_btn">全选设备</button>
+                  </div>
+                  <!--前面3个按钮 有选中状态,出现 取消 按钮-->
+                  <button type="button" class="btn btn-outline-danger btn-sm mr-2 pglj_sel_check_btn">取消</button>
+                  <div class="input-group input-group-sm mr-2" style="width:200px">
+                      <input type="text" class="form-control form-control-sm"  placeholder="查找" id="pglj_sel_input" value="">
+                      <div class="input-group-append">
+                          <button class="btn btn-outline-primary btn-sm" id="pglj_sel_btn_find" type="button"><i class="fa fa-search" aria-hidden="true"></i></button>
+                      </div>
+                  </div>
+                  <div class="input-group input-group-sm">
+                      <div class="form-check form-check-inline">
+                          <input class="form-check-input pglj_sel_input" type="checkbox" id="pglj_sel_all" value="0">
+                          <label class="form-check-label" for="pglj_sel_all">所有</label>
+                      </div>
+                      <div class="form-check form-check-inline">
+                          <input class="form-check-input pglj_sel_input pglj_sel_input_other" type="checkbox" id="pglj_sel_material" checked value="2">
+                          <label class="form-check-label" for="pglj_sel_material">材</label>
+                      </div>
+                      <div class="form-check form-check-inline">
+                          <input class="form-check-input pglj_sel_input pglj_sel_input_other" type="checkbox" id="pglj_sel_main" checked value="4">
+                          <label class="form-check-label" for="pglj_sel_main">主材</label>
+                      </div>
+                      <div class="form-check form-check-inline">
+                          <input class="form-check-input pglj_sel_input pglj_sel_input_other" type="checkbox" id="pglj_sel_eqp" checked value="5">
+                          <label class="form-check-label" for="pglj_sel_eqp">设备</label>
+                      </div>
+                  </div>
+              </div>
+              <div class="modal-auto-height" style="margin-top:10px; border: 1px solid #ccc">
+                  <div  id="pglj_from_sheet" style="overflow: hidden;height: 100%"></div>
+              </div>
+          </div>
+          <div class="modal-footer">
+              <button type="button" class="btn btn-primary" id="pglj_sel_confirm" data-dismiss="modal">确定</button>
+              <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+          </div>
+      </div>
+  </div>
 </div>

+ 4 - 1
web/building_saas/main/js/models/main_consts.js

@@ -20,6 +20,7 @@ const ModuleNames = {
     projectInfo: 'project_info',
     divide_setting:'divide_setting',
     evaluate_list:'evaluate_list',
+    bid_evaluation_list:'bid_evaluation_list'
 };
 
 let gljType = gljUtil.gljType;
@@ -315,7 +316,9 @@ const filterType = {
     JGCL:'8',
     ZGCL:'9',
     SCHZ:'10',
-    ZYCL:'11'
+    ZYCL:'11',
+    AMAE:'12',
+    PBCL:'13'
 };
 const filterTypeArray = ['1','2','3','4','5'];
 

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

@@ -104,6 +104,7 @@ var PROJECT = {
             this.calcBase = calcBase;
             this.divide_setting = new DivideSetting(this);
             this.evaluate_list = new EvaluateList(this);
+            this.bid_evaluation_list = new BidEvaluationList(this);
             // this.masterField = {ration: 'billsItemID', volumePrice: 'billsItemID'};
             this.masterField = {ration: 'billsItemID'};
         };

+ 11 - 0
web/building_saas/main/js/models/project_glj.js

@@ -1805,3 +1805,14 @@ class EvaluateList {
       this.datas = datas;
   };
 }
+
+class BidEvaluationList {
+  constructor (project) {
+      this.project = project;
+      this.datas = [];
+      project.registerModule(ModuleNames.bid_evaluation_list, this);
+  };
+  loadData (datas) {
+      this.datas = datas;
+  };
+}

+ 23 - 3
web/building_saas/main/js/views/config_material_view.js

@@ -743,7 +743,7 @@ let configMaterialObj = {
                             materialAdjustObj.checkedDefualtOption("glj_sel_input");
                             $("#selectFromGLJ").modal('show');
                         }else {
-                            materialAdjustObj.checkedDefualtOption("pglj_sel_input");
+                           // materialAdjustObj.checkedDefualtOption("pglj_sel_input"); 暂时没有这个
                             $("#selectPGLJ").modal('show');
                         }
                     }
@@ -864,9 +864,9 @@ let pgljSelObj={
     getSheetDatas(glj){
         let projectGLJ = projectObj.project.projectGLJ;
         let materialIdList = projectGLJ.datas.constData.materialIdList;
-        let data = materialAdjustObj.getCommonObject(glj);
-        console.log(projectGljObject.displayType);
+        let data = this.getCommonObject(glj);
         data.select = projectGljObject.displayType == filterType.ZGCL?glj.is_evaluate:glj.is_eval_material;
+        if(!gljUtil.isDef(data.select)) data.select = 0; 
         data.from = glj;
         data.short_name = projectGLJ.getShortNameByID(glj.type);
         // 只有材料才显示是否暂估
@@ -875,6 +875,25 @@ let pgljSelObj={
         data.is_evaluate = glj.is_evaluate;
         return data;
     },
+    getCommonObject:function (glj) {
+      let data ={
+          select:0,
+          id:glj.id,
+          code:glj.code,
+          name:glj.name,
+          specs:glj.specs,
+          unit:glj.unit,
+          type:glj.type,
+          quantity:glj.quantity,
+          supply:glj.supply,
+          originPlace:glj.originPlace,
+          vender:glj.vender,
+          brand:glj.brand,
+          remark:glj.remark
+      };
+      gljOprObj.setGLJPrice(data,glj);
+      return data;
+  },
     checkByType:function (type) {
         for(let d of this.datas){
             d.select = 0;
@@ -890,6 +909,7 @@ let pgljSelObj={
                     break;
                 case "取消":
                     d.select = projectGljObject.displayType == filterType.ZGCL?d.is_evaluate:d.is_eval_material;
+                    if(!gljUtil.isDef(d.select)) d.select = 0;
                     break;
             }
         }

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

@@ -828,7 +828,7 @@ let divideObj = {
         parentMap[divide.ParentID] = [];
       }else{
         divide = this.calcBills(divide);
-        updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees}});  
+        if(divide.fees) updateDatas.push({ID:divide.ID,type:'update',doc:{fees:divide.fees}});  
       }
     }
     for(let c of divideSetting.divideList){

+ 2 - 0
web/building_saas/main/js/views/glj_col.js

@@ -42,6 +42,8 @@ let gljCol = {
             {headerName: "定额价", headerWidth: 70, dataCode: "basePrice", hAlign: "right", dataType: "Number",validator:"number", spanRows: [2]},
             {headerName: "预算价", headerWidth: 70, dataCode: "marketPrice", hAlign: "right", dataType: "Number",validator:"number",spanRows: [2]},
             {headerName: "规格", headerWidth: 120, dataCode: "specs", hAlign: "left", dataType: "String",cellType:'tipsCell',spanRows: [2]},
+            {headerName: "暂估", headerWidth: 45, dataCode: "is_evaluate", hAlign: "center", dataType: "String",cellType:'checkBox',spanRows: [2]},
+            {headerName: "评标材料", headerWidth: 35, dataCode: "is_eval_material", dataType: "String",cellType: "checkBox",spanRows: [2]},
             {headerName: "主要\n材料", headerWidth: 45, dataCode: "is_main_material", hAlign: "center", dataType: "String",cellType:'checkBox',spanRows: [2]},
             {headerName: "新工料机", headerWidth: 50, dataCode: "is_add", hAlign: "center", dataType: "String",cellType:'checkBox',spanRows: [2]},
             {headerName: "不调价", headerWidth: 55, dataCode: "is_adjust_price", dataType: "String",cellType: "checkBox",spanRows: [2]},

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

@@ -374,7 +374,7 @@ projectGljObject={
             return false;
         }
 
-        if(isPaste == false &&(dataCode=='is_adjust_price'||dataCode=='is_evaluate'||dataCode=='is_main_material')){//除了粘贴,拖动填充等操作,其它的都不能编辑
+        if(isPaste == false &&(dataCode=='is_adjust_price'||dataCode=='is_evaluate'||dataCode=='is_main_material'||dataCode == 'is_eval_material')){//除了粘贴,拖动填充等操作,其它的都不能编辑
             return false;
         }
         if(dataCode=='basePrice'||dataCode=='marketPrice'||dataCode=='supply'){//有组成物时,市场单价、定额价、供货方式不能修改
@@ -702,7 +702,8 @@ projectGljObject={
     },
     initSheetViews(){
       let me = projectGljObject;
-      if(me.displayType == filterType.ZGCL ){
+      if(me.displayType == filterType.ZGCL || me.displayType == filterType.PBCL){
+        configMaterialObj.setNavLinkText(me.displayType);
         $('#project-glj-main').hide();
         $('#config_material').show();
       } else { 
@@ -712,7 +713,7 @@ projectGljObject={
     },
     refreshViewsData:function(){
       let me = projectGljObject;
-      if(me.displayType == filterType.ZGCL) return configMaterialObj.refreshSheetDatas();
+      if(me.displayType == filterType.ZGCL|| me.displayType == filterType.PBCL) return configMaterialObj.refreshSheetDatas();
       me.refreshDataSheet();
     },
     refreshDataSheet:function (refresh) {//refresh = true 的时候不用更新表头信息
@@ -900,6 +901,9 @@ projectGljObject={
         if (materialIdList.indexOf(glj.type) >= 0) {
             data.is_evaluate = glj.is_evaluate;
         }
+         //是“材料”、“主材”、“设备”时显示评标材料
+        if (materialIdList.indexOf(glj.type) >= 0||glj.type == gljType.MAIN_MATERIAL || glj.type == gljType.EQUIPMENT) data.is_eval_material = glj.is_eval_material ? glj.is_eval_material : 0;
+
         if(glj.materialCoe !== null && glj.materialCoe !==undefined){
             data.materialCoe =  scMathUtil.roundForObj(glj.materialCoe,getDecimal("material"));
         }
@@ -1069,8 +1073,12 @@ projectGljObject={
             if(dataCode === 'supply_quantity'){//修改数量需做4舍5入
                 value=  scMathUtil.roundForObj(value,getDecimal('glj.quantity'));
             }
-            if(dataCode === 'is_evaluate'||dataCode === 'is_adjust_price'||dataCode === 'is_main_material'){
+            if(dataCode === 'is_evaluate'||dataCode === 'is_adjust_price'||dataCode === 'is_main_material'||dataCode == 'is_eval_material'){
                 value = value == true?1:0;
+                if(dataCode === 'is_evaluate'|| dataCode == 'is_eval_material'){
+                  configMaterialObj.updateConfigMaterial(dataCode,value,recode);//暂估材料,主要材料等新需求
+                  return
+              }
             }
             if(dataCode === 'materialType' && (value == null || value=="")){//删除三材类别时,清空三材系数
                 value = null;
@@ -1645,6 +1653,7 @@ $(function () {
         me.displayType = filterType[this.id];
         me.initSheetViews();
         me.refreshViewsData();
+        loadProjectGljSize();
     });
 
     $("#mixRatio-nav").on('shown.bs.tab', function () {