Xiaopeng Zhang 5 kuukautta sitten
vanhempi
commit
af00babd7d
3 muutettua tiedostoa jossa 242 lisäystä ja 107 poistoa
  1. 62 8
      src/Djcs3.js
  2. 179 98
      src/Qingdan3.js
  3. 1 1
      src/Service.js

+ 62 - 8
src/Djcs3.js

@@ -288,7 +288,29 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
      
     const [newData, newHl] = handleBeizhu_djcs(beizhuFKRef.current, selectedRowKeysTable.current[0], newSelectedRowKeys, fuzhu);
                                   if (newData) {
-                                     myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
+                                          myTable.current.deselectRow();
+                                     myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
+                                              let getRow = myTable.current.getRows(); //get array of currently selected row components.
+                                              let component = null;
+                                              for(let i = 0; i < getRow.length; i++) {
+                                                   let entry = getRow[i]._row.modules.dataTree.children;
+                                                   for(let j = 0; j < entry.length; j++) {
+                                                        let child = entry[j];
+                                                        if(child.data['key'] == selectedRowKeysTable.current[0]) {
+                                                             component = child.component;
+                                                             break;
+                                                        }
+                                                        
+                                                   }
+
+                                              }
+                                              component.select();
+                                     });
                                      let y =[];
                                      for (let i = 1; i < newHl.length; i++) {
                                          y.push({
@@ -454,7 +476,11 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
           myTable.current.deselectRow();
           let [success, data] = updateShuliang_djcs(cell._cell.row.data['数量'], selectedRowKeysTable.current[0]);
           if (success) {
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                            myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function() {
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
                               let getRow = myTable.current.getRows(); //get array of currently selected row components.
                               let component = null;
                               for(let i = 0; i < getRow.length; i++) {
@@ -471,8 +497,7 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
 
                               }
                               component.select();
-                              handleSelect(component);
-                              //handleSelect(getRow[0]);
+                              //handleSelect(component);
                            });                            
                                                        
           }
@@ -504,7 +529,11 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                const [success, data, key] = azfy_djcs(selectedRowKeysTable.current[0], dingeclick, azfySelect);
               myTable.current.deselectRow();
                    
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                          myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
                               let getRow = myTable.current.getRows(); //get array of currently selected row components.
                               let component = null;
                               for(let i = 0; i < getRow.length; i++) {
@@ -632,7 +661,7 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                                          {title:"甲供标志", field:"甲供标志", width:80 , headerSort:false, formatter:"textarea"},
                                          {title:"含量", field:"含量", width:120 , headerSort:false, formatter:"money", formatterParams:{precision:4}, editor: "input", editable: editCheckRcj },
                                          {title:"合价", field:"合价", width:80 , headerSort:false, formatter:"money"},
-                                         {title:"暂估价标志", field:"暂估价标志", width:80 , headerSort:false, formatter:"textarea"},
+                                         {title:"暂估价标志", field:"暂估价标志", width:100 , headerSort:false, formatter:"textarea"},
                                          {title:"主要材料标志", field:"主要材料标志", width:100 , headerSort:false, formatter:"textarea"},
                                          {title:"主材标志", field:"主材标志", width:80 , headerSort:false, formatter:"textarea"},
                                          {title:"设备标志", field:"设备标志", width:80 , headerSort:false, formatter:"textarea"},
@@ -661,7 +690,12 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                               }
      
                               let newData = updateDercj_djcs(selectedRowKeysTable.current[0], data2);
+                                          myTable.current.deselectRow();
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function() {
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
                               let getRow = myTable.current.getRows(); //get array of currently selected row components.
                               let component = null;
                               for(let i = 0; i < getRow.length; i++) {
@@ -677,8 +711,8 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                                       }
 
                               }
-               
-                                handleSelect(component);
+                                component.select();
+                                //handleSelect(component);
                               });
                          });
                          }
