Przeglądaj źródła

fix(report): 三合一编译之后不能读取JV的处理

lishihao 2 lat temu
rodzic
commit
fb2926b87f
1 zmienionych plików z 202 dodań i 171 usunięć
  1. 202 171
      report/src/core/formulasFun.ts

+ 202 - 171
report/src/core/formulasFun.ts

@@ -1,186 +1,217 @@
 // 计算式执行(不同情况的方法会不同)
 import { JE } from './jpc_rte';
 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 * 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';
 
 /* 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 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);
-    const {
-        P,
-        F,
-        D,
-        L,
-        getCurrentPage,
-        getTotalPage,
-        setFieldValue,
-        setFieldValueArray,
-        removeFieldValue,
-        insertFieldValue,
-        setData,
-        getNumberArray,
-        copyPrecision,
-        copyFixedPrecisionNum,
-        copyProperty,
-        setDate,
-        DLength
-    } = formulasDataSetter;
-    const {
-        isEmptyString,
-        trim,
-        leftTrim,
-        rightTrim,
-        comdify,
-        convertToCaptionNum,
-        convertStrToBoolean,
-        formatNumber,
-    } = stringUtil;
+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,
+    comdify,
+    convertToCaptionNum,
+    convertStrToBoolean,
+    formatNumber,
+  } = stringUtil;
 
-    const $JV = JV;
-    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 {
-                    let newExpression = expression;
-                    const { format } = $ME;
-                    // console.log(expression);
-                    //临时处理
-                    if (expression.indexOf(`new Date(`)) {
-                        newExpression = replaceAll(/new Date\(/g, `new reportDate(`, expression)
-                    }
-                    eval(newExpression);
-                } catch (ex) {
-                    console.log(ex);
-                }
-            }
+  const $JV = JV;
+  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 {
+          let newExpression = expression;
+          const { format } = $ME;
+          // console.log(expression);
+          //临时处理
+          if (expression.includes(`new Date(`)) {
+            newExpression = replaceAll(
+              /new Date\(/g,
+              `new reportDate(`,
+              newExpression
+            );
+          }
+          // 三合一编译之后不能读取JV
+          if (expression.includes(`[JV.`)) {
+            newExpression = replaceAll(/\[JV\./g, `[$JV.`, newExpression);
+          }
+          // console.log(newExpression);
+          eval(newExpression);
+        } catch (ex) {
+          console.log(ex);
         }
+      }
     }
-    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
-    };
-}
+  }
+  formulasDataSetter.resetData();
+  return {
+    $JE,
+    $JV,
+    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;
 
-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) {
-                let expression = $CURRENT_RPT.formulas[execFmlIdx].expression;
-                if (expression) {
-                    let $ME = $CURRENT_RPT.formulas[execFmlIdx];
-                    try {
-                        eval(expression);
-                    } catch (ex) {
-                        console.log(ex);
-                    }
-                }
-            }
+  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 {
+            console.log(expression);
+            eval(expression);
+          } catch (ex) {
+            console.log(ex);
+          }
         }
+      }
     }
-    formulasDataSetter.resetData();
+  }
+  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 {};
+  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 {};