Przeglądaj źródła

空行会产生空对象入库存储,剔除空对象算法。

Chenshilong 8 lat temu
rodzic
commit
7bc515323c

+ 0 - 2
modules/ration_repository/models/coe.js

@@ -51,7 +51,6 @@ coeListDAO.prototype.getCoesByLibID = function (libID, callback) {
 
 coeListDAO.prototype.saveToCoeList = function(data, callback) {
     var me = this;
-    console.log(data);
     if (data.addArr.length > 0) {
         me.addItems(data.addArr, callback);
     };
@@ -69,7 +68,6 @@ coeListDAO.prototype.addItems = function(addArr, callback) {
     if (addArr && addArr.length > 0) {
         counter.counterDAO.getIDAfterCount(counter.moduleName.coeList, addArr.length, function(err, result){
             var maxId = result.value.sequence_value;
-            console.log(maxId);
             for (var i = 0; i < addArr.length; i++) {
                 var obj = new coeListModel(addArr[i]);
                 obj.ID = (maxId - (addArr.length - 1) + i);

+ 20 - 0
public/common_util.js

@@ -0,0 +1,20 @@
+/**
+ * Created by CSL on 2017-06-06.
+ * public functions.
+ */
+
+function deleteEmptyObject(arr) {
+    function isEmptyObject(e) {
+        var t;
+        for (t in e)
+            return !1;
+        return !0
+    };
+
+    for (var i = 0; i < arr.length; i++) {
+        if (isEmptyObject(arr[i])) {
+            arr.splice(i, 1);
+            i = i - 1;
+        };
+    };
+};

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

@@ -199,6 +199,7 @@
     <script type="text/javascript" src="/public/web/treeDataHelper.js"></script>
     <script type="text/javascript" src="/public/web/QueryParam.js"></script>
     <script src="/public/web/sheet_creater.js"></script>
+    <script src="/public/common_util.js"></script>
     <script src="/public/debug.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>

+ 38 - 13
web/maintain/ration_repository/js/coe.js

@@ -62,6 +62,7 @@ var coeList = {
 
         me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onMainEnterCell);
         me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onMainCellChanged);
+        me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onMainRangeChanged);
 
         me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onDetailCellChanged);
     },
@@ -122,11 +123,6 @@ var coeList = {
         }else{
             dSheet.setDataSource(dData);
             me.showNullRow(dSheet);
-
-/*            var lastData = dData[dData.length - 1];
-            if (!$.isEmptyObject(lastData)){
-                dSheet.addRows(dSheet.getRowCount(), 1);
-            };*/
         };
         me.detailSpread.resumePaint();
     },
@@ -149,7 +145,6 @@ var coeList = {
             me.detailSpread.getSheet(0).setDataSource(me.datas[row].coes);
             me.detailSpread.resumePaint();
             var sheet = me.mainSpread.getSheet(0);
-            //sheet.addRows(sheet.getRowCount(), 1);
             me.showNullRow(sheet);
         }
         else{                               // 正常修改
@@ -157,6 +152,15 @@ var coeList = {
         };
     },
 
+    onMainRangeChanged: function(sender, args) {
+        if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
+            if (!confirm('确定要删除本条数据吗?')){ args.cancel = true; return; }
+            var me = coeList;
+            args.sheet.deleteRows(args.row, 1);
+            alert(JSON.stringify(me.datas));
+        };
+    },
+    
     onDetailCellChanged: function(sender, args) {
         if (args.propertyName !== "value"){return;};
 
@@ -165,11 +169,14 @@ var coeList = {
         var detailRow = args.sheet.getActiveRowIndex();
         var detailDatas = me.datas[mainRow].coes;
         var curDetailData = detailDatas[detailRow];
-        var curType = curDetailData.coeType;
-        if (curType !== '单个'){
-            me.detailSpread.suspendPaint();
-            curDetailData.gljID = null;
-            me.detailSpread.resumePaint();
+
+        if (curDetailData !== undefined){       // 如果是空白行输入,curDetailData为undefined。
+            var curType = curDetailData.coeType;
+            if (curType !== '单个'){
+                me.detailSpread.suspendPaint();
+                curDetailData.gljID = null;
+                me.detailSpread.resumePaint();
+            };
         };
 
 /*        var curType = args.sheet.getValue(detailRow, 0);
@@ -183,6 +190,7 @@ var coeList = {
             //args.sheet.getCell(row, 1).backColor("Blue");
         };*/
 
+
         var obj = me.datas[mainRow];
         me.save([],[],[obj]);
 
@@ -191,19 +199,36 @@ var coeList = {
 
     showNullRow: function(sheet){
         var datas = sheet.getDataSource();
+        //alert('004: datas.length: ' + datas.length + ', sheet.getRowCount: ' + sheet.getRowCount());
         var lastData = datas[datas.length - 1];
         if (!$.isEmptyObject(lastData)){
             sheet.addRows(sheet.getRowCount(), 1);
+            //alert('005: datas.length: ' + datas.length + ', sheet.getRowCount: ' + sheet.getRowCount());
         };
     },
 
     save: function(addArr, deleteArr, updateArr) {
-        alert('触发了save');
         var me = coeList;
+
+        //var addArrTemp = [];
+        //var deleteArrTemp = [];
+        var updateArrTemp = [];
+
+        // 空行会产生空对象数据,清理空对象会给sheet的空行效果带来奇怪的干扰,这里要中转一下。
+        if (updateArr.length > 0){
+            $.extend(true, updateArrTemp, updateArr);
+            //debug.d('011: ', updateArrTemp);
+            //debug.d('012: ', updateArr);
+            deleteEmptyObject(updateArrTemp[0].coes);
+            //debug.d('013: ', updateArrTemp);
+            //debug.d('014: ', updateArr);
+            //return;
+        };
+
         $.ajax({
             type:"POST",
             url:"api/saveCoeList",
-            data: {"data": JSON.stringify({"addArr": addArr, "deleteArr": deleteArr, "updateArr": updateArr})},
+            data: {"data": JSON.stringify({"addArr": addArr, "deleteArr": deleteArr, "updateArr": updateArrTemp})},
             dataType:"json",
             cache:false,
             timeout:5000,