zhangweicheng пре 6 година
родитељ
комит
106b9ca849

+ 5 - 0
modules/all_models/engineering_lib.js

@@ -52,6 +52,11 @@ let modelSchema = {
         type: Schema.Types.Mixed,
         default: []
     },
+    //工程特征库
+    feature_lib:{
+        type: Schema.Types.Mixed,
+        default: []
+    },
     //设置人材机显示列
     glj_col:{
         showAdjustPrice:Boolean//是否显示调整价列

+ 22 - 0
modules/all_models/project_feature_lib.js

@@ -0,0 +1,22 @@
+/**
+ * Created by zhang on 2018/9/3.
+ */
+
+//工程特征库
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+const oprSchema = require('../all_schemas/opr_schema');
+const project_feature_lib = new Schema({
+        ID:{type:String,index:true},
+        creator: String,
+        createDate: Number,
+        recentOpr: [oprSchema],
+        name: String,
+        feature:{
+            type: [Schema.Types.Mixed],
+            default: []
+        }
+    }, {versionKey: false}
+);
+
+mongoose.model("std_project_feature_lib", project_feature_lib,"std_project_feature_lib");

+ 15 - 0
modules/pm/facade/pm_facade.js

@@ -23,6 +23,8 @@ let rationGLJModel = mongoose.model('ration_glj');
 let rationCoeModel = mongoose.model('ration_coe');
 let rationInstallationModel = mongoose.model('ration_installation');
 let quantityDetailModel = mongoose.model('quantity_detail');
+
+let featureLibModel =  mongoose.model("std_project_feature_lib");
 let scMathUtil = require('../../../public/scMathUtil').getUtil();
 import CounterModel from "../../glj/models/counter_model";
 import moment from 'moment';
@@ -43,6 +45,7 @@ module.exports={
     getSummaryInfoByTender: getSummaryInfoByTender,
     getConstructionProject: getConstructionProject,
     getFullPath: getFullPath,
+    getProjectFeature:getProjectFeature,
     projectType: projectType
 };
 
@@ -708,4 +711,16 @@ async function getFullPath(projectID) {
             }
         }
     }
+}
+
+async function getProjectFeature(libID,engineerName){
+    let lib = await featureLibModel.findOne({'ID':libID})
+    if(lib){
+        let eng = _.find(lib.feature,{'key':'engineering'})
+        if(eng) eng.value = engineerName;
+        console.log(lib.feature);
+        return lib.feature;
+    }else {
+        return [];
+    }
 }

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

@@ -164,8 +164,11 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                     //basicInformation[0]['items'][1]['value'] = data.updateData.property.engineeringName || '';
                     //data.updateData.property.basicInformation = basicInformation;
                     //工程特征
-                    projectFeature[0]['value'] = data.updateData.property.engineeringName || '';
-                    data.updateData.property.projectFeature = projectFeature;
+                    if(data.updateData.property.featureLibID){
+                        data.updateData.property.projectFeature = await pmFacade.getProjectFeature(data.updateData.property.featureLibID, data.updateData.property.engineeringName);
+                    }
+                    /*projectFeature[0]['value'] = data.updateData.property.engineeringName || '';
+                    data.updateData.property.projectFeature = projectFeature;*/
 
                     //呈现选项
                     data.updateData.property.displaySetting = displaySetting;

+ 6 - 2
public/web/gljUtil.js

