فهرست منبع

添加PageOffice

wucl 8 ماه پیش
والد
کامیت
48e1da5044
6فایلهای تغییر یافته به همراه100 افزوده شده و 4207 حذف شده
  1. 12 4203
      package-lock.json
  2. 1 0
      package.json
  3. 63 0
      src/components/PageOffice/index.vue
  4. 5 0
      src/router/index.js
  5. 5 0
      src/utils/request.js
  6. 14 4
      src/views/house/workbench/consignor.vue

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 12 - 4203
package-lock.json


+ 1 - 0
package.json

@@ -14,6 +14,7 @@
     "axios": "^1.7.7",
     "element-plus": "^2.8.5",
     "js-cookie": "^3.0.5",
+    "js-pageoffice": "6.3.2",
     "pinia": "^2.2.4",
     "pinia-plugin-persistedstate": "^4.1.1",
     "unplugin-auto-import": "^0.18.3",

+ 63 - 0
src/components/PageOffice/index.vue

@@ -0,0 +1,63 @@
+<template>
+    <div class="doc">
+      <!-- 此div用来加载PageOffice客户端控件,其中div的高宽及位置就决定了控件的大小及位置 -->
+      <div style="width:auto; height:900px;" v-html="poHtmlCode"></div>
+      2323
+    </div>
+  </template>
+ 
+  <script>
+  import request from '@/utils/request'
+  export default {
+    name: 'DocView',
+    data() {
+      return {
+        poHtmlCode: '',
+        open_params: '',
+      }
+    },
+    created: function () {
+      //使用pageofficectrl.WindowParams获取获取父页面(此项目中为:HomeView.vue)中POBrowser.openWindow()方法的第三个参数的值,获取到的值为string类型
+      this.open_params = JSON.parse(pageofficectrl.WindowParams);
+      // 请求后端打开文件
+      this.openFile().then(response => {
+        this.poHtmlCode = response;
+      }
+      );
+ 
+    },
+    methods: {
+      OnPageOfficeCtrlInit() {
+        //PageOffice的初始化事件回调函数,您可以在这里添加自定义按钮
+        pageofficectrl.Caption = this.open_params.fileName;
+        pageofficectrl.AddCustomToolButton("保存", "Save", 1);//其中"Save"对应methods中的Save()函数,并且需要在mounted中挂载。
+      },
+      Save() {
+        //使用SaveFilePage属性设置后端保存方法的Controller路由地址,这个地址必须从"/"开始,并且也可以向此路由地址传递json字符串参数,示例如下:
+        let saveFileUrl = "/doc/saveFile";
+        let paramValue = new URLSearchParams(this.open_params);//为了简单起见,这里直接使用打开时的参数。
+        pageofficectrl.SaveFilePage = `${saveFileUrl}?${paramValue.toString()}`;
+        //在这里写您保存前的代码
+        pageofficectrl.WebSave();
+        //在这里写您保存后的代码,比如判断保存结果pageofficectrl.CustomSaveResult
+        //alert(pageofficectrl.CustomSaveResult);
+      },
+      AfterDocumentOpened() {
+        //在这里写您文档打开后自动触发的代码
+      },
+      openFile() {
+        //发起GET请求到后端Controller的/doc/openFile路由
+        return request({
+          url: '/doc/openFile',
+          method: 'get',
+          params: this.open_params
+        })
+      }
+    },
+    mounted: function () {
+      //将当前页面methods中定义的函数挂载到PageOffice控件,例如控件触发的事件、自定义按钮触发的函数。
+      window.POPageMounted = this;//此行必须
+    }
+  }
+  </script>
+ 

+ 5 - 0
src/router/index.js

@@ -198,6 +198,11 @@ const routes = [
     ],
 
   },
+  {
+    path: '/showDoc',
+    name: 'doc',
+    component: () => import('../components/PageOffice/index.vue')
+  }
 ]
 
 const router = createRouter({

+ 5 - 0
src/utils/request.js

@@ -3,6 +3,8 @@ import axios from 'axios'
 // import { userStore } from '@/stores/userStore'
 import { getToken, removeToken } from '@/utils/auth'
 
+import { POBrowser } from "js-pageoffice";
+
 // create an axios instance
 const service = axios.create({
   // Vite默认不支持process
@@ -19,6 +21,9 @@ service.interceptors.request.use(
       // 设置请求带上token
       config.headers['token'] = getToken()
     }
+    POBrowser.setProxyBaseAPI("/api");
+    //必须。向PageOffice后端请求设置header,支持多次调用setHeader()设置更多的值,具体属性名称和属性值以您实际开发为准。
+    POBrowser.setHeader("Authorization", "Bearer " + getToken()); 
     return config
   },
   error => {

+ 14 - 4
src/views/house/workbench/consignor.vue

@@ -19,6 +19,7 @@
         </div>
         <SwitchButton :nextPath="nextPath" :nextDo="genarate"></SwitchButton>
         <Steps :stepArray="stepArray" ref="steps" :stepsDialogVisible="stepDialog"></Steps>
+        <el-button @click="openPageoffice">OFFICE</el-button>
     </div>
 </template>
 
@@ -28,13 +29,13 @@ import SheetView from '../../../components/SheetView/index.vue'
 import houseGuarantyfrom from '@/api/houseGuaranty';
 import { downloadCollect1 } from '@/api/fileUpload'
 import fileUtil from '@/utils/file'
- import Steps from '../../../components/Steps/index.vue'
-
+import Steps from '../../../components/Steps/index.vue'
+import { POBrowser } from 'js-pageoffice'
 export default {
     components: {
         SwitchButton,
         SheetView,
-        Steps
+        Steps,
     },
 
     data() {
@@ -156,7 +157,16 @@ export default {
 
         downloadCollect1(){
             fileUtil.download("/file/download/house/guaranty/collect1");
-        }
+        },
+        openPageoffice(fileName,fileUrl) {
+            let paramJson={};
+            paramJson.fileName='gen1';
+            paramJson.fileUrl='gen1.docx';
+            let paramString=JSON.stringify(paramJson);
+            //openWindow()第三个参数用来向弹出的PageOffice浏览器(POBrowser)窗口传递参数(参数长度不限),支持json格式字符串。
+            //此处为了方便演示,我们传递了file_id和file_name两个参数,具体以您实际开发为准。
+            POBrowser.openWindow('/showDoc', 'width=1150px;height=900px;',paramString);
+        },
     }
 }