Files
Starlight_Lancher/.agents/skills/lark-approval/references/lark-approval-instance-form-control-parameters.md

26 KiB
Raw Blame History

审批实例表单控件参数

说明:本文尽量保留上游参数文档的原始结构与示例,用于回答“控件 value 长什么样”。 当前 lark-cli 的推荐取值口径以 lark-approval-instance-value-sourcing.md 为准;如果两份文档在“值从哪里拿”上存在差异,以后者为准。

在调用创建审批实例接口时需要使用表单控件参数,你可以通过本文了解审批实例内各表单控件的参数说明。

准备工作

审批实例的表单控件参数依据审批定义表单来配置,例如,审批定义的表单设计包括了 单行文本日期区间 控件,则审批实例的表单控件参数就需要为 单行文本日期区间 控件进行赋值。因此,在操作审批实例表单的控件参数前,应先通过审批定义详情确认表单控件结构。

审批实例 API 不支持的控件

创建审批实例 API 未完全支持所有的审批表单控件,不支持的控件如下表所示。如果你必须使用 API 不支持的控件,则不能仅通过当前 API 完成提单。

控件/控件组 Type
说明 text
引用多维表格 mutableGroup
收款账户 account
流水号 serialNumber
出差控件组 tripGroup
录用控件组 apaascorehrOnboardingGroup
转正控件组 apaascorehrRegularateGroup
补卡控件组 remedyGroupV2
调岗控件组 apaascorehrJobAdjustGroup
离职控件组 apaascorehrOffboardingGroup

通用参数

审批实例的表单控件均包含的参数如下表所示。

参数 类型 是否必填 描述
id string 控件的 ID需要与审批定义中的控件 ID 保持一致。
type string 控件类型。各控件类型取值参见下文 不同控件的参数 章节。
value 不同控件的类型不同 控件的取值。不同控件 value 数据类型也不同,例如单行文本控件的 value 为字符串、联系人的 value 为数组。详情参见下文 不同控件的参数 章节。

不同控件的参数

本章节提供不同控件的 type 参数值、JSON 示例以及非通用参数说明。

单行文本

控件 type 为 inputJSON 数据示例:

{
    "id": "widget1",
    "type": "input",
    "value": "data" // string 类型
}

多行文本

控件 type 为 textareaJSON 数据示例:

{
    "id": "widget1",
    "type": "textarea",
    "value": "data" // string 类型
}

日期

控件 type 为 dateJSON 数据示例:

{
    "id": "widget1",
    "type": "date",
    "value": "2019-10-01T08:12:01+08:00" // 需满足 RFC3339 格式的 string 类型
}

日期区间

控件 type 为 dateIntervalJSON 数据示例:

{
    "id": "widget1",
    "type": "dateInterval",
    "value": {
         "start":"2019-10-01T08:12:01+08:00",
         "end":"2019-10-02T08:12:01+08:00",
         "interval": 1.0
     }
}

value 参数为 object 类型,包含参数说明:

参数 类型 是否必填 描述
start string 开始时间,需满足 RFC3339 格式。
end string 结束时间,需满足 RFC3339 格式。
interval float 时长(天)。

单选

控件 type 为 radio/radioV2JSON 数据示例:

{                                     
    "id": "widget1",
    "type": "radioV2",
    "value": "k2b8mkx0-h71x5gl1234-1" // string 类型
}

其中, value 表示选项值,取值范围需要参考相应审批定义中 单选 控件 option 的 value 参数。你可以通过审批定义详情返回的 form 参数,获取单选控件 option 的 value 取值。如果控件关联了外部选项,则 value 需要传入外部选项的 options.id

多选

控件 type 为 checkbox/checkboxV2JSON数据示例

{
    "id":"widget1",
    "type":"checkboxV2",
    "value": ["k2b8mkx0-h71x5gl4321-1"] // string 类型的数组
}

其中, value 表示选项值,取值范围需要参考相应审批定义中 多选 控件 option 的 value 参数。你可以通过审批定义详情返回的 form 参数,获取多选控件 option 的 value 取值。如果控件关联了外部选项,则 value 需要传入外部选项的 options.id

数字

控件 type 为 numberJSON 数据示例:

{
    "id": "widget1",
    "type": "number",
    "value": 1234.5678 // float 类型
}

金额

控件 type 为 amountJSON 数据示例:

{
    "id": "widget1",
    "type": "amount",
    "value": 1234.5678, // float 类型
    "currency":"USD"
}