@@ -210,8 +210,10 @@ let gljUtil = {
         let price_hasM_decimal = decimalObj.glj.unitPriceHasMix?decimalObj.glj.unitPriceHasMix:decimalObj.glj.unitPrice;
         let quantity_decimal = decimalObj.glj.quantity;
         let process_decimal = decimalObj.process;
+
         if (this.notEditType.indexOf(glj.unit_price.type)!=-1&&glj.ratio_data.length>0) {//对于混凝土、配合比、砂浆、机械台班等有组成物的材料,价格需根据组成物计算得出。
-            let p =0;
+            //2018-09-07 需求修改,定额价不按组成物的量和价实时计算出来,直接取单价文件中的定额价
+       /*     let p =0;
             for(let ratio of glj.ratio_data){
                 let tem =  _.find( projectGLJDatas.gljList,{
                     'code': ratio.code,
@@ -226,7 +228,9 @@ let gljUtil = {
                     p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
             }
-            return scMathUtil.roundForObj(p,price_hasM_decimal);
+            return scMathUtil.roundForObj(p,price_hasM_decimal);*/
+
+            return scMathUtil.roundForObj(glj.unit_price.base_price,price_hasM_decimal);
         }else {
             let tem_decimal =price_decimal; //isRadio==true?process_decimal:price_decimal;
             return scMathUtil.roundForObj(glj.unit_price.base_price,tem_decimal);

+ 15 - 18
web/building_saas/main/js/views/project_property_projFeature.js

@@ -20,13 +20,7 @@ let projFeatureView = {
             allowUserDragFill: false,
             scrollbarMaxAlign : true
         },
-        combos: [
-            {row: 2, key: 'projType', items: ['住宅', '公共建筑', '厂房', '办公楼']},
-            {row: 3, key: 'structureType', items: ['排架结构', '框架结构', '现浇、框架结构', '预制、砖混结构', '外砖内模', '内浇外挂', '钢结构']},
-            {row: 4, key: 'baseType', items: ['带基', '框排架柱距6m以内', '框排架柱距6m以外', '满基筏式', '满基板式', '满基箱式', '独立基础']},
-            {row: 5, key: 'buildingFeature', items: ['点式', '凹式', '凸式', 'Y式', '其他']}
-        ],
-        numRows: [6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
+        numRows: [],//6, 7, 8, 9, 10, 11, 12, 13, 14, 15
         dateRows: [],
         locked: {
             rows: [0, 1],
@@ -73,6 +67,9 @@ let projFeatureView = {
             for(let i = 0, len = headers.length; i < len; i++){
                 sheet.setValue(0, i, headers[i].name, GC.Spread.Sheets.SheetArea.colHeader);
                 sheet.setColumnWidth(i, headers[i].width, GC.Spread.Sheets.SheetArea.colHeader);
+                sheet.getRange(-1, i, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign[headers[i]['hAlign']]);
+                sheet.getRange(-1, i, -1, 1).vAlign(GC.Spread.Sheets.VerticalAlign[headers[i]['vAlign']]);
+
             }
         };
         me.renderSheetFuc(sheet, fuc);
@@ -107,17 +104,17 @@ let projFeatureView = {
             sheet.setRowCount(datas.length);
             me.initTree(sheet, true, datas);
             sheet.setFormatter(-1, 1, '@');
-            //setCombo
-            for(let i = 0, len = me.setting.combos.length; i < len; i++){
-                me.setCombo(sheet, me.setting.combos[i].row, me.setting.combos[i].items);
-            }
-            for(let col = 0, cLen = cols.length; col < cLen; col++){
-                sheet.getRange(-1, col, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign[cols[col]['hAlign']]);
-                sheet.getRange(-1, col, -1, 1).vAlign(GC.Spread.Sheets.VerticalAlign[cols[col]['vAlign']]);
-                for(let row = 0, rLen = datas.length; row < rLen; row++){
-                    sheet.setValue(row, col, datas[row][cols[col]['dataCode']]);
-                }
-            }
+           for(let row = 0;row < datas.length ; row ++){
+               if(datas[row].cellType == 'comboBox'){
+                   let options = datas[row].options?datas[row].options.split("@"):[];
+                   me.setCombo(sheet, row, options);
+               }else if(datas[row].cellType == 'number'){
+                   me.setting.numRows.push(row);
+               }
+               for(let col = 0;col < cols.length;col++){
+                   sheet.setValue(row, col, datas[row][cols[col]['dataCode']]);
+               }
+           }
         };
         this.renderSheetFuc(sheet, fuc);
     },

+ 6 - 1
web/building_saas/pm/js/pm_newMain.js

@@ -2384,6 +2384,10 @@ function AddTender() {
         // 一个项目里面,这两个文件必须得有,而界面又没有像费率、单价文件那样给出可选项。所以这里给出提示。
         if (!libs.artificial_lib)  throw '编办没有绑定人工系数标准文件';
 
+        let featureLibID = "";
+        if(libs.feature_lib && libs.feature_lib.length > 0) featureLibID = libs.feature_lib[0].id;
+
+
         let calcProgramName = $('#tender-calcProgram').children("option:selected").text();
 
         let callback = function() {
@@ -2413,7 +2417,8 @@ function AddTender() {
             calcProgram: {name: calcProgramName, id: calcProgram},
             taxType:taxType,
             templateLibID:templateLibID,
-            colLibID:colLibID
+            colLibID:colLibID,
+            featureLibID:featureLibID
         };
         AddTenderItems(selectedItem, projName, engName, tenderName, tenderInfo, callback);