Browse Source

子目换算新需求

zhangweicheng 6 years ago
parent
commit
cb398be0b0

+ 1 - 1
modules/main/facade/ration_facade.js

@@ -347,7 +347,7 @@ async function getCustomerCoe(projectID,rationID,seq,compilation){//取自定义
         coeID:-1,
         coeID:-1,
         name : '自定义系数',
         name : '自定义系数',
         content:'人工×1,材料×1,机械×1,主材×1,设备×1',
         content:'人工×1,材料×1,机械×1,主材×1,设备×1',
-        isAdjust:0,
+        isAdjust:1,
         seq:seq,
         seq:seq,
         rationID : rationID,
         rationID : rationID,
         projectID : projectID
         projectID : projectID

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

@@ -217,6 +217,24 @@ var sheetCommonObj = {
             sheet.autoFitRow(row);
             sheet.autoFitRow(row);
         }
         }
     },
     },
+    checkData : function(col,setting, value) {
+        let result = true;
+        let validator = setting.header[col].validator !== undefined ? setting.header[col].validator : null;
+        if (validator === null) {
+            return result;
+        }
+        switch (validator) {
+            case 'number':
+                let regular = /^\d+(\.\d+)?$/;
+                result = regular.test(value);
+                break;
+            case 'boolean':
+                let booleanValue = [true, false];
+                result = booleanValue.indexOf(value) >= 0;
+                break;
+        }
+        return result;
+    },
     //todo
     //todo
     analyzePasteData: function(setting, pastedInfo) {
     analyzePasteData: function(setting, pastedInfo) {
         var rst = [], propId = pastedInfo.cellRange.col, preStrIdx = 0, itemObj = {};//propId = 0 to proId = pastedInfo.cellRange.col, update by zhong
         var rst = [], propId = pastedInfo.cellRange.col, preStrIdx = 0, itemObj = {};//propId = 0 to proId = pastedInfo.cellRange.col, update by zhong

+ 2 - 0
public/web/slideResize.js

@@ -156,6 +156,8 @@ const SlideResize = (function() {
                 eleObj.topSpread.height(topChange - limit.notTopSpread);
                 eleObj.topSpread.height(topChange - limit.notTopSpread);
                 //设置下部分div高度
                 //设置下部分div高度
                 eleObj.bottom.height(bottomChange);
                 eleObj.bottom.height(bottomChange);
+                console.log(eleObj.bottom);
+                console.log(bottomChange);
                 //设置下部分div内spread高度
                 //设置下部分div内spread高度
                 eleObj.bottomSpread.height(bottomChange - limit.notBottomSpread);
                 eleObj.bottomSpread.height(bottomChange - limit.notBottomSpread);
                 mouseMoveCount += Math.abs(moveSize);
                 mouseMoveCount += Math.abs(moveSize);

+ 4 - 0
web/building_saas/css/custom.css

@@ -295,4 +295,8 @@ input.text-right{
     bottom:30px;
     bottom:30px;
     left:0px;
     left:0px;
     z-index: 999
     z-index: 999
+}
+
+.zmhs-link{
+    padding:0.4em 0.4em !important;
 }
 }

+ 27 - 11
web/building_saas/main/html/main.html

@@ -227,7 +227,7 @@
                                           <div class="resize-x main-data-bottom ovf-hidden" id="rgResize" style="display: none"></div>
                                           <div class="resize-x main-data-bottom ovf-hidden" id="rgResize" style="display: none"></div>
                                           <div class="item_spread main-data-bottom ovf-hidden " id="gljSubDiv" style="width: 99%;">
                                           <div class="item_spread main-data-bottom ovf-hidden " id="gljSubDiv" style="width: 99%;">
                                               <div class="tab-content">
                                               <div class="tab-content">
-                                                  <div class="tab-pane" id="rnc-xm">
+                                                  <div class="tab-pane" id="rnc-xm" >
                                                       <div class="main-data-bottom ovf-hidden" id="itemCharacterText">
                                                       <div class="main-data-bottom ovf-hidden" id="itemCharacterText">
                                                           项目特征 内容
                                                           项目特征 内容
                                                       </div>
                                                       </div>
@@ -236,6 +236,10 @@
                                                       <div class="main-data-bottom ovf-hidden" id = "coeSpread">
                                                       <div class="main-data-bottom ovf-hidden" id = "coeSpread">
                                                       </div>
                                                       </div>
                                                   </div>
                                                   </div>
+                                                  <div class="tab-pane" id="rnc-cus">
+                                                      <div class="main-data-bottom ovf-hidden" id = "cusSpread">
+                                                      </div>
+                                                  </div>
                                                   <div class="tab-pane" id="rnc-fz">
                                                   <div class="tab-pane" id="rnc-fz">
                                                       <div class="main-data-bottom ovf-hidden" id="assSpread"></div>
                                                       <div class="main-data-bottom ovf-hidden" id="assSpread"></div>
                                                   </div>
                                                   </div>
@@ -251,16 +255,28 @@
                                           </div>
                                           </div>
                                           <div class=" main-data-bottom ovf-hidden col-auto p-0" id="gljItemTab" style="width: 30px">
                                           <div class=" main-data-bottom ovf-hidden col-auto p-0" id="gljItemTab" style="width: 30px">
                                               <div class="rn-nav d-flex align-items-start flex-column gljSubTab">
                                               <div class="rn-nav d-flex align-items-start flex-column gljSubTab">
-                                                  <ul class="nav nav-tabs">
-                                                      <li class="nav-item" data-toggle="tooltip" data-placement="left" title="项目特征">
-                                                          <a data-toggle="tab" href="#rnc-xm" role="tab" class="nav-link "><i class="fa fa-info-circle"></i><span>项目特征</span></a>
-                                                      </li>
-                                                      <li class="nav-item" data-toggle="tooltip" data-placement="left" title="子目换算"><a data-toggle="tab" href="#rnc-zm" role="tab"class="nav-link"><i class="fa fa-exchange"></i><span>子目换算</span></a></li>
-                                                      <li class="nav-item" data-toggle="tooltip" data-placement="left" title="辅助定额"><a data-toggle="tab" href="#rnc-fz" role="tab"class="nav-link"><i class="fa fa-wrench"></i><span>辅助定额</span></a></li>
-                                                    <!--  <li class="nav-item"><a data-toggle="tab" href="#rnc-xm" role="tab"  class="nav-link">项目特征</a></li>
-                                                      <li class="nav-item"><a data-toggle="tab" href="#rnc-zm" role="tab" class="nav-link">子目换算</a></li>
-                                                      <li class="nav-item"><a data-toggle="tab" href="#rnc-fz" role="tab" class="nav-link">辅助定额</a></li>-->
-                                                  </ul>
+                                                  <div id="zmhs_toogle">
+                                                      <div class="tn-nav d-flex align-items-start flex-column" data-toggle="tooltip" data-placement="left" title="" data-original-title="打开子目换算">
+                                                          <span class="mt-3 ml-2 text-primary">子目换算</span>
+                                                      </div>
+                                                  </div>
+                                                  <!--<a  role="tab" class="zmhs-link nav-link">子目换算</a>-->
+                                                  <div id="zmhs_nav" style="display: none">
+                                                      <ul class="nav nav-tabs">
+                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="收起">
+                                                              <a data-toggle="tab" href="#rnc-close" role="tab" class="zmhs-link nav-link"><i class="fa fa-arrow-right"></i></a>
+                                                          </li>
+                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="项目特征">
+                                                              <a data-toggle="tab" id="xm-nav" href="#rnc-xm" role="tab" class="zmhs-link nav-link"><i class="fa fa-info-circle"></i></a>
+                                                          </li>
+                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="附注条件"><a data-toggle="tab" href="#rnc-zm" role="tab"class="zmhs-link nav-link"><i class="fa fa-check-circle-o"></i></a></li>
+                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="自定义系数"><a data-toggle="tab" href="#rnc-cus" role="tab"class="zmhs-link nav-link"><i class="fa fa-wrench"></i></a></li>
+                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="增减换算"><a data-toggle="tab" href="#rnc-fz" role="tab"class="zmhs-link nav-link "><i class="fa fa-plus"></i></a></li>
+                                                        <!--  <li class="nav-item"><a data-toggle="tab" href="#rnc-xm" role="tab"  class="nav-link">项目特征</a></li>
+                                                          <li class="nav-item"><a data-toggle="tab" href="#rnc-zm" role="tab" class="nav-link">子目换算</a></li>
+                                                          <li class="nav-item"><a data-toggle="tab" href="#rnc-fz" role="tab" class="nav-link">辅助定额</a></li>-->
+                                                      </ul>
+                                                  </div>
                                               </div>
                                               </div>
                                           </div>
                                           </div>
                                       </div>
                                       </div>

+ 5 - 2
web/building_saas/main/js/main.js

@@ -59,14 +59,17 @@ function getMainResizeEles() {
         bottomSpread: $('#bottom_div').children().find('.main-data-bottom'),
         bottomSpread: $('#bottom_div').children().find('.main-data-bottom'),
     };
     };
     mainResizeEles.limit = {
     mainResizeEles.limit = {
-        min: 150,
-        max: `$(window).height()-$('.header').height()-$('#headerToolsBar').height()-150-10`,
+        min: 180,
+        max: `$(window).height()-$('.header').height()-$('#headerToolsBar').height()-180-10`,
         notTopSpread: 0,
         notTopSpread: 0,
         notBottomSpread: $('#bottom_div ul').height(),
         notBottomSpread: $('#bottom_div ul').height(),
         totalHeight: `$(window).height()-$('.header').height()-$('#headerToolsBar').height()-10`
         totalHeight: `$(window).height()-$('.header').height()-$('#headerToolsBar').height()-10`
     };
     };
     return mainResizeEles;
     return mainResizeEles;
 }
 }
