Xiaopeng Zhang 5 ماه پیش
والد
کامیت
cfaabf7337
3فایلهای تغییر یافته به همراه86 افزوده شده و 38 حذف شده
  1. 9 6
      src/Djcs3.js
  2. 1 1
      src/Qingdan3.js
  3. 76 31
      src/Service.js

+ 9 - 6
src/Djcs3.js

@@ -140,7 +140,8 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                               '暂估价标志' : x[i][12],
                               '主要材料标志' : x[i][13],
                               '主材标志' : x[i][14],
-                              '设备标志' : x[i][15] 
+                              '设备标志' : x[i][15] ,
+                              'key' : ''
 
                          });
                     }
@@ -167,7 +168,7 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                selectedRowKeysTableParent.current = row_parent['data']['key'];
 
 
-                             clickCallback(row_parent['data']['清单编码'], row._row['data']['清单编码']);
+                             clickCallback(row_parent['data']['清单编码'], row._row['data']['清单编码'], row._row['data']['名称']);
                              Service.generateDingercj(name, bh,bt,row_parent['data']['清单编码'], row._row['data']['清单编码'], row._row['data']['单位'], row._row['data']['key']).then(x=>{
                               let y =[];
                               for (let i = 1; i < x[0].length; i++) {
@@ -187,7 +188,8 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                                         '暂估价标志' : x[0][i][12],
                                         '主要材料标志' : x[0][i][13],
                                         '主材标志' : x[0][i][14],
-                                        '设备标志' : x[0][i][15] 
+                                        '设备标志' : x[0][i][15] ,
+                                        'key' : x[0][i][16]
           
                                    });
                               }
@@ -305,7 +307,8 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                                           '暂估价标志' : newHl[i][12],
                                           '主要材料标志' : newHl[i][13],
                                           '主材标志' : newHl[i][14],
-                                          '设备标志' : newHl[i][15] 
+                                          '设备标志' : newHl[i][15],
+                                          'key': newHl[i][16]
 
                                       });
                                      }
@@ -650,11 +653,11 @@ export default function Djcs3({name, bh, rgde, jxde, clde, beizhu, beizhuFK, cli
                               if (rcjTable.current) {
                                    rcjTable.current.replaceData(data);
                               }
-                              let data2 = [['ID', '人材机编码', '名称', '规格型号', '单位', '单价', '产地', '供应厂商', '人材机类别', '甲供标志', '含量', '合价', '暂估价标志', '主要材料标志', '主材标志', '设备标志']]
+                              let data2 = [['ID', '人材机编码', '名称', '规格型号', '单位', '单价', '产地', '供应厂商', '人材机类别', '甲供标志', '含量', '合价', '暂估价标志', '主要材料标志', '主材标志', '设备标志', "key"]]
                               for (let i = 0; i < data.length; i++) {
                                    data2.push([data[i]['ID'], data[i]['人材机编码'], data[i]['名称'], data[i]['规格型号'], data[i]['单位'], 
                                    data[i]['单价'], data[i]['产地'], data[i]['供应厂商'], data[i]['人材机类别'], 
-                                   data[i]['甲供标志'], data[i]['含量'], data[i]['合价'], data[i]['暂估价标志'], data[i]['主要材料标志'], data[i]['主材标志'], data[i]['设备标志']]);
+                                   data[i]['甲供标志'], data[i]['含量'], data[i]['合价'], data[i]['暂估价标志'], data[i]['主要材料标志'], data[i]['主材标志'], data[i]['设备标志'], data[i]['key']]);
                               }
      
                               let newData = updateDercj_djcs(selectedRowKeysTable.current[0], data2);

+ 1 - 1
src/Qingdan3.js

