# 表单操作相关接口
csdk.core里面封装了对表单数据操作的各种常用接口
> ## csdk.core.getFieldData
| 说明 | 参数 | 返回值 | 支持详情 |
| :--- | :--- | :--- | :--- |
| 获取表单指定字段的数据,如果只主表只需要传入fieldId 参数,如果是明细表,还需要传入tableName和recordId<br>**[注]必须在表单事件、钩子内使用** | {fieldId,tableName,recordId} <br> **fieldId** { string } 字段id,如field0001 <br> **tableName** { string } 明细表名<br>**recordId** { string } 明细表行记录id | data { object } | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
//获取主表字段为field0001的数据
var opts = {fieldId: 'field0001'};
var data = csdk.core.getFieldData(opts);
//获取明细表formson_0001,明细行记录号为987654321,并且字段为field0001的数据
opts = {
fieldId: 'field0001',
tableName:'formson_0001',
recordId:'123456789'
};
var data = csdk.core.getFieldData(opts);
```
<br>
> ## csdk.core.getFormData
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 获取整个表单的数据 | 空 | data { object } | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
var data = csdk.core.getFormData();
//注意,此接口涉及到大量数据克隆,使用时千万不要高频次调用
```
<br>
> ## csdk.core.getMetaData
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 获取表单,affairId,templateId,moduleId以及视图权限等信息 | 空 | metaData { object } | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
var metaData = csdk.core.getMetaData();
//metaData格式如下
{
rightId, //权限id
moduleId, //有流程的时候为summaryId,无流程中为主数据Id,即contentDataId
moduleType, //值为'1','42'等
contentDataId, //表单主数据Id
contentTemplateId, //表单定义信息id,后台form bean的id,即模板id
moduleTemplateId, //应用绑定id
//affairId属性只在有流程中存在
affairId //个人待办Id
}
```
<br>
> ## csdk.core.getSubmitData
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 获取需要提交到后台的表单数据,此数据是经过瘦身的数据,key,value的格式 | 空 | data { object } | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
var submitData = csdk.core.getSubmitData();
```
<br>
> ## csdk.core.setFieldData
- **参数:**<font color=#34495e>csdk.core.setFieldData(data) data={fieldId, fieldData, tableName?, recordId?}或[{fieldId, fieldData, tableName?, recordId?}]</font>
<font color=#e96900>@param data { object |Array } 需要设置的字段对象值,格式为数组或对象,如果传入的是数组,即同时对多个字段进行值的设置,如果传入的单个对象,即值设置一个字段的值</font>
<font color=#e96900> data.fieldId { string } 字段id,如field0001</font>
<font color=#e96900> data.fieldData { object } 设置的字段数据,对象格式,可以设置value、display、auth等属性,下述例子有说明</font>
<font color=#e96900> data.tableName { string } 明细表名,主表不需要传入此参数</font>
<font color=#e96900> data.recordId { string } 明细表行记录id,主表不需要传入此参数</font>
- **返回值:**<font color=#e96900>undefined</font>
- **说明:**<font color=#34495e>设置表单字段数据,可以是一个字段或者多个字段一起设置。fieldData仅支持的字段属性为“value”, “display”, “placeHolder”, “auth”, “atts”,详细说明参照下述示例</font>
- **支持版本:**<font color=#34495e>v7.1SP1+ [CAP4、CAP3] </font>
- **示例:**
```javascript
var data = {
fieldId: 'field0001',
fieldData: {
value: '2019-05-01', //数据值,存入数据库中的value值
display: '2019年5月1日', //字段渲染在页面上的显示值,通常是经过format后的值
placeHolder: '请选择日期', //input或其它控件输入提示语
auth: 'browse', //字段权限,只能修改为browse(浏览)或hide(隐藏),
//如果被设置字段是必填且为空时,不能修改字段权限
atts:[] //图片、文档、附件等附件类型字段的附件信息
}
};
//设置单个主表字段值
csdk.core.setFieldData(data);
//设置单个明细表字段值
var data = {
fieldId: 'field0010',
tableName: 'formson_0001',
recordId: '123456789',
fieldData: {...}
};
var data = [ {
fieldId: 'field0001',
fieldData: {...}
},
{
fieldId: 'field0010',
tableName: 'formson_0001',
recordId: '123456789',
fieldData: {...}
} ];
//同时设置多个字段值
csdk.core.setFieldData(data);
```
<br>
> ## csdk.core.patchData
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 根据后台接口返回的data数据,更新表单前端渲染视图,注意,此接口使用的数据一定是经过后台接口返回的格式,并且格式不能随意修改 | data { object } 参照后台接口返回的数据格式 | undefined | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
$.ajax({
url,
...,
success(res) {
//这里通过后台接口拿到数据,直接将原始数据格式传入patchData
csdk.core.patchData(res.data);
}
});
//后台接口返回的数据格式
{
"code": 0,
"data": {
"code": "2000",
"data": {
"tableData": {
"formmain_0039": {
"update": {
"field0008": {
"showValue": "11",
"showValue2": "11",
"relationData": {
"imgShow": "1",
"viewThrough": "1",
"toMasterDataId": "5349687614034585905"
},
"relationInfo": {
"toFormType": "42",
"fillInRow": "0",
"buttonName": "插入文本1",
"pcView": "2955061720904059008.-7526562575306899268",
"relationShipId": "-4677381009382161664",
"phoneView": "-3291413942012787928.-79988990681201604",
"mainSelector": "field0008",
"fieldInfo": "field0008",
"mainSelectorDisplay": "文本1",
"toVersion": "default_form"
},
"value": "11"
}
}
}
}
},
"message": "the operation is success!!!"
},
"message": ""
}
```
<br>
> ## csdk.core.preSave
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 预提交接口,调用此接口时,表单会向后台请求预提交数据接口,待后台响应完成后再通过回调通知使 用者,无论是成功或失败都会进入回调 | callback { Function } 调用预提交时传入的回调函数,无论成功与否都进入此回调,接收两个参数err和data,第一个参数err为null时表示成功,如果err不为null表示失败 | undefined | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
csdk.core.preSave(function(err, data){
if (err) {
//调用失败
return;
}
//调用成功
//do something
});
```
<br>
> ## csdk.core.getSelectedRecord
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 获取指定明细表当前选中行记录,如果没有选中的记录返回null | tableName { string } 明细表表名 | record { object } | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
var tableName = 'formson_001';
//获取明细表formson_001当前选中行
var curRecord = csdk.core.getSelectedRecord(tableName);
```
<br>
> ## csdk.core.deleteRecord
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 删除目标明细表指定行记录,如果records为true表示删除所有行。此API涉及到后台接口调用,因此在调用过程中会弹出遮罩,调用完成进入回调后遮罩关闭 | csdk.core.deleteRecord(options, callback) <br>**options={ tableName, records}** <br>options { object } 第一个参数为options对象格式 <br> **tableName** { string } 明细表表名 <br>**records** { Array或Boolean } 待删除的明细行记录id集合,如果records为Boolean,并且为true,则表示删除所有行,否则为 Array,如['123456789'] <br>**callback** { Function } 删除记录成功或失败的回调<br>callback接收参数:callback(err)<br>err { null 或 object}:错误信息 | undefined | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
var tableName = 'formson_001';
//删除明细表formson_001所有行记录
csdk.core.deleteRecord({tableName: tableName, records: true}, function(err){
if (err) { //删除失败
return;
}
//删除成功
//do something
});
//删除明细表formson_001当前选中行
var curRecord = csdk.core.getSelectedRecord(tableName);
var curRecordId = curRecord ? (curRecord.id || curRecord.recordId): null;
csdk.core.deleteRecord({tableName: tableName, records: [curRecordId]}, function(err){
if (err) { //删除失败
return;
}
//删除成功
//do something
});
```
<br>
> ## csdk.core.addRecord
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 添加一行空记录到目标明细表指定位置,如果posRecordId为null表示添加到明细表末尾,如果posRecordId有效,则添加到目标行的下一行位置。此API涉及到后台接口调用,因此在调用过程中会弹出遮罩,调用完成进入回调后遮罩关闭。 | **opts** :{ <br/>tableName,<br/>posRecoedId,<br/>records: {}<br/>}<br/>**callback**(err,newRecord) err { null 或 object} 错误信息 <br>newRecord {object } 返回新增的行记录,newRecord.id是后台接口分配的行id号 | undefined | v7.1SP1+ [CAP4、CAP3] <br/>支持多行插入:v8.0+(或v7.1SP1 930+补丁包) |
示例
```javascript
var tableName = 'formson_001'; //在明细表formson_001末尾添加一行空行
var opts = {
tableName: tableName,
posRecordId: null
};
csdk.core.addRecord(opts, function(err, newRecord){
if (err) {
//添加失败
return;
}
//添加成功,取得新记录的id
var newRecordId = newRecord.id || newRecord.recordId;
//do something
});
//添加一行空行到到明细表formson_001当前选中行后面
var curRecord = csdk.core.getSelectedRecord(tableName);
var curRecordId = curRecord ? (curRecord.id || curRecord.recordId) : null;
opts = {
tableName: tableName,
posRecordId: curRecordId,
};
csdk.core.addRecord(opts, function(err, newRecord){
if (err) {
//添加失败
return;
}
//添加成功,取得新记录的id
var newRecordId = newRecord.id || newRecord.recordId;
//do something
});
```
<br>
> ## csdk.core.copyRecord
| 说明 | 参数 | 返回值 | 支持详情 |
| ------------------ | ---- | --------------- | -------- |
| 复制一行记录到目标明细表指定位置,copyRecordId是被复制的行记录号,copyRecordId在记录中找不到或非法,则提示找不到被复制的行记录。posRecordId的作用同接口csdk.core.addRecord一致。此API涉及到后台接口调用,因此在调用过程中会弹出遮罩,调用完成进入回调后遮罩关闭。 | csdk.core.copyRecord(options, callback) <br>**options={ tableName, copyRecordId, posRecordId}** <br>options { object } 第一个参数为options对象格式 <br>**tableName** { string } 明细表表名 <br>**copyRecordId** { string } 被复制的行记录号 <br>**posRecordId** { string 或 null } 新增的明细行插入的 位置,posRecordId为空,则插入到明细表末尾,否则插入到目标位置的下一行 <br>**callback** { Function } 复制行记录成功或失败的回调 | undefined | v7.1SP1+ [CAP4、CAP3] |
示例
```javascript
var tableName = 'formson_001';
var curRecord = csdk.core.getSelectedRecord(tableName);
var curRecordId = curRecord ? (curRecord.id || curRecord.recordId) : null;
var opts = {
tableName: tableName,
copyRecordId: curRecordId,
posRecordId: null,
};
//拷贝明细表formson_001当前选中的行并添加到明细表末尾
csdk.core.copyRecord(opts, function(err, newRecord){
if (err) {
//拷贝失败
return;
}
//拷贝成功,取得新记录的id
var newRecordId = newRecord.id || newRecord.recordId;
//do something
});
//拷贝明细表formson_001当前选中的行并添加到当前选中行后面
opts = {
tableName: tableName,
copyRecordId: curRecordId,
posRecordId: curRecordId,
};
csdk.core.copyRecord(opts, function(err, newRecord){
if (err) {
//拷贝失败
return;
}
//拷贝成功,取得新记录的id
var newRecordId = newRecord.id || newRecord.recordId;
//do something
});
```
- 概要
- 技术介绍
- 框架与环境
- vue开发
- 开发规范
- 前端开发规范
- 总体原则
- HTML规范
- HTML&css规范
- vue编码规范
- Javascript规范
- 后端开发规范
- cap4
- 自定义控件
- 前端2.0(PC+移动)
- PC前端
- 后端
- 移动端
- 移动端接口
- 低版本协同升级到V5 8.0适配说明
- 自定义按钮
- 自定义按钮(无流程)
- 自定义控件(列表插槽)
- 自定义按钮(筛选条件)
- 低版本协同升级到V5 8.0适配说明
- 门户空间
- 门户与栏目挂载
- 栏目开发及流程说明
- 页面模板
- 客开通路及插件体系
- 表单设计器扩展配置
- 使用步骤
- 配置说明
- 事件API
- Demo示例
- 运行态客开通路
- 插件使用步骤
- 插件接口
- 事件接口
- 钩子相关接口
- 表单操作接口
- Demo示例
- 插件机制
- 表单运行态接口(旧)
- 白名单插件
- 版本记录
- vue组件库
- 开发指南
- 开发文档规范
- 业务组件介绍
- 业务组件
- table组件
- 分页组件
- title组件
- 统计排队组件
- code组件
- 条件筛选
- 批量导入
- 上传Excel
- 批量更新
- 批量刷新
- UI组件
- 按钮组件
- 复选组件
- 取色器组件
- 示例组件
- 水平选择组件
- 选图标组件
- 提示组件
- 单选组件
- 搜索组件
- 选择组件
- 穿梭框组件
- 标签组件
- 文本组件
- 树组件
- 验证组件
- 菜单组件
- iframe组件
- toolbar
- 统计组件
- 饼图
- 柱状图
- 图标
- 业务关系开发指南
- 自定义触发
- 自定义关联
- 后端API
- 更新表单数据缓存
- 发起表单流程
- 取得指定表单PDF或截图
- 无流程批量添加
- 无流程批量删除
- 无流程批量更新
- 无流程批量导出
- 客开培训文档
- Vue基础培训
- Vue实战培训
- Vue进阶培训
- VueCLI3培训
- cap3
- 自定义控件
- 后端
- 移动端
- 前端编译
- 表单运行态接口
- 协同云