Selaa lähdekoodia

报告详情添加自定义字段与导出报告功能

zhuliu 2 vuotta sitten
vanhempi
commit
90aeee2bb7

+ 1 - 1
RMS-FrontEnd/src/views/components/articles/index.vue

@@ -138,7 +138,7 @@
               <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview"></i>
           <i class="el-icon-delete" @click.stop="handleRemove"></i></span>
             </span>
-          <el-image ref="image" style="width:100%" :src="dialogImageUrl" :preview-src-list="imgList"></el-image>
+          <el-image ref="image" style="width:100%;height:100%" :src="dialogImageUrl" :preview-src-list="imgList"></el-image>
           </span>
           <i v-else class="el-icon-plus avatar-uploader-icon"></i>
         </el-upload>

+ 94 - 5
RMS-FrontEnd/src/views/layout/index.vue

@@ -41,16 +41,19 @@
         </el-aside>
         <el-container>
           <el-header v-if="!hiddenHeader">
-            <span v-if="header" style="margin-left:20px">
-              <span v-if="!report.taskName"> 报告名称:{{ report.reportName?report.reportName:report.name}}</span>
-              <span v-else>
+            <div v-if="header" style="margin-left:20px;width:100%">
+              <div v-if="!report.taskName" style="display:flex;justify-content: space-between;">
+                <p>报告名称:{{ report.reportName?report.reportName:report.name}}</p>
+                <p class="menus" v-if="report.showMenu"><span v-if="[1,2].includes(report.status)&&[0,1,2,3].includes(report.type)"><el-link @click="handleFields">自定义字段</el-link></span><span v-if="[2,3].includes(report.status)"><el-link @click="exportReport">导出报告</el-link></span></p> 
+              </div>
+              <p v-else>
                 <span > 报告名称:<el-link @click.native="checkReport(report)" style="font-size:16px;vertical-align: inherit;margin-right: 20px;">{{ report.reportName?report.reportName:report.name}}</el-link></span>
                 <span > 任务名称:{{ report.taskName}}</span>
-              </span>
+              </p>
               <!-- <span v-if="!report.taskName"> 报告名称:{{ report.reportName?report.reportName:report.name}}</span>
               <span v-else> 报告名称:<el-link @click.native="checkReport(report)" style="font-size:16px;vertical-align: inherit;margin-right: 20px;">{{ report.reportName?report.reportName:report.name}}</el-link></span>
               <span v-if="report.taskName"> 任务名称:{{ report.taskName}}</span> -->
-            </span>
+            </div>
           </el-header>
           <el-main class="admin-main-box">
             <router-view style=""></router-view>
@@ -62,6 +65,22 @@
         </el-container>
       </el-container>
     </section>
+    <el-dialog width="1000px" title="选择模板" :visible.sync="reportTemplate" :before-close="close1" >
+      <div  v-loading="loadingTemplate"
+        element-loading-text="报告导出中"
+        element-loading-spinner="el-icon-loading"
+      >
+        <Report-Template :reportType="report.type" @getReportTemplateId="getReportTemplateId"></Report-Template>
+          <div slot="footer" class="dialog-footer" style="display: flex;justify-content: flex-end;">
+            <el-button @click="close1">取 消</el-button>
+            <el-button type="primary" @click="submitExport" :loading="btnLoading">确 定</el-button>
+          </div>
+      </div>
+          
+    </el-dialog>
+    <el-dialog width="1100px" title="自定义字段" :visible.sync="setVisible" :before-close="close">
+          <Project-Field :reportId="report.id"></Project-Field>
+    </el-dialog>
   </div>
 </template>
 
@@ -70,14 +89,24 @@ import { mapGetters } from "vuex";
 import UserBar from "./components/UserBar";
 import { webSocket } from "./mixins";
 import Footer from "../components/footer/footer.vue";