+function getMaxLim(ele) {
+    $(window).height()-$('.header').height()-$('#headerToolsBar').height()-150-10
+}
 
 
 function loadMainSize() {//加载造价书页面各高度
 function loadMainSize() {//加载造价书页面各高度
     // 读取本地存储的高度(必须放在载入spread之前)
     // 读取本地存储的高度(必须放在载入spread之前)

+ 4 - 3
web/building_saas/main/js/models/ration_coe.js

@@ -38,7 +38,7 @@ var ration_coe = {
         };
         };
         ration_coe.prototype.refreshAfterSave=function(data){
         ration_coe.prototype.refreshAfterSave=function(data){
             projectObj.project.ration_coe.addDatasToList(data);
             projectObj.project.ration_coe.addDatasToList(data);
-            zmhs_obj.showCoeData();
+            zmhs_obj.showDatas();
         };
         };
 
 
         ration_coe.prototype.addDatasToList = function (datas) {
         ration_coe.prototype.addDatasToList = function (datas) {
@@ -63,13 +63,14 @@ var ration_coe = {
             _.forEach(data.doc, function(n, key) {
             _.forEach(data.doc, function(n, key) {
                 coe_list[coe_index][key] = n;
                 coe_list[coe_index][key] = n;
             });
             });
-            zmhs_obj.showCoeData();
+            $('#coeSpread').is(':visible'),
+            zmhs_obj.showDatas();
         };
         };
         ration_coe.prototype.refreshAfterDelete=function(data){
         ration_coe.prototype.refreshAfterDelete=function(data){
             var glj_list = projectObj.project.ration_coe.datas;
             var glj_list = projectObj.project.ration_coe.datas;
             _.remove(glj_list,data.query);
             _.remove(glj_list,data.query);
             _.remove(gljOprObj.sheetData,data.query);
             _.remove(gljOprObj.sheetData,data.query);
-            zmhs_obj.showCoeData();
+            zmhs_obj.showDatas();
         };
         };
 
 
         ration_coe.prototype.getRationCoedata=function(newRation,data){
         ration_coe.prototype.getRationCoedata=function(newRation,data){

+ 3 - 2
web/building_saas/main/js/views/project_glj_view.js

@@ -947,7 +947,8 @@ projectGljObject={
         return supply_quantity
         return supply_quantity
     },
     },
     checkData : function(col,setting, value) {
     checkData : function(col,setting, value) {
-        let result = true;
+        return sheetCommonObj.checkData(col,setting, value);
+     /*   let result = true;
         let validator = setting.header[col].validator !== undefined ? setting.header[col].validator : null;
         let validator = setting.header[col].validator !== undefined ? setting.header[col].validator : null;
         if (validator === null) {
         if (validator === null) {
             return result;
             return result;
@@ -962,7 +963,7 @@ projectGljObject={
                 result = booleanValue.indexOf(value) >= 0;
                 result = booleanValue.indexOf(value) >= 0;
                 break;
                 break;
         }
         }
-        return result;
+        return result;*/
     },
     },
     getProjectGLJSelected:function () {
     getProjectGLJSelected:function () {
         let me = projectGljObject;
         let me = projectGljObject;

+ 25 - 10
web/building_saas/main/js/views/sub_view.js

@@ -135,8 +135,7 @@ let subObj = {
     },
     },
     showGljSubTabData:function () {
     showGljSubTabData:function () {
         this.initGljSubTab();
         this.initGljSubTab();
-        if($('#rnc-zm').is(':visible')) zmhs_obj.showCoeData();
-        if($('#rnc-fz').is(':visible')) zmhs_obj.showAssData();
+        zmhs_obj.showDatas();
         refreshSubSpread();
         refreshSubSpread();
     }
     }
 };
 };
@@ -716,16 +715,32 @@ $('#linkAZZJF').on('shown.bs.tab', function () {
     gljOprObj.showDataIfRationSelect(projectObj.project.mainTree.selected, '111111');
     gljOprObj.showDataIfRationSelect(projectObj.project.mainTree.selected, '111111');
 });
 });
 
 
