瀏覽代碼

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

zhangweicheng 7 年之前
父節點
當前提交
84807b1e2d

+ 1 - 0
modules/main/facade/calc_program_facade.js

@@ -92,6 +92,7 @@ function save (user_id, datas, callback) {
     projectCalcProgramsModel.update({"projectID": 553}, {"libName":"goo—test"}, callback(null, returnData));
 }
 
+// saveCalcItem({projectID: 597, templatesID: 4, calcItem: calcItem})
 function saveCalcItem(dataObj, callback) {
     dataObj=JSON.parse(dataObj);
     projectCalcProgramsModel.findOne({projectID: dataObj.projectID}, function (err, data) {

+ 9 - 2
public/web/tree_sheet/tree_sheet_helper.js

@@ -103,10 +103,17 @@ var TREE_SHEET_HELPER = {
     },
     refreshTreeNodeData: function (setting, sheet, nodes, recursive) {
         nodes.forEach(function (node) {
+            let iRow = node.serialNo();
+            let nodeStyle = projectObj.getNodeColorStyle(node);
+            //test
+            sheet.setStyle(iRow, -1, nodeStyle);
+            //test
             setting.cols.forEach(function (colSetting, iCol) {
-                var iRow = node.serialNo();
                 var cell = sheet.getCell(iRow, iCol, GC.Spread.Sheets.SheetArea.viewport);
-
+                let boldFontStyle = projectObj.getBoldFontStyle(node, colSetting);
+                if(boldFontStyle){
+                    sheet.setStyle(iRow, iCol, boldFontStyle);
+                }
                 // var getFieldText = function () {
                 //     var fields = colSetting.data.field.split('.');
                 //     var validField = fields.reduce(function (field1, field2) {

+ 1 - 1
web/building_saas/complementary_ration_lib/html/dinge.html

@@ -430,11 +430,11 @@
         </div>
         <!-- JS. -->
         <script type="text/javascript" src = "/lib/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
+        <script type="text/javascript" src="/lib/jquery/jquery-3.2.1.min.js"></script>
         <script type="text/javascript" src="/lib/jquery-contextmenu/jquery.contextMenu.min.js"></script>
         <script type="text/javascript" src="/lib/jquery-contextmenu/jquery.ui.position.js"></script>
         <!--inject:js-->
         <script>GC.Spread.Sheets.LicenseKey = "559432293813965#A0y3iTOzEDOzkjMyMDN9UTNiojIklkI1pjIEJCLi4TPB9mM5AFNTd4cvZ7SaJUVy3CWKtWYXx4VVhjMpp7dYNGdx2ia9sEVlZGOTh7NRlTUwkWR9wEV4gmbjBDZ4ElR8N7cGdHVvEWVBtCOwIGW0ZmeYVWVr3mI0IyUiwCMzETN8kzNzYTM0IicfJye&Qf35VfiEzRwEkI0IyQiwiIwEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsIyNyMzM5ADI5ADNwcTMwIjI0ICdyNkIsIibj9SbvNmL4N7bjRnch56ciojIz5GRiwiI8+Y9sWY9QmZ0Jyp96uL9v6L0wap9biY9qiq95q197Wr9g+89iojIh94Wiqi";</script>
-        <script type="text/javascript" src="/lib/jquery/jquery-3.2.1.min.js"></script>
         <script type="text/javascript" src="/lib/popper/popper.min.js"></script>
         <script type="text/javascript" src="/lib/bootstrap/bootstrap.min.js"></script>
         <script type="text/javascript" src="/web/building_saas/complementary_ration_lib/js/global.js"></script>

+ 5 - 1
web/building_saas/complementary_ration_lib/js/ration_coe.js

@@ -243,12 +243,16 @@ var rationCoeOprObj = {
             ration.rationCoeList.length == 0){return;};*/
 
         var coeList = ration.rationCoeList;
+        let coeIDs = [];
+        for(let i = 0, len = coeList.length; i < len; i++){
+            coeIDs.push(coeList[i].ID);
+        }
         var curCache = me.cache["_Coe_" + ration.ID];
         if (curCache) {
             me.showCoeItems(ration.ID);
             //sheetCommonObj.lockCells(me.sheet, me.setting);
         } else if(!curCache && typeof coeList !== 'undefined' && coeList.length > 0) {
-            var data = {"libID": me.libID, "coeIDs": coeList};
+            var data = {"libID": me.libID, "coeIDs": coeIDs};
             CommonAjax.post('api/getCoeItemsByIDs', data, function (rstData) {
                 sheetCommonObj.cleanData(me.sheet, me.setting, -1);
                 var tempResult = [];

+ 1 - 6
web/building_saas/main/js/models/calc_base.js

@@ -23,12 +23,7 @@ let cbTools = {
         return r;
     },
     findBill: function (fixedFlag) {
-        let bills = projectObj.project.Bills.datas;
-        for(let i = 0, len = bills.length; i < len; i++){
-            if(bills[i].flagsIndex && bills[i].flagsIndex.fixed && bills[i].flagsIndex.fixed.flag && bills[i].flagsIndex.fixed.flag === fixedFlag){
-                return bills[i];
-            }
-        }
+        return this.isDef(calcBase.project.fixedBills[fixedFlag]) ? calcBase.project.fixedBills[fixedFlag]['bill'] : null;
     },
     //通过行获取根节点清单
     getBillByRow: function (items, row) {

+ 5 - 3
web/building_saas/main/js/models/calc_program.js

@@ -163,7 +163,7 @@ let cpFeeTypes = [
     {type: 'machineDiff', name: '机械价差'},
     {type: 'adjustLabour', name: '调整人工费'},
     {type: 'adjustMachineLabour', name: '调整机上人工费'},
-    {type: 'estimate', name: '暂估'},
+    {type: 'estimate', name: '暂估'},
     {type: 'fee1', name: '甲供材料费'},
     // 模拟用户新增
     {type: 'common', name: '工程造价'}
@@ -826,7 +826,9 @@ class CalcProgram {
                 for (let glj of treeNode.data.gljList) {
                     if (eTypes.indexOf(glj.type) >= 0) {
                         if (glj.isEstimate){
-                            GLJObjs.push({code: glj.code, quantity: glj.quantity, marketPrice: glj.marketPrice});
+                            'code','name','specs','unit','type'
+                            GLJObjs.push({code: glj.code, name: glj.name, specs: glj.specs, unit: glj.unit, type: glj.type,
+                                quantity: glj.quantity, marketPrice: glj.marketPrice});
                         }
                         else{   // 组成物
                             if (eDetailTypes.indexOf(glj.type) >= 0){
@@ -838,7 +840,7 @@ class CalcProgram {
                                         let mdQ = (parseFloatPlus(glj.quantity) * parseFloatPlus(md.consumption)).toDecimal(decimalObj.process);
 
                                         for (let obj of GLJObjs){
-                                            if (md.code == obj.code){
+                                            if (gljOprObj.getIndex(md, gljKeyArray) == gljOprObj.getIndex(obj, gljKeyArray)){
                                                 isExist = true;
                                                 obj.quantity = (parseFloatPlus(obj.quantity) + mdQ).toDecimal(decimalObj.process);
                                                 break;

+ 6 - 3
web/building_saas/main/js/views/calc_base_view.js

@@ -79,7 +79,10 @@ let calcBaseView = {
         let cols = this.setting.header;
         let fuc = function () {
             sheet.setRowCount(datas.length);
-            sheet.setFormatter(-1, 1, '@');
+            //sheet.setFormatter(-1, 1, '@');
+            let style = new GC.Spread.Sheets.Style();
+            style.formatter = MainTreeCol.getNumberFormatter(decimalObj.bills.totalPrice, true);
+            sheet.setStyle(-1, 1, style);
             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']]);
@@ -212,11 +215,11 @@ let calcBaseView = {
         }
         CalcBaseCellType.prototype = new ns.CellTypes.Text();
         CalcBaseCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
-            if(value!=null){
+          //  if(value!=null){
                // ctx.fillText(value,x+3+ctx.measureText(value).width,y+h-3);
                // ctx.fillText(value,x+w-3,y+h-3);
                 GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
-            }
+           // }
             if(calcBaseView.editingCell){
                 if(calcBaseView.editingCell.row==options.row&&calcBaseView.editingCell.col==options.col){
                     var image = document.getElementById('f_btn'),imageMagin = 3;

+ 23 - 5
web/building_saas/main/js/views/calc_program_manage.js

@@ -52,8 +52,10 @@ let calcProgramManage = {
         };
         me.mainSpread = sheetCommonObj.buildSheet($('#mainSpread')[0], me.mainSetting, me.datas.length);
         me.detailSpread = sheetCommonObj.buildSheet($('#detailSpread')[0], me.detailSetting, me.datas[0].calcItems.length);
-        var fieldName = new GC.Spread.Sheets.CellTypes.ComboBox();
-        fieldName.items(projectObj.project.calcProgram.compiledFeeTypeNames);
+        let arr = projectObj.project.calcProgram.compiledFeeTypeNames.slice();
+        arr.splice(arr.findIndex(function (e){return e == '暂估费'}), 1);
+        let fieldName = new GC.Spread.Sheets.CellTypes.ComboBox();
+        fieldName.items(arr);
         me.detailSpread.getSheet(0).getRange(-1, 4, -1, 1).cellType(fieldName);
 
         me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onMainEnterCell);
@@ -79,10 +81,26 @@ let calcProgramManage = {
         me.detailSpread.resumePaint();
     },
     onEditEnded: function(sender, args) {
-        var me = calcProgramManage;
-        if(me.detailSetting.header[args.col].dataCode=='feeRate'){
-            var editInfo= me.getSelectionInfo();
+        let me = calcProgramManage;
+        let editInfo= me.getSelectionInfo();
+        if(me.detailSetting.header[args.col].dataCode == 'feeRate'){
             projectObj.project.FeeRate.updateFeeRateFromCalc(args.editingText,editInfo);
+        }else {
+            if(me.detailSetting.header[args.col].dataCode == 'displayFieldName'){
+                editInfo.calcItem.fieldName = projectObj.project.calcProgram.compiledFeeTypeMaps[args.editingText];
+                editInfo.calcItem.displayFieldName = args.editingText;    // 这句不入库,仅用于切换后再切换回来时界面正确显示
+            };
+
+            let data = {
+                'projectID': projectObj.project.ID(),
+                'templatesID': editInfo.template.ID,
+                'calcItem': editInfo.calcItem
+            };
+            me.saveCalcItem(data, function (rst) {
+                if (rst){
+
+                }
+            });
         }
     },
     saveCalcItem: function (data,callback) {//data

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

@@ -251,10 +251,10 @@ var feeRateObject={
         }
         FeeRateEditCellType.prototype = new ns.CellTypes.Text();
         FeeRateEditCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
-            if(value!=null){
+           // if(value!=null){
                // ctx.fillText(value,x+3+ctx.measureText(value).width,y+h-3);
-                ctx.fillText(value,x+w-3,y+h-3);
-            }
+             GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
+           // }
             if(feeRateObject.editingCell){
                 if(feeRateObject.editingCell.row==options.row&&feeRateObject.editingCell.col==options.col){
                     var image = document.getElementById('f_btn'),imageMagin = 3;

+ 0 - 3
web/building_saas/main/js/views/project_property_projFeature.js

@@ -158,9 +158,6 @@ let projFeatureView = {
         let me = projFeatureView;
         let items = sheetCommonObj.analyzePasteData(me.setting, args);
         let recRows = [];
-        console.log(args);
-        console.log(items);
-        console.log('enter');
         if(items.length === 0){
             return;
         }

+ 87 - 0
web/building_saas/main/js/views/project_view.js

@@ -801,6 +801,93 @@ var projectObj = {
                 isTotalShowing = true;
             }, 200);
         };
+ },
+
+ //根据节点获取行style(颜色、字体加粗)
+    getNodeColorStyle: function (node) {
+        let type, backColor = null, foreColor = null;
+        if(!isDef(node)){
+            return null;
+        }
+        //清单大类
+        if(node.sourceType === this.project.Bills.getSourceType()){
+            //分部
+            if(node.data.type === billType.FB){
+                type = 1;
+            }
+            //分项
+            else if(node.data.type === billType.FX){
+                type = 2;
+            }
+            //清单
+            else if(node.data.type === billType.BILL){
+                //非叶子节点的清单
+                if(node.source.children.length > 0){
+                    type = 1;
+                }
+                //未使用基数计算的叶子节点的清单
+                else if(node.source.children.length === 0 && (!isDef(node.data.calcBase) || node.data.calcBase === '')){
+                    type = 2;
+                }
+                //使用基数计算的叶子节点的清单
+                else if(node.source.children.length === 0 && isDef(node.data.calcBase && node.data.calcBaseValue !== '')){
+                    type = 3;
+                }
+            }
+        }
+        //定额下的主材、设备
+        else if(node.sourceType === this.project.ration_glj.getSourceType()){
+            type = 4;
+        }
+        switch (type){
+            //case 0: font = 'bold 13px "Arial"'; break;
+            case 1: backColor = '#c1d3e3'; break;
+            case 2: backColor = '#dae5ee'; break;
+            case 3: backColor = '#e5f3f2';  break;
+            case 4: foreColor = '#4D7BFF';   break;
+        }
+        if(!backColor && !foreColor){
+            return null;
+        }
+        let style = new GC.Spread.Sheets.Style();
+        if(foreColor){
+            style.foreColor = foreColor;
+        }
+        if(backColor){
+            style.backColor = backColor;
+            style.borderLeft = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+            style.borderTop = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+            style.borderRight = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+            style.borderBottom = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+        }
+        return style;
+    },
+    //大项费用则字体加粗,String 15px, Number 13px
+    getBoldFontStyle: function (node, colSetting) {
+        if(node.sourceType !== this.project.Bills.getSourceType() || node.data.type !== billType.DXFY){
+            return null;
+        }
+        let style = new GC.Spread.Sheets.Style();
+        //备注暂无字段
+        let stringFields = [
+            'code',
+            'subType',
+            'name',
+            'unit',
+            'itemCharacterText',
+            'jobContentText',
+            'adjustState',
+            'calcBase',
+            'programID',
+            'ruleText'
+        ];
+        if(stringFields.indexOf(colSetting.data.field) > 0){
+            style.font = 'bold 15px Arial';
+        }
+        else {
+            style.font = 'bold 13px Arial';
+        }
+        return style;
     }
 };
 // 点击合计框中的复制

+ 1 - 0
web/building_saas/pm/html/project-management.html

@@ -503,6 +503,7 @@
 <script src="/public/web/date_util.js"></script>
 <script src="/public/web/tree_table/tree_table.js"></script>
 <script type="text/javascript" src="/public/web/common_ajax.js"></script>
+<script src="/lib/JSExpressionEval_src/Date.js"></script>
 <script src="/web/building_saas/pm/js/pm_ajax.js"></script>
 <script src="/web/building_saas/pm/js/pm_main.js" charset="UTF-8"></script>
 <script src="/web/building_saas/pm/js/pm_gc.js"></script>

+ 2 - 3
web/building_saas/pm/js/pm_gc.js

@@ -233,9 +233,8 @@ function v_getFiles(type, files){
     for(let i = 0, len = files.length; i < len; i ++){
         let recName = type === fileType.unitPriceFile ?  files[i].name + '单价文件' : files[i].name + '费率文件';
         let fileId = type === fileType.unitPriceFile ? files[i].id : files[i].ID;
-        let recTime = new Date();
-        let recTimeA = recTime.Format('yyyy-MM-dd');
-        let recTimeB = recTime.Format('hh:mm:ss');
+        let recTimeA = formatDate(new Date(files[i].deleteInfo.deleteDateTime), 'yyyy-MM-dd');
+        let recTimeB = formatDate(new Date(files[i].deleteInfo.deleteDateTime), 'HH:mm:ss');
         html += '<tr><td>'+ recName +'</td><td>' + recTimeA + '<br>' + recTimeB + '</td><td><input name="fileItems" type="checkbox" fileId = "' + fileId + '" fileType = "' + type + '"></td></tr>';
     }
     return html;