@@ -1171,7 +1171,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
                             
                             columns: [ //Define Table Columns
                                          {title:"ID", field:"ID", width:80, headerSort:false, },
-                                         {title:"人材机编码", field:"人材机编码", width:100, headerSort:false, formatter: sparklineFormatter2}, //never hide this column
+                                         {title:"人材机编码", field:"人材机编码", width:120, headerSort:false, formatter: sparklineFormatter2}, //never hide this column
                                          {title:"名称", field:"名称", width:120,headerSort:false,  formatter:"textarea", editor: "input", editable: editCheckRcj },
                                          {title:"规格型号", field:"规格型号", width:80, headerSort:false, editor: "input", editable: editCheckRcj },
                                          {title:"单位", field:"单位", width:80, headerSort:false, formatter:"textarea"}, //hide this column first

+ 76 - 31
src/Service.js

@@ -714,7 +714,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(mc), {
+        const response = await fetch(this.ip().concat( "/singledexilie/").concat(zhuanye.toString()).concat("/").concat(debh).concat("/").concat(encodeURIComponent(mc)), {
             method : "GET",
            
         });
@@ -1373,17 +1373,21 @@ async generateQingdanTuijian(name, bh, bt, bm) {
         let de = qd["_children"].filter(x=>x['key'] == row)[0];
         if (de.hasOwnProperty("rcjdg")) {//新数据
             for (let i = 1; i < de['rcjdg'].length; i++) {
-                de['rcjdg'][i][5] = data[i][5];//更新单价
-                /****ToDo 更新其他字段 */
-                if (de['rcjdg'][i][2] == data[i][2]) {//更新名称
+                for(let j = 1; j < data.length; j++) {
+                    if (data[j][16] == de['rcjdg'][i][16]) {
+                        de['rcjdg'][i][5] = data[j][5];//更新单价
+                        /****ToDo 更新其他字段 */
+                        if (de['rcjdg'][i][2] == data[j][2]) {//更新名称
                     
-                } else {
-                    huan = true;
+                        } else {
+                           huan = true;
+                        }
+                    }
                 }
             }
 
             if (de['fuzhuEnable'] && de.hasOwnProperty('fuzhu')) {//没强行改过含量
-                
+                de['dercj'] = copy(de['rcjdg']);
                 for(let j = 1; j < de['rcjdg'].length; j++) {
                     let origin = Number(de['rcjdg'][j][10]);
                     for(let i = 0; i < de['fuzhu'].length; i++) {
@@ -1407,20 +1411,29 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                         
 
                     }
-                    de['dercj'][j][2] = data[j][2];//名称
-                    de['dercj'][j][1] = data[j][1];//编号
+                    for (let k = 0; k < data.length; k++) {
+                        if (data[k][16] == de['dercj'][j][16]) {
+                            de['dercj'][j][2] = data[k][2];//名称
+                            de['dercj'][j][1] = data[k][1];//编号
+                        }
+                    }
+                    
                     de['dercj'][j][5] = de['rcjdg'][j][5];//单价
                     de['dercj'][j][10] =  origin;
                     de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
                 }
 
             } else if (de['fuzhuEnable'] && !de.hasOwnProperty('fuzhu')) {
+                de['dercj'] = copy(de['rcjdg']);
                 for(let j = 1; j < de['rcjdg'].length; j++) {
                     let origin = Number(de['rcjdg'][j][10]);
                     
-                    de['dercj'][j][2] = data[j][2];//名称
-                    de['dercj'][j][1] = data[j][1];//编号
-
+                    for (let k = 0; k < data.length; k++) {
+                        if (data[k][16] == de['dercj'][j][16]) {
+                            de['dercj'][j][2] = data[k][2];//名称
+                            de['dercj'][j][1] = data[k][1];//编号
+                        }
+                    }
                     de['dercj'][j][5] = de['rcjdg'][j][5];
                     de['dercj'][j][10] =  origin;
                     de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
@@ -1429,7 +1442,18 @@ async generateQingdanTuijian(name, bh, bt, bm) {
 
             else {
                 //强行改含量
-                de['dercj'] = copy(data);
+                de['dercj'] = copy(de['rcjdg']);
+                for(let j = 1; j < de['rcjdg'].length; j++) {
+                    for (let k = 0; k < data.length; k++) {
+                        if (data[k][16] == de['dercj'][j][16]) {
+                            de['dercj'][j][2] = data[k][2];//名称
+                            de['dercj'][j][1] = data[k][1];//编号
+                            de['dercj'][j][10] =  data[k][10];
+                            de['dercj'][j][11] = Number(de['dercj'][j][5]) * de['dercj'][j][10];
+
+                        }
+                    }
+                }
             }
         
 
@@ -1444,6 +1468,9 @@ async generateQingdanTuijian(name, bh, bt, bm) {
         for(let i = 1; i < data.length; i++) {
             data[i][11] = Number(data[i][10]) * Number(data[i][5]);
         }
+        if (data[0].length > 17)
+        data = data.filter(x=>x[17]!='true').map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16]]);
+              
         let sum = 0;
         let rgf_sum = 0;
         let jxf_sum = 0;
@@ -2037,7 +2064,7 @@ async generateQingdanTuijian(name, bh, bt, bm) {
         }
         let qd = this.cache_djcs.filter(x=>x['key'] == row)[0];
         let dercj = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地", 
-                "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]];
+                "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", 'key' ]];
         for(let i = 0; i < selected.length; i++) {
             let rgf = selected[i]['人工费'];
             let clf = selected[i]['材料费'];
@@ -2047,24 +2074,24 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                 let sum = Number(sl) * Number(rgf) * Number(res['azfytag'][1]) / Number(100);
                 dercj.push(['', res['rgde'][0]['CLBH'], res['rgde'][0]['CLMC'], '', '元', 
                     '1', '', '', '1', '', Number(sum) * Number(res['azfytag'][2]) / Number(100), Number(sum) * Number(res['azfytag'][2]) / Number(100),
-                    '', '', '', '' ]);
+                    '', '', '', '', '' ]);
                 dercj.push(['', res['clde'][0]['CLBH'], res['clde'][0]['CLMC'], '', '元', 
                     '1', '', '', '2', '', Number(sum) * Number(res['azfytag'][3]) / Number(100), Number(sum) * Number(res['azfytag'][3]) / Number(100),
-                    '', '', '', '' ]);
+                    '', '', '', '', '' ]);
                 dercj.push(['', res['jxde'][0]['jxbh'], res['jxde'][0]['jxmc'], '', '元', 
                     '1', '', '', '3', '', Number(sum) * Number(res['azfytag'][4]) / Number(100), Number(sum) * Number(res['azfytag'][4]) / Number(100),
-                    '', '', '', '' ]);
+                    '', '', '', '', '' ]);
             } else if (res['azfytag'][0] == '人工费+机械费') {
                 let sum = Number(sl) * (Number(jxf) + Number(rgf)) * Number(res['azfytag'][1]) / Number(100);
                 dercj.push(['', res['rgde'][0]['CLBH'], res['rgde'][0]['CLMC'], '', '元', 
                     '1', '', '', '1', '', Number(sum) * Number(res['azfytag'][2]) / Number(100), Number(sum) * Number(res['azfytag'][2]) / Number(100),
-                    '', '', '', '' ]);
+                    '', '', '', '', '' ]);
                 dercj.push(['', res['clde'][0]['CLBH'], res['clde'][0]['CLMC'], '', '元', 
                     '1', '', '', '2', '', Number(sum) * Number(res['azfytag'][3]) / Number(100), Number(sum) * Number(res['azfytag'][3]) / Number(100),
-                    '', '', '', '' ]);
+                    '', '', '', '', '' ]);
                 dercj.push(['', res['jxde'][0]['jxbh'], res['jxde'][0]['jxmc'], '', '元', 
                     '1', '', '', '3', '', Number(sum) * Number(res['azfytag'][4]) / Number(100), Number(sum) * Number(res['azfytag'][4]) / Number(100),
-                    '', '', '', '' ]);
+                    '', '', '', '', '' ]);
 
             }
         }
