Browse Source

fix(report): 报表计算式方法相关更新

lishihao 4 years atrás
parent
commit
507f0d2f48

+ 1 - 1
report/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@sc/report",
-  "version": "3.0.6",
+  "version": "3.0.7",
   "description": "Smartcost Report Relative Module",
   "main": "./dist/index.cjs.js",
   "module": "./dist/index.esm.js",

+ 101 - 8
report/src/core/formulasFun.ts

@@ -4,13 +4,13 @@ import formulasDataSetter from './formulasDataSetter';
 import * as stringUtil from '../public/stringUtil'
 import { ReportDate as useReportDate } from '../public/ReportDate'
 import { ICurrent_RPT, IRptTpl, IDataObj, Fields } from '../interface/basic'
-import { JV  } from './jpc_value_define';
+import { JV } from './jpc_value_define';
 
 /* eslint-disable import/prefer-default-export */
 export const replaceAll = (FindText: RegExp | string, RepText: string, str: string): string => {
     const regExp = new RegExp(FindText, 'g');
     return str.replace(regExp, RepText);
-  };
+};
 
 export const formulaExec = (runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURRENT_DATA: IDataObj, $CURRENT_RPT: ICurrent_RPT) => {
     formulasDataSetter.setupData($CURRENT_RPT, $CURRENT_DATA);
@@ -43,10 +43,10 @@ export const formulaExec = (runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURREN
         convertStrToBoolean,
         formatNumber,
     } = stringUtil;
-   
-    const $JV= JV;
+
+    const $JV = JV;
     const $JE = JE;
-    const ReportDate = useReportDate;
+    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;
@@ -54,12 +54,12 @@ export const formulaExec = (runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURREN
                 // 计算式集合,目前是放置打印信息的,用于配置属性的计算
                 let $ME = $CURRENT_RPT.formulas[execFmlIdx];
                 try {
-                    let newExpression=expression;
+                    let newExpression = expression;
                     const { format } = $ME;
                     // console.log(expression);
                     //临时处理
                     if (expression.indexOf(`new Date(`)) {
-                        newExpression= replaceAll(/new Date\(/g, `new ReportDate(`,expression)
+                        newExpression = replaceAll(/new Date\(/g, `new reportDate(`, expression)
                     }
                     eval(newExpression);
                 } catch (ex) {
@@ -69,10 +69,71 @@ export const formulaExec = (runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURREN
         }
     }
     formulasDataSetter.resetData();
-    return {$JE,$JV};
+    return {
+        $JE,
+        $JV,
+        P,
+        F,
+        D,
+        L,
+        getCurrentPage,
+        getTotalPage,
+        setFieldValue,
+        setFieldValueArray,
+        removeFieldValue,
+        insertFieldValue,
+        setData,
+        getNumberArray,
+        copyPrecision,
+        copyFixedPrecisionNum,
+        copyProperty,
+        setDate,
+        DLength,
+        isEmptyString,
+        trim,
+        leftTrim,
+        rightTrim,
+        comdify,
+        convertToCaptionNum,
+        convertStrToBoolean,
+        formatNumber, 
+        reportDate
+    };
 }
 
 export const combinedGridFormula = ($RUN_TYPE: String, $TEXT: Fields, $TIMES: number, $CURRENT_RPT: ICurrent_RPT) => {
+    const {
+        $JE,
+        $JV,
+        P,
+        F,
+        D,
+        L,
+        getCurrentPage,
+        getTotalPage,
+        setFieldValue,
+        setFieldValueArray,
+        removeFieldValue,
+        insertFieldValue,
+        setData,
+        getNumberArray,
+        copyPrecision,
+        copyFixedPrecisionNum,
+        copyProperty,
+        setDate,
+        DLength,
+        isEmptyString,
+        trim,
+        leftTrim,
+        rightTrim,
+        comdify,
+        convertToCaptionNum,
+        convertStrToBoolean,
+        formatNumber,
+        reportDate 
+    }=$CURRENT_RPT.formulasObject;
+    
+    
     if ($CURRENT_RPT.formulas) {
         for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
             if ($CURRENT_RPT.formulas[execFmlIdx].run_type === $RUN_TYPE) {
@@ -89,5 +150,37 @@ export const combinedGridFormula = ($RUN_TYPE: String, $TEXT: Fields, $TIMES: nu
         }
     }
     formulasDataSetter.resetData();
+
+    return {
+        $JE,
+        $JV,
+        P,
+        F,
+        D,
+        L,
+        getCurrentPage,
+        getTotalPage,
+        setFieldValue,
+        setFieldValueArray,
+        removeFieldValue,
+        insertFieldValue,
+        setData,
+        getNumberArray,
+        copyPrecision,
+        copyFixedPrecisionNum,
+        copyProperty,
+        setDate,
+        DLength,
+        isEmptyString,
+        trim,
+        leftTrim,
+        rightTrim,
+        comdify,
+        convertToCaptionNum,
+        convertStrToBoolean,
+        formatNumber, 
+        reportDate
+    };
+
 }
 export default {};

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

@@ -10,7 +10,7 @@ import { JpcFunc } from './jpc_function';
 import { JpcEvent } from './jpc_event';
 import { JpcData } from './jpc_data';
 import { JpcCommonHelper } from './helper/jpc_helper_common';
-import { IDefProperties, IFormula, IParams, ICurrent_RPT, ICustomizeCfg, ITargetFields, IRptTpl, IDataObj, IBands, IControlCollection, IStyles, BorderStyle, IFontSubCollection, IControlSubCollection, IRstPage, IMergeBand } from '../interface/basic'
+import { IDefProperties, IFormula, IParams, ICurrent_RPT, ICustomizeCfg, ITargetFields, IRptTpl, IDataObj, IBands, IControlCollection, IStyles, BorderStyle, IFontSubCollection, IControlSubCollection, IRstPage, IMergeBand, IFormulasObject } from '../interface/basic'
 import { IFlowTabClass, IBillTabClass, ICostTabClass } from '../interface/classType';
 import {  IPagingOption } from '../interface/enum';
 import { Key } from 'readline';
@@ -30,6 +30,7 @@ export class JpcExClass {
     params: IParams;
     formulas: IFormula[];
     events: any;
+    formulasObject :IFormulasObject={};
 
     constructor(rptTpl: IRptTpl) {
         if (rptTpl.流水式表_信息) {
@@ -121,7 +122,7 @@ export class JpcExClass {
 
     //根据步骤,对formulas中的计算式进行处理,并赋值到相应属性中
     executeFormulas(runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURRENT_DATA: IDataObj, $CURRENT_RPT: ICurrent_RPT) {
-        formulaExec(runType, $CURRENT_TEMPLATE, $CURRENT_DATA, $CURRENT_RPT)
+      return formulaExec(runType, $CURRENT_TEMPLATE, $CURRENT_DATA, $CURRENT_RPT);
     };
 
     outputAsPreviewPage(rptTpl: IRptTpl, defProperties: IDefProperties) {
@@ -200,7 +201,7 @@ export class JpcExClass {
             try {
                 for (let page = startPage; page <= endPage; page++) {
                     me.runTimePageData.currentPage = page;
-                    me.executeFormulas('before_output', rptTpl, dataObj, me);
+                   this.formulasObject = me.executeFormulas('before_output', rptTpl, dataObj, me);
                     // console.log('=======================');
                     rst.items.push(me.outputAsSimpleJSONPage(rptTpl, dataObj, bands, page, rst.control_collection, customizeCfg));
                 }

+ 62 - 0
report/src/core/jpc_flow_tab.ts

@@ -1143,6 +1143,38 @@ export class JpcFlowTabClass {
         }
     };
     checkCombineEvent($RUN_TYPE: String, $VER_COMB_ARRAY: number[][], $HOR_COMB_ARRAY: any[], $CURRENT_CELL_ITEMS: ICell[], $CURRENT_RPT: ICurrent_RPT) {
+        const {
+            $JE,
+            $JV,
+            P,
+            F,
+            D,
+            L,
+            getCurrentPage,
+            getTotalPage,
+            setFieldValue,
+            setFieldValueArray,
+            removeFieldValue,
+            insertFieldValue,
+            setData,
+            getNumberArray,
+            copyPrecision,
+            copyFixedPrecisionNum,
+            copyProperty,
+            setDate,
+            DLength,
+            isEmptyString,
+            trim,
+            leftTrim,
+            rightTrim,
+            comdify,
+            convertToCaptionNum,
+            convertStrToBoolean,
+            formatNumber,
+            reportDate 
+        }=$CURRENT_RPT.formulasObject;
+        
+        
         if ($CURRENT_RPT.formulas) {
             for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
                 if ($CURRENT_RPT.formulas[execFmlIdx].run_type === $RUN_TYPE) {
@@ -1158,6 +1190,36 @@ export class JpcFlowTabClass {
                 }
             }
         }
+        return {
+            $JE,
+            $JV,
+            P,
+            F,
+            D,
+            L,
+            getCurrentPage,
+            getTotalPage,
+            setFieldValue,
+            setFieldValueArray,
+            removeFieldValue,
+            insertFieldValue,
+            setData,
+            getNumberArray,
+            copyPrecision,
+            copyFixedPrecisionNum,
+            copyProperty,
+            setDate,
+            DLength,
+            isEmptyString,
+            trim,
+            leftTrim,
+            rightTrim,
+            comdify,
+            convertToCaptionNum,
+            convertStrToBoolean,
+            formatNumber,
+            reportDate 
+        }
     };
     outputColumn(rptTpl: IRptTpl, dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, unitFactor: number, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg | null) {
         let me = this, rst: any = [];

+ 7 - 0
report/src/interface/basic.ts

@@ -336,6 +336,7 @@ export interface ICurrent_RPT {
     billTab: any;
     crossTab: any;
     runTimePageData: { currentPage?: number };
+    formulasObject:Record<string,any>;
 }
 
 export interface ICurrent_DATA {
@@ -658,4 +659,10 @@ export interface IRptCustomizeCfg {
     rptConfig:IRptConfig,
     schemeData:IRptSchemeList[]
    
+}
+
+//方法的参数
+export interface IFormulasObject{
+    [key:string]:any
+   
 }