Ver código fonte

1. delete volumePrice
2. delete bills: delete ration & volumePrice
3. feeTypes

MaiXinRong 8 anos atrás
pai
commit
52a13621c5

+ 148 - 0
web/building_saas/main/js/calc/bills_calc.js

@@ -68,6 +68,154 @@ let nodeCalcObj = {
     }
 };
 
+let baseCalcField = [
+    {
+        ID: 1,
+        // 序号
+        serialNo: '一',
+        // 费用代号
+        code: "A",
+        // 名称
+        name: "定额直接费",
+        // 计算基数
+        dispExpr: "A1+A2+A3",
+        // 基数说明
+        statement: "人工费+材料费+机械费",
+        // 费率
+        feeRate: null,
+        // 费用类别
+        type: 'RationDirect',
+        // 备注
+        memo: ''
+    }, {
+        ID: 2,
+        // 序号
+        serialNo: '1',
+        // 费用代号
+        code: "A1",
+        // 名称
+        name: "人工费",
+        // 计算基数
+        dispExpr: "H_J",
+        // 基数说明
+        statement: "合计",
+        // 费率
+        feeRate: 0,
+        // 费用类别
+        type: 'labour',
+        // 备注
+        memo: ''
+    }, {
+        ID: 3,
+        // 序号
+        serialNo: '2',
+        // 费用代号
+        code: "A2",
+        // 名称
+        name: "材料费",
+        // 计算基数
+        dispExpr: "H_J",
+        // 基数说明
+        statement: "合计",
+        // 费率
+        feeRate: 100,
+        // 费用类别
+        type: 'material',
+        // 备注
+        memo: ''
+    }, {
+        ID: 4,
+        // 序号
+        serialNo: '3',
+        // 费用代号
+        code: "A3",
+        // 名称
+        name: "机械费",
+        // 计算基数
+        dispExpr: "H_J",
+        // 基数说明
+        statement: "合计",
+        // 费率
+        feeRate: 0,
+        // 费用类别
+        type: 'machine',
+        // 备注
+        memo: ''
+    }, {
+        ID: 5,
+        // 序号
+        serialNo: '二',
+        // 费用代号
+        code: "A4",
+        // 名称
+        name: "管理费",
+        // 计算基数
+        dispExpr: "A",
+        // 基数说明
+        statement: "定额直接费",
+        // 费率
+        feeRate: 0,
+        // 费用类别
+        type: 'management',
+        // 备注
+        memo: ''
+    }, {
+        ID: 6,
+        // 序号
+        serialNo: '三',
+        // 费用代号
+        code: "B",
+        // 名称
+        name: "利润",
+        // 计算基数
+        dispExpr: "A",
+        // 基数说明
+        statement: "定额直接费",
+        // 费率
+        feeRate: 0,
+        // 费用类别
+        type: 'profit',
+        // 备注
+        memo: ''
+    }, {
+        ID: 7,
+        // 序号
+        serialNo: '四',
+        // 费用代号
+        code: "C",
+        // 名称
+        name: "风险费用",
+        // 计算基数
+        dispExpr: "",
+        // 基数说明
+        statement: "",
+        // 费率
+        feeRate: null,
+        // 费用类别
+        type: 'risk',
+        // 备注
+        memo: ''
+    }, {
+        ID: 8,
+        // 序号
+        serialNo: '',
+        // 费用代号
+        code: "",
+        // 名称
+        name: "综合单价",
+        // 计算基数
+        dispExpr: "A+B",
+        // 基数说明
+        statement: "定额直接费+利润",
+        // 费率
+        feeRate: NaN,
+        // 费用类别
+        type: 'common',
+        // 备注
+        memo: ''
+    }
+];
+
 class BillsCalcHelper {
     constructor (project, CalcFlag) {
         this.project = project;

+ 13 - 0
web/building_saas/main/js/calc/calc_fees.js

@@ -2,6 +2,19 @@
  * Created by Mai on 2017/7/21.
  */
 
+let feeType = [
+    {type: 'common', name: '工程造价'},
+    {type: 'labour', name: '人工费'},
+    {type: 'material', name: '材料费'},
+    {type: 'machine', name: '机械费'},
+    {type: 'rationDirect', name: '定额直接费'},
+    {type: 'management', name: '企业管理'},
+    {type: 'profit', name: '利润'},
+    {type: 'risk', name: '风险费'},
+    // 模拟用户新增
+    {type: 'fee1', name: '甲供材料费'}
+];
+
 let calcFees = {
     findFee: function (data, fieldName) {
         if (!data.fees) {

+ 12 - 16
web/building_saas/main/js/models/bills.js

@@ -159,28 +159,24 @@ var Bills = {
             return this.tree.insertByData(newData, parentId, nextSiblingId);
         };
         bills.prototype.deleteBills = function (node) {
+            let deleteNode = function (node) {
+                this.project.Ration.deleteByBills([node]);
+                this.project.VolumePrice.deleteByBills([node]);
+                return this.tree.delete(node);
+            }
             var deleteData = this.tree.getDeleteData(node);
             var ration_glj =projectObj.project.ration_glj;
-          //  project.beginUpdate('deleteBills');
-            //project.push(ModuleNames.bills, tools.coverseTreeUpdateData(deleteData, this.project.ID()));
-            //project.endUpdate();
-            var moudles =[ModuleNames.bills,ModuleNames.ration_glj];
-            var deleteDatas=[tools.coverseTreeUpdateData(deleteData, this.project.ID()),ration_glj.getDeleteDataByBills(deleteData)];
+            let modules =[ModuleNames.bills, ModuleNames.ration, ModuleNames.ration_glj, ModuleNames.volume_price];
+            let deleteDatas=[tools.coverseTreeUpdateData(deleteData, this.project.ID()),
+                this.project.Ration.getDeleteDataByBill([node]), ration_glj.getDeleteDataByBills(deleteData),
+                this.project.VolumePrice.getDeleteDataByBills([node])
+            ];
             project.ration_glj.deleteByBills(deleteData);
             project.quantity_detail.deleteByBills(deleteData);
-            project.pushNow('deleteBILL', moudles, deleteDatas);
-            this.delete(deleteData);
+            project.pushNow('deleteBills', modules, deleteDatas);
 
-           // return this.tree.delete(node);
+            return this.tree.delete(node);
         };
-        bills.prototype.delete=function(deleteData){
-            for(var i=0;i<deleteData.length;i++){
-                var billID = deleteData[i].data.ID;
-                 this.datas =_.filter(this.datas,(bill)=>{
-                    return bill.ID!=billID;
-                });
-            }
-        }
 
 
         bills.prototype.upMoveBills = function (node) {

+ 30 - 5
web/building_saas/main/js/models/ration.js

@@ -158,7 +158,7 @@ var Ration = {
                     newRation = data.updateData;
                 }
             });
-            this.project.pushNow('insertRation', [this.getSourceType()], [updateData]);
+            this.project.pushNow('insertRation', [this.getSourceType(), this.project.projCounter()], [updateData, this.getCounterData()]);
 
             newRation.ID = this.getNewRationID();
             if (preRation) {
@@ -178,16 +178,41 @@ var Ration = {
             updateData.push({'updateType': 'ut_delete', 'updateData': {'ID': rationData.ID, 'projectID': this.project.ID()}});
             return updateData;
         };
-        ration.prototype.getDeleteDataByBill = function (node) {
-            console.log(node);
-        };
-
         ration.prototype.delete = function (ration) {
             var ration_glj =projectObj.project.ration_glj;
             this.project.pushNow('deleteRation', [this.getSourceType(),ration_glj.getSourceType()], [this.getDeleteData(ration),ration_glj.getDeleteDataByRation(ration)]);
 
+            project.ration_glj.deleteByRation(ration);
+            project.ration_coe.deleteByRation(ration);
+            project.quantity_detail.deleteByRation(ration);
             this.datas.splice(this.datas.indexOf(ration), 1);
         };
+        ration.prototype.getDeleteDataByBill = function (nodes) {
+            let updateData = [];
+            for (let node of nodes) {
+                if (node.children.length > 0) {
+                    updateData = updateData.concat(this.getDeleteDataByBills[node.children]);
+                } else {
+                    let rations = this.getBillsSortRation(node.getID());
+                    for (let r of rations) {
+                        updateData.push({'updateType': 'ut_delete', 'updateData': {'ID': r.ID, 'projectID': this.project.ID()}});
+                    }
+                }
+            }
+            return updateData;
+        };
+        ration.prototype.deleteByBills = function (nodes) {
+            for (let node of nodes) {
+                if (node.children.length > 0) {
+                    this.deleteByBills([node.children]);
+                } else {
+                    let rations = this.getBillsSortRation(node.getID());
+                    for (let r of rations) {
+                        this.datas.splice(this.datas.indexOf(r), 1);
+                    }
+                }
+            }
+        }
 
         ration.prototype.getChangePosUpdateData = function (ration1, ration2) {
             var updateData = [];

+ 51 - 2
web/building_saas/main/js/models/volume_price.js

@@ -35,6 +35,9 @@ var VolumePrice = {
 
             loadData (datas) {
                 this.datas = datas;
+                for (let data of datas) {
+                    this.maxID(data.ID);
+                }
             };
             setMaxID (ID) {
                 this.maxID(ID);
@@ -55,6 +58,15 @@ var VolumePrice = {
                 return arr;
             };
 
+            getCounterData (count) {
+                var updateData = {'projectID': this.getProject().ID()};
+                if (count) {
+                    updateData[this.getSourceType()] = this.maxID() + count;
+                } else {
+                    updateData[this.getSourceType()] = this.maxID() + 1;
+                }
+                return updateData;
+            };
             getInsertVolumePriceData (billsID, pre) {
                 let bv = this.getBillsSortVolumePrice(billsID);
                 let updateData = [];
@@ -70,7 +82,7 @@ var VolumePrice = {
                 return updateData;
             };
             insertVolumePrice (billsID, pre) {
-                tools.owner.pushNow('insertVolumePrice', [this.getSourceType()], [this.getInsertVolumePriceData(billsID, pre)]);
+                tools.owner.pushNow('insertVolumePrice', [this.getSourceType(), this.getProject().projCounter()], [this.getInsertVolumePriceData(billsID, pre), this.getCounterData()]);
 
                 let bv = this.getBillsSortVolumePrice(billsID), newVP = null;
                 if (pre) {
@@ -85,7 +97,44 @@ var VolumePrice = {
                     this.datas.push(newVP);
                 }
                 return newVP;
-            }
+            };
+
+            getDeleteData (volumePrice) {
+                var updateData = [];
+                updateData.push({'updateType': 'ut_delete', 'updateData': {'ID': volumePrice.ID, 'projectID': this.getProject().ID()}});
+                return updateData;
+            };
+            delete (volumePrice) {
+                this.getProject().pushNow('deleteVolumePrice', [this.getSourceType()], [this.getDeleteData(volumePrice)]);
+                this.datas.splice(this.datas.indexOf(volumePrice), 1);
+            };
+
+            getDeleteDataByBills (nodes) {
+                let updateData = [];
+                for (let node of nodes) {
+                    if (node.children.length > 0) {
+                        updateData = updateData.concat(this.getDeleteDataByBills[node.children]);
+                    } else {
+                        let vps = this.getBillsSortVolumePrice(node.getID());
+                        for (let vp of vps) {
+                            updateData.push({'updateType': 'ut_delete', 'updateData': {'ID': vp.ID, 'projectID': this.getProject().ID()}});
+                        }
+                    }
+                }
+                return updateData;
+            };
+            deleteByBills (nodes) {
+                for (let node of nodes) {
+                    if (node.children.length > 0) {
+                        this.deleteByBills([node.children]);
+                    } else {
+                        let vps = this.getBillsSortVolumePrice(node.getID());
+                        for (let vp of vps) {
+                            this.datas.splice(this.datas.indexOf(vp), 1);
+                        }
+                    }
+                }
+            };
         }
 
         return new volumePrice();

+ 12 - 7
web/building_saas/main/js/views/project_view.js

@@ -82,10 +82,12 @@ var projectObj = {
                     gljOprObj.showDataIfRationSelect(node);
 
                     // CSL.2017.07.25
-                    if(node.sourceType=="ration" && SubActiveSheetNameIs('JSCX')){
-                        rationCalcView.showData(node);
-                    }else{
-                        if (SubActiveSheetNameIs('JSCX')) {
+                    if (SubActiveSheetNameIs('JSCX')) {
+                        if (node.sourceType === that.project.Bills.getSourceType()) {
+                            rationCalcView.clearData();
+                        } else if (node.sourceType==='ration') {
+                            rationCalcView.showData(node);
+                        } else {
                             rationCalcView.clearData();
                         }
                     }
@@ -182,6 +184,12 @@ var projectObj = {
                             if (selected.sourceType === project.Bills.getSourceType()) {
                                 project.Bills.deleteBills(selected.source);
                                 controller.delete();
+                            } else if (selected.sourceType === project.Ration.getSourceType()) {
+                                project.Ration.delete(selected.source);
+                                controller.delete();
+                            } else if (selected.sourceType === project.VolumePrice.getSourceType()) {
+                                project.VolumePrice.delete(selected.source);
+                                controller.delete();
                             };
                         }
                     }
@@ -238,9 +246,6 @@ $('#delete').click(function () {
             controller.delete();
         } else if (selected.sourceType === project.Ration.getSourceType()) {
             project.Ration.delete(selected.source);
-            project.ration_glj.deleteByRation(selected.source);
-            project.ration_coe.deleteByRation(selected.source);
-            project.quantity_detail.deleteByRation(selected.source);
             controller.delete();
         } else if (selected.sourceType === project.VolumePrice.getSourceType()) {
             project.VolumePrice.delete(selected.source);