@@ -2096,7 +2123,7 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                     '综合人工工日': null,
                     '备注': null,
                     "dercj": dercj,
-                    'rcjdg': copy(dercj),
+                    'rcjdg': dercj.map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], 'false', [], []]),
                     'key' :   newKey,
                     "fuzhuEnable": false,
                     'yuban': [],
@@ -2125,11 +2152,11 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                 //console.log(res);
                 let qd = this.cache_djcs.filter(x=>x['key'] == row)[0];
                 let dercj = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地", 
-                "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]];
+                "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", "key", "hidden", "parent", "children" ]];
                 for(let i = 0; i < res['rgde'].length; i++) {
                     dercj.push(['', res['rgde'][i]['CLBH'], res['rgde'][i]['CLMC'], '', res['rgde'][i]['JLDW'], 
                     res['rgde'][i]['YSJG'], '', '', '1', '', res['rgde'][i]['gr'], res['rgde'][i]['gf'],
-                    '', '', '', '' ]);
+                    '', '', '', '', uuidv4(), "false", [], [] ]);
                 }
                 for(let i = 0; i < res['clde'].length; i++) {
                     let hit = false;
@@ -2144,23 +2171,41 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                     if (hit) {
                         dercj.push(['', res['clde'][i]['CLBH'], res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'], 
                     jg, '', '', '2', 'true', res['clde'][i]['SL'], res['clde'][i]['HJ'],
-                    '', '', '', '' ]);
+                    '', '', '', '', uuidv4(), 'false', [], [] ]);
                     } else {
+                        if (res['clde'][i].hasOwnProperty('children')) {
+                            let parent = uuidv4();
+                            let children = [];
+                            let child_data = res['clde'][i]['children'];
+                            for(let j = 0; j < child_data.length; j++) {
+                                let id = uuidv4();
+                                children.push(id);
+                                dercj.push(['', child_data[j]['CLBH'], child_data[j]['CLMC'], '', child_data[j]['JLDW'], 
+                    child_data[j]['YSJG'], '', '', '2', 'false', child_data[j]['SL'], child_data[j]['HJ'],
+                    '', '', '', '', id, 'false', [parent], [] ]);
+                            }
+                            dercj.push(['', res['clde'][i]['CLBH'], res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'], 
+                    res['clde'][i]['YSJG'], '', '', '2', 'false', res['clde'][i]['SL'], res['clde'][i]['HJ'],
+                    '', '', '', '', parent, 'true', [], children ]);
+
+                        } else {
                         dercj.push(['', res['clde'][i]['CLBH'], res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'], 
                     res['clde'][i]['YSJG'], '', '', '2', 'false', res['clde'][i]['SL'], res['clde'][i]['HJ'],
-                    '', '', '', '' ]);
+                    '', '', '', '', uuidv4(), 'false', [], [] ]);
+                        }
                     }
                     
                 }
                 for(let i = 0; i < res['jxde'].length; i++) {
                     dercj.push(['', res['jxde'][i]['jxbh'], res['jxde'][i]['jxmc'], '', res['jxde'][i]['DW'], 
                     res['jxde'][i]['tbdj'], '', '', '3', '', res['jxde'][i]['sl'], res['jxde'][i]['hj'],
-                    '', '', '', '' ]);
+                    '', '', '', '',uuidv4(), 'false', [], [] ]);
                 }
                 let newKey = uuidv4();
                 if (!qd.hasOwnProperty('_children')) {
                     qd["_children"] = [];
                 }
