QuickBi 前后端实现动态接收参数展示页面

        前端页面代码,其中关键参数为pageId和ticket; pageId可以前端菜单配置传输,而ticket则需要后端代码生成;

前端代码

代码运行环境是vue3,visual studio code编辑器;


<template>
    <div class="quickHeight">
      <iframe class="quickbi-iframe-demo"
        :src="`https://qbi.sgss.com.cn/dashboard/view/pc.htm?pageId=${pageId}&accessTicket=${ticket}`" scrolling="no"
        frameborder="0" width="100%" :height="heightData"></iframe>
    </div>
  </template>
  <script>
  
  import { getQuickbiticket } from "@/api/ext/dataQBi";
  
  
  export default {
    data() {
      return {
        iframe: null,
        ticket: "",
        pageId: "",
        heightData: 600,
      };
    },
    computed: {
    },
    created() {
      this.pageId = this.$route.params.pageId
      this.getTicket(this.pageId);
    },
    mounted() {
      // 在仪表板加载之前进行监听
      window.addEventListener('message', this.messageListener);
      this.iframe = document.querySelector('iframe');
    },
    beforeDestroy() {
      window.removeEventListener('message', this.messageListener, false)
    },
    methods: {
      // 请求quickbi ticket
      getTicket(pageId) {
        getQuickbiticket(pageId).then(res => {
          this.ticket = res.data;
        });
      },
    }
  };
  </script>
   
  <style lang="scss" scoped>
  </style>
  

 前端调用后端api,生成ticket返回页面;

import request from '@/axios';

export const getQuickbiticket = (pageId) => {
  return request({
    url: '/system/dataQBi/getTicket',
    method: 'get',
    params: {
        pageId
      }
  })
}

后端代码

idea软件,java8环境;

@RestController
@AllArgsConstructor
@RequestMapping("/dataQBi")
public class DataQBiController extends BladeController {

	@GetMapping("/getTicket")
	@ApiOperationSupport(order = 1)
	@ApiOperation(value = "报表id", notes = "传入pageId")
	public String getTicket (@RequestParam(value = "pageId", defaultValue = "") String pageId)  {
		String ticket = "";
		String account =  String.valueOf(getUser().getAccount());

		try{
			ticket = QuickBiUtils.generateTicket(pageId,account);
		}catch (SDKException e){
			e.printStackTrace();
		}
		return ticket;
	}

}

 具体参数api 自己套用自己公司的;

public class QuickBiUtils {

	private static IOpenAPIClient openAPIClient = HttpClientFactory.buildDefaultClient(
		"https://xxx.com.cn", "asf-123asf", "as-123-safweq", true);

	public static String generateTicket(String worksId ,String accountName)throws SDKException {
		HttpRequest request = null;
		String result = "";
		request = HttpRequest.build()
			.setUri("/openapi/v2/embed/ticket/create")
			.setMethod(HttpMethod.POST);
		request.addParameter("worksId", worksId);
		if (!StringUtils.equals(accountName,"admin")) {
			request.addParameter("accountName", accountName);
		}

		request.addParameter("accountType", "3");
		request.addParameter("ticketNum", 1);//ticket 的票据数量,默认为 1。建议为 1。
		request.setHttpContentType(FormatType.FORM);
		result = openAPIClient.syncExecute(request);
		return result;
	}
}

实现效果

 如果有帮到你,真的是太好了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值