其中currency 表示货币种类,取值范围需要参考相应审批定义中 金额 控件的 value 参数。你可以通过审批定义详情返回的 form 参数,获取金额控件可设置的货币种类。

计算公式

控件 type 为 formulaJSON 数据示例:

{
    "id": "widget1",
    "type": "formula",
    "value": 1234.5678 // 该值由审批定义内配置的公式计算出取值,若不匹配则返回报错。
}

联系人

控件 type 为 contactJSON 数据示例:

{
    "id":"widget1",
    "type":"contact",
    "value": ["f8ca557e"], // string 类型的数组
    "open_ids": ["ou_12345"] // string 类型的数组
}

其中value 包含的是用户 user_idopen_ids 包含的是用户 open_id

关联审批

控件 type 为 connectJSON 数据示例:

{
    "id":"widget1",
    "type":"connect",
    "value": ["19EAC829-F1CB-527F-BE2A-1330422E60C0"] // string 类型的数组
}

其中value 包含的是被关联的审批实例 Code你可以通过审批实例详情能力根据实例 Code 获取实例详情。

文档控件

控件 type 为 documentJSON 数据示例:

{
    "id": "widget1",
    "type": "document",
    "value": {
           "token":"TLLKdcpDro9ijQxA33ycNMabcef",
           "type":"docx",
    }
}

value 参数为 object 类型,包含参数说明:

参数 类型 是否必填 描述
token string 文档的 document_id。
type string 文档类型,支持 docx

附件

控件 type 为 attachmentV2JSON 数据示例:

{
    "id":"widget1",
    "type":"attachmentV2",
    "value": ["D93653C3-2609-4EE0-8041-61DC1D84F0B5"] // string 类型的数组
}

其中value 包含的是上传文件后返回的文件 code。

图片

控件 type 为 image/imageV2JSON 数据示例:

{
    "id":"widget1",
    "type":"image",
    "value": ["D93653C3-2609-4EE0-8041-61DC1D84F0B5"] // string 类型的数组
}

其中value 包含的是上传文件后返回的文件 code。

明细/表格

控件 type 为 fieldListJSON 格式示例:

{
    "id": "widget1",
    "type": "fieldList",
    "value": [
         [   
            {
                "id": "widget1",
                "type": "checkbox",
                "value": ["jxpsebqp-0"]
            }
         ]
     ]
}

其中 value 是二维数组,根据审批定义内 明细/表格 控件所包含的控件,依次设置控件 JSON 值。

部门

控件 type 为 departmentJSON 数据示例:

{
    "id":"widget1",
    "type":"department",
    "value":[ 
        {
            "open_id": "od-xxx"
        }
    ]
}

其中 value 为对象数组,通过 open_id 设置部门的 open_department_id。

电话

控件 type 为 telephoneJSON 数据示例:

{
    "id":"widget1",
    "type":"telephone",
    "value": {
        "countryCode":"+86",
        "nationalNumber":"13122222222"
    }
}

value 参数为 object 类型,包含参数说明:

参数 类型 是否必填 描述
countryCode string 区号。
nationalNumber string 电话号。

地址

控件 type 为 addressJSON 数据示例:

{
	"id": "widget1",
	"type": "address",
	"value": [{
		"id": "290557",
		"detailAddress": "详细的地址"
	}]
}

value 参数为 []object 类型,参数说明如下:

参数 类型 是否必填 描述
value []object 非出差控件组场景地址控件仅支持单个地址,传入多个时默认只取第一个
└ id string 区域ID, 可通过审批的地理库接口获取
└ detailAddress string 详细的地址,若表单配置中未开启填写详细地址,则会忽略该参数,即使传入也不会生效

换班控件组

控件 type 为 shiftGroupJSON 数据示例:

{
    "id": "widget1",
    "type": "shiftGroup",
    "value": {
         "shiftTime": "2019-10-01T08:12:01+08:00",
         "returnTime": "2019-10-02T08:12:01+08:00",
         "reason": "ask for leave"
     }
}

value 参数为 object 类型,包含参数说明:

参数 类型 是否必填 描述
shiftTime string 换班时间,需满足 RFC3339 格式。
returnTime string 对调日期,需满足 RFC3339 格式。
reason string 换班原因。

请假控件组

请假控件组请求示例

