找回密码
 立即注册

QQ登录

只需一步,快速开始

MatrixTian 讲师达人认证 悬赏达人认证

高级会员

141

主题

211

帖子

1378

积分

高级会员

积分
1378

微信认证勋章讲师达人元老葡萄悬赏达人

MatrixTian 讲师达人认证 悬赏达人认证
高级会员   /  发表于:2020-8-24 18:11  /   查看:2449  /  回复:0
本帖最后由 Bella.Yuan 于 2023-1-5 19:08 编辑

在Wyn Reports当中,报表自带的工具栏具有导出按钮,用户可以根据需要将报表结果导出为Excel、Word等多种结果。
如果在软件项目中将报表集成到其他的系统中时,需要将报表进行嵌入,且利用主系统的按钮实现报表的导出。
此时,需要通过调用API来实现。
在Wyn Enterprise当中,提供了丰富的API接口,其中,针对导出也可以通过API进行控制。
对于同一张报表,需要根据当前用户的角色控制其是否可以导出及可以导出的格式。

例如:
示例场景:角色为【领导】的用户可以导出,且可以导出为excel、pdf、word、html等多种格式;
角色为【车间员工】,不能导出;
角色为【统计员】,只能导出Excel。

实现类似需要精确控制导出权限的场景,需要按照以下步骤:
1.根据用户角色和角色权限,在报表保存时对报表的导出类型进行设置;
领导:保存时打开所有保存格式类型,保存为:例如:report_领导;
1.png
车间员工:关闭所有保存类型,保存为:例如:report_车间员工;
2.png
统计员:保存时仅选择保存为excel,保存为:例如:report _统计员;
3.png

2.在自定义按钮中,根据用户角色或者外部参数,获取导出权限类型;
权限和导出格式,可以在系统的选型中根据需求定义。
导出API示例:
<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="script.js" charset="utf-8"></script>

</head>
<body>
    <label>报表ID:</label><input id="report_id" type="textbox" name="报表ID" />
    <div class="form-group">
        <label>export types:</label>
        <select id="types" class="form-control">
            <option value="Pdf">Pdf</option>
            <option value="Excel">Excel</option>
            <option value="Html">Html</option>
            <option value="Csv">Csv</option>
            <option value="Json">Json</option>
        </select>
    </div>
    <input type="button" value="导出" />
    <script>
        async function exportDocument() {
            var report_id = document.getElementById("report_id").value;
            var typeElement = document.getElementById("types");
            var type = typeElement.options[typeElement.selectedIndex].value;
            var param = {
                query: 'mutation { exportReport(reportId: "' + report_id + '", exportExtension: "' + type + '", renderPayload: {interactiveActions:"",parameters:[]}) { resultUrl, verificationUrl } }'
            }
            var url = `api/graphql`;
            var exportRes = await serviceApi(url, "POST", param);
            window.open("http://localhost:51980" + exportRes.data.exportReport.resultUrl, '_blank');
        }
    </script>
</body>
</html>

完整代码可直接下载示例代码参考:http://wyn.grapecity.com.cn:8080/WynApiDemo/download/WynApiDemo.zip

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部