zhuliu 2 роки тому
батько
коміт
4f75094cdf

+ 6 - 0
RMS-FrontEnd/src/api/report.js

@@ -25,6 +25,12 @@ export default {
   UpdateReport(params){
     return axios.post('/report/api/report/updateReport',params)
  },
+  /** 
+   * 修改报告状态
+  */
+   UpdateStatus(params){
+    return axios.get('/report/api/report/updateStatus',{params})
+ },
  /** 
    * 删除报告
   */

+ 9 - 1
RMS-FrontEnd/src/router/index.js

@@ -85,7 +85,15 @@ const routes = [
         },
         component:() => import('@/views/report/FTO/index.vue'),
       },
-
+      //侵权分析
+      {
+        path: '/tortIndex',
+        name:"tortIndex",
+        meta:{
+          aside:true
+        },
+        component:() => import('@/views/report/tort/index.vue'),
+      },
       {
         path:'/patentDetails',
         name:"patentDetails",

+ 7 - 7
RMS-FrontEnd/src/views/report/FTO/FTOPage/ReportDetails/index.vue

@@ -3,7 +3,7 @@
         <el-container>
         <el-aside width="210px" style="overflow:hidden" class="patent-articles-menu">
           <el-menu class="theme-dark" :default-active="activeMenu" @select="handleSelect">
-            <el-menu-item v-for="item in menuList" :index="item.path" >
+            <el-menu-item v-for="item in menuList" :index="item.path" v-if="item.show">
               <i class="el-icon-film"></i>
               <span slot="title">{{item.title}}</span>
             </el-menu-item>
@@ -43,14 +43,14 @@ export default {
         return {
             activeMenu: "BasicInformation",
             menuList: [
-                { title: '基本信息', path:"BasicInformation"}, 
-                { title: '标的产品信息', path:"ProductMessage"}, 
-                { title: '对比文件', path:"ContrastFile"}, 
+                { title: '基本信息', path:"BasicInformation",show:true}, 
+                { title: '标的产品信息', path:"ProductMessage",show:true}, 
+                { title: '对比文件', path:"ContrastFile",show:this.$s.getSession('row').type == 4?false:true}, 
                 // { title: '新对比文件', path:"referenceFile"}, 
-                { title: '对比结果', path:"ContrastResult"}, 
+                { title: '对比结果', path:"ContrastResult",show:true}, 
                 // { title: '对比方案', path:"ContrastPlan"}, 
-                { title: '报告文档', path:"ReportFile"}, 
-                { title: '任务清单', path:"TaskDetails"}, 
+                { title: '报告文档', path:"ReportFile",show:true}, 
+                { title: '任务清单', path:"TaskDetails",show:true}, 
             ],
         }
     },

+ 50 - 9
RMS-FrontEnd/src/views/report/FTO/FTOPage/components/ContrasrProduct.vue

@@ -22,7 +22,7 @@
     <el-container style=" border: 1px solid #eee">
       <!-- <el-container :style="{width:width}" > -->
       <el-aside style="margin:0;" :style="{ width: width }">
-        <Patent-Features v-if="type == '2'||type=='1'" :taskId="taskId" :patentNo="patentNo1" :reportId="reportId" :coordination="coordinationA" :FeaturesNumber="FeaturesNumber" :taskWorkRemak="taskWorkRemakA" :type="type" @isRead="isRead" ></Patent-Features>
+        <Patent-Features v-if="type == '2'||type=='1' || reportType == 4" :taskId="taskId" :patentNo="patentNo1" :reportId="reportId" :coordination="coordinationA" :FeaturesNumber="FeaturesNumber" :taskWorkRemak="taskWorkRemakA" :type="type" @isRead="isRead" ></Patent-Features>
         <patent-Message v-else :publicNo="patentNo1" :reportId="reportId" :taskId="taskId" @patentStatusEmit="patentStatusEmit" :patentStatus2A="patentStatus2A" :switchValue="switchValue"></patent-Message>
       </el-aside>
       <!-- </el-container> -->
@@ -40,7 +40,7 @@
                     <span v-html="getViewDom(patent.publicNo)"></span>
                     <el-tag type="primary" effect="dark" size="mini" class="margin-left_10">{{ patent.simpleStatus
                     }}</el-tag>
-                    <el-tag :type="patentStatus2 == '0' ? 'info' : 'primary'" effect="dark" size="mini" class="margin-left_10"
+                    <el-tag v-if="reportType!=4" :type="patentStatus2 == '0' ? 'info' : 'primary'" effect="dark" size="mini" class="margin-left_10"
                       style="cursor: pointer" @click="changeStatus(patentStatus2)">{{ patentStatus[patentStatus2]
                       }}</el-tag>
                   </div>
@@ -171,6 +171,7 @@ export default {
       coordinationA:this.coordination,
       taskWorkRemakA: this.taskWorkRemak,
       reportType: '',
+      reportStatus:'',
       ban: 0,
       pNo: '',
       location1: this.location ? this.location : '',
@@ -280,9 +281,11 @@ export default {
     },
   },
   created() {
+    console.log(this.$s.getSession('params'));
     this.taskId = this.$s.getSession('params').taskId
     this.type = this.$s.getSession('params').type
     this.reportType = this.$s.getSession('params').reportType
+    this.reportStatus = this.$s.getSession('params').reportStatus
 
     this.reportId = this.$s.getSession('params').reportId
     console.log(this.$s.getSession('params'));
@@ -295,7 +298,26 @@ export default {
   },
   methods: {
     isRead(val) {
-      this.changeStatus(val)
+      
+      if(this.patentStatus2==0 && this.reportType != 4){
+        this.changeStatus(val)
+      }
+      if(this.reportType == 4 && this.reportStatus == 1){
+        var a = {
+          reportId:this.reportId,
+          status:2
+        }
+        this.$api.UpdateStatus(a).then(response=>{
+          if(response.code == 200){
+            var a = this.$s.getSession('params')
+            a.reportStatus = 2
+            this.$s.setSession('params',a)
+            var b = this.$s.getSession('reportMessage1')
+            b.status = 2
+            this.$s.setSession('reportMessage1',b)
+          }
+        })
+      }
     },
     behindNumber(val) {
       this.FeaturesNumber = val
@@ -375,10 +397,20 @@ export default {
     },
     //查询任务下专利状态
     getPatentStatus() {
-      var a = {
-        taskID: this.taskId,
-        patentNo: this.patentNo1?this.patentNo1:this.patentNo
+      if(this.taskId){
+        var a = {
+          reportId:null,
+          taskID: this.taskId,
+          patentNo: this.patentNo1?this.patentNo1:this.patentNo
+        }
+      }else{
+        var a = {
+          reportId:this.reportId,
+          taskID:null,
+          patentNo: this.patentNo1?this.patentNo1:this.patentNo
+        }
       }
+      
       this.$api.getPatentStatus(a).then(response => {
         if (response.code == 200) {
           this.patentStatus2 = response.data
@@ -388,9 +420,18 @@ export default {
     //修改已读未读
     changeStatus(val) {
       if (val == '0') {
-        var a = {
-          taskID: this.taskId?this.taskId:this.taskId1,
-          patentNo:this.patentNo1?this.patentNo1:this.patentNo,
+        if(this.taskId){
+          var a = {
+            reportId:null,
+            taskID: this.taskId?this.taskId:this.taskId1,
+            patentNo: this.patentNo1?this.patentNo1:this.patentNo
+          }
+        }else{
+          var a = {
+            reportId:this.reportId,
+            taskID:null,
+            patentNo: this.patentNo1?this.patentNo1:this.patentNo
+          }
         }
         this.$api.updatePatentStatus(a).then(response => {
           if (response.code == 200) {

+ 19 - 8
RMS-FrontEnd/src/views/report/FTO/FTOPage/components/PatentFeatures.vue

@@ -242,7 +242,8 @@
       async getSplitMessage(){
         var a = {
           patentNo:this.patentNo1,
-          taskId:this.taskId
+          taskId:this.taskId?this.taskId:null,
+          reportId:this.taskId?null:this.reportId,
         }
         await this.$api.getSplitMessage(a).then(response=>{
           if(response.code == 200){
@@ -387,12 +388,21 @@
        queryCompareMessage() {//patentRightVos
         console.log(this.reportId,this.taskWorkRemakA,this.coordination);
         this.loading=true
-        let PatentRight = {
-          patentNo: this.patentNo,
-          // reportId:null,
-          reportId:this.taskWorkRemakA==0?this.reportId:null,
-          taskId: this.taskWorkRemakA==0?null:this.taskId,
+        if(this.taskId){
+          var PatentRight = {
+            patentNo: this.patentNo,
+            // reportId:null,
+            reportId:this.taskWorkRemakA==0?this.reportId:null,
+            taskId: this.taskWorkRemakA==0?null:this.taskId,
+          }
+        }else{
+          var PatentRight = {
+            patentNo: this.patentNo,
+            reportId:this.reportId,
+            taskId:null,
+          }
         }
+        
         //协同对比调用querySynery
         if (this.coordination) {
           console.log(111111,this.coordination);
@@ -479,7 +489,8 @@
           patentNo: this.patentNo,
           splitType: this.splitType1,
           splitBy: this.splitBy1,
-          taskId: this.taskId,
+          taskId: this.taskId?this.taskId:null,
+          ReportId:this.reportId
         }
         this.$api.splitPatentRight(PatentRight).then(res => {
           if (res.code == 200) {
@@ -660,7 +671,7 @@
             console.log(1);
             keepArr.push(
               {
-                taskId: this.taskId,
+                taskId: this.taskId?this.taskId:null,
                 signPatentNo: this.tableData1[i].signPatentNo,
                 contentOut: this.tableData1[i].contentOut,
                 content: this.tableData1[i].content,

+ 5 - 2
RMS-FrontEnd/src/views/report/FTO/FTOPage/components/ProductResult.vue

@@ -13,7 +13,8 @@
                             <el-dropdown-item v-for="item in dictMessage.REPORT_TYPE" :key="item.dictChildLabel" v-if="![3,6].includes(Number(item.dictChildValue))"  @click.native="handleAnalyse(item.dictChildValue)">{{item.dictChildLabel}}</el-dropdown-item>
                             </el-dropdown-menu>
                     </el-dropdown>
-                        <el-button class="changePatent" type="" size="small" :disabled="index == 0" @click="handleLink1()" >
+                    <div style="display:flex; justify-content:flex-end;align-items:center" v-if="row.type!=4">
+                      <el-button class="changePatent" type="" size="small" :disabled="index == 0" @click="handleLink1()" >
                         <span class="p"><i class="el-icon-arrow-up"></i>
                             <span>上一篇</span>
                             <!-- <span class="t" v-if="records.prev">({{ records.prev.total }})</span> -->
@@ -37,7 +38,9 @@
                             <span>{{ patentList[index+1].patentNo }}</span>
                         </span>
                         <span class="n" v-else>无数据</span>
-                        </el-button>
+                        </el-button>  
+                    </div>
+                        
                         <!-- <patent-list v-if="taskId" :patent-id="patentId" @on-change="onChange" :location="location1" :state="state" :ban='ban'/> -->
                         <el-tooltip class="item" effect="dark" :content="(showRight ? '隐藏' : '显示') + '右侧菜单'" placement="top">
                             <i :class="showRight ? 'el-icon-s-unfold' : 'el-icon-s-fold'" style="font-size: 25px; margin-top: 5px;color: #2f2f2f; cursor: pointer" @click="showRight = !showRight"></i>

+ 39 - 26
RMS-FrontEnd/src/views/report/FTO/FTOPage/product.vue

@@ -87,7 +87,10 @@ export default{
         }
     },
     mounted() {
-        this.$set(this.product, 'productName', this.$s.getSession('reportMessage1').signPatentNo)
+        if(this.$s.getSession('reportMessage1').type == 3){
+             this.$set(this.product, 'productName', this.$s.getSession('reportMessage1').signPatentNo)
+        }
+       
         console.log(this.product.productName);
         this.getProduct()
     },
@@ -169,39 +172,49 @@ export default{
                 if (response.code == 200) {
                     if(response.data){
                         this.product = response.data
+                    }else{
+                        this.$emit('isSave',false)
                     }
                     
                 }
             })
         },
         saveProduct(){
-            this.product.reportId = this.reportId
-            let formData = new FormData()
-            if(this.file.length>0){
-                this.file.forEach(item=>{
-                    formData.append('files', item)
-                })
-            }
-            formData.append('jsons', JSON.stringify(this.product))
-            if(this.product.id){
-                this.$api.updateProduct(formData).then(response=>{
-                    if(response.code == 200){
-                        this.dialogImageUrl = []
-                        this.file = []
-                        this.$message.success('产品信息修改成功')
-                        this.getProduct()
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.product.reportId = this.reportId
+                    let formData = new FormData()
+                    if(this.file.length>0){
+                        this.file.forEach(item=>{
+                            formData.append('files', item)
+                        })
                     }
-                })
-            }else{
-                this.$api.addProduct(formData).then(response=>{
-                    if(response.code == 200){
-                        this.dialogImageUrl = []
-                        this.file = []
-                        this.$message.success('产品信息保存成功')
-                        this.getProduct()
+                    formData.append('jsons', JSON.stringify(this.product))
+                    if(this.product.id){
+                        this.$api.updateProduct(formData).then(response=>{
+                            if(response.code == 200){
+                                this.dialogImageUrl = []
+                                this.file = []
+                                this.$message.success('产品信息修改成功')
+                                this.$emit('isSave',true)
+                                this.getProduct()
+                            }
+                        })
+                    }else{
+                        this.$api.addProduct(formData).then(response=>{
+                            if(response.code == 200){
+                                this.dialogImageUrl = []
+                                this.file = []
+                                this.$message.success('产品信息保存成功')
+                                this.$emit('isSave',true)
+                                this.getProduct()
+                            }
+                        })
                     }
-                })
-            }
+                }
+            })
+
+           
             
         },
     },

+ 1 - 1
RMS-FrontEnd/src/views/report/Invalid/InvalidPage/AssignTasks.vue

@@ -132,7 +132,7 @@ export default {
       patentCheck:[],
       pj: false,
       num: 0,
-      isEqually:false,//是否点击平均分配
+      isEqually:true,//是否点击平均分配
       personIdS:this.personId?this.personId:this.$route.query.personId,
       tableData:[],
       data:[],

+ 3 - 3
RMS-FrontEnd/src/views/report/components/Card.vue

@@ -14,9 +14,9 @@
                         <el-dropdown-item command="1" v-if="[2,3].includes(item.status)">导出报告</el-dropdown-item>
                         <el-dropdown-item command="2" v-if="[2,3].includes(item.status)">报告文档</el-dropdown-item>
                         <el-dropdown-item command="3" v-if="[1,2].includes(item.status)">自定义字段</el-dropdown-item>
-                        <el-dropdown-item command="4" v-if="[2,3].includes(item.status)">任务分配</el-dropdown-item>
-                        <el-dropdown-item command="5" v-if="[1].includes(item.status)">{{item.type !=3?'拆分特征':'产品信息录入'}}</el-dropdown-item>
-                        <el-dropdown-item command="6" v-if="[2,3].includes(item.status)">导入 </el-dropdown-item>
+                        <el-dropdown-item command="4" v-if="[2,3].includes(item.status)&& item.type != 4">任务分配</el-dropdown-item>
+                        <el-dropdown-item command="5" v-if="[1].includes(item.status) || item.type == 4">{{!([3,4].includes(item.type))?'拆分特征':'产品信息录入'}}</el-dropdown-item>
+                        <el-dropdown-item command="6" v-if="[2,3].includes(item.status)&& item.type != 4">导入 </el-dropdown-item>
                         <el-dropdown-item command="7" divided style="color: red;">删除 </el-dropdown-item>
                         <!-- <el-dropdown-item command="0">分享</el-dropdown-item> -->
                         <!-- <el-dropdown-item command="1">导出报告</el-dropdown-item>

+ 4 - 4
RMS-FrontEnd/src/views/report/components/Tabel.vue

@@ -33,7 +33,7 @@
       </el-table-column>
       <el-table-column label="创建时间" prop="createTime" width="200" align="center"> </el-table-column>
   
-      <el-table-column label="操作" align="center" width="230px">
+      <el-table-column label="操作" align="center" width="200px">
         <template slot-scope="scope">
           <el-dropdown @command="handleCommand($event, scope.row)" split-button type="primary" size="small"  @click="handleEdit(scope.row)">
             <p >编辑</p>
@@ -42,9 +42,9 @@
               <el-dropdown-item command="1" v-if="[2,3].includes(scope.row.status)">导出报告</el-dropdown-item>
               <el-dropdown-item command="2" v-if="[2,3].includes(scope.row.status)">报告文档</el-dropdown-item>
               <el-dropdown-item command="3" v-if="[1,2].includes(scope.row.status)">自定义字段</el-dropdown-item>
-              <el-dropdown-item command="4" v-if="[2,3].includes(scope.row.status)">任务分配</el-dropdown-item>
-              <el-dropdown-item command="5" v-if="[1].includes(scope.row.status)">{{scope.row.type !=3?'拆分特征':'产品信息录入'}}</el-dropdown-item>
-              <el-dropdown-item command="6" v-if="[2,3].includes(scope.row.status)">导入 </el-dropdown-item>
+              <el-dropdown-item command="4" v-if="[2,3].includes(scope.row.status)&& scope.row.type != 4">任务分配</el-dropdown-item>
+              <el-dropdown-item command="5" v-if="[1].includes(scope.row.status) || scope.row.type == 4">{{!([3,4].includes(scope.row.type))?'拆分特征':'产品信息录入'}}</el-dropdown-item>
+              <el-dropdown-item command="6" v-if="[2,3].includes(scope.row.status)&& scope.row.type != 4">导入 </el-dropdown-item>
               <el-dropdown-item command="7" divided style="color: red;">删除 </el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>

+ 16 - 5
RMS-FrontEnd/src/views/report/index.vue

@@ -179,12 +179,13 @@ export default {
           window.open(router.href, '_blank');
           break;
         case 3:
-          var router = this.$router.resolve({
-              name: 'FTOrDetails' ,
-            })
-            window.open(router.href, '_blank');
-            break;
+         
         case 4:
+          var router = this.$router.resolve({
+            name: 'FTOrDetails' ,
+          })
+          window.open(router.href, '_blank');
+          break;
         case 5:
         case 6:
       }
@@ -280,6 +281,16 @@ export default {
             window.open(routerReport2.href, '_blank');//open方法中添加_blank属性打开新窗口页面
             break;
         case 4:
+        var routerReport3 = this.$router.resolve({
+              path: "/tortIndex",
+              query: {
+                id: val.id,
+                patentNo:val.signPatentNo,
+                personId:val.personId,
+              }
+            })
+            window.open(routerReport3.href, '_blank');//open方法中添加_blank属性打开新窗口页面
+            break;
         case 5:
         case 6:
 

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

@@ -0,0 +1,167 @@
+<template>
+    <div>
+        <el-steps :active="active - 0" finish-status="success" align-center style="margin-top: 20px;">
+			<el-step
+				v-for="(item, index) of stepParams"
+				:key="index"
+				:title="item.title"
+				:status="item.status"
+				:class="stepSuc.includes(index) ? 'stepSuc' : 'stepErr'"
+				@click.native="handStep(index)"
+			></el-step>
+		</el-steps>
+		<!-- 上/下一页 -->
+		<div class="changeStep">
+			<el-button @click="previous" v-if="active>0">上一步</el-button>
+			<el-button @click="next" v-else>下一步</el-button>
+		</div>
+		<component :is="steps" ref="reportanalyse" :reportMessage="reportMessage" :patentNo="patentNo" :reportId="reportId" :personId="personId" @isSave="isSave"></component>
+    </div>
+</template>
+
+<script>
+import Product from "@/views/report/FTO/FTOPage/product.vue";
+import ProductContrast from './tortPage/ProductContrast.vue'
+ export default{
+    components: {
+        Product,
+        ProductContrast
+    },
+    data() {
+        return {
+            reportMessage:{},
+            patentNo: '',
+            reportId: '',
+            personId:"",
+            active: 0,
+            steps: "Product",
+            stepSuc: [],
+            stepParams: [
+                {
+                title: "标的产品",
+                status: "process",
+                },
+                {
+                title: "技术特征对比",
+                status: "wait",
+                },
+            ],
+            keepSure: true,
+        }
+    },
+    created() {
+        this.patentNo = this.$route.query.patentNo
+        this.reportId = this.$route.query.id
+        this.personId = this.$route.query.personId
+        this.reportMessage = this.$s.getSession('reportMessage1')
+        console.log("@@@",this.$s.getSession('reportMessage1'))
+    },
+    watch:{
+        active(val) {
+            var act = localStorage.activeWatch==undefined?localStorage.activeWatch:JSON.parse(localStorage.activeWatch)
+            var a = {
+                reportId: this.reportId,
+                stepSuc:this.stepSuc,
+                active:val
+            }
+            // console.log(act);
+            if (act) {
+                // console.log(11);
+                var c = act.findIndex(item => { return item.reportId == this.reportId })
+                if (c < 0) {
+                    act.push(a)
+                } else {
+                    act[c].active=val
+                }
+                localStorage.activeWatch=JSON.stringify(act)
+            } else {
+                var b = [];
+                b.push(a)
+                localStorage.activeWatch=JSON.stringify(b)
+            }
+        },
+    },
+    mounted() {
+        let activeA = localStorage.activeWatch==undefined?localStorage.activeWatch:JSON.parse(localStorage.activeWatch)
+            if (activeA) {
+            let m = activeA.findIndex(item => { return item.reportId == this.reportId })
+            if (m<0) {
+                this.active=this.active
+            } else {
+                this.active=activeA[m].active
+                this.stepSuc = activeA[m].stepSuc
+            }
+            } else {
+            this.active=this.active
+            };
+            this.gong()
+    },
+    methods: {
+        handStep(id) {
+            if (this.stepSuc.indexOf(id) != -1) {
+                this.stepSuc = this.stepSuc.slice(0, this.stepSuc.indexOf(id));
+                this.active = id;
+                this.gong();
+            }
+            },
+            //步骤条样式及组件
+        gong() {
+            switch (this.active) {
+                case 0:
+                    this.stepParams[0].status = "process";
+                    this.stepParams[1].status = "wait";
+                    this.steps = "Product";
+                    break;
+                case 1:
+                    this.stepParams[0].status = "success";
+                    this.stepParams[1].status = "process";
+                    this.steps = "ProductContrast";
+                    break;
+                default:
+                    this.stepParams[0].status = "success";
+                    this.stepParams[1].status = "success";
+                    this.stepParams[2].status = "success";
+                    break;
+            }
+        },
+        isSave(val) {
+            this.keepSure=val
+        },
+        previous() {//上一步
+            this.active -= 1;
+            this.stepSuc.pop()
+            this.gong();
+        },
+        next() {//下一步
+            if (this.keepSure) {
+                this.active += 1;
+                this.stepSuc.push(this.active-1);
+                this.gong();
+            } else {//未保存提示
+                this.$confirm('请先输入产品信息!!!', '温馨提示',  {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {//
+                    this.active += 1;
+                    this.stepSuc.push(this.active - 1);
+                    this.gong();
+                }).catch(() => {
+                        
+                });
+            }
+        },
+    },
+ }
+</script>
+
+<style lang="scss" scoped>
+	.changeStep{
+		padding: 0 20px;
+		display: flex;
+		justify-content: flex-end;
+	}
+	.changeStep button{
+		margin-left: 20px;
+	}
+</style>

+ 40 - 0
RMS-FrontEnd/src/views/report/tort/tortPage/ProductContrast.vue

@@ -0,0 +1,40 @@
+<template>
+    <div>
+        <Contrast-Product :patentNo="patentNo" :reportId1="reportId" ></Contrast-Product>
+    </div>
+</template>
+  
+  <script>
+  import ContrastProduct from '@/views/report/FTO/FTOPage/components/ContrasrProduct.vue'
+  export default{
+    components:{
+      ContrastProduct
+    },
+    props:['reportMessage'],
+    data() {
+        return {
+            reportId:'',
+            patentNo:''
+        }
+    },
+    created(){
+        this.reportId = this.reportMessage.id
+        this.patentNo = this.reportMessage.signPatentNo
+        var a = {
+            taskId:null,
+            type:null,
+            reportId:this.reportId,
+            patentNo:this.patentNo,
+            reportType : this.reportMessage.type,
+            reportStatus:this.reportMessage.status
+        }
+        this.$s.setSession('params',a)
+    },
+    mounted() {
+        
+    },
+    methods: {
+        
+    },
+  }
+  </script>