+$('#zmhs_toogle').bind('click',function (){
+   $("#zmhs_nav").show();
+   if(subObj.showGljSubTab == false){
+       subObj.activeTab?$(subObj.activeTab).click():$("#xm-nav").click();
+   }
+    $("#zmhs_toogle").hide();
+});
+
 $('.gljSubTab ul li a').bind('click',function () {
 $('.gljSubTab ul li a').bind('click',function () {
-    if($(this).hasClass("active")){//点击展开了后又点击了自身,这时要隐藏tab和修改本身class
-        subObj.showGljSubTab = false;
+    if(this.hash =="#rnc-close"){
+        $("#zmhs_nav").hide();
+        $("#zmhs_toogle").show();
         closeTab(this);
         closeTab(this);
-        subSpread.focus();//要加上这个,不然右边侧栏的选中状态的border线不会消换
-    }else {
+        subObj.showGljSubTab = false;
+    } else {
         subObj.showGljSubTab = true;
         subObj.showGljSubTab = true;
+        subObj.activeTab =this;
     }
     }
+
     subObj.initGljSubTab();
     subObj.initGljSubTab();
     refreshSubSpread();
     refreshSubSpread();
+    /* if($(this).hasClass("active")){//点击展开了后又点击了自身,这时要隐藏tab和修改本身class
+     subObj.showGljSubTab = false;
+     closeTab(this);
+     subSpread.focus();//要加上这个,不然右边侧栏的选中状态的border线不会消换
+     }*/
 });
 });
 
 
 $('.gljSubTab ul li a').on('shown.bs.tab', function () {
 $('.gljSubTab ul li a').on('shown.bs.tab', function () {
@@ -733,13 +748,13 @@ $('.gljSubTab ul li a').on('shown.bs.tab', function () {
         MaterialController.showItemCharacterText();
         MaterialController.showItemCharacterText();
     }else if(this.hash == "#rnc-zm"){
     }else if(this.hash == "#rnc-zm"){
         zmhs_obj.initCoeSpread();
         zmhs_obj.initCoeSpread();
-        zmhs_obj.refresh();
-        zmhs_obj.showCoeData();
     }else if(this.hash == "#rnc-fz"){
     }else if(this.hash == "#rnc-fz"){
         zmhs_obj.initAssSpread();
         zmhs_obj.initAssSpread();
-        zmhs_obj.refresh();
-        zmhs_obj.showAssData();
+    }else if(this.hash == "#rnc-cus"){
+        zmhs_obj.initCusSpread();
     }
     }
+    zmhs_obj.refresh();
+    zmhs_obj.showDatas();
 });
 });
 
 
 function closeTab(elem) {
 function closeTab(elem) {

+ 100 - 3
web/building_saas/main/js/views/zmhs_view.js

@@ -30,6 +30,19 @@ let zmhs_obj = {
         autoFit:true,
         autoFit:true,
         fitRow:['name']
         fitRow:['name']
     },
     },
+    cusSpread:null,
+    cusSheet:null,
+    cusSheetData:null,
+    cusSetting:{
+        header: [
+            {headerName: "类型", headerWidth: 250, dataCode: "coeType", dataType: "String",hAlign: "left"},
+            {headerName: "系数", headerWidth: 160, dataCode: "amount", dataType: "String", hAlign: "right",validator:"number"}
+        ],
+        view: {
+            lockColumns:["coeType"],
+            rowHeaderWidth:25
+        }
+    },
     assSpread:null,
     assSpread:null,
     assSheet:null,
     assSheet:null,
     assSheetData: [],
     assSheetData: [],
@@ -64,6 +77,18 @@ let zmhs_obj = {
             SheetDataHelper.protectdSheet(this.coeSheet);
             SheetDataHelper.protectdSheet(this.coeSheet);
         }
         }
     },
     },
