Просмотр исходного кода

fix(report): 修复流水表换行、缩放不正确的bug;抽离了计算式执行方法;更新了个别方法的ts类型

lishihao 4 лет назад
Родитель
Сommit
db86f0dd51

+ 1 - 3
report/src/core/formulasDataSetter.ts

@@ -84,7 +84,7 @@ const D = (fieldID: number, valIndex?: number, newValue?: any) => {
             if (!F(fieldID)) P(fieldID);
             if (DData[fieldID]) {
                 if (DData[fieldID].length >= valIndex) {
-                    if (!DData[fieldID][valIndex]) return null;
+                    if (!DData[fieldID][valIndex]&&DData[fieldID][valIndex]!==0) return '';
                     return DData[fieldID][valIndex];
                 } else {
                     console.log(`指标id:${fieldID},${valIndex}>${DData[fieldID].length},请检查`)
@@ -236,7 +236,6 @@ const removeFieldValue = (fieldID: number, valIdx: number) => {
     const fField: (IGroupField) = <IGroupField>F(fieldID);
     if (fField) {
         DData[fieldID].splice(valIdx, 1);
-        setFieldValue(fField, valIdx, DData[fieldID])
     } else {
         console.log(`指标${fieldID}的数据不支持removeFieldValue操作`);
     }
@@ -246,7 +245,6 @@ const insertFieldValue = (fieldID: number, valIdx: number, newValue: number) =>
     let field = <IGroupField>F(fieldID);
     if (field) {
         DData[fieldID].splice(valIdx, 0, newValue);
-        setFieldValue(field, valIdx, DData[fieldID])
     } else {
         console.log(`指标${fieldID}的数据不支持insertFieldValue操作`);
     }

+ 83 - 0
report/src/core/formulasFun.ts

@@ -0,0 +1,83 @@
+import JE from './jpc_rte';
+import formulasDataSetter from './formulasDataSetter';
+import stringUtil from '../public/stringUtil'
+import useReportDate from '../public/ReportDate'
+import { ICurrent_RPT, IRptTpl, IDataObj, Fields } from '../interface/basic'
+
+
+export const formulaExec = (runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURRENT_DATA: IDataObj, $CURRENT_RPT: ICurrent_RPT) => {
+    formulasDataSetter.setupData($CURRENT_RPT, $CURRENT_DATA);
+    const {
+        P,
+        F,
+        D,
+        L,
+        getCurrentPage,
+        getTotalPage,
+        setFieldValue,
+        setFieldValueArray,
+        removeFieldValue,
+        insertFieldValue,
+        setData,
+        getNumberArray,
+        copyPrecision,
+        copyFixedPrecisionNum,
+        copyProperty,
+        setDate,
+        DLength
+    } = formulasDataSetter;
+    const {
+        isEmptyString,
+        trim,
+        leftTrim,
+        rightTrim,
+        replaceAll,
+        comdify,
+        convertToCaptionNum,
+        convertStrToBoolean,
+        formatNumber,
+    } = stringUtil;
+    const $JE = JE;
+    const ReportDate = useReportDate;
+    for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
+        if ($CURRENT_RPT.formulas[execFmlIdx].run_type === runType) {
+            let expression = $CURRENT_RPT.formulas[execFmlIdx].expression;
+            if (expression) {
+                // 计算式集合,目前是放置打印信息的,用于配置属性的计算
+                let $ME = $CURRENT_RPT.formulas[execFmlIdx];
+                try {
+                    const { format } = $ME;
+                    console.log(expression);
+                    //临时处理
+                    if (expression.indexOf(`new Date(`)) {
+                        expression.replaceAll(`new Date(`, `new ReportDate(`)
+                    }
+                    eval(expression);
+                } catch (ex) {
+                    console.log(ex);
+                }
+            }
+        }
+    }
+    formulasDataSetter.resetData();
+}
+
+export const combinedGridFormula = ($RUN_TYPE: String, $TEXT: Fields, $TIMES: number, $CURRENT_RPT: ICurrent_RPT) => {
+    if ($CURRENT_RPT.formulas) {
+        for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
+            if ($CURRENT_RPT.formulas[execFmlIdx].run_type === $RUN_TYPE) {
+                let expression = $CURRENT_RPT.formulas[execFmlIdx].expression;
+                if (expression) {
+                    let $ME = $CURRENT_RPT.formulas[execFmlIdx];
+                    try {
+                        eval(expression);
+                    } catch (ex) {
+                        console.log(ex);
+                    }
+                }
+            }
+        }
+    }
+    formulasDataSetter.resetData();
+}
+export default {};

+ 0 - 1
report/src/core/helper/jpc_helper_common.ts

@@ -43,7 +43,6 @@ const JpcCommonHelper = {
     },
     getControl(controlName: string, dftControls: IControlSubCollection[], rptTpl?: IRptTpl) {
         let me = this, list: IControlSubCollection[][] = [];
-        if (rptTpl) debugger;
         //  list.push(rptTpl.control_collection);
         list.push(dftControls);
         return me.getResultByID(controlName, list);

+ 3 - 66
report/src/core/jpc_ex.ts

@@ -6,20 +6,17 @@ import JpcFlowTab from './jpc_flow_tab';
 import JpcBillTab from './jpc_bill_tab';
 import JpcCrossTab from './jpc_cross_tab';
 import JpcField from './jpc_field';
-
 import JpcParam from './jpc_param';
 import JpcFunc from './jpc_function';
 import JpcEvent from './jpc_event';
 import JpcData from './jpc_data';
 import JpcCommonHelper from './helper/jpc_helper_common';
-import useReportDate from '../public/ReportDate'
-
 import { IDefProperties, IFormula, IParams, ICurrent_RPT, ICustomizeCfg, ITargetFields, IRptTpl, IDataObj, IBands, IControlCollection, IStyles, BorderStyle, IFontSubCollection, IControlSubCollection, IRstPage, IMergeBand } from '../interface/basic'
 import { IFlowTabClass, IBillTabClass, ICostTabClass } from '../interface/classType';
 import {  IPagingOption } from '../interface/enum';
 import { Key } from 'readline';
-import formulasDataSetter from './formulasDataSetter'
-import stringUtil from '../public/stringUtil'
+import {formulaExec} from './formulasFun'
+
 
 const JV=$JV;
 class JpcExClass {
@@ -126,67 +123,7 @@ class JpcExClass {
 
     //根据步骤,对formulas中的计算式进行处理,并赋值到相应属性中
     executeFormulas(runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURRENT_DATA: IDataObj, $CURRENT_RPT: ICurrent_RPT) {
-        let execFmlMe = this;
-        formulasDataSetter.setupData($CURRENT_RPT, $CURRENT_DATA);
-        const {
-            P,
-            F,
-            D,
-            L,
-            getCurrentPage, 
-            getTotalPage,
-            setFieldValue,
-            setFieldValueArray,
-            removeFieldValue,
-            insertFieldValue,
-            setData,
-            getNumberArray,
-            copyPrecision,
-            copyFixedPrecisionNum,
-            copyProperty,
-            setDate,
-            DLength
-        } = formulasDataSetter;
-        const {
-            isEmptyString,
-            trim,
-            leftTrim,
-            rightTrim,
-            replaceAll,
-            comdify,
-            convertToCaptionNum,
-            convertStrToBoolean,
-            formatNumber,
-        } = stringUtil;
-        
-        for (let execFmlIdx = 0; execFmlIdx < execFmlMe.formulas.length; execFmlIdx++) {
-            if (execFmlMe.formulas[execFmlIdx].run_type === runType) {
-                let expression = execFmlMe.formulas[execFmlIdx].expression;
-                if (expression) {
-                    // 计算式集合,目前是放置打印信息的,用于配置属性的计算
-                    let $ME = execFmlMe.formulas[execFmlIdx];
-                    // console.log("current expression idx: " + execFmlIdx);
-                    // console.log(expression);
-                    try {
-                        const {format}=$ME;
-                        const $JE = JE;
-                        const ReportDate = useReportDate;
-                        console.log(expression);
-                        //临时处理
-                        if (expression.indexOf('Date()') > -1) {
-                            eval(expression.replace('Date()', 'ReportDate()'));
-                        } else {
-                            
-                            eval(expression);}
-                       
-
-                    } catch (ex) {
-                        console.log(ex);
-                    }
-                }
-            }
-        }
-        formulasDataSetter.resetData();
+        formulaExec(runType, $CURRENT_TEMPLATE, $CURRENT_DATA, $CURRENT_RPT)
     };
 
     outputAsPreviewPage(rptTpl: IRptTpl, defProperties: IDefProperties) {

+ 5 - 19
report/src/core/jpc_flow_tab.ts

@@ -35,7 +35,7 @@ import {
     IControlSubCollection,
 
 } from '../interface/basic'
-import { IControlProps, IPositionProps } from '../index';
+import { combinedGridFormula } from './formulasFun';
 
 class JpcFlowTabClass {
     isEx: boolean;
@@ -897,7 +897,7 @@ class JpcFlowTabClass {
                             let rstCellItem = rst[rst.length - 1];
                             let cbfPos = [];
                             cbfPos.push(rstCellItem.area.Left);
-                            cbfPos.push(rstCellItem.area.Left);
+                            cbfPos.push(rstCellItem.area.Right);
                             if (tab_field.combineType === 'vertical') {
                                 verticalCombinePos.push(cbfPos);
                             } else if (tab_field.combineType === 'horizon') {
@@ -1192,6 +1192,7 @@ class JpcFlowTabClass {
         }
         return rst;
     };
+    //每页的合计
     outputPageSum(rptTpl: IRptTpl, dataObj: IDataObj, page: number, segIdx: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) {
         let me = this, rst: any = [];
         // let FLOW_NODE_STR = me.isEx?'流水式表_拓展信息':'流水式表_信息';
@@ -1283,23 +1284,8 @@ class JpcFlowTabClass {
         // console.log(rst);
         return rst;
     };
-    //暂定
-    checkGrpTxtOutEvent($RUN_TYPE: String, $TEXT: any, $TIMES: any, $CURRENT_RPT: ICurrent_RPT) {
-        if ($CURRENT_RPT.formulas) {
-            for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
-                if ($CURRENT_RPT.formulas[execFmlIdx].run_type === $RUN_TYPE) {
-                    let expression = $CURRENT_RPT.formulas[execFmlIdx].expression;
-                    if (expression) {
-                        let $ME = $CURRENT_RPT.formulas[execFmlIdx];
-                        try {
-                            eval(expression);
-                        } catch (ex) {
-                            console.log(ex);
-                        }
-                    }
-                }
-            }
-        }
+    checkGrpTxtOutEvent($RUN_TYPE: string, $TEXT: Fields, $TIMES: number, $CURRENT_RPT: ICurrent_RPT) {
+        combinedGridFormula($RUN_TYPE, $TEXT, $TIMES, $CURRENT_RPT);
     };
     commonTabRestOutput(dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, band: IBandDetail, unitFactor: number, tab: ITab, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg | null) {
         let me = this, rst = [];

+ 2 - 2
report/src/interface/classType.ts

@@ -3,8 +3,8 @@ import { Fields, IBandDetail, IBands, ICell, IControlCollection, ICrossTab, ICur
 export interface IFlowTabClass {
     auto_height_fields_idx: [number, Fields][];
     auto_height_info: number[][];
-    checkCombineEvent: ($RUN_TYPE: String, $VER_COMB_ARRAY: number[][], $HOR_COMB_ARRAY: any[], $CURRENT_CELL_ITEMS: ICell[], $CURRENT_RPT: ICurrent_RPT) => void;
-    checkGrpTxtOutEvent: ($RUN_TYPE: String, $TEXT: any, $TIMES: any, $CURRENT_RPT: ICurrent_RPT) => void;
+    checkCombineEvent: ($RUN_TYPE: string, $VER_COMB_ARRAY: number[][], $HOR_COMB_ARRAY: any[], $CURRENT_CELL_ITEMS: ICell[], $CURRENT_RPT: ICurrent_RPT) => void;
+    checkGrpTxtOutEvent: ($RUN_TYPE: string, $TEXT: Fields, $TIMES: number, $CURRENT_RPT: ICurrent_RPT) => void;
     combinePageCells: (rstPageCells: ICell[], verticalCombinePos: number[][], horizonCombinePos: number[][]) => void;
     commonTabRestOutput: (dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, band: IBandDetail, unitFactor: number, tab: ITab, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg | null) => void;
     disp_fields_ex_idx: any[];