فهرست منبع

1.每个组合添加删除;
2.对比结果以另一种方式查看

zhuliu 2 سال پیش
والد
کامیت
18808c9b14

+ 220 - 78
RMS-FrontEnd/src/views/report/Invalid/InvalidPage/Result.vue

@@ -35,88 +35,167 @@
     </el-dropdown> -->
        </div>
       </div>
-  
-      <el-table
-      ref="table"
-      :data="tableData.filter(item=>typeArr.includes(item.pType))"
-      :span-method="objectSpanMethod"
-      :row-class-name="tableRowClassName"
-      border
-      :height="tableHeight"
-      style="min-width: 100%; margin-top: 20px;overflow:auto"
-      v-if="show && show1"
-      >
-      
-      <el-table-column
-        prop="pRightName"
-        label="标的权利项"
-        align="center"
-        width="200px">
-        <template slot-scope="scope">  
-          <el-tooltip class="item" effect="dark" :content="scope.row.pContent" placement="top">
-            <span>{{scope.row.pRightName}}</span>
-          </el-tooltip>     
+      <div v-if="show && show1" style="margin-top: 20px;">
+          <el-tabs v-model="activeName" @tab-click="handleClick">
+          <el-tab-pane label="查看对比结果" name="first">
+            <el-table
+                ref="table"
+                :data="tableData.filter(item=>typeArr.includes(item.pType))"
+                :span-method="objectSpanMethod"
+                :row-class-name="tableRowClassName"
+                border
+                :height="tableHeight"
+                style="min-width: 100%; overflow:auto"
+                
+                >
+                
+                <el-table-column
+                  prop="pRightName"
+                  label="标的权利项"
+                  align="center"
+                  width="200px">
+                  <template slot-scope="scope">  
+                    <el-tooltip class="item" effect="dark" :content="scope.row.pContent" placement="top">
+                      <span>{{scope.row.pRightName}}</span>
+                    </el-tooltip>     
+                        
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="content"
+                  label="标的权利要求特征"
+                  align="center"
+                  width="300px">
+                  <template slot-scope="scope" >       
+                          {{scope.row.content}}
+                  </template>
+                </el-table-column>
               
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="content"
-        label="标的权利要求特征"
-        align="center"
-        width="300px">
-        <template slot-scope="scope" >       
-                 {{scope.row.content}}
-        </template>
-      </el-table-column>
+                <el-table-column v-for="(item, index) in tableHeader" :key="index" align="center" :min-width="item.length > 6 ? '190' : '110'">
+                  <template slot="header">
+                    <span>
+                      <el-link type="primary"  @click="editContrast(item.patentNo)">{{item.patentNo}}(D{{ index+1 }})</el-link>
+                      </span>
+                      <el-tag style="font-size:12px;border-radius:50%" v-if="item.remark">{{item.remark}}</el-tag>
+                      <el-popover
+                        placement="bottom"
+                        width="200"
+                        trigger="click">
+                      <!-- <p style="display:flex;align-items: center"><span>移动到第</span> <el-input-number width="100px" size="small" v-model="num" @change="handleChange" :controls="false" :min="1" :max="tableHeader.length" label="输入需要交换的位置"></el-input-number><span>位</span></p> -->
+                        <el-tree
+                          ref="tree"
+                          :data="tableHeader"
+                          :props="{label:'patentNo'}"
+                          @node-drop="handleDrop"
+                          :allow-drop="allowDrop"
+                          draggable
+                          @check-change="handleCheckChange">
+                          <span class="custom-tree-node" slot-scope="{ node, data }"><el-radio v-model="val" @input="changeRadio(item,data)" :label="node.label">D{{tableHeader.findIndex(item=>item.patentNo == data.patentNo)+1}}({{data.patentNo}})</el-radio></span>
+                        </el-tree>
+                        <!-- <el-button @click="exchange" style="float:right">交换</el-button> -->
+                        <i class="el-icon-arrow-down el-icon--right" @click="getVal(item)" slot="reference"></i>
+                      </el-popover>
+                  </template>
+                      <template slot-scope="scope" >
+                        <!-- <div v-if="scope.row[item.patentNo]" style="width:calc(100% + 20px);margin-left:-10px">
+                        <table style="width:100%;text-align:left">
+                            <tr v-for="i in scope.row[item.patentNo]">{{i}}</tr>
+                        </table>
+                      </div> -->
+                      <div class="" v-if="scope.row[item.patentNo]" style="width:calc(100% + 20px);margin-left:-10px">
+                            <p v-for="i in scope.row[item.patentNo]">{{i.content}} <el-image ref="image" :preview-src-list="imgList" v-if="i.filePath" :src="i.filePath"  style="vertical-align:middle;width:100px" @click="showImage(i.filePath)"></el-image></p>
+                        </div>
+                          <!-- <span>{{scope.row[item.patentNo]?scope.row[item.patentNo]:''}}</span> -->
+                      </template>
+                </el-table-column>
+              </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="查看对比记录" name="second">
+            <el-table
+              ref="table"
+              :data="recordData"
+              border
+              :height="tableHeight"
+              style="min-width: 100%; overflow:auto">
+              <el-table-column
+                  prop="patentNo"
+                  label="对比文件"
+                  align="center"
+                  width="300px">
+                  <template slot-scope="scope" >       
+                    <span>
+                      <el-link type="primary"  @click="editContrast(scope.row.patentNo)">{{scope.row.patentNo}}(D{{ scope.$index+1 }})</el-link>
+                      </span>
+                      <el-tag style="font-size:12px;border-radius:50%" v-if="scope.row.remark">{{scope.row.remark}}</el-tag>
+                      <el-popover
+                        placement="bottom"
+                        width="200"
+                        trigger="click">
+                      <!-- <p style="display:flex;align-items: center"><span>移动到第</span> <el-input-number width="100px" size="small" v-model="num" @change="handleChange" :controls="false" :min="1" :max="tableHeader.length" label="输入需要交换的位置"></el-input-number><span>位</span></p> -->
+                        <el-tree
+                          ref="tree"
+                          :data="tableHeader"
+                          :props="{label:'patentNo'}"
+                          @node-drop="handleDrop"
+                          :allow-drop="allowDrop"
+                          draggable
+                          @check-change="handleCheckChange">
+                          <span class="custom-tree-node" slot-scope="{ node, data }"><el-radio v-model="val" @input="changeRadio(scope.row,data)" :label="node.label">D{{tableHeader.findIndex(item=>item.patentNo == data.patentNo)+1}}({{data.patentNo}})</el-radio></span>
+                        </el-tree>
+                        <!-- <el-button @click="exchange" style="float:right">交换</el-button> -->
+                        <i class="el-icon-arrow-down el-icon--right" @click="getVal(scope.row)" slot="reference"></i>
+                      </el-popover>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="content"
+                  label="对比记录"
+                  align="center"
+                  min-width="300px">
+                  <template slot-scope="scope" >       
+                          <div v-for="item in scope.row.recordList" :key="JSON.stringify(item)">
+                            <p>{{item.content}}<el-image ref="image" :preview-src-list="imgList" v-if="item.filePath" :src="item.filePath"  style="vertical-align:middle;width:100px" @click="showImage(item.filePath)"></el-image><span>【{{ item.fields }}】</span></p>
+                          </div>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="features"
+                  label="对应特征"
+                  align="center"
+                  min-width="300px">
+                  <template slot-scope="scope" >       
+                    <div v-for="item in scope.row.featuresList.sort((a,b)=>{return a.rightName.slice(2,a.rightName.length) - b.rightName.slice(2,b.rightName.length)})" :key="JSON.stringify(item)">
+                      <p>
+                        <span>
+                          <el-tooltip class="item" effect="dark" :content="item.content" placement="top-start">
+                            <span>特征{{ item.featuresOrder }}</span>
+                          </el-tooltip>
+                        </span>
+                        <span>
+                          <el-tooltip class="item" effect="dark" :content="item.rightContent" placement="top-start">
+                            <span>[{{ item.rightName }}]</span>
+                          </el-tooltip>
+                        </span>
+                      </p>
+                    </div>
+                  </template>
+                </el-table-column>
+            </el-table>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+     
      
