本帖最后由 码农一枚 于 2022-3-25 09:50 编辑
前端的包一开始使用15.1.3版本,由于碰到一些控件不能点击的问题,客服反馈说是版本问题,我们就升级到了16.0.2。目前使用该版本创建web-designer,第一次可以正常渲染,但是关闭页签再进入或者刷新页签,designer都不会重新渲染,dom元素为空。只有刷新页面,才会重新渲染。报错如下,说是id已经存在。
创建逻辑与demo一致
- <template>
- <div v-loading="viewLoading" class="app-container account-container">
- <div class="toolbar-container">
- <AccToolBar
- class="acc-bar"
- ref="toolbar"
- direction="left"
- :default-show-buttons="['Back','OnlySave','Preview','Import','Export']"
- @backEvent="backEvent()"
- @onlySaveEvent="saveEvent()"
- @previewEvent="previewEvent()"
- @importEvent="importEvent()"
- @exportExcelEvent="exportEvent()"
- />
- </div>
- <div class="scroll-box-container">
- <div class="report-designer">
- <div ref="designer" id="designer-id" style="width: 100%; height: 100%;" />
- </div>
- </div>
- </div>
- </template>
复制代码
- initWebDesinger() {
- this.viewLoading = true
- const designerOptions = ActiveReports.WebDesigner.createDesignerOptions()
- console.log('templateObject', this.templateObject)
- designerOptions.server.url = process.env.BASE_ARC_API
- designerOptions.reportItemsFeatures.table.autoFillFooter = true
- designerOptions.fileView.visible = false // 将文件工具栏按钮进行隐藏
- designerOptions.documentation.home = 'https://www.grapecity.com/activereports/docs/v15/online-webdesigner/overview.html'
- designerOptions.documentation.reportItemsTransformation =
- 'https://www.grapecity.com/activereports/docs/v14/online-webdesigner/supportedcontrols.html'
- console.log('designerOptions:', designerOptions)
- designerOptions.dataTab.dataSets.canModify = false
- designerOptions.dataTab.dataSources.canModify = false
- designerOptions.dataTab.dataSources.visible = false // 隐藏数据源面板
- // this.$refs.designer.id = this.designerKey()
- designerOptions.language = 'zh'
- designerOptions.restoreUnsavedReport = false // 去除未保存报表恢复功能
- console.log(designerOptions)
- this.viewLoading = true
- ActiveReports.WebDesigner.renderApplication(this.$refs.designer.id, designerOptions).then(res => {
- // 异步方法,调用结束后再执行
- if (this.templateObject.have_file) {
- this.openReportEvent()
- } else {
- this.createReportEvent()
- }
- }).catch(() => {
- this.viewLoading = false
- })
- },
复制代码
后来我使用动态id的方式解决了该问题,关闭重进或者刷新页签都能重新渲染
designerKey() {
return 'designer-' + new Date().getTime()
}
然后在昨天突然创建就不行了,报错信息如下
|