zhongzewei 7 years ago
parent
commit
9cfd09da85

+ 3 - 1
modules/ration_repository/models/schemas.js

@@ -56,7 +56,8 @@ let rationChapterTreeSchema = new Schema({
     name: String,
     explanation: String,//说明
     ruleText: String,//计算规则
-    jobContentSituation: String,//工作内容适用情况,ALL适用本项全部定额,PARTIAL适用本项部分定额
+    jobContentSituation: String,//工作内容适用情况,ALL适用本项全部定额,PARTIAL适用本项部分定额,NONE无
+    annotationSituation: String,//附注的适用情况,ALL适用本项全部定额,PARTIAL适用本项部分定额,NONE无
     isDeleted: Boolean
 });
 
@@ -95,6 +96,7 @@ var rationItemSchema = new Schema({
     caption: String,
     feeType: Number,
     jobContent: String,
+    annotation: String,
     rationGljList: [rationGljItemSchema],
     rationCoeList: Array,
     rationAssList: [rationAssItemSchema],

+ 22 - 142
public/web/sheet/sheet_common.js

@@ -111,21 +111,13 @@ var sheetCommonObj = {
             area.vAlign(GC.Spread.Sheets.VerticalAlign.center);
         }
     },
-    showData: function(sheet, setting, data, distTypeTree) {
+    showData: function(sheet, setting, data) {
         var me = this, ch = GC.Spread.Sheets.SheetArea.viewport;
         sheet.suspendPaint();
         sheet.suspendEvent();
-        if(typeof setting.owner !== 'undefined' && setting.owner === 'gljComponent'){
-            sheet.setRowCount(data.length + 5);
-        }
-        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);
-            }
-        }
+        //sheet.addRows(row, 1);
+
+        sheet.clear(0, 0, sheet.getRowCount(), sheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
         for (var col = 0; col < setting.header.length; col++) {
             var hAlign = "left", vAlign = "center";
             if (setting.header[col].hAlign) {
@@ -141,30 +133,30 @@ var sheetCommonObj = {
                 //sheet.setStyle(row,col,style,GC.Spread.Sheets.SheetArea.viewport);
                 sheet.setFormatter(-1, col, setting.header[col].formatter, GC.Spread.Sheets.SheetArea.viewport);
             }
+            if(setting.header[col].cellType === "checkBox"||setting.header[col].cellType === "button"){//clear and reset
+                var me = this, header = GC.Spread.Sheets.SheetArea.colHeader;
+                sheet.deleteColumns(col,1);
+                sheet.addColumns(col, 1);
+                sheet.setValue(0, col, setting.header[col].headerName, header);
+                sheet.setColumnWidth(col, setting.header[col].headerWidth?setting.header[col].headerWidth:100);
+            }
             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);
+                var val = data[row][setting.header[col].dataCode];
+                if(val&&setting.header[col].dataType === "Number"){
+                    if(setting.header[col].hasOwnProperty('tofix')){
+                        val =parseFloat(val).toFixed(setting.header[col].tofix);
+                    }else {
+                        val =parseFloat(val).toFixed(2);
                     }
-                    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' && setting.owner !== 'gljComponent'){
-                        sheet.getCell(row, 0, GC.Spread.Sheets.SheetArea.viewport).locked(true);
-                    }
+                if(val!=null&&setting.header[col].cellType === "checkBox"){
+                    this.setCheckBoxCell(row,col,sheet,val)
                 }
-            }
-            for(let i = data.length; i < sheet.getRowCount(); i++){
-                sheet.getCell(i, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false);
+                sheet.setValue(row, col, val, ch);
             }
         }
+        this.lockCells(sheet,setting);
         sheet.resumeEvent();
         sheet.resumePaint();
         //me.shieldAllCells(sheet);
@@ -195,67 +187,7 @@ var sheetCommonObj = {
         }
         return rst;
     },
