zhuliu 10 bulan lalu
induk
melakukan
5708744a20

+ 1 - 0
public/index.html

@@ -7,6 +7,7 @@
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title><%= htmlWebpackPlugin.options.title %></title>
 </head>
+<script type="text/javascript" src="http://192.168.2.24:9997/web-apps/apps/api/documents/api.js"></script>
 <body>
 <div id="app" ></div>
 </body>

+ 8 - 0
src/api/newApi/file.js

@@ -6,5 +6,13 @@ export default {
   },
   downLoadFile(params, prop = {}) {
     return axios.get('/fileManager/downloadFile', {params},prop)
+  },
+  //获取文件信息
+  getFileData(data){
+    return axios.post('/fileManager/getFileData', data)
+  },
+  //获取jwt加密
+  GetJWT(data){
+    return axios.post('/jwt/Common/GetJWT', data)
   }
 };

+ 38 - 0
src/components/VabOnlyOffice/index.js

@@ -0,0 +1,38 @@
+
+import CryptoJS from "crypto-js";
+
+const SECRET_KEY = 'VI71S3cGtXg96HgFWzQhblz1KwMc1Jzk';
+
+
+export default{
+    methods: {
+        getJWT(json={id:1}){
+            let header = JSON.stringify(
+                {
+                    "alg": "HS256",
+                    "typ": "JWT"
+                }
+            )
+            let payload = JSON.stringify(
+                {
+                    ...json
+                }
+            )
+            let before_sign = this.base64UrlEncode(CryptoJS.enc.Utf8.parse(header))+'.'+this.base64UrlEncode(CryptoJS.enc.Utf8.parse(payload))
+            let signature = CryptoJS.HmacSHA256(before_sign,SECRET_KEY)
+            signature = this.base64UrlEncode(signature)
+            let final_sign = before_sign+'.'+signature
+            return final_sign
+        },
+        base64UrlEncode(str){
+            var encodedSource = CryptoJS.enc.Base64.stringify(str)
+            var reg = new RegExp('/','g')
+            encodedSource = encodedSource.replace(/=+$/,'').replace(/\+/g,'-').replace(reg,'_')
+            return encodedSource
+        }
+    },
+}
+
+
+
+

File diff ditekan karena terlalu besar
+ 291 - 0
src/components/VabOnlyOffice/index.vue


+ 19 - 1
src/router/index.js

@@ -680,7 +680,25 @@ const routes = [
           },
         ],
       },
-
+      //onlyoffice在线编辑
+      {
+        path: '/onlyOffice',
+        name: 'onlyOffice',
+        component: { render(c) { return c('router-view') } },
+        redirect: '/onlyOffice',
+        children: [
+          {
+            path: '/onlyOffice',
+            name:'onlyOffice',
+            meta: {
+              title: '在线编辑',
+              sign: 'onlyOffice',
+              belong: 'onlyOffice'
+            },
+            component: () => import('@/views/components/onlyOffice/index.vue'),
+          },
+        ],
+      },
     ]
   },
 ]

+ 3 - 1
src/utils/axios.js

@@ -120,7 +120,9 @@ _axios.interceptors.response.use(
         message: message
       })
       return Promise.reject(response.data)
-    } else if (code !== 401) {
+    } else {
+      isRefreshing = false
+      return response.data
     }
     // Do something with response data
     // return response;

File diff ditekan karena terlalu besar
+ 121 - 0
src/views/components/onlyOffice/index.vue


+ 27 - 3
src/views/report/components/dialog/exportReport.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-dialog width="1000px" title="选择模板" :visible.sync="reportTemplate" :before-close="close" >
-        <div  v-loading="loadingTemplate" element-loading-text="报告导出中..." element-loading-spinner="el-icon-loading">
+        <div  v-loading="loadingTemplate" element-loading-text="报告生成中..." element-loading-spinner="el-icon-loading">
             <div class="height_100">
                 <el-container>
                     <el-main>
@@ -137,8 +137,32 @@ export default {
         this.$api.exportReport(params).then(response=>{
             if(response.code == 200){
                 this.loadingTemplate = false
-                downLoad2(response.data.data)
-                this.$message.success('导出成功')
+                var obj = this.tableData.find(item=>{return item.id == this.templateId})
+                var referencesName = ''
+                if(obj){
+                    referencesName = this.dictMessage[obj.reportType]
+                }
+                var form = {
+                    fileGuid:response.data.data,
+                    referencesName:referencesName + '报告',
+                    projectId:this.projectId
+                }
+                this.$api.addReferences(form).then(res => {
+                    if (res.code == 200) {
+                        //跳转到编辑界面
+                        let router = this.$router.resolve({
+                            path: '/onlyOffice',
+                            query: {
+                                projectId:this.projectId,
+                                guid:response.data.data,
+                                title:referencesName + '报告'
+                            }
+                        })
+                        window.open(router.href, '_blank')
+                    }
+                })
+                // downLoad2(response.data.data)
+                // this.$message.success('导出成功')
                 this.close()
             }
         }).catch(error=>{

+ 17 - 2
src/views/report/components/reportFile/reportFileTable.vue

@@ -44,9 +44,9 @@
             <template slot-scope="scope">
               <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)">
                 <span @click="handleCommand('e', scope.row)">{{scope.row.ifHaveFinalFile !== false?'编辑':'编辑报告内容'}}</span>
-
                 <el-dropdown-menu slot="dropdown" class="text-align_center">
                   <template v-if="scope.row.ifHaveFinalFile !== false">
+                    <el-dropdown-item command="onlineEdit">编辑文档内容</el-dropdown-item>
                     <el-dropdown-item command="0">下载</el-dropdown-item>
                     <el-dropdown-item command="1">预览</el-dropdown-item>
                   </template>
@@ -351,11 +351,26 @@ export default {
         case 'generateReport'://生成报告
           this.generateReport(row)
           break;
-
+        case 'onlineEdit'://在线编辑文档
+          this.onlineEdit(row)
+          break;
         default:
           break;
       }
     },
+    //在线编辑文档
+    onlineEdit(row){
+      let router = this.$router.resolve({
+        path: '/onlyOffice',
+        query: {
+            projectId:this.projectId,
+            guid:row.fileGuid,
+            fileType:row.type,
+            title:row.referencesName
+        }
+      })
+      window.open(router.href, '_blank')
+    },
     //生成报告
     generateReport(row){
       var message = this.$message({

+ 1 - 1
src/views/report/components/view/table.vue

@@ -44,7 +44,7 @@
                 <span>编辑</span>
                 <el-dropdown-menu slot="dropdown" class="text-align_center">
                   <el-dropdown-item command="0">分享</el-dropdown-item>
-                  <el-dropdown-item command="1" v-if="[2,3].includes(scope.row.status) && scope.row.reportType != 7">导出报告</el-dropdown-item>
+                  <el-dropdown-item command="1" v-if="[2,3].includes(scope.row.status) && scope.row.reportType != 7">生成报告</el-dropdown-item>
                   <el-dropdown-item command="2" v-if="[2,3].includes(scope.row.status)">报告文档</el-dropdown-item>
                   <el-dropdown-item command="16" v-if="[1,2].includes(scope.row.reportType)">检索记录</el-dropdown-item>
                   <el-dropdown-item command="3" v-if="[2].includes(scope.row.status)&&[0,1,2,3].includes(scope.row.reportType)">自定义字段</el-dropdown-item>