# 表單操作相關接口
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
- 自定義控件
- 后端
- 移動端
- 前端編譯
- 表單運行態接口
- 協同云