4.0.26 • Published 6 months ago

yyuap-formula v4.0.26

Weekly downloads
237
License
ISC
Repository
-
Last release
6 months ago

欢迎使用公式编辑器


1. 安装(后端注意升级最新版jar包)

第四版公式(优先使用) npm i -S yyuap-formula@4.0.26 (推荐使用)

第三版公式 npm i -S yyuap-formula@3.0.0-beta.9 (已废弃)

第二版公式 npm i -S yyuap-formula@2.0.90(不再维护)

第一版公式 npm i -S yyuap-formula@1.0.27 (已废弃)

在MDF中使用公式请参考 https://gfwiki.yyrd.com/pages/viewpage.action?pageId=20774831

2. 导入

react:

const Formula = React.lazy(() => import(/* formula */ 'yyuap-formula'))
// import Formula from 'yyuap-formula'
import 'yyuap-formula/dist/main.css'
<script>
  <Formula />
</script>

非react:

import Formula from 'yyuap-formula/lib/main.js'
import 'yyuap-formula/lib/main.css'
<script>
  <Formula />
</script>

CDN:

// 方式一
先引入react、tinper-next的CDN,再引入以下CDN
<script src="/iuap-apcom-coderule/ucf-wh/formula/without-react/main.js"></script>
<link rel="stylesheet" href="/iuap-apcom-coderule/ucf-wh/formula/without-react/main.css"></link>

webpack配置
externals: isEnvDevelopment ? {} : {
  'react': 'React',
  'react-dom': 'ReactDOM',
  '@tinper/next-ui': 'TinperNext',
  'yyuap-formula': 'Formula'
}

module.xml 配置依赖的前端服务名及tagName版本标识
<module name="" description="">
    <nginx_mode>ucf</nginx_mode>
    <ucf_engine>
        <dependencies>
            <dependency name="iuap-apcom-coderule-fe"  tag="release"  />
        </dependencies>
    </ucf_engine>
</module>

使用方式
const Formula = React.lazy(() => import(/* formula */ 'yyuap-formula'))
// import Formula from 'yyuap-formula'
<script>
  <Formula />; // Formula为全局对象 dom为制定dom节点
</script>

// 方式二 (支持非react环境)
<script src="/iuap-apcom-coderule/ucf-wh/formula/main.js"></script>
<link rel="stylesheet" href="/iuap-apcom-coderule/ucf-wh/formula/main.css"></link>

module.xml 配置依赖的前端服务名及tagName版本标识
<module name="" description="">
    <nginx_mode>ucf</nginx_mode>
    <ucf_engine>
        <dependencies>
            <dependency name="iuap-apcom-coderule-fe"  tag="release"  />
        </dependencies>
    </ucf_engine>
</module>

// 使用方式
<script>
    Formula.renderFormula(option, dom); // Formula为全局对象 dom为制定dom节点
</script>

// 第二版本引入(不再维护)
<script src="/iuap-apcom-coderule/ucf-wh/formula2/main.js"></script>
<link rel="stylesheet" href="/iuap-apcom-coderule/ucf-wh/formula2/main.css"></link>

// 以下(cdn.yonyoucloud.com)引入方式已废弃
<script src="https://cdn.yonyoucloud.com/SupportServices/formula4/main.js"></script>
<link rel="stylesheet" href="https://cdn.yonyoucloud.com/SupportServices/formula4/main.css"></link>

<script src="https://cdn.yonyoucloud.com/SupportServices/formula3/main.js"></script>
<link rel="stylesheet" href="https://cdn.yonyoucloud.com/SupportServices/formula3/main.css"></link>

<script src="https://cdn.yonyoucloud.com/SupportServices/formula2/main.js"></script>
<link rel="stylesheet" href="https://cdn.yonyoucloud.com/SupportServices/formula2/main.css"></link>

<script src="https://cdn.yonyoucloud.com/SupportServices/formula/main.js"></script>
<link rel="stylesheet" href="https://cdn.yonyoucloud.com/SupportServices/formula/main.css"></link>

全局绑定对象 Formula 内部能力对应为以下三个参数

  1. Formula.core -- 核心解析能力 见 chapter3
  2. Formula.createFormula --- 公式函数式调起 见示例 4
  3. Formula.renderFormula --- 公式非 react 或非 es 情况下 调用组件方式 见示例 5(同时给出重绘方案)

3. 使用公式核心解析能力

import { core } from 'yyuap-formula'
// 功能1 接受 表达式串(组) 生成 包含 公式数据结构
core.parse:formulaExpression => '公式数据结构'

// 功能2 异步请求 接受公式参数 与 表达式串(组) 生成 包含 公式、翻译公式、含数据的数据结构 的对象(对象数组))
core.ajaxToParse:(option:any, express:Array?<string>) => Array?<{formula,formuladisplay,formulaList}>
// 使用示例
async()=>{
  let result = await core.ajaxToParse({serviceName:'iuap-ms-demo'},['code3+123','#{123}$+#{"常量字符串"}$']);
  console.log(result)
}

//功能3 前端校验 参数为confirm、onChange参数中获得的 formulaList 或 对公式表达式做解析(功能1)
core.validate : formulaList => [] // 返回错误说明列表

//功能4 异步校验 参数为confirm、onChange参数中获得的 formulaList 与 expressList
core.validateAsync : (formulaList:any,expressList:any,option?:any) => [errFlag,info] // 返回错误说明列表