-    combineRowData: function(sheet, setting, row, repositoryGljObj) {
-        let me = this;
-        var rst = {};
-        let comboBoxCellType = sheet.getCellType(row, 5);
-        let items = comboBoxCellType.items();
-        for (var col = 0; col < setting.header.length; col++) {
-            if(setting.header[col].dataCode === 'gljType'){
-                items.forEach(function(item){
-                    if(sheet.getValue(row, col) === item.text){
-                        rst[setting.header[col].dataCode] = item.value;
-                        if(repositoryGljObj){
-                            rst.shortName = repositoryGljObj.distTypeTree.distTypes[repositoryGljObj.distTypeTree.prefix + item.value].data.shortName;
-                        }
-                    }
-                });
-            }
-           else if (setting.header[col].dataCode === 'code'){
-                if(repositoryGljObj){
-                    let gljList = repositoryGljObj.gljList,
-                        orgCode = repositoryGljObj.orgCode,
-                        isExist = false;
-                        for(let i=0; i< gljList.length; i++){
-                            if(gljList[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.setValue(row, 0, orgCode);
-                                    sheet.getCell(row, 0).formatter("@");
-                                    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.setValue(row, 0, orgCode);
-                                    sheet.getCell(row, 0).formatter("@");
-                                    sheet.setActiveCell(row, 0);
-                                });
-                                // sheet.setValue(row, col, orgCode);
-                                isExist = true
-                            }
-                        }
-                    if(!isExist){
-                        rst[setting.header[col].dataCode] = sheet.getValue(row, col);
-                    }
-                }
-                else{
-                    rst[setting.header[col].dataCode] = sheet.getValue(row, col);
-                }
-            }
-            else{
-                rst[setting.header[col].dataCode] = sheet.getValue(row, col);
-            }
-        }
-        return rst;
-    },
-    combineRationRowData: function(sheet, setting, row) {
+    combineRowData: function(sheet, setting, row) {
         var rst = {};
         for (var col = 0; col < setting.header.length; col++) {
             rst[setting.header[col].dataCode] = sheet.getValue(row, col);
@@ -268,26 +200,6 @@ var sheetCommonObj = {
     unShieldAllCells: function(sheet) {
         sheet.options.isProtected = false;
     },
-    reLockSomeCodes: function (sheet, beginRow, endRow) {
-        sheet.suspendPaint();
-        sheet.suspendEvent();
-        let defaultStyle = new GC.Spread.Sheets.Style();
-        defaultStyle.locked = false;
-        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
-        let unLockStyle = new GC.Spread.Sheets.Style();
-        unLockStyle.locked = false;
-        let lockStyle = new GC.Spread.Sheets.Style();
-        lockStyle.locked = true;
-        for(let row = beginRow; row < endRow; row++){
-            sheet.setStyle(row, 0, lockStyle);
-        }
-        for(let row = endRow; row < sheet.getRowCount(); row++){
-            sheet.setStyle(row, 0, unLockStyle);
-        }
-        sheet.options.isProtected = true;
-        sheet.resumePaint();
-        sheet.resumeEvent();
-    },
     unLockAllCells: function (sheet) {
         sheet.suspendPaint();
         sheet.suspendEvent();
@@ -312,38 +224,6 @@ var sheetCommonObj = {
         sheet.resumePaint();
         sheet.resumeEvent();
     },
-    lockSomeCodes: function (sheet, beginRow, endRow) {
-        let defaultStyle = new GC.Spread.Sheets.Style();
-        defaultStyle.locked = false;
-        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
-        let style = new  GC.Spread.Sheets.Style();
-        style.locked = true;
-        sheet.suspendPaint();
-        sheet.suspendEvent();
-        for(let i = beginRow; i < endRow; i++){
-            sheet.setStyle(i, 0, style);
-        }
-        sheet.options.isProtected = true;
-        sheet.resumePaint();
-        sheet.resumeEvent();
-    },
-    lockCodeCells: function (sheet, rowCount) {
-        sheet.suspendPaint();
-        sheet.suspendEvent();
-        let sheetRowCount = sheet.getRowCount();
-        let defaultStyle = new GC.Spread.Sheets.Style();
-        defaultStyle.locked = false;
-        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
-        let style = new GC.Spread.Sheets.Style();
-        style.locked = true;
-        sheet.setStyle(-1, 0, style);
-        for(let i =rowCount; i<sheetRowCount; i++){
-            sheet.setStyle(i, -1, style);
-        }
-        sheet.options.isProtected = true;
-        sheet.resumePaint();
-        sheet.resumeEvent();
-    },
     lockCells: function(sheet, setting){
         sheet.suspendPaint();
         sheet.suspendEvent();

+ 20 - 2
web/maintain/ration_repository/dinge.html

@@ -69,6 +69,9 @@
                           <li class="nav-item">
                               <a class="nav-link" data-toggle="tab" href="#tgz" role="tab">工作内容</a>
                           </li>
+                         <!-- <li class="nav-item">
+                              <a class="nav-link" data-toggle="tab" href="#tfz" role="tab">附注</a>
+                          </li>-->
                       </ul>
                       <div class="tab-content">
                           <!--定额-->
@@ -132,9 +135,23 @@
                                       </tr>
                                   </table>
                                   <table class="table table-sm table-bordered m-0" id="tablePartial">
-                              </table>
+                                  </table>
+                              </div>
+                          </div>
+                          <!--附注-->
+                          <div class="tab-pane" id="tfz" role="tabpanel">
+                              <div class="main-data">
+                                  <div class="form-check m-2"><label class="form-check-label"><input type="radio" class="form-check-input" name="fzRadios" value="ALL" disabled=""> 适合本项所有定额</label>&nbsp;&nbsp;<label class="form-check-label"><input type="radio" class="form-check-input" name="fzRadios" value="PARTIAL" disabled> 适合本项部分定额</label></div>
+                                  <!-- <p class="m-2">适合本项所有定额</p> -->
+                                  <table class="table table-sm table-bordered m-0" id="fzTableAll">
+                                      <tr>
+                                          <td><textarea class="form-control" rows="30" id="fzTxtareaAll"></textarea></td>
+                                      </tr>
+                                  </table>
+                                  <table class="table table-sm table-bordered m-0" id="fzTablePartial">
+                                  </table>
+                              </div>
                           </div>
-                      </div>
                   </div>
                 </div>
             </div>
@@ -372,6 +389,7 @@
         <script type="text/javascript" src="/web/maintain/ration_repository/js/section_tree.js"></script>
         <script type="text/javascript" src="/public/web/ztree_common.js"></script>
         <script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
+        <script type="text/javascript" src="/web/maintain/ration_repository/js/sheetsOpr.js"></script>
         <script type="text/javascript" src="/web/maintain/ration_repository/js/rationUnits.js"></script>
         <script type="text/javascript" src="/web/maintain/ration_repository/js/ration.js"></script>
         <script type="text/javascript" src="/web/maintain/ration_repository/js/ration_glj.js"></script>

+ 1 - 0
web/maintain/ration_repository/fuzhu.html

@@ -89,6 +89,7 @@
     <script src="/public/common_util.js"></script>
     <script src="/public/debug.js"></script>
     <script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
+    <script type="text/javascript" src="/web/maintain/ration_repository/js/sheetsOpr.js"></script>
     <script type="text/javascript" src="/public/web/storageUtil.js"></script>
     <script type="text/javascript" src="/web/maintain/ration_repository/js/coe.js"></script>
     <script type="text/javascript">

+ 1 - 0
web/maintain/ration_repository/gongliao.html

@@ -227,6 +227,7 @@
     <script type="text/javascript" src="/web/maintain/ration_repository/js/repository_glj.js"></script>
     <script type="text/javascript" src="/public/web/ztree_common.js"></script>
     <script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
+    <script type="text/javascript" src="/web/maintain/ration_repository/js/sheetsOpr.js"></script>
     <script type="text/javascript" src="/public/web/storageUtil.js"></script>
     <script type="text/javascript">
         let userAccount = '<%=userAccount %>';

+ 40 - 88
web/maintain/ration_repository/js/ration.js

@@ -10,7 +10,7 @@ $("#fuzhu").click(function(){
     $(this).attr('href', "/rationRepository/coeList" + "?repository=" + getQueryString("repository"))
 });
 
-var rationOprObj = {
+let rationOprObj = {
     workBook: null,
     currentRations: {},
     currentEditingRation: null,
@@ -21,7 +21,7 @@ var rationOprObj = {
         header:[
             {headerName:"编码",headerWidth:120,dataCode:"code", dataType: "String", formatter: "@"},
             {headerName:"名称",headerWidth:280,dataCode:"name", dataType: "String"},
-            {headerName:"单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center"},
+            {headerName:"计量单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center"},
             {headerName:"人工费",headerWidth:120,dataCode:"labourPrice", dataType: "Number", formatter: "0.00", hAlign: "right"},
             {headerName:"材料费",headerWidth:120,dataCode:"materialPrice", dataType: "Number", formatter: "0.00",  hAlign: "right"},
             {headerName:"机械费",headerWidth:120,dataCode:"machinePrice", dataType: "Number", formatter: "0.00", hAlign: "right"},
@@ -43,7 +43,7 @@ var rationOprObj = {
     },
     buildSheet: function(container) {
         let rationRepId = getQueryString("repository");
-        var me = rationOprObj;
+        let me = rationOprObj;
         let gljLibID = storageUtil.getSessionCache("gljLib", "repositoryID_" + rationRepId);
         if(!gljLibID || typeof gljLibID === 'undefined' || gljLibID == -1){
             alert("没有引用工料机库!");
@@ -57,12 +57,11 @@ var rationOprObj = {
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onEnterCell);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
-        //me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.CellClick, me.onCellClick);
     },
 
     onCellClick: function(sender, args) {
-        var me = rationOprObj,
+        let me = rationOprObj,
             sheetGLJ = rationGLJOprObj.sheet, settingGLJ = rationGLJOprObj.setting,
             sheetCoe = rationCoeOprObj.sheet, settingCoe = rationCoeOprObj.setting,
             sheetAss = rationAssistOprObj.sheet, settingAss = rationAssistOprObj.setting;
@@ -74,7 +73,7 @@ var rationOprObj = {
         sheetCommonObj.cleanSheet(sheetAss, settingAss, -1);
         sheetCommonObj.shieldAllCells(sheetAss);
         if(!(args.sheetArea === GC.Spread.Sheets.SheetArea.colHeader || args.sheetArea === GC.Spread.Sheets.SheetArea.corner)){
-            var cacheSection = me.getCache();
+            let cacheSection = me.getCache();
             if (cacheSection && args.row < cacheSection.length) {
                 rationGLJOprObj.getGljItems(cacheSection[args.row], function () {
                     me.workBook.focus(true);
@@ -92,7 +91,7 @@ var rationOprObj = {
     },
 
     getCache: function() {
-        var me = this, rst = me.currentRations["_SEC_ID_" + me.currentSectionId];
+        let me = this, rst = me.currentRations["_SEC_ID_" + me.currentSectionId];
         if (!(rst)) {
             me.currentRations["_SEC_ID_" + me.currentSectionId] = [];
             rst = me.currentRations["_SEC_ID_" + me.currentSectionId];
@@ -100,21 +99,21 @@ var rationOprObj = {
         return rst;
     },
     updateCache: function(addArr, updateArr, removeIds, result) {
-        var me = this, cacheSection = me.getCache();
+        let me = this, cacheSection = me.getCache();
         if (addArr.length > 0) {
             me.currentRations["_SEC_ID_" + me.currentSectionId] = cacheSection.concat(addArr);
             cacheSection = me.currentRations["_SEC_ID_" + me.currentSectionId];
         }
-        for (var i = removeIds.length - 1; i >= 0; i--) {
-            for (var j = cacheSection.length - 1; j >= 0 ; j--) {
+        for (let i = removeIds.length - 1; i >= 0; i--) {
+            for (let j = cacheSection.length - 1; j >= 0 ; j--) {
                 if (cacheSection[j]["ID"] == removeIds[i]) {
                     cacheSection.splice(j,1);
                 }
             }
         }
         if (result && result.data.ops && result.data.ops.length > 0) {
-            for (var i = 0; i < result.data.ops.length; i++) {
-                for (var j = 0; j < cacheSection.length; j++) {
+            for (let i = 0; i < result.data.ops.length; i++) {
+                for (let j = 0; j < cacheSection.length; j++) {
                     if (cacheSection[j][me.setting.header[0].dataCode] == result.data.ops[i][me.setting.header[0].dataCode]) {
                         cacheSection[j]["ID"] = result.data.ops[i]["ID"];
                         cacheSection[j]["rationGljList"] = result.data.ops[i]["rationGljList"];
@@ -122,8 +121,8 @@ var rationOprObj = {
                 }
             }
         }
-        for (var i = 0; i < updateArr.length; i++) {
-            for (var j = 0; j < cacheSection.length; j++) {
+        for (let i = 0; i < updateArr.length; i++) {
+            for (let j = 0; j < cacheSection.length; j++) {
                 if (updateArr[i]["ID"] && cacheSection[j]["ID"]) {
                     if (cacheSection[j]["ID"] == updateArr[i]["ID"]) {
                         cacheSection[j] = updateArr[i];
@@ -195,48 +194,6 @@ var rationOprObj = {
         me.workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
         me.workBook.commandManager().setShortcutKey('rationDelete', GC.Spread.Commands.Key.del, false, false, false, false);
     },
-    onRangeChanged: function(sender, args) {
-        if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
-            var me = rationOprObj, updateArr = [], removeArr = [];
-            var cacheSection = me.getCache();
-            if (cacheSection) {
-                for (var i = 0; i < args.rowCount; i++) {
-                    //var hasUpdate = false, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row + i),
-                    var hasUpdate = false, rObj = sheetCommonObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row + i),
-                        isEmpty = sheetCommonObj.chkIfEmpty(rObj, me.setting);
-                    for (var j = 0; j < cacheSection.length; j++) {
-                        if (cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
-                            rObj["ID"] = cacheSection[j]["ID"];
-                            hasUpdate = true;
-                            break;
-                        }
-                    }
-                    if(isEmpty){
-                        if(args.row + i < cacheSection.length){
-                            rObj.ID = cacheSection[args.row + i].ID;
-                            removeArr.push(rObj.ID);
-                        }
-                    }
-                    else{
-
-                    }
-
-                    if (hasUpdate) {
-                        if (isEmpty) {
-                            removeArr.push(rObj);
-                        } else updateArr.push(rObj);
-                    } else if (isEmpty) {
-                        if (args.row + i < cacheSection.length) {
-                            rObj["ID"] = cacheSection[args.row + i]["ID"];
-                            removeArr.push(rObj["ID"]);
-                        }
-                    }
-                }
-              //  me.mixUpdateRequest(updateArr, [], removeArr);
-                //removeRationItems
-            }
-        }
-    },
     onEnterCell: function (sender, args) {
         let me = rationOprObj;
         me.cellRowIdx = args.row;
@@ -252,17 +209,14 @@ var rationOprObj = {
         if(isHasData){
             if(me.editingRowIdx !== me.cellRowIdx) {
                 let focusToCol = !me.addRationItem.code ? 0 : -1;
-             //   else {
                 if(focusToCol !== -1){
                     $('#rationAlertBtn').click();
                     me.workBook.getSheet(0).options.isProtected = true;
                     $('#rationAlertCac').click(function () {
                         me.workBook.getSheet(0).options.isProtected = false;
-                        //me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
                     });
                     $('#rationAlertCls').click(function () {
                         me.workBook.getSheet(0).options.isProtected = false;
-                       // me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
                     });
                     $('#rationAlertCof').click(function () {
                         me.workBook.getSheet(0).options.isProtected = false;
@@ -270,21 +224,18 @@ var rationOprObj = {
                         for(let col=0; col<me.setting.header.length; col++){
                             me.workBook.getSheet(0).getCell(me.editingRowIdx, col).value(me.currentEditingRation[me.setting.header[col].dataCode]);
                         }
-                        //me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, 0);
                     });
                 }
-               // }
             }
         }
     },
     onCellEditStart: function(sender, args) {
-        var me = rationOprObj;
-        //var rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
-        var rObj = sheetCommonObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row);
+        let me = rationOprObj;
+        let rObj = sheetsOprObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row);
         me.currentEditingRation = rObj;
-        var cacheSection = me.getCache();
+        let cacheSection = me.getCache();
         if (cacheSection) {
-            for (var j = 0; j < cacheSection.length; j++) {
+            for (let j = 0; j < cacheSection.length; j++) {
                 if (cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
                     rObj["ID"] = cacheSection[j]["ID"];
                     break;
@@ -293,8 +244,7 @@ var rationOprObj = {
         }
     },
     onCellEditEnd: function(sender, args) {
-        //var me = rationOprObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row),
-        var me = rationOprObj, rObj = sheetCommonObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row),
+        let me = rationOprObj, rObj = sheetsOprObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row),
             updateArr = [], addArr = [];
         let dataCode = me.setting.header[args.col].dataCode;
         me.editingRowIdx = args.row;
@@ -367,23 +317,19 @@ var rationOprObj = {
         }
     },
     onClipboardPasting: function(sender, args) {
-        var me = rationOprObj;
-      /*  if (args.cellRange.colCount != me.setting.header.length) {
-            args.cancel = true;
-        }*/
+        let me = rationOprObj;
     },
     onClipboardPasted: function(e, info) {
-        var me = rationOprObj;
-        var cacheSection = me.getCache();
-        var updateArr = [], addArr = [];
-        var items = sheetCommonObj.analyzePasteData(me.setting, info);
+        let me = rationOprObj;
+        let cacheSection = me.getCache();
+        let updateArr = [], addArr = [];
+        let items = sheetCommonObj.analyzePasteData(me.setting, info);
         let failPasteArr = [];
-        for (var i = 0, rowIdx =info.cellRange.row; i < items.length; i++, rowIdx++) {
+        for (let i = 0, rowIdx =info.cellRange.row; i < items.length; i++, rowIdx++) {
             if (cacheSection) {
                 if(!me.isValidUnit(items[i], rationUnits)){//无效单位
                     items[i].unit = typeof cacheSection[rowIdx].unit !== 'undefined' && !cacheSection[rowIdx] ? cacheSection[rowIdx].unit : '';
                 }
-                //var hasCacheItem = false;
                 if(!cacheSection[rowIdx] && info.cellRange.col === 0 ){
                     if(me.rationsCodes.indexOf(items[i].code) === -1){
                         //jobConten
@@ -477,7 +423,7 @@ var rationOprObj = {
         })
     },
     mixUpdateRequest: function(updateArr, addArr, removeIds) {
-        var me = rationOprObj;
+        let me = rationOprObj;
         sheetCommonObj.setLockCol(me.workBook.getSheet(0), 0, true);
         $.ajax({
             type:"POST",
@@ -491,21 +437,27 @@ var rationOprObj = {
                     alert(`error`);
                     me.getRationItems(me.currentSectionId);
                 } else {
-                    var cacheSection = me.updateCache(addArr, updateArr, removeIds, result);
+                    let cacheSection = me.updateCache(addArr, updateArr, removeIds, result);
                     cacheSection.sort(function(a, b){
-                        var rst = 0;
+                        let rst = 0;
                         if (a.code > b.code) rst = 1
                         else if (a.code < b.code) rst = -1;
                         return rst;
                     });
                     //jobContent
-                    if(jobContentOprObj && jobContentOprObj.currentSituation === jobContentOprObj.situations.PARTIAL){
+                    if(jobContentOprObj ){
                         jobContentOprObj.currentRationItems = cacheSection;
-                        jobContentOprObj.buildTablePartial(jobContentOprObj.tablePartial, jobContentOprObj.getGroup(cacheSection));
+                        jobContentOprObj.setRadiosDisabled(cacheSection.length > 0 ? false : true, jobContentOprObj.radios);
+                        if(cacheSection.length === 0){
+                            jobContentOprObj.updateSituation(pageOprObj.rationLibId, me.currentSectionId, 'NONE');
+                        }
+                        jobContentOprObj.setRadiosChecked(jobContentOprObj.currentSituation, jobContentOprObj.radios);
+                        if(jobContentOprObj.currentSituation === jobContentOprObj.situations.PARTIAL){
+                            jobContentOprObj.buildTablePartial(jobContentOprObj.tablePartial, jobContentOprObj.getGroup(cacheSection));
+                        }
                     }
                     me.showRationItems(me.currentSectionId);
                     me.mixUpdate = 0;
-                   // me.workBook.getSheet(0).setActiveCell(me.activeCell.row, me.activeCell.col);
                 }
                 sheetCommonObj.setLockCol(me.workBook.getSheet(0), 0, false);
             },
@@ -515,7 +467,7 @@ var rationOprObj = {
     },
     getRationItems: function(sectionID){
         if (sectionID != -1) {
-            var me = rationOprObj;
+            let me = rationOprObj;
             me.mixUpdate = 0;
             me.currentSectionId = sectionID;
             if (me.currentRations["_SEC_ID_" + sectionID]) {
@@ -576,13 +528,13 @@ var rationOprObj = {
         sheet.resumePaint();
     },
     showRationItems: function(sectionID){
-        var me = rationOprObj;
+        let me = rationOprObj;
         if (me.workBook) {
             if (me.currentRations && me.currentRations["_SEC_ID_" + sectionID] && me.currentRations["_SEC_ID_" + sectionID].length > 0) {
-                var cacheSection = me.currentRations["_SEC_ID_" + sectionID];
+                let cacheSection = me.currentRations["_SEC_ID_" + sectionID];
                 //sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
                 sheetCommonObj.cleanData(me.workBook.getSheet(0), me.setting, -1);
-                sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection);
+                sheetsOprObj.showData(me.workBook.getSheet(0), me.setting, cacheSection);
                 sheetCommonObj.setLockCol(me.workBook.getSheet(0), 4, true);
                 //combo
                 me.setCombo(me.workBook.getActiveSheet(), rationUnits);

+ 1 - 1
web/maintain/ration_repository/js/ration_assist.js

@@ -66,7 +66,7 @@ var rationAssistOprObj = {
         if (!me.ration) {return;};
         var assList = me.ration.rationAssList;
         //var assObj = sheetCommonObj.combineRowData(me.sheet, me.setting, args.row);
-        var assObj = sheetCommonObj.combineRationRowData(me.sheet, me.setting, args.row);
+        var assObj = sheetsOprObj.combineRationRowData(me.sheet, me.setting, args.row);
         // 新增
         if ((assList == undefined) || (assList && args.row >= assList.length)) {
             if (assObj.decimal == undefined || assObj.decimal == null){assObj.decimal = '0';};

+ 1 - 1
web/maintain/ration_repository/js/ration_coe.js

@@ -279,7 +279,7 @@ var rationCoeOprObj = {
                 else if (a.ID < b.ID) rst = -1;
                 return rst;
             });
-            sheetCommonObj.showData(me.sheet, me.setting, curCache);
+            sheetsOprObj.showData(me.sheet, me.setting, curCache);
         }
     },
 

+ 33 - 13
web/maintain/ration_repository/js/ration_glj.js

@@ -12,7 +12,7 @@ var rationGLJOprObj = {
         header:[
             {headerName:"编码",headerWidth:120,dataCode:"code", dataType: "String", formatter: "@"},
             {headerName:"名称",headerWidth:400,dataCode:"name", dataType: "String"},
-            {headerName:"规格",headerWidth:120,dataCode:"specs", dataType: "String"},
+            {headerName:"规格型号",headerWidth:120,dataCode:"specs", dataType: "String"},
             {headerName:"单位",headerWidth:160,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"基价单价",headerWidth:160, dataCode:"basePrice", dataType: "Number", formatter:"0.00",  precision: 2},
             {headerName:"定额消耗",headerWidth:160, dataCode:"consumeAmt", dataType: "Number", formatter: "0.000", precision: 3},
@@ -97,16 +97,13 @@ var rationGLJOprObj = {
         spreadBook.commandManager().register('rationGljDelete', function () {
             let sels = me.sheet.getSelections(), updateArr = [], removeArr = [], lockCols = me.setting.view.lockColumns;
             let cacheSection = me.cache["_GLJ_" + me.currentRationItem.ID], isUpdate = false;
+            console.log(cacheSection);
             if(sels.length > 0){
                 for(let sel = 0; sel < sels.length; sel++){
                     if(sels[sel].colCount === me.setting.header.length){
-                        if(cacheSection){
-                            for(let i = 0; i < sels[sel].rowCount; i++){
-                                if(sels[sel].row + i < cacheSection.length){
-                                    isUpdate = true;
-                                    cacheSection.splice(sels[sel].row + i, 1);
-                                }
-                            }
+                        if(cacheSection && sels[sel].row < cacheSection.length){
+                            isUpdate = true;
+                            cacheSection.splice(sels[sel].row, sels[sel].rowCount);
                         }
                     }
                     else{
@@ -179,7 +176,7 @@ var rationGLJOprObj = {
                     for (var i = 0; i < tmpCodes.length; i++) {
                         let rowIdx = info.cellRange.row + i;
                         if(rowIdx < cacheArr.length){//更新
-                            me.tempCacheArr.push(cacheArr[rowIdx]);
+                            me.tempCacheArr.push({org: cacheArr[rowIdx], newCode: tmpCodes[i].code});
                             cacheArr.splice(rowIdx--, 1);
                         }
                         codes.push(tmpCodes[i].code);
@@ -261,7 +258,7 @@ var rationGLJOprObj = {
                     }
                     else {
                         if (args.row < cacheArr.length && args.editingText !== cacheArr[args.row].code) {//更新
-                            me.tempCacheArr.push(cacheArr[args.row]);
+                            me.tempCacheArr.push({org: cacheArr[args.row], newCode: args.editingText.toString().trim()});
                             cacheArr.splice(args.row, 1);
                             let rationRepId = storageUtil.getSessionCache("RationGrp", "repositoryID");
                             let gljLibID = storageUtil.getSessionCache("gljLib", "repositoryID_" + rationRepId);
@@ -327,7 +324,22 @@ var rationGLJOprObj = {
             }
         });
     },
-
+    getRecoveryArr: function (tempDelArr, newArr) {//获得更新的code不存在,恢复删除的被更新数据
+        let rst = [];
+        for(let i = 0, len = tempDelArr.length; i < len; i++){
+            let isExist = false;
+            for(let j = 0, jLen = newArr.length; j < jLen; j++){
+                if(tempDelArr[i].newCode == newArr[j].code){
+                    isExist = true;
+                    break;
+                }
+            }
+            if(!isExist){
+                rst.push(tempDelArr[i].org);
+            }
+        }
+        return rst;
+    },
     addGljItems: function(codes, repId, args) {
         var me = this;
         sheetCommonObj.setLockCol(me.sheet, 0, true);
@@ -364,6 +376,10 @@ var rationGLJOprObj = {
                                 }
                             }
                             me.cache["_GLJ_" + me.currentRationItem.ID] = cacheArr.concat(newAddArr);
+                            let recoveryArr = me.getRecoveryArr(me.tempCacheArr, result.data);
+                            if(recoveryArr.length > 0){
+                                me.cache["_GLJ_" + me.currentRationItem.ID] = me.cache["_GLJ_" + me.currentRationItem.ID].concat(recoveryArr);
+                            }
                             me.cache["_GLJ_" + me.currentRationItem.ID].sort(function(a, b) {
                                 var rst = 0;
                                 if (a.code > b.code) rst = 1
@@ -378,7 +394,11 @@ var rationGLJOprObj = {
                     }
                     else{
                         let cacheArr = me.cache["_GLJ_" + me.currentRationItem.ID]?  me.cache["_GLJ_" + me.currentRationItem.ID] : [];
-                        me.cache["_GLJ_" + me.currentRationItem.ID] = cacheArr.concat(me.tempCacheArr);
+                        let recoveryArr = me.getRecoveryArr(me.tempCacheArr, []);
+                        if(recoveryArr.length > 0){
+                            me.cache["_GLJ_" + me.currentRationItem.ID] = cacheArr.concat(recoveryArr);
+                        }
+                        //me.cache["_GLJ_" + me.currentRationItem.ID] = cacheArr.concat(me.tempCacheArr);
                         //更新的工料机不存在
                         me.cache["_GLJ_" + me.currentRationItem.ID].sort(function(a, b) {
                             var rst = 0;
@@ -557,7 +577,7 @@ var rationGLJOprObj = {
         var me = this;
         if (me.cache["_GLJ_" + rationID]) {
             sheetCommonObj.cleanData(me.sheet, me.setting, -1);
-            sheetCommonObj.showData(me.sheet, me.setting, me.cache["_GLJ_" + rationID], me.distTypeTree);
+            sheetsOprObj.showData(me.sheet, me.setting, me.cache["_GLJ_" + rationID], me.distTypeTree);
             //lock
             me.sheet.suspendPaint();
             me.sheet.suspendEvent();

+ 15 - 140
web/maintain/ration_repository/js/repository_glj.js

@@ -51,7 +51,7 @@ repositoryGljObj = {
         header:[
             {headerName:"编码",headerWidth:120,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
             {headerName:"名称",headerWidth:260,dataCode:"name", dataType: "String", hAlign: "left", vAlign: "center"},
-            {headerName:"规格",headerWidth:260,dataCode:"specs", dataType: "String", hAlign: "left", vAlign: "center"},
+            {headerName:"规格型号",headerWidth:260,dataCode:"specs", dataType: "String", hAlign: "left", vAlign: "center"},
             {headerName:"单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"基价单价",headerWidth:120,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
             {headerName:"类型",headerWidth:120,dataCode:"gljType", dataType: "String", hAlign: "center", vAlign: "center"}
@@ -91,17 +91,11 @@ repositoryGljObj = {
             }
         });
         distTypeTree.distTypesArr.forEach(function (distTypeObj) {
-            /*if(distTypeObj.children.length === 0 && distTypeObj.data.fullName !== '普通机械' &&distTypeObj.data.fullName !== '机械组成物'
-             && distTypeObj.data.fullName !== '机上人工'){
-             distTypeTree.comboDatas.push({text: distTypeObj.data.fullName, value: distTypeObj.data.ID});
-             }*/
             if(distTypeObj.data.fullName !== '材料'){
                 distTypeTree.comboDatas.push({text: distTypeObj.data.fullName, value: distTypeObj.data.ID});
             }
         });
-        //me.distTypeTree = distTypeTree;
         return distTypeTree;
-        //return distTypeTree.comboDatas;
     },
     getGljDistType: function (callback) {
         let me = this;
@@ -112,9 +106,9 @@ repositoryGljObj = {
             success: function (result) {
                 if(!result.error && callback){
                     me.distTypeTree = me.getComboData(result.data);
-                    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);
+                    /*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).value(me.distTypeTree.comboDatas[0].text);
                     callback();
                 }
             }
@@ -186,7 +180,7 @@ repositoryGljObj = {
                 }
             }
             sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
-            sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection, me.distTypeTree);
+            sheetsOprObj.showData(me.workBook.getSheet(0), me.setting, cacheSection, me.distTypeTree);
 
             cacheSection = null;
         }
@@ -247,19 +241,19 @@ repositoryGljObj = {
                     $('#aleCanceBtn').click(function () {
                         // me.workBook.getSheet(0).options.isProtected = false;
                         sheetCommonObj.unLockAllCells(args.sheet);
-                        sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
+                        sheetsOprObj.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;
                         sheetCommonObj.unLockAllCells(args.sheet);
-                        sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
+                        sheetsOprObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                         me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
                     });
                     $('#aleConfBtn').click(function () {
                         // me.workBook.getSheet(0).options.isProtected = false;
                         sheetCommonObj.unLockAllCells(args.sheet);
-                        sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
+                        sheetsOprObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                         me.addGljObj = null;
                         for(let col=0; col<me.setting.header.length; col++){
                             let field = me.setting.header[col].dataCode;
@@ -279,7 +273,7 @@ repositoryGljObj = {
     },
     onCellEditStart: function(sender, args) {
         var me = repositoryGljObj;
-        var rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
+        var rObj = sheetsOprObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
         me.currentEditingGlj = rObj;
         me.orgCode = me.workBook.getSheet(0).getValue(args.row, 0);
         var cacheSection = me.gljList;
@@ -294,7 +288,7 @@ repositoryGljObj = {
         }
     },
     onCellEditEnd: function(sender, args) {
-        var me = repositoryGljObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
+        var me = repositoryGljObj, rObj = sheetsOprObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
             updateArr = [], addArr = [], updateBasePrcArr = [];
         me.editingRowIdx = args.row;
         rObj.basePrice = rObj.basePrice ? rObj.basePrice : 0;
@@ -404,10 +398,10 @@ repositoryGljObj = {
                                 $('#codeAlertBtn').click();
                                 sheet.options.isProtected = true;
                                 $('#codAleConfBtn').click(function () {
-                                    sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                                    sheetsOprObj.lockSomeCodes(sheet, 0, cacheSection.length);
                                 });
                                 $('#codAleClose').click(function () {
-                                    sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                                    sheetsOprObj.lockSomeCodes(sheet, 0, cacheSection.length);
                                 });
                             }
                         }
@@ -442,13 +436,13 @@ repositoryGljObj = {
                     $('#codeAlertBtn').click();
                     sheet.options.isProtected = true;
                     $('#codAleConfBtn').click(function () {
-                        sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                        sheetsOprObj.lockSomeCodes(sheet, 0, cacheSection.length);
                         if(removeArr.length > 0){
                             me.mixUpdateRequest(updateArr, [], removeArr);
                         }
                     });
                     $('#codAleClose').click(function () {
-                        sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                        sheetsOprObj.lockSomeCodes(sheet, 0, cacheSection.length);
                         me.mixUpdateRequest(updateArr, [], removeArr);
                     });
                 }
@@ -465,125 +459,6 @@ repositoryGljObj = {
         me.workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
         me.workBook.commandManager().setShortcutKey('repositoryGljDel', GC.Spread.Commands.Key.del, false, false, false, false);
     },
-    onRangeChanged: function(sender, args) {
-        if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
-            var me = repositoryGljObj, updateArr = [], removeArr = [], cancelArr = [], isMisCode = true;
-            var cacheSection = me.currentCache;
-            if (cacheSection) {
-                for (var i = 0; i < args.rowCount; i++) {
-                    let rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row + i),
-                        isEmpty = sheetCommonObj.chkIfEmpty(rObj, me.setting);
-                    if(isEmpty){
-                        if(args.row + i < cacheSection.length){
-                            rObj.ID = cacheSection[args.row + i].ID
-                            removeArr.push(rObj.ID);
-                        }
-                    }
-                    else {
-                        if(!rObj.code){
-                            cancelArr.push(args.row + i);
-                        }
-                        else if(!rObj.gljType){
-                            isMisCode = false;
-                            cancelArr.push(args.row + i);
-                        }
-                        else{
-                            rObj.gljClass = me.gljCurTypeId;
-                            updateArr.push(rObj);
-                        }
-                    }
-                }
-                //reshow datas
-                function resetDatas(args, repositoryGljObj, cancelArr){
-                    args.sheet.options.isProtected = false;
-                    args.sheet.suspendPaint();
-                    for(let i =0; i <cancelArr.length; i++){
-                        for(let col =args.col; col< repositoryGljObj.setting.header.length; col++){
-                            let value = repositoryGljObj.setting.header[col].dataCode === 'gljType' ?
-                                repositoryGljObj.distTypeTree.distTypes[repositoryGljObj.distTypeTree.prefix + cacheSection[cancelArr[i]].gljType].data.fullName :
-                                cacheSection[cancelArr[i]][repositoryGljObj.setting.header[col].dataCode];
-                            args.sheet.setValue(args.row + i, col, value);
-                        }
-                    }
-                    args.sheet.resumePaint();
-                    args.sheet.setActiveCell(args.row, 0);
-                }
-                if(cancelArr.length > 0){
-                    let text = isMisCode === true ? "编号不可为空,编辑失败!": "类型不可为空,编辑失败!"
-                    $('#alertText').text(text);
-                    $('#codeAlertBtn').click();
-                    args.sheet.options.isProtected = true;
-                    $('#codAleConfBtn').click(function () {
-                        resetDatas(args, me, cancelArr);
-                    });
-                    $('#codAleClose').click(function () {
-                        resetDatas(args, me, cancelArr);
-                    });
-                }
-                let refGljIds = [], refGljCodes = [], alertText;
-                if(removeArr.length > 0){
-                    for(let i =0; i <removeArr.length; i++){
-                        if(me.rationGljIds.indexOf(removeArr[i]) !== -1){
-                            refGljIds.push(removeArr[i]);
-                            removeArr.splice(i--, 1);
-                        }
-                    }
-                    for(let i =0; i< me.currentCache.length; i++){
-                        for(let j=0; j< refGljIds.length; j++){
-                            if(me.currentCache[i].ID === refGljIds[j]){
-                                refGljCodes.push(me.currentCache[i].code);
-                            }
-                        }
-                    }
-                }
-                if(refGljIds.length > 0){
-                    if(refGljCodes.length > 3){
-                        alertText = "编号:" + refGljCodes[0]+" " + refGljCodes[1] + " " + refGljCodes[2] + "...等工料机已有定额引用,删除失败!";
-                    }
-                    else {
-                        let alertCode = " ";
-                        for(let i=0; i< refGljCodes.length; i++){
-                            alertCode += refGljCodes[i] + " ";
-                        }
-                        alertText = "编号:" + alertCode + "工料机已有定额引用,删除失败!"
-                    }
-                    $('#alertText').text(alertText);
-                    $('#codeAlertBtn').click();
-                    args.sheet.options.isProtected = true;
-                    $('#codAleConfBtn').click(function () {
-                        if(removeArr.length > 0){
-                            me.mixUpdateRequest(updateArr, [], removeArr);
-                        }
-                        else{
-                            let resetArr = [];
-                            for(let i=0; i<args.rowCount; i++){
-                                resetArr.push(args.row + i);
-                            }
-                            resetDatas(args, me, resetArr);
-                        }
-                    });
-                    $('#codAleClose').click(function () {
-                        if(removeArr.length > 0){
-                            me.mixUpdateRequest(updateArr, [], removeArr);
-                        }
-                        else{
-                            let resetArr = [];
-                            for(let i=0; i<args.rowCount; i++){
-                                resetArr.push(args.row + i);
-                            }
-                            resetDatas(args, me, resetArr);
-                        }
-                    });
-                }
-                else if(refGljIds.length === 0 && removeArr.length > 0){
-                    me.mixUpdateRequest(updateArr, [], removeArr);
-                }
-                if(updateArr.length > 0){
-                    me.mixUpdateRequest(updateArr, [], removeArr);
-                }
-            }
-        }
-    },
     validUpdateObj: function (pasteObj, rowIdx) {
         let rst = {}, backUpObj = {},
             me = repositoryGljObj,
@@ -842,7 +717,7 @@ repositoryGljObj = {
                     else{
                         me.currentCache = me.getCache();
                         //sheetCommonObj.unLockAllCells(me.workBook.getSheet(0));
-                        sheetCommonObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
+                        sheetsOprObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
                         //sheetCommonObj.lockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
                     }
                     me.showGljItems(me.gljList, me.gljCurTypeId);

+ 49 - 60
web/maintain/ration_repository/js/section_tree.js

@@ -19,19 +19,7 @@ var pageOprObj = {
             jobContentOprObj.radiosChange(jobContentOprObj.radios, jobContentOprObj.tableAll, jobContentOprObj.tablePartial);
             $('#addConBtn').click(jobContentOprObj.bindAddConBtn());
             $('#updateConBtn').click(jobContentOprObj.bindUpdateConBtn());
-            $('#txtareaAll').bind('change', function () {
-                let met = this;
-                let jobContent = $(met).val();
-                $(met).attr('disabled', true);
-                let updateCodes = [];
-                for(let i = 0, len = jobContentOprObj.currentRationItems.length; i < len; i++){
-                    updateCodes.push(jobContentOprObj.currentRationItems[i].code);
-                }
-                jobContentOprObj.updateJobContent(me.rationLibId, jobContentOprObj.getUpdateArr(updateCodes, jobContent), function () {
-                    $(met).attr('disabled', false);
-                    jobContentOprObj.currentJobContent = jobContent;
-                })
-            });
+            jobContentOprObj.bindAllEvents($('#txtareaAll'));
         }
     }
 }
@@ -348,9 +336,10 @@ var zTreeOprObj = {
         explanatoryOprObj.clickUpdate($('#explanationShow'), $('#ruleTextShow'));
         explanatoryOprObj.showText($('#explanationShow'), $('#ruleTextShow'), treeNode.explanation, treeNode.ruleText);
         jobContentOprObj.currentSituation = typeof treeNode.jobContentSituation !== 'undefined'? treeNode.jobContentSituation : jobContentOprObj.situations.NONE;
+        jobContentOprObj.setAttribute(jobContentOprObj.currentTreeNode ? jobContentOprObj.currentTreeNode : treeNode, treeNode);
+        jobContentOprObj.clickUpdate($('#txtareaAll'));
         var sectionID = treeNode.ID;
         if (!(treeNode.items) || treeNode.items.length == 0) {
-            jobContentOprObj.setRadiosDisabled(false, jobContentOprObj.radios);
             rationOprObj.workBook.getSheet(0).clearSelection();
             rationOprObj.getRationItems(sectionID);
         } else {
@@ -459,8 +448,10 @@ let explanatoryOprObj = {
 
 //工作内容
 let jobContentOprObj = {
-    situations: {ALL: 'ALL', PARTIAL: 'PARTIAL', NONE: 'NONE'},//所有ALL(包括未定义本项工作内容)、部分PARTIA,不可用NONE(非章节树最底层节点时)
+    situations: {ALL: 'ALL', PARTIAL: 'PARTIAL', NONE: 'NONE'},//所有ALL(包括未定义本项工作内容)、部分PARTIA,不可用NONE(无定额时)
     currentSituation: null,//本项适用情况
+    currentTreeNode: null,
+    preTreeNode: null,
     radios: $("input[name = 'optionsRadios']"),
     tableAll: $('#tableAll'),
     tablePartial: $('#tablePartial'),
@@ -469,21 +460,29 @@ let jobContentOprObj = {
     currentRationItems: null,
     addCon: $('#addCon'),//勾选编码模态框
     updateCon: $('#updateCon'),//编辑编码模态框
-    //获取本项适用情况
-    getSituation: function (rationItems) {
-        let me = this;
-        let rst = me.situations.ALL;
-        if(rationItems.length > 1){
-            for(let i = 0, len = rationItems.length; i < len; i++){
-                for(let j = i + 1, len = rationItems.length; j < len; j++){
-                    if(typeof rationItems[i].jobContent !== 'undefined' && rationItems[i].jobContent !== rationItems[j].jobContent){
-                        rst = me.situations.PARTIAL;
-                        break;
-                    }
+    setAttribute: function (preNode, currentNode) {
+        let me = jobContentOprObj;
+        me.preTreeNode = preNode;
+        me.currentTreeNode = currentNode;
+    },
+    clickUpdate: function (txtarea) {//解决编辑完后在未失去焦点的时候直接定额章节树
+        let me = jobContentOprObj;
+        if(txtarea.is(':focus')){
+            let jobContent = txtarea.val();
+            if(jobContent !== me.jobContent){
+                me.preTreeNode.jobContent = jobContent;
+                me.unbindEvents(txtarea);
+                txtarea.blur();
+                let updateCodes = [];
+                for(let i = 0, len = me.currentRationItems.length; i < len; i++){
+                    updateCodes.push(me.currentRationItems[i].code);
+                    me.currentRationItems[i].jobContent = jobContent;
                 }
+                me.updateJobContent(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, jobContent), function () {
+                    me.bindAllEvents(txtarea);
+                })
             }
         }
-        return rst;
     },
     getGroup: function (rationItems) {
         let rst = [];//rst = [{jobContent: String, items: Array}]
@@ -584,21 +583,6 @@ let jobContentOprObj = {
         let me = jobContentOprObj;
         me.buildEditableCodesCon(me.currentRationItems, me.updateCon, me.getUpdateCodes(obj));
     },
-    //更新显示的编码table
-    updateCodesTable: function (table, codes) {
-        let me = jobContentOprObj;
-        table.empty();
-        table.append("<a href data-toggle='modal' data-target='#editBianmaQ' class='m-0'>编辑编码</a>");
-        table.children().bind('click', function (){
-            me.currentOprTr = table.parent();
-            me.currentJobContent = $(me.currentOprTr.children()[2]).children().val();
-            me.onclickFuncEdit($(this));
-        });
-        for(let i = 0, len = codes.length; i < len; i++){
-            let $p = $("<p class='m-0'>" + codes[i] + "</p>");
-            table.append($p[0]);
-        }
-    },
     //获取编码td中的编码
     getUpdateCodes: function (jq) {
         let rst = [];
@@ -691,7 +675,7 @@ let jobContentOprObj = {
             radios[0].checked = true;
             radios[1].checked = false;
             $('#txtareaAll').val(me.currentRationItems.length > 0 ? me.currentRationItems[0].jobContent : '');
-            me.currentJobContent = me.currentRationItems[0].jobContent;
+            me.currentJobContent = me.currentRationItems.length > 0 ? me.currentRationItems[0].jobContent : '';
             me.tableAll.show();
             me.tablePartial.hide();
         }
@@ -746,21 +730,6 @@ let jobContentOprObj = {
             });
         });
     },
-    sortRationItems: function (rationItems, field) {
-        rationItems.sort(function (a, b) {
-            let rst = 0;
-            if(a[field] > b[field]){
-                rst = 1;
-            }
-            else if (a[field] < b[field]){
-                rst = -1;
-            }
-            return rst;
-        });
-    },
-    addCodeNode: function (container, codeNode) {
-        container.append(codeNode);
-    },
     setTextareaHeight: function (textarea, nodesCount) {
         const perHeight = 21.6;
         textarea.height(nodesCount * 21.6);
@@ -777,12 +746,30 @@ let jobContentOprObj = {
             });
         });
     },
-    unbindEvetns: function (txtarea) {
+    bindAllEvents: function (txtarea) {
+        let me = jobContentOprObj;
+        txtarea.bind('change', function () {
+            let met = this;
+            let jobContent = $(met).val();
+            $(met).attr('disabled', true);
+            let updateCodes = [];
+            for(let i = 0, len = me.currentRationItems.length; i < len; i++){
+                updateCodes.push(me.currentRationItems[i].code);
+                me.currentRationItems[i].jobContent = jobContent;
+            }
+            me.currentJobContent = jobContent;
+            me.updateJobContent(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, jobContent), function () {
+                $(met).attr('disabled', false);
+            });
+        });
+    },
+    unbindEvents: function (txtarea) {
         txtarea.unbind();
     },
     //定额工作内容相关操作
     rationJobContentOpr: function (rationItems) {
         let me = jobContentOprObj;
+        me.setRadiosDisabled(me.currentRationItems.length > 0 ? false : true, me.radios);
         me.setRadiosChecked(me.currentSituation, me.radios);
         me.buildTablePartial(me.tablePartial, me.getGroup(rationItems));
     },
@@ -859,7 +846,9 @@ let jobContentOprObj = {
             dataType: 'json',
             success: function (result) {
                 if(!result.error){
-                    callback();
+                    if(callback){
+                        callback();
+                    }
                 }
             }
         })

+ 202 - 0
web/maintain/ration_repository/js/sheetsOpr.js

@@ -0,0 +1,202 @@
+/**
+ * Created by Zhong on 2017/9/29.
+ */
+let sheetsOprObj = {
+    setAreaAlign: function(area, hAlign, vAlign){
+        if (!(hAlign) || hAlign === "left") {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.left);
+        } else if (hAlign === "right") {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.right);
+        } else if (hAlign === "center") {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.center);
+        } else {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.left);
+        }
+        if (!(vAlign) || vAlign === "center") {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.center);
+        } else if (vAlign === "top") {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.top);
+        } else if (vAlign === "bottom") {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.bottom);
+        } else {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.center);
+        }
+    },
+    showData: function(sheet, setting, data, distTypeTree) {
+        var me = this, ch = GC.Spread.Sheets.SheetArea.viewport;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        if(typeof setting.owner !== 'undefined' && setting.owner === 'gljComponent'){
+            sheet.setRowCount(data.length + 5);
+        }
+        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) {
+                hAlign = setting.header[col].hAlign;
+            } else if (setting.header[col].dataType !== "String"){
+                hAlign = "right";
+            }
+            vAlign = setting.header[col].vAlign?setting.header[col].vAlign:vAlign;
+            me.setAreaAlign(sheet.getRange(-1, col, -1, 1), hAlign, vAlign);
+            if (setting.header[col].formatter) {
+                //var style = new GC.Spread.Sheets.Style();
+                //style.formatter = setting.header[col].formatter;
+                //sheet.setStyle(row,col,style,GC.Spread.Sheets.SheetArea.viewport);
+                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' && setting.owner !== 'gljComponent'){
+                        sheet.getCell(row, 0, GC.Spread.Sheets.SheetArea.viewport).locked(true);
+                    }
+                }
+            }
+            for(let i = data.length; i < sheet.getRowCount(); i++){
+                sheet.getCell(i, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false);
+            }
+        }
+        sheet.resumeEvent();
+        sheet.resumePaint();
+        //me.shieldAllCells(sheet);
+    },
+    combineRowData: function(sheet, setting, row, repositoryGljObj) {
+        let me = this;
+        var rst = {};
+        let comboBoxCellType = sheet.getCellType(row, 5);
+        let items = comboBoxCellType.items();
+        for (var col = 0; col < setting.header.length; col++) {
+            if(setting.header[col].dataCode === 'gljType'){
+                items.forEach(function(item){
+                    if(sheet.getValue(row, col) === item.text){
+                        rst[setting.header[col].dataCode] = item.value;
+                        if(repositoryGljObj){
+                            rst.shortName = repositoryGljObj.distTypeTree.distTypes[repositoryGljObj.distTypeTree.prefix + item.value].data.shortName;
+                        }
+                    }
+                });
+            }
+            else if (setting.header[col].dataCode === 'code'){
+                if(repositoryGljObj){
+                    let gljList = repositoryGljObj.gljList,
+                        orgCode = repositoryGljObj.orgCode,
+                        isExist = false;
+                    for(let i=0; i< gljList.length; i++){
+                        if(gljList[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.setValue(row, 0, orgCode);
+                                sheet.getCell(row, 0).formatter("@");
+                                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.setValue(row, 0, orgCode);
+                                sheet.getCell(row, 0).formatter("@");
+                                sheet.setActiveCell(row, 0);
+                            });
+                            // sheet.setValue(row, col, orgCode);
+                            isExist = true
+                        }
+                    }
+                    if(!isExist){
+                        rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+                    }
+                }
+                else{
+                    rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+                }
+            }
+            else{
+                rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+            }
+        }
+        return rst;
+    },
+    combineRationRowData: function(sheet, setting, row) {
+        var rst = {};
+        for (var col = 0; col < setting.header.length; col++) {
+            rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+        }
+        return rst;
+    },
+    reLockSomeCodes: function (sheet, beginRow, endRow) {
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let unLockStyle = new GC.Spread.Sheets.Style();
+        unLockStyle.locked = false;
+        let lockStyle = new GC.Spread.Sheets.Style();
+        lockStyle.locked = true;
+        for(let row = beginRow; row < endRow; row++){
+            sheet.setStyle(row, 0, lockStyle);
+        }
+        for(let row = endRow; row < sheet.getRowCount(); row++){
+            sheet.setStyle(row, 0, unLockStyle);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    },
+    lockSomeCodes: function (sheet, beginRow, endRow) {
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let style = new  GC.Spread.Sheets.Style();
+        style.locked = true;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        for(let i = beginRow; i < endRow; i++){
+            sheet.setStyle(i, 0, style);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    },
+    lockCodeCells: function (sheet, rowCount) {
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        let sheetRowCount = sheet.getRowCount();
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let style = new GC.Spread.Sheets.Style();
+        style.locked = true;
+        sheet.setStyle(-1, 0, style);
+        for(let i =rowCount; i<sheetRowCount; i++){
+            sheet.setStyle(i, -1, style);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    }
+};

+ 1 - 0
web/maintain/std_glj_lib/html/gongliao.html

@@ -210,6 +210,7 @@
     <script type="text/javascript" src="/web/maintain/std_glj_lib/js/gljComponent.js"></script>
     <script type="text/javascript" src="/public/web/ztree_common.js"></script>
     <script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
+    <script type="text/javascript" src="/web/maintain/ration_repository/js/sheetsOpr.js"></script>
     <script type="text/javascript" src="/public/web/storageUtil.js"></script>
     <SCRIPT type="text/javascript">
         let userAccount = '<%=userAccount %>';

+ 13 - 13
web/maintain/std_glj_lib/js/glj.js

@@ -39,7 +39,7 @@ let repositoryGljObj = {
             {headerName:"编码",headerWidth:120,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
             {headerName:"名称",headerWidth:260,dataCode:"name", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
             {headerName:"规格型号",headerWidth:260,dataCode:"specs", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
-            {headerName:"计量单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
+            {headerName:"单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"基价单价",headerWidth:120,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
             {headerName:"类型",headerWidth:120,dataCode:"gljType", dataType: "String", hAlign: "center", vAlign: "center"}
         ],
@@ -193,7 +193,7 @@ let repositoryGljObj = {
             }
             //sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
             sheetCommonObj.cleanData(me.workBook.getSheet(0), me.setting, -1);
-            sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection, me.distTypeTree);
+            sheetsOprObj.showData(me.workBook.getSheet(0), me.setting, cacheSection, me.distTypeTree);
 
             cacheSection = null;
         }
@@ -307,7 +307,7 @@ let repositoryGljObj = {
                     if(me.currentGlj.component.length > 0){
                         me.currentComponent = me.getCurrentComponent(me.currentGlj.component);
                         if(me.currentComponent.length > 0){
-                            sheetCommonObj.showData(that.workBook.getSheet(0), that.setting, me.currentComponent);
+                            sheetsOprObj.showData(that.workBook.getSheet(0), that.setting, me.currentComponent);
                         }
                     }
                 }
@@ -361,19 +361,19 @@ let repositoryGljObj = {
                     $('#aleConfBtn').click(function () {
                         // me.workBook.getSheet(0).options.isProtected = false;
                         sheetCommonObj.unLockAllCells(args.sheet);
-                        sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
+                        sheetsOprObj.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;
                         sheetCommonObj.unLockAllCells(args.sheet);
-                        sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
+                        sheetsOprObj.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;
                         sheetCommonObj.unLockAllCells(args.sheet);
-                        sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
+                        sheetsOprObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                         me.addGljObj = null;
                         for(let col=0; col<me.setting.header.length; col++){
                             if(col === 0){
@@ -389,7 +389,7 @@ let repositoryGljObj = {
     },
     onCellEditStart: function(sender, args) {
         let me = repositoryGljObj;
-        let rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
+        let rObj = sheetsOprObj.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.gljList;
@@ -405,7 +405,7 @@ let repositoryGljObj = {
     },
     onCellEditEnd: function(sender, args) {
         let me = repositoryGljObj, that = gljComponentOprObj,
-            rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
+            rObj = sheetsOprObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
             updateArr = [], addArr = [], updateBasePrcArr = [];
         me.editingRowIdx = args.row;
         rObj.basePrice = rObj.basePrice ? rObj.basePrice : 0;
@@ -595,10 +595,10 @@ let repositoryGljObj = {
                                 $('#codeAlertBtn').click();
                                 sheet.options.isProtected = true;
                                 $('#codAleConfBtn').click(function () {
-                                    sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                                    sheetsOprObj.lockSomeCodes(sheet, 0, cacheSection.length);
                                 });
                                 $('#codAleClose').click(function () {
-                                    sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                                    sheetsOprObj.lockSomeCodes(sheet, 0, cacheSection.length);
                                 });
                             }
                         }
@@ -926,7 +926,7 @@ let repositoryGljObj = {
                     else{
                         me.currentCache = me.getCache();
                         //sheetCommonObj.unLockAllCells(me.workBook.getSheet(0));
-                        sheetCommonObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
+                        sheetsOprObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
                         //sheetCommonObj.lockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
                     }
                     me.showGljItems(me.gljList, me.gljCurTypeId);
@@ -1023,7 +1023,7 @@ let gljTypeTreeOprObj = {
         if (me.parentNodeIds["_pNodeId_" + treeNode.ID]) {
             me.currentOprParent = 1;
             me.currentCache = me.getParentCache(me.parentNodeIds["_pNodeId_" + treeNode.ID]);
-            sheetCommonObj.lockCodeCells(me.workBook.getSheet(0), me.currentCache.length);
+            sheetsOprObj.lockCodeCells(me.workBook.getSheet(0), me.currentCache.length);
             me.workBook.getSheet(0).setRowCount(me.currentCache.length);
             //sheetCommonObj.shieldAllCells(me.workBook.getSheet(0), me.setting);
         } else {
@@ -1033,7 +1033,7 @@ let gljTypeTreeOprObj = {
             /*sheetCommonObj.unLockAllCells(me.workBook.getSheet(0));
              sheetCommonObj.lockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);*/
             sheetCommonObj.unLockAllCells(me.workBook.getSheet(0));
-            sheetCommonObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
+            sheetsOprObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
         }
         me.showGljItems(me.gljList, gljTypeId);
     },

+ 1 - 1
web/maintain/std_glj_lib/js/gljComponent.js

@@ -400,7 +400,7 @@ let gljComponentOprObj = {
                         me.workBook.getSheet(0).getSelections()[0]
                         //sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
                         sheetCommonObj.cleanData(me.workBook.getSheet(0), me.setting, -1);
-                        sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, that.currentComponent);
+                        sheetsOprObj.showData(me.workBook.getSheet(0), me.setting, that.currentComponent);
                     }
                 }
             }

+ 202 - 0
web/maintain/std_glj_lib/js/sheetsOpr.js

@@ -0,0 +1,202 @@
+/**
+ * Created by Zhong on 2017/9/29.
+ */
+let sheetsOprObj = {
+    setAreaAlign: function(area, hAlign, vAlign){
+        if (!(hAlign) || hAlign === "left") {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.left);
+        } else if (hAlign === "right") {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.right);
+        } else if (hAlign === "center") {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.center);
+        } else {
+            area.hAlign(GC.Spread.Sheets.HorizontalAlign.left);
+        }
+        if (!(vAlign) || vAlign === "center") {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.center);
+        } else if (vAlign === "top") {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.top);
+        } else if (vAlign === "bottom") {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.bottom);
+        } else {
+            area.vAlign(GC.Spread.Sheets.VerticalAlign.center);
+        }
+    },
+    showData: function(sheet, setting, data, distTypeTree) {
+        var me = this, ch = GC.Spread.Sheets.SheetArea.viewport;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        if(typeof setting.owner !== 'undefined' && setting.owner === 'gljComponent'){
+            sheet.setRowCount(data.length + 5);
+        }
+        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) {
+                hAlign = setting.header[col].hAlign;
+            } else if (setting.header[col].dataType !== "String"){
+                hAlign = "right";
+            }
+            vAlign = setting.header[col].vAlign?setting.header[col].vAlign:vAlign;
+            me.setAreaAlign(sheet.getRange(-1, col, -1, 1), hAlign, vAlign);
+            if (setting.header[col].formatter) {
+                //var style = new GC.Spread.Sheets.Style();
+                //style.formatter = setting.header[col].formatter;
+                //sheet.setStyle(row,col,style,GC.Spread.Sheets.SheetArea.viewport);
+                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' && setting.owner !== 'gljComponent'){
+                        sheet.getCell(row, 0, GC.Spread.Sheets.SheetArea.viewport).locked(true);
+                    }
+                }
+            }
+            for(let i = data.length; i < sheet.getRowCount(); i++){
+                sheet.getCell(i, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false);
+            }
+        }
+        sheet.resumeEvent();
+        sheet.resumePaint();
+        //me.shieldAllCells(sheet);
+    },
+    combineRowData: function(sheet, setting, row, repositoryGljObj) {
+        let me = this;
+        var rst = {};
+        let comboBoxCellType = sheet.getCellType(row, 5);
+        let items = comboBoxCellType.items();
+        for (var col = 0; col < setting.header.length; col++) {
+            if(setting.header[col].dataCode === 'gljType'){
+                items.forEach(function(item){
+                    if(sheet.getValue(row, col) === item.text){
+                        rst[setting.header[col].dataCode] = item.value;
+                        if(repositoryGljObj){
+                            rst.shortName = repositoryGljObj.distTypeTree.distTypes[repositoryGljObj.distTypeTree.prefix + item.value].data.shortName;
+                        }
+                    }
+                });
+            }
+            else if (setting.header[col].dataCode === 'code'){
+                if(repositoryGljObj){
+                    let gljList = repositoryGljObj.gljList,
+                        orgCode = repositoryGljObj.orgCode,
+                        isExist = false;
+                    for(let i=0; i< gljList.length; i++){
+                        if(gljList[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.setValue(row, 0, orgCode);
+                                sheet.getCell(row, 0).formatter("@");
+                                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.setValue(row, 0, orgCode);
+                                sheet.getCell(row, 0).formatter("@");
+                                sheet.setActiveCell(row, 0);
+                            });
+                            // sheet.setValue(row, col, orgCode);
+                            isExist = true
+                        }
+                    }
+                    if(!isExist){
+                        rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+                    }
+                }
+                else{
+                    rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+                }
+            }
+            else{
+                rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+            }
+        }
+        return rst;
+    },
+    combineRationRowData: function(sheet, setting, row) {
+        var rst = {};
+        for (var col = 0; col < setting.header.length; col++) {
+            rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+        }
+        return rst;
+    },
+    reLockSomeCodes: function (sheet, beginRow, endRow) {
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let unLockStyle = new GC.Spread.Sheets.Style();
+        unLockStyle.locked = false;
+        let lockStyle = new GC.Spread.Sheets.Style();
+        lockStyle.locked = true;
+        for(let row = beginRow; row < endRow; row++){
+            sheet.setStyle(row, 0, lockStyle);
+        }
+        for(let row = endRow; row < sheet.getRowCount(); row++){
+            sheet.setStyle(row, 0, unLockStyle);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    },
+    lockSomeCodes: function (sheet, beginRow, endRow) {
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let style = new  GC.Spread.Sheets.Style();
+        style.locked = true;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        for(let i = beginRow; i < endRow; i++){
+            sheet.setStyle(i, 0, style);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    },
+    lockCodeCells: function (sheet, rowCount) {
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        let sheetRowCount = sheet.getRowCount();
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let style = new GC.Spread.Sheets.Style();
+        style.locked = true;
+        sheet.setStyle(-1, 0, style);
+        for(let i =rowCount; i<sheetRowCount; i++){
+            sheet.setStyle(i, -1, style);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    }
+};