该宏代码在V10.5版本上验证通过 本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。 |
通过编写宏打开指定的目标报表页面,并传递参数给目标报表。下面演示了四种打开方式:
<p style="text-align:left;"> <span style="text-decoration:underline;"> <span class="target-content" style="font-family:Microsoft-YaHei;font-size:12px;"> <span style="font-size: 16px;"> 打开内部资源 </span> </span> </span> </p> |
方法一:指定URL链接及打开方式来打开页面
示例主要使用的是 IPage 对象下的openLinkByType方法(点击查看API详情),把下面宏代码复制到代码区域;
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container: HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return let filter:IFilterPortlet = page.getPortletsByTitle('ShipRegion')[0] box.onclick = (e: MouseEvent) => { let value = (filter && filter.getValue() || []).join(',') let params = [{ name: 'ShipRegion', alias: 'ShipRegion', value: value, displayValue: value }] let paramsInfoBase64 = SmartbiXMacro.utils.encodeBase64(JSON.stringify(params)) paramsInfoBase64 = encodeURIComponent(paramsInfoBase64) let query: OpenLinkQuery = { targetInfo: { url: `../vision/openresource.jsp?debug=true&resid=823c20d0f6eb956405b2d05f933d52c9&debug=true¶msInfoBase64=${paramsInfoBase64}`, method: 'POST' } } console.warn(query) // 调用打开接口,接口默认为:新窗口打开'NEW_WIN' page.openLinkByType(query, OpenType.NEW_WIN) } } |
其他三种打开方式同理,依次在各自组件下编写宏代码
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container:HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return box.onclick = (e: MouseEvent) => { // 目标页面参数(参数或者筛选器的值) let query:OpenLinkQuery = { targetInfo: { url: `../smartbix/?integrated=true &showheader=false &l=zh_CN &nodeid=I8a8a9f3b017b4a234a237359017b4a3ef45200d2 &commandid=2abccff5-1a82-1871-a9b4-5c735d2d8942 #/page/823c20d0f6eb956405b2d05f933d52c9`, method: 'GET' } } //如果get方式要传递参数,参考如下 // let query:OpenLinkQuery = { // targetInfo: { // url: `../vision/openresource.jsp`, // method: 'GET', // params: [{name: 'resid', alias: 'resid', value: ['823c20d0f6eb956405b2d05f933d52c9'], displayValue: ['823c20d0f6eb956405b2d05f933d52c9']}] // } // } // 调用打开接口,接口默认值为:新窗口打开'NEW_WIN',设置为浮动框打开 page.openLinkByType(query, OpenType.DIALOG) } } |
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container:HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return let filter: IFilterPortlet = page.getPortletsByTitle('ShipRegion')[0] box.onclick = (e: MouseEvent) => { // 目标页面参数(参数或者筛选器的值) let value = (filter && filter.getValue() || []) let params = [{ name: 'ShipRegion', alias: 'ShipRegion', value: value, displayValue: value }] let query:OpenLinkQuery = { targetInfo: { url: `../smartbix/?integrated=true &showheader=false &l=zh_CN &nodeid=I8a8a9f3b017b4a234a237359017b4a3ef45200d2 &commandid=2abccff5-1a82-1871-a9b4-5c735d2d8942 #/page/823c20d0f6eb956405b2d05f933d52c9`, method: 'GET', params: params } } // 调用打开接口,接口默认为:新窗口打开'NEW_WIN',设置为替换源页面打开 page.openLinkByType(query, OpenType.COVER_SELF) } } |
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container:HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return let filter:IFilterPortlet = page.getPortletsByTitle('ShipRegion')[0] box.onclick = (e: MouseEvent) => { // 目标页面参数(参数或者筛选器的值) let value = (filter && filter.getValue() || []).join(',') let params = [{ name: "ShipRegion", alias: "ShipRegion", value: value, displayValue: value }, { name: 'ShipRegion', alias: 'ShipRegion', value: value, displayValue: value }] let paramsInfoBase64 = SmartbiXMacro.utils.encodeBase64(JSON.stringify(params)) paramsInfoBase64 = encodeURIComponent(paramsInfoBase64) let query:OpenLinkQuery = { targetInfo: { url: `../vision/openresource.jsp?resid=I8a8a9f3b017b4a234a237359017b4a6694800181¶msInfoBase64=${paramsInfoBase64}`, method: 'POST', title: '用宏打开的页面' } } // 调用打开接口,接口默认为:新窗口打开'NEW_WIN',设置为新TAB页打开 page.openLinkByType(query, OpenType.NEW_TAB) } } |
方法二:指定资源id和打开方式来打开页面
示例主要使用的是 IPage 对象下的openResourceByType方法(点击查看API详情),把下面宏代码复制到代码区域;
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container:HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return let filter: IFilterPortlet = page.getPortletsByTitle('ShipRegion')[0] box.onclick = (e: MouseEvent) => { // 目标资源id let id: string = '823c20d0f6eb956405b2d05f933d52c9' let value = filter.getValue() || [] // 目标资源参数(参数或者筛选器的值) let query: OpenResourceQuery = { paramInfo: [{name: 'ShipRegion', alias: 'ShipRegion', value: value, displayValue: value}] } // 调用打开资源接口,默认为:新窗口打开'NEW_WIN' page.openResourceByType(id, query, OpenType.NEW_WIN) } } |
其他三种打开方式同理,依次在各自组件下编写宏代码
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container:HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return let filter: IFilterPortlet = page.getPortletsByTitle('ShipRegion')[0] box.onclick = (e: MouseEvent) => { // 目标资源id let id: string = 'I8a8a9f3b017b4a234a237359017b4a6694800181' let value = filter.getValue() // 目标资源参数(参数或者筛选器的值) let query: OpenResourceQuery = { paramInfo: [{name: 'ShipRegion', alias: 'ShipRegion', value: value, displayValue: value}] } // 调用打开资源接口 page.openResourceByType(id, query , OpenType.DIALOG) } } |
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container:HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return let filter: IFilterPortlet = page.getPortletsByTitle('ShipRegion')[0] box.onclick = (e: MouseEvent) => { // 目标资源id let id: string = '823c20d0f6eb956405b2d05f933d52c9' let value = filter.getValue() // 目标资源参数(参数或者筛选器的值) let query: OpenResourceQuery = { paramInfo: [{name: 'ShipRegion', alias: 'ShipRegion', value: value, displayValue: value}] } // 调用打开资源接口 page.openResourceByType(id, query, OpenType.COVER_SELF) } } |
function main(page: IPage, portlet: IStaticTextPortlet) { // 获取富文本编辑器的dom let container:HTMLElement = portlet.getHtmlContent() // 插入点击区域用于点击打开 let box: any = container.querySelector('.target-content') if (!box) return let filter:IFilterPortlet = page.getPortletsByTitle('ShipRegion')[0] box.onclick = (e: MouseEvent) => { // 目标资源id let id: string = '823c20d0f6eb956405b2d05f933d52c9' let value = filter.getValue() // 目标资源参数(参数或者筛选器的值) let query: OpenResourceQuery = { paramInfo: [{name: 'ShipRegion', alias: 'ShipRegion', value: value, displayValue: value}] } // 调用打开资源接口 page.openResourceByType(id, query, OpenType.NEW_TAB) } } |