Browse Source

commit and try custom editor

Xiaopeng Zhang 6 tháng trước cách đây
mục cha
commit
9af82361dd
6 tập tin đã thay đổi với 84 bổ sung28 xóa
  1. 4 0
      front/src/App2.js
  2. 3 1
      front/src/Qingdan.js
  3. 45 18
      front/src/Service.js
  4. 13 2
      front/src/utils.js
  5. 11 0
      main.py
  6. 8 7
      subdir/service.py

+ 4 - 0
front/src/App2.js

@@ -750,6 +750,10 @@ const MUI_X_PRODUCTS = [
                     <div style={{ height: 350 }}>
 
                     <DataGrid
+                      sx={{
+                        '& .MuiDataGrid-cell': {
+                          fontSize: '0.8rem', // Adjust font size for cells
+                        }}}
                        getRowHeight={() => 'auto'}
                       rows={pbXilie}
                       columns={columns2}

+ 3 - 1
front/src/Qingdan.js

@@ -649,7 +649,9 @@ export default function Qingdan({name, bh, bt, rgde, jxde, clde, beizhu, beizhuF
                              ref = {hotRcjRef}
                              afterChange={afterChange}
                              licenseKey="non-commercial-and-evaluation" // for non-commercial use only
-                           />
+                           >
+                              
+                         </HotTable>
 
                        </TabPanel>
                        <TabPanel sx={{p: 1}} value="2">

+ 45 - 18
front/src/Service.js

@@ -1,5 +1,5 @@
 import { getTableHeadUtilityClass } from '@mui/material';
-import {copy, danxiangdinge_index, renameDingE, extractFuzhu} from './utils';
+import {copy, danxiangdinge_index, renameDingE, extractFuzhu, match_target} from './utils';
 import { v4 as uuidv4 } from 'uuid';
 class Service{
     
@@ -985,36 +985,63 @@ async generateQingdanTuijian(name, bh, bt, bm) {
     updateDercj_(row, data, xuhao) {///change 一条定额 inplace, 汇总一条定额的rcj, xuhao is for rename
         console.log("data updated");
         //处理附注
+        let huan = false;//换
         let qd = this.cache.filter(x=>x["children"].filter(y=>y['key']==row).length > 0)[0];
         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]) {//更新名称
+                    
+                } else {
+                    huan = true;
+                }
             }
 
             if (de['fuzhuEnable'] && de.hasOwnProperty('fuzhu')) {
-                for(let i = 0; i < de['fuzhu'].length; i++) {
-                    let selected = de['fuzhu'][i];
-                    //更新底稿含量
-                    if (selected[2] == '含量') {
+                
+                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++) {
+                        let selected = de['fuzhu'][i];
                         let target = selected[0];
-                        for(let j = 1; j < de['rcjdg'].length; j++) {
-                            if (de['rcjdg'][j][1] == target) {
-                                let origin = de['rcjdg'][j][10];
-                                for(let k = 1; k < de['dercj'].length; k++) {
-                                    if (de['dercj'][k][1] == target) {
-                                        de['dercj'][k][5] = de['rcjdg'][j][5];
-                                        de['dercj'][k][10] =  selected[3];
-                                        de['dercj'][k][11] = Number(de['dercj'][k][5]) * Number(selected[3]);
-                                    }
-                                }
+                        
+                        
+                        if (match_target(de['rcjdg'][j][1], target)) {
+                            if (selected[2] == '系数') {
+                                origin = origin * Number(selected[3]);
+
+                            } else if (selected[2] == '含量') {
+                                origin = Number(selected[3]);
+                            } else if (selected['调整']) {
+                                origin = origin + Number(selected[3]);
+                            } else {
+                                throw new Error('无法处理的附注'.concat(selected[2]));
                             }
+                            
                         }
+                        
 
                     }
+                    de['dercj'][j][2] = data[j][2];//名称
+                    de['dercj'][j][5] = de['rcjdg'][j][5];
+                    de['dercj'][j][10] =  origin;
+                    de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
                 }
-            } else {
+
+            } else if (de['fuzhuEnable'] && !de.hasOwnProperty('fuzhu')) {
+                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][5] = de['rcjdg'][j][5];
+                    de['dercj'][j][10] =  origin;
+                    de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
+                }
+            }
+
+            else {
                 //强行改含量
                 de['dercj'] = copy(data);
             }
@@ -1022,7 +1049,7 @@ async generateQingdanTuijian(name, bh, bt, bm) {
 
             
             data = de['dercj'];
-        } else {
+        } else {////单项定额没有底稿
             //强行改含量
             de['dercj'] = copy(data);
             data = de['dercj'];
@@ -1065,7 +1092,7 @@ async generateQingdanTuijian(name, bh, bt, bm) {
                 qd["children"][i]['管理费'] = 0;
                 qd["children"][i]['利润'] = 0;
                 qd["children"][i]["dercj"] = copy(data);
-                qd["children"][i]['清单编码'] = renameDingE(oldname, xuhao);
+                qd["children"][i]['清单编码'] = renameDingE(oldname, xuhao, huan);
 
             }
         }

+ 13 - 2
front/src/utils.js

@@ -26,7 +26,7 @@ export const copy = (input) => {
 };
 
 
-export const renameDingE = (oldname, xuhao) => {
+export const renameDingE = (oldname, xuhao, huan) => {
     let index = oldname.indexOf('附注', 0);
     let raw = oldname;
     if (index == -1) {
@@ -38,7 +38,7 @@ export const renameDingE = (oldname, xuhao) => {
         raw = raw.concat("附注");
         raw = raw.concat(xuhao[i].toString());
     }
-    if (oldname.indexOf('换', 0) > -1) {
+    if (huan) {
         raw = raw.concat('换');
     }
     return raw;
@@ -71,4 +71,15 @@ export const extractFuzhu = (debm) => {
     }
 };
 
+export const match_target = (input ,target) => {
+    if (target == '000001') {//普世的人工费
+        if(input.startsWith("0001")) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+    return input == target;
+};
+
 

+ 11 - 0
main.py

@@ -403,6 +403,17 @@ async def read_dexilie(r: DingeXilieRequest):
 
 @app.post("/singledexilie/")
 async def read_singledexilie(r: SingleDingeXilieRequest):
+    if r.debh.startswith("D") :
+        return json.dumps({
+            "reverse": "None", 
+            "rgde": None,
+            "jxde": None,
+            "clde": None,
+            "actual_zhuanye": r.zhuanye,
+            "bz_selected": {"BZBH": {}},
+            "bz_selected2": {"BZBH": {}}
+        }, ensure_ascii=False)
+    
     result1, result2, rgde, jxde, clde, bz_selected, bz_selected2, actual_zhuanye= service.getSingleDeXilie(r.zhuanye, r.debh)
     print("get result ***************************************")
     if result1:

+ 8 - 7
subdir/service.py

@@ -216,15 +216,16 @@ def getDjcsQingdanrcj(root, bh, bt, bm):
 
 def getQingdanTuijian(bh, bt, bm):
     result = [["ID", "定额编号", "工程量名称", "工作内容" ]]
-    all = pd.read_csv("QingDanAllInOne.csv")
-    bm_ = int(bm) // 1000
-    hit = all[all["qdbh"] == str(bm_)]
-    for i in range(len(hit)):
-        result.append([hit.iloc[i]["index"].item(), hit.iloc[i]["debh"], hit.iloc[i]["gclmc"], hit.iloc[i]["work"]])
+    try:
+        all = pd.read_csv("QingDanAllInOne.csv")
+        bm_ = int(bm) // 1000
+        hit = all[all["qdbh"] == str(bm_)]
+        for i in range(len(hit)):
+            result.append([hit.iloc[i]["index"].item(), hit.iloc[i]["debh"], hit.iloc[i]["gclmc"], hit.iloc[i]["work"]])
     #result.append(["ming cheng", "jin e", "zan gu jia", "anquan wenming fei", "guifei"])
+    finally:
 
-
-    return result
+        return result
 
 def getQingdanrcj(root, bh, bt, bm):
     result = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",