@@ -712,7 +746,11 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                    if (selectedRowKeysTable.current.length > 0 ) {
                     const [success, data, key] = changguidinge_djcs(input, selectedRowKeysTable.current[0]);
                     if (success) {
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                          myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
                               let getRow = myTable.current.getRows(); //get array of currently selected row components.
                               let component = null;
                               for(let i = 0; i < getRow.length; i++) {
@@ -851,7 +889,11 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                       if (selectedRowKeysTable.current.length > 0) {
                          const [success, data] = danxiangdinge_djcs(selectedRowKeysTable.current[0]);
                          if(success) {
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                             myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
                               resetUI();
                             });
                             
@@ -864,10 +906,14 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                       <Button variant="outlined" size="small" onClick={() => {
                       if (selectedRowKeysTable.current.length > 0) {
                           let newData = shanchu_djcs(selectedRowKeysTable.current[0]);
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                           myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
-                              if (newData.filter(x=>x['key'] == selectedRowKeysTable.current[0]).length == 0) {
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
+                             // if (newData.filter(x=>x['key'] == selectedRowKeysTable.current[0]).length == 0) {
                                    resetUI();
-                               }
+                              // }
                           });
                           
                           
@@ -880,7 +926,11 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                    >删除</Button>
                    <Button variant="outlined" size="small" onClick={() => {
                       let newData = undo_djcs();
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                       myTable.current.updateData(newData).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
                          
                             resetUI();
                             
@@ -892,7 +942,11 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                    >撤销</Button>
                    <Button variant="outlined" size="small" onClick={() => {
                       let newData = redo_djcs();
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                       myTable.current.updateData(newData).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
                          resetUI();
                       });
                       

+ 179 - 98
src/Qingdan3.js

@@ -99,7 +99,29 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
      const onSelectChange = (newSelectedRowKeys) => {
           const [newData, newHl] = handleBeizhu(beizhuFKRef.current, selectedRowKeysTable.current[0], newSelectedRowKeys, fuzhu);
                                        if (newData) {
-                                          myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
+                                          myTable.current.deselectRow();
+                                          myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
+                                              let getRow = myTable.current.getRows(); //get array of currently selected row components.
+                                              let component = null;
+                                              for(let i = 0; i < getRow.length; i++) {
+                                                   let entry = getRow[i]._row.modules.dataTree.children;
+                                                   for(let j = 0; j < entry.length; j++) {
+                                                        let child = entry[j];
+                                                        if(child.data['key'] == selectedRowKeysTable.current[0]) {
+                                                             component = child.component;
+                                                             break;
+                                                        }
+                                                        
+                                                   }
+
+                                              }
+                                              component.select();
+                                          
+                                          });
                                           let y =[];
                                           for (let i = 1; i < newHl.length; i++) {
                                             y.push({
@@ -118,7 +140,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                                           '暂估价标志' : newHl[i][12],
                                           '主要材料标志' : newHl[i][13],
                                           '主材标志' : newHl[i][14],
-                                          '设备标志' : newHl[i][15] 
+                                          '设备标志' : newHl[i][15] ,
+                                          'key' : newHl[i][16]
 
                                           });
                                         }
@@ -136,7 +159,31 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
           setValueYuban(event.target.value);
           const [newData, newHl]  = handleYuban(selectedRowKeysTable.current[0], [event.target.value]);
           if (newData) {
-               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
+                                          myTable.current.deselectRow();
+               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+               
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
+                                              let getRow = myTable.current.getRows(); //get array of currently selected row components.
+                                              let component = null;
+                                              for(let i = 0; i < getRow.length; i++) {
+                                                   let entry = getRow[i]._row.modules.dataTree.children;
+                                                   for(let j = 0; j < entry.length; j++) {
+                                                        let child = entry[j];
+                                                        if(child.data['key'] == selectedRowKeysTable.current[0]) {
+                                                             component = child.component;
+                                                             break;
+                                                        }
+                                                        
+                                                   }
+
+                                              }
+                                              component.select();
+              
+               
+                });
                let y =[];
                for (let i = 1; i < newHl.length; i++) {
                  y.push({
@@ -155,7 +202,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                '暂估价标志' : newHl[i][12],
                '主要材料标志' : newHl[i][13],
                '主材标志' : newHl[i][14],
-               '设备标志' : newHl[i][15] 
+               '设备标志' : newHl[i][15] ,
+               'key' : newHl[i][16]
 
                });
              }
@@ -357,7 +405,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                               '暂估价标志' : x[i][12],
                               '主要材料标志' : x[i][13],
                               '主材标志' : x[i][14],
-                              '设备标志' : x[i][15] 
+                              '设备标志' : x[i][15] ,
+                              'key' : ''
 
                          });
                     }
@@ -413,7 +462,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                                         '暂估价标志' : x[0][i][12],
                                         '主要材料标志' : x[0][i][13],
                                         '主材标志' : x[0][i][14],
-                                        '设备标志' : x[0][i][15] 
+                                        '设备标志' : x[0][i][15] ,
+                                        'key' : x[0][16]
           
                                    });
                               }
