Browse Source

cache_Tree加载嵌套数据

MaiXinRong 8 years ago
parent
commit
784514e847

+ 1 - 1
modules/main/models/bills.js

@@ -96,7 +96,7 @@ billsDAO.prototype.allocIDs = function(callback){
     var lowID, highID;
     counter.getIDAfterCount(IDModule, IDStep, function(highID, err){});
     lowID = highID - IDStep + 1;
-    callback(0, '', {lowID, highID});
+    callback(0, '', {lowID: lowID, highID: highID});
 };
 
 module.exports = new billsDAO();

+ 1 - 1
modules/main/models/billsSubSchemas.js

@@ -19,4 +19,4 @@ var flagsSchema = new Schema({
     flag: Boolean
 });
 
-module.exports = {feesSchema, flagsSchema};
+module.exports = {feesSchema: feesSchema, flagsSchema: flagsSchema};

+ 1 - 1
modules/main/models/rations.js

@@ -83,7 +83,7 @@ rationsDAO.prototype.allocIDs = function(callback){
     var lowID, highID;
     counter.getIDAfterCount(IDModule, IDStep, function(highID, err){});
     lowID = highID - IDStep + 1;
-    callback(0, '', {lowID, highID});
+    callback(0, '', {lowID: lowID, highID: highID});
 };
 
 module.exports = new rationsDAO();

+ 30 - 2
public/web/tree_sheet_helper.js

@@ -67,11 +67,39 @@ var TREE_SHEET_HELPER = {
             setting.cols.forEach(function (colSetting, iCol) {
                 var iRow = node.serialNo();
                 var cell = sheet.getCell(iRow, iCol, GC.Spread.Sheets.SheetArea.viewport);
-                if (node.data[colSetting.data.field]) {
+
+                var getFieldText = function () {
+                    var fields = colSetting.data.field.split('.');
+                    var validField = fields.reduce(function (field1, field2) {
+                        if (eval('node.data.' + field1)) {
+                            return field1 + '.' + field2
+                        } else {
+                            return field1;
+                        }
+                    });
+                    if (eval('node.data.' + validField)) {
+                        return eval('node.data.' + validField);
+                    } else {
+                        return '';
+                    }
+                };
+                var getFieldText2 = function () {
+                    var fields = colSetting.data.field.split('.'), iField, data = node.data;
+                    for (iField = 0; iField < fields.length; iField++) {
+                        if (data[fields[iField]]) {
+                            data = data[fields[iField]];
+                        } else {
+                            return '';
+                        }
+                    }
+                    return data;
+                };
+                cell.value(getFieldText2());
+                /*if (node.data[colSetting.data.field]) {
                     cell.value(node.data[colSetting.data.field]);
                 } else {
                     cell.text('');
-                }
+                }*/
                 sheet.setTag(iRow, iCol, node.getID());
             });
             if (recursive) {

+ 51 - 0
test/tmp_data/bills_grid_setting.js

@@ -189,6 +189,57 @@ var BillsGridSetting = {
                 font: '9px Arial'
             },
             width: 60
+        },
+        {
+            head: {
+                titleNames: ['人工费单价', ''],
+                spanCols: [1, 0],
+                spanRows: [2, 0],
+                vAlign: [1, 1],
+                hAlign: [1, 1],
+                font: '9px Arial'
+            },
+            data: {
+                field: 'FeesIndex.labour.unitFee',
+                vAlign: 1,
+                hAlign: 2,
+                font: '9px Arial'
+            },
+            width: 60
+        },
+        {
+            head: {
+                titleNames: ['机械费单价', ''],
+                spanCols: [1, 0],
+                spanRows: [2, 0],
+                vAlign: [1, 1],
+                hAlign: [1, 1],
+                font: '9px Arial'
+            },
+            data: {
+                field: 'FeesIndex.machine.unitFee',
+                vAlign: 1,
+                hAlign: 2,
+                font: '9px Arial'
+            },
+            width: 60
+        },
+        {
+            head: {
+                titleNames: ['局部汇总', ''],
+                spanCols: [1, 0],
+                spanRows: [2, 0],
+                vAlign: [1, 1],
+                hAlign: [1, 1],
+                font: '9px Arial'
+            },
+            data: {
+                field: 'FlagsIndex.isPartGather.flag',
+                vAlign: 1,
+                hAlign: 2,
+                font: '9px Arial'
+            },
+            width: 60
         }
     ],
     headRows: 2,

+ 13 - 0
web/main/html/main.html

@@ -615,6 +615,19 @@
         billsSpread.options.scrollbarMaxAlign = true;
 
         // For Test
+        datas.forEach(function (data) {
+            data.fees = [];
+            data.fees.push({fieldName: 'labour', unitFee: '1', totalFee: '2', tenderUnitFee: '3', tenderTotalFee: '4'});
+            data.flags = [];
+            data.flags.push({fieldName: 'isPartGather', flag: true});
+        });
+        drawing_data.forEach(function (data) {
+            data.fees = [];
+            data.fees.push({fieldName: 'machine', unitFee: '5', totalFee: '6', tenderUnitFee: '7', tenderTotalFee: '8'});
+            data.flags = [];
+            data.flags.push({fieldName: 'isPartGather', flag: false});
+        });
+
         project = PROJECT.createNew();
         project.Bills.loadDatas(datas);
         project.Rations.loadDatas(drawing_data);

+ 7 - 3
web/main/js/models/bills.js

@@ -29,13 +29,17 @@ var Bills = {
         // prototypeÓÃÓÚ¶¨Òåpublic·½·¨
         bills.prototype.loadDatas = function (datas) {
             this.datas = datas;
-            // generate Fees Index£¬For View & Calculate
-            /*this.datas.forEach(function (data) {
+            // generate Fees & Flags Index£¬For View & Calculate
+            this.datas.forEach(function (data) {
                 data.FeesIndex = {};
                 data.fees.forEach(function (fee) {
                     data.FeesIndex[fee.fieldName] = fee;
                 });
-            });*/
+                data.FlagsIndex = {};
+                data.flags.forEach(function (flag) {
+                    data.FlagsIndex[flag.fieldName] = flag;
+                });
+            });
             // datas load to Tree
             this.tree.loadDatas(this.datas);
         };

+ 11 - 0
web/main/js/models/rations.js

@@ -21,6 +21,17 @@ var Rations = {
         // prototypeÓÃÓÚ¶¨Òåpublic·½·¨
         rations.prototype.loadDatas = function (datas) {
             this.datas = datas;
+            // generate Fees & Flags Index£¬For View & Calculate
+            this.datas.forEach(function (data) {
+                data.FeesIndex = {};
+                data.fees.forEach(function (fee) {
+                    data.FeesIndex[fee.fieldName] = fee;
+                });
+                data.FlagsIndex = {};
+                data.flags.forEach(function (flag) {
+                    data.FlagsIndex[flag.fieldName] = flag;
+                });
+            });
         };
 
         return new rations(project);