# 3.功能卡片

提示

单据模型 的内容由功能卡片构成,添加功能卡片可以为模型构建数据结构和表单内容

# 自定义组件

提示

自定义组件 是所有功能卡片的集合,它展示了各个功能卡片的基本信息

# 自定义组件基础配置

属性 描述 举例
卡片 类名和注释的组合,确定唯一一类卡片
key 标志卡片的唯一性,首字母大写 BasicInfo
描述 对该卡片的中文描述,修改时会实时显示在左边导航栏
分组 可以将不同卡片分成一组,页面显示上,点击不同的组别,显示不同的卡片信息,有助于卡片信息的归类 同一组的输入值相同
计算 默认1,计算的顺序 1
次数 默认1,计算的次数
位置 卡片的位置,单据抬头默认header,其他默认default
编辑 控制卡片的编辑条件,默认可编辑,true
显示 控制卡片的显示条件,默认显示,true
数据复制 当卡片key一致并且字段key一致时,可以将前序单据的值复制到当前单据,默认为true

# 添加单据抬头卡片

提示

单据抬头卡片 是单据的主要信息,建议所有的单据第一个卡片都要选择单据抬头卡片

# 单据抬头卡片配置

属性 描述 举例
单据默认名称EL 单据的描述字段
单据名称EL 自定义单据的描述字段
伙伴ID EL 取值单据上的某个伙伴单据的docId,标志这个单据的关联人
伙伴名称 EL 取值单据上的某个伙伴单据的docName

# 添加表单卡片

提示

表单 是ELCube的基础卡片,可以配置一个个性化的表单功能。

在单据模型的功能卡片导航栏中点击新增,选择表单即可快速为单据模型添加一个 表单 卡片;

可以发现在左侧的导航栏中,出现一个名为 表单 的tab页签,它是功能卡片设置的入口,来进一步对卡片进行配置。

修改卡片列表的描述列,可以修改新增加的卡片的标题,响应的tab页签也会自动被更新。

# 添加字段

现在进入表单tab页签,为表单配置字段。

从右边的组件库中拖拽'文本'即可为表单添加一个新的文本字段。

# 组件库基础配置

属性 描述 举例
KEY 字段唯一标示,建议采用驼峰命名法 name,userName
描述 字段名称 姓名
触发计算 描述当修改字段内容后,是否需要触发单据的计算
计算顺序 字段在当前表单内的计算顺序
列宽 设置字段占用的列数量 1
是否非空 描述字段是否必填
校验提示 字段校验不通过时的提示信息 请填写该字段
右对齐 字段名称的对其方式,默认关闭
自定义样式 字段的自定义样式 color: red
控制 描述字段是否允许编辑或是否显示,优先级比控制SpEL表达式字段低
控制EL表达式 通过表达式的方式动态控制字段是否允许编辑或是否显示,1=编辑、0=只读、-1=隐藏,优先级比控制字段高 ${docState=='ACTI'}?1:-1
值EL条件 描述字段是否参与单据的计算,ALWAYS=总是计算、INIT=创建单据时计算、BLANK=字段值为空时计算
值EL 描述字段的计算逻辑表达式

# 文本字段专属配置

其他字段为文本字段专属配置

# 设置字段默认值

提示

值EL条件 = INIT时,值SpEL表达式设置的结果即字段默认值

值EL条件 = BLANK时,值SpEL表达式设置的结果同样能达到INIT的默认效果,不同的是当用户将字段清空后,会恢复为默认值

# 控制字段逻辑

注意

值EL条件 = ALWAYS时,字段的值将优先设置为值EL表达式的结果值,建议设置控制为只读

# 设置表单卡片布局

除了可以对卡片里面的字段内容进行设置之外,还可以对卡片进行整体的设置

属性 描述 举例
列数量 将表单纵向分割为多列 2
标题宽 表单字段标题的宽度,单位为px 120
标题省略号 当标题长度过长时,是否以省略号展示
文件批量下载 当卡片为文件模板时,可以将单据中的文件全部打包下载

提示

列数量字段可以与字段的列宽配合使用,

通过列数量将表单纵向分割为多列,列宽设置字段占用的列数量,来形成类似Excel分割单元格的效果。

# 编辑卡片文档

提示

用markdown格式编写这个卡片的文档,这个文档将被合并到单据文档的子段落,可以被最终用户看到;

# 更多表单字段类型

# 文本