-      <el-table-column v-for="(item, index) in tableHeader" :key="index" align="center" :min-width="item.length > 6 ? '190' : '110'">
-        <template slot="header">
-          <span>
-            <el-link type="primary"  @click="editContrast(item.patentNo)">{{item.patentNo}}(D{{ index+1 }})</el-link>
-            </span>
-            <el-tag style="font-size:12px;border-radius:50%" v-if="item.remark">{{item.remark}}</el-tag>
-            <el-popover
-              placement="bottom"
-              width="200"
-              trigger="click">
-             <!-- <p style="display:flex;align-items: center"><span>移动到第</span> <el-input-number width="100px" size="small" v-model="num" @change="handleChange" :controls="false" :min="1" :max="tableHeader.length" label="输入需要交换的位置"></el-input-number><span>位</span></p> -->
-              <el-tree
-                ref="tree"
-                :data="tableHeader"
-                :props="{label:'patentNo'}"
-                @node-drop="handleDrop"
-                :allow-drop="allowDrop"
-                draggable
-                @check-change="handleCheckChange">
-                <span class="custom-tree-node" slot-scope="{ node, data }"><el-radio v-model="val" @input="changeRadio(item,data)" :label="node.label">D{{tableHeader.findIndex(item=>item.patentNo == data.patentNo)+1}}({{data.patentNo}})</el-radio></span>
-              </el-tree>
-              <!-- <el-button @click="exchange" style="float:right">交换</el-button> -->
-              <i class="el-icon-arrow-down el-icon--right" @click="getVal(item)" slot="reference"></i>
-            </el-popover>
-        </template>
-            <template slot-scope="scope" >
-              <!-- <div v-if="scope.row[item.patentNo]" style="width:calc(100% + 20px);margin-left:-10px">
-               <table style="width:100%;text-align:left">
-                  <tr v-for="i in scope.row[item.patentNo]">{{i}}</tr>
-              </table>
-            </div> -->
-            <div class="innerTable" v-if="scope.row[item.patentNo]" style="width:calc(100% + 20px);margin-left:-10px">
-                  <p v-for="i in scope.row[item.patentNo]">{{i.content}}<img v-if="i.filePath" :src="i.filePath" width="100px" style="vertical-align:middle" @click="showImage(i.filePath)" /></p>
-              </div>
-                 <!-- <span>{{scope.row[item.patentNo]?scope.row[item.patentNo]:''}}</span> -->
-            </template>
-      </el-table-column>
-      </el-table>
 
       <div style="background:white;padding:20px;background:#99CCFF;margin-top:20px" v-else-if="!show && show1">
           <p style="margin-top:0">选择对比方案</p>
           <el-divider></el-divider>
-          <el-select v-model="ruleForm.type" placeholder="请选择"  style="padding:20px 0 0 0">
+          <el-select v-model="ruleForm.type" placeholder="请选择" @change="changeRight" style="padding:20px 0 0 0">
               <el-option v-for="item in rightList.filter(item=>typeArr.includes(item.type))" :key="item.rightId" :value="item.rightId" :label="item.pRightName"></el-option>
           </el-select>
         <el-table
           ref="table"
-          :data="tableData.filter(item=>item.rightId == ruleForm.type)"
+          :data="tableData2"
           :span-method="objectSpanMethod"
           :row-class-name="tableRowClassName"
           :height="tableHeight"
@@ -184,7 +263,7 @@
                  <p v-for="(inc,index) in scope.row[item.patentNo]">
                   <el-checkbox :label="item.patentNo+scope.row[item.patentNo+'_Id'][index]" @change="getFunInfo(scope.row,item.patentNo,index)" v-if="scope.row[item.patentNo]">
                   <!-- <el-input style="width:calc(100% + 20px);margin-left:-10px;word-wrap:break-word;" v-model="i"></el-input>  -->
-                  <span>{{inc.content}}<img v-if="inc.filePath" :src="inc.filePath" width="100px" style="vertical-align:middle" @click="showImage(inc.filePath)" /></span> 
+                  <span>{{inc.content}}<el-image ref="image" :preview-src-list="imgList" v-if="inc.filePath" :src="inc.filePath"  style="vertical-align:middle;width:100px" @click.prevent="showImage(inc.filePath)"></el-image></span> 
                   </el-checkbox>
                 </p>
               </div>
@@ -203,7 +282,6 @@
             <div style="min-height:60px;outline: #dcdfe6;border:1px solid #DCDFE6;border-radius:5px;" id="preview" class="edit-box" contenteditable="true" placeholder="请输入对比结论/理由(可粘贴图片)"
               v-html="ruleForm.result"  @input="saveValue($event.target.innerHTML)"  @click="saveValue($event.target.innerHTML)"
               @blur="getValue(ruleForm,'result')"  v-on:paste="handlePaste($event,ruleForm,'result')">
-              <!-- {{ruleForm.result}} -->
             </div>
             <!-- <el-input type="textarea" v-model="ruleForm.result" placeholder="请输入结论"></el-input> -->
           </div>
