zhongzewei 6 lat temu
rodzic
commit
8f9befcbd3

+ 44 - 0
public/web/sheet/sheet_common.js

@@ -175,6 +175,50 @@ var sheetCommonObj = {
             }
         }
     },
+    setSheetBySetting: function (sheet, setting) {
+        function setCellType(range, cellType) {
+            let type;
+            if (cellType === 'checkBox') {
+                type = new GC.Spread.Sheets.CellTypes.CheckBox();
+            }
+            range.cellType(type);
+        }
+        setting.header.forEach((item, index) => {
+            const range = sheet.getRange(-1, index, -1, 1);
+            this.setAreaAlign(range, item.hAlign, item.vAlign);
+            if (item.cellType) {
+                console.log(item);
+                setCellType(range, item.cellType);
+            }
+            if (item.formatter) {
+                range.formatter(item.formatter)
+            }
+        });
+    },
+    appendData: function (sheet, index, rowIndex, setting, data) {
+        /*const curRowCount = sheet.getRowCount();
+        const curColCount = sheet.getColumnCount();
+        const viewport = GC.Spread.Sheets.SheetArea.viewport;
+        const rowHeader = GC.Spread.Sheets.SheetArea.rowHeader;*/
+        if (!index) {
+            sheet.setRowCount(0);
+        }
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        // 追加空行
+        sheet.addRows(index, data.length);
+        // 显示数据
+        data.forEach((item, rIdx) => {
+            const row = index + rIdx;
+            setting.header.forEach((hItem, cIdx) => {
+                const dataCode = hItem.dataCode;
+                const val = gljUtil.isDef(item[dataCode]) ? item[dataCode] : '';
+                sheet.setValue(row, cIdx, val);
+            });
+        });
+        sheet.resumeEvent();
+        sheet.resumePaint();
+    },
     showData: function(sheet, setting, data,distTypeTree,callback) {
         var me = this, ch = GC.Spread.Sheets.SheetArea.viewport;
         sheet.suspendPaint();

+ 14 - 9
web/building_saas/main/js/models/ration_glj.js

@@ -501,6 +501,7 @@ let ration_glj = {
             let property = projectObj.project.projectInfo.property;
             let engineerID = property.engineering_id;
             CommonAjax.post('/rationGlj/getGLJDataPaging', {engineerID, condition}, function (data) {
+                gljOprObj.curPageTotal = data.total;
                 data.complementaryGLJs.forEach(glj => {
                     glj.isComplementary = true;
                 });
@@ -509,7 +510,7 @@ let ration_glj = {
                     : 'complementaryGLJs';
                 if (condition.init) {
                     gljOprObj.treeData = data.treeData;
-                    gljOprObj.distTypeTree=gljOprObj.getComboData(data.distTypeTree);
+                    gljOprObj.distTypeTree = gljOprObj.getComboData(data.distTypeTree);
                     gljOprObj.stdGLJ = data.stdGLJ;
                     gljOprObj.complementaryGLJs = data.complementaryGLJs;
                     gljOprObj.AllRecode = [...gljOprObj.stdGLJ, ...gljOprObj.complementaryGLJs];
@@ -517,16 +518,20 @@ let ration_glj = {
                     gljOprObj[gljType].splice(condition.index, 0, ...data[gljType]);
                     gljOprObj.AllRecode.splice(condition.index, 0, ...data[gljType]);
                 }
-                if(data.priceProperties && data.priceProperties.length > 0){
-                    let tem = _.find(data.priceProperties,{region:property.region,taxModel:parseInt(property.taxType)});
-                    if(tem){
-                        let dataCode = tem.price.dataCode;
-                        for(let glj of data.stdGLJ){
-                            if(glj.priceProperty && gljUtil.isDef(glj.priceProperty[dataCode])) glj.basePrice = glj.priceProperty[dataCode];
+                // 设置人材机类型名称
+                gljOprObj.setTypeName(gljOprObj.distTypeTree.comboDatas, data[gljType]);
+                if (data.priceProperties && data.priceProperties.length > 0) {
+                    let tmp = _.find(data.priceProperties, {region: property.region, taxModel: parseInt(property.taxType)});
+                    if (tmp) {
+                        let dataCode = tmp.price.dataCode;
+                        for (let glj of data.stdGLJ) {
+                            if (glj.priceProperty && gljUtil.isDef(glj.priceProperty[dataCode])) {
+                                glj.basePrice = glj.priceProperty[dataCode];
+                            }
                         }
                     }
-                };
-                cb(data);
+                }
+                cb(data[gljType]);
             }, function () {
                 if ($.bootstrapLoading.isLoading()) {
                     $.bootstrapLoading.end();

+ 38 - 8
web/building_saas/main/js/views/glj_view.js

@@ -64,7 +64,6 @@ var gljOprObj = {
         },
         callback: {
             onClick: function (event, treeId, treeNode) {
-                debugger;
                 if (treeId == 'gljTree') {
                     let me = gljOprObj, gljTypeId = treeNode.ID;
                     if (treeNode.ID) {
@@ -95,8 +94,8 @@ var gljOprObj = {
             {headerName: "规格型号", headerWidth: 160, dataCode: "specs", dataType: "String", hAlign: "left", vAlign: "center"},
             {headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName: "单价", headerWidth: 55, dataCode: "basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
-            {headerName: "类型", headerWidth: 60, dataCode: "gljType", dataType: "String", hAlign: "center", vAlign: "center"},
-            {headerName: "新增", headerWidth: 40, dataCode: "isComplementary", dataType: "String", hAlign: "center", vAlign: "center", cellType: "checkBox"}
+            {headerName: "类型", headerWidth: 60, dataCode: "typeName", dataType: "String", hAlign: "center", vAlign: "center"},
+            {headerName: "新增", headerWidth: 40, dataCode: "isComplementary", dataType: "String", hAlign: "center", vAlign: "center", cellType: "checkBox", readOnly: true}
         ],
         view: {
             lockColumns: [0, 1, 2, 3, 4, 5, 6]
@@ -107,6 +106,9 @@ var gljOprObj = {
         stdGLJ: 1,
         complementaryGLJs: 2
     },
+    loadingPagination: false,
+    // 当前筛选数据下总数据数
+    curPageTotal: 0,
     scopeSetting:{},
     scopeSpread:null,
     scopeSheet:null,
@@ -316,8 +318,24 @@ var gljOprObj = {
         me.initSelection(args.newSelections.length > 0 ? {row: args.newSelections[0].row} : {row: 0});
     },
     onTopRowChanged: function (sender, args) {
+        const me = gljOprObj;
         const topRow = args.newTopRow;
         const bottomRow = args.sheet.getViewportBottomRow(1);
+        const radioType = $("input[name='glj']:checked").val();
+        const curRecord = radioType === 'stdGLJ' ? me.stdGLJ : me.complementaryGLJs;
+        // 当前表显示数据数大于等于当前筛选情况下最大数据数,不获取下一分页
+        if (curRecord.length >= me.curPageTotal && me.loadingPagination) {
+            return;
+        }
+        if (curRecord.length -1 === bottomRow) {
+            me.loadingPagination = true;
+            let condition = me.getPagingCondition(false, curRecord.length);
+            projectObj.project.ration_glj.getGLJDataPaging(condition, function (data) {
+                sheetCommonObj.appendData(args.sheet, condition.index, 0, me.gljLibSheetSetting, data);
+                me.loadingPagination = false;
+            });
+        }
+
     },
     getSelStyle: function (selected,settingStyle) {
         let style = new GC.Spread.Sheets.Style();
@@ -987,6 +1005,15 @@ var gljOprObj = {
         sheetCommonObj.showData(this.gljLibSheet, this.gljLibSheetSetting, this.gljLibSheetData, gljOprObj.distTypeTree);
         this.gljLibSheet.setRowCount(this.gljLibSheetData.length);
     },
+    // 根据人材机类型,设置人材机类型显示名称
+    setTypeName: function (distTypeData, data) {
+        data.forEach(item => {
+            let typeData = distTypeData.find(typeItem => typeItem.value === item.gljType);
+            if (typeData) {
+                item.typeName = typeData.text;
+            }
+        });
+    },
     // 获取分页查询所需要的条件数据
     // @param {Boolean}init 是否是初始化
     getPagingCondition: function (init, index) {
@@ -997,7 +1024,7 @@ var gljOprObj = {
             // 限制条数
             limit: 50,
             // 初始化
-            init: true,
+            init: init,
             // 所在部分(标准、补充)
             type: this.pagingType.stdGLJ,
             // 替换数据,替换操作下有数据:编码、名称、规格、单位、类型
@@ -1020,7 +1047,7 @@ var gljOprObj = {
         if (this.treeObj) {
             let selNode = this.treeObj.getNodeByParam('ID', this.gljCurTypeId);
             // 不为最顶层节点时,才赋值给withinClass
-            if (!selNode || selNode.ParentID !== -1) {
+            if (selNode && selNode.ParentID !== -1) {
                 condition.classList = this.parentNodeIds['_pNodeId_' + this.gljCurTypeId];
             }
         }
@@ -1446,7 +1473,7 @@ var gljOprObj = {
         zTree.selectNode(node);
         gljOprObj.gljCurTypeId = ID;
         //--gljOprObj.filterLibGLJSheetData();
-        gljOprObj.showLibGLJSheetData();
+        //--gljOprObj.showLibGLJSheetData();
     },
     isExtraType:function (type) {
         return _.includes(gljUtil.extraType,type)
@@ -1553,11 +1580,13 @@ $(function () {
             gljOprObj.gljLibSpresd.bind(GC.Spread.Sheets.Events.ButtonClicked, gljOprObj.onButtonClick);
             gljOprObj.gljLibSheet = gljOprObj.gljLibSpresd.getSheet(0);
             gljOprObj.gljLibSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, gljOprObj.onSelectionChanged);
-            gljOprObj.gljLibSheet.bind(GC.Spread.Sheets.Events.TopRowChanged, gljOprObj.onTopRowChanged);
+            gljOprObj.gljLibSheet.bind(GC.Spread.Sheets.Events.TopRowChanged, _.debounce(gljOprObj.onTopRowChanged, 100));
             gljOprObj.gljLibSheet.setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
             gljOprObj.gljLibSheet.options.isProtected = true;
             gljOprObj.gljLibSheet.name('glj_lib');
+            sheetCommonObj.setSheetBySetting(gljOprObj.gljLibSheet, gljOprObj.gljLibSheetSetting);
         }
+        gljOprObj.gljLibSheet.setRowCount(0);
         gljOprObj.gljLibSheetData = gljOprObj.AllRecode;
         let gljClass = 0, selectMap = {};
         if ($('#actionType').val() == 'add' || $('#actionType').val() == 'insert') {//插入,添加
@@ -1600,11 +1629,12 @@ $(function () {
             gljOprObj.gljLibSpresd.focus(true);
         } else if ($('#actionType').val() === 'add') {
             gljOprObj.locateZTree(null);
+            sheetCommonObj.appendData(gljOprObj.gljLibSheet, 0, 0, gljOprObj.gljLibSheetSetting, gljOprObj.AllRecode);
             gljOprObj.gljLibSheet.showRow(0, GC.Spread.Sheets.VerticalPosition.top);
             gljOprObj.gljLibSheet.setActiveCell(0, 0);
             gljOprObj.initSelection({row: 0});
         } else gljOprObj.showLibGLJSheetData();
-        console.timeEnd('getGLJDataPaging');
+        console.timeEnd('getGLJData');
     });
 
     $('#mreplace_next_div').on('shown.bs.modal', function (e) {

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

@@ -377,7 +377,7 @@ function getGLJData(actionType) {
     $('#actionType').val(actionType);
     $.bootstrapLoading.start();
     let condition = gljOprObj.getPagingCondition(true, 0);
-    console.time('getGLJDataPaging');
+    console.time('getGLJData');
     projectObj.project.ration_glj.getGLJDataPaging(condition, function (result) {
         gljOprObj.initClassTree('std', gljOprObj.treeData.std);
         $('#modalCon').width($(window).width()*0.5);