@@ -429,7 +479,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                  } else {
                     setValueYuban(x[2][0]);
                  }
-                 setRcjrows(x[3]);
+                 setRcjrows(x[3]);//buchongrcj
                  //hotRcjRef.current?.hotInstance?.loadData(x);
                  isQdrcj.current = false;
                  let toHighlight = [];
@@ -505,7 +555,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
 
      /**补充人材机 */
      const [rcjrows, setRcjrows] = React.useState([]);
-     //const [rowModesModel, setRowModesModel] = React.useState({});
      const [showToolbar, setShowToolbar] = React.useState(false);
      const rcjcolumns = [
           {
@@ -626,7 +675,29 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
           setRcjrows(rcjrows.filter((row) => row.id !== id));
           const [newData, newHl] = handleRcjbc(selectedRowKeysTable.current[0], rcjrows.filter((row) => row.id !== id));
           if (newData) {
-               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
+                                          myTable.current.deselectRow();
+               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
+                                              let getRow = myTable.current.getRows(); //get array of currently selected row components.
+                                              let component = null;
+                                              for(let i = 0; i < getRow.length; i++) {
+                                                   let entry = getRow[i]._row.modules.dataTree.children;
+                                                   for(let j = 0; j < entry.length; j++) {
+                                                        let child = entry[j];
+                                                        if(child.data['key'] == selectedRowKeysTable.current[0]) {
+                                                             component = child.component;
+                                                             break;
+                                                        }
+                                                        
+                                                   }
+
+                                              }
+                                              component.select();
+
+               });
                let y =[];
                for (let i = 1; i < newHl.length; i++) {
                  y.push({
@@ -645,7 +716,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                '暂估价标志' : newHl[i][12],
                '主要材料标志' : newHl[i][13],
                '主材标志' : newHl[i][14],
-               '设备标志' : newHl[i][15] 
+               '设备标志' : newHl[i][15],
+               'key' : newHl[i][16]
 
                });
              }
@@ -664,7 +736,29 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
           setRcjrows(rcjrows.map((row) => (row.id === newRow.id ? updatedRow : row)));
           const [newData, newHl] = handleRcjbc(selectedRowKeysTable.current[0], rcjrows.map((row) => (row.id === newRow.id ? updatedRow : row)));
           if (newData) {
-               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
+                                          myTable.current.deselectRow();
+               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                            myTable.current.element.children[1].scrollTop = former;
+                                            myTable.current.element.children[1].scrollLeft = former2;
+                                              let getRow = myTable.current.getRows(); //get array of currently selected row components.
+                                              let component = null;
+                                              for(let i = 0; i < getRow.length; i++) {
+                                                   let entry = getRow[i]._row.modules.dataTree.children;
+                                                   for(let j = 0; j < entry.length; j++) {
+                                                        let child = entry[j];
+                                                        if(child.data['key'] == selectedRowKeysTable.current[0]) {
+                                                             component = child.component;
+                                                             break;
+                                                        }
+                                                        
+                                                   }
+
+                                              }
+                                              component.select();
+
+               });
                let y =[];
                for (let i = 1; i < newHl.length; i++) {
                  y.push({
@@ -683,7 +777,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                '暂估价标志' : newHl[i][12],
                '主要材料标志' : newHl[i][13],
                '主材标志' : newHl[i][14],
-               '设备标志' : newHl[i][15] 
+               '设备标志' : newHl[i][15] ,
+               'key' : newHl[i][16]
 
                });
              }
@@ -714,7 +809,28 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
              });
              const [newData, newHl] = handleRcjbc(selectedRowKeysTable.current[0], a);
              if (newData) {
-               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
+               let former = myTable.current.element.children[1].scrollTop;
+               let former2 = myTable.current.element.children[1].scrollLeft;
+               myTable.current.deselectRow();
+               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                       myTable.current.element.children[1].scrollTop = former;
+                       myTable.current.element.children[1].scrollLeft = former2;
+                         let getRow = myTable.current.getRows(); //get array of currently selected row components.
+                         let component = null;
+                         for(let i = 0; i < getRow.length; i++) {
+                              let entry = getRow[i]._row.modules.dataTree.children;
+                              for(let j = 0; j < entry.length; j++) {
+                                   let child = entry[j];
+                                   if(child.data['key'] == selectedRowKeysTable.current[0]) {
+                                        component = child.component;
+                                        break;
+                                   }
+                                   
+                              }
+
+                         }
+                         component.select();
+               });
                let y =[];
                for (let i = 1; i < newHl.length; i++) {
                  y.push({
@@ -733,7 +849,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                '暂估价标志' : newHl[i][12],
                '主要材料标志' : newHl[i][13],
                '主材标志' : newHl[i][14],
-               '设备标志' : newHl[i][15]
+               '设备标志' : newHl[i][15],
+               'key' : newHl[i][16]
 
                });
              }
