zhuliu преди 1 година
родител
ревизия
b662f60a6c

+ 12 - 0
src/router/index.js

@@ -497,6 +497,18 @@ const routes = [
             },
             component: () => import('@/views/noveltySearch/components/exportReport/index.vue'),
           },
+          // 复用结果
+          {
+            path: '/reuseResults',
+            name: 'reuseResults',
+            meta: {
+              title: '复用结果',
+              sign: 'reuseResults',
+              belong: 'AllReport',
+              keepAlive:true
+            },
+            component: () => import('@/views/noveltySearch/components/reuseResults/index.vue'),
+          },
         ]
       },
       //任务模块

+ 225 - 0
src/views/components/dialog/menuDialog/noveltySearchContrast.vue

@@ -0,0 +1,225 @@
+<template>
+    <div>
+      <el-dialog :title="title" v-draggable :visible.sync="visible" width="1000px" custom-class="checkFile" :before-close="close" :modal="false" :close-on-click-modal="false" :modal-append-to-body="false">
+          <el-form :model="form" ref="form" label-width="100px" label-position="left">
+            <el-form-item label="选中文本" class="item">
+                <el-input v-model="form.evidenceText" readonly="true" placeholder="请输入" type="textarea" show-word-limit></el-input>
+            </el-form-item>
+            <el-form-item label="位置/附图号" class="item">
+                <el-input v-model="form.fieldName" placeholder="请输入备注" show-word-limit></el-input>
+            </el-form-item>
+            <el-form-item label="标的类型" class="item">
+                <el-radio-group v-model="radio">
+                    <el-radio :label="1">代表图</el-radio>
+                    <el-radio :label="2">技术特征</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item label="代表图" class="item">
+                <el-upload ref="upload" action="#" :auto-upload="false" :on-change="change" list-type="picture" :show-file-list="false">
+                        <span style="display:flex;flex-direction:row;flex-wrap:wrap;">
+                            <span class="avatar" v-if="form.fileGuid"
+                                style="margin-left:10px">
+                                <span class="deleteImg">
+                                <span>
+                                    <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview()"></i>
+                                    <i class="el-icon-delete" @click.stop="handleRemove()"></i>
+                                </span>
+                                </span>
+                                <el-image fit="contain" ref="image" class="img" :src="$commonJS.checkViewer(form.fileGuid)" :preview-src-list="[$commonJS.checkViewer(form.fileGuid)]"></el-image>
+                            </span>
+                            <i class="el-icon-plus avatar-uploader-icon" v-if="!form.fileGuid"></i>
+                        </span>
+                    </el-upload>
+            </el-form-item>
+            <el-form-item label="技术特征内容" class="item">
+                <el-input v-model="form.common" placeholder="请输入技术特征内容" show-word-limit></el-input>
+            </el-form-item>
+            
+            <el-form-item label="对比说明" class="item">
+                <el-input v-model="form.common" placeholder="请输入对比说明" show-word-limit></el-input>
+            </el-form-item>
+          </el-form>
+
+          <div slot="footer" class="dialog-footer">
+              <el-button @click="close">取 消</el-button>
+              <el-button type="primary" v-if="form.id" @click="delContrast(form)">删 除</el-button>
+              <el-button type="primary" :loading="btnLoading" @click="submit">确 定</el-button>
+          </div>
+      </el-dialog>
+    </div>
+</template>
+  
+<script>
+  import { mapGetters } from "vuex";
+  export default {
+    components: {
+    },
+    props: {},
+    data() {
+      return {
+          form:{},
+          title:'查新对比',
+          visible:false,
+          btnLoading:false
+      };
+    },
+    watch: {},
+    computed: {
+      ...mapGetters(["contextMenu",'highlight']),
+    },
+    created() {},
+    mounted() {
+    },
+    methods: {
+      open(){
+          this.getData()
+          this.visible = true
+      },
+      close(){
+          this.checkData = []
+          this.checkFeatures = []
+          this.visible = false
+      },
+ 
+      getData(){
+          var mark = this.contextMenu.mark
+          this.form = {
+              literatureId:mark.literatureId,
+              fieldName:mark.column,
+              position:mark.position,
+              markType:mark.markType,
+              markColor:mark.markColor,
+              evidenceText:mark.text,
+              id:mark.id,
+              common:mark.common,
+              fileGuid:mark.fileGuid
+          }
+          this.form.patentNo = mark.signPatentNo
+          this.form.projectId = mark.projectId
+      },
+      submit(){
+          if(!this.$permission.FunPermissions('xiaoshi/annotationLibrary')){
+              this.$showPermissionDialog()
+              return false
+          }
+      },
+
+      changeHighlight(id,type){
+          var contrastList = this.highlight.contrastList
+          var message = ''
+          if(this.form.id){
+              var index = contrastList.findIndex(item=>{
+                  return item.id == this.form.id
+              })
+              if(type){
+                  message = '删除成功'
+                  contrastList.splice(index,1)
+              }else{
+                  message = '更新成功'
+                  contrastList.splice(index,1,this.form)
+              }
+          }else{
+              message = '新增成功'
+              this.form.id = id
+              contrastList.push(this.form)
+          }
+          this.$message.success(message)
+          this.$store.commit("SET_PATENT_CONTRAST",contrastList)
+      },
+      //文件上传
+      change(file,fileList){
+          let formData = new FormData()
+          formData.append('sourceId',this.$constants.sourceId)
+          formData.append('files',file.raw)
+          this.$api.uploadFile(formData).then(response=>{
+              if(response.code == 200){
+                  this.$set(this.form,'fileGuid',response.data[0])
+              }
+          })
+      },
+      handleRemove() {
+          this.$set(this.form,'fileGuid','')
+      },
+      handlePictureCardPreview() {
+          this.$refs.image.showViewer = true
+      },
+      delContrast(){
+          if(!this.$permission.FunPermissions('xiaoshi/annotationLibrary')){
+              this.$showPermissionDialog()
+              return false
+          }
+          var ids = [this.form.id]
+          this.$confirm('确认删除该数据吗?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+          }).then(() => {
+              this.$api.removeCompareRecord(ids).then(response => {
+                  this.changeHighlight(this.form.id,'删除')
+                  this.close()
+              }).catch(error => {
+              })
+          })
+      }
+    },
+  };
+</script>
+<style lang="scss" scoped>
+  .avatar-uploader-icon {
+    background-color: #fbfdff;
+    border: 1px dashed #c0ccda;
+    font-size: 28px;
+    color: #8c939d;
+    width: 148px;
+    height: 148px;
+    line-height: 148px;
+    text-align: center;
+  }
+  
+  .avatar {
+    position: relative;
+    width: 148px;
+    height: 148px;
+    display: block;
+  }
+  
+  .avatar:hover .deleteImg {
+    display: block;
+  }
+  
+  .deleteImg {
+    display: none;
+    font-size: 30px;
+    width: 148px;
+    height: 148px;
+    background-color: black;
+    opacity: 0.6;
+    position: absolute;
+    top: 0;
+    right: 0;
+    left: 0;
+    bottom: 0;
+    margin: auto;
+    z-index: 999;
+  }
+  
+  .avatar .img {
+    width: 148px;
+    height: 148px;
+  }
+  
+  .deleteImg span i {
+    margin-left: 10px;
+    color: #fff;
+  }
+  
+  .deleteImg span {
+    display: flex;
+    align-items: center;
+    /*垂直居中*/
+    justify-content: center;
+    /*水平居中*/
+    width: 100%;
+    height: 100%;
+  }
+</style>

