Ver Fonte

Merge branch 'dev' of http://1.116.113.26:8088/zhuliu/RMS-FrontEnd into dev

zhuhao há 2 anos atrás
pai
commit
5d846b004c

+ 1 - 1
RMS-FrontEnd/src/config/index.js

@@ -1,5 +1,5 @@
 export default {
     baseURL: "/api",
     host: window.location.host,
-    staticURL: process.env.NODE_ENV === 'production' ? 'http://139.224.24.90:8084' : (process.env.NODE_ENV === 'test'?'http://139.224.24.90:8083':'http://192.168.1.13:8885'),
+    staticURL: process.env.NODE_ENV === 'production' ? 'http://139.224.24.90:8084' : (process.env.NODE_ENV === 'test'?'http://139.224.24.90:8083':'http://139.224.24.90:8084'),
 }

+ 10 - 5
RMS-FrontEnd/src/router/index.js

@@ -115,7 +115,8 @@ const routes = [
         path: '/Incomplete',
         name:"Incomplete",
         meta:{
-          aside:true
+          aside:true,
+          showHeader:true
         },
         component: () => import('@/views/task/components/Incomplete.vue'),
       },
@@ -124,7 +125,8 @@ const routes = [
         path: '/ContrastIndex/:id',
         name:"ContrastIndex/:id",
         meta:{
-          aside:true
+          aside:true,
+          showHeader:true
         },
         component:() => import('@/views/task/components/contrastPatent.vue'),
       },
@@ -133,7 +135,8 @@ const routes = [
         path: '/FTOContrast/:id',
         name:"FTOContrast/:id",
         meta:{
-          aside:true
+          aside:true,
+          showHeader:true
         },
         component:() => import('@/views/report/FTO/FTOPage/FTOContrast.vue'),
       },
@@ -225,7 +228,8 @@ const routes = [
         name:"Incompletes",
         meta:{
           allowPath:true,
-          aside:true
+          aside:true,
+          showHeader:true
         },
         component: () => import('@/views/task/components/Incomplete.vue'),
       },
@@ -234,7 +238,8 @@ const routes = [
         name:"FTOContrasts/:id",
         meta:{
           allowPath:true,
-          aside:true
+          aside:true,
+          showHeader:true
         },
         component:() => import('@/views/report/FTO/FTOPage/FTOContrast.vue'),
       },

+ 6 - 0
RMS-FrontEnd/src/views/layout/components/UserBar.vue

@@ -10,6 +10,7 @@
         <el-dropdown-menu>
           <!-- <el-dropdown-item command="userinfo">个人信息</el-dropdown-item> -->
           <el-dropdown-item command="changePwd" v-if="$permission('/admin/updatePassword')" >修改密码</el-dropdown-item>
+          <el-dropdown-item command="AnalysisSystem">分析系统</el-dropdown-item>
           <el-dropdown-item command="set">设置</el-dropdown-item>
           <el-dropdown-item divided command="doLogout">退出登录</el-dropdown-item>
         </el-dropdown-menu>
@@ -132,6 +133,11 @@ export default {
           this.resetChangePwdRuleForm()
           this.changePwdDialogVisible = true
           break;
+        case 'AnalysisSystem':
+          // window.open('http://139.224.24.90:80/workspace?token='+this.userinfo.token)
+          
+          window.open('http://139.224.24.90:80/workspace')
+          break; 
         case 'set'://设置中自定义字段
           this.setVisible = true
           break;

+ 25 - 2
RMS-FrontEnd/src/views/layout/index.vue

@@ -40,7 +40,9 @@
           </el-menu>
         </el-aside>
         <el-container>
-          <el-header></el-header>
+          <el-header>
+            <span v-if="header" style="margin-left:20px">所属报告:<el-link @click.native="checkReport(report)" style="font-size:16px;vertical-align: inherit;">{{ report.reportName}}</el-link></span>
+          </el-header>
           <el-main class="admin-main-box">
             <router-view style=""></router-view>
           </el-main>
@@ -67,6 +69,8 @@ export default {
   mixins: [webSocket],
   data() {
     return {
+      header:false,
+      report:{},
       isCollapse: true,
       activeMenu: this.$route.meta.active,
       aside:false,
@@ -80,6 +84,16 @@ export default {
     $route(to) {
       this.aside = this.$route.meta.aside || false
       this.activeMenu = to.meta.active
+      this.header = this.$route.meta.showHeader
+      
+    },
+    header(val){
+      if(val){
+        this.report = this.$s.getSession('params')
+          
+      }else{
+        this.report = {}
+      }
     }
   },
   computed: {
@@ -91,6 +105,7 @@ export default {
   },
   async mounted() {
     this.aside = this.$route.meta.aside || false
+    this.header = this.$route.meta.showHeader
     this.$store.commit('SET_PATENT_CONTRAST', [])
     this.$store.commit('SET_PREFIX', '/admin')
     // await this.getUserinfo()
@@ -98,6 +113,15 @@ export default {
     // this.getSelect()
   },
   methods: {
+    checkReport(row){
+			row.type = row.reportType
+			row.name = row.taskName
+			this.$s.setSession('row', row)
+			var router = this.$router.resolve({
+				name: 'taskReportDetails' ,
+			})
+          window.open(router.href, '_blank');
+		},
   changePermission(){
       this.webSocket.onmessage = (e) => {
             if(JSON.parse(e.data).code=='903' ){
@@ -107,7 +131,6 @@ export default {
   },
   getPermissionList(){
     var code = "6a8d3f4d1d5f11eda41c00163e2f0200;5051395c24e311eda41c00163e2f0200;2ca26abd37e211eda41c00163e2f0200"
-    // console.log(code)
    this.$api.getPermissionList({code:code}).then(response=>{
         // localStorage.permission =JSON.stringify(JSON.parse(response.data).data) 
         this.$store.commit('SET_ADMIN_PERMISSION', response.data)

+ 58 - 15
RMS-FrontEnd/src/views/report/Invalid/InvalidPage/Result.vue

@@ -42,6 +42,7 @@
       :span-method="objectSpanMethod"
       :row-class-name="tableRowClassName"
       border
+      :height="tableHeight"
       style="min-width: 100%; margin-top: 20px;overflow:auto"
       v-if="show && show1"
       >
@@ -120,6 +121,7 @@
           :data="tableData.filter(item=>item.rightId == ruleForm.type)"
           :span-method="objectSpanMethod"
           :row-class-name="tableRowClassName"
+          :height="tableHeight"
           border
           style="min-width: 100%; margin-top: 20px;overflow:auto;">
         >
@@ -235,6 +237,7 @@ export default {
   props:['reportId2','signPatentNo'],
   data() {
     return {
+      tableHeight: null,
       val:null,
       num:null,
       checked:[],
@@ -341,9 +344,15 @@ export default {
     tableData(){
         //console.log(1)
             this.$nextTick(() => {
+              this.setHeight()
               this.$refs.table.doLayout();//doLayout()方法,让table重新布局
             })
         },
+    show(){
+      this.$nextTick(() => {
+              this.setHeight()
+      })
+    }
   },
   computed:{
     taskId(){
@@ -365,9 +374,30 @@ export default {
     //   this.patentNo = this.signPatentNo
     // }
     this.getContrastList()
-    
   },
   methods: {
+    setHeight() {
+      if(this.show){
+        var num = 50
+      }else{
+        var num = 100
+      }
+      const offsetTop = window.innerHeight - this.$refs.table.$el.offsetTop -Number(num)
+      const body = document.querySelector('.el-table__body')
+      if (!body) {
+        return false
+      }
+      const offsetBodyHeight = body.offsetHeight
+      console.log(offsetTop,offsetBodyHeight)
+      if (this.tableData.length && offsetBodyHeight < offsetTop) {
+        this.tableHeight = offsetBodyHeight + 75
+      } else if (!this.tableData.length) {
+        this.tableHeight = null
+      } else {
+        this.tableHeight = offsetTop
+      }
+      console.log(this.tableHeight)
+    },
     getVal(val){
       this.val = val.patentNo
     },
@@ -747,6 +777,21 @@ export default {
 .success-row {
   background-color:#eaf3fb !important; 
 }
+.innerTable .el-checkbox__label{
+  /* padding: 20px 0; */
+  width: calc(100% - 50px);
+  /* height: 128px; */
+  text-align: left;
+  display:inline-grid;
+  white-space: pre-line;
+  word-wrap: break-word;
+  overflow: auto;
+}
+.innerTable p:last-child:first-child .el-checkbox__label{
+   
+    height: 100%;
+  }
+
 </style>
 <style lang="scss" scoped>
 .edit-box:empty::before {
@@ -764,17 +809,24 @@ export default {
 
   .innerTable p{
   /* min-width:200px; */
-  padding: 10px 0;
+  padding: 20px 0;
   margin: 0;
   display: flex;
   justify-content: flex-start;
   align-items:center;
-  height: 130px;
+  // height: 130px;
   line-break:normal;
   overflow: auto;
   border-bottom:1px solid #EBEEF5;
 }
-
+.innerTable p:last-child:first-child {
+    //item 即是最后一个元素 又是第一个元素
+    height: 100%;
+  }
+//     .innerTable p:nth-child(n) .el-checkbox__label{
+   
+//    height: calc(100% / n);
+//  }
 .innerTable p:nth-child(1){
   border-bottom: 1px solid #EBEEF5;
 }
@@ -785,20 +837,11 @@ export default {
 //    padding:0 0 20px 0;
 //  border-bottom:1px solid #EBEEF5;
 //  }
-.innerTable p span{
-  
-}
+
 //  .innerTable p:last-child{
 //   padding: 20px 0 0 0;
 //   border-bottom: none;
 //  } 
 
-.innerTable .el-checkbox__label{
-  width: calc(100% - 50px);
-  text-align: left;
-  display:inline-grid;
-  white-space: pre-line;
-  word-wrap: break-word;
-  overflow: auto;
-}
+
 </style>

+ 100 - 19
RMS-FrontEnd/src/views/report/reportDetails/components/ContrastPlan.vue

@@ -93,7 +93,7 @@
               </div>
           </template>
         </el-table-column>
-        <el-table-column prop="patentNo" label="公识"  align="center"  width="100px">
+        <el-table-column prop="PublicKnowledge" label="公识"  align="center"  width="100px">
           <template slot-scope="scope">  
               <!-- <span>{{scope.row.patentNo}}</span> -->
               <div class="innerTable" v-if="scope.row.assoRecordsFeatures" style="width:calc(100% + 20px);margin-left:-10px">
@@ -112,13 +112,13 @@
           <template slot-scope="scope">  
               <!-- <span>{{scope.row.patentNo}}</span> -->
               <div class="innerTable" v-if="scope.row.assoRecordsFeatures" style="width:calc(100% + 20px);margin-left:-10px">
-                  <p v-for="i in scope.row.assoRecordsFeatures">
-                    <span  v-if="i.compareRecords">
+                  <p v-for="(i,index) in scope.row.assoRecordsFeatures">
+                    <span  >
+                      <!-- {{index==0? (scope.row.assoRecordsFeatures[i].compareRecords?scope.row.assoRecordsFeatures[i].compareRecords.patentNo:''): (scope.row.assoRecordsFeatures[i + scope.row.patentNoIndex[index-1]].compareRecords?scope.row.assoRecordsFeatures[i + scope.row.patentNoIndex[index-1]].compareRecords.patentNo:'')}} -->
                       {{i.compareRecords.patentNo}}
                     </span>
-                    <span v-else >
-                      <!-- 公识 -->
-                    </span>
+                    <!-- <span v-else >
+                    </span> -->
                   </p>
               </div>
           </template>
@@ -127,7 +127,7 @@
           <template slot-scope="scope">  
               <!-- <span>{{scope.row.content}}</span> -->
               <div class="innerTable" v-if="scope.row.assoRecordsFeatures" style="width:calc(100% + 20px);margin-left:-10px">
-                  <p v-for="i in scope.row.assoRecordsFeatures">
+                  <p v-for="(i,index) in scope.row.assoRecordsFeatures" :key="index">
                     <span  v-if="i.compareRecords">
                       {{i.compareRecords.content}}<img v-if="i.compareRecords.filePath" :src="$p + i.compareRecords.filePath" width="100px" @click="showImage(i.compareRecords.filePath)" />
                     </span>
@@ -294,8 +294,11 @@ export default {
                           patentNoList:[],
                           value:'对比组合'+(index+1)
                       })
-                      item.assoRecordsFeatures.forEach(item1=>{
-                        if(item1.compareRecords.id){
+                      var i = 0
+                      item.patentNoIndex=[]
+                      item.assoRecordsFeatures.forEach((item1)=>{
+                        if(item1.compareRecords.patentNo){
+                          
                           var b = this.resultant[index].patentNoList.findIndex(i=>{
                             return i == item1.compareRecords.patentNo
                           })
@@ -310,7 +313,33 @@ export default {
                         if(c!=-1){
                           item1.compareRecords = null
                         }
+                        
                       })
+                      console.log(item.assoRecordsFeatures)
+                      item.assoRecordsFeatures.forEach((item1,ele)=>{
+                       
+                           if(ele == 0){
+                            item.patentNoIndex.push(1)
+                          }else{
+                            if(item1.compareRecords&&item.assoRecordsFeatures[ele-1].compareRecords){
+                              if(item1.compareRecords.patentNo == item.assoRecordsFeatures[ele-1].compareRecords.patentNo && item1.compareRecords.content == item.assoRecordsFeatures[ele-1].compareRecords.content){
+                             
+                              item.patentNoIndex[item.patentNoIndex.length-1]+=1
+                            }else{
+                              item.patentNoIndex.push(1)
+                            }
+                            }else{
+                              item.patentNoIndex.push(1)
+                            }
+                            
+                          }
+                          
+                          
+                        
+                        
+                        
+                      })
+                     
                       item.resultant = '对比组合'+(index+1)
                       // item.featuresList.forEach(i=>{
                       //   item.assoRecordsFeatures.push({
@@ -331,6 +360,7 @@ export default {
         },
         getSpanArr(data) {
             this.mergeArr.forEach((key, index1) => {
+              console.log(data)
                 let count = 0;
                 this.mergeObj[key] = [];
                 data.forEach((item, index) => {
@@ -341,19 +371,70 @@ export default {
                   //     this.mergeObj[key].push(2)
                   //   }
                   // })
-                if (index === 0) {
-                    this.mergeObj[key].push(1);
-                } else {
-                    if (item[key] === data[index - 1][key]&& item[key] !== 'explainText' ) {
-                    this.mergeObj[key][count] += 1;
-                    this.mergeObj[key].push(0);
-                    } else {
-                    count = index;
-                    this.mergeObj[key].push(1);
+                    if(key == 'right'){
+                      if (index === 0) {
+                          this.mergeObj[key].push(1);
+                      }else{
+                        if (item[key] === data[index - 1][key]) {
+                          this.mergeObj[key][count] += 1;
+                          this.mergeObj[key].push(0);
+                        }else{
+                            count = index;
+                            this.mergeObj[key].push(1);
+                          }
+                      }
+                    }else{
+                      
+                      item.assoRecordsFeatures.forEach((i,index2)=>{
+                        if(index == 0){
+                           if(i.compareRecords){
+                            if(index2 == 0){
+                              this.mergeObj[key].push(1);
+                            }else{
+                              if(i[key] === item.assoRecordsFeatures[index2-1][key]){
+                                this.mergeObj[key][count] += 1;
+                                this.mergeObj[key].push(0);
+                              }else{
+                                count = index2;
+                                this.mergeObj[key].push(1);
+                              }
+                            }
+                            // else{
+                            //   count = index;
+                            //   this.mergeObj[key].push(1);
+                            // }
+                          }
+                        }else{
+                          if(item.resultant === data[index - 1].resultant){
+                            if(i.compareRecords){
+                              if(index2 == 0){
+                                this.mergeObj[key].push(1);
+                              }else{
+                                if(i[key] === item.assoRecordsFeatures[index2-1][key]){
+                                  this.mergeObj[key][count] += 1;
+                                  this.mergeObj[key].push(0);
+                                }else{
+                                  count = index2;
+                                  this.mergeObj[key].push(1);
+                                }
+                              }
+                              // else{
+                              //   count = index;
+                              //   this.mergeObj[key].push(1);
+                              // }
+                            }
+                          }
+                        }
+                         
+                        })
+
                     }
-                }
+
+
+              
                 })
             })
+            console.log(this.mergeObj)
             // data.forEach((item,index)=>{
             //   if (index === 0) {
             //         this.mergeObj[key].push(1);

+ 38 - 2
RMS-FrontEnd/src/views/report/reportDetails/components/basicMessage.vue

@@ -39,7 +39,7 @@
                 </el-form-item>
                 <el-form-item :label="noEdit1?'附件':'上传附件:'">
                 <div v-if="form.reportFiles" class="upload-file">
-                    <div v-for="item in form.reportFiles" style="margin:0;display:flex;justify-content:space-around;"><p style="margin:0;width:calc(100% - 40px);overflow: hidden;white-space: nowrap;text-overflow:ellipsis">{{item.name?item.name:item.fileName}}</p> <p style="margin:0;" @click="delFile(item.id)" v-if="!noEdit1"><i class="el-icon-close"></i></p></div>
+                    <div v-for="item in form.reportFiles" style="margin:0;display:flex;justify-content:space-around;"><p style="margin:0;width:calc(100% - 40px);overflow: hidden;white-space: nowrap;text-overflow:ellipsis;cursor: pointer" @click="checkFile(item)">{{item.name?item.name:item.fileName}}</p> <p style="margin:0;" @click="delFile(item.id)" v-if="!noEdit1"><i class="el-icon-close"></i></p></div>
                 </div>
                 <el-upload v-if="!noEdit1" ref="upload" class="upload-file" drag action="#" :auto-upload="false" :show-file-list="true" :on-change="onChange" multiple   :on-preview="handlePreview" :on-remove="handleRemove">
                     <i :class="!file ? 'el-icon-upload' : 'el-icon-refresh'"></i>
@@ -52,16 +52,25 @@
                 </el-form-item>
             </el-form>
         </div>
+        <el-dialog title="查看文件" :visible.sync="FileVisible" width="1200px">
+          <el-image v-if="srcList.length>0" :src="FileUrl" ref="image" :preview-src-list="srcList"></el-image>
+          <iframe v-else :src="FileUrl" frameborder="0" width="1150px" :height="height"></iframe>
+        </el-dialog>
     </div>
 </template>
 
 <script>
 import { PatentDetails } from "@/views/components/common/mixins";
+import { downLoad2 } from "@/utils";
 export default {
     mixins:[PatentDetails],
     props:['reportId','noEdit'],
     data() {
         return {
+            FileVisible:false,
+            height:document.documentElement.clientHeight - 120,
+            FileUrl:'',
+            srcList:[],
             noEdit1:this.noEdit,
             file:[],
             form:{
@@ -83,6 +92,20 @@ export default {
         this.getList()
     },
     methods: {
+      checkFile(item){
+        var arr = ['png','jpeg','bmp','jpg']
+        if(arr.includes(item.suffix)){
+          this.FileVisible = true
+          this.FileUrl = this.$p + item.url
+          this.srcList = [this.$p + item.url]
+        }else if(item.suffix == 'pdf'){
+          this.FileVisible = true
+          this.FileUrl = this.$p + item.url
+          this.srcList = []
+        }else{
+          downLoad2(item.url) 
+        }
+      },
         delFile(id){
             var index = this.form.reportFiles.findIndex(item=>{
                 return item.id == id
@@ -149,7 +172,20 @@ export default {
             }
         },
         handlePreview(file) {
-            // console.log(file);
+            console.log(file);
+            
+            var index = file.raw.type.lastIndexOf('/')
+            var type = file.raw.type.substring(index+1,file.raw.type.length)
+            var arr = ['png','jpeg','bmp','jpg']
+            if(arr.includes(type)){
+              this.FileVisible = true
+              this.FileUrl =  URL.createObjectURL(file.raw)
+              this.srcList = [URL.createObjectURL(file.raw)]
+            }else if(type == 'pdf'){
+              this.FileVisible = true
+              this.FileUrl = URL.createObjectURL(file.raw)
+              this.srcList = []
+            }
             // this.imageUrl ='https://view.xdocin.com/view?src=' + URL.createObjectURL(file.raw)
             // this.showFile = true
         },

+ 5 - 2
RMS-FrontEnd/src/views/task/MyHandle.vue

@@ -426,6 +426,7 @@
         })
          
       } else {
+		this.$s.setSession('params', row)
         var a = this.$router.resolve({
           path: '/Incomplete',
           query: {
@@ -447,6 +448,7 @@
 		// //console.log(row.signPatentNo,this.$store.state.admin)
 		// localStorage.signPatentNo = row.signPatentNo
     // //console.log(row);
+	this.$s.setSession('params', row)
       let a=this.$router.resolve({
         path: '/Incomplete',
         query: {
@@ -454,8 +456,9 @@
           taskId: row.id,
           reportId:row.reportId,
           type:row.type,
-		      reportType:row.reportType,
-          signPatentNo:row.signPatentNo
+		  reportType:row.reportType,
+          signPatentNo:row.signPatentNo,
+		  reportName:row.reportName
         }
       })
       window.open(a.href,"_blank")

+ 3 - 1
RMS-FrontEnd/src/views/task/components/Incomplete.vue

@@ -43,7 +43,7 @@
             </el-tab-pane>
           </el-tabs> -->
 
-          <IncompletePage :taskId="queryParams.taskId" :reportType="reportType" :signPatentNo="signPatentNo" :reportId="reportId" :type="queryParams.type" :activeName="activeName" :onChangesIn="onChangesIn" :formS="formS" :taskStatus="taskStatus" :coordination="coordination" :taskWorkRemak="taskWorkRemak"></IncompletePage>
+          <IncompletePage :taskId="queryParams.taskId" :reportType="reportType" :reportName="queryParams.reportName" :signPatentNo="signPatentNo" :reportId="reportId" :type="queryParams.type" :activeName="activeName" :onChangesIn="onChangesIn" :formS="formS" :taskStatus="taskStatus" :coordination="coordination" :taskWorkRemak="taskWorkRemak"></IncompletePage>
         </el-main>
       </el-container>
     <!-- </el-container> -->
@@ -142,6 +142,7 @@ export default {
   },
   created() {
     this.queryParams.taskId = this.$route.query.taskId
+    this.queryParams.reportName = this.$route.query.reportName
     this.reportType = this.$route.query.reportType
     this.queryParams.type = this.$route.query.type
     this.reportId = this.$route.query.reportId
@@ -155,6 +156,7 @@ export default {
     //console.log(this.queryParams,this.reportId,this.coordination,this.reportType,);
   },
   mounted() {
+    this.$set(this.$route.meta,'showHeader',this.queryParams.reportName)
     //console.log(this.coordination);
   },
   methods: {

+ 2 - 1
RMS-FrontEnd/src/views/task/components/IncompletePage.vue

@@ -29,7 +29,7 @@
 import { Contrast } from './mixins';
 export default {
   mixins:[Contrast],
-  props:["activeName","taskId","reportId","onChangesIn","formS","taskStatus",'type','signPatentNo','reportType',"coordination","taskWorkRemak"],
+  props:["activeName","taskId","reportId","onChangesIn","formS","taskStatus",'type','signPatentNo','reportType',"coordination","taskWorkRemak",'reportName'],
   data() {
     return {
       tableData: [],
@@ -38,6 +38,7 @@ export default {
         signPatentNo:this.signPatentNo,
         taskId: this.taskId,
         reportId: this.reportId,
+        reportName:this.reportName,
         // applicationName: "",//申请人
         // obligeeName: "",//权利人
         // patentNo:"",