@@ -768,8 +885,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
           myTable.current = new Tabulator(myRef.current, {
                index: "key",
                height: 380,
-               //rowHeight: 40,
-               //renderVerticalBuffer: 760,
                renderVertical: "basic",
              data: detail, //link data to table
              reactiveData: false, //enable data reactivity
@@ -778,8 +893,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
              selectableRows:1, //make rows selectable
              editTriggerEvent:"dblclick", //trigger edit on double click
              dataTreeStartExpanded:function(row, level){
-                 //console.log(row);
-                 //console.log(level);
                  return true; //expand rows where the "driver" data field is true;
              },
              columns: [ //Define Table Columns
@@ -815,13 +928,15 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
            
      
            myTable.current.on("cellEdited", function(cell){
-               //console.log("edited");
-               //console.log();
                let key = cell._cell.row.data['key'];
                myTable.current.deselectRow();
                if(cell._cell.column.field == '名称') {
                     let newData = updateDeMingcheng(cell._cell.row.data['名称'], selectedRowKeysTable.current[0]);
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                     myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function() {
+                       myTable.current.element.children[1].scrollTop = former;
+                       myTable.current.element.children[1].scrollLeft = former2;
                          let getRow = myTable.current.getRows(); //get array of currently selected row components.
                          let component = null;
                          for(let i = 0; i < getRow.length; i++) {
@@ -838,8 +953,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
 
                          }
                          component.select();
-                         handleSelect(component);
-                         //handleSelect(getRow[0]);
+                     //    handleSelect(component);
                       });                
                }
 
@@ -849,7 +963,11 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                
                let [success, data] = updateShuliang(cell._cell.row.data['数量'], selectedRowKeysTable.current[0]);
                if (success) {
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                                 myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function() {
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                                    let getRow = myTable.current.getRows(); //get array of currently selected row components.
                                    let component = null;
                                    for(let i = 0; i < getRow.length; i++) {
@@ -866,8 +984,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
      
                                    }
                                    component.select();
-                                   handleSelect(component);
-                                   //handleSelect(getRow[0]);
+                                 //  handleSelect(component);
                                 });                            
                                                             
                }
@@ -890,8 +1007,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
 
         React.useEffect(
           () => {
-            //console.log("rgde changed");
-            //console.log(rgde);
             rgdeRef.current = rgde;
             jxdeRef.current = jxde;
             cldeRef.current = clde;
@@ -999,7 +1114,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                   setFuzhu(result);
                   let newSelect = extractFuzhu(debmRef.current);
                   setCheckedKeys_2(newSelect);
-                  //setSelectedRowKeys([1]);
                   
               }
           }, [beizhu]
@@ -1018,11 +1132,14 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
           () => {
                
                myTable.current.deselectRow();
-               //console.log(dingeclick);
                if (selectedRowKeysTable.current.length > 0 ) {
                     const [success, data, key] = changguidinge(JSON.parse(dingeclick), selectedRowKeysTable.current[0]);
                     if (success) {
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                          myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                               let getRow = myTable.current.getRows(); //get array of currently selected row components.
                               let component = null;
                               for(let i = 0; i < getRow.length; i++) {
@@ -1054,11 +1171,14 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
 
       React.useEffect(
           () => {
-               //console.log(dingeclick);
                if (selectedRowKeysTable.current.length > 0 ) {
                     const data = huan(JSON.parse(tihuanClick), selectedRowKeysTable.current[0]);
-                    
+                    myTable.current.deselectRow();
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                     myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                          let getRow = myTable.current.getRows(); //get array of currently selected row components.
                          let component = null;
                          for(let i = 0; i < getRow.length; i++) {
@@ -1066,25 +1186,14 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                               for(let j = 0; j < entry.length; j++) {
                                    let child = entry[j];
                                    if(child.data['key'] == selectedRowKeysTable.current[0]) {
-                                        //console.log(child);
                                         component = child.component;
                                         break;
                                    }
-                                   
                               }
-
                          }
-                         
-                         
-                         handleSelect(component);
-
-                              
-                          
+                         component.select();
+                         //handleSelect(component);
                      });
-                         
-
-                        
-                    
                }
                
           }, [tihuanClick]//替换定额人材机
@@ -1103,20 +1212,15 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                   dataTreeStartExpanded:false,
                   dataTree: false,
                   selectableRows:1, //make rows selectable
-                  
-                  
                   columns: [ //Define Table Columns
                                {title:"ID", field:"ID", width:80, headerSort:false, }, //never hide this column
                                {title:"定额编号", field:"定额编号", width:120,headerSort:false,  formatter:"textarea" },
                                {title:"工程量名称", field:"工程量名称", width:150, headerSort:false, formatter:"textarea"}, //hide this column first
                                {title:"工作内容", field:"工作内容", width:150 , headerSort:false, formatter:"textarea"},
-                             
                        ]
                });
                tuijianTable.current.on("tableBuilt", () => {
-                    
                     tuijianTable.current.replaceData(tuijian);
-                         
                   });
                }
                if (rcj2Ref.current != null ) {
@@ -1128,8 +1232,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                        dataTreeStartExpanded:false,
                        dataTree: false,
                        selectableRows:1, //make rows selectable
-                       
-                       
                        columns: [ //Define Table Columns
                                     {title:"人材机编码", field:"人材机编码", width:100, headerSort:false, }, //never hide this column
                                     {title:"名称", field:"名称", width:120,headerSort:false,  formatter:"textarea" },
@@ -1137,13 +1239,10 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                                     {title:"单价", field:"单价", width:150 , headerSort:false, formatter:"money"},
                                     {title:"合价", field:"合价", width:150 , headerSort:false, formatter:"money"},
                                     {title:"含量", field:"含量", width:150 , headerSort:false, formatter:"textarea"},
-                                  
                             ]
                     });
                     rcj2Table.current.on("tableBuilt", () => {
-                         
                          rcj2Table.current.replaceData(rcjhl2);
-                              
                        });
                     }
 
@@ -1159,16 +1258,11 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                             selectableRows:1, //make rows selectable
                             editTriggerEvent:"dblclick",
                             rowFormatter:function(row){
-                              //row - row component
-                              
                               var data = row.getData();
                               if (data['人材机编码'].includes('10000F')) {
                                    row.getElement().style.backgroundColor = "#ffff00";
                               }
-                              
-                            
                           },
-                            
                             columns: [ //Define Table Columns
                                          {title:"ID", field:"ID", width:80, headerSort:false, },
                                          {title:"人材机编码", field:"人材机编码", width:120, headerSort:false, formatter: sparklineFormatter2}, //never hide this column
@@ -1178,11 +1272,11 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                                          {title:"单价", field:"单价", width:80 , headerSort:false, formatter: sparklineFormatter, editor: "input", editable: editCheckJg },
                                          {title:"产地", field:"产地", width:80, headerSort:false, },
                                          {title:"供应厂商", field:"供应厂商", width:80, headerSort:false, },
-                                         {title:"人材机类别", field:"人材机类别", width:80, headerSort:false, },
+                                         {title:"人材机类别", field:"人材机类别", width:100, headerSort:false, },
                                          {title:"甲供标志", field:"甲供标志", width:80 , headerSort:false, formatter:"textarea"},
                                          {title:"含量", field:"含量", width:80 , headerSort:false, formatter:"money", formatterParams:{precision:4}, editor: "input", editable: editCheckRcj },
                                          {title:"合价", field:"合价", width:80 , headerSort:false, formatter:"money"},
-                                         {title:"暂估价标志", field:"暂估价标志", width:80 , headerSort:false, formatter:"textarea"},
+                                         {title:"暂估价标志", field:"暂估价标志", width:100 , headerSort:false, formatter:"textarea"},
                                          {title:"主要材料标志", field:"主要材料标志", width:100 , headerSort:false, formatter:"textarea"},
                                          {title:"主材标志", field:"主材标志", width:80 , headerSort:false, formatter:"textarea"},
                                          {title:"设备标志", field:"设备标志", width:80 , headerSort:false, formatter:"textarea"},
@@ -1190,9 +1284,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                                  ]
                          });
                          rcjTable.current.on("tableBuilt", () => {
-                              
                               rcjTable.current.replaceData(rcjhl);
-                                   
                             });
                          rcjTable.current.on("cellDblClick", function(e, cell){
                               //e - the click event object
@@ -1221,7 +1313,12 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                               }
      
                               let newData = updateDercj(selectedRowKeysTable.current[0], data2);
+                              myTable.current.deselectRow();
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                               myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function() {
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                               let getRow = myTable.current.getRows(); //get array of currently selected row components.
                               let component = null;
                               for(let i = 0; i < getRow.length; i++) {
@@ -1233,23 +1330,18 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                                                component = child.component;
                                                 break;
                                             }
-                         
                                       }
-
                               }
