Skip to content

概述

由于平台对数据表附件字段访问规则的限制,视图中无法展示附件签名字段的预览图, 此时我们需要对数据进行处理,再附件和签名字段上附加以下字段

字段标识符名称
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数据表标识符字段标识符信息渲染