{
    "id": "widgetLeaveGroupV2",
    "type": "leaveGroupV2",
    "value": [
      {
        "id": "widgetLeaveGroupType",
        "type": "radioV2",
        "value": "7488925543484620819"
      },
      {
        "id": "widgetLeaveGroupStartTime",
        "type": "date",
        "value": "2025-08-25T11:30:00+08:00"
      },
      {
        "id": "widgetLeaveGroupEndTime",
        "type": "date",
        "value": "2025-08-26T11:35:00+08:00"
      },
      {
        "id": "widgetLeaveGroupReason",
        "type": "textarea",
        "value": "123123"
      },
      {
        "id": "widgetLeaveCertification",
        "type": "image",
        "value": [
          "B69F8E26-0EAA-4A92-9B80-DA613CD36136"
        ]
      },
      {
        "id":"widgetLeaveCertification",
        "type":"image",
        "value": ["D93653C3-2609-4EE0-8041-61DC1D84F0B5"]
      },
      {                                     
        "id": "widgetLeaveGroupFeedingArrivingLate",
        "type": "radioV2",
        "value": "30"
      },
      {                                     
        "id": "widgetLeaveGroupFeedingOffLeaveEarly",
        "type": "radioV2",
        "value": "30"
      }        
    ]
}

请假控件组包含参数说明:

id 类型 JSON示例 描述
id string 控件组ID固定为widgetLeaveGroupV2
type string 控件组类型固定为leaveGroupV2
value object[] 控件组的值,值为多个子控件值的列表

value中包含的子控件值说明:

id 类型 JSON示例 描述
widgetLeaveGroupType radioV2 <br>{<br>"id": "widgetLeaveGroupType",<br>"type": "radioV2",<br>"value": "7488925543484620819"<br>}<br> 假期类型,具体格式可参考单选控件,选项由假勤接口获取,提单时必须包含该控件
widgetLeaveGroupStartTime date <br>{<br>"id": "widgetLeaveGroupStartTime",<br>"type": "date",<br>"value": "2019-10-01T08:12:01+08:00", // 需满足 RFC3339 格式的 string 类型<br>} <br> 请假开始时间,具体格式可参考日期控件,会根据假期类型自动取整,其中半天假小于12点则认为是上午小时假则以半小时为粒度向前取整, 提单时必须包含该控件
widgetLeaveGroupEndTime date <br>{<br>"id": "widgetLeaveGroupEndTime",<br>"type": "date",<br>"value": "2019-10-01T08:12:01+08:00", // 需满足 RFC3339 格式的 string 类型<br>}<br> 请假结束时间具体格式可参考日期控件会根据假期类型自动取整其中半天假小于12点则认为是上午小时假则以半小时为粒度向后取整
widgetLeaveGroupReason textarea <br>{<br>"id": "widgetLeaveGroupReason",<br>"type": "textarea",<br>"value": "123123"<br>}<br> 请假事由,具体格式可参考多行文本控件,哺乳假无需填写,其他情况则根据控件组配置中该控件是否可见以及必填判断
widgetLeaveCertification image <br>{<br>"id":"widgetLeaveCertification",<br>"type":"image",<br>"value": ["D93653C3-2609-4EE0-8041-61DC1D84F0B5"]<br>}<br> 请假证明,具体格式可参考图片控件,如果所选假期类型配置要求补充证明则必须传递该值,缺失会报错
widgetLeaveGroupFeedingArrivingLate radioV2 <br>{ <br>"id": "widgetLeaveGroupFeedingArrivingLate",<br>"type": "radioV2",<br>"value": "30"<br>}<br> 上班晚到的分钟数具体格式可参考单选控件仅哺乳假需要填写取值范围是0-120分钟粒度是15分钟选项从审批定义中该控件的option中获取
widgetLeaveGroupFeedingOffLeaveEarly radioV2 <br>{ <br>"id": "widgetLeaveGroupFeedingOffLeaveEarly",<br>"type": "radioV2",<br>"value": "30"<br>} <br> 下班早走的分钟数具体格式可参考单选控件仅哺乳假需要填写取值范围是0-120分钟粒度是15分钟选项即是分钟对应的字符串

特殊的参数校验报错信息

message 说明
leave type id parse error 请假类型不是int64
group value is invalid 当前控件组的值无效,请校验是否为空或者校验类型是否为数组
start time format is not RFC3339 开始时间日期格式非RFC3339格式
end time format is not RFC3339 结束时间日期格式非RFC3339格式
start time is after end time 开始时间晚于结束时间
user not in gray 申请用户不在假勤灰度内
leave type not found 请假类型不存在
reason is required 请假原因未填写
leave quote should be bigger than 0 请假时长需要大于0
leave is conflict 所选时间内已有请假记录,请选择其他时间
balance is not enough 当前假期类型下假期余额不足
certification is required 需要上传请假证明
arriving late is required 哺乳假需要填写上班晚到时长
arriving late value is not in the optional items 晚到时间不在可选范围内
leaving early is required 哺乳假需要填写下班提前时长
leaving early value is not in the optional items 下班提前时间不在可选范围内
feeding rest daily is 0 哺乳假每日休息时长为0请重新选择
the operation is prohibited by the workforce rules 当前账户已在假勤侧封账,无法提交

加班控件组

加班控件组请求示例

{
  "id": "widgetWorkGroup",
  "type": "workGroup",
  "value":[
    {
      "id":"widgetWorkGroupOvertimeWorkers",
      "type":"contact",
      "value": ["f8ca557e"],
      "open_ids": ["ou_12345"]
    },
    {
      "id": "widgetWorkGroupType",
      "type": "radioV2",
      "value": "7259635026038505475"
    },
    {
      "id":"widgetWorkGroupTimeRangeFieldList",
      "type":"fieldList",
      "value":[
        [
          {
            "id":"widgetWorkGroupStartTime",
            "type":"date",
            "value":"2019-10-01T08:12:01+08:00"
          },
          {
            "id":"widgetWorkGroupEndTime",
            "type":"date",
            "value":"2019-10-01T08:12:01+08:00"
          }
        ]
      ]
    },
    {
      "id": "widgetWorkGroupReason",
      "type": "textarea",
      "value": "111"
    }
  ]
}

加班控件组参数说明:

参数 类型 是否必填 描述
id string 控件组ID固定为widgetWorkGroup
type string 控件组类型固定为workGroup
value object[] 控件组的值,值为多个子控件值的列表

value中包含的子控件值说明:

id 类型 JSON示例 描述
widgetWorkGroupOvertimeWorkers contact <br>{<br>"id":"widgetWorkGroupOvertimeWorkers",<br>"type":"contact",<br>"value": ["f8ca557e"], <br>"open_ids": ["ou_12345"]<br>}<br> 加班人员列表具体格式可参考联系人控件如果定义中配置「允许代多人提交」则该字段必填如果是提交人给自己提交需填写提交人的ID
widgetWorkGroupType radioV2 <br>{<br>"id": "widgetWorkGroupType",<br>"type": "radioV2",<br>"value": "7259635026038505475" // 对应的类型选项ID<br>}<br> 加班类型,具体格式可参考单选控件,如果定义中关闭「关联加班规则」则需要填写该字段
widgetWorkGroupTimeRangeFieldList fieldList <br>{<br>"id":"widgetWorkGroupTimeRangeFieldList",<br>"type":"fieldList",<br>"value":[<br>[<br>{<br>"id":"widgetWorkGroupStartTime",<br>"type":"date",<br>"value":"2019-10-01T08:12:01+08:00"<br>},<br>{<br>"id":"widgetWorkGroupEndTime",<br>"type":"date",<br>"value":"2019-10-01T08:12:01+08:00"<br>}<br>]<br>]<br>}<br> 加班时段具体格式可参考明细控件如果定义中打开「允许提交多个加班时段」则可以传多个最多支持30个否则只会取第一个单次加班时长不可超过两天
widgetWorkGroupReason textarea <br>{<br>"id": "widgetWorkGroupReason",<br>"type": "textarea",<br>"value": "111"<br>}<br> 加班事由,如果定义中配置了「加班事由」必填,则必须填写该字段

特殊的参数校验报错信息

message 说明
the time range list has more than 30 items 加班时段数量超过30
group value is invalid 当前控件组的值无效,请校验是否为空或者校验类型是否为数组
overtime type is required 未关联加班规则时,加班类型必填
work time range is required 至少需要一个加班时段
start time is after end time 开始时间晚于结束时间
start time or end time of range is required 加班时间段的开始时间和结束时间必填
overtime duration is over 2 days 单次加班时长不可超过两天
overtime date time zone not support 加班时段的日期时区信息无法识别
{date} can not apply overtime 所选时间不可申请加班
{date} already apply overtime 所选时间已经有加班记录
{date} no need approval 所选日期加班无需申请
apply reason is required 定义中设置了加班事由为必填,不可为空
{users} user follow different overtime rules, cannot be submitted in the same form 所选加班人不在同一个考勤组内,无法同时提交加班
invalid overtime work application 没有有效的加班申请,请重新选择加班日期
the overtime duration cannot be 0 加班时长不能是0
the number of apply workers cannot exceed 50 单次申请加班人数量不可大于50
apply worker is required 必须有加班人,配置置可代多人提交时必须指定加班人
resigned worker can not apply 离职人员不可申请加班
overtime duration is over limit 加班时长超过限制

外出控件组

外出控件组请求体示例

{
    "id": "widgetOutGroup",
    "type": "outGroup",
    "value":[
        {
            "id": "widgetOutGroupType",
            "type": "radioV2",
            "value":  "me15yqrf-gmjgbml2vhp-0"      
        },
        {
            "id": "widgetOutGroupStartTime",
            "type": "date",
            "value":"2019-10-01T08:12:01+08:00"
        },
        {
            "id": "widgetOutGroupEndTime",
            "type": "date",
            "value":"2019-10-01T08:12:01+08:00"
        },
        {
            "id": "widgetOutGroupReason",
            "type": "textarea",
            "value":"123213"
        },
        {
            "id":"widgetOutGroupImage",
            "type":"image",
            "value": ["D93653C3-2609-4EE0-8041-61DC1D84F0B5"]
        }                    
    ]   
}

外出控件参数说明

参数 类型 是否必填 描述
id string 控件组ID固定为widgetOutGroup
type string 控件组Type固定为outGroup
value object[] 控件组的值,值为多个子控件值的列表

value中包含的子控件值说明:

id 类型 JSON示例 描述
widgetOutGroupType radioV2 <br>{<br>"id": "widgetOutGroupType",<br>"type": "radioV2",<br>"value": "me15yqrf-gmjgbml2vhp-0" <br>}<br> 外出类型,具体格式可参考单选控件,如果配置了「外出类型」则必填,外出时长单位会选取所选外出类型关联的单位,如果没有配置「外出类型」,则该字段无需填写,计算外出时长时会选取「外出时长」配置的单位
widgetOutGroupStartTime date <br>{<br>"id": "widgetOutGroupStartTime",<br>"type": "date",<br>"value":"2019-10-01T08:12:01+08:00"<br>}<br> 外出开始时间具体格式可参考日期控件如果外出时长单位是半天假则小于12点则认为是上午否则认为是下午如果单位是小时则会按半小时的粒度向前取整
widgetOutGroupEndTime date <br>{<br>"id": "widgetOutGroupEndTime",<br>"type": "date",<br>"value":"2019-10-01T08:12:01+08:00"<br>}<br> 外出结束时间具体格式可参考日期控件如果外出时长单位是半天假则小于12点则认为是上午否则认为是下午如果单位是小时则会按半小时的粒度向后取整
widgetOutGroupReason textarea <br>{<br>"id": "widgetOutGroupReason",<br>"type": "textarea",<br>"value":"123213"<br>}<br> 外出事由,具体格式可参考多行文本控件,如果定义中「外出事由」必填,则必须填写该控件,如果定义配置无需填写,则无需填写该控件
widgetOutGroupImage image <br>{<br>"id":"widgetOutGroupImage",<br>"type":"image",<br>"value": ["D93653C3-2609-4EE0-8041-61DC1D84F0B5"]<br>} <br> 外出证明,具体格式可参考图片控件,如果定义中「外出拍照」必填,则必须填写该控件,如果定义配置无需填写,则无需填写该控件

特殊的参数校验报错信息

message 说明
group value is invalid 当前控件组的值无效,请校验是否为空或者校验类型是否为数组
start time format is not RFC3339 开始时间日期格式非RFC3339格式
end time format is not RFC3339 结束时间日期格式非RFC3339格式
start time and end time must be in the same time zone 开始时间与结束时间必须是同一时区
out type is required 如果定义中设定了「外出类型」,则外出类型必填
out start time is required 外出开始时间必填
out end time is required 外出结束时间必填
out duration must be greater than 0 外出间隔不能为0请检查起止时间并重新选择
out reason is empty 如果定义中勾选「外出事由」同时设定必填,则该字段必填
photo is required 如果定义中勾选「外出拍照」同时设定必填,则该字段必填
out time is conflict 外出时间有冲突,请确认是否已在该时段申请外出