-               
-                                handleSelect(component);
+                              component.select();  
+                              //handleSelect(component);
                               });
                          });
                          
-                         
                     }
           }, [valueTab]
         );
 
 
-
-
     return (
         <Stack spacing={2}>
 
@@ -1268,58 +1360,58 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                               suanshiCallback();
                          }
                       }
-                 
-                      
                       }}
                    >定额(算式)</Button>
                    <Button variant="outlined" size="small" onClick={() => {
                       if (selectedRowKeysTable.current.length > 0) {
                          const [success, data] = danxiangdinge(selectedRowKeysTable.current[0]);
                          if(success) {
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                               myTable.current.updateData(data.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                                    resetUI();
                                  });
                          }
                       }
-                 
-                      
                       }}
                    >单项定额</Button>
                       <Button variant="outlined" size="small" onClick={() => {
                       if (selectedRowKeysTable.current.length > 0) {
                          let newData = shanchu(selectedRowKeysTable.current[0]);
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                          myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current)).then(function(){
-                             if (newData.filter(x=>x['key'] == selectedRowKeysTable.current[0]).length == 0) {
+                             //if (newData.filter(x=>x['key'] == selectedRowKeysTable.current[0]).length == 0) {
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                                   resetUI();
-                             }
+                             //}
                          });
-                         
-                         
-                         
                      }