//功能5 获取公式信息 参数为confirm、onChange参数中获得的 formulaList 与 expressList
core.getFormulaInfo : (formulaList:any,expressList:any,option?:any) => result// 返回结果
// 使用示例
async()=>{
  let result1 = await validateAsync(formulaList,expressList,{serviceName:''})
  let result2 = await getFormulaInfo(formulaList,expressList,{serviceName:''})
}

//功能6 公式计算 参数1:confirm、onChange参数中获得的 formulaList 或 core.parse的返回值 参数2: paramList 见项目配置项
core.calculate = calculate(formulaList,paramList)
/** 使用说明
* 计算出错会抛出error 需要catch
* 计算成功返回计算值(若带未知函数,则会包含未知函数)
* */

4. 使用代码配置项目

必需(版本)配置说明类型默认可选值
locale(新)语种信息string'zh_CN''zh_CN','en_US','zh_TW'
serviceName(新)应用名(上下文路径,可带域名)string''
√4.0.8useBusiness(新)是否使用业务对象Booleanfalsetrue,false
√2.67multiBillNo是否多单据Booleanfalsetrue,false
2.0disableDrag(新)禁用拖拽(防止拖拽事件冲突)booleanfalsetrue,false
iMaxLength(新)确认时最大值控制numberundefined
disabled禁用booleanfalsetrue,false
2.4inputOpen点击输入框是否弹打开弹窗booleanfalsetrue,false
4.0.10showClear是否显示清空按钮booleanfalsetrue,false
4.0.10onClearinput框清空回调func()=>{}
autoFocusinput框自动获取焦点booleanfalsetrue,false
onFocus\onBlur(新增)input框焦点事件function(e)=>{}
2.25className, mask等支持 modal 参数与 class 名anyundefinedany
useFC是否以函数式调起弹窗booleanfalsetrue,false
2.0uiMode(新)是否以 UI 组件形式提供(min 提供较小的面板)Boolean/stringfalsefalse,true,"min"
4.0.1containerName赋值目标String''
leftPannel左侧函数项boolean(false隐藏)或array(见下行)true
自定义左侧面板项常用函数、数学、字符串、时间、系统、聚合、自定义函数 ''common,'math','string','time','system','aggregate','custom'
2.4leftDefaultOpenKey左侧函数默认展开项string'''math','string','time','system','aggregate','custom'
funcFilter(新增)左侧函数过滤(字符串数组 | 正则对象 | 正则字符串)[]
rightPannel右侧变量项boolean(false隐藏)或array(见下行)true
自定义右侧面板项上下文、元数据、自定义变量、常量、集成对象 'context','meta','userVar','userConst','extend'
2.4rightDefaultOpenKey右侧变量默认下拉选项string'context''context','meta','userVar','userConst'
4.0.1activeKey默认展示函数还是变量StringleftPannelleftPannel/rightPannel
2.35showMetaCode是否显示属性编码Booleanfalsetrue,false
4.0.15notLimitDrillDown是否不限制穿透Booleanfalsetrue,false
requestParams(新)提供请求时参数(注意dominkey,serviceCode字段)object{func:{a:1,domainKey:'aaa'},meta:{ss:2,domainKey:'aaa'},context:{domainKey:'aaa'},search:{domainKey:'bbb',serviceCode:''}}
2.27CompatibleMode是否对初始化表达式做格式兼容booleanfalsetrue,false
2.4beforeOpenHook打开公式弹窗前 hook 函数function()=>Boolean 或 Promise
onChange(新)编辑区实时数据变化回调function(formulaExpression,formulaList,expressList) =>{}
confirm确认回调function(formula,formulaList,expressList)=>{}
formula公式表达式string''
formuladisplay公式显示式string''
2.30customShowFn自定义变量显示值func ({name,code,parentCode,parentName})=>({flag,display})
autoCalc自动计算booleanfalse
paramList自定计算时变量值(需autoCalc) 支持提供前端函数object{变量code:变量value}
onTextFocus\onTextBlur(新增)编辑区焦点事件function(e)=>{}
2.7allowEmpty校验支持空值Booleanfalsetrue,false
2.3verifyBeforeConfirm保存前校验Booleanfalsetrue,false
beforeVerify(新增)校验前调整参数function(url,params)=>({ url,params,method:'GET' })
4.0.15fieldid自动化测试字段string'formula'
4.0.16showFullName显示全路径中文Booleanfalsetrue,false
4.0.18token/xChangeInfoheader增加字段string''
4.0.19enhanceValidate是否强校验Booleantruetrue,false
4.0.20customIsCanInsert是否支持插入function(item: any, level: number) => {return true}
4.0.22customData指定业务对象下插入自定义数据arraycustomData
示例[{parentCode: 'PurchaseOrder.operator',parentName: '采购订单主表.采购员',data: [{"name": "id","title": "主键","typeClass": "DataType","fullName": "","entityId": null,"dataType": "String","refCode": null,"properties": []}],mode: 2}]

必需(版本)配置说明类型默认可选值
2.2refEnv参照对应环境地址(不传感知 url)string[]'test','daily','pre','product'
2.0contextData上下文变量Array[]
contextData 说明 1支持树结构节点需 children 属性 节点可增加 disabld 属性Array
contextData 说明 2支持参照上下文变量中增加 refCode 属性stringrefCode 为参照 refCode
contextData 说明 3支持枚举上下文变量中增加 enumvalues 属性Array
枚举属性支持数字与字符串enumvalues:{"id":1,"name":"数字"},{"id":"str","name":"字符串"}Array
contextData 说明 4元数据穿透上下文变量中增加 metaUri 属性string元数据对应的 uri
元数据说明 1元数据级联上下文变量中增加 metaCascade 属性number1:开启元数据级联,0:关闭
元数据说明 2元数据自定义处理上下文变量中增加 handSelfItem 属性boolean
2.36extend自定义模块Object/Array{title:'t',component:(add,get) => null}
  • 上下文变量类型说明(1.0.8 特性)(2.0.6 支持 ui 元数据)
类型配置说明
变量{type:'variable',name: "编码",code: "code" ,paramType: "DOUBLE" }type 不传递默认变量
常量{type:'const',code: "code",name: "名字", value: 1}value 为 Number 或 String
函数(待定支持){ type:"func",functionName: "func", methodName: "func(1,2,3,,)" }支持参数传递
字符串{type:'string',code:"\\"specific str\\"" }传入时需用\对引号转义
保留字{type:'reserved',code:"true" }全量'true','false','undefined','null'
说明paramType 取值为全量中的一个全量 INT, INTEGER, CHAR, VARCHAR,DOUBLE, FLOAT;
ui 元数据(2.0.12 更新){"mode":1,"domain"?:String,"billtypeid"?:String,"metaCascade"?:boolean,"data": Array/Object }mode 需要设为 1 domain 设为对应领域 billtypeid 为单据类型 metaCascade 是否开启元数据级联(默认关闭) data 为 UI 元数据 需要设置在 context 第一级
ui 样板数据 http://cdn.yonyoucloud.com/SupportServices/formula2/example.json
业务对象元数据(2.1.0 更新){"mode":2,"businessCode"?:String,"scope"?:String,"scopeList": Array }mode 需要设为 2 businessCode 业务对象编码 scope 范围(exclude 排除,include 包含,all 所有,默认是all) scopeList 排除或包含的对象数组
{mode: 2,code: 'case1',name: 'c1测试',disabled: true,children: [{code: 'case2',name: 'c2测试',children: { code: 'case21', name: 'c2-1测试' }}}mode 需要设为 2, 可扩展自定义的业务对象
  • confirm 以及 onChange 回掉参数调整(1.0.18) formulaExpression,formulaList,expressList
参数类型说明补充
formulaExpressionstring公式值常用 格式表达式
formulaListarray公式解析数据结构做前端解析与计算可用
expressListobject公式各类显示值(原始值,对象化值,自定义值)校验与获取中文串 对象属性见示例 iParams 接口

5. 使用代码示例

interface iParams {
  formulaExpression:string, // 公式值 *
  formulaExpressionDisplay:string, // 公式编辑区手工输入值
  formulaExpressionShow:string, //  公式中文值(展示值) *
  paramType:Array<any>, // 参数类型数组
}

//1:常规公式
function FormulaWrap(props) {
  const [formulaExpression, setFormulaExpression] = useState('')
  const [formulaExpressionDisplay, setFormulaExpressionDisplay] = useState('')
  return (
    <Formula
      leftPannel={['math', 'string', 'custom']} // 自定义左侧面板 可不传
      rightPannel={['context', 'meta', 'userVar', 'userConst']} // 自定义右侧面板 可不传
      requestParams={{
        func: { a: 1 },
        meta: { ss: 2 },
        context: { domainKey: 'aaa' },
        search: { domainKey: 'aaa' }
      }} //请求参数 可不传
      disabled // 是否禁用
      showMetaCode={true} // 是否显示属性编码
      confirm={(formulaExpression: any, formulaList: any, expressList: iParams) => {
        setFormulaExpression(formulaExpression);
        setFormulaExpressionDisplay(expressList.formulaExpressionShow);
      }}
      formula={formulaExpression || ''}
      formuladisplay={formulaExpressionDisplay || ''}
      contextData={[{ code: 'case1', name: 'c1测试', paramType: 'VARCHAR' }]} // 上下文
      paramList={{
        case1: case1, case2: case2, case3: case3, hehe: (a: any, b: any) => {
          return a + 2 * b
        }
      }}
    ></Formula>
  )
}

//1.2:常规公式 支持树、参照、枚举
function FormulaWrap(props) {
  const [formulaExpression, setFormulaExpression] = useState('')
  const [formulaExpressionDisplay, setFormulaExpressionDisplay] = useState('')
  return (
    <Formula
      confirm={(formulaExpression: any, formulaList: any, expressList: iParams) => {
        setFormulaExpression(formulaExpression);
        setFormulaExpressionDisplay(expressList.formulaExpressionShow); 
      }}
      formula={formulaExpression || ''}
      formuladisplay={formulaExpressionDisplay || ''}
      contextData={[
        { disabled: true, code: 'ref1', name: '组织', paramType: 'STRING', refCode: 'ucf-org-center.bd_adminorgtreeviewref' },
        { code: 'ref2', name: '库存', paramType: 'STRING', refCode: 'ustock.aa_warehouse' },
        { code: 'enum1', name: '枚举', paramType: 'STRING', enumvalues: [{ "id": 1, "name": "数字1" }, { "id": "end", "name": "字符串1" },] },
        { code: 'case1', name: '1树测试', paramType: 'STRING', children: [{ code: 'case2', name: '1-1测试', paramType: 'STRING', children: [{ code: 'case3', name: '1-1-1测试', paramType: 'STRING' }] }
      ]} // 上下文 
    ></Formula>
  )
}

//2:公式UI组件形式 
function FormulaWrap(props) {
  const [formulaExpression, setFormulaExpression] = useState('')
  const [formulaExpressionDisplay, setFormulaExpressionDisplay] = useState('')
  return (
    <Formula
      locale={"zh_CN"}
      uiMode
      onChange={(formulaExpression: any, formulaList: any, expressList: iParams) => {
        callBackFn(formulaExpression); // formulaExpression当前解析公式
      }}
      leftPannel={['math', 'string', 'custom']} // 自定义左侧面板 可不传
      rightPannel={['context', 'meta', 'userVar', 'userConst']}
      requestParams={{ func: { key1: 'filterParam' }, meta: { mkey: new Date.now() } }} //请求参数 可不传
      disabled // 是否禁用
      formula={formulaExpression || ''} // ui形式下作为初始值
      contextData={[{ code: 'case1', name: 'c1测试', paramType: 'VARCHAR' }]} // 上下文 
    ></Formula>
  )
}

//3:自动计算公式
function FormulaWrap(props) {
  const [case1, setCase1] = useState(2);
  const [formulaExpression, setFormulaExpression] = useState('')
  const [formulaExpressionDisplay, setFormulaExpressionDisplay] = useState('')
  return (
    <>
      <input value={case1} onChange={e => setCase1(e.target.value)}/>
      <Formula 
        locale={"zh_CN"}
        autoCalc //基于paramList的前端自动计算
        formula={formulaExpression}
        formuladisplay={formulaExpressionDisplay || ''}
        confirm={(formulaExpression: any, formulaList: any, expressList: iParams, value: any) => {
          setFormulaExpression(formulaExpression);
          setFormulaExpressionDisplay(formulaExpressionDisplay);
        }}
        contextData={[{ code: 'case1', name: 'c1测试', paramType: 'VARCHAR' },]}
        paramList={{ case1: case1, hehe: (a, b) => a + 2 * b }}
      />
    </>
  )
}

//4:函数式调用(与input解绑 )
import { createFormula } from 'yyuap-formula'

function FormulaWithoutInput(props) { // option与1、2使用方法一致 将props转为对象即可
  const [formulaExpression, setFormulaExpression] = useState('')
  let option = {
    confirm: (formulaExpression: any, formulaList: any, expressList: iParams,) => {
      setFormulaExpression(formulaExpression);
      setFormulaExpression(expressList.formulaExpressionShow);
    },
    formula: formulaExpression || '',
    formuladisplay: formulaExpression || '',
    contextData: [{ code: 'case1', name: 'c1测试', paramType: 'VARCHAR' }] // 上下文
  }
  return (
    <button onClick={() => createFormula(option)}></button>
  )
}

//5:非react环境函数式调用()
// 1. es module
import { renderFormula } from 'yyuap-formula/lib/main.js'
import 'yyuap-formula/lib/main.css'

function FormulaWithoutInput(props) { // option与1、2使用方法一致 将props转为对象即可
  let dom = document.getElementById('formuala-dom')
  renderFormula(option, dom);
}

// 2. script 引入 全局对象Formula
<script src="/iuap-apcom-coderule/ucf-wh/formula/main.js"></script>
<link rel="stylesheet" href="/iuap-apcom-coderule/ucf-wh/formula/main.css"></link>
let dom = document.getElementById('formuala-dom')
Formula.renderFormula(option, dom);

/**
 * 如何重绘
 * 1.移除在dom节点绑定组件: dom._reactRootContainer.unmount()
 * 2.重新在dom节点绑定组件: Formula.renderFormula(option,dom)
 */

6. 版本说明

  • 1.0.0 公式计算前端发布,提供基础公式服务
  • 1.0.1 修改 less-loader 对产出 css 的解析错误,提供前端计算能力
  • 1.0.2 修改 无函数列表正则解析 bug,无数据前端报错处理
  • 1.0.3 对全局点击事件的修改 左右面板控制项 serviceName 选项 操作符面板样式
  • 1.0.4 修复部分已知错误 增加自定义常量 区分多项常量 面板自定义控制
  • 1.0.5 增加系统函数 解决 rightPannel 默认问题 解决 umd 打包 this 变量问题(issue) 解决 sideEffects 副作用
  • 1.0.6 提供函数调用方法(不绑定 input) 提供请求参数 提供基础组件属性传入 引入本地字体文件
  • 1.0.7 解决参数未传导致的 bug 调整操作符 完善输入部分历史记录 函数公式值取为 method 提供函数参数带入 提供输入框事件 增加变量过滤
  • 1.0.8 增加属性对树格式数据的支持 兼容多属性类型
  • 1.0.9 公式解析算法调整 公式 ui 组件提供
  • 1.0.10 增加 serviceName 扩展能力 增加保留字 修复内部解析 bug ui 模式下样式修改
  • 1.0.11 修改 ssr 下 window 的问题
  • 1.0.12 分离公式算法 增加公式 core 对象(包含公式能力)
  • 1.0.13 限制解决 Blur 的触发时机 在 uiMode 下的请求能力支撑问题
  • 1.0.14 解决常量可能发生的显示 bug
  • 1.0.15 属性列树节点控制能否编辑 增加多语 增加前端校验功能 增加吸附算法 解析算法调整拆分逻辑 增加非 react 环境下的引入
  • 1.0.16 对非 react 环境下 增加公式组件的渲染 dom 矫正 1.0.5 文档部分内容
  • 1.0.17 解决&&等特殊字符正则 bug
  • 1.0.18 统一调整回掉参数 修复多语全局变量 bug 属性列多类型 bug 异步校验
  • 1.0.19 示例下 paramType 调整 公式前端异步校验报错 catch 修复 focus 下的公式修改逻辑
  • 1.0.20 兼容样式调整 确认前简单前端校验 增加 disableDrag 属性
  • 1.0.21 增加聚合函数 对未知函数参数调整控制 增加 onChange 异步回掉能力(解决拖拽报错问题) 输入框回显 bug 调整 提供非 react 引入下的重绘解决方法 光标定位问题 函数参数前端校验 bug 函数携带参数 bug 修复
  • 1.0.22 修改前端计算 扩展对外界函数的支持 抽取前端计算能力 增加 iMaxLength 增加校验前扩展属性
  • 1.0.23 前端过滤 bug 修复 初始化兼容营销云格式 函数参数校验
  • 1.0.24 增加对中文符号的校验 修复对 E、PI 函数的校验 增加前端函数过滤项 uiMode 下的属性动态更新(需对象深拷贝)
  • 1.0.25 多数据量时滚动加载 支持树过滤 支持字符串内空格
  • 1.0.26 扩展自定义校验(支持 get 请求) 文字折行问题
  • 1.0.27 完善折行样式 支持中文括号 解决点击事件覆盖

  • 2.0.0 更新公式整体样式与交互 提供参照与枚举接入
  • 2.0.1 调整公式懒加载请求 cdn 地址 bug 解决全局 thie 问题、服务端渲染 移除 package.json 的内部依赖包
  • 2.0.2 光标定位 cdn 适配 protocal 解决参照初始化问题 参照环境地址匹配
  • 2.0.3 属性支持元数据 uri 加载 支持保存前校验 uiMode 下样式微调
  • 2.0.4 去除对外界元素 click 的阻塞 拉取数据重绘缺陷 调整元数据加载交互 扩展配置:1.左右面板默认展开 2.点 input 展开 3.弹窗前 hook
  • 2.0.5 支持聚合函数内部子公式 函数错误信息展示
  • 2.0.6 增加对 UI 元数据的支持
  • 2.0.7 校验时支持空值校验 函数参数分隔时忽略字符串内分隔符
  • 2.0.8 扩展空值校验 集成基础组件样式 重制光标定位逻辑
  • 2.0.9 修复组件 key 变化时光标定位对象释放与重生成的冲突 不覆盖 mdf 框架全局变量
  • 2.0.10 解决光标失焦导致参照选择失效的问题
  • 2.0.11 优化函数定位正则(解除与常量冲突) 修复枚举重复问题 完善 MDF 框架全局变量覆盖问题 解除对中文括号的校验 扩展定位对象,控制文本修改定位
  • 2.0.12 增加对元数据领域的适配 去除 MDF 全局变量污染 增加对参照数据常量类型的判断
  • 2.0.13 增加元数据级联配置 调整折行样式 放开子实体限制 ui 元数据下查询元数据
  • 2.0.14 输入框重绘控制 主子表选中逻辑与选用字段调整
  • 2.0.15 ui 元数据下参照支持根据 billtypeid 过滤 聚合函数可添加函数(对字符串参数暂未支持)
  • 2.0.16 手工输入位置记忆 字符串优化:去除对常量函数等误检测,支持内嵌字符串(单引号·推荐、转义双引号·仅前端支持) ui 元数据增加级联配置项(默认关闭)
  • 2.0.17 光标定位受原型链属性影响 增加 ie11 的 polyfill 并解决零宽断言不兼容问题
  • 2.0.18 调整 ui 元数据无主表信息时树的构建,同时增加对孙级的支持
  • 2.0.19 完善字符串检测正则 过滤非法函数 元数据添加交互调整、添加类型类型改为字符串
  • 2.0.20 补全多语资源 修改左右标题样式
  • 2.0.21 控制弹窗点击时 blur 事件的触发
  • 2.0.22 跨域请求携带 cookie
  • 2.0.23 调整部分类名(新旧样式冲突) 放开函数参数控制 增加专属化包
  • 2.0.24 调整页面缩放对部分样式的影响
  • 2.0.25 增加 modal 参数与类名
  • 2.0.26 简单添加三目解析与左侧函数提示优化
  • 2.0.27 增加格式兼容配置项 CompatibleMode,不配置的话默认为 false
  • 2.0.28 ui 元数据 增加枚举值的处理 增加自定义项字段处理配置
  • 2.0.29 beforeOpenHook 增加返回参数
  • 2.0.30 ie11 添加兼容性 增加 customShowFn(自定义显示值)属性
  • 2.0.31 解决参照兼容导致重复问题 调整枚举显示
  • 2.0.32 Icon 替换 取消可能的 bfc 搜索样式
  • 2.0.33 增加个性化板块
  • 2.0.34 样式调整、属性传递 说明: 元数据查询参数放在 requestParams={{func:{a:1},meta:{ss:2},context:{domain:'33333'}}}
  • 2.0.35 显示属性编码(默认否) 说明: 属性默认只显示名称,增加showMetaCode={true},则显示属性名称+编码
  • 2.0.36 校验请求增加search参数&扩展支持获取上下文paramList 说明: 1.校验请求search参数可添加domainKey;2.扩展通过get()方法返回上下文参数
  • 2.0.37 展示值修改,支持多行公式、元数据搜索&排序、函数按描述排序 功能说明: 1.YWZT-20114 支持多行公式 { * , ****} 大括号开始和结束,多个公式用逗号分隔 2.YWZT-21004 支持对元数据按照对象进行搜索、排序 3.YWZT-21002 函数搜索支持按照函数描述内容搜 4.YWZT-20228 公式组件formulaExpressionShow(展示值)修改 5.LYJM-10361 公式编辑器界面距离顶部距离修改
  • 2.0.38 属性&元数据名称修改,多行公式bug修复 功能说明: 1.YWZT-23442 公式组件右侧属性区,属性改名为单据字段,元数据改名为档案 2.YWZT-23437 formula/metadataByUri请求增加 domainKey 3.多行公式单据值中包{},解析错误修复
  • 2.0.39 多行公式支持以英文逗号回车和解析;增加档案穿透标记;单据改名为单据字段 功能说明: 1.多行公式支持以逗号回车换行解析,去掉变量前后的[] 2.YWZT-24472 公式组件单据改名为单据字段 3.YWZT-23437 formula/metadataByUri请求增加 domainKey
  • 2.0.40 校验增加 getFormulaInfo 方法,修复中文公式解析问题
  • 2.0.41 修复 getValue,sum 函数解析 bug,调整档案搜索逻辑
  • 2.0.42 调整档案搜索逻辑,过滤掉未匹配项
  • 2.0.43 支持右侧单据字段、档案、自定义变量&常量一级目录全量搜索
  • 2.0.44 修复右侧搜索点击当前字段无法添加到 textarea 区域
  • 2.0.45 编辑态中文公式显示 methodName,修复保存无法校验问题
  • 2.0.46 单据字段有子表时,预览区和显示值增加主表字段名称显示
  • 2.0.47 取消全局搜索,调整为单据字段搜索,档案四级以内字段可搜索 功能说明: 1.多行公式代码优化,bug 修复 2.表达式存在中文符号,不再请求后端校验 3.YWZT-28900 中文公式无法解析问题修复
  • 2.0.48 档案四级以内字段可搜索 bug 修复
  • 2.0.49 修复档案搜索 bug 和字符串单引号中间无法加空格问题
  • 2.0.50 修复 bug 嵌套公式引号没办法通过校验
  • 2.0.51 修复 mdf 框架 es-check 报错问题
  • 2.0.52 修复 mdf 框架 es-check 报错问题
  • 2.0.53 修复嵌套公式引号没办法通过校验
  • 2.0.54 去掉聚合公式变量中括号和元数据穿透获取不到 domainKey 的值 功能说明: 1.去掉聚合公式变量中括号 2.修复元数据穿透(metadataByUri)获取不到domainKey的值问题
  • 2.0.55 针对 mdf 元数据穿透更新 requestParams 参数
  • 2.0.56 校验结果优化,新校验结果覆盖上一次校验结果
  • 2.0.57 getFormulaInfo 方法,返回错误信息
  • 2.0.58 公式参照请求兼容统一域名和专属化环境域名
  • 2.0.59 fix:Cannot have two HTML5 backends at the same time 错误
  • 2.0.60 恢复打包,转移旧版参照js和css资源
  • 2.0.61 修复打包 DndProvider TS 语法不识别问题
  • 2.0.62 修复打包 es-build 语法检查不通过 && mdf 公式渲染异常 超长公式回显慢
  • 2.0.63 恢复2.0.49 版本的打包方式,修复函数描述不显示问题
  • 2.0.64 fix: Mac 本地产出打包,修复参照打开报错
  • 2.0.65 serviceName 兼容处理
  • 2.0.66 增加 getFormulaInfo 异常提示语
  • 2.0.67 增加 multiBillNo 参数,支持多单据
  • 2.0.68 修复校验时 customExpress 参数错误
  • 2.0.69 过滤自定义变量无 variables 情况
  • 2.0.70 bee-* 组件升级为 tinpernext
  • 2.0.71 不打包 tinpernext 组件
  • 2.0.72 修复 tinpernext 排除报错
  • 2.0.73 升级 tinpernext 4.1.8 修改 modal 样式
  • 2.0.74 升级 tinpernext 4.1.8 修改 modal 样式
  • 2.0.75 升级 tinpernext 4.1.8 修改 modal 样式
  • 2.0.76 覆盖 tinpernext 样式修复 tooltip 样式
  • 2.0.77 升级 tinpernext 4.1.9 修复函数 menu 不显示问题
  • 2.0.78 修复modal onHide 改为 onCancel
  • 2.0.79 兼容档案meta_name为null、函数描述长度限制、参照资源路径修改
  • 2.0.80 统一 node 参照适配
  • 2.0.81 公式编辑器低分率下增加滚动显示
  • 2.0.89 修复符号弹窗遮挡问题
  • 2.0.90 自动清除前后空格
  • 2.1.0 公式支持业务对象

  • 3.0.0-beta.4 修复输入空格无法通过校验
  • 3.0.0-beta.5 修复点击确定校验太快,提示语未来得及显示
  • 3.0.0-beta.6 修复公式参照值不显示问题
  • 3.0.0-beta.7 公式参照请求兼容统一域名和专属化
  • 3.0.0-beta.8 恢复打包,转移旧版参照js和css资源
  • 3.0.0-beta.9 恢复 3.0.0-beta.6 打包,修复参照样式

  • 4.0.1 新版公式设计,优化操作方式,提升用户体验
  • 4.0.2 样式优化
  • 4.0.3 编辑区显示优化
  • 4.0.4 多语抽取,优化中文展示,文本框增加清空按钮
  • 4.0.5 自动清除前后空格 修复拖拽插件问题
  • 4.0.6 修复弹层遮罩问题
  • 4.0.7 公式解析逻辑优化,修复公式过长解析慢问题
  • 4.0.8 固定值模块样式优化,着色逻辑优化
  • 4.0.9 样式优化,点击清空按钮失焦事件处理, 修复变量不显示业务对象时默认显示context
  • 4.0.10 样式优化,修复第一次校验显示无公式数据问题
  • 4.0.12 修复钉耙打包错误
  • 4.0.14 业务对象接口增加formula前缀,mdf会做formula代理
  • 4.0.15-beta.1 添加自动化测试字段fieldid 增加格式化功能,增加预览功能,输入框必填样式优化,删除插入常量时的#{}$符号, 增加双击插入功能, 左侧搜索树支持虚拟滚动,修复静态检查错误
  • 4.0.15-beta.2 增加单元测试用例,优化搜索,优化代码
  • 4.0.15-beta.3 增加范围值类型,修复多语错误
  • 4.0.15-beta.4 兼容IE(关闭拖拽功能),业务对象支持多单据,变量模块滚动条优化
  • 4.0.15-beta.6 删除xsrf-token设置,删除package.json中的钉耙版本,避免三方下载钉耙冲突
  • 4.0.15-beta.7 LYJM-52671 YWZT-98940 YWZT-98747 修复bug
  • 4.0.15-beta.8 调整webpack配置,YWZT-102575 修复中文回显问题,修复因为格式化的空格导致的前端计算失败问题
  • 4.0.15-beta.9 业务对象、单据字段显示全路径中文, 单据字段时不需要传sourceDataType,压缩打包质量
  • 4.0.15-beta.10 1.搜索功能优化 如果当前节点的子节点有匹配项也前置 2.优化档案对象字段的中文显示
  • 4.0.15-beta.11 1、变量搜索区,去掉键盘key事件,通过enter和点击搜索icon触发搜索; 2、当纵向滚动条处于费顶部时,搜索到结果后,自动置顶; 3、注释掉过滤/不过滤的选项,默认不过滤,搜索命中顺序置顶
  • 4.0.16 实现业务对象,单据字段的全链路中文回显
  • 4.0.16-beta.1 初始化穿透增加loading提示
  • 4.0.16-beta.2 增加对象类型的字段插入控制开关
  • 4.0.16-beta.3 1.fielid通过脚本调整 2.cdn引入方式调整 3.修复中文回显导致code变化问题
  • 4.0.16-beta.4 1.支持领域控制插入功能 2.修复ts错误
  • 4.0.16-beta.5 修复带条件的表达式的中文回显
  • 4.0.16-beta.6 header添加X-A01(因为同一个租户可以拥有不同的领域操作权限,用于区分)
  • 4.0.17-beta.1 隐藏参照的新增按钮,修复checkMax漏洞
  • 4.0.17-beta.2 YWZT-115410 如果contextData中数据有type属性,需要重写为变量类型,另外档案也支持显示code
  • 4.0.17-beta.3 删除初始化样式,避免污染全局样式
  • 4.0.17-beta.4 处理弹窗多语,修改content-Type
  • 4.0.17-beta.5 YWZT-117477 修复集成对象模块没有滚动条
  • 4.0.17-beta.6 变量展开子级时自动滚动到合适位置,增加快捷键说明、支持函数说明直接插入函数
  • 4.0.17-beta.7 修复window.tnsSdk跨域问题
  • 4.0.17-beta.8 修复公式保存时mdf因为空格计算失败问题
  • 4.0.17-beta.9 增加非压缩版js,方便调试
  • 4.0.17-beta.10 修复性能问题
  • 4.0.17-beta.11 修复南航越权问题
  • 4.0.17-beta.12 接入TNS
  • 4.0.17-beta.13 修复样式冲突
  • 4.0.18 修复工作台菜单遮挡问题,优化中文回显逻辑
  • 4.0.19 1、支持多业务对象 2、中文回显优化 3、添加请求域名ymshost 4.增加Aajax:1, 避免跳转登录失败
  • 4.0.20 解决diwork.com报404问题
  • 4.0.21 修改返回描述区插入按钮的位置,所有接口增加serviceCode
  • 4.0.22 搜索优化,修复样式冲突,修改英文展示
  • 4.0.22-beta.1 删除协议信息
  • 4.0.22-beta.2 1.优化搜索 2.自定义业务对象,支持全路径中文显示
  • 4.0.22-beta.3 业务对象第一级也支持控制是否插入,参照传参增加serviceCode属性
  • 4.0.22-beta.4 处理漏洞扫描
  • 4.0.22-beta.5 修复参照问题,调整钉耙版本
  • 4.0.22-beta.6 档案穿透优化,设置fieldid
  • 4.0.22-beta.7 支持印尼语
  • 4.0.22-beta.8 升级多语新模型
  • 4.0.22-beta.9 处理sonar问题
  • 4.0.22-beta.10 支持业务对象,自定义插入数据,修复样式问题
  • 4.0.23 修复档案新接口404问题
  • 4.0.24 升级多语后兼容旧版本
  • 4.0.25 1.移除oss文件上传 2.移除无用的typename字段,统一使用dataType 3.代码质量优化
  • 4.0.26 1.数据隔离,避免同时打开两个公式互相干扰 2.业务对象支持国家地区搜索 3.业务对象增加模拟取值模拟计算

7. 缺陷

  • 前端计算算法不够健壮,对边界测试与较复杂情况可能缺少支持
  • 自动计算暂未集成后端计算能力,待优化

8. 界面截图

  • 1.0 版本 npm.io
  • 2.0 版本 npm.io
  • 3.0 版本 npm.io
  • 4.0 版本 image.png

End

4.0.26

6 months ago

4.0.22-beta.4

10 months ago

4.0.22-beta.6

9 months ago

4.0.22-beta.5

9 months ago

4.0.22-beta.7

9 months ago

4.0.23

8 months ago

4.0.25

8 months ago

4.0.24

8 months ago

4.0.22-beta.10

8 months ago

4.0.17-beta.12

1 year ago

4.0.15-beta.10

2 years ago

4.0.15-beta.11

2 years ago

4.0.17-beta.1

1 year ago

4.0.16-beta.1

1 year ago

4.0.17-beta.2

1 year ago

4.0.17-beta.3

1 year ago

4.0.16-beta.3

1 year ago

4.0.17-beta.4

1 year ago

4.0.16-beta.2

1 year ago

4.0.17-beta.5

1 year ago

4.0.16-beta.5

1 year ago

4.0.17-beta.6

1 year ago

4.0.16-beta.4

1 year ago

4.0.17-beta.7

1 year ago

4.0.16-beta.7

1 year ago

4.0.17-beta.8

1 year ago

4.0.16-beta.6

1 year ago

4.0.17-beta.9

1 year ago

4.0.16-beta.8

1 year ago

4.0.17-beta.11

1 year ago

4.0.17-beta.10

1 year ago

4.0.16

1 year ago

4.0.15-beta.8

2 years ago

4.0.17

1 year ago

4.0.15-beta.3

2 years ago

4.0.15-beta.4

2 years ago

4.0.15-beta.7

2 years ago

4.0.15-beta.5

2 years ago

4.0.15-beta.6

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.7

2 years ago

4.0.6

2 years ago

4.0.3

2 years ago

4.0.9

2 years ago

4.0.8

2 years ago

2.0.62-bata.3

2 years ago

2.0.62-bata.1

2 years ago

2.0.62-bata.2

2 years ago

4.0.10

2 years ago

2.0.89

2 years ago

4.0.15-beta.1

2 years ago

4.0.15-beta.2

2 years ago

4.0.15

2 years ago

4.0.12

2 years ago

4.0.11

2 years ago

4.0.14

2 years ago

4.0.13

2 years ago

2.0.90

2 years ago

4.0.4-beta.0

2 years ago

4.0.4-beta.3

2 years ago

4.0.4-beta.2

2 years ago

4.0.4-beta.1

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.2

2 years ago

4.0.1-beta.0

2 years ago

4.0.1-beta.1

2 years ago

2.0.88

2 years ago

2.0.86

2 years ago

2.0.87

2 years ago

2.0.84

2 years ago

2.0.85

2 years ago

2.0.83

2 years ago

2.1.0

2 years ago

2.0.82

2 years ago

2.0.81

2 years ago

2.0.79

2 years ago

2.0.77

2 years ago

2.0.78

2 years ago

2.0.75

2 years ago

2.0.76

2 years ago

2.0.73

2 years ago

2.0.74

2 years ago

2.0.80

2 years ago

2.0.68

2 years ago

2.0.69

2 years ago

2.0.71

2 years ago

2.0.72

2 years ago

2.0.70

2 years ago

3.0.0-beta.9

3 years ago

2.0.67

3 years ago

2.0.61-snapshot

3 years ago

2.0.66

3 years ago

2.0.64

3 years ago

2.0.65

3 years ago

2.0.62

3 years ago

2.0.63

3 years ago

2.0.61

3 years ago

2.0.59-snapshot

3 years ago

3.0.0-beta.7

3 years ago

2.0.59

3 years ago

3.0.0-beta.8

3 years ago

2.0.58

3 years ago

2.0.60

3 years ago

2.0.57

3 years ago

2.0.56

3 years ago

2.0.55

3 years ago

3.0.0-beta.6

3 years ago

2.0.54

3 years ago

2.0.53

3 years ago

3.0.1-beta.5

3 years ago

2.0.51

3 years ago

2.0.52

3 years ago

2.0.50

3 years ago

2.0.49

3 years ago

3.0.0-beta.5

3 years ago

2.0.48

3 years ago

2.0.47

3 years ago

2.0.46

3 years ago

2.0.44

3 years ago

2.0.45

3 years ago

2.0.42

3 years ago

2.0.43

3 years ago

2.0.40

3 years ago

2.0.41

3 years ago

3.0.0-beta.4

3 years ago

2.0.38

3 years ago

2.0.39

3 years ago

2.0.37

3 years ago

2.0.36

3 years ago

2.0.35

3 years ago

3.0.0-beta.3

3 years ago

2.0.33

3 years ago

2.0.34

3 years ago

2.0.32

3 years ago

3.0.0-beta.2

3 years ago

2.0.31

3 years ago

3.0.0-beta.1

3 years ago

2.0.30

3 years ago

3.0.0-beta.0

3 years ago

2.0.29

3 years ago

2.0.28

3 years ago

2.0.27

4 years ago

2.0.26

4 years ago

2.0.25

4 years ago

2.0.24

4 years ago

2.0.23

4 years ago

2.0.22

4 years ago

2.0.21

4 years ago

2.0.20

4 years ago

2.0.19

4 years ago

2.0.18

4 years ago

2.0.17

4 years ago

2.0.16

4 years ago

2.0.15

4 years ago

2.0.14

4 years ago

2.0.13

4 years ago

1.0.27

4 years ago

2.0.12

4 years ago

2.0.11

4 years ago

2.0.10

4 years ago

2.0.9

4 years ago

2.0.8

4 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.26

4 years ago

1.0.25

4 years ago

1.0.24

4 years ago

1.0.23

4 years ago

1.0.22

4 years ago

1.0.21

4 years ago

1.0.20

4 years ago

1.0.19

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago