DocView.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <div class="doc">
  3. <!-- 此div用来加载PageOffice客户端控件,其中div的高宽及位置就决定了控件的大小及位置 -->
  4. <div style="width:auto; height:900px;" v-html="poHtmlCode"></div>
  5. </div>
  6. </template>
  7. <script>
  8. import request from '@/utils/request'
  9. export default {
  10. name: 'DocView',
  11. data() {
  12. return {
  13. poHtmlCode: '',
  14. open_params: '',
  15. }
  16. },
  17. created: function () {
  18. //使用pageofficectrl.WindowParams获取获取父页面(此项目中为:HomeView.vue)中POBrowser.openWindow()方法的第三个参数的值,获取到的值为string类型
  19. this.open_params = JSON.parse(pageofficectrl.WindowParams);
  20. // 请求后端打开文件
  21. this.openFile().then(response => {
  22. this.poHtmlCode = response;
  23. }
  24. );
  25. },
  26. methods: {
  27. OnPageOfficeCtrlInit() {
  28. //PageOffice的初始化事件回调函数,您可以在这里添加自定义按钮
  29. pageofficectrl.Caption = this.open_params.fileName;
  30. pageofficectrl.AddCustomToolButton("保存", "Save", 1);//其中"Save"对应methods中的Save()函数,并且需要在mounted中挂载。
  31. },
  32. Save() {
  33. //使用SaveFilePage属性设置后端保存方法的Controller路由地址,这个地址必须从"/"开始,并且也可以向此路由地址传递json字符串参数,示例如下:
  34. let saveFileUrl = "/doc/saveFile";
  35. let paramValue = new URLSearchParams(this.open_params);//为了简单起见,这里直接使用打开时的参数。
  36. pageofficectrl.SaveFilePage = `${saveFileUrl}?${paramValue.toString()}`;
  37. //在这里写您保存前的代码
  38. pageofficectrl.WebSave();
  39. //在这里写您保存后的代码,比如判断保存结果pageofficectrl.CustomSaveResult
  40. //alert(pageofficectrl.CustomSaveResult);
  41. },
  42. AfterDocumentOpened() {
  43. //在这里写您文档打开后自动触发的代码
  44. },
  45. openFile() {
  46. //发起GET请求到后端Controller的/doc/openFile路由
  47. return request({
  48. url: '/doc/openFile',
  49. method: 'get',
  50. params: this.open_params
  51. })
  52. }
  53. },
  54. mounted: function () {
  55. //将当前页面methods中定义的函数挂载到PageOffice控件,例如控件触发的事件、自定义按钮触发的函数。
  56. window.POPageMounted = this;//此行必须
  57. }
  58. }
  59. </script>