@@ -231,6 +309,11 @@ export default {
   props:['reportId2','signPatentNo'],
   data() {
     return {
+      imgList:[],
+      activeName:'first',
+      FeatureList:[],
+      CompareRecord:[],
+      recordData:[],
       tableHeight: null,
       val:null,
       num:null,
@@ -305,6 +388,7 @@ export default {
       show: true,
       show1: true,
       tableData: [],
+      tableData2: [],
       tableHeader: [],
       checkList: [],
       ruleForm: {
@@ -350,6 +434,7 @@ export default {
             })
         },
     show(){
+      this.activeName = 'first'
       this.$nextTick(() => {
               this.setHeight()
       })
@@ -380,9 +465,24 @@ export default {
     this.getContrastList()
   },
   methods: {
+    changeRight(val){
+      this.tableData2 = this.tableData.filter(item=>item.rightId == this.ruleForm.type)
+      this.getSpanArr(this.tableData2)
+    },
+    handleClick(tab, event) {
+      this.$nextTick(() => {
+        if(this.activeName == 'second'){
+          var height = window.innerHeight - 350
+          this.tableHeight = height>300?height:300
+        }else{
+          this.setHeight()
+        }
+        
+      })
+    },
     setHeight() {
       if(this.show){
-        var num = 50
+        var num = 200
       }else{
         var num = 100
       }
@@ -415,6 +515,7 @@ export default {
       })
       //console.log(val1,node,index1,index2)
       this.tableHeader[index1] = this.tableHeader.splice(index2,1,this.tableHeader[index1])[0]
+      this.recordData[index1] = this.recordData.splice(index2,1,this.recordData[index1])[0]
       //console.log(this.tableHeader)
       this.addOrder()
       
@@ -523,8 +624,10 @@ export default {
     },
     //查看图片
     showImage(url){
-      this.imageUrl = url
-        this.showFile = true
+      this.imgList=[url]
+      this.$refs.image[0].showViewer = true
+      // this.imageUrl = url
+      //   this.showFile = true
     },
 
     TypeSelect(val) {//显示
@@ -548,7 +651,7 @@ export default {
             }
             this.$api.getFeatures(PatentRight).then(res => {
                 if (res.code == 200) {
-                  
+                  this.FeatureList = JSON.parse(JSON.stringify(res.data.patentRightVos))
                 this.tableData = [];
                 for (let i = 0; i < res.data.patentRightVos.length; i++){
                     // if (res.data.patentRightVos[i].features.length>0) {
@@ -581,6 +684,7 @@ export default {
                 // this.tableData = []
                 this.$api.selectCompareRecord(a).then(response=>{
                   if(response.code == 200){
+                    this.CompareRecord = JSON.parse(JSON.stringify(response.data.records))
                     // //console.log(response.data)
                     var b = JSON.parse(JSON.stringify(this.tableData[0]))
                     response.data.records.forEach(item => {
@@ -637,14 +741,51 @@ export default {
                     }
                     
                     this.tableHeader = response.data.tableHeader
+                    this.getRecordData()
                   }
                   
                 })
                 this.getRightList()
                 this.getSpanArr(this.tableData)
+                
                 }
                
             }) 
+            
+    },
+
+    //对比记录
+    getRecordData(){
+      this.recordData = JSON.parse(JSON.stringify(this.tableHeader))
+      this.CompareRecord.forEach(item=>{
+        this.recordData.forEach(item1=>{
+          if(item1.patentNo == item.patentNo){
+            if(item1.recordList){ 
+            }else{
+              item1.recordList = []
+              item1.featuresList=[]
+            }
+            item1.recordList.push({
+                content:item.content,
+                filePath:item.filePath?this.$p + item.filePath:'',
+                fields:item.fields,
+                position:item.position
+              })
+              item.features.forEach(item2=>{
+                var index = item1.featuresList.findIndex(i=>{
+                  return i.id == item2.id
+                })
+                if(index == -1){
+                  var rightContent = this.FeatureList.filter(y=>{
+                    return y.RightName == item2.rightName
+                  })[0].content
+                  item2.rightContent = rightContent
+                  item1.featuresList.push(item2)
+                }
+              })
+          }
+        })
+      })
     },
     // renderHeader(h, { column, $index }) {
 
@@ -693,6 +834,7 @@ export default {
       this.show = true
     },
     changeShow2() {
+      this.tableData2 = this.tableData.filter(item=>item.rightId == this.ruleForm.type)
       this.isSelect = false
       this.show = false
     },

+ 9 - 3
RMS-FrontEnd/src/views/report/reportDetails/components/ContrastPlan.vue

@@ -195,7 +195,7 @@
             <div >
               <el-checkbox-group v-model="checkList" >
                 <el-checkbox :label="scope.row.PlanId"  >
-                  <p>{{ scope.row.resultant}}</p>
+                  <p ><span>{{ scope.row.resultant}} </span><span><el-link style="color:red;margin-left:10px" @click.prevent="delPlan(scope.row.PlanId)">删除</el-link></span></p>
                 </el-checkbox>
               </el-checkbox-group>
             </div>
@@ -434,14 +434,20 @@ export default {
         //   return ''
         // }
       },
-      delPlan(){
+      delPlan(id){
+        if(id){
+          a = [id]
+        }else{
+          var a = this.checkList
+        }
+        
         //console.log(this.checkList)
         this.$confirm('此操作将永久删除, 是否继续?', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
-          this.$api.deleteCompareScenarios(this.checkList).then(response=>{
+          this.$api.deleteCompareScenarios(a).then(response=>{
             if(response.code == 200){
               this.$message({
                 type: 'success',