# 表单操作相关接口

csdk.core里面封装了对表单数据操作的各种常用接口

# csdk.core.getFieldData

说明 参数 返回值 支持详情
获取表单指定字段的数据,如果只主表只需要传入fieldId 参数,如果是明细表,还需要传入tableName和recordId
[注]必须在表单事件、钩子内使用 {fieldId,tableName,recordId}

fieldId { string } 字段id,如field0001
tableName { string } 明细表名
recordId { string } 明细表行记录id | data { object } | v7.1SP1+ [CAP4、CAP3] |

示例

//获取主表字段为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);

# csdk.core.getFormData

说明 参数 返回值 支持详情
获取整个表单的数据 data { object } v7.1SP1+ [CAP4、CAP3]

示例

var data = csdk.core.getFormData();
//注意,此接口涉及到大量数据克隆,使用时千万不要高频次调用

# csdk.core.getMetaData

说明 参数 返回值 支持详情
获取表单,affairId,templateId,moduleId以及视图权限等信息 metaData { object } v7.1SP1+ [CAP4、CAP3]

示例

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
}

# csdk.core.getSubmitData

说明 参数 返回值 支持详情
获取需要提交到后台的表单数据,此数据是经过瘦身的数据,key,value的格式 data { object } v7.1SP1+ [CAP4、CAP3]

示例

var submitData = csdk.core.getSubmitData();

# csdk.core.setFieldData

  • **参数:**csdk.core.setFieldData(data) data={fieldId, fieldData, tableName?, recordId?}或[{fieldId, fieldData, tableName?, recordId?}] @param data { object |Array } 需要设置的字段对象值,格式为数组或对象,如果传入的是数组,即同时对多个字段进行值的设置,如果传入的单个对象,即值设置一个字段的值 data.fieldId { string } 字段id,如field0001 data.fieldData { object } 设置的字段数据,对象格式,可以设置value、display、auth等属性,下述例子有说明 data.tableName { string } 明细表名,主表不需要传入此参数 data.recordId { string } 明细表行记录id,主表不需要传入此参数
  • **返回值:**undefined
  • **说明:**设置表单字段数据,可以是一个字段或者多个字段一起设置。fieldData仅支持的字段属性为“value”, “display”, “placeHolder”, “auth”, “atts”,详细说明参照下述示例
  • **支持版本:**v7.1SP1+    [CAP4、CAP3]
  • 示例:
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);

# csdk.core.patchData

说明 参数 返回值 支持详情
根据后台接口返回的data数据,更新表单前端渲染视图,注意,此接口使用的数据一定是经过后台接口返回的格式,并且格式不能随意修改 data { object } 参照后台接口返回的数据格式 undefined v7.1SP1+ [CAP4、CAP3]

示例

$.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": ""
}

//后台接口返回的回填明细表的数据格式 
{
	"code": 0,
	"data": {
		"code": "2000",
		"data": {
			"tableData": {
				"formson_0064": {
					"update": {
						"-2826325192640280451": {
							"field0021": {
								"showValue": "11",
								"showValue2": "11",
								"value": "11"
							}
						}
					}
				}
			}
		},
		"message": "the operation is success!!!"
	},
	"message": ""
}

# csdk.core.preSave

说明 参数 返回值 支持详情
预提交接口,调用此接口时,表单会向后台请求预提交数据接口,待后台响应完成后再通过回调通知使 用者,无论是成功或失败都会进入回调 callback { Function } 调用预提交时传入的回调函数,无论成功与否都进入此回调,接收两个参数err和data,第一个参数err为null时表示成功,如果err不为null表示失败 undefined v7.1SP1+ [CAP4、CAP3]

示例

csdk.core.preSave(function(err, data){
    if (err) {
     //调用失败
     return; 
    }
  //调用成功
    //do something
});

# csdk.core.getSelectedRecord

说明 参数 返回值 支持详情
获取指定明细表当前选中行记录,如果没有选中的记录返回null tableName { string } 明细表表名 record { object } v7.1SP1+ [CAP4、CAP3]

示例

var tableName = 'formson_001'; 
//获取明细表formson_001当前选中行
var curRecord = csdk.core.getSelectedRecord(tableName);

# csdk.core.deleteRecord

说明 参数 返回值 支持详情
删除目标明细表指定行记录,如果records为true表示删除所有行。此API涉及到后台接口调用,因此在调用过程中会弹出遮罩,调用完成进入回调后遮罩关闭 csdk.core.deleteRecord(options, callback)

options={ tableName, records}
options { object } 第一个参数为options对象格式
tableName { string } 明细表表名
records { Array或Boolean } 待删除的明细行记录id集合,如果records为Boolean,并且为true,则表示删除所有行,否则为 Array,如['123456789']
callback { Function } 删除记录成功或失败的回调
callback接收参数:callback(err)
err { null 或 object}:错误信息 | undefined | v7.1SP1+ [CAP4、CAP3] |

示例

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
});

# csdk.core.addRecord

说明 参数 返回值 支持详情
添加一行空记录到目标明细表指定位置,如果posRecordId为null表示添加到明细表末尾,如果posRecordId有效,则添加到目标行的下一行位置。此API涉及到后台接口调用,因此在调用过程中会弹出遮罩,调用完成进入回调后遮罩关闭。 opts :{

tableName,
posRecoedId,
records: {}
}
callback(err,newRecord) err { null 或 object} 错误信息
newRecord {object } 返回新增的行记录,newRecord.id是后台接口分配的行id号 | undefined | v7.1SP1+ [CAP4、CAP3]
支持多行插入:v8.0+(或v7.1SP1 930+补丁包) |

示例

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
});

# csdk.core.copyRecord

说明 参数 返回值 支持详情
复制一行记录到目标明细表指定位置,copyRecordId是被复制的行记录号,copyRecordId在记录中找不到或非法,则提示找不到被复制的行记录。posRecordId的作用同接口csdk.core.addRecord一致。此API涉及到后台接口调用,因此在调用过程中会弹出遮罩,调用完成进入回调后遮罩关闭。 csdk.core.copyRecord(options, callback)

options={ tableName, copyRecordId, posRecordId}
options { object } 第一个参数为options对象格式
tableName { string } 明细表表名
copyRecordId { string } 被复制的行记录号
posRecordId { string 或 null } 新增的明细行插入的 位置,posRecordId为空,则插入到明细表末尾,否则插入到目标位置的下一行
callback { Function } 复制行记录成功或失败的回调 | undefined | v7.1SP1+ [CAP4、CAP3] |

示例

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
});
编撰人:yinyanting、lixianhong