zhangweicheng 6 år sedan
förälder
incheckning
b9dafe0b1a
1 ändrade filer med 39 tillägg och 7 borttagningar
  1. 39 7
      web/maintain/material_replace_lib/js/material_replace_edit.js

+ 39 - 7
web/maintain/material_replace_lib/js/material_replace_edit.js

@@ -20,7 +20,7 @@ let materialOjb = {
     },
     materialSetting:{
         header: [
-            {headerName: "材料编号", headerWidth: 180, dataCode: "code", dataType: "String"},
+            {headerName: "材料编号", headerWidth: 180, dataCode: "code", dataType: "String",formatter: "@"},
             {headerName: "材料名称", headerWidth: 240, dataCode: "name", dataType: "String",cellType:'tipsCell'},
             {headerName: "规格", headerWidth: 150, dataCode: "specs", hAlign: "left", dataType: "String",cellType:'tipsCell'}
         ],
@@ -41,6 +41,8 @@ let materialOjb = {
         this.billsSheet.name('billsSheet');
         this.billsSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onBillsValueChange);
         this.billsSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onBillsSelectionChange);
+        this.billsSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onBillsRangeChange);
+
         this.initRightClick("billsSpread",this.billsSpread);
 
 
@@ -101,11 +103,39 @@ let materialOjb = {
     },
     refreshSheet:function(){
         sheetCommonObj.showData(this.billsSheet,this.billsSetting,this.billsList);
-        this.billsSheet.setRowCount(this.billsList.length + 1);
+        this.billsSheet.setRowCount(this.billsList.length + 30);
+
+
     },
-    onBillsSelectionChange:function (sander,args) {
+    onBillsSelectionChange:function (sender,args) {
         args.sheet.repaint();
     },
+    onBillsRangeChange:function (sender,args) {
+        let me = materialOjb;
+        let updateDatas = [];
+        if(args.action == GC.Spread.Sheets.RangeChangedAction.paste){
+            for(let c of args.changedCells){
+                let field = me.billsSetting.header[c.col].dataCode;
+                let newValue =  args.sheet.getCell(c.row,c.col).value();
+                if(me.validateBills(field,newValue)){
+                    if(c.row < me.billsList.length){
+                        let data = me.getUpdateData(field,newValue,me.billsList[c.row].code);
+                        if(data) updateDatas.push(data);
+                    }else if(field == 'code'){//如果是在空白行粘贴,并且是编码列,则是新增,其它的忽略;
+                        let data = me.getUpdateData(field,newValue,null);
+                        if(data) updateDatas.push(data);
+                    }
+                }else {
+                    break;
+                }
+            }
+            if(updateDatas.length > 0){
+                me.saveBills(updateDatas);
+                return;
+            }
+        }
+         me.refreshSheet();
+    },
 
     onBillsValueChange: function(sander,args){
         let me = materialOjb;
@@ -126,12 +156,13 @@ let materialOjb = {
 
     validateBills:function (field,value) {
         if(field == 'code'){
+            value = value.toString().replace(/[\s\r\n]/g, "");//去除空格换行等字符;
             if(value.length !== 9){
                 alert("清单长度不正确");
                 return false;
             }
             if(_.find(this.billsList,{'code':value})) {
-                alert("清单已存在");
+                alert("清单:"+value+" 已存在");
                 return false;
             }
         }
@@ -139,10 +170,11 @@ let materialOjb = {
     },
     getUpdateData:function (field,newValue,code) {
         if(field == 'code'){
+            newValue = newValue.toString().replace(/[\s\r\n]/g, "");//去除空格换行等字符;
             if(!isDef(code) || code ==''&&newValue!=null){//说明是新增
                 return {
                     type:'add',
-                    code:newValue.toString(),
+                    code:newValue,
                     libID:$('#libID').val(),
                     billsLibId:parseInt($('#billsLibId').val())
                 }
@@ -150,7 +182,7 @@ let materialOjb = {
                 return {
                     type:'update',
                     oldCode:code.toString(),
-                    newCode:newValue.toString(),
+                    newCode:newValue,
                     libID:$('#libID').val(),
                     billsLibId:parseInt($('#billsLibId').val())
                 }
@@ -192,7 +224,7 @@ let materialOjb = {
     },
     updateCache:function (code,updateData) {
         let bill = _.find(this.billsList,{'code':code});
-        for(let key of updateData){
+        for(let key in updateData){
             bill[key] = updateData[key]
         }
     }