属性 描述 举例
后缀 给字段加上一个后缀,后缀不会写入数据,只用于展示
最大长度 文本的长度 5
正则校验表达式 正则表达式 例如,只允许输入正整数:[1-9]\d*
执行SpEL表达式 触发计算开关开启之后,字段内容改变后执行的功能逻辑
数据映射模板 执行SpEL表达式执行后数据填充到其他字段的映射关系
数据脱敏 -表示不脱敏,逐字替换 -*-表示第2个字脱敏,其他不做处理,暂时不用

# 文本域

属性 描述 举例
最大长度 文本的长度
默认行数 默认高度可容纳的行数量

# URL

属性 描述 举例
最大长度 文本的长度

# 数字

属性 描述 举例
后缀 给字段加上一个后缀,后缀不会写入数据,只用于展示
格式 数字格式化 http://numeraljs.com/#format (opens new window)
最小值 最小值
最大值 最大值
Digits 小数点精度位数 2
Step 点击上下按钮数字的间隔

# 百分比

属性 描述 举例
格式 数字格式化 http://numeraljs.com/#format (opens new window)
最小值 最小值
最大值 最大值
Digits 小数点精度位数
Step 点击上下按钮加减数字的间隔
真实值 字段存储的数据默认是去除百分号的虚假值,默认关闭 100%存的值默认为100

# 日期

属性 描述 举例
选择区间 日期可选择的区间设置,通过SpEL返回一个数字数组来表示最小秒数及最大秒数 [1647710000,1647790000]
时间选择 是否精确到时分秒
显示格式 格式化日期显示 yyyy-MM-dd
储存格式 格式化日期储存 yyyyMMdd,不填写默认是秒级的时间戳

# 日期区间

属性 描述 举例
选择区间 日期可选择的区间设置,通过SpEL返回一个数字数组来表示最小秒数及最大秒数 [1647710000,1647790000]
显示格式 格式化日期显示
储存格式 格式化日期储存

# 选择

属性 描述 举例
选项表达式 下拉选择的选项列表,JSON格式数组:array<{value, label, [disabled, key, title]}> https://www.antdv.com/components/select-cn/#API (opens new window),[{"label": "自然人","value": 1},{"label": "法人","value": 2}]
选择模式 default(默认单选)、multiple(多选)、radio(单选组件)、checkbox(复选框)
Tag颜色 显示时的颜色设置 red

# 级联选择

属性 描述 举例
选项表达式 下拉选择的选项列表,JSON格式数组:array<{value, label, [disabled, key, title]}> https://www.antdv.com/components/cascader-cn/#API (opens new window)
[
  {
    "label": "北京",
    "value": "北京",
    "children": [
      {
        "label": "通州",
        "value": "通州",
        "children": [
          {
            "label": "高碑店",
            "value": "高碑店"
          }
        ]
      },
      {
        "label": "海淀",
        "value": "海淀",
        "children": [
          {
            "label": "中关村",
            "value": "中关村"
          },
          {
            "label": "五道口",
            "value": "五道口"
          }
        ]
      }
    ]
  }
]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

#

属性 描述 举例
选项表达式 下拉选择的选项列表,JSON格式数组:array<{value, label, [disabled, key, title]}>,可多选 https://www.antdv.com/components/tree-select-cn/#API (opens new window)

# 开关

属性 描述 举例
选中后显示 选中后显示
未选中显示 未选中显示

# 单据引用

属性 描述 举例
对话框选项 对话框界面的JSON配置
数据映射模板 改变后数据填充到其他字段的映射关系
选项映射模板 仅在联动表单中有效

# 对话框选项示例

