formulasFun.ts 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // 计算式执行(不同情况的方法会不同)
  2. import JE from './jpc_rte';
  3. import formulasDataSetter from './formulasDataSetter';
  4. import stringUtil from '../public/stringUtil'
  5. import useReportDate from '../public/ReportDate'
  6. import { ICurrent_RPT, IRptTpl, IDataObj, Fields } from '../interface/basic'
  7. import $JV from './jpc_value_define';
  8. export const formulaExec = (runType: string, $CURRENT_TEMPLATE: IRptTpl, $CURRENT_DATA: IDataObj, $CURRENT_RPT: ICurrent_RPT) => {
  9. formulasDataSetter.setupData($CURRENT_RPT, $CURRENT_DATA);
  10. const {
  11. P,
  12. F,
  13. D,
  14. L,
  15. getCurrentPage,
  16. getTotalPage,
  17. setFieldValue,
  18. setFieldValueArray,
  19. removeFieldValue,
  20. insertFieldValue,
  21. setData,
  22. getNumberArray,
  23. copyPrecision,
  24. copyFixedPrecisionNum,
  25. copyProperty,
  26. setDate,
  27. DLength
  28. } = formulasDataSetter;
  29. const {
  30. isEmptyString,
  31. trim,
  32. leftTrim,
  33. rightTrim,
  34. replaceAll,
  35. comdify,
  36. convertToCaptionNum,
  37. convertStrToBoolean,
  38. formatNumber,
  39. } = stringUtil;
  40. const $JE = JE;
  41. const JV= $JV;
  42. const ReportDate = useReportDate;
  43. for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
  44. if ($CURRENT_RPT.formulas[execFmlIdx].run_type === runType) {
  45. let expression = $CURRENT_RPT.formulas[execFmlIdx].expression;
  46. if (expression) {
  47. // 计算式集合,目前是放置打印信息的,用于配置属性的计算
  48. let $ME = $CURRENT_RPT.formulas[execFmlIdx];
  49. try {
  50. let newExpression=expression;
  51. const { format } = $ME;
  52. // console.log(expression);
  53. //临时处理
  54. if (expression.indexOf(`new Date(`)) {
  55. newExpression= expression.replaceAll(`new Date(`, `new ReportDate(`)
  56. }
  57. eval(newExpression);
  58. } catch (ex) {
  59. console.log(ex);
  60. }
  61. }
  62. }
  63. }
  64. formulasDataSetter.resetData();
  65. }
  66. export const combinedGridFormula = ($RUN_TYPE: String, $TEXT: Fields, $TIMES: number, $CURRENT_RPT: ICurrent_RPT) => {
  67. if ($CURRENT_RPT.formulas) {
  68. for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
  69. if ($CURRENT_RPT.formulas[execFmlIdx].run_type === $RUN_TYPE) {
  70. let expression = $CURRENT_RPT.formulas[execFmlIdx].expression;
  71. if (expression) {
  72. let $ME = $CURRENT_RPT.formulas[execFmlIdx];
  73. try {
  74. eval(expression);
  75. } catch (ex) {
  76. console.log(ex);
  77. }
  78. }
  79. }
  80. }
  81. }
  82. formulasDataSetter.resetData();
  83. }
  84. export default {};