-                      
-                 
-                      
                       }}
                    >删除</Button>
                    <Button variant="outlined" size="small" onClick={() => {
                    let newData = undo();
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                    myTable.current.updateData(newData).then(function(){
-                      
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                          resetUI();
-                         
-                     
                    });
-                      
                       }}
                    >撤销</Button>
                    <Button variant="outlined" size="small" onClick={() => {
                    let newData = redo();
+                                          let former = myTable.current.element.children[1].scrollTop;
+                                          let former2 = myTable.current.element.children[1].scrollLeft;
                    myTable.current.updateData(newData).then(function(){
+                                     myTable.current.element.children[1].scrollTop = former;
+                                     myTable.current.element.children[1].scrollLeft = former2;
                       resetUI();
                    });
-                   
-                      
                       }}
                    >重做</Button>
                    <Button variant="outlined" size="small" onClick={() => {
@@ -1328,7 +1420,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                       
                       }}
                    >保存</Button>
-
                   
                    </Stack>
                    <div style={{width: "70vw"}}>
@@ -1337,8 +1428,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                   </div>
                   </Box>
 
-
-
                    <Box >
                    
                    <TabContext value={valueTab}>
@@ -1359,13 +1448,9 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                        </div>
                        </TabPanel>
                        <TabPanel sx={{p: 1}} value="2">
-                         
                        <div ref={rcj2Ref}></div>
-                           
-
                        </TabPanel>
                        <TabPanel sx={{p: 1}} value="3">
-                         
                        <Box
                        sx={{
                          height: 200,
@@ -1394,8 +1479,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
 
                        />
                      </Box>
-                             
-  
                          </TabPanel>
                        <TabPanel sx={{p: 1}} value="4">
                        <Box sx={{maxHeight: `190px`}}>
@@ -1428,8 +1511,6 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                         </Table>
                         </CustomProvider>
                        </Box>
-                          
-
                        </TabPanel>
                        <TabPanel sx={{p: 1}} value="5">
                         <Box sx={{maxHeight: `190px`}}>

+ 1 - 1
src/Service.js

@@ -770,7 +770,7 @@ async generateQingdanTuijian(name, bh, bt, bm) {
         }
     }
     async generateSingleDingeXilie(zhuanye, debh, mc) {//清单页面展示用
-        const response = await fetch(this.ip().concat( "/singledexilie/").concat(zhuanye.toString()).concat("/").concat(debh).concat("/").concat(encodeURIComponent(mc)), {
+        const response = await fetch(this.ip().concat( "/singledexilie/").concat(zhuanye.toString()).concat("/").concat(debh).concat("/").concat(encodeURIComponent(mc.replace(/\//g, ''))), {
             method : "GET",
            
         });