소스 검색

增加word, excel等文件在线预览功能

QuYueTing 2 달 전
부모
커밋
ec7dd99c1d

+ 0 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveSheetController.java

@@ -60,7 +60,6 @@ public class LeaveSheetController {
 
     /***
      * 获取员工调休时长
-     * @param userName
      * @param request
      * @return
      */

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -1,5 +1,5 @@
 server:
-  port: 10030
+  port: 10010
   tomcat:
     uri-encoding: utf-8
     max-http-form-post-size: -1

+ 29 - 1
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -371,7 +371,13 @@
                         </div>
                     </template>
                 </el-table-column>
-                <el-table-column :label="$t('filenames')" prop="documentName" min-width="180"></el-table-column>
+                <el-table-column :label="$t('filenames')" prop="documentName" min-width="180">
+                    <template slot-scope="scope">
+                        <el-link @click.stop.native="viewOnline(scope.row)">
+                            {{scope.row.documentName}}
+                        </el-link>
+                    </template>
+                </el-table-column>
                 <el-table-column :label="$t('filesize')" prop="size" min-width="80" align="center"></el-table-column>
                 <el-table-column :label="$t('founder')" prop="creatorName" min-width="60" align="center">
                     <template slot-scope="scope">
@@ -967,6 +973,28 @@ export default {
     this.timess();
   },
   methods: {
+    viewOnline(row) {
+        sessionStorage.setItem("fileName",row.documentName);
+        sessionStorage.setItem("fileUrl",row.url);
+        let routeUrl;
+        if (row.documentName.endsWith('.doc') || row.documentName.endsWith('.docx')) {
+            routeUrl = this.$router.resolve({
+                path: "/viewWord",
+                params: {}
+            });
+        } else if (row.documentName.endsWith('.xls') || row.documentName.endsWith('.xlsx')) {
+            routeUrl = this.$router.resolve({
+                path: "/viewExcel",
+                params: {}
+            });
+        } 
+        if (routeUrl != null) {
+            console.log(routeUrl.href);
+            window.open(routeUrl.href, '_blank');
+        } else {
+            window.open(row.url, '_blank');
+        }
+    },
     // 容器的滚动事件
     handleScroll() {
         const scrollTop = this.$refs.container.scrollTop

+ 16 - 3
fhKeeper/formulahousekeeper/timesheet/src/routes.js

@@ -47,6 +47,8 @@ import role from './views/role/role';
 import finance from './views/project/finance';
 import Market from './views/market/list';
 import PdfView from './views/pdf/pdfview';
+import viewWord from './views/onlineview/viewWord.vue';
+import viewExcel from './views/onlineview/viewExcel.vue';
 
 // 费用报销
 import expense from './views/expense/expense';
@@ -154,13 +156,24 @@ export const fixedRouter = [
         name: '项目甘特图',
         hidden: true
     },
+    // {
+    //     path: '/viewonline',
+    //     component: PdfView,
+    //     name: '',
+    //     hidden: true
+    // },
     {
-        path: '/viewonline',
-        component: PdfView,
+        path: '/viewWord',
+        component: viewWord,
+        name: '',
+        hidden: true
+    },
+    {
+        path: '/viewExcel',
+        component: viewExcel,
         name: '',
         hidden: true
     },
-    
 ];
 export const allRouters = [//组织架构
     //工时报告

+ 49 - 28
fhKeeper/formulahousekeeper/timesheet/src/views/project/fileCenter.vue

@@ -20,12 +20,11 @@
             <el-table :data="recentFiles" highlight-current-row :height="tableHeight">
                 <el-table-column prop="documentName" :label="$t('recentdocuments')" sortable="true">
                     <template slot-scope="scope">
-                        <!-- <el-link @click.stop.native="viewOnline(scope.row)"> -->
+                        <el-link @click.stop.native="viewOnline(scope.row)">
                         <i v-if="scope.row.documentType == -1" class="iconfont firerock-iconfile fileTypeIcon"></i>
                         <i v-if="scope.row.documentType != -1" :class="docTypeList[scope.row.documentType]+' fileTypeIcon'" ></i>
                         <span style="margin-left:8px;color:#262626;" >{{scope.row.documentName}}</span>
-                        <!-- <span style="margin-left:8px;color:#262626;" @click="viewOnline(scope.row)">{{scope.row.documentName}}</span> -->
-                        <!-- </el-link> -->
+                        </el-link>
                     </template>
                 </el-table-column>
                 <el-table-column width="60">
@@ -44,11 +43,11 @@
                             <i class="el-icon-folder fileTypeIcon"></i><span style="margin-left:8px;color:#262626;" >{{scope.row.documentName}}</span>
                         </div>
                         <div v-if="scope.row.isFolder==0">
-                            <!-- <el-link @click.stop.native="viewOnline(scope.row)"> -->
+                            <el-link @click.stop.native="viewOnline(scope.row)">
                             <i v-if="scope.row.documentType == -1" class="iconfont firerock-iconfile fileTypeIcon"></i>
                             <i v-if="scope.row.documentType != -1" :class="docTypeList[scope.row.documentType]+' fileTypeIcon'"></i>
                             <span style="margin-left:8px;color:#262626;" >{{scope.row.documentName}}</span>
-                            <!-- </el-link> -->
+                            </el-link>
                         </div>
                     </template>
                 </el-table-column>
@@ -601,31 +600,53 @@
             cursorOver(row, column, cell, event) {
                 this.currentDataId = row.id;
             },
+            // viewOnline(row) {
+            //     this.http.post('/pdf-file/getProjectFile', {fileId: row.id},
+            //     res => {
+            //         if (res.code == "ok") {
+            //             console.log(res.data+'----'+row.documentName);
+            //             let routeUrl = this.$router.resolve({
+            //                 path: "/viewonline",
+            //                 params: {serverFname:res.data, fileName:row.documentName}
+            //             });
+            //             sessionStorage.setItem("serverFname",res.data);
+            //             sessionStorage.setItem("fileName",row.documentName);
+            //             console.log(routeUrl.href);
+            //             window.open(routeUrl.href, '_blank');
+            //         } else {
+            //             this.$message({
+            //                 message: res.msg,
+            //                 type: 'error'
+            //             });
+            //         }
+            //     }, error => {
+            //         this.$message({
+            //             message: error,
+            //             type: 'error'
+            //         });
+            //     })
+            // },
             viewOnline(row) {
-                this.http.post('/pdf-file/getProjectFile', {fileId: row.id},
-                res => {
-                    if (res.code == "ok") {
-                        console.log(res.data+'----'+row.documentName);
-                        let routeUrl = this.$router.resolve({
-                            path: "/viewonline",
-                            params: {serverFname:res.data, fileName:row.documentName}
-                        });
-                        sessionStorage.setItem("serverFname",res.data);
-                        sessionStorage.setItem("fileName",row.documentName);
-                        console.log(routeUrl.href);
-                        window.open(routeUrl.href, '_blank');
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: 'error'
-                        });
-                    }
-                }, error => {
-                    this.$message({
-                        message: error,
-                        type: 'error'
+                sessionStorage.setItem("fileName",row.documentName);
+                sessionStorage.setItem("fileUrl",row.url);
+                let routeUrl;
+                if (row.documentName.endsWith('.doc') || row.documentName.endsWith('.docx')) {
+                    routeUrl = this.$router.resolve({
+                        path: "/viewWord",
+                        params: {}
                     });
-                })
+                } else if (row.documentName.endsWith('.xls') || row.documentName.endsWith('.xlsx')) {
+                    routeUrl = this.$router.resolve({
+                        path: "/viewExcel",
+                        params: {}
+                    });
+                } 
+                if (routeUrl != null) {
+                    console.log(routeUrl.href);
+                    window.open(routeUrl.href, '_blank');
+                } else {
+                    window.open(row.url, '_blank');
+                }
             },
             deleteItem(row) {
                 this.$confirm(this.$t('wanttomove'), this.$t('other.prompts'), {

+ 34 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -251,7 +251,11 @@
                     </el-table-column>
                     <el-table-column label="文件名称" v-if="documentRadios == '待他人审核'">
                         <template slot-scope="scope">
-                            {{ scope.row.documentName }}
+                            <template slot-scope="scope">
+                                <el-link @click.stop.native="viewOnline(scope.row)">
+                                    {{scope.row.documentName}}
+                                </el-link>
+                            </template>
                         </template>
                     </el-table-column>
                     <el-table-column prop="executorName" :label="$t('zhi-hang-ren')" sortable>
@@ -415,7 +419,13 @@
         <el-dialog title="文件审核" :visible.sync="viewFilesAndReviewThemVisable" width="1000px">
             <el-table :data="viewFilesAndReviewThemRejectList" style="width: 100%" height="500px" @selection-change="handleSelectionChange" :key="viewFilesAndReviewThemkey">
                 <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column :label="$t('filenames')" prop="documentName" min-width="180"></el-table-column>
+                <el-table-column :label="$t('filenames')" prop="documentName" min-width="180">
+                    <template slot-scope="scope">
+                        <el-link @click.stop.native="viewOnline(scope.row)">
+                            {{scope.row.documentName}}
+                        </el-link>
+                    </template>
+                </el-table-column>
                 <el-table-column :label="$t('filesize')" prop="size" min-width="80" align="center"></el-table-column>
                 <el-table-column :label="$t('founder')" prop="creatorName" min-width="60" align="center">
                     <template slot-scope="scope">
@@ -827,6 +837,28 @@ import { getThemeColor } from '@/utils/commonMethod.js'
             };
         },
         methods: {
+            viewOnline(row) {
+                sessionStorage.setItem("fileName",row.documentName);
+                sessionStorage.setItem("fileUrl",row.url);
+                let routeUrl;
+                if (row.documentName.endsWith('.doc') || row.documentName.endsWith('.docx')) {
+                    routeUrl = this.$router.resolve({
+                        path: "/viewWord",
+                        params: {}
+                    });
+                } else if (row.documentName.endsWith('.xls') || row.documentName.endsWith('.xlsx')) {
+                    routeUrl = this.$router.resolve({
+                        path: "/viewExcel",
+                        params: {}
+                    });
+                } 
+                if (routeUrl != null) {
+                    console.log(routeUrl.href);
+                    window.open(routeUrl.href, '_blank');
+                } else {
+                    window.open(row.url, '_blank');
+                }
+            },
             urgingCli() {
                 const ids = this.selectFilesed.map(item => item.finalChargeId).join(',')
                 this.urgingLoading = true