+import { downLoad2 } from "@/utils";
+import ReportTemplate from '@/views/report/components/ReportTemplate.vue';
+import ProjectField from '@/views/layout/components/field.vue';
 export default {
   components: {
     Footer,
     UserBar,
+    ReportTemplate,
+    ProjectField
   },
   mixins: [webSocket],
   data() {
     return {
+      setVisible:false,
+      reportTemplate:false,
+      loadingTemplate:false,
+      reportTemplateId:null,
+      btnLoading:false,
       header:false,
       hiddenHeader:false,
       report:{},
@@ -124,6 +153,56 @@ export default {
     // this.getSelect()
   },
   methods: {
+    //自定义字段
+    handleFields() {
+      this.setVisible = true
+    },
+    close(){
+      this.setVisible = false
+    },
+    //导出报告
+    exportReport(){
+      this.reportTemplate = true
+    },
+    getReportTemplateId(val){
+      this.reportTemplateId = val
+    },
+    submitExport(){
+      if (this.reportTemplateId) {
+        this.loadingTemplate=true
+        var a = {
+          reportId : this.report.id,
+          templeId :this.reportTemplateId
+        }
+        this.$api.exportReport(a).then(response => {
+          if (response.code == 200) {
+            this.$message.success('导出成功')
+            downLoad2(response.data)
+            this.reportTemplateId = ''
+            this.reportTemplate = false
+            this.loadingTemplate=false
+          } else{
+            this.$message.error('导出失败,请重试')
+            this.loadingTemplate=false
+          }
+        }).catch(error => {
+          this.$message.error('导出失败,请重试')
+            this.loadingTemplate=false
+        })
+      }else{
+        this.$alert('请选择报告模板', '提示', {
+          confirmButtonText: '确定',
+          callback: action => {
+            
+          }
+        });
+      }
+      
+    },
+    close1(){
+      this.reportTemplateId = null
+      this.reportTemplate = false
+    },
     checkReport(row) {
 			row.type = row.reportType
 			row.name = row.taskName
@@ -187,7 +266,17 @@ export default {
   }
 }
 </script>
+<style>
+    .menus span{
+        margin-right: 10px;
+    }
+    .menus el-link{
+      font-size: 16px;
+      color: black;
+    }
+</style>
 <style lang="scss">
+    
   .tenant .el-input__inner{
     height: 32px;
     line-height: 32px;

+ 1 - 1
RMS-FrontEnd/src/views/report/avoid/avoidAsid/index.vue

@@ -23,7 +23,7 @@
 <script>
 import BasicInformation from '@/views/report/reportDetails/components/basicMessage.vue';
 import SignPatent from '@/views/components/articles/components/features.vue';
-import avoid from '@/views/report/avoid/index.vue';
+import avoid from '@/views/report/avoid/avoidPage/avoidDirection.vue';
 import direction from '@/views/report/avoid/avoidPage/direction.vue';
 import ReportFile from '@/views/report/reportDetails/components/reportFile.vue';
 import TaskDetails from '@/views/report/reportDetails/components/taskDetails.vue';

+ 2 - 7
RMS-FrontEnd/src/views/report/avoid/index.vue

@@ -1,22 +1,18 @@
 <template>
   <div>
-    <avoid-Direction :patentNo="patentNo?patentNo:patentNos" :reportId="reportId?reportId:reportIds" :splitBy="splitBy?splitBy:splitBys" :splitType="splitType?splitType:splitTypes"></avoid-Direction>
+    <avoid-Direction :patentNo="patentNo" :reportId="reportId" :splitBy="splitBy" :splitType="splitType"></avoid-Direction>
   </div>
 </template>
 
 <script>
 import avoidDirection from '@/views/report/avoid/avoidPage/avoidDirection.vue'
 export default {
-  props:['row'],
   components: {
     avoidDirection
   },
   data() {
     return {
-      patentNos:this.row.signPatentNo,
-      reportIds:this.row.id,
-      splitBys:this.row.splitBy,
-      splitTypes:this.row.splitType,
+     
     }
   },
   computed: {
@@ -34,7 +30,6 @@ export default {
     },
   },
   mounted() {
-    console.log(this.row);
   },
   
 }

+ 1 - 0
RMS-FrontEnd/src/views/report/index.vue

@@ -203,6 +203,7 @@ export default {
     //获取选中行参数
     getRow(row){
       row.dictMessage = this.dictMessage
+      row.showMenu = true
       this.$s.setSession('row', row)
       this.$s.setSession('params', row)
       switch(row.type){