Appearance
概述
由于平台对数据表附件字段访问规则的限制,视图中无法展示附件
和签名
字段的预览图, 此时我们需要对数据进行处理,再附件和签名字段上附加以下字段
字段标识符 | 名称 |
---|---|
appId | 字段值来源的应用ID |
tableId | 字段值来源的数据表标识符 |
fieldId | 字段值来源的字段标识符 |
场景示例
示例数据表
假定应用A(com.test.a)中存在 数据表A(标识符为tablea)和数据表B(tableb)表结构如下
数据表A
字段标识符 | 名称 | 类型 |
---|---|---|
name | 名称 | 单行文本 |
attachment | 附件 | 附件 |
signature | 签名 | 手写签名 |
数据表B
字段标识符 | 名称 | 类型 |
---|---|---|
name | 名称 | 单行文本 |
attachment | 附件 | 附件 |
signature | 签名 | 手写签名 |
数据表B
中的数据来源为来自于脚本,脚本如下
javascript
export function executeQueryList(ctx) {
var list = informat.table.queryList('tablea', {
includeFields: ['attachment', 'signature'],
});
return list;
}
export function executeQueryListCount(ctx) {
return 100;
}
修改上述的查询脚本如下
javascript
export function executeQueryList(ctx) {
var list = informat.table.queryList('tablea', {
includeFields: ['attachment', 'signature']
});
// var appId = informat.app.appId(); // 如果是相同应用可以使用此方法
var appId = informat.app.getAppIdByKey('com.test.a');
var result = list.map(record => {
let attachment = null;
let signature = null;
// 如果是附件是多选则需要使用forEach遍历
if (record.attachment) {
// 数据拷贝
attachment = JSON.parse(informat.utils.toJSON(record.attachment));
attachment = {
...attachment,
appId: appId,
tableId: 'tablea',
fieldId: 'attachment'
};
}
// 如果是签名是多选则需要使用forEach遍历
if (record.signature) {
// 数据拷贝
signature = JSON.parse(informat.utils.toJSON(record.signature));
signature = {
...signature,
appId: appId,
tableId: 'tablea',
fieldId: 'signature'
};
}
return {
id: record.record,
attachment: attachment,
signature: signature
};
});
return list;
}
export function executeQueryListCount(ctx) {
return 100;
}
至此,平台使用端将优先使用附件或签名项中的应用ID、数据表标识符和字段标识符信息渲染