钉钉企业内部应用开发,官方OA审批,新版服务端api,发起审批实例报错:code:Missingvalue,message:value is mandatory for this action; 测试后,如果表单数据内容填写不全会报错: 创建审批实例失败,如果填写全了,就会报错:value is mandatory for this action。其中使用了控件:TableField=》明细控件,感觉和这个有关。 本人用的php开发,使用了官方的例子; 有几点不太明白的: 1、表单数据内容中的子控件列表的用途,比如我的数据是这样的:
$formValue=[
['name'=>'项目','value'=>'测试项目'],
['name'=>'系统单据号','value'=>'CESHI123213132'],
['name'=>'报销人','value'=>'测试报销人'],
['name'=>'单据金额汇总','value'=>300.01],
['name'=>'单据说明','value'=>'测试流程单据'],
['name'=>'单据明细','value'=>[
[['name'=>'费用归类','value'=>'材料'],
['name'=>'名称','value'=>'测试材料'],
['name'=>'税金合计','value'=>20],
['name'=>'数量','value'=>2],
['name'=>'计量单位','value'=>'台'],
['name'=>'未税单价','value'=>100],
['name'=>'未税合计','value'=>200],
['name'=>'供应商','value'=>'测试供应商'],
['name'=>'发生日期','value'=>'2022-6-27'],
['name'=>'原始凭证号','value'=>'12313213'],
['name'=>'凭证照片','value'=>'http://u.cn/123123.png'],
['name'=>'项备注','value'=>'测试备注']],
]],
];
单据明细是使用了明细控件,那么它里面的内容算是子控件列表吗?需不需要用new details()来处理下? 2、我用官方的api测试接口测试,当我输入 name=项目,value=测试项目 这一条数据时,生成的效果是
$formComponentValues0Details0Details0 = new details([
"name" => "项目",
"value" => "测试项目"
]);
$formComponentValues0Details0 = new \AlibabaCloud\SDK\Dingtalk\Vworkflow_1_0\Models\StartProcessInstanceRequest\formComponentValues\details([
"name" => "项目",
"value" => "测试项目",
"details" => [
$formComponentValues0Details0Details0
]
]);
$formComponentValues0 = new formComponentValues([
"name" => "项目",
"value" => "测试项目",
"details" => [
$formComponentValues0Details0
]
]);
看了这个数据,没法理解子控件列表的意思,不知道我上面的数据怎么在系统里生成。按照我的理解,将我的数据用new formComponentValues()循环生成,并赋值给一个数组变量就行,我觉得我不需要使用子控件列表这个东西,但是确实在报错。 希望快速得到官方、道友们的慷慨解答,感谢
测试已解决,方案:``` $detail=[ [['name'=>'费用归类','value'=>'材料'], ['name'=>'名称','value'=>'测试材料'], ['name'=>'税金合计','value'=>'20'], ['name'=>'数量','value'=>'2'], ['name'=>'计量单位','value'=>'台'], ['name'=>'未税单价','value'=>'100'], ['name'=>'未税合计','value'=>'200'], ['name'=>'供应商','value'=>'测试供应商'], ['name'=>'发生日期','value'=>'2022-6-27'], ['name'=>'原始凭证号','value'=>'12313213'], ['name'=>'凭证照片','value'=>['http://test.univoa.com/storage/bxpz/62b6596e7af37.png']], ['name'=>'项备注','value'=>'测试备注']], ]; $formValue=[ ['name'=>'项目','value'=>'测试项目'], ['name'=>'系统单据号','value'=>'CESHI123213132'], ['name'=>'报销人','value'=>'测试报销人'], ['name'=>'单据金额汇总','value'=>'300.01'], ['name'=>'单据说明','value'=>'测试流程单据'], ['name'=>'单据明细','value'=>json_encode($detail,JSON_UNESCAPED_UNICODE)], ];
值需要转换为json格式,其他控件只要是数组的应该都需要转,比如图片控件;然后就是没有子控件列表,直接使用循环```$formValue=[];
foreach($param['formValue'] as $val){
$formValue[]=new formComponentValues($val);
}
``` 或者有子控件的:```foreach($param['formValue'] as $val){
if(isset($val['details'])){
$formValueDetail=[];
foreach($val['details'] as $value){
if(isset($value['details'])){
$details=[];
foreach($value['details'] as $value_1){
$details[]=new details($value_1);
}
$formValueDetail[]=new \AlibabaCloud\SDK\Dingtalk\Vworkflow_1_0\Models\StartProcessInstanceRequest\formComponentValues\details([
'name'=>$value['name'],'value'=>$value['value'],'details'=>$details
]);
}else{
$formValueDetail[]= new \AlibabaCloud\SDK\Dingtalk\Vworkflow_1_0\Models\StartProcessInstanceRequest\formComponentValues\details($value);
}
}
$formValue[]=new formComponentValues(['name'=>$val['name'],'value'=>$val['value'],'details'=>$formValueDetail]);
}else{
$formValue[]=new formComponentValues($val);
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。