{
    "title": "选择",
    "width": "60%",
    "postCondition": {
        "term": {
            "docType": "CR30"
        }
    },
    "index": "document",
    "searchItems": [
        {
            "name": "搜索",
            "field": [
                "keyword",
                "docName",
                "partnerName"
            ],
            "component": "nk-search-options-text",
            "placeholder": "请输入关键字"
        }
    ],
    "columns": [
        {
            "title": "单据类型",
            "field": "docType",
            "width": "15%"
        },
        {
            "title": "名称",
            "field": "docName",
            "width": "25%"
        },
        {
            "field": "docStateDesc",
            "title": "状态",
            "width": "20%"
        }
    ]
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# 下拉选V2

属性 描述 举例
下拉选项 下拉选择的选项列表,JSON格式数组:array<{value, label, [disabled, key, title]}> "${data.bankCard}"
label 下拉选显示字段名,可以用拼接
数据映射模板 将选中的数据映射到当前卡片的其他字段上

事例(数据映射模板)

{
  "filedKey": "${data.cardKey?.filedKey?.key}"
}
1
2
3

# 索引引用

属性 描述 举例
对话框选项 对话框的选项列表,JSON格式数组:array<{自定义对象, [disabled, key, title]}> https://www.antdv.com/components/select-cn/#API (opens new window)
数据映射模板 将选中的数据映射到当前卡片的其他字段上
选项映射模板 将选中的数据选项到当前卡片的其他字段上
{
  "title": "设备类型",
  "width": "50%",
   "postCondition": {
          "bool": {
              "must": [
                  {
                      "terms": {
                          "customType": [
                              "索引库名 "
                          ]
                      }
                  }
              ]
          }
      },
  "index": "doc-ext",
  "searchItems": [{
    "name": "搜索",
    "field": ["字段名", "dynamics.deviceTypeLabel_keyword", "docName"],
    "component": "nk-search-options-text",
    "placeholder": "请输入关键字"
  }, {
    "name": "描述",
    "field": "字段名",
    "component": "输入框类型",
    "agg": true
  }, {
    "name": "设备类型",
    "field": "dynamics.deviceTypeLabel_keyword",
    "component": "nk-search-options-single",
    "agg": true
  }, {
    "name": "品牌",
    "field": "dynamics.brand_name",
    "component": "nk-search-options-text"
  }],
  "columns": [{
    "title": "描述",
    "field": "字段名",
    "width": "宽度"
  }, {
    "title": "设备大类",
    "field": "dynamics.category_keyword",
    "width": "10%"
  }, {
    "title": "国标",
    "field": "dynamics.naStandard_keyword",
    "width": "7%"
  }]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

# 文件

属性 描述 举例
类型 文件或图片
Accept 支持的文件格式
MaxSize(KB) 文件大小限制
执行OCR表达式 上传文件之后执行表达式
数据映射模板 将执行表达式之后的结果数据,映射到当前卡片的其他字段上
{
  "customerName": "${xingming?.words}",
  "idCardNumber": "${gongminshenfenhaoma?.words}",
  "custNation": "${minzu?.words}",
  "custPermanentAddress": "${zhuzhi?.words}",
  "custBirthday": "${chusheng?.date}",
  "sex": "${xingbie?.words=='男'?1:2}",
  "nationality": "中国"
}
1
2
3
4
5
6
7
8
9

# 多文件

属性 描述 举例
类型 文件或图片
Accept 支持的文件格式
MaxSize(KB) 文件大小限制

# 文本带按钮

属性 描述 举例
执行EL 点击按钮的时候执行该EL表达式
数据映射模板 将执行表达式之后的结果数据,映射到当前卡片的其他字段上
只读时显示按钮 只读时隐藏按钮,默认关闭

# 分隔符

属性 描述 举例
分隔器样式 选择分隔样式,可选分隔符或者文字提示

# 联动表单卡片

提示

当卡片内的数据有循环依赖计算的时候,可使用该卡片配置(如金融方案)。

# 配置

提示

字段没有表单多,已有字段特性与表单一致;

# 表格卡片

提示

表格 是ELCube的基础卡片,可以配置一个个性化的表格功能。

提示

除部分字段为动态表单独有外,大部分的字段特性与动态表单一致;

# 表格头部配置

属性 描述 举例
序列号 表格数据的序号,默认关闭
调整顺序 允许调整表格数据的顺序,默认关闭
初始化EL TODO
禁用编辑 表格数据不可修改,默认关闭
禁用删除 表格数据不可删除,默认关闭
新增 增加一列

# 表格列配置

提示

字段特性与表单一致;

# 表格表单卡片

提示

表格表单 是ELCube的基础卡片,可以配置一个个性化的表格功能。

# 卡片配置

属性 描述 举例
最少条目数 限制最少的条目数据
序列号 每列数据的序号,默认关闭
比例值,是表格列的宽度 最小40,最大100
列数量 表单详情中的列数量 1
标题宽度 最小60,最大300
标题省略号 当标题长度过长时,是否以省略号展示
禁用新增 不可新增数据,默认为否
禁用编辑 不可编辑数据,默认为否
禁用删除 不可删除数据,默认为否
多选删除 是否可以多选删除数据,默认为否
数据复制程序 自定义Java类,实现的是NkDynamicGridCopyAdapter接口
数据复制选项 数据复制程序的参数,JSON格式
启用选择 是否启用选择,默认为否,启用时需要配置化对话框选项,该配置生效的前提是:禁用新增开关开启
启用导出 是否可以导出数据,默认为否
是否开启触发按钮 是否触发计算,默认为否
对话框选项 当启用选择之后,需要配置的选择项
数据映射模板 选择对应的数据后,将数据映射到卡片的其他字段上

# 数据复制

#数据复制程序
#功能点是:可以将前序的某个卡片的数据根据某个字段拆分,例如:对于前序单据中车辆信息,一条数据有多个数量的车,可以根据拆分成一条数据一辆车
NkDynamicGridSplitCopyAdapter

#数据复制选项
#fromCardKey:要从前序的哪个卡片中复制
#splitField:根据哪个字段进行拆分
#mappingFields:源数据到目标数据的字段映射
{
	"fromCardKey": "subjectMatter",
	"splitField": "quantity",
	"mappingFields": {
		"model": "#row?.model",
		"invoiceAmount": "#row?.price"
	}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 启用选择

对话框选项示例
当然也可以使用数据字典配置

{
  "title": "选择单据",
  "width": "60%",
  "preview": false,
  "defaultRows": 10,
  "index": "document",
  "border": "inner",
  "postCondition": {
    "terms": {
      "docType": [
        "RPC1",
        "RPC2"
      ]
    }
  },
  "searchItemsDefault": [
    {
      "name": "承租人",
      "component": "nk-search-options-text",
      "field": "partnerName",
      "placeholder": null,
      "defaultValue": null,
      "agg": false,
      "defaultOptions": true,
      "max": null,
      "formatter": null,
      "_X_ROW_KEY": "row_3970"
    }
  ],
  "searchItemsMoreDef": [],
  "columns": [
    {
      "field": "docTypeDesc",
      "title": "单据类型",
      "type": null,
      "width": null,
      "sortable": false,
      "params": {
        "orderField": null
      },
      "formatter": null,
      "ignore": false,
      "_X_ROW_KEY": "row_3980"
    },
    {
      "field": "partnerName",
      "title": "承租人",
      "type": null,
      "width": null,
      "sortable": false,
      "params": {
        "orderField": null
      },
      "formatter": null,
      "ignore": false,
      "_X_ROW_KEY": "row_3981"
    },
    {
      "field": "updatedTime",
      "title": "修改时间",
      "type": null,
      "width": null,
      "sortable": false,
      "params": {
        "orderField": null
      },
      "formatter": [
        "nkDatetimeISO"
      ],
      "ignore": false,
      "_X_ROW_KEY": "row_3982"
    }
  ],
  "sortConfig": {
    "remote": true,
    "trigger": "cell",
    "orders": [
      "desc",
      "asc",
      null
    ]
  },
  "creatable": [],
  "exportConfig": {}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

# 数据映射模板示例

左边是表格表单中的字段key,右边是选择框单据中的索引中的值

{
  "key1":"${docName}",
  "key2":"${dynamics.name_name}"
  }
1
2
3
4

# 表格列配置

提示

除部分字段为动态表单独有外,大部分的字段特性与表单一致;

属性 描述 举例
详情宽 PC端,表单部分每个字段的宽度
列表宽 PC端,表格部分每个字段的宽度
移动端 移动端字段的宽度

# e签宝卡片

提示

e签宝卡片 是对接了e签宝合同签署和e签宝数据存证接口的卡片。

# 卡片配置

属性 描述 举例
签署触发状态 发起签署的状态,当状态到达该值时,会调用合同签署接口,发送短信或邮件给签署人 SIGN
签署成功状态 e签宝的签署成功回调会将单据变更为此状态 SISU
签署失败状态 e签宝签署失败,回调接口会将单据变更为此状态 SIFA
撤销触发状态 当状态到达该值时,会调用e签宝的撤销签署接口 SICA
撤销成功状态 e签宝撤销回调,如果撤销成功,会将单据变更为此状态 CASU
撤销失败状态 e签宝撤销回调,如果撤销失败,会将单据变更为此状态 CAFA
签署主题名称 e签宝签署时显示的签署主题名称 测试e签宝功能
是否存证 是否申请数据存证证明的开关 true
存证参数 当是否存证的开关开启时,会显示此字段,为申请数据存证接口提供参数 industryName:所属行业类型; scenbusinessName:业务凭证(名称); templateFileName:待存证的文档名称; example:1,原文存证,2,摘要存证;prove:存证持有人;type:持有人的身份证类型,具体类型见下文;number:证件号码 {"industryName":"金融租赁1","scenbusinessName":"存证","templateFileName":"存证测试","example":1,"prove":{"type":"CODE_USC","number":"91500229MA6149X05F"}}
flowInfo参数 合同签署接口的参数 {"signFlowTitle":"${docName}","signFlowExpireTime":"${@date.dateAdd(@date.today(),30) * 1000}","autoStart":true,"autoFinish":true,"identityVerify":true,"signConfig":{"availableSignClientTypes":"1","showBatchDropSealButton":true},"noticeConfig":{"noticeTypes":"1","examineNotice":false},"authConfig":{"willingnessAuthModes":["PSN_FACE_ALIPAY","CODE_SMS","PSN_FACE_TECENT","PSN_FACE_ESIGN","PSN_FACE_WECHAT"],"psnAvailableAuthModes":["PSN_FACE","PSN_MOBILE3","PSN_BANKCARD4"]},"redirectConfig":{"redirectUrl":"www.baidu.com","redirectDelayTime":3}}
模板项 每个文件的标识 P001
描述 在页面上显示的文件名称 融资租赁合同
文件模板 上传文件的地方
导出文件时的处理程序 可以自定义,用来处理复杂文件
签署条件EL 签署条件 1==1
签署方EL 定义文件的签署方 [{"signers":[{"psnSignerInfo":{"psnInfo":{"psnIDCardType":"CRED_PSN_CH_IDCARD","psnIDCardNum":"410782200209099538","psnMobile":"18236133936","psnName":"王一杰"},"psnAccount":"18236133936"},"signerType":0,"noticeConfig":{"noticeTypes":1},"keywords":"A承租人A"},{"signerType":1,"noticeConfig":{"noticeTypes":1},"autoSign":true,"keywords":"A公司签章A"}],"params":{"title":"测试合同"}}]

提示

签署方EL是个数组,可以支持多个签署人循环签署同一份文件

# e签宝解约卡片

提示

e签宝解约 是针对e签宝卡片的解约签署

# 卡片配置

属性 描述 举例
解约触发状态 发起解约签署的状态,当状态到达该值时,会调用解约签署接口,发送短信或邮件给签署人 PROC
解约成功状态 e签宝的解约签署成功回调会将单据变更为此状态 RJSU
解约失败状态 e签宝解约签署失败,回调接口会将单据变更为此状态 RJFL
e签宝数据参数 e签宝的原签约文件,所写的表达式需要获取到该签署数据 如果解约单据是后序:#$PREV?.data?.NkCardEsign,如果解约跟签署同一个单据:data?.NkCardEsign
解约原因触发参数 单据到达该状态时,才可以编辑结解约原因,true或false docState == "NEW"
解约EL参数 定义的解约参数 {"orgId": "b074434918b84007ae62e23f6eea3ebf", "transactor": { "psnId": "${@esign.identityInfo('18236133936')}"},"autoSign": true, "sealId": "8eb51bba-1aa1-49be-8a4c-768a5b2b5fe4","noticeConfig": {"noticeTypes": "1"}}

# 添加导入Excel表格配置卡片

提示

该卡片 使用于将Excel中的每条数据作为单据批量插入到系统中
配置完毕之后,页面上会有下载模板的按钮,下载之后填写对应字段,然后点击上传 Excel的字段类型最好跟单据的组件类型保持一致

# 导入Excel表格卡片配置

属性 描述 举例
执行条件 执行单据创建的状态
成功状态 单据全部创建成功后的状态
失败状态 单据创建过程中有报错的状态
单据类型 这张Excel表需要创建的单据类型
单据状态 创建的单据设置的状态
业务主键规则 创建单据的业务主键,前提是该单据也有配置业务主键,如果有主键一致的单据,就修改单据,没有则创建单据
触发计算 单据创建过程中是否触发计算,默认false
KEY 创建单据的卡片key和字段key business.startDate
输入框 单据字段的属性 文本
显示格式 单据的数据显示格式 0,00.00
真字符 当输入框时布尔时,输入真字符中的数据,那么该字段在单据中就会显示true
展示宽度 TODO,暂时没发现用处
模板宽度 TODO,暂时没发现用处
导入单据 只有该选项为true,才会将该字段插入单据中

# 输入框各类型的区别

提示

文本:填写什么值就插入什么值
整数:即使填写了小数位,也会只显示整数
小数:显示格式可以填写想要保留的小数位数,如:0,00.00
日期:填写普通日期格式,可以根据显示格式展示不同格式
布尔:当输入框为布尔时,真字符必须有值,当Excel填写真字符的值时,该字段会在单据插入true,否则就是false
开关:填写值为true或者false
单据引用:填写值为该单据的业务主键值,并且真字符需要输入该单据的单据类型,允许输入多个,用逗号隔开
下拉选:填写value值
百分比:填写数据为百分号单位前面的数据,如果想要的34%,那就填写34