+    initCusSpread:function () {
+        if(zmhs_obj.cusSpread == null){
+            this.cusSpread = SheetDataHelper.createNewSpread($("#cusSpread")[0]);
+            sheetCommonObj.spreadDefaultStyle(this.cusSpread);
+            this.cusSheet = this.cusSpread.getSheet(0);
+            sheetCommonObj.initSheet(this.cusSheet, this.cusSetting, 30);
+            this.cusSheet.name('ration_cus');
+            this.cusSheet.bind(GC.Spread.Sheets.Events.ValueChanged,this.onCusValueChange);
+            this.cusSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onCusRangeChanged);
+            SheetDataHelper.protectdSheet(this.cusSheet);
+        }
+    },
     initAssSpread:function () {
     initAssSpread:function () {
         if(zmhs_obj.assSheet == null){
         if(zmhs_obj.assSheet == null){
             this.assSpread = SheetDataHelper.createNewSpread($("#assSpread")[0]);
             this.assSpread = SheetDataHelper.createNewSpread($("#assSpread")[0]);
@@ -83,7 +108,9 @@ let zmhs_obj = {
         if(selected&&selected.sourceType == "ration"){
         if(selected&&selected.sourceType == "ration"){
             let ration = selected.data;
             let ration = selected.data;
             coeList = ration_coe.getCoeByRationID(ration.ID);
             coeList = ration_coe.getCoeByRationID(ration.ID);
+            _.remove(coeList,{"coeID":-1})//2018-12-24 新需求,把自定义乘系数分离出来,这里排除自定义乘系数行
         }
         }
+        this.coeSheet.setRowCount(0);
         sheetCommonObj.showData(this.coeSheet, this.coeSetting,coeList);
         sheetCommonObj.showData(this.coeSheet, this.coeSetting,coeList);
         if (coeList.length > 0) {
         if (coeList.length > 0) {
             this.coeSheet.suspendPaint();
             this.coeSheet.suspendPaint();
@@ -105,6 +132,23 @@ let zmhs_obj = {
             disableSpread(zmhs_obj.coeSpread);
             disableSpread(zmhs_obj.coeSpread);
         }
         }
     },
     },
+    showCusData:function (node) {
+        let selected = node?node:projectObj.project.mainTree.selected;
+        let ration_coe = projectObj.project.ration_coe;
+        let cusList = [];
+        if(selected&&selected.sourceType == "ration"){
+            let ration = selected.data;
+            let coeList = ration_coe.getCoeByRationID(ration.ID);
+            this.cusSheetData = _.find(coeList,{"coeID":-1});
+            if(this.cusSheetData) cusList = this.cusSheetData.coes;
+        }
+        sheetCommonObj.showData(this.cusSheet, this.cusSetting,cusList);
+        this.cusSheet.getRange(cusList.length,-1,this.cusSheet.getRowCount()-cusList.length, -1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
+        if(projectReadOnly){
+            disableSpread(zmhs_obj.cusSpread);
+        }
+    },
+
     getComboBoxForCodes:function (coe,i) {
     getComboBoxForCodes:function (coe,i) {
         this.coeSheet.getCell(i, 2, GC.Spread.Sheets.SheetArea.viewport).locked(false);
         this.coeSheet.getCell(i, 2, GC.Spread.Sheets.SheetArea.viewport).locked(false);
         let options = coe.option_codes.split("|");
         let options = coe.option_codes.split("|");
@@ -114,7 +158,6 @@ let zmhs_obj = {
         this.coeSheet.setValue(i, 2, coe.select_code);
         this.coeSheet.setValue(i, 2, coe.select_code);
 
 
     },
     },
-
     showAssData:function (node) {
     showAssData:function (node) {
         this.assSheet.suspendPaint();
         this.assSheet.suspendPaint();
         this.assSheet.suspendEvent();
         this.assSheet.suspendEvent();
@@ -186,8 +229,14 @@ let zmhs_obj = {
 
 
 
 
     refresh:function () {
     refresh:function () {
-        this.coeSpread?this.coeSpread.refresh():'';
-        this.assSpread?this.assSpread.refresh():'';
+        $('#coeSpread').is(':visible')&&this.coeSpread?this.coeSpread.refresh():'';
+        $('#cusSpread').is(':visible')&&this.cusSpread?this.cusSpread.refresh():'';
+        $('#assSpread').is(':visible')&&this.assSpread?this.assSpread.refresh():'';
+    },
+    showDatas:function () {
+        if($('#coeSpread').is(':visible')) this.showCoeData();
+        if($('#cusSpread').is(':visible')) this.showCusData();
+        if($('#assSpread').is(':visible')) this.showAssData();
     },
     },
     showZMHSData:function (node) {
     showZMHSData:function (node) {
         if(this.coeSpread&& this.assSpread && $('#linkZMHS').hasClass('active')){
         if(this.coeSpread&& this.assSpread && $('#linkZMHS').hasClass('active')){
@@ -347,7 +396,47 @@ let zmhs_obj = {
             projectObj.project.ration_coe.adjustCoeClick(recode, 1,{'select_code':args.newValue});
             projectObj.project.ration_coe.adjustCoeClick(recode, 1,{'select_code':args.newValue});
         }
         }
     },
     },
+    onCusValueChange:function (e,args) {
+      zmhs_obj.changeCusValue([{row:args.row,col:args.col,value:args.newValue}]);
+    },
+    changeCusValue:function (datas) {//[{row:,col,value}]
+        if(this.cusSheetData){
+            let tem_coes = _.cloneDeep(this.cusSheetData.coes);
+            for(let d of datas){
+                if(d.value&&!sheetCommonObj.checkData(d.col,this.cusSetting,d.value)){
+                    this.showDatas();
+                    alert('输入的数据类型不对,请重新输入!');
+                    return;
+                }
+                if(gljUtil.isDef(d.value)&&d.value !=""){
+                    if(tem_coes[d.row].coeType=="定额"){
+                        for(let t of tem_coes){
+                            t.amount = d.value;
+                        }
+                    }else {
+                        tem_coes[d.row].amount = d.value;
+                    }
+                }
+            }
+            let doc = {'coes':tem_coes,'content':this.generationContent(tem_coes)};
+            projectObj.project.ration_coe.adjustCoeClick(this.cusSheetData, 1,doc);
+        }
+    },
+    generationContent:function (coes) {
+        let rationAmount = coes[0].amount;
+        let string ='';
+        if(_.every(coes,'amount',rationAmount)){
+            string = coes[0].coeType + 'x'+rationAmount;
+        }else {
+            let context_arr =[];
+            for(let i =1;i<coes.length;i++){
+                context_arr.push( coes[i].coeType + 'x'+coes[i].amount);
+            }
+            string = context_arr.join(',');
 
 
+        }
+        return string;
+    },
     onAssEditEnded:function (e,args) {
     onAssEditEnded:function (e,args) {
         var me = zmhs_obj;
         var me = zmhs_obj;
         if (args.row >= me.assSheetData.length) {
         if (args.row >= me.assSheetData.length) {
@@ -358,6 +447,14 @@ let zmhs_obj = {
             me.updateRationAss(args);
             me.updateRationAss(args);
         }
         }
     },
     },
+    onCusRangeChanged:function (e,args) {
+        let datas = [];
+        for(let c of args.changedCells){
+            let value=  args.sheet.getCell(c.row, c.col).text();
+            datas.push({row:c.row,col:c.col,value:value})
+        }
+        zmhs_obj.changeCusValue(datas);
+    },
     onAssRangeChanged:function (e,args) {
     onAssRangeChanged:function (e,args) {
         let me = zmhs_obj;
         let me = zmhs_obj;
         if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
         if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {