Forráskód Böngészése

对比文件排序、显示报告信息等

zhuliu 2 éve
szülő
commit
92b9699170

+ 5 - 2
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>
-          <img style="width:100%" :src="dialogImageUrl" >
+          <el-image ref="image" style="width:100%" :src="dialogImageUrl" :preview-src-list="imgList"></el-image>
           </span>
           <i v-else class="el-icon-plus avatar-uploader-icon"></i>
         </el-upload>
@@ -219,6 +219,7 @@ export default {
 },
   data() {
     return {
+      imgList:[],
       reportType:'',
       patentStatus:{
         '0':'未读',
@@ -392,8 +393,10 @@ export default {
         this.ruleForm.filePath = ''
       },
       handlePictureCardPreview(file) {
+        this.imgList=[this.dialogImageUrl]
+        this.$refs.image.showViewer = true
         // this.dialogImageUrl = file.url;
-        this.dialogVisible = true;
+        // this.dialogVisible = true;
       },
       // handleDownload(file) {
       //   console.log(file);

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

@@ -12,7 +12,7 @@
         <el-container>
           <!-- <el-header></el-header> -->
           <el-main class="admin-main-box">
-            <component :row="row" :is="activeMenu" :reportId="reportId" :patentNo="signPatentNo" :signPatentNo="signPatentNo" :reportId2="reportId"></component>
+            <component :row="row" :is="activeMenu" :reportMessage="row" :reportId="reportId" :patentNo="signPatentNo" :signPatentNo="signPatentNo" :reportId2="reportId"></component>
           </el-main>
         </el-container>
       </el-container>
@@ -24,6 +24,7 @@ import BasicInformation from '@/views/report/reportDetails/components/basicMessa
 import ProductMessage from '../components/ProductMessage.vue';
 import ContrastFile from '@/views/report/reportDetails/components/SelectedPatent.vue';
 import ContrastResult from '../components/ProductResult.vue';
+import ProductContrast from '@/views/report/tort/tortPage/ProductContrast.vue'
 // import ContrastPlan from './components/ContrastPlan.vue';
 import ReportFile from '@/views/report/reportDetails/components/reportFile.vue';
 // import referenceFile from './components/referenceFile.vue';
@@ -34,6 +35,7 @@ export default {
         ProductMessage,
         ContrastFile,
         ContrastResult,
+        ProductContrast,
         // ContrastPlan,
         ReportFile,
         TaskDetails,
@@ -46,6 +48,7 @@ export default {
                 { title: '基本信息', path:"BasicInformation",show:true}, 
                 { title: '标的产品信息', path:"ProductMessage",show:true}, 
                 { title: '对比文件', path:"ContrastFile",show:this.$s.getSession('row').type == 4?false:true}, 
+                { title: '专利与产品关联比对', path:"ProductContrast",show:this.$s.getSession('row').type == 4?true:false}, 
                 // { title: '新对比文件', path:"referenceFile"}, 
                 { title: '对比结果', path:"ContrastResult",show:true}, 
                 // { title: '对比方案', path:"ContrastPlan"}, 

+ 38 - 13
RMS-FrontEnd/src/views/report/FTO/FTOPage/components/ContrasrProduct.vue

@@ -29,13 +29,24 @@
     <!-- <el-button @click="two">对比</el-button> -->
     <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' || 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 style="margin:0;" :style="{ width: width , position: 'relative'}" >
+        <el-link type="primary" v-if="reportType == 3" @click="changeProduct" style="position: absolute;right: 10px;top: 10px;margin-bottom:10px">切换<span>{{ showProduct?'特征信息':'产品信息' }}</span></el-link>
+        <div v-if="showProduct">
+            <Product-Message :reportId="reportId" :row="row"></Product-Message>
+        </div>
+        <div v-else>
+          <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>
+        </div>
+        
       </el-aside>
       <!-- </el-container> -->
-      <el-main v-show="width != '100%'" :style="{ width: 'calc(100% - ' + width + ')' }">
-        <div class="patent-articles">
+      <el-main v-show="width != '100%'" :style="{ width: 'calc(100% - ' + width + ')' ,position: 'relative'}">
+        <el-link type="primary" v-if="reportType == 3" @click="changeProduct2" style="position: absolute;right: 10px;top: 10px;margin-bottom:10px">切换<span>{{ showProduct2?'标的专利信息':'产品信息' }}</span></el-link>
+        <div v-if="showProduct2">
+            <Product-Message :reportId="reportId" :row="row"></Product-Message>
+        </div>
+        <div class="patent-articles" v-else>
           <el-container v-loading="loading">
             <!-- <el-container > -->
             <el-header class="patent-articles-title">
@@ -146,11 +157,13 @@ import { getPatentCountry } from "@/utils";
 import Import from '@/views/components/import/index.vue'
 import Features from '@/views/components/articles/components/features.vue'
 import sendCollaboration from "@/views/report/components/sendCollaboration.vue"
-import Product from '@/views/components/articles/components/history/product.vue'
+// import Product from '@/views/components/articles/components/history/product.vue'
+
+import ProductMessage from './ProductMessage.vue'
 
 export default {
   mixins: [patentKeywordsHighlight, changeTranslation],
-  props: ['patentNo', 'taskId1', 'location', 'state',"reportId1","coordination","taskWorkRemak"],
+  props: ['patentNo', 'taskId1', 'location', "taskWorkRemak",'state',"reportId1","coordination",],
   components: {
     PatentFeatures,
     PatentMessage,
@@ -173,10 +186,14 @@ export default {
     Litigation,
     Other,
     sendCollaboration,
-    Product,
+    // Product,
+    ProductMessage
   },
   data() {
     return {
+      row:{},
+      showProduct:false,
+      showProduct2:false,
       patentNo1: this.patentNo,
       // reportId: this.reportId,
 
@@ -249,10 +266,10 @@ export default {
         },
       ],
       menuList2: [
-        {
-          value: 'Product',
-          label: '产品信息'
-        },
+        // {
+        //   value: 'Product',
+        //   label: '产品信息'
+        // },
         {
           value: 'Examination',
           label: '审查历史'
@@ -299,6 +316,7 @@ export default {
   },
   created() {
     console.log(this.$s.getSession('params'));
+    this.row.type=this.$s.getSession('params').reportType
     this.taskId = this.$s.getSession('params').taskId
     this.type = this.$s.getSession('params').type
     this.reportType = this.$s.getSession('params').reportType
@@ -309,11 +327,17 @@ export default {
     // this.reportId = this.$s.getSession('params').reportId
   },
   mounted() {
-    console.log(this.location, this.state,this.taskWorkRemak);
+    console.log(this.location, this.reportType, this.state,this.taskWorkRemakA);
     this.getPatent(this.patentNo)
     console.log(this.reportId, this.$s.getSession('params'));
   },
   methods: {
+    changeProduct(){
+      this.showProduct = !this.showProduct
+    },
+    changeProduct2(){
+      this.showProduct2 = !this.showProduct2
+    },
     // 返回
     goBack() {
       this.$router.push({
@@ -383,6 +407,7 @@ export default {
           query: {
             patentNo: data.patentNo,
             location: data.location,
+            taskWorkRemak:this.taskWorkRemakA
           }
         })
         this.location1 = data.location

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

@@ -348,9 +348,9 @@
           }
           for (var i = 0; i < this.row.length; i++) {
             if (i < row.length - 1) {
-              str = str + row[i].content + (row[i].content==''?'':' ,')
-              strText = strText + row[i].explainText + (row[i].explainText==''?'':',')
-              targetDescription = targetDescription + row[i].targetDescription + (row[i].targetDescription==''?'':',')
+              str = str + row[i].content 
+              strText = strText + row[i].explainText 
+              targetDescription = targetDescription + row[i].targetDescription
               let Index = this.tableData1.findIndex(item => { return item.id == row[i].id })
               this.tableData1.splice(Index, 1)
             } else if (i == row.length - 1) {

+ 21 - 16
RMS-FrontEnd/src/views/report/FTO/FTOPage/components/ProductMessage.vue

@@ -1,7 +1,7 @@
 <template>
     <div style="">
         <el-container>
-            <el-main  style="border:0;padding:20px">
+            <el-main  style="border:0;padding:35px 20px 20px;">
                 <div class="header1">
                     <el-button type="primary" @click="saveProduct">保存</el-button>
                 </div>
@@ -13,15 +13,14 @@
                                 <span @dblclick="changEdit('productName')" placeholder="请输入" v-else>{{ product.productName }}</span>
                                 <!-- <span>{{ product.productName }}</span> -->
                             </el-form-item> 
-                            <el-form-item label="调查标的说明:" prop="productDescription">
+                            <el-form-item label="标的产品说明:" prop="productDescription">
                                 <el-input type="textarea" v-model="product.productDescription" @change="editChange" @blur="editChange" v-if="isEdit == 'productDescription'" placeholder="请输入"></el-input>
                                 <span @dblclick="changEdit('productDescription')" placeholder="请输入" v-else>{{ product.productDescription }}</span>
                                 <!-- <span>{{ product.productDescription }}</span> -->
                             </el-form-item>
-                            <el-form-item label="调查区域:" prop="surveyArea">
+                            <el-form-item label="调查区域:" prop="surveyArea" v-if="reportMessage.type == 3">
                                <el-input type="textarea"  v-model="product.surveyArea" @change="editChange" @blur="editChange" v-if="isEdit == 'surveyArea'" placeholder="请输入"></el-input>
                                 <span @dblclick="changEdit('surveyArea')" placeholder="请输入" v-else>{{ product.surveyArea}}</span>
-                                <!-- <span>{{ product.surveyArea }}</span> -->
                             </el-form-item>
                             <el-form-item label="产品图:">
                                 <el-upload ref="upload"  action="#" :auto-upload="false" multiple :on-change="handleChangeUpload"  list-type="picture" :show-file-list="false">
@@ -33,7 +32,7 @@
                                                     <i class="el-icon-delete" @click.stop="handleRemove1(index)"></i>
                                                 </span>
                                             </span>
-                                            <img :src="$p + item.address" >
+                                            <el-image ref="image" :src="$p + item.address" :preview-src-list="imgList"></el-image>
                                         </span>
                                         <span class="avatar" v-for="(item,index) in dialogImageUrl" style="margin-left:10px">
                                             <span class="deleteImg">
@@ -42,13 +41,13 @@
                                                     <i class="el-icon-delete" @click.stop="handleRemove(index)"></i>
                                                 </span>
                                             </span>
-                                            <img :src="item" >
+                                            <el-image ref="image" :src="item" :preview-src-list="imgList"></el-image>
                                         </span>
                                         <i class="el-icon-plus avatar-uploader-icon"></i>
                                     </span>
                                 </el-upload>
                             </el-form-item>
-                            <el-form-item label="检索策略:" prop="searchPolicy">
+                            <el-form-item label="检索策略:" prop="searchPolicy" v-if="reportMessage.type == 3">
                                 <el-input v-model="product.searchPolicy" @change="editChange" @blur="editChange" v-if="isEdit == 'searchPolicy'" placeholder="请输入"></el-input>
                                 <span @dblclick="changEdit('searchPolicy')" placeholder="请输入" v-else>{{ product.searchPolicy}}</span>
                             </el-form-item>
@@ -61,7 +60,7 @@
                                         @change="isDates">
                                     </el-date-picker>
                             </el-form-item>
-                            <el-form-item label="关注企业/发明人/技术方向:">
+                            <el-form-item :label="reportMessage.type==3?'关注企业/发明人/技术方向:':'备注:'">
                                 <el-input type="textarea" v-model="product.focusInformation" @change="editChange" @blur="editChange" v-if="isEdit == 'focusInformation'" placeholder="请输入"></el-input>
                                 <span @dblclick="changEdit('focusInformation')" placeholder="请输入" v-else>{{ product.focusInformation}}</span>
                                 <!-- <span>{{ product.focusInformation }}</span> -->
@@ -81,7 +80,7 @@
 
 
 export default{
-    props:['reportId'],
+    props:['reportId','row'],
   data() {
     const isTime = (rule, value, callback) => {
       console.log(this.isDate);
@@ -103,6 +102,8 @@ export default{
      
     }
       return {
+            reportMessage:this.row,
+            imgList:[],
             isDate:true,
             isEdit:'',//是否编辑
             file:[],
@@ -112,8 +113,8 @@ export default{
             product:{},
             productRules:{
                 name: [{ required: true, message: '请输入标的专利/产品', trigger: 'blur' },],
-                explain: [{ required: true, message: '请输入调查标的说明', trigger: 'blur' },],
-              area: [{ required: true, message: '请输入调查区域', trigger: 'blur' },],
+                explain: [{ required: true, message: '请输入标的产品说明', trigger: 'blur' },],
+            //   area: [{ required: true, message: '请输入调查区域', trigger: 'blur' },],
               deadLine: [
                   {  required: false, validator:isTime, trigger: 'change' }
                 ],
@@ -122,7 +123,7 @@ export default{
         }
     },
     mounted() {
-        this.$set(this.product,'productName',this.$s.getSession('row').signPatentNo)
+        // this.$set(this.product,'productName',this.$s.getSession('row').signPatentNo)
         this.getProduct()
     },
   methods: {
@@ -194,15 +195,19 @@ export default{
             // this.ruleForm.filePath = ''
         },
         handlePictureCardPreview(file) {
-            this.ImageUrl = file
-            this.dialogVisible = true;
+            this.imgList=[file]
+            this.$refs.image[0].showViewer = true
+            // this.ImageUrl = file
+            // this.dialogVisible = true;
         },
         handleRemove1(index) {
             this.product.reportFiles.splice(index,1)
         },
         handlePictureCardPreview1(file) {
-            this.ImageUrl = this.$p + file.address
-            this.dialogVisible = true;
+            this.imgList=[this.$p + file.address]
+            this.$refs.image[0].showViewer = true
+            // this.ImageUrl = this.$p + file.address
+            // this.dialogVisible = true;
         },
         getProduct(){
             let a = {

+ 20 - 13
RMS-FrontEnd/src/views/report/FTO/FTOPage/product.vue

@@ -11,10 +11,10 @@
                             <el-form-item label="标的产品:" prop="productName">
                             <el-input v-model="product.productName" placeholder="请输入标的产品"></el-input>
                         </el-form-item> 
-                        <el-form-item label="调查标的说明:" prop="productDescription">
-                            <el-input type="textarea" v-model="product.productDescription" placeholder="请输入调查标的说明"></el-input>
+                        <el-form-item label="标的产品说明:" prop="productDescription">
+                            <el-input type="textarea" v-model="product.productDescription" placeholder="请输入标的产品说明"></el-input>
                         </el-form-item>
-                        <el-form-item label="调查区域:" prop="surveyArea">
+                        <el-form-item label="调查区域:" prop="surveyArea" v-if="reportTypes == 3">
                             <el-input type="textarea" v-model="product.surveyArea" placeholder="请输入调查区域"></el-input>
                         </el-form-item>
                         <el-form-item label="产品图:">
@@ -27,7 +27,7 @@
                                                 <i class="el-icon-delete" @click.stop="handleRemove1(index)"></i>
                                             </span>
                                         </span>
-                                        <img :src="$p + item.address" >
+                                        <el-image ref="image" :src="$p + item.address" :preview-src-list="imgList"></el-image>
                                     </span>
                                     <span class="avatar" v-for="(item,index) in dialogImageUrl" style="margin-left:10px">
                                         <span class="deleteImg">
@@ -36,13 +36,14 @@
                                                 <i class="el-icon-delete" @click.stop="handleRemove(index)"></i>
                                             </span>
                                         </span>
-                                        <img  :src="item" >
+                                        <el-image ref="image" :preview-src-list="imgList" :src="item" ></el-image>
+
                                     </span>
                                     <i class="el-icon-plus avatar-uploader-icon"></i>
                                 </span>
                             </el-upload>
                         </el-form-item>
-                        <el-form-item label="检索策略:">
+                        <el-form-item label="检索策略:" v-if="reportTypes == 3">
                             <el-input type="textarea" v-model="product.searchPolicy" placeholder="请输入检索策略"></el-input>
                         </el-form-item>
                         <el-form-item label="检索截止日期:" prop="deadLine">
@@ -54,8 +55,8 @@
                                     @change="isDates">
                                 </el-date-picker>
                         </el-form-item>
-                        <el-form-item label="关注企业/发明人/技术方向:">
-                            <el-input type="textarea" v-model="product.focusInformation" placeholder="请输入关注企业/发明人/技术方向"></el-input>
+                        <el-form-item :label="reportTypes==3?'关注企业/发明人/技术方向:':'备注:'">
+                            <el-input type="textarea" v-model="product.focusInformation" placeholder="请输入"></el-input>
                         </el-form-item>
                         </el-form>
                     </div>
@@ -72,7 +73,7 @@
 
 
 export default{
-    props:['reportId'],
+    props:['reportId','reportType'],
   data() {
     const isTime = (rule, value, callback) => {
       console.log(this.isDate);
@@ -94,6 +95,8 @@ export default{
      
     }
     return {
+            reportTypes:this.reportType,
+            imgList:[],
             isDate:true,
             file:[],
             dialogImageUrl:[],
@@ -188,15 +191,19 @@ export default{
             // this.ruleForm.filePath = ''
         },
         handlePictureCardPreview(file) {
-            this.ImageUrl = file
-            this.dialogVisible = true;
+            this.imgList=[file]
+            this.$refs.image[0].showViewer = true
+            // this.ImageUrl = file
+            // this.dialogVisible = true;
         },
         handleRemove1(index) {
             this.product.reportFiles.splice(index,1)
         },
         handlePictureCardPreview1(file) {
-            this.ImageUrl = this.$p + file.address
-            this.dialogVisible = true;
+            this.imgList=[this.$p + file.address]
+            this.$refs.image[0].showViewer = true
+            // this.ImageUrl = this.$p + file.address
+            // this.dialogVisible = true;
         },
         getProduct(){
             let a = {

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

@@ -21,7 +21,7 @@
 			<el-button @click="finish" v-if="active >= 2">完成</el-button >
 			<el-button @click="next" v-else>下一步</el-button>
 		</div>
-		<component :is="steps" ref="reportanalyse" :reportName="reportMessage.name" :patentNo="patentNo" :reportId="reportId" :personId="personId" :ChosePatentSure="ChosePatentSure" @isSave="isSave" @save="save" :isFinish="isFinish" @addTask="addTask"></component>
+		<component :is="steps" ref="reportanalyse" :reportName="reportMessage.name" :reportType='reportMessage.type' :patentNo="patentNo" :reportId="reportId" :personId="personId" :ChosePatentSure="ChosePatentSure" @isSave="isSave" @save="save" :isFinish="isFinish" @addTask="addTask"></component>
 		<!-- 弹窗提示 -->
 		<el-dialog title="温馨提示" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
 			<div class="spanDiv">

+ 2 - 2
RMS-FrontEnd/src/views/report/Invalid/InvalidPage/Claims.vue

@@ -204,8 +204,8 @@ export default {
           }
         for (var i = 0; i < this.row.length; i++) {
           if (i < row.length - 1) {
-            str = str + row[i].content + ','
-            strText = strText + row[i].explainText + ','
+            str = str + row[i].content 
+            strText = strText + row[i].explainText
             let Index = this.tableData1.findIndex(item => { return item.id == row[i].id })
             this.tableData1.splice(Index, 1)
           } else if (i == row.length - 1) {

+ 4 - 4
RMS-FrontEnd/src/views/report/avoid/avoidPage/avoidDirection.vue

@@ -439,10 +439,10 @@ export default {
         this.row.forEach((rowItem, rowIndex) => {
           // console.log(rowItem,rowIndex);
           if (rowIndex<this.row.length-1) {
-            str = str + rowItem.content + ","
-            str1 = str1 + rowItem.contentOut + ","
-            str2 = str2 + rowItem.littleDirection + ","
-            str3 = str3 + rowItem.explainText + ","
+            str = str + rowItem.content 
+            str1 = str1 + rowItem.contentOut 
+            str2 = str2 + rowItem.littleDirection 
+            str3 = str3 + rowItem.explainText 
             let Index1 = this.tableData1.findIndex(item => { return rowItem.id==item.id  })
             if (Index1!=-1) {
               this.tableData1.splice(Index1,1)

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

@@ -2,7 +2,7 @@
     <div>
         <el-row :gutter="12">
             <el-col :span="6" v-for="(item,itemIndex) in data" :key="itemIndex">
-                <el-card shadow="always" style="background:white;box-shadow:2px 2px 10px #909090">
+                <el-card shadow="always" style="background:white;box-shadow:2px 2px 10px #909090" class="card">
                 <p style="font-size:18px"><b> <el-link type="primary" style="font-size:18px;font-weight:bolder" @click="tableName(item)">{{item.name}}</el-link></b> </p>
                 <div class="fun" style="color:blue;display:flex;justify-content: flex-end;">
                     <span style="margin-right: 10px;"  @click="handleEdit(item)">编辑</span>
@@ -16,6 +16,7 @@
                         <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)&& item.type != 4">任务分配</el-dropdown-item>
                         <el-dropdown-item command="5" v-if="[1].includes(item.status) || (item.type == 4&& [1,2,3].includes(item.status))">{{!([3,4].includes(item.type))?'拆分特征':'产品信息录入'}}</el-dropdown-item>
+                        <el-dropdown-item command="8" v-if="(item.type == 4 && [1,2,3].includes(item.status))">专利与产品关联比对</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> -->
@@ -29,9 +30,11 @@
                       </el-dropdown-menu>
                     </el-dropdown>         
                 </div>
-                <p><span style="font-weight:bolder">标的专利/产品:</span> 
-                  <span v-if="item.type == 3">{{item.signPatentNo}}</span>
-                 <el-link type="primary" v-else style="font-size:16px" @click="toPatentDetails(item.signPatentNo,item)">{{item.signPatentNo}}</el-link> </p>
+                <p ><span style="font-weight:bolder">标的专利/产品:</span> 
+                  <el-tooltip class="item" effect="light"  placement="top" :content="item.signPatentNo">
+                  <span v-if="item.type == 3" >{{item.signPatentNo}}</span>
+                 <el-link type="primary" v-else style="font-size:16px" @click="toPatentDetails(item.signPatentNo,item)">{{item.signPatentNo}}</el-link> 
+                 </el-tooltip></p>
                 <!-- <p><span style="font-weight:bolder">调查类型:</span> <span v-if="item.itFlag">{{item.itFlag[0]}}
                     <span v-if="item.itFlag.length>1">
                           <el-tooltip class="item" effect="light"  placement="top">
@@ -39,14 +42,16 @@
                         <span><img src="./img/更多.png" style="width:18px;vertical-align:bottom"/></span> 
                      </el-tooltip>
                     </span></span> </p> -->
-                <p><span style="font-weight:bolder">应用场景:</span> <span v-if="item.scenarioNames">{{item.scenarioNames[0]}}
+                <p><span style="font-weight:bolder">应用场景:</span> 
+                <el-tooltip class="item" effect="light"  placement="top">
+                  <div slot="content"><span v-for="name in item.scenarioNames">{{name }}&nbsp;&nbsp;</span></div>
+                    <span v-if="item.scenarioNames">{{item.scenarioNames[0]}}
                     <span v-if="item.scenarioNames.length>1">
-                        <el-tooltip class="item" effect="light"  placement="top">
-                      <div slot="content"><span v-for="name in item.scenarioNames">{{name }}&nbsp;&nbsp;</span></div>
+                      
                       <span><img src="./img/更多.png" style="width:18px;vertical-align:bottom"/></span> 
-                      </el-tooltip>
-                      </span>
+                      </span>  
                     </span> 
+                    </el-tooltip>
                 </p>
                 <p><span style="font-weight:bolder">创建人:</span>  <span>{{item.createPersonName}}</span> </p>
                 <p><span style="font-weight:bolder">负责人:</span>  <span>{{item.personName}}</span> </p>
@@ -86,6 +91,11 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.card p{
+  white-space:nowrap;
+  // text-overflow:ellipsis;
+  overflow: hidden;
+}
 .fun span {
   cursor: pointer;
 }

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

@@ -44,6 +44,7 @@
               <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)&& scope.row.type != 4">任务分配</el-dropdown-item>
               <el-dropdown-item command="5" v-if="[1].includes(scope.row.status) || (scope.row.type == 4 && [1,2,3].includes(scope.row.status))">{{!([3,4].includes(scope.row.type))?'拆分特征':'产品信息录入'}}</el-dropdown-item>
+              <el-dropdown-item command="8" v-if="(scope.row.type == 4 && [1,2,3].includes(scope.row.status))">专利与产品关联比对</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>

+ 32 - 15
RMS-FrontEnd/src/views/report/components/mixins.js

@@ -35,15 +35,32 @@ export const explain = {
       }
     },
     handlePaste(event, row,name) {//图片的处理(剪切板方法clipboard)//row本行数据,name是传过来的row里面每一个属性
-      console.log("handleP",event,row);
+      // console.log("handleP",event,row);
+      var e = event || window.event
+      e.preventDefault();
       const items = (event.clipboardData || window.clipboardData).items;
-      console.log((event.clipboardData || window.clipboardData).items)
+      console.log((event.clipboardData || window.clipboardData).getData('Html'))
       let file = null;
       if (!items || items.length === 0) {//?
         this.$message.error("当前浏览器不支持本地");
         return;
       }
       for (let i = 0; i < items.length; i++) {
+        console.log(items[i].type)
+        if (items[i].type.indexOf("text") !== -1) {
+          var text =  (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('在这里输入文本');
+          //清除回车
+          text = text.replace(/\[\d+\]|\n|\r/ig,"")
+          console.log(text)
+          let str = row[name]?row[name]:''
+          this.$set(row,name,str +text)
+          this.saveValue(row[name])
+          this.$forceUpdate()
+          if(this.tableHeight){
+            this.setHeight()
+          }
+          break;
+        }
         if (items[i].type.indexOf("image") !== -1) {
           file = items[i].getAsFile();
           break;
@@ -56,28 +73,28 @@ export const explain = {
       const reader = new FileReader();
       reader.onload = (event) => {
         var blobUrl = event.target.result
-
         var new_img = '<img src="' + blobUrl + '" style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle" >';
         let str = row[name]?row[name]:''
         console.log(str,this.innerhtml)
-      var arr =  this.SplitHtmlTag(this.innerhtml)
-      var b = []
-      arr.forEach(item => {
-        if(item.text.indexOf('style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle"') !=-1 || item.type == 'text'){
-          b.push(item.text)
-        }
-      });
-      var html = b.join(' ')
-      console.log(html)
-      str = html
-        if (html) {//不为空
+      // var arr =  this.SplitHtmlTag(this.innerhtml)
+      // var b = []
+      // arr.forEach(item => {
+      //   if(item.text.indexOf('style="width:80px;height: 80px;border: 1px solid #f9f6f675;vertical-align:middle"') !=-1 || item.type == 'text'){
+      //     b.push(item.text)
+      //   }
+      // });
+      // var html = b.join(' ')
+      // console.log(html)
+      // str = html
+        if (this.innerHtml) {//不为空
           // row[name] = this.innerhtml + new_img
-          this.$set(row,name,html + new_img)
+          this.$set(row,name,this.innerhtml + new_img)
           this.innerhtml = ''
         } else {
           // row[name] = str + new_img
           this.$set(row,name,str + new_img)
         }
+        this.saveValue(row[name])
         this.$forceUpdate()
         if(this.tableHeight){
           this.setHeight()

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

@@ -21,7 +21,7 @@
          <div class="right">
           <!-- <el-button type="warning" size="small" style="display: inline-block;margin-right: 10px;" @click="handleField">显示栏位管理</el-button> -->
           <div style="margin-top: 10px;margin-right: 10px;display: inline-block;">
-            <el-button size="small" type="primary" @click="reportVisual" style="margin-right:10px">报告可视化</el-button>
+            <!-- <el-button size="small" type="primary" @click="reportVisual" style="margin-right:10px">报告可视化</el-button> -->
             <el-button-group>
               <el-button :type="queryShowType === '0' ? 'primary' : ''" @click="onChange2('0')" size="small">列表 </el-button>
               <el-button :type="queryShowType === '1' ? 'primary' : ''" @click="onChange2('1')" size="small">卡片</el-button>
@@ -261,6 +261,19 @@ export default {
               this.$message.info("已取消删除")         
             });
           break
+        case '8'://侵权分析技术特征对比
+            this.$s.setSession('reportMessage1',row)
+            var routerReport3 = this.$router.resolve({
+                  path: "/tortIndex",
+                  query: {
+                    id: row.id,
+                    patentNo:row.signPatentNo,
+                    personId:row.personId,
+                    type:8
+                  }
+                })
+            window.open(routerReport3.href, '_blank');
+            break
         case 'e':
           this.handleEdit(row)
           break
@@ -321,6 +334,7 @@ export default {
                 id: val.id,
                 patentNo:val.signPatentNo,
                 personId:val.personId,
+                type:5
               }
             })
             window.open(routerReport3.href, '_blank');//open方法中添加_blank属性打开新窗口页面
@@ -390,6 +404,7 @@ export default {
     },
     onChange2(type) {
       this.queryShowType = type
+      this.queryParams.size = this.queryShowType === '0' ? 10 : 12
       this.onChange()
     },
     handleChangeView() {
@@ -410,10 +425,12 @@ export default {
       }
     },
     getList() {
+      
+      // this.pageSize = this.queryShowType === '0' ? [10] : [12]
       this.loading = true
       this.$api.QueryReport(this.queryParams).then(response=>{
         if(response.code == 200){
-          this.pageSize = [10]
+          this.pageSize = this.queryShowType === '0' ? [10] : [12]
           this.dataList = response.data
           // if(!this.queryParams.size){
           //   this.queryParams.current = 1

+ 1 - 1
RMS-FrontEnd/src/views/report/reportDetails/components/SelectedPatent.vue

@@ -141,7 +141,7 @@ export default {
     search(c){
       this.taskSources={
         taskSources:c.taskSources,
-        notInPatentNos:c.notInPatentNos
+        notAssignTypes:c.notAssignTypes
       }
     },
     getList() { },

+ 12 - 10
RMS-FrontEnd/src/views/report/reportDetails/components/common/customFields.vue

@@ -71,8 +71,8 @@
             </el-collapse-item>
             
           </el-collapse>
-      <el-collapse>
-        <el-collapse-item v-for="item in taskSources" :title="item.taskType" >
+      <el-collapse style="margin: 0px 5px 0px 5px;border-top:0">
+        <el-collapse-item v-if="!taskId" v-for="item in taskSources" :title="item.taskType" >
               <el-tree
                 :data="item.personDates"
                 show-checkbox
@@ -109,7 +109,7 @@ export default {
     return {
       taskSources:[],
       taskSources1:[],
-      notInPatentNos:[],
+      notAssignTypes:[],
       activeNames: [],
       hasSource: [],
       sourceQuery: [],
@@ -219,16 +219,16 @@ export default {
       // })
       // if(c!=-1){
       //   this.taskSources1= []
-      //   var notInPatentNos = []
+      //   var notAssignTypes = []
       // }else{
 
       // }
       if(a.name == '未分配'){
-        var c = this.notInPatentNos.findIndex(ele=>{
+        var c = this.notAssignTypes.findIndex(ele=>{
           return ele == a.taskTypeId
         })
         if(c!=-1){
-          this.notInPatentNos.splice(c,1)
+          this.notAssignTypes.splice(c,1)
         }
       }else{
        
@@ -248,7 +248,7 @@ export default {
       
       b.checkedNodes.forEach(item=>{
         if(item.name == '未分配'){
-          this.notInPatentNos.push(a.taskTypeId)
+          this.notAssignTypes.push(a.taskTypeId)
         }else{
           
           this.taskSources1.push({
@@ -261,7 +261,7 @@ export default {
       })
       var c = {
         taskSources:this.taskSources1,
-        notInPatentNos:this.notInPatentNos
+        notAssignTypes:this.notAssignTypes
       }
       console.log(c)
       this.$emit('search',c)
@@ -413,11 +413,13 @@ export default {
               i.number = Number(i.doneNum) + Number(i.notDoneNum)
               i.children=[{
                 name:'已完成',
-                number:i.doneNum
+                number:i.doneNum,
+                taskTypeId:item.taskType == '对比任务'?2:3
               },
             {
                 name:'未完成',
-                number:i.notDoneNum
+                number:i.notDoneNum,
+                taskTypeId:item.taskType == '对比任务'?2:3
             }]
             })
             item.personDates.push({

+ 20 - 4
RMS-FrontEnd/src/views/report/reportDetails/components/common/customTable.vue

@@ -7,8 +7,9 @@
             :data="tableData"
             v-loading="loading"
             header-row-class-name="custom-table-header"
-            :default-sort="{ prop : 'date', order: 'descending' }">
-            <el-table-column prop="patentNo"  label="专利号" sortable width="200" align="center">
+            :default-sort="{ prop : 'date', order: 'descending' }"
+            @sort-change="sortChange">
+            <el-table-column prop="patentNo"  label="专利号" width="200" align="center">
               <template slot-scope="scope">
                 <div>
                   <el-link @click.native="toContrast(scope.row,scope.$index)" :reportId="reportId">{{scope.row.patentNo}}</el-link>
@@ -16,7 +17,7 @@
               </template>
             </el-table-column>
             <el-table-column prop="SysOrder" label="重要度" sortable width="100" align="center"></el-table-column>
-            <el-table-column prop="name" label="专利标题" sortable width="300" align="center"></el-table-column>
+            <el-table-column prop="name" label="专利标题"  width="300" align="center"></el-table-column>
             <!-- <el-table-column prop="state" label="状态" sortable  align="center"></el-table-column> -->
             <el-table-column prop="simpleStatus" label="状态" align="center" >
               <!-- <template slot-scope="scope">
@@ -76,6 +77,21 @@ export default {
     }
   },
   methods: {
+    //排序
+    sortChange({ column, prop, order }) {
+      console.log(order)
+      if (!order) {
+        return false
+      }
+      const o = {
+        'descending': 'desc',
+        'ascending': 'asc',
+      }
+      this.queryParams.orderType =  o[order]
+      this.queryParams.orderItem = prop
+      this.queryParams.current=1
+      this.getList()
+    },
     handleCurrentChange(val) {
       this.queryParams.current=val
       this.getList()
@@ -134,7 +150,7 @@ export default {
     },
     taskSources(val){
       this.queryParams.taskSources = val.taskSources
-      this.queryParams.notInPatentNos = val.notInPatentNos
+      this.queryParams.notAssignTypes = val.notAssignTypes
       this.getList()
     }
 

+ 12 - 9
RMS-FrontEnd/src/views/report/tort/index.vue

@@ -1,6 +1,6 @@
 <template>
     <div>
-        <el-steps :active="active - 0" finish-status="success" align-center style="margin-top: 20px;">
+        <!-- <el-steps :active="active - 0" finish-status="success" align-center style="margin-top: 20px;">
 			<el-step
 				v-for="(item, index) of stepParams"
 				:key="index"
@@ -9,13 +9,14 @@
 				:class="stepSuc.includes(index) ? 'stepSuc' : 'stepErr'"
 				@click.native="handStep(index)"
 			></el-step>
-		</el-steps>
+		</el-steps> -->
 		<!-- 上/下一页 -->
-		<div class="changeStep">
+		<!-- <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> -->
+        <Product-Contrast v-if="type == 8" :reportMessage="reportMessage" :patentNo="patentNo" :reportId="reportId" :personId="personId"></Product-Contrast>
+		<component v-else :is="steps" ref="reportanalyse" :reportMessage="reportMessage" :reportType="reportMessage.type" :patentNo="patentNo" :reportId="reportId" :personId="personId" @isSave="isSave"></component>
     </div>
 </template>
 
@@ -33,6 +34,7 @@ import ProductContrast from './tortPage/ProductContrast.vue'
             patentNo: '',
             reportId: '',
             personId:"",
+            type:'',//5是产品信息录入,8是技术特征对比
             active: 0,
             steps: "Product",
             stepSuc: [],
@@ -41,10 +43,10 @@ import ProductContrast from './tortPage/ProductContrast.vue'
                 title: "标的产品",
                 status: "process",
                 },
-                {
-                title: "技术特征对比",
-                status: "wait",
-                },
+                // {
+                // title: "技术特征对比",
+                // status: "wait",
+                // },
             ],
             keepSure: true,
         }
@@ -53,6 +55,7 @@ import ProductContrast from './tortPage/ProductContrast.vue'
         this.patentNo = this.$route.query.patentNo
         this.reportId = this.$route.query.id
         this.personId = this.$route.query.personId
+        this.type = this.$route.query.type
         this.reportMessage = this.$s.getSession('reportMessage1')
         console.log("@@@",this.$s.getSession('reportMessage1'))
     },

+ 1 - 1
RMS-FrontEnd/src/views/task/components/mixins.js

@@ -25,7 +25,7 @@ export const Contrast = {
                 // taskId: this.taskId,
                 patentNo:row.patentNo,
                 reportId:this.reportId,
-                taskWorkRemak:this.taskWorkRemak,
+                taskWorkRemak:0,
                 location:location,
                 // state:this.queryParams.taskStatus
               }