Explorar o código

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

MaiXinRong %!s(int64=7) %!d(string=hai) anos
pai
achega
ce71ac6e3f

+ 6 - 4
web/building_saas/complementary_glj_lib/js/components.js

@@ -17,7 +17,7 @@ let componentOprObj = {
             {headerName:"编码",headerWidth:80,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
             {headerName:"名称",headerWidth:120,dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center"},
             {headerName:"规格型号",headerWidth:80,dataCode:"specs", dataType: "String", hAlign: "center", vAlign: "center"},
-            {headerName:"计量单位",headerWidth:80,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
+            {headerName:"单位",headerWidth:80,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"单价",headerWidth:80,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
             {headerName:"类型",headerWidth:80,dataCode:"gljType", dataType: "String",  hAlign: "center", vAlign: "center"}
         ]
@@ -27,11 +27,15 @@ let componentOprObj = {
         me.workBook = sheetOpr.buildSheet(container, me.setting, 30);
         me.workBook.getSheet(0).setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
         me.workBook.getSheet(0).setFormatter(-1, 1, "@", GC.Spread.Sheets.SheetArea.viewport);
-        me.workBook.getSheet(0).options.isProtected = true;
+       // me.workBook.getSheet(0).options.isProtected = true;
+        me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
         me.workBook.bind(GC.Spread.Sheets.Events.ButtonClicked, me.onButtonClicked);//复选框点击事件
         me.componentsBtnOpr($('#componentsConf'));
         me.radiosChange();
     },
+    onCellEditStart: function (sender, args) {
+        args.cancel = true;
+    },
     onButtonClicked: function (sender, args) {
         let me = componentOprObj, re = repositoryGljObj;
         let val = args.sheet.getValue(args.row, args.col);
@@ -209,9 +213,7 @@ let componentOprObj = {
             }
             sheetOpr.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
             sheetOpr.showData(me.workBook.getSheet(0), me.setting, cacheSection, re.distTypeTree);
-            me.workBook.getSheet(0).options.isProtected = true;
             me.workBook.getSheet(0).setRowCount(cacheSection.length);
-            sheetOpr.setLockCols(me.workBook.getSheet(0), [4], true);
             cacheSection = null;
         }
     },

+ 49 - 45
web/building_saas/complementary_glj_lib/js/glj.js

@@ -21,7 +21,6 @@ let pageOprObj = {
             repositoryGljObj.getGljTree(stdGljLibId, function () {
                 repositoryGljObj.getGljItems(me.stdGljLibId, me.userId, me.compilationId);
             });
-            sheetOpr.shieldAllCells(repositoryGljObj.workBook.getSheet(0), repositoryGljObj.setting);
         });
     }
 };
@@ -101,9 +100,6 @@ let repositoryGljObj = {
                 if(!result.error && callback){
                     me.distTypeTree = me.getComboData(result.data);
                     console.log(me.distTypeTree);
-                   /* let combo = new GC.Spread.Sheets.CellTypes.ComboBox();
-                    combo.items(me.distTypeTree.comboDatas).editorValueType(GC.Spread.Sheets.CellTypes.EditorValueType.text);
-                    me.workBook.getSheet(0).getCell(-1, 5, GC.Spread.Sheets.SheetArea.viewport).cellType(combo).value(me.distTypeTree.comboDatas[0].text);*/
                     callback();
                 }
             }
@@ -195,6 +191,7 @@ let repositoryGljObj = {
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onEnterCell);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.SelectionChanged, me.onSelectionChanged);
+        me.workBook.bind(GC.Spread.Sheets.Events.ButtonClicked, me.onButtonClicked);//复选框点击事件
     },
     getCurrentComponent: function (gljComponent) {
         let me = repositoryGljObj, rst = [];
@@ -285,11 +282,7 @@ let repositoryGljObj = {
         //混凝土202、砂浆203、配合比204、机械3
         if(typeof info.oldSelections || info.oldSelections.length === 0 && info.newSelections.length > 0 || info.oldSelections[0].row !== info.newSelections[0].row){
             let row = info.newSelections[0].row;
-            sheetOpr.lockCells(that.workBook.getSheet(0), that.setting);
-            that.workBook.getSheet(0).getRange(-1, 0 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
-            that.workBook.getSheet(0).getRange(-1, 4 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
             that.isLocked = true;
-            //that.workBook.getSheet(0).options.isProtected = true;
             sheetOpr.cleanSheet(that.workBook.getSheet(0), that.setting, -1);
             me.workBook.focus(true);
             me.currentComponent = [];
@@ -298,8 +291,6 @@ let repositoryGljObj = {
                 //标记当前工料机
                 me.currentGlj = me.currentCache[row];
                 if(me.allowComponent.indexOf(me.currentCache[row].gljType) !== -1){
-                    //that.workBook.getSheet(0).getRange(-1, 0 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(false);
-                    that.workBook.getSheet(0).getRange(-1, 4 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(false);
                     that.isLocked = false;
                     //展示数据
                     if(me.currentGlj.component.length > 0){
@@ -359,24 +350,13 @@ let repositoryGljObj = {
                 }
                 else {
                     $('#gljAlertBtn').click();
-                    //me.workBook.getSheet(0).options.isProtected = true;
-                    sheetOpr.lockAllCells(args.sheet);
                     $('#aleConfBtn').click(function () {
-                        // me.workBook.getSheet(0).options.isProtected = false;
-                        sheetOpr.unLockAllCells(args.sheet);
-                        sheetOpr.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                         me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
                     });
                     $('#gljAleClose').click(function () {
-                        // me.workBook.getSheet(0).options.isProtected = false;
-                        sheetOpr.unLockAllCells(args.sheet);
-                        sheetOpr.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                         me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
                     });
                     $('#aleCanceBtn').click(function () {
-                        // me.workBook.getSheet(0).options.isProtected = false;
-                        sheetOpr.unLockAllCells(args.sheet);
-                        sheetOpr.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                         me.addGljObj = null;
                         me.workBook.getSheet(0).suspendPaint();
                         me.workBook.getSheet(0).suspendEvent();
@@ -394,21 +374,31 @@ let repositoryGljObj = {
             }
         }
     },
+    onButtonClicked: function (sender, args) {
+        let me = repositoryGljObj;
+        if(args.col === 6 && args.row < me.currentCache.length){
+            args.sheet.setValue(args.row, args.col, true);
+        }
+    },
     onCellEditStart: function(sender, args) {
         let me = repositoryGljObj;
         let rObj = sheetOpr.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
         me.currentEditingGlj = rObj;
         me.orgCode = me.workBook.getSheet(0).getValue(args.row, 0);
-        let cacheSection = me.complementaryGljList;
-        if (cacheSection) {
-            for (let j = 0; j < cacheSection.length; j++) {
-                if (cacheSection[j][me.setting.header[0].dataCode] && cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
-                    rObj["ID"] = cacheSection[j]["ID"];
-                    rObj.gljClass = cacheSection[j].gljClass;
-                    break;
-                }
+        if(args.row < me.currentCache.length){
+            me.currentGlj = me.currentCache[args.row];
+            if(args.col === 0 || (args.col === 4 && me.allowComponent.indexOf(me.currentGlj.gljType) !== -1)
+                || args.col === 6){
+                args.cancel = true;
+            }
+            else {
+                rObj.ID = me.currentGlj.ID;
+                rObj.gljClass = me.currentGlj.gljClass;
             }
         }
+        else {
+            me.currentGlj = null;
+        }
     },
     onCellEditEnd: function(sender, args) {
         let me = repositoryGljObj, that = gljComponentOprObj,
@@ -531,7 +521,6 @@ let repositoryGljObj = {
         }
         if(updateArr.length >0 || addArr.length >0){
             me.currentEditingGlj = null;
-            //me.workBook.getSheet(0).setValue(11, 5, "人工");
             me.mixUpdateRequest(updateArr, addArr, []);
         }
     },
@@ -605,12 +594,9 @@ let repositoryGljObj = {
                                 }
                                 $('#alertText').text(text + "不可为空!");
                                 $('#codeAlertBtn').click();
-                                sheet.options.isProtected = true;
                                 $('#codAleConfBtn').click(function () {
-                                    sheetOpr.lockSomeCodes(sheet, 0, cacheSection.length);
                                 });
                                 $('#codAleClose').click(function () {
-                                    sheetOpr.lockSomeCodes(sheet, 0, cacheSection.length);
                                 });
                             }
                         }
@@ -780,11 +766,39 @@ let repositoryGljObj = {
         pasteObj.gljClass = me.gljCurTypeId;
         return true;
     },
+    canPasted: function (info) {
+        let rst = true;
+        let me = repositoryGljObj;
+        if(me.gljCurTypeId < 0){
+            return false;
+        }
+        if(info.cellRange.col + info.cellRange.colCount - 1 > me.setting.header.length - 2){
+            return false;
+        }
+        if(info.cellRange.row < me.currentCache.length){
+            if(info.cellRange.col === 0){
+                return false;
+            }
+            else if(info.cellRange.col <= 4 && info.cellRange.col + info.cellRange.colCount - 1 >= 4){
+                for(let i = 0, len = info.cellRange.rowCount; i < len; i++){
+                    let row = i + info.cellRange.row;
+                    if(row < me.currentCache.length){
+                        if(me.allowComponent.indexOf(me.currentCache[row].gljType) !== -1){
+                            rst = false;
+                        }
+                    }
+                    else {
+                        break;
+                    }
+                }
+            }
+        }
+        return rst;
+    },
     onClipboardPasting: function(sender, args) {
         let me = repositoryGljObj;
         let maxCol = args.cellRange.col + args.cellRange.colCount - 1;
-        //复制的列数超过正确的列数,不可复制
-        if (me.gljCurTypeId < 0 || maxCol >= me.setting.header.length -1) {
+        if (!me.canPasted(args)) {
             args.cancel = true;
         }
     },
@@ -955,9 +969,6 @@ let repositoryGljObj = {
                     }
                     else{
                         me.currentCache = me.getCache();
-                        //sheetOpr.unLockAllCells(me.workBook.getSheet(0));
-                        sheetOpr.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
-                        //sheetOpr.lockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
                     }
                     me.showGljItems(me.complementaryGljList, me.gljCurTypeId);
                 }
@@ -1050,20 +1061,13 @@ let gljTypeTreeOprObj = {
         me.addGljObj = null;
         //me.currentCache = me.getCache();
         sheetOpr.cleanData(that.workBook.getSheet(0), that.setting, 5);
-        that.workBook.getSheet(0).getRange(-1, 0 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
-        that.workBook.getSheet(0).getRange(-1, 4 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
-        me.workBook.getSheet(0).getRange(-1, 6 , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
-        //that.workBook.getSheet(0).options.isProtected = true;
         if (me.parentNodeIds["_pNodeId_" + treeNode.ID]) {
             me.currentOprParent = 1;
             me.currentCache = me.getParentCache(me.parentNodeIds["_pNodeId_" + treeNode.ID]);
-            sheetOpr.lockCodeCells(me.workBook.getSheet(0), me.currentCache.length);
             me.workBook.getSheet(0).setRowCount(me.currentCache.length);
         } else {
             me.currentOprParent = 0;
             me.currentCache = me.getCache();
-            sheetOpr.unLockAllCells(me.workBook.getSheet(0));
-            sheetOpr.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
         }
         me.showGljItems(me.complementaryGljList, gljTypeId);
     }

+ 17 - 9
web/building_saas/complementary_glj_lib/js/gljComponent.js

@@ -9,12 +9,12 @@ let gljComponentOprObj = {
         header:[
             {headerName:"编码",headerWidth:80,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
             {headerName:"名称",headerWidth:110,dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center"},
-            {headerName:"计量单位",headerWidth:80,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
+            {headerName:"单位",headerWidth:80,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"单价",headerWidth:80,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
             {headerName:"消耗量",headerWidth:80,dataCode:"consumeAmt", dataType: "Number", formatter: "0.000", hAlign: "right", vAlign: "center"}
         ],
         view: {
-            lockedCells:[0, 1, 2, 3]
+            lockedCols:[0, 1, 2, 3]
         }
     },
     buildSheet: function(container) {
@@ -22,7 +22,6 @@ let gljComponentOprObj = {
         me.workBook = sheetOpr.buildSheet(container, me.setting, 30);
         me.workBook.getSheet(0).setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
         me.workBook.getSheet(0).setFormatter(-1, 0, "@", GC.Spread.Sheets.SheetArea.viewport);
-        me.workBook.getSheet(0).options.isProtected = true;
         sheetOpr.cleanData(me.workBook.getSheet(0), me.setting, -1);
 
         me.onContextmenuOpr();//右键菜单
@@ -31,11 +30,6 @@ let gljComponentOprObj = {
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
         me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
         me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
-        /*me.gljComponentDelOpr();
-        me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
-        me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
-        me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
-        me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);*/
 
     },
     getRowData: function (sheet, row, setting) {
@@ -82,6 +76,9 @@ let gljComponentOprObj = {
                         callback: function(){},
                         items: {
                             "insert": {name: "插入", disabled: insertDis, icon: "fa-sign-in", callback: function (key, opt) {
+                                //getCurrentGlj
+                                let thatRow = that.workBook.getSheet(0).getSelections()[0].row;
+                                that.currentGlj = thatRow < that.currentCache.length ? that.currentCache[thatRow] : null;
                                 //默认radio所有工料机
                                 co.initRadio();
                                 co.gljCurTypeId = null;
@@ -209,6 +206,17 @@ let gljComponentOprObj = {
         let me = gljComponentOprObj, that = repositoryGljObj;
         let rObj = me.getRowData(args.sheet, args.row, me.setting);
         me.currentEditingComponent = rObj;
+        let thatRow = that.workBook.getSheet(0).getSelections()[0].row;
+        if(thatRow < that.currentCache.length){
+            that.currentGlj = that.currentCache[thatRow];
+            if(me.setting.view.lockedCols.indexOf(args.col) !== -1 || that.allowComponent.indexOf(that.currentGlj.gljType) === -1 ||
+                (args.col === 4 && (!that.currentComponent|| args.row >= that.currentComponent.length))){
+                args.cancel = true;
+            }
+        }
+        else {
+            args.cancel = true;
+        }
     },
     onCellEditEnd: function (sender, args) {
         let me = gljComponentOprObj, that = repositoryGljObj, updateBasePrc = [];
@@ -340,7 +348,7 @@ let gljComponentOprObj = {
         let me = gljComponentOprObj;
         let maxCol = info.cellRange.col + info.cellRange.colCount - 1;
         //复制的列数超过正确的列数,不可复制
-        if(maxCol >= me.setting.header.length){
+        if(info.cellRange.col !== 4 || info.cellRange.colCount > 1){
             args.cancel = true;
         }
     },

+ 0 - 37
web/building_saas/complementary_glj_lib/js/sheetOpr.js

@@ -119,11 +119,6 @@ let sheetOpr = {
         else{
             sheet.setRowCount(typeof repositoryGljObj !== 'undefined' && repositoryGljObj.currentOprParent === 1 ? data.length : data.length + 10);
         }
-        if(data.length === 0){
-            for(let i = 0; i < sheet.getRowCount(); i++){
-                sheet.getCell(i, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false);
-            }
-        }
         for (var col = 0; col < setting.header.length; col++) {
             var hAlign = "left", vAlign = "center";
             if (setting.header[col].hAlign) {
@@ -137,23 +132,13 @@ let sheetOpr = {
                 sheet.setFormatter(-1, col, setting.header[col].formatter, GC.Spread.Sheets.SheetArea.viewport);
             }
             for (var row = 0; row < data.length; row++) {
-                //var cell = sheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport);
                 if(setting.header[col].dataCode === 'gljType' && data[row].gljType){
-                    if(typeof repositoryGljObj !== 'undefined' && typeof repositoryGljObj.allowComponent !== 'undefined' && repositoryGljObj.allowComponent.indexOf(data[row].gljType) !== -1){
-                        sheet.getCell(row, 4, GC.Spread.Sheets.SheetArea.viewport).locked(true);
-                    }
-                    else if(typeof repositoryGljObj !== 'undefined' && typeof repositoryGljObj.allowComponent !== 'undefined' && repositoryGljObj.allowComponent.indexOf(data[row].gljType) === -1){
-                        sheet.getCell(row, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false);
-                    }
                     let distTypeVal =  distTypeTree.distTypes[distTypeTree.prefix + data[row].gljType].data.fullName;
                     sheet.setValue(row, col, distTypeVal, ch);
                 }
                 else {
                     sheet.setValue(row, col, data[row][setting.header[col].dataCode], ch);
                     sheet.setTag(row, 0, data[row].ID, ch);
-                    if(typeof setting.owner === 'undefined'){
-                        sheet.getCell(row, 0, GC.Spread.Sheets.SheetArea.viewport).locked(true);
-                    }
                 }
                 //复选框
                 if(setting.header[col].dataCode === 'isComplementary'){
@@ -163,7 +148,6 @@ let sheetOpr = {
                 //新增组成物表,选择复选框
                 if(setting.header[col].dataCode === 'select'){
                     sheet.setCellType(row, col, checkBoxType)
-                    sheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport).locked(false);
                     if(data[row].isChecked === true){
                         sheet.getCell(row, col).value(1);
                     }
@@ -171,7 +155,6 @@ let sheetOpr = {
             }
             for(let i = data.length; i < sheet.getRowCount(); i++){
                 sheet.setCellType(i, 6, null);
-                sheet.getCell(i, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false);
             }
         }
         sheet.resumeEvent();
@@ -228,28 +211,18 @@ let sheetOpr = {
                         isExist = false;
                     for(let i=0; i< stdGljList.length; i++){
                         if(stdGljList[i].code == sheet.getValue(row, col) && sheet.getValue(row, col)!== orgCode){
-                            me.lockAllCells(sheet);
                             $('#alertText').text("输入的编号已存在,请重新输入!");
                             $('#codeAlertBtn').click();
                             $('#codAleConfBtn').click(function () {
-                                // me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                me.unLockAllCells(sheet);
-                                me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                //sheet.setText(row, 0, '');
                                 sheet.getCell(row, 0).formatter("@");
                                 sheet.getCell(row, 0).text("");
                                 sheet.setActiveCell(row, 0);
                             });
                             $('#codAleClose').click(function () {
-                                //me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                me.unLockAllCells(sheet);
-                                me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                //sheet.setText(row, 0, '');
                                 sheet.getCell(row, 0).formatter("@");
                                 sheet.getCell(row, 0).text("");
                                 sheet.setActiveCell(row, 0);
                             });
-                            // sheet.setValue(row, col, orgCode);
                             isExist = true
                             break;
                         }
@@ -257,28 +230,18 @@ let sheetOpr = {
                     if(!isExist){
                         for(let i=0; i< complementaryGljList.length; i++){
                             if(complementaryGljList[i].code == sheet.getValue(row, col) && sheet.getValue(row, col)!== orgCode){
-                                me.lockAllCells(sheet);
                                 $('#alertText').text("输入的编号已存在,请重新输入!");
                                 $('#codeAlertBtn').click();
                                 $('#codAleConfBtn').click(function () {
-                                    // me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                    me.unLockAllCells(sheet);
-                                    me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                    //sheet.setText(row, 0, '');
                                     sheet.getCell(row, 0).formatter("@");
                                     sheet.getCell(row, 0).text("");
                                     sheet.setActiveCell(row, 0);
                                 });
                                 $('#codAleClose').click(function () {
-                                    //me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                    me.unLockAllCells(sheet);
-                                    me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
-                                    //sheet.setText(row, 0, '');
                                     sheet.getCell(row, 0).formatter("@");
                                     sheet.getCell(row, 0).text("");
                                     sheet.setActiveCell(row, 0);
                                 });
-                                // sheet.setValue(row, col, orgCode);
                                 isExist = true
                                 break;
                             }