+                let newdercj = copy(dercj).filter(x=>x[17]!='true').map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16]]);
                 qd["_children"].push({
                     '操作': '',
                     '序号': null,
@@ -2183,14 +2228,14 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                     '暂估价': null,
                     '综合人工工日': null,
                     '备注': null,
-                    "dercj": dercj,
-                    'rcjdg': copy(dercj),
+                    "dercj": newdercj,
+                    'rcjdg': dercj,
                     'key' :   newKey,
                     "fuzhuEnable": true
     
                     
                 });
-                this.updateDercj_djcs_(newKey, dercj, []);
+                this.updateDercj_djcs_(newKey, newdercj, []);
                 let summarized = this.summarize_djcs(this.cache_djcs);
                 this.push_op_djcs(copy(summarized));
                 /////////////////
@@ -2388,8 +2433,8 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                 '综合人工工日': null,
                 '备注': null,
                 "dercj": [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地", 
-                "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ],
-                   ['', bh, mingcheng, '', danwei, '', '', '', '2', '', '1', '', '',  '', '', '' ]
+                "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", "key"  ],
+                   ['', bh, mingcheng, '', danwei, '', '', '', '2', '', '1', '', '',  '', '', '', "" ]
                       ],
                 'key' :   uuidv4(),
                 "fuzhuEnable": false