+ 9 - 1
src/views/layout/components/contextMenu.vue

@@ -6,6 +6,8 @@
     <annotation ref="annotation"></annotation>
     <my-ImageViewer v-if="showImg" :on-close="closeViewer" :url-list="[imgSrc]"></my-ImageViewer>
     <translate ref="translate"></translate>
+    <noveltySearchContrast ref="noveltySearchContrast"></noveltySearchContrast>
+
   </div>
 </template>
 
@@ -14,12 +16,14 @@ import { mapGetters } from 'vuex'
 import contrast from '@/views/components/dialog/menuDialog/contrast.vue'
 import annotation from '@/views/components/dialog/menuDialog/annotation.vue'
 import translate from '@/views/components/dialog/menuDialog/translate.vue'
+import noveltySearchContrast from '@/views/components/dialog/menuDialog/noveltySearchContrast.vue'
 export default {
   name: 'myCommonUse',
   components: {
     contrast,
     annotation,
-    translate
+    translate,
+    noveltySearchContrast
   },
   props: {},
   data() {
@@ -127,6 +131,10 @@ export default {
     deleteMark() {
       console.log('删除')
     },
+    //查新对比
+    noveltySearchContrast(){
+      this.$refs.noveltySearchContrast.open()
+    },
   },
 };
 </script>

+ 50 - 14
src/views/noveltySearch/components/dialog/inventionPoint/inventionPoint.vue

@@ -11,10 +11,11 @@
       <div class="main">
         <div class="main_head">
           <span style="font-size:12px">发明点:</span>
+          <el-button v-if="projectId" type="text" size="mini" @click="intoProject" >进入项目</el-button>
           <div>
-            <el-button  type="text"  size="mini"  :loading="loading" v-if="btns.indexOf(1)!=-1"  @click="submit(1)">关键词</el-button>
+            <!-- <el-button  type="text"  size="mini"  :loading="loading" v-if="btns.indexOf(1)!=-1"  @click="submit(1)">关键词</el-button> -->
             <el-button  type="text"  size="mini"  :loading="loading" v-if="btns.indexOf(2)!=-1"  @click="submit(2)">相似案件</el-button>
-            <el-button  type="text"  size="mini"  :loading="loading" v-if="btns.indexOf(3)!=-1"  @click="submit(3)">确定</el-button>
+            <el-button  type="text"  size="mini"  :loading="loading" v-if="btns.indexOf(3)!=-1"  @click="submit(3)">保存</el-button>
           </div>
         </div>
         <div class="main_input">
@@ -62,23 +63,23 @@
                   <div slot="head">
                     <div style="font-size:14px">
                       序号:{{ (index + 1)  }}  
-                      <span style="margin-left:10px;color:cadetblue;">相似度:{{ item.same }}</span>
+                      <!-- <span style="margin-left:10px;color:cadetblue;">相似度:{{ item.same }}</span> -->
                     </div>
                     <div>
-                      <el-button type="text" size="mini" @click="clickItem(item)" v-if="clickType == 2">复用结果</el-button>
-                      <el-button type="text" size="mini" @click="clickItem(item)" v-if="clickType == 3">进入</el-button>
+                      <el-button type="text" size="mini" @click="clickItem(item,1)" v-if="clickType == 2">复用结果</el-button>
+                      <el-button type="text" size="mini" @click="clickItem(item,2)" v-if="!projectId">使用</el-button>
                     </div>
                   </div>
                   <el-form label-width="100px">
                     <el-form-item label="发明点:">
                       <div v-html="item.inventionPoint"></div>
                     </el-form-item>
-                    <el-form-item label="创建人:">
+                    <!-- <el-form-item label="创建人:">
                       <div v-html="item.createName"></div>
                     </el-form-item>
                     <el-form-item label="创建时间:">
                       <div v-html="item.createTime"></div>
-                    </el-form-item>
+                    </el-form-item> -->
                   </el-form>
                 </myCard>
               </div>
@@ -123,11 +124,13 @@
         </div>
       </div>
     </div>
+    <reportTemplateDialog ref="reportTemplateDialog"></reportTemplateDialog>
   </div>
 </template>
 
 <script>
 import { startDrag } from '@/utils/direct/drag'
+import reportTemplateDialog from '@/views/noveltySearch/components/dialog/reportTemplate/reportTemplateDialog.vue';
 export default {
   directives:{
     'drag':{
@@ -141,7 +144,9 @@ export default {
       }
     }
   },
-  components: {},
+  components: {
+    reportTemplateDialog
+  },
   props: {
     type:{
       type:String,
@@ -325,13 +330,12 @@ export default {
     },
     //确定
     submit(type) {
-      this.clickType = type
+      
       if(type == 3){
-        if(this.projectId){
-          this.saveInventionPoint()
-          return
-        }
+        this.saveInventionPoint()
+        return
       }
+      this.clickType = type
       if(type == 1){}
       else{
         this.tableData = [
@@ -365,7 +369,25 @@ export default {
       }
       this.showResult = true;
     },
-    clickItem(){},
+    clickItem(row,type){
+      if(type == 2){
+        //使用
+        this.$emit('getProjectId',row.projectId)
+        return
+      }
+      if(type == 1){
+        const route = this.$router.resolve(
+          {
+            path:'/reuseResults',
+            query:{
+              projectId:this.projectId,
+              reuseId:row.id
+            }
+          }
+        )
+        window.open(route.href,'_blank')
+      }
+    },
     // 保存发明点
     saveInventionPoint(){
       var params = this.technicalCase
@@ -385,6 +407,20 @@ export default {
         this.$message.error('保存失败')
       })
     },
+    //进入项目详情
+    intoProject(){
+      const route = this.$router.resolve({
+        path:'/noveltySearchDetails',
+        query:{
+          projectId:this.projectId
+        }
+      })
+      window.open(route.href,'_blank')
+    },
+    //生成报告
+    exportReport(){
+      this.$refs.reportTemplateDialog.open(this.projectId)
+    },
   },
 };
 </script>

+ 274 - 0
src/views/noveltySearch/components/exportReport/components/common.vue

@@ -0,0 +1,274 @@
+<template>
+  <div class="common">
+    <div class="reportTitle">
+        查新检索报告
+    </div>
+    <div class="mainContent">
+        <div class="title">一、专利性检索结论:</div>
+        <div class="content" v-html="getColumnData('baseMessage','finalConclusions',setValue([{value:dataObj.baseMessage.preliminaryConclusions},{value:'因此建议'} ,{value:dataObj.baseMessage.applicationAdvice}]))"></div>
+    </div>
+    <div class="mainContent">
+        <div class="title">二. 专利申请信息</div>
+        <div class="content">
+            <table class="applicationMessage">
+                <tr>
+                    <td>申请单位</td>
+                    <td @dblclick="edit('baseMessage','applicants')">
+                        <div v-if="isEdit('baseMessage','applicants')">
+                            <myRichText v-model="reportData.baseMessage.applicants" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','applicants',dataObj.baseMessage.applicants)"></div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>检索单位</td>
+                    <td @dblclick="edit('baseMessage','searchUnit')">
+                        <div v-if="isEdit('baseMessage','searchUnit')">
+                            <myRichText v-model="reportData.baseMessage.searchUnit" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','searchUnit',dataObj.baseMessage.searchUnit)"></div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>检索日期</td>
+                    <td @dblclick="edit('baseMessage','searchTime')">
+                        <div v-if="isEdit('baseMessage','searchTime')">
+                            <myRichText v-model="reportData.baseMessage.searchTime" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','searchTime',dataObj.baseMessage.searchTime)"></div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>检索人及联系方式</td>
+                    <td @dblclick="edit('baseMessage','searchUnitContact')">
+                        <div v-if="isEdit('baseMessage','searchUnitContact')">
+                            <myRichText v-model="reportData.baseMessage.searchUnitContact" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','searchUnitContact',(dataObj.baseMessage.headName || '') + ' ' + (dataObj.baseMessage.searchUnitContact || ''))"></div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>申请名称</td>
+                    <td @dblclick="edit('baseMessage','caseName')">
+                        <div v-if="isEdit('baseMessage','caseName')">
+                            <myRichText v-model="reportData.baseMessage.caseName" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','caseName',dataObj.baseMessage.caseName)"></div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>发明人</td>
+                    <td @dblclick="edit('baseMessage','inventor')">
+                        <div v-if="isEdit('baseMessage','inventor')">
+                            <myRichText v-model="reportData.baseMessage.inventor" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','inventor',dataObj.baseMessage.inventor)"></div>
+                    </td>
+                </tr>
+                <tr>
+                    <td>发明人联系方式</td>
+                    <td @dblclick="edit('baseMessage','inventorContact')">
+                        <div v-if="isEdit('baseMessage','inventorContact')">
+                            <myRichText v-model="reportData.baseMessage.inventorContact" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','inventorContact',dataObj.baseMessage.inventorContact)"></div>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+    <div class="mainContent">
+        <div class="title">三. 检索记录表</div>
+        <div class="content">
+            <table class="searchRecord">
+                <tr>
+                    <td>地区</td>
+                    <td>数据库</td>
+                    <td>关键词</td>
+                    <td>数量</td>
+                </tr>
+                <tr>
+
+                </tr>
+            </table>
+        </div>
+    </div>
+    <div class="mainContent">
+        <div class="title">四.最相关对比文件及专利性评估</div>
+        <div class="content result">
+            <div class="mainContent1">
+                <div class="title1">本提案思路</div>
+                <div>
+                    <div class="title1">附图</div>
+                    <div class="content" style="display:flex;">
+                        <div style="width:150px;height:180px;margin-right:10px" v-for="(item,index) in getColumnData('technicalCase','picture',dataObj.technicalCase.systemFileList || [])" :key="index">
+                            <div style="height:30px;line-height:30px;display:flex;justify-content:flex-end;">
+                                <el-button type="text" size="small" @click="delImage(reportData.technicalCase.picture,item,index)">删除</el-button>
+                            </div>
+                            <div style="width:150px;height:148px;border:1px dashed #c0ccda;border-radius: 6px;">
+                                <el-image style="width:100%;height:100%" :src="$commonJS.checkViewer(item.guid)" :preview-src-list="[$commonJS.checkViewer(form.guid)]" fit="contain"></el-image>
+                            </div>
+                        </div>
+                        <el-upload style="margin-right:10px;margin-top: 30px;" ref="upload" action="#" :auto-upload="false" multiple :on-change="(file, fileList)=>handleChange(reportData.technicalCase.picture,file, fileList)" list-type="picture-card" :show-file-list="false">
+                            <span>
+                                <i class="el-icon-plus avatar-uploader-icon"></i>
+                            </span>
+                        </el-upload>
+                    </div>
+                </div>
+                <div @dblclick="edit('technicalCase','inventionPoint')">
+                    <div class="title1">方案要点</div>
+                    <div class="content" >
+                        <div v-if="isEdit('technicalCase','inventionPoint')">
+                            <myRichText v-model="reportData.technicalCase.inventionPoint" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('technicalCase','inventionPoint',dataObj.technicalCase.inventionPoint)"></div>
+                    </div>
+                </div>
+            </div>
+            <!-- 循环对比记录 -->
+            <div class="mainContent1">
+                <div>
+                    <div>对比文件(申请人,公开号)</div>
+                    <div class="title1">对比文件所公开的与本案有关的内容</div>
+                    <div class="content"></div>
+                </div>
+            </div>
+
+            <div class="mainContent1">
+                <div>分析与结论</div>
+                <div  @dblclick="edit('baseMessage','distinguishTechnical')">
+                    <div class="title1">本方案与对比文件的区别技术特征</div>
+                    <div class="content">
+                        <div v-if="isEdit('baseMessage','distinguishTechnical')">
+                            <myRichText v-model="reportData.baseMessage.distinguishTechnical" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','distinguishTechnical')"></div>
+                    </div>
+                </div>
+                <div @dblclick="edit('baseMessage','analyse')">
+                    <div class="title1">分析</div>
+                    <div class="content">
+                        <div v-if="isEdit('baseMessage','analyse')">
+                            <myRichText v-model="reportData.baseMessage.analyse" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','analyse')"></div>
+                    </div>
+                </div>
+                <div @dblclick="edit('baseMessage','preliminaryConclusions')">
+                    <div class="title1">结论</div>
+                    <div class="content">
+                        <div v-if="isEdit('baseMessage','preliminaryConclusions')">
+                            <myRichText v-model="reportData.baseMessage.preliminaryConclusions" customStyle="border:none" :autoFocus="true" @blur="(value)=>saveMessage(value,(value)=>{this.reportData.baseMessage.finalConclusions = setValue([{value:value},{value:'因此建议'} ,{value:reportData.baseMessage.applicationAdvice}])})"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','preliminaryConclusions',dataObj.baseMessage.preliminaryConclusions)"></div>
+                    </div>
+                </div>
+            </div>
+
+            <div class="mainContent1" @dblclick="edit('baseMessage','applicationAdvice')">
+                <div>
+                    <div class="title1">建议</div>
+                    <div class="content">
+                        <div v-if="isEdit('baseMessage','applicationAdvice')">
+                            <myRichText v-model="reportData.baseMessage.applicationAdvice" customStyle="border:none" :autoFocus="true" @blur="(value)=>saveMessage(value,(value)=>{this.reportData.baseMessage.finalConclusions = setValue([{value:reportData.baseMessage.preliminaryConclusions},{value:'因此建议'} ,{value:value}])})"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','applicationAdvice',dataObj.baseMessage.applicationAdvice)"></div>
+                    </div>
+                </div>
+            </div>
+            <div class="mainContent1" @dblclick="edit('baseMessage','remark')">
+                <div>
+                    <div class="title1">备注</div>
+                    <div class="content">
+                        <div v-if="isEdit('baseMessage','remark')">
+                            <myRichText v-model="reportData.baseMessage.remark" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                        </div>
+                        <div v-else v-html="getColumnData('baseMessage','remark')"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import mixins from '@/views/noveltySearch/components/exportReport/components/mixins';
+export default {
+  components: {},
+  mixins:[mixins],
+  props: {},
+  data() {
+    return {
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {},
+};
+</script>
+<style lang="scss" scoped>
+ .common{
+        width: 800px;
+        margin: 0px auto;
+        padding: 20px 0;
+    }
+    .reportTitle{
+        font-size: 38px;
+        text-align: center;
+    }
+    
+    table, th, td {
+        border: 1px solid black;
+        border-collapse: collapse; /* 移除单元格之间的间隔 */
+    }
+    table{
+        border: 2px solid black;
+        width: 100%;
+        td{
+            padding: 8px;
+        }
+        
+    }
+    .applicationMessage{
+        tr>td:first-child{
+            width: 200px;
+        }
+    }
+    .searchRecord{
+        width: 100%;
+        tr>td:nth-child(1){
+            width: 100px;
+        }
+        tr>td:nth-child(2){
+            width: 130px;
+        }
+        tr>td:nth-child(4){
+            width: 130px;
+        }
+    }
+    .mainContent{
+        margin-top: 50px;
+        .title{
+            font-size: 22px;
+            font-weight: bold;
+            padding: 8px;
+        }
+        .content{
+            min-height: 50px;
+        }
+    }
+    .result{
+        border: 2px solid black;
+    }
+    .mainContent1{
+        border-bottom: 1px solid black;
+        padding: 5px;
+    }
+    .mainContent1:last-child{
+        border-bottom:none
+    }
+</style>

+ 64 - 18
src/views/noveltySearch/components/exportReport/components/dahua.vue

@@ -11,7 +11,7 @@
                     <div v-if="isEdit('baseMessage','customCaseNumber')">
                         <myRichText v-model="reportData.baseMessage.customCaseNumber" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                     </div>
-                    <div v-else v-html="getColumnData('baseMessage','customCaseNumber',dataObj.baseMessage.customCaseNumber + '<br>'+dataObj.baseMessage.caseName)"></div>
+                    <div v-else v-html="getColumnData('baseMessage','customCaseNumber',dataObj.baseMessage.customCaseNumber)"></div>
                 </td>
             </tr>
             <tr>
@@ -25,26 +25,38 @@
             </tr>
             <tr>
                 <td>技术接口人:</td>
-                <td>
-                    <span></span>
+                <td @dblclick="edit('baseMessage','technicalContact')">
+                    <div v-if="isEdit('baseMessage','technicalContact')">
+                        <myRichText v-model="reportData.baseMessage.technicalContact" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                    </div>
+                    <div v-else v-html="getColumnData('baseMessage','technicalContact',dataObj.baseMessage.technicalContact )"></div>
                 </td>
             </tr>
             <tr>
                 <td>检索机构/检索员:</td>
-                <td>
-                    <span></span>
+                <td @dblclick="edit('baseMessage','searchUnit')">
+                    <div v-if="isEdit('baseMessage','searchUnit')">
+                        <myRichText v-model="reportData.baseMessage.searchUnit" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                    </div>
+                    <div v-else v-html="getColumnData('baseMessage','searchUnit',dataObj.baseMessage.searchUnit )"></div>
                 </td>
             </tr>
             <tr>
                 <td>检索员联系方式:</td>
-                <td>
-                    <span></span>
+                <td @dblclick="edit('baseMessage','searchUnitContact')">
+                    <div v-if="isEdit('baseMessage','searchUnitContact')">
+                        <myRichText v-model="reportData.baseMessage.searchUnitContact" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                    </div>
+                    <div v-else v-html="getColumnData('baseMessage','searchUnitContact',dataObj.baseMessage.searchUnitContact )"></div>
                 </td>
             </tr>
             <tr>
                 <td>检索日期:</td>
-                <td>
-                    <span></span>
+                <td @dblclick="edit('baseMessage','searchTime')">
+                    <div v-if="isEdit('baseMessage','searchTime')">
+                        <myRichText v-model="reportData.baseMessage.searchTime" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                    </div>
+                    <div v-else v-html="getColumnData('baseMessage','searchTime')"></div>
                 </td>
             </tr>
         </table>
@@ -53,20 +65,39 @@
         <div class="title">一、技术方案的分析</div>
         <div>
             <div class="title2">1、方案概述</div>
-            <div class="content" @dblclick="edit('technicalCase','description')">
-                <div v-if="isEdit('technicalCase','description')">
-                    <myRichText v-model="dataObj.technicalCase.description" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+            <div class="content" @dblclick="edit('technicalCase','remark')">
+                <div v-if="isEdit('technicalCase','remark')">
+                    <myRichText v-model="reportData.technicalCase.remark" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
                 </div>
-                <div v-else>{{dataObj.technicalCase.description}}</div>
+                <div v-else v-html="getColumnData('technicalCase','remark',dataObj.technicalCase.remark)"></div>
             </div>
         </div>
         <div>
             <div class="title2">2、主要附图(如有必要)</div>
-            <div class="content"></div>
+            <div class="content" style="display:flex;">
+                <div style="width:150px;height:180px;margin-right:10px" v-for="(item,index) in getColumnData('technicalCase','picture',dataObj.technicalCase.systemFileList || [])" :key="index">
+                    <div style="height:30px;line-height:30px;display:flex;justify-content:flex-end;">
+                        <el-button type="text" size="small" @click="delImage(reportData.technicalCase.picture,item,index)">删除</el-button>
+                    </div>
+                    <div style="width:150px;height:148px;border:1px dashed #c0ccda;border-radius: 6px;">
+                        <el-image style="width:100%;height:100%" :src="$commonJS.checkViewer(item.guid)" :preview-src-list="[$commonJS.checkViewer(form.guid)]" fit="contain"></el-image>
+                    </div>
+                </div>
+                <el-upload style="margin-right:10px;margin-top: 30px;" ref="upload" action="#" :auto-upload="false" multiple :on-change="(file, fileList)=>handleChange(reportData.technicalCase.picture,file, fileList)" list-type="picture-card" :show-file-list="false">
+                    <span>
+                        <i class="el-icon-plus avatar-uploader-icon"></i>
+                    </span>
+                </el-upload>
+            </div>
         </div>
         <div>
             <div class="title2">3、主要发明点</div>
-            <div class="content"></div>
+            <div class="content" @dblclick="edit('technicalCase','inventionPoint')">
+                <div v-if="isEdit('technicalCase','inventionPoint')">
+                    <myRichText v-model="reportData.technicalCase.inventionPoint" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                </div>
+                <div v-else v-html="getColumnData('technicalCase','inventionPoint',dataObj.technicalCase.inventionPoint)"></div>
+            </div>
         </div>
     </div>
     <div class="mainContent">
@@ -99,15 +130,30 @@
         <div class="title">三、结论及建议</div>
         <div>
             <div class="title2">1、分析结论:</div>
-            <div class="content"></div>
+            <div class="content" @dblclick="edit('baseMessage','preliminaryConclusions')">
+                <div v-if="isEdit('baseMessage','preliminaryConclusions')">
+                    <myRichText v-model="reportData.baseMessage.preliminaryConclusions" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                </div>
+                <div v-else v-html="getColumnData('baseMessage','preliminaryConclusions',dataObj.baseMessage.preliminaryConclusions)"></div>
+            </div>
         </div>
         <div>
             <div class="title2">2、建议:</div>
-            <div class="content"></div>
+            <div class="content" @dblclick="edit('baseMessage','applicationAdvice')">
+                <div v-if="isEdit('baseMessage','applicationAdvice')">
+                    <myRichText v-model="reportData.baseMessage.applicationAdvice" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                </div>
+                <div v-else v-html="getColumnData('baseMessage','applicationAdvice',dataObj.baseMessage.applicationAdvice)"></div>
+            </div>
         </div>
         <div>
             <div class="title2">3、撰写要点建议</div>
-            <div class="content"></div>
+            <div class="content" @dblclick="edit('baseMessage','writeAdvice')">
+                <div v-if="isEdit('baseMessage','writeAdvice')">
+                    <myRichText v-model="reportData.baseMessage.writeAdvice" customStyle="border:none" :autoFocus="true" @blur="saveMessage"></myRichText>
+                </div>
+                <div v-else v-html="getColumnData('baseMessage','writeAdvice',dataObj.baseMessage.writeAdvice)"></div>
+            </div>
         </div>
     </div>
   </div>

+ 30 - 14
src/views/noveltySearch/components/exportReport/components/mixins.js

@@ -65,6 +65,16 @@ export default{
             }
             this.reportData.baseMessage = {}
         },
+        setValue(data){
+            var str = ''
+            for(var i = 0;i<data.length;i++){
+                var str2 = data[i].value
+                if(str2){
+                    str+=str2
+                }
+            }
+            return str
+        },
         getColumnData(field,property,value){
             var key = field + '-' + property
             if(!this.editModel && !this.hasCopy[key]){
@@ -114,7 +124,7 @@ export default{
         clearEdit(){
             this.nowEdit = {}
         },
-        saveMessage(value){
+        saveMessage(value,fu){
             if(value == this.nowEdit.value){
                 this.clearEdit()
                 return
@@ -123,27 +133,33 @@ export default{
             var field = this.nowEdit.field
             var property = this.nowEdit.property
             this.$set(this.reportData[field],property,value)
+            if(fu){
+              fu(value)  
+            }
+            
             this.clearEdit()
         },
 
         // 图片变化的change事件
-        handleChange(file, fileList) {
+        handleChange(row,file, fileList) {
             file.raw.url = file.url
-            this.reportData.signMessage.systemFileList.push(file.raw)
+            row.push(file.raw)
             this.uploadFile(file)
         },
         // 文件列表移除文件
-        handleRemove(file) {
-            let index = this.reportData.signMessage.systemFileList.findIndex(item => {
-            if (file.guid) {
-                return item.guid == file.guid
-            } else {
-                return item.uid == file.uid
-            }
-            })
-            if (index != -1) {
-                this.reportData.signMessage.systemFileList.splice(index, 1)
-            }
+        delImage(row,file,index) {
+            row.splice(index, 1)
+            return
+            // let index = this.reportData.signMessage.systemFileList.findIndex(item => {
+            // if (file.guid) {
+            //     return item.guid == file.guid
+            // } else {
+            //     return item.uid == file.uid
+            // }
+            // })
+            // if (index != -1) {
+            //     this.reportData.signMessage.systemFileList.splice(index, 1)
+            // }
         },
         //上传附件
         uploadFile(file) {

+ 5 - 2
src/views/noveltySearch/components/exportReport/exportReport.vue

@@ -2,7 +2,8 @@
     <div class="height_100">
       
       <div style="display:flex;justify-content:flex-end;padding:10px">
-          <el-button type="primary" size="small" @click="getMessage">根据内部卷号获取信息</el-button>
+          <!-- <el-button type="primary" size="small" @click="getMessage">根据内部卷号获取信息</el-button> -->
+          <el-button type="primary" size="small" @click="saveEdit">保存修改</el-button>
           <el-button type="primary" size="small" @click="reporting">生成报告</el-button>
       </div>
       <div style="height:calc(100% - 60px);overflow-y:auto" v-loading="loading">
@@ -17,7 +18,7 @@
 import mixins1 from './mixins/index'
 import mixins2 from './components/mixins'
 import getMessageByNumber from '../dialog/getMessageByNumber.vue';
-import dahuaVue from './components/dahua.vue';
+import dahuaVue from './components/common.vue';
 export default {
     components: {
         getMessageByNumber,
@@ -115,6 +116,8 @@ export default {
                 this.reLoadBasicMessage = false
             })
         },
+        //保存修改的信息
+        saveEdit(){},
         //生成报告
         reporting(){},
     },

+ 2 - 2
src/views/project/patentDetails/components/patentDetails.vue

@@ -86,13 +86,13 @@
             <my-view :position="this.positionList.find(item => item.value == radio).position"
               :showView="radio != 1 && activeMenu != activeMenu2">
               <div slot="left">
-                <component :activeName="activeName" style="width:100%;padding-right: 10px;" :is="activeMenu"
+                <component :activeName="activeName" style="width:100%;padding-right: 10px;" :is="activeMenu"  :noveltySearch="noveltySearch"
                   :evidence="evidence" :signPatentNo="signPatentNo" :reportType="reportType" :project-id="projectId"
                   :outside="outside" :projectType="projectType" :patent="patent" :patentNo="patent.patentNo"
                   :domId="$commonJS.uuid(36)" @refresh="getPatent()"></component>
               </div>
               <div slot="right">
-                <component :is="activeMenu2" :project-id="projectId" :outside="outside" :projectType="projectType"
+                <component :is="activeMenu2" :project-id="projectId" :outside="outside" :projectType="projectType" :noveltySearch="noveltySearch"
                   :patent="patent" :signPatentNo="signPatentNo" :reportType="reportType" :sign="true" :patentNo="patent.patentNo"
                   :evidence="evidence"></component>
               </div>

+ 8 - 0
src/views/project/patentDetails/components/patentMessage/mixins/index.js

@@ -174,6 +174,14 @@ export const patentDetails = {
           }
         ]
       }
+      if(this.noveltySearch){
+        menuContent .push(
+          {
+            name: "查新对比",
+            method: "noveltySearchContrast",
+          }
+        )
+      }
       this.$store.commit("SET_CONTEXT_MENU", {
         clientX: e.pageX,
         clientY: e.pageY,