zhuliu 1 년 전
부모
커밋
e0d979cbe9
35개의 변경된 파일1159개의 추가작업 그리고 2751개의 파일을 삭제
  1. 0 0
      public/reportTemplate/dahua/dahua.css
  2. 0 0
      public/reportTemplate/dahua/dahua.txt
  3. 0 1011
      public/三性表格.html
  4. 0 1160
      public/非三性表格.html
  5. 1 1
      src/router/index.js
  6. 5 3
      src/utils/common.js
  7. 42 0
      src/views/components/import/conditionImport/components/searchHistory/index.vue
  8. 12 6
      src/views/components/import/conditionImport/components/search_history.vue
  9. 13 5
      src/views/components/import/conditionImport/index.vue
  10. 10 51
      src/views/components/import/conditionImport/search.vue
  11. 42 27
      src/views/components/import/conditionImport/searchResult.vue
  12. 8 2
      src/views/components/import/conditionImport/searchResultIndex.vue
  13. 1 1
      src/views/layout/components/contextMenu.vue
  14. 46 149
      src/views/noveltySearch/components/details/components/basicMessage/basicMessage.vue
  15. 177 0
      src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/basicMessageDetails.vue
  16. 228 0
      src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/basicMessageEdit.vue
  17. 33 0
      src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/index.vue
  18. 24 14
      src/views/noveltySearch/components/details/components/contrastFile/contrastFile.vue
  19. 2 1
      src/views/noveltySearch/components/details/components/contrastRecords/contrastRecords.vue
  20. 8 7
      src/views/noveltySearch/components/details/components/signMessage/signMessage.vue
  21. 3 0
      src/views/noveltySearch/components/details/index.vue
  22. 55 0
      src/views/noveltySearch/components/dialog/getMessageByNumber.vue
  23. 47 9
      src/views/noveltySearch/components/dialog/inventionPoint/inventionPoint.vue
  24. 114 0
      src/views/noveltySearch/components/dialog/reportTemplate/reportTemplateDialog.vue
  25. 0 102
      src/views/noveltySearch/components/exportReport/components/reportMessage.vue
  26. 78 143
      src/views/noveltySearch/components/exportReport/exportReport.vue
  27. 7 41
      src/views/noveltySearch/components/exportReport/index.vue
  28. 2 3
      src/views/noveltySearch/components/exportReport/mixins/index.js
  29. 8 4
      src/views/noveltySearch/components/noveltySearchCard.vue
  30. 31 0
      src/views/noveltySearch/components/reuseResults/index.vue
  31. 126 0
      src/views/noveltySearch/components/reuseResults/reuseResults.vue
  32. 14 1
      src/views/project/patentCollection/components/mixins/index.js
  33. 2 3
      src/views/project/patentCollection/components/views/Abstract.vue
  34. 16 4
      src/views/project/patentDetails/components/patentDetails.vue
  35. 4 3
      src/views/project/patentDetails/index.vue

public/dahua/dahua.css → public/reportTemplate/dahua/dahua.css


public/dahua/dahua.txt → public/reportTemplate/dahua/dahua.txt


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 1011
public/三性表格.html


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 1160
public/非三性表格.html


+ 1 - 1
src/router/index.js

@@ -607,7 +607,7 @@ const routes = [
           sign:'searchHistory',
           belong: 'conditionImport',
         },
-        component: () => import('@/views/components/import/conditionImport/components/search_history.vue'),
+        component: () => import('@/views/components/import/conditionImport/components/searchHistory/index.vue'),
       },
       //检索结果
       {

+ 5 - 3
src/utils/common.js

@@ -541,12 +541,14 @@ treeToArray(data,prop={children:children}){
       2: '/PatentNoImport',
       4: '/conditionImport'
     }
+    var query = {}
+    if(data){
+      query.importData = JSON.stringify(data)
+    }
     router.push(
       {
         path: types[type],
-        query: {
-          ...data
-        }
+        query: query
       }
     )
   },

+ 42 - 0
src/views/components/import/conditionImport/components/searchHistory/index.vue

@@ -0,0 +1,42 @@
+<template>
+  <div class="height_100">
+    <searchHistory :importData="importData" :noveltySearch="noveltySearch" :projectId="projectId"></searchHistory>
+  </div>
+</template>
+
+<script>
+import searchHistory from './search_history.vue';
+export default {
+  components: {
+    searchHistory
+  },
+  props: {},
+  data() {
+    return {
+    };
+  },
+  watch: {},
+  computed: {
+    noveltySearch(){
+      return this.$route.query.noveltySearch
+    },
+    projectId(){
+      return this.$route.query.projectId
+    },
+    importData(){
+        var data = this.$route.query.importData
+        if(data){
+            data = JSON.parse(data)
+        }else{
+            data = {}
+        }
+        return data
+    },
+  },
+  created() {},
+  mounted() {},
+  methods: {},
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 12 - 6
src/views/components/import/conditionImport/components/search_history.vue

@@ -109,7 +109,7 @@ import { getTableHeight } from '@/views/components/mixins'
 export default {
   mixins: [getTableHeight],
   components: {},
-  props:['importData'],
+  props:['importData','noveltySearch','projectId'],
   data() {
     return {
         tableData:[],
@@ -130,7 +130,9 @@ export default {
     };
   },
   watch: {},
-  computed: {},
+  computed: {
+    
+  },
   created() {},
   mounted() {
     this.getList()
@@ -199,16 +201,18 @@ export default {
       // })
 
       var a = {
+        ...this.importData,
         searchCondition:this.form.conditions,
         DBType:this.form.dbType,
         retrieveRecordId:null,
-        ...this.importData,
         type:4
       }
       const router = this.$router.resolve({
           path: '/searchResult',
           query: {
-            data:JSON.stringify(a)
+            data:JSON.stringify(a),
+            noveltySearch:this.noveltySearch,
+            projectId:this.projectId,
           }
       })
       this.handleClose()
@@ -218,16 +222,18 @@ export default {
     //执行检索历史
     executeSearch(row){
       var a = {
+        ...this.importData,
         searchCondition:row.conditions,
         DBType:row.dbType,
-        ...this.importData,
         type:4,
         retrieveRecordId:null
       }
       const router = this.$router.resolve({
                 path: '/searchResult',
                 query: {
-                  data:JSON.stringify(a)
+                  data:JSON.stringify(a),
+                  noveltySearch:this.noveltySearch,
+                  projectId:this.projectId
                 }
             })
             window.open(router.href, '_blank');

+ 13 - 5
src/views/components/import/conditionImport/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div style="background:white">
-    <search :importData="importData" :editData="editData" :noveltySearch='noveltySearch'></search>
+    <search :importData="importData" :editData="editData" :noveltySearch='noveltySearch' :projectId="projectId"></search>
   </div>
 </template>
 
@@ -13,21 +13,29 @@ export default {
   props: {},
   data() {
     return {
-      importData:this.$route.query,
       editData:null
     };
   },
   watch: {},
   computed: {
-    // importData() {
-    //   return this.$route.query
-    // },
+    importData() {
+      var data = this.$route.query.importData
+      if(data){
+        data = JSON.parse(data)
+      }else{
+        data = {}
+      }
+      return data
+    },
     isEdit(){
       return this.$route.query.isEdit
     },
     noveltySearch(){
       return this.$route.query.noveltySearch
     },
+    projectId(){
+      return this.$route.query.projectId
+    }
   },
   created() {
     if(this.isEdit){

+ 10 - 51
src/views/components/import/conditionImport/search.vue

@@ -28,12 +28,6 @@
             </div>
         </div>
         
-
-        <el-dialog title="检索历史" :visible.sync="dialogVisible" width="1200px" :append-to-body="true" :close-on-click-modal="false">
-            <div>
-                <searchHistory ref="searchHistory" :importData="importData"></searchHistory> 
-            </div>
-        </el-dialog>
         
     </div>
 </template>
@@ -43,7 +37,6 @@ import AdvancedSearch from './AdvancedSearch.vue';
 import customSearch from './customSearch.vue';
 import patentNoSearch from './patentNoSearch'
 
-import searchHistory from './components/search_history.vue';
 import mixins from '../mixins/index'
 
 import createNoveltySearch from '@/views/noveltySearch/components/dialog/createNoveltySearch.vue';
@@ -52,18 +45,16 @@ export default {
         FormSearch,
         AdvancedSearch,
         customSearch,
-        searchHistory,
         patentNoSearch,
         createNoveltySearch
     },
     mixins:[mixins],
-    props:['editData','noveltySearch'],
+    props:['importData','editData','noveltySearch','projectId'],
     data() {
         return {
             isComponent:'customSearch',
             countryList:[],
             DBType:"CN",
-            dialogVisible:false,
             selected:['US','DE','JP','GB','FR','KR','RU','CH','EP','WO']
         }
     },
@@ -81,32 +72,6 @@ export default {
     methods: {
         //获取国家
         getCountry(){
-            // var str = 'AD 安道尔 AE 阿拉伯联合酋长国 AF 阿富汗 AG 安提瓜和巴布达 AI 安圭拉岛 AL 阿尔巴尼亚 AM 亚'
-            //         +'美尼亚 AN 荷属安的列斯群岛 AO 安哥拉 AP 非洲地区工业产权组织(ARIPO) AR 阿根廷 AT 奥地'
-            //         +'利 AU 澳大利亚 AW 阿鲁巴岛(荷) BA 波斯尼亚和黑塞哥维那(波黑) BB 巴巴多斯 BD 孟加拉 AZ'
-            //         +'阿塞拜疆 BE 比利时 BF 布基纳法索 BG 保加利亚 BH 巴林 BI 布隆迪 BJ 贝宁 BM 百慕大 BN 文'
-            //         +'莱 BO 玻利维亚 BR 巴西 BS 巴哈马 BT 不丹 BV 布韦岛 BW 博茨瓦那 BX 比、荷、卢经济联盟商'
-            //         +'标局及外观设计局 BY 白俄罗斯 BZ 伯利兹 CA 加拿大 CD 刚果民主共和国 CF 中非共和国 CG 刚'
-            //         +'果 CH 瑞士 CI 科特迪瓦 CK 库克群岛 CL 智利 CM 喀麦隆 CN 中国 CO 哥伦比亚 CR 哥斯达黎'
-            //         +'加 CU 古巴 CV 佛得角 CY 塞浦路斯 CZ 捷克共和国 DE 德国 DJ 吉布提 DK 丹麦 DM 多米尼克'
-            //         +'DO 多米尼加共和国 DZ 阿尔及利亚 EA 欧亚专利组织(EAPO) EC 厄瓜多尔 EE 爱沙尼亚 EG 埃'
-            //         +'及 EH 西撒哈拉 EM 内部市场协调局(OHIM) EP 欧洲专利局(EPO) ER 厄立特里亚 ES 西班牙 ET 埃'
-            //         +'塞俄比亚 FI 芬兰 FJ 斐济 FK 福克兰群岛(马尔维纳斯群岛) FO 法罗群岛 FR 法国 GA 加蓬 GB 英'
-            //         +'国 GD 格林纳达 GH 加纳 GC 海湾地区阿拉伯国家合作委员会专利局(GCC) GE 格鲁吉亚 GI 直布罗'
-            //         +'陀 GL 格陵兰 GM 冈比亚 GN 几内亚 GQ 赤道几内亚 GR 希腊 GS 南乔治亚和南三维治群岛 GT'
-            //         +'危地马拉 GW 几内亚比绍 GY 圭亚那 HK 中华人民共和国香港特别行政区 HN 洪都拉斯 HR 克罗地'
-            //         +'亚 HT 海地 HU 匈牙利  WO 世界知识产权组织国际局(WIPO) ID 印度尼西亚 IE 爱尔兰 IL 以色'
-            //         +'列 IN 印度 IQ 伊拉克 IR 伊朗,伊斯兰共和国'
-            //     var regx = new RegExp("[A-Z]{2} ", "g")
-            //     var a = str.split(regx)
-            //     a.splice(0,1)
-            //     var b = str.match(regx)
-            //     b.forEach((item,index)=>{
-            //         this.countryList.push({
-            //             label:a[index],
-            //             value:item
-            //         })
-            //     })
             var important = ['CN','US','DE','JP','GB','FR','KR','RU','CH','EP','WO']
             var str = 'AD 安道尔 AE 阿拉伯联合酋长国 AF 阿富汗 AG 安提瓜和巴布达 AI 安圭拉岛 AL 阿尔巴尼亚 AM 亚'
                     +'美尼亚 AN 荷属安的列斯群岛 AO 安哥拉 AP 非洲地区工业产权组织(ARIPO) AR 阿根廷 AT 奥地'
@@ -168,10 +133,10 @@ export default {
                 return false
             }
             var a = {
+                ...this.importData,
                 searchCondition:val,
                 DBType:this.DBType,
                 retrieveRecordId:null,
-                ...this.importData,
                 type:4,
             }
             if(data.component == 'patentNoSearch'){
@@ -182,29 +147,23 @@ export default {
                 path: '/searchResult',
                 query: {
                     data:JSON.stringify(a),
-                    noveltySearch:this.noveltySearch
+                    noveltySearch:this.noveltySearch,
+                    projectId:this.projectId
                 }
             })
-            let params = {
-              params:{},
-              countryList:this.countryList,
-              data:data,
-              importData:this.importData
-            }
             this.$s.setSession('conditionImport',{
                 data:data,
             })
-            this.$s.setSession('queryParams',params)
-            // this.$s.setSession('retrieveRecordId',0)
-            // window.open(router.href, '_blank');
         },
         openHistory(){
-            // this.dialogVisible = true
-            // this.$nextTick(()=>{
-            //     this.$refs.searchHistory.open()
-            // })
             const router = this.$router.resolve({
                 path: '/searchHistory',
+                query:{
+                    importData:JSON.stringify(this.importData),
+                    noveltySearch:this.noveltySearch,
+                    projectId:this.projectId,
+                }
+                
             })
             window.open(router.href, '_blank');
         },

+ 42 - 27
src/views/components/import/conditionImport/searchResult.vue

@@ -22,14 +22,14 @@
           <p><el-link style="width: 50px;color: #409EFF;" @click="searches">检索式</el-link></p>
         </div>
         <div>
-          <el-button type="primary" size="small">生成报告</el-button>
+          <el-button type="primary" size="small" v-if="noveltySearch" @click="reporting">生成报告</el-button>
           <el-button type="primary" size="small" @click="importToProject">{{condition.isUpdateCriteria?'保存定期更新条件':'导入专利'}}</el-button>
           <el-button size="small" type="warning" @click="handleFieldManage">显示栏位管理</el-button>
         </div>
       </el-header>
       <el-main id="patent-list-container" v-loading="loading">
         <div class="height_100">
-          <component ref="patentViewList" :is="viewSelected" :outside="true" :column="columnList" :tableData="tableData"  @clickPatentNo="handleClick" :canSort="condition.component != 'patentNoSearch'?true:false"
+          <component ref="patentViewList" :is="viewSelected" :outside="true" :noveltySearch="noveltySearch" :column="columnList" :tableData="tableData"  @clickPatentNo="handleClick" :canSort="condition.component != 'patentNoSearch'?true:false"
             @select-change="handleSelect" :selected.sync="queryParams.selected" :queryParams="queryParams" :patentNoList.sync="patentNoList" :refresh='true'
             :view-field="patentViewField" @on-sort="handleSort" @addSelect="getChoosePatentNo" @saveRemark="saveRemark"></component>
         </div>
@@ -90,6 +90,7 @@
     </el-dialog>
     <addAndEditSearchRecords ref="addAndEditSearchRecords" :projectId="condition.importToId"></addAndEditSearchRecords>
     <inventionPointDialog v-if="noveltySearch" :contrastFileList="saveRemarkList"></inventionPointDialog>
+    <reportTemplateDialog ref="reportTemplateDialog"></reportTemplateDialog>
   </div>
 </template>
 
@@ -103,6 +104,7 @@ import field from '@/views/components/dialog/fields.vue';
 import projectListDialog from "./components/projectListDialog.vue";
 import search from '@/utils/model/search/search.vue'
 import addAndEditSearchRecords from '@/views/report/analysisAndOpinion/components/searchRecords/dialog/addAndEditSearchRecords.vue';
+import reportTemplateDialog from '@/views/noveltySearch/components/dialog/reportTemplate/reportTemplateDialog.vue';
 export default {
   components: {
     PatentTableListView,
@@ -111,11 +113,14 @@ export default {
     field,
     projectListDialog,
     search,
-    addAndEditSearchRecords
+    addAndEditSearchRecords,
+    reportTemplateDialog
   },
   props: {
     searchData: {},
-    noveltySearch:{}
+    noveltySearch:{},
+    retrieveRecordId:{},
+    projectId:{}
   },
   data() {
     return {
@@ -171,7 +176,11 @@ export default {
       saveRemarkList:[]
     };
   },
-  watch: {},
+  watch: {
+    retrieveRecordId(){
+      this.queryParams.retrieveRecordId = this.retrieveRecordId
+    },
+  },
   computed: {
     userinfo(){
       return this.$s.getObj('userinfo')
@@ -180,14 +189,13 @@ export default {
   created() { },
   async mounted() {
     this.columnList = await this.$commonJS.getCustomField('patent',{ projectId: 0, taskId: null })
-    if (this.$s.getSession('queryParams') && this.$s.getSession('queryParams').params.retrieveRecordId) {
-      this.queryParams.retrieveRecordId = this.$s.getSession('queryParams').params.retrieveRecordId
-    }
-
     await this.getList();
 
   },
   methods: {
+    reporting(){
+      this.$refs.reportTemplateDialog.open(this.projectId)
+    },
     saveRemark(data){
       this.saveRemarkList.push(data)
     },
@@ -218,7 +226,8 @@ export default {
           path: '/patentDetails/' + row.patentNo,
           query: {
             outside:true,
-            noveltySearch:this.noveltySearch
+            noveltySearch:this.noveltySearch,
+            projectId:this.projectId
           }
         }
       )
@@ -285,7 +294,10 @@ export default {
       this.$router.push({
         path: '/conditionImport',
         query:{
-          isEdit:true
+          isEdit:true,
+          importData:JSON.stringify(this.searchData),
+          noveltySearch:this.noveltySearch,
+          projectId:this.projectId,
         }
       })
     },
@@ -293,13 +305,7 @@ export default {
       this.queryParams.retrieveRecordId = null
       this.queryParams.current = 1
       this.getList()
-      this.$router.push({
-        path: '/searchResult',
-        query: {
-          data: JSON.stringify(this.condition),
-        }
-      })
-      
+      this.reLoadQuery()
     },
     // 打开检索式弹窗
     searches() {
@@ -419,22 +425,19 @@ export default {
           let records = response.data.data
           this.tableData = records
           params.retrieveRecordId = response.data.retrieveRecordId
-         
-          this.queryParams.retrieveRecordId = response.data.retrieveRecordId
+          if(!this.queryParams.retrieveRecordId && response.data.retrieveRecordId && !response.data.redisKey){
+            this.queryParams.retrieveRecordId = response.data.retrieveRecordId
+            this.reLoadQuery()
+          }
+          
           this.$store.commit("SET_PATENT_PARAMS", queryParams);
-          this.$s.setSession('queryParams', queryParams)
           this.$store.commit("SET_PATENT_RECORDS", records);
           this.getImageAndStatus()
           this.loading = false;
           if(response.data.redisKey && !this.condition.redisKey){
             this.condition.redisKey = response.data.redisKey
             this.condition.NO=''
-            this.$router.push({
-              path: '/searchResult',
-              query: {
-                data: JSON.stringify(this.condition),
-              }
-            })
+            this.reLoadQuery()
           }
         }
       })
@@ -443,6 +446,18 @@ export default {
         });
 
     },
+    //刷新网页参数
+    reLoadQuery(){
+      this.$router.push({
+        path: '/searchResult',
+        query: {
+          data: JSON.stringify(this.condition),
+          noveltySearch:this.noveltySearch,
+          projectId:this.projectId,
+          retrieveRecordId:this.queryParams.retrieveRecordId
+        }
+      })
+    },
     //获取摘要附图和法律状态
     getImageAndStatus(){
       this.tableData.forEach(item=>{

+ 8 - 2
src/views/components/import/conditionImport/searchResultIndex.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <search-Result :searchData="searchData" :noveltySearch="noveltySearch"></search-Result> 
+    <search-Result :searchData="searchData" :noveltySearch="noveltySearch" :projectId="projectId" :retrieveRecordId="retrieveRecordId"></search-Result> 
   </div>
 </template>
 
@@ -24,7 +24,13 @@ export default {
     },
     noveltySearch(){
       return this.$route.query.noveltySearch
-    }
+    },
+    projectId(){
+      return this.$route.query.projectId
+    },
+    retrieveRecordId(){
+      return this.$route.query.retrieveRecordId
+    },
   },
   methods: {},
   created() {},

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

@@ -78,7 +78,7 @@ export default {
         a.text = a.evidenceText
         this.$store.commit("SET_PATENT_INDEX", a)
         this.contrast()
-      } else if (selectType == 'o') {
+      } else if (selectType == 'o') {//陈述意见
       }
 
     },

+ 46 - 149
src/views/noveltySearch/components/details/components/basicMessage/basicMessage.vue

@@ -10,152 +10,16 @@
                         <i v-else class="el-icon-caret-bottom" @click="show.showReportMessage = !show.showReportMessage"></i>
                     </span>  
                 </span>
-                <div>
+                <div v-show="show.showReportMessage">
                     <el-button type="primary" size="small" @click="getMessage">根据内部卷号获取信息</el-button>
-                    <el-button type="primary" size="small" @click="edit">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="!editMessage.edit" @click="editReportMessage">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="editMessage.edit" @click="saveReportMessage">保存</el-button>
+                    <el-button type="primary" size="small" v-if="editMessage.edit" @click="cancelEditMessage">取消</el-button>
                 </div>
             </div>
             <div v-show="show.showReportMessage">
                 <el-card shadow="always">
-                    <el-form style="width:100%" :model="reportMessage" label-width="140px">
-                      <template v-if="reportMessage.reportType == 8">
-                          <el-row>
-                              <el-col :span="12">
-                              <el-form-item label="客户案号" prop="clientNo">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'clientNo' })"></div>
-                              </el-form-item>
-                              </el-col>
-                              <el-col :span="12">
-                              <el-form-item label="内部案号" prop="volumeNumber">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'volumeNumber' })"></div>
-                              </el-form-item>
-                              </el-col>
-                          </el-row>
-                          <el-row>
-                              <el-col :span="12">
-                              <el-form-item label="申请单位" prop="appCompany">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'appCompany' })"></div>
-                              </el-form-item>
-                              </el-col>
-                              <el-col :span="12">
-                              <el-form-item label="发明人" prop="inventor">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'inventor' })"></div>
-                              </el-form-item>
-                              </el-col>
-                          </el-row>
-                          <el-row>
-                              <el-col :span="12">
-                              <el-form-item label="IPR" prop="IPR">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'IPR' })"></div>
-                              </el-form-item>
-                              </el-col>
-                              <el-col :span="12">
-                              <el-form-item label="技术接口人" prop="interfaceName">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'interfaceName' })"></div>
-                              </el-form-item>
-                              </el-col>
-                          </el-row>
-                          <el-row>
-                              <el-col :span="12">
-                                <template>
-                                    <div>
-                                        <el-form-item label="委托方:" prop="entrustId" v-if="userinfo.tenantType == 1">
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'entrustName' })"></div>
-                                        </el-form-item>
-                                        <el-form-item label="委托部门:" prop="departmentId" v-else>
-                                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
-                                        </el-form-item>
-                                    </div>
-                                </template>
-                            </el-col>
-                              <el-col :span="12">
-                                  <el-form-item label="承担部门:" prop="departmentId">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
-                                  </el-form-item>
-                              </el-col>
-                          </el-row>
-                          <el-row>
-                              <el-col :span="12">
-                              <el-form-item label="检索单位" prop="searchUnit">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'searchUnit' })"></div>
-                              </el-form-item>
-                              </el-col>
-                              <el-col :span="12">
-                              <el-form-item label="负责人" prop="searchPerson">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'headName' })"></div>
-                              </el-form-item>
-                              </el-col>
-                          </el-row>
-                          <el-row>
-                              <el-col :span="12">
-                              <el-form-item label="检索员联系方式" prop="searchPersonNumber">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'searchPersonNumber' })"></div>
-                              </el-form-item>
-                              </el-col>
-                              <el-col :span="12">
-                              <el-form-item label="检索审核人" prop="reviewer">
-                                  <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'reviewer' })"></div>
-                              </el-form-item>
-                              </el-col>
-                          </el-row>
-                          </template>
-                        <!-- <el-form-item label="是否完成:">
-                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'status' })==3?'是':'否'"></div>
-                        </el-form-item>
-                        <template v-if="reportMessage.status == 3">
-                            <div>
-                                <el-form-item label="报告结果:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'cronNames' })"></div>
-                                </el-form-item>
-                                <el-form-item label="结果论述:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'cronDescription' })"></div>
-                                </el-form-item>
-                            </div>
-                        </template>
-                        <el-row>
-                            <el-col :span="24">
-                                <el-form-item label="产品/技术:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'productOrTech' })"></div>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                        <el-row>
-                            <el-col :span="24">
-                                <el-form-item label="关联报告:">
-                                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'associateReportName' })"></div>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                        <template>
-                            <div>
-                            <el-row>
-                                <el-col :span="24">
-                                    <el-form-item label="事件:">
-                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'eventNames' })"></div>
-                                    </el-form-item>
-                                </el-col>
-                            </el-row>
-                            <el-row>
-                                <el-col :span="24">
-                                    <el-form-item label="调查类型:" prop="matterIds">
-                                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'matterNames' })"></div>
-                                    </el-form-item>
-                                </el-col>
-                            </el-row>
-                            </div>
-                        </template>
-                        <el-form-item label="附件:">
-                            <div class="box1">
-                                <div v-for="item in reportMessage.systemFileList" style="display:flex;align-items:center" :key="item.guid">
-                                    <div style="margin-right:20px">{{ item.originalName }}</div>
-                                    <my-menu :data="item" :deleted="false"></my-menu>
-                                </div>
-                            </div>
-                        </el-form-item>
-                        <el-form-item label="备注:" prop="description">
-                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'description' })"></div>
-                        </el-form-item> -->
-                    </el-form>
+                    <reportBasicMessage :edit="editMessage.edit" :reportMessage="reportMessage"></reportBasicMessage>
                 </el-card>
             </div>
       </div>
@@ -278,8 +142,10 @@
 
 <script>
 import { mapGetters } from 'vuex';
+import reportBasicMessage from './components/basicMessage/index.vue'
 export default {
   components: {
+    reportBasicMessage
   },
   mixins:[],
   props: {
@@ -300,17 +166,38 @@ export default {
         applicationSuggestionList:['发明','实用新型','外观设计','补充资料,然后再进行评估','结案'],
         patentabilityList:['是','否','公开不充分'],
         reportMessage:{},
+        editReport:{
+            edit:false,
+            originMessage:null
+        },
     };
   },
   watch: {},
   computed: {
-    ...mapGetters(['userinfo']),
+    userinfo(){
+        return this.$s.getObj('userinfo')
+    },
   },
   created() {},
   mounted() {
     this.getReportMessage()
   },
   methods: {
+    //从唯德系统获取数据
+    getMessage(){
+        var number = ''
+        this.$prompt('请输入卷号', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          inputPattern: '',
+          inputErrorMessage: '格式不正确',
+          inputValue:number,
+          inputPlaceholder:'请输入卷号'
+        }).then(({ value }) => {
+           
+        })
+    },
+    //获取报告信息
     getReportMessage(){
       this.reportMessage = {
           reportType:8,
@@ -331,6 +218,22 @@ export default {
           conclusion:'未检索到影响其专利性的对比文件'
         }
     },
+    //编辑报告基本信息
+    editReportMessage(){
+        this.editMessage = {
+            edit:!this.editMessage.edit,
+            originMessage:JSON.parse(JSON.stringify(this.reportMessage))
+        }
+    },
+    //保存修改
+    saveReportMessage(){
+        this.editMessage.edit = false
+    },
+    //取消编辑
+    cancelEditMessage(){
+        this.reportMessage = this.editMessage.originMessage
+        this.editMessage.edit = false
+    },
       //编辑信息
       edit(data,field){
           this.$set(this.editField,field,true)
@@ -355,13 +258,7 @@ export default {
         margin-bottom: 10px;
     }
 }
-.box1{
-    // border: 2px solid var(--color1);
-    // border-radius: 5px;
-    padding: 0px 10px;
-    color: var(--color1);
-    font-size: medium;
-}
+
 .width_100{
   width: 100%;
 }

+ 177 - 0
src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/basicMessageDetails.vue

@@ -0,0 +1,177 @@
+<template>
+  <div>
+    <el-form style="width:100%" :model="reportMessage" label-width="140px">
+        <template>
+            <el-row>
+                <el-col :span="12">
+                <el-form-item label="客户案号" prop="clientNo">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'clientNo' })"></div>
+                </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                <el-form-item label="内部案号" prop="volumeNumber">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'volumeNumber' })"></div>
+                </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="12">
+                <el-form-item label="申请单位" prop="appCompany">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'appCompany' })"></div>
+                </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                <el-form-item label="发明人" prop="inventor">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'inventor' })"></div>
+                </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="12">
+                <el-form-item label="IPR" prop="IPR">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'IPR' })"></div>
+                </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                <el-form-item label="技术接口人" prop="interfaceName">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'interfaceName' })"></div>
+                </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="12">
+                <template>
+                    <div>
+                        <el-form-item label="委托方:" prop="entrustId" v-if="userinfo.tenantType == 1">
+                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'entrustName' })"></div>
+                        </el-form-item>
+                        <el-form-item label="委托部门:" prop="departmentId" v-else>
+                            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                        </el-form-item>
+                    </div>
+                </template>
+            </el-col>
+                <el-col :span="12">
+                    <el-form-item label="承担部门:" prop="departmentId">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'departmentName' })"></div>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="12">
+                <el-form-item label="检索单位" prop="searchUnit">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'searchUnit' })"></div>
+                </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                <el-form-item label="负责人" prop="searchPerson">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'headName' })"></div>
+                </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="12">
+                <el-form-item label="检索员联系方式" prop="searchPersonNumber">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'searchPersonNumber' })"></div>
+                </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                <el-form-item label="检索审核人" prop="reviewer">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'reviewer' })"></div>
+                </el-form-item>
+                </el-col>
+            </el-row>
+        </template>
+        <!-- <el-form-item label="是否完成:">
+            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'status' })==3?'是':'否'"></div>
+        </el-form-item>
+        <template v-if="reportMessage.status == 3">
+            <div>
+                <el-form-item label="报告结果:">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'cronNames' })"></div>
+                </el-form-item>
+                <el-form-item label="结果论述:">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'cronDescription' })"></div>
+                </el-form-item>
+            </div>
+        </template>
+        <el-row>
+            <el-col :span="24">
+                <el-form-item label="产品/技术:">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'productOrTech' })"></div>
+                </el-form-item>
+            </el-col>
+        </el-row>
+        <el-row>
+            <el-col :span="24">
+                <el-form-item label="关联报告:">
+                    <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'associateReportName' })"></div>
+                </el-form-item>
+            </el-col>
+        </el-row>
+        <template>
+            <div>
+            <el-row>
+                <el-col :span="24">
+                    <el-form-item label="事件:">
+                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'eventNames' })"></div>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="24">
+                    <el-form-item label="调查类型:" prop="matterIds">
+                        <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'Array', value: 'matterNames' })"></div>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            </div>
+        </template>
+        <el-form-item label="附件:">
+            <div class="box1">
+                <div v-for="item in reportMessage.systemFileList" style="display:flex;align-items:center" :key="item.guid">
+                    <div style="margin-right:20px">{{ item.originalName }}</div>
+                    <my-menu :data="item" :deleted="false"></my-menu>
+                </div>
+            </div>
+        </el-form-item>
+        <el-form-item label="备注:" prop="description">
+            <div class="box1" v-html="$commonJS.getColumnData(reportMessage, { type: 'String', value: 'description' })"></div>
+        </el-form-item> -->
+    </el-form>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {
+    reportMessage:{
+        type:Object,
+        default:()=>{
+            return {}
+        }
+    }
+  },
+  data() {
+    return {
+    };
+  },
+  watch: {},
+  computed: {
+    userinfo(){
+        return this.$s.getObj('userinfo')
+    },
+  },
+  created() {},
+  mounted() {},
+  methods: {},
+};
+</script>
+<style lang="scss" scoped>
+.box1{
+    padding: 0px 10px;
+    color: var(--color1);
+    font-size: medium;
+}
+</style>

+ 228 - 0
src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/basicMessageEdit.vue

@@ -0,0 +1,228 @@
+<template>
+    <div>
+        <el-form style="width:100%" :model="reportMessage" label-width="140px">
+            <template>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="客户案号" prop="clientNo">
+                            <el-input v-model="reportMessage.clientNo" placeholder="请输入客户案号"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="内部案号" prop="volumeNumber">
+                            <el-input v-model="reportMessage.volumeNumber" placeholder="请输入内部案号"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="申请单位" prop="appCompany">
+                            <el-input v-model="reportMessage.appCompany" placeholder="请输入申请单位"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="发明人" prop="inventor">
+                            <el-input v-model="reportMessage.inventor" placeholder="请输入发明人"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="IPR" prop="IPR">
+                            <el-input v-model="reportMessage.IPR" placeholder="请输入IPR"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="技术接口人" prop="interfaceName">
+                            <el-input v-model="reportMessage.interfaceName" placeholder="请输入技术接口人"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                    <template>
+                        <div>
+                            <el-form-item label="委托方:" prop="entrustId" v-if="userinfo.tenantType == 1">
+                                <el-autocomplete style="width:100%" v-model="reportMessage.entrustName" ref="client" value-key="name" :fetch-suggestions="querySearch" v-SelectLazyLoading="loadClient"
+                                    @input="input" placeholder="请输入内容" :trigger-on-focus="false" @select="handleChange">
+                                </el-autocomplete>
+                            </el-form-item>
+                            <el-form-item label="委托部门:" prop="departmentId" v-else>
+                                <mySelectTree style="width:100%" v-model="reportMessage.departmentId" :options="departmentList">
+                                </mySelectTree>
+                            </el-form-item>
+                        </div>
+                    </template>
+                </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="承担部门:" prop="departmentId">
+                            <mySelectTree style="width:100%" v-model="reportMessage.departmentId" :options="departmentList">
+                            </mySelectTree>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="检索单位" prop="searchUnit">
+                            <el-input v-model="reportMessage.searchUnit" placeholder="请输入检索单位"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="负责人" prop="searchPerson">
+                            <el-select style="width:100%" v-model="reportMessage.headId" filterable remote clearable placeholder="请选择"
+                                :loading="personnelList.loading" v-SelectLazyLoading="loadHead" :remote-method="remoteMethod">
+                                <el-option v-for="item in personnelList.data" :key="item.id" :label="item.name" :value="item.id">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="检索员联系方式" prop="searchPersonNumber">
+                            <el-input v-model="reportMessage.searchPersonNumber" placeholder="请输入检索员联系方式"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="检索审核人" prop="reviewer">
+                            <el-input v-model="reportMessage.reviewer" placeholder="请输入检索审核人"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </template>
+        </el-form>
+    </div>
+</template>
+  
+<script>
+  export default {
+    components: {},
+    props: {
+      reportMessage:{
+          type:Object,
+          default:()=>{
+              return {}
+          }
+      }
+    },
+    data() {
+      return {
+        clientList:{
+            queryParams:{
+                current:1,
+                size:10,
+                total:0,
+                name:''
+            },
+            data:[]
+        },
+        personnelList:{
+            queryParams:{
+                current:1,
+                size:10,
+                total:0,
+                name:''
+            },
+            loading:false,
+            data:[]
+        },
+        departmentList:[]
+      };
+    },
+    watch: {},
+    computed: {
+        userinfo(){
+            return this.$s.getObj('userinfo')
+        },
+    },
+    created() {},
+    mounted() {
+        this.getReportMessage()
+        this.getDepartment()
+    },
+    methods: {
+        getReportMessage(){
+            if(this.reportMessage.headId){
+                this.remoteMethod(this.reportMessage.headName)
+            }else{
+                this.remoteMethod('')
+            }
+        },
+
+        //获取部门
+        getDepartment() {
+            this.$api.getPermissionDepartmentList().then((response) => {
+                this.departmentList = response.data;
+            });
+        },
+        //获取客户
+         //远程搜索委托方(建议调取接口获取)
+        async querySearch(queryString, cb) {
+            this.clientList.queryParams.current = 1
+            this.clientList.queryParams.name = queryString
+            this.clientList.data = []
+            this.clientList.cb = cb
+            await this.getClientList()
+        },
+        loadClient(){
+            if(this.clientList.queryParams.current * this.clientList.queryParams.size>=this.clientList.queryParams.total){
+                return false
+            }
+            this.clientList.queryParams.current += 1
+            this.getClientList()
+        },
+        //获取委托方
+        async getClientList(){
+            await this.$api.getAdminClientList(this.clientList.queryParams).then(res => {
+                if (res.code == 200) {
+                    this.clientList.data.push(...res.data.records)
+                    this.clientList.queryParams.total = res.data.total
+                    this.clientList.cb(this.clientList.data);
+                }
+            })
+        },
+        //输入框输入事件(委托方)
+        input() {
+            this.$set(this.reportMessage, 'entrustId', -1)
+        },
+        //切换选择委托方
+        handleChange(row) {
+            this.$set(this.reportMessage, 'entrustId', row.id)
+            this.$set(this.reportMessage, 'entrustName', row.name)
+        },
+
+
+        //获取人员列表(懒加载)
+        loadHead(){
+            if(this.personnelList.queryParams.current * this.personnelList.queryParams.size>=this.personnelList.queryParams.total){
+                return false
+            }
+            this.personnelList.queryParams.current += 1
+            this.getPersonnelList()
+        },
+        async getPersonnelList() {
+            this.personnelList.loading = true;
+            await this.$api.getPermissionPersonnel(this.personnelList.queryParams).then((response) => {
+                if(response.code == 200){
+                    this.personnelList.loading = false;
+                    this.personnelList.data.push(...response.data)
+                }
+            })
+        },
+        //人员远程搜索
+        remoteMethod(query) {
+            this.personnelList.data=[]
+            this.personnelList.queryParams.current = 1
+            this.personnelList.queryParams.name = query
+            this.getPersonnelList()
+        },
+    },
+  };
+  </script>
+  <style lang="scss" scoped>
+  .box1{
+      padding: 0px 10px;
+      color: var(--color1);
+      font-size: medium;
+  }
+  </style>

+ 33 - 0
src/views/noveltySearch/components/details/components/basicMessage/components/basicMessage/index.vue

@@ -0,0 +1,33 @@
+<template>
+  <div class="height_100">
+    <basicMessageEdit v-if="edit" v-bind="$attrs"></basicMessageEdit>
+    <basicMessageDetails v-else v-bind="$attrs"></basicMessageDetails>
+  </div>
+</template>
+
+<script>
+import basicMessageDetails from './basicMessageDetails.vue';
+import basicMessageEdit from './basicMessageEdit.vue';
+export default {
+  components: {
+    basicMessageDetails,
+    basicMessageEdit
+  },
+  props: {
+    edit:{
+        default:false,
+    }
+  },
+  data() {
+    return {
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {},
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 24 - 14
src/views/noveltySearch/components/details/components/contrastFile/contrastFile.vue

@@ -70,11 +70,18 @@
                   </el-table-column>
                   <el-table-column prop="appPerson" label="申请人" align="center">
                       <template slot-scope="scope">
-                          <div v-if="scope.row.applicant">
+                          <div v-if="scope.row.applicant && scope.row.applicant.length>0">
                               {{scope.row.applicant.join('、')}}
                           </div>
                       </template>
                   </el-table-column>
+                  <el-table-column prop="description" label="标注" align="center">
+                      <template slot-scope="scope">
+                          <div>
+                              {{scope.row.description}}
+                          </div>
+                      </template>
+                  </el-table-column>
                   <el-table-column prop="relevance" label="相关度" align="center">
                       <template slot-scope="scope">
                           <div>
@@ -89,10 +96,10 @@
                           </div>
                       </template>
                   </el-table-column>
-                  <el-table-column prop="description" label="标注" align="center">
+                  <el-table-column prop="remark" label="备注" align="center">
                       <template slot-scope="scope">
                           <div>
-                              {{scope.row.description}}
+                              {{scope.row.remark}}
                           </div>
                       </template>
                   </el-table-column>
@@ -170,15 +177,10 @@
           this.$s.setSession('search', search)
           this.$router.push(
               {
-              path: '/patentDetails/' + row.literatureNo,
+              path: '/patentDetails/' + row.patentNo,
               query: {
-                  projectId: this.projectId,
-                  reportType: this.reportType,
-                  evidenceType:row.type,
-                  evidence:JSON.stringify(row),
-                  signPatentNo:this.patentNo,
-                  projectName: this.projectName,
-                  projectType: this.projectType,
+                noveltySearch:true,
+                projectId:this.projectId
               }
               }
           )
@@ -187,7 +189,7 @@
       getList(){
         this.tableData = [
             {
-                "patentNo": "WO9719481A1",
+                "patentNo": "CN202421185429.8",
                 name:'A SOLID STATE BATTERY HAVING A DISORDERED HYDROGENATED CARBON NEGATIVE ELECTRODE',
                 "publicNo": "WO9719481A1",
                 "publicDate": "1997-05-29",
@@ -222,7 +224,11 @@
                 "inpadocFamilyNum": 1,
                 "inpadocFamilyId": "iyjesZEBqw7ULz3TskB4",
                 "pictureGuid": "US9618644W_p",
-                "ifSearch": true
+                "ifSearch": true,
+                description:'描述',
+                innovate:'是',
+                remark:'备注',
+                relevance:'高'
                 }
         ]
         return
@@ -302,7 +308,11 @@
           }
           this.updateLiteratureOrder(data,true)
       },
-
+      //编辑?编辑的内容是什么?
+      edit(row){
+        var data = row
+        
+      },
      
     },
   };

+ 2 - 1
src/views/noveltySearch/components/details/components/contrastRecords/contrastRecords.vue

@@ -3,7 +3,7 @@
     <el-container>
         <el-header v-if="!choose">
             <div class="head">
-                <el-button type="primary" size="small" @click="exportReport">导出报告</el-button>
+                <el-button type="primary" size="small" @click="exportReport">生成报告</el-button>
             </div>
         </el-header>
         <el-main v-DivHeight="getDivHeight">
@@ -107,6 +107,7 @@ export default {
     this.getList()
   },
   methods: {
+    exportReport(){},
     getList(){
         var obj = {
             patentNo:'CN202410943719.2',

+ 8 - 7
src/views/noveltySearch/components/details/components/signMessage/signMessage.vue

@@ -46,28 +46,29 @@
   
         <el-form v-else :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-form">
           <el-form-item label="IPC类号:">
-            <span>{{ form.IPC }}</span>
+            <span>{{ form.IPC  || '--' }}</span>
           </el-form-item>
           <el-form-item label="解决的问题:">
-            <span v-html="form.productDescription"></span>
+            <span v-html="form.productDescription || '--'"></span>
           </el-form-item>
           <el-form-item label="方案技术领域:">
-            <span v-html="form.surveyArea"></span>
+            <span v-html="form.surveyArea  || '--'"></span>
           </el-form-item>
           <el-form-item label="技术方案概述:">
-            <span v-html="form.overview"></span>
+            <span v-html="form.overview  || '--'"></span>
           </el-form-item>
           <el-form-item label="代表图:">
-            <span style="display:flex;flex-direction:row;flex-wrap:wrap;">
+            <span style="display:flex;flex-direction:row;flex-wrap:wrap;" v-if="form.systemFileList && form.systemFileList.length>0">
                 <span class="avatar" v-for="(item) in form.systemFileList" :key="item.guid || item.uid"
                   style="margin-left:10px">
                   <el-image fit="contain" ref="image" class="img" :src="item.guid ? $commonJS.checkViewer(item.guid) : item.url"
                     :preview-src-list="form.systemFileList ? form.systemFileList.map(item => { return item.guid ? $commonJS.checkViewer(item.guid) : item.url }) : []"></el-image>
                 </span>
-              </span>
+            </span>
+            <span v-else>--</span>
           </el-form-item>
           <el-form-item label="发明点:">
-            <span v-html="form.inventionPoint"></span>
+            <span v-html="form.inventionPoint  || '--'"></span>
           </el-form-item>
         </el-form>
       </div>

+ 3 - 0
src/views/noveltySearch/components/details/index.vue

@@ -13,6 +13,9 @@ export default {
   props: {},
   data() {
     return {
+      projectId(){
+        return this.$route.query.projectId
+      },
     };
   },
   watch: {},

+ 55 - 0
src/views/noveltySearch/components/dialog/getMessageByNumber.vue

@@ -0,0 +1,55 @@
+<template>
+  <div>
+    <el-dialog
+        title="根据内部卷号获取报告信息"
+        :visible.sync="visible"
+        width="400px"
+        append-to-body
+        :close-on-click-modal="false"
+        :modal="false"
+        :before-close="close">
+        <div>
+            <el-input v-model="number" placeholder="请输入内部卷号"></el-input>
+        </div>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="close">取 消</el-button>
+            <el-button type="primary" @click="submit">确 定</el-button>
+        </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {},
+  data() {
+    return {
+        visible:false,
+        number:''
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    open(){
+        this.visible = true
+    },
+    close(){
+        this.number = ''
+        this.visible = false
+    },
+    submit(){
+        if(this.number.trim() == ''){
+            this.$message.warning('请输入内部卷号!')
+            return false
+        }
+        this.close()
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 47 - 9
src/views/noveltySearch/components/dialog/inventionPoint/inventionPoint.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="inventionPointDialog" v-if="show2">
-    <div class="mini" :style="miniStyle" @click="changeDom('mini')" v-if="!show" v-drag ref="mini">查新</div>
-    <div class="plus" v-else v-drag2 ref="plus" :style="plusStyle">
+    <div class="mini" :style="miniStyle" @click="changeDom('mini')" v-if="!show" v-drag="getPosition" ref="mini">查新</div>
+    <div class="plus" v-else v-drag2="getPosition" ref="plus" :style="plusStyle">
       <div class="head">
         <div>{{ text }}</div>
         <div style="width: 20px; height: 20px">
@@ -94,7 +94,7 @@
           <div class="main_head">
             <span style="font-size:12px">对比文件:</span>
             <div>
-              <el-button  type="text"  size="mini"  :loading="loading"  @click="exportReport()">生成报告</el-button>
+              <el-button v-if="chooseContrastFile.length>0" type="text"  size="mini"  :loading="loading"  @click="exportReport()">生成报告</el-button>
             </div>
           </div>
           <div class="result">
@@ -161,7 +161,8 @@ export default {
       default:()=>{
         return {
           right:'10px',
-          top:'120px'
+          top:'120px',
+          
         }
       }
     },
@@ -183,6 +184,7 @@ export default {
   },
   data() {
     return {
+      domPosition:this.position,
       show2:true,
       show: this.type == 'mini'?false:true,
       text: this.title,
@@ -201,31 +203,67 @@ export default {
         2:'以下是相似案件:',
         3:'以下是根据您输入的发明点找到的可能相同的案件,您确认一下是否是相同案件,如果是请相同案件的点击“进入”按钮,如果没有相同的案件就点击“直接进入”按钮进行检索'
       },
-      chooseContrastFile:[]
+      chooseContrastFile:[],
+      cWidth:document.body.clientWidth
     };
   },
-  watch: {},
+  watch: {
+    position(){
+      this.domPosition = this.position
+    }
+  },
   computed: {},
   created() {},
+  destroyed() {
+    window.removeEventListener('resize',()=>{
+
+    })
+  },
   mounted() {
     this.setPosition(this.type)
+    window.addEventListener('resize',()=>{
+      this.cWidth = document.body.clientWidth
+    })
   },
   methods: {
     setPosition(ref){
-        if(!this.position){
+        if(!this.domPosition){
             return
         }
         this.$nextTick(()=>{
           var dom = this.$refs[ref]
           if(dom){
-              for(let key in this.position){
-                  dom.style[key] = this.position[key]
+              for(let key in this.domPosition){
+                if(key == 'left'){
+                  var left = Number(this.domPosition.left.slice(0,-2))
+                  if(ref == 'mini'){
+                    if(this.cWidth - left - 60 < 10){
+                      dom.style.right = '10px'
+                    }else{
+                      dom.style[key] = this.domPosition[key]
+                    }
+                  }
+                  else if(ref == 'plus'){
+                    if(this.cWidth - left - 350 < 10){
+                      dom.style.right = '10px'
+                    }else{
+                      dom.style[key] = this.domPosition[key]
+                    }
+                  }
+                }else{
+                  dom.style[key] = this.domPosition[key]
+                }
+               
               } 
           }
         })
         
         
     },
+    getPosition(left,top){
+      this.domPosition.left = left + 'px'
+      this.domPosition.top = top+ 'px'
+    },
     open(){
       
     },

+ 114 - 0
src/views/noveltySearch/components/dialog/reportTemplate/reportTemplateDialog.vue

@@ -0,0 +1,114 @@
+<template>
+  <div>
+    <el-dialog
+        title="报告模板"
+        :visible.sync="visible"
+        width="600px"
+        append-to-body
+        :close-on-click-modal="false"
+        :modal="false"
+        :before-close="close">
+        <div style="height: calc(100vh - 350px)">
+        <el-container>  
+          <el-main class="height_100" :loading="loading">
+            <el-table
+              class="copyTable"
+              :data="tableData"
+              style="width: 100%"
+              row-key="id"
+            >
+              <el-table-column prop="index" label="序号" width="100px">
+                <template slot-scope="scope">
+                  <div>
+                    {{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column prop="name" label="名称">
+                <template slot-scope="scope">
+                  <div>
+                    <el-link type="primary" @click="chooseReportTemplate(scope.row)">{{ scope.row.name }}</el-link>
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-main>
+          <el-footer class="pagination">
+            <el-pagination
+              background
+              layout="total, sizes, prev, pager, next, jumper"
+              :current-page.sync="queryParams.current"
+              :page-size.sync="queryParams.size"
+              @current-change="handleCurrentChange"
+              @size-change="changeSize"
+              :total="total"
+            >
+            </el-pagination>
+          </el-footer>
+        </el-container>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {
+  },
+  data() {
+    return {
+        visible:false,
+        tableData:[],
+        loading:false,
+        queryParams:{
+            current:1,
+            size:10
+        },
+        total:0,
+        projectId:null,
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    open(projectId){
+      this.projectId = projectId
+      this.queryParams.current = 1
+      this.getReportTemplate()
+      this.visible = true
+    },
+    //获取模板
+    getReportTemplate(){
+
+    },
+    close(){
+        this.visible = false
+    },
+    handleCurrentChange(val){
+      this.queryParams.current = val
+      this.getReportTemplate()
+    },
+    changeSize(val){
+      this.queryParams.current = 1
+      this.queryParams.size = val
+      this.getReportTemplate()
+    },
+    chooseReportTemplate(row){
+      let router = this.$router.resolve({
+          path: '/exportReport',
+          query: {
+            templateId: row.id,
+            templateName:row.name,
+            projectId: row.projectId,
+          }
+      })
+      window.open(router.href, '_blank')
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 0 - 102
src/views/noveltySearch/components/exportReport/components/reportMessage.vue

@@ -1,102 +0,0 @@
-<template>
-  <div class="height_100">
-    <div style="display:flex;justify-content:flex-end;margin-bottom:20px">
-        <el-button type="primary" size="small" @click="getMessage">根据内部卷号获取信息</el-button>
-    </div>
-    <div>
-       <el-form ref="form" :model="form" label-width="120px">
-            <el-form-item v-for="(item,index) in column" :key="index" :label="item.label">
-                <el-input v-model="form[item.field]" placeholder="请输入"></el-input>
-            </el-form-item>
-        </el-form> 
-    </div>
-    
-  </div>
-</template>
-
-<script>
-const column = [
-    {
-        label:'案件名称',
-        field:'name'
-    },
-    {
-        label:'客户案号',
-        field:'number'
-    },
-    {
-        label:'申请单位',
-        field:'applicant'
-    },
-    {
-        label:'发明人',
-        field:'inventor'
-    },
-    {
-        label:'IPR',
-        field:'IPR'
-    },
-    {
-        label:'技术接口人',
-        field:'technicalPerson'
-    },
-    {
-        label:'检索人',
-        field:'searchPerson'
-    },
-    {
-        label:'检索单位',
-        field:'searchUnit'
-    },
-    {
-        label:'检索员联系方式',
-        field:'searchPersonPhone'
-    },
-    {
-        label:'检索审核人',
-        field:'searchExamine'
-    },
-]
-export default {
-  components: {},
-  props: {
-    column:{
-        type:Array,
-        default:()=>{
-            return column
-        }
-    },
-    form:{
-        type:Object,
-        default:()=>{
-            return {}
-        }
-    }
-  },
-  data() {
-    return {
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    getMessage(){
-        var number = ''
-        this.$prompt('请输入卷号', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          inputPattern: '',
-          inputErrorMessage: '格式不正确',
-          inputValue:number,
-          inputPlaceholder:'请输入卷号'
-        }).then(({ value }) => {
-           
-        })
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 78 - 143
src/views/noveltySearch/components/exportReport/exportReport.vue

@@ -1,153 +1,88 @@
 <template>
-  <div class="height_100">
-    <el-container>
-        <el-header style="height:auto !important">
-            <div class="head">
-                <el-steps :active="active" finish-status="success">
-                    <el-step v-for="(step,index) in steps" :key="index" :title="step.name"></el-step>
-                </el-steps>
-            </div>
-        </el-header>
-        <el-main class="height_100" v-DivHeight="getDivHeight">
-            <div v-if="showTable" :style="`padding:0 150px;height:${tableHeight - 80}px`">
-                <component ref="exportReportMessage" class="height_100" :is='component' :column="column" :projectId="projectId" :isEdit="true" :choose="true" :form="form" :checkList="choose[component]"></component>
-            </div>
-        </el-main>""
-        <el-footer class="pagination">
-            <div class="btns">
-                <el-button type="primary" size="small" @click="reBack" v-if="this.active!=0">返回上一步</el-button>
-                <el-button type="primary" size="small" @click="next">{{ active == steps.length-1?'确认并复用':'确认并进行下一步' }}</el-button>
-            </div>
-        </el-footer>
-    </el-container>
-  </div>
-</template>
+    <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="reporting">生成报告</el-button>
+      </div>
+      <div style="height:calc(100% - 60px);overflow-y:auto" v-loading="loading">
+          <component :is='component' v-if="!loading" :dataObj="dataObj" :editMessage="editMessage"></component>    
+      </div>
 
+      <getMessageByNumber ref="getMessageByNumber" @save="getReportMessage"></getMessageByNumber>
+    </div>
+</template>
+  
 <script>
-import { getTableHeight } from '@/views/components/mixins'
-import reportMessage from './components/reportMessage.vue';
-import signMessage from '../details/components/signMessage/signMessage.vue';
-import contrastFile from '../details/components/contrastFile/contrastFile.vue';
-import contrastRecords from '../details/components/contrastRecords/contrastRecords.vue';
-import searchRecords from '@/views/report/analysisAndOpinion/components/searchRecords/searchRecords.vue'
-const steps = [
-    {
-        name:'确认报告基本信息',
-        value:1,
-        component:'reportMessage'
-    },
-    {
-        name:'确认技术方案信息',
-        value:2,
-        component:'signMessage'
-    },
-    {
-        name:'选择对比文件',
-        value:3,
-        component:'contrastFile'
+import mixins1 from './mixins/index'
+import mixins2 from './components/mixins'
+import getMessageByNumber from '../dialog/getMessageByNumber.vue';
+export default {
+    components: {
+        getMessageByNumber
     },
-    {
-        name:'选择对比记录',
-        value:4,
-        component:'contrastRecords'
+    mixins:[mixins1],
+    props: {
+        path:{},
+        projectId:{}
     },
-    {
-        name:'选择检索记录',
-        value:5,
-        component:'searchRecords'
-    }
-]
-export default {
-    mixins:[getTableHeight],
-  components: {
-    reportMessage,
-    signMessage,
-    contrastFile,
-    contrastRecords,
-    searchRecords
-  },
-  props: {
-    projectId:{
-        default:497
-    }
-  },
-  data() {
-    return {
-        active: 0,
-        steps:[],
-        component:'reportMessage',
-        form:{},
-        choose:{
-            contrastFile:[],
-            contrastRecords:[],
-            searchRecords:[],
-        },
-        column:[
-            {
-                label:'案号',
-                field:'name'
-            },
-            {
-                label:'检索人',
-                field:'number'
+    data() {
+      return {
+          component:null,
+          loading:false,
+          dataObj:{
+            basicMessage:{
+                number:'浙江零跑科技股份有限公司'
             },
-        ]
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {
-    this.init()
-    this.getReportMessage()
-  },
-  methods: {
-    init(){
-        // var step = [1,2,3,4,5]
-        var step = [3,4,5]
-        this.steps = steps.filter(item=>{
-            return step.indexOf(item.value) !=-1
-        })
-        this.component = this.steps[0].component
+            contrastFiles:[],
+            contrastRecords:[],
+            searchRecords:[]
+          },
+          editMessage:[]
+      };
     },
-    getReportMessage(){
-        this.form = {
-
-        }
+    watch: {},
+    computed: {
     },
-    reBack(){
-        if(this.active == 0){
-            return 
-        }
-        this.active--
-        this.component =  this.steps[this.active].component
+    created() {},
+    async mounted() {
+        this.getData()
+        await this.getReportTemplate()
     },
-    next(){
-        if(this.active == this.steps.length - 1){
-            return 
-        }
-        var a = this.steps[this.active].value
-        switch(a){
-            case 1://确认报告基本信息
-                break;
-            case 2://确认技术方案信息
-                this.$refs.exportReportMessage.isSave()
-                break
-        }
-        this.active++
-        this.component =  this.steps[this.active].component
+    methods: {
+        //获取报告所需信息
+        getData(){
+            this.getReportMessage()
+            this.getContrastFile()
+            this.getContrastRecord()
+            this.searchRecords()
+        },
+        //获取报告基本信息
+        getReportMessage(){},
+        //获取对比文件
+        getContrastFile(){},
+        //获取对比记录
+        getContrastRecord(){},
+        //获取检索记录
+        getSearchRecord(){},
+        //获取报告模板
+        async getReportTemplate(){
+            this.loading = true
+            var component1 = await this.getComponents(this.path)
+            component1.mixins = [mixins2]
+            this.component = component1
+            this.loading = false
+        },
+        getMessage(){
+            this.$refs.getMessageByNumber.open()
+        },
+        //生成报告
+        reporting(){},
     },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.head{
-    width:100%;
-    padding: 10px;
-}
-.btns{
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-</style>
+  };
+  </script>
+  <style lang="scss">
+      
+  </style>
+  <style lang="scss" scoped>
+  </style>

+ 7 - 41
src/views/noveltySearch/components/exportReport/index.vue

@@ -1,67 +1,33 @@
 <template>
   <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">生成报告</el-button>
-    </div>
-    <!-- <exportReport></exportReport> -->
-    <div style="height:calc(100% - 60px);overflow-y:auto" v-loading="loading">
-        <component :is='component' v-if="!loading"></component>    
-    </div>
-   
+    <exportReport :path="path" :projectId="projectId"></exportReport>
   </div>
 </template>
 
 <script>
-// import exportReport from './components/lingpao.vue';
-const loadComponent = (value)=>{
-  return import(`./components/${value}.vue`)
-}
-import mixins1 from './mixins/index'
-import mixins2 from './components/mixins'
+import exportReport from './exportReport.vue';
 export default {
   components: {
-    // exportReport
+    exportReport
   },
-  mixins:[mixins1],
   props: {},
   data() {
     return {
-        component:null,
-        loading:false
     };
   },
   watch: {},
   computed: {
+    projectId(){
+        return this.$route.query.projectId
+    },
     path(){
         return this.$route.query.path
     }
   },
   created() {},
-   async mounted() {
-    // loadComponent(this.path).then(component => {
-    //     console.log(component)
-        //   this.component = component.default
-        // })
-    // console.log(this.comp)
-    // this.component = {
-    //     template: this.comp.template,
-    //     mixins:this.comp.mixins,
-    //     styles:this.comp.styles
-    // }
-    this.loading = true
-    var component1 = await this.getComponents(this.path)
-    console.log(component1)
-    component1.mixins = [mixins2]
-    this.component = component1
-    this.loading = false
-  },
+  mounted() {},
   methods: {},
 };
 </script>
-<style lang="scss">
-    
-</style>
 <style lang="scss" scoped>
 </style>

+ 2 - 3
src/views/noveltySearch/components/exportReport/mixins/index.js

@@ -1,5 +1,4 @@
 // 引入 Vue 和 VueComponent
-// import mixins from '../components/mixins'
 export default{
    data() {
     return {
@@ -15,13 +14,13 @@ export default{
                 template:''
             }
             this.getCss(path)
-            await fetch(`./${path}/${path}.txt`).then(res =>  res.text() ).then(data => {
+            await fetch(`./reportTemplate/${path}/${path}.txt`).then(res =>  res.text() ).then(data => {
                 params.template = data
             })
             return params
         },
         getCss(path){
-            const url = `./${path}/${path}.css`
+            const url = `./reportTemplate/${path}/${path}.css`
             const linkId = `#${path}`
             const model = document.getElementById(linkId)
             if(path != undefined){

+ 8 - 4
src/views/noveltySearch/components/noveltySearchCard.vue

@@ -54,14 +54,14 @@
               </el-pagination>
           </el-footer>
       </el-container>
-      <reportTemplate ref="reportTemplate"></reportTemplate>
+      <reportTemplateDialog ref="reportTemplate"></reportTemplateDialog>
       <createNoveltySearch ref="createNoveltySearch"></createNoveltySearch>
     </div>
 </template>
   
 <script>
   import { getTableHeight } from '@/views/components/mixins'
-  import reportTemplate from '@/views/analyse/custom/components/dialog/reportTemplate.vue';
+  import reportTemplateDialog from '@/views/noveltySearch/components/dialog/reportTemplate/reportTemplateDialog.vue';
 import createNoveltySearch from './dialog/createNoveltySearch.vue';
   const column = [
       {
@@ -83,7 +83,7 @@ import createNoveltySearch from './dialog/createNoveltySearch.vue';
   export default {
       mixins:[getTableHeight],
     components: {
-      reportTemplate,
+        reportTemplateDialog,
       createNoveltySearch
     },
     props: {},
@@ -161,6 +161,10 @@ import createNoveltySearch from './dialog/createNoveltySearch.vue';
                   this.$router.push(
                       {
                           path:'/conditionImport',
+                          query:{
+                            noveltySearch:true,
+                            projectId:row.id
+                          }
                       }
                   )
                   break;
@@ -179,7 +183,7 @@ import createNoveltySearch from './dialog/createNoveltySearch.vue';
                   ) 
                   break;
               case "exportReport"://导出报告
-                  this.$refs.reportTemplate.open()
+                  this.$refs.reportTemplate.open(row.id)
                   break;
               case 'del'://删除
                   break;

+ 31 - 0
src/views/noveltySearch/components/reuseResults/index.vue

@@ -0,0 +1,31 @@
+<template>
+  <div class="height_100">
+    <reuseResults :projectId="projectId"></reuseResults>
+  </div>
+</template>
+
+<script>
+import reuseResults from './reuseResults.vue';
+export default {
+  components: {
+    reuseResults
+  },
+  props: {},
+  data() {
+    return {
+        
+    };
+  },
+  watch: {},
+  computed: {
+    projectId(){
+        return this.$route.query.projectId
+    }
+  },
+  created() {},
+  mounted() {},
+  methods: {},
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 126 - 0
src/views/noveltySearch/components/reuseResults/reuseResults.vue

@@ -0,0 +1,126 @@
+<template>
+    <div class="height_100">
+      <el-container>
+          <el-header style="height:auto !important">
+              <div class="head">
+                  <el-steps :active="active" finish-status="success">
+                      <el-step v-for="(step,index) in steps" :key="index" :title="step.name"></el-step>
+                  </el-steps>
+              </div>
+          </el-header>
+          <el-main class="height_100" v-DivHeight="getDivHeight">
+              <div v-if="showTable" :style="`padding:0 150px;height:${tableHeight - 80}px`">
+                  <component ref="exportReportMessage" class="height_100" :is='component'  :projectId="projectId" :choose="true" :form="form" :checkList="choose[component]"></component>
+              </div>
+          </el-main>""
+          <el-footer class="pagination">
+              <div class="btns">
+                  <el-button type="primary" size="small" @click="reBack" v-if="this.active!=0">返回上一步</el-button>
+                  <el-button type="primary" size="small" @click="next">{{ active == steps.length-1?'确认并复用':'确认并进行下一步' }}</el-button>
+              </div>
+          </el-footer>
+      </el-container>
+    </div>
+</template>
+  
+<script>
+  import { getTableHeight } from '@/views/components/mixins'
+  import contrastFile from '../details/components/contrastFile/contrastFile.vue';
+  import contrastRecords from '../details/components/contrastRecords/contrastRecords.vue';
+  import searchRecords from '@/views/report/analysisAndOpinion/components/searchRecords/searchRecords.vue'
+  const steps = [
+      {
+          name:'选择对比文件',
+          value:1,
+          component:'contrastFile'
+      },
+      {
+          name:'选择对比记录',
+          value:2,
+          component:'contrastRecords'
+      },
+      {
+          name:'选择检索记录',
+          value:3,
+          component:'searchRecords'
+      }
+  ]
+  export default {
+      mixins:[getTableHeight],
+    components: {
+      contrastFile,
+      contrastRecords,
+      searchRecords
+    },
+    props: {
+      projectId:{
+          default:497
+      }
+    },
+    data() {
+      return {
+          active: 0,
+          steps:[],
+          component:'contrastFile',
+          form:{},
+          choose:{
+              contrastFile:[],
+              contrastRecords:[],
+              searchRecords:[],
+          },
+
+      };
+    },
+    watch: {},
+    computed: {},
+    created() {},
+    mounted() {
+    //   this.init()
+      this.getReportMessage()
+    },
+    methods: {
+      init(){
+          // var step = [1,2,3,4,5]
+          var step = [3,4,5]
+          this.steps = steps.filter(item=>{
+              return step.indexOf(item.value) !=-1
+          })
+          this.component = this.steps[0].component
+      },
+      getReportMessage(){
+          this.form = {
+  
+          }
+      },
+      reBack(){
+          if(this.active == 0){
+              return 
+          }
+          this.active--
+          this.component =  this.steps[this.active].component
+      },
+      next(){
+          if(this.active == this.steps.length - 1){
+              return 
+          }
+          var a = this.steps[this.active].value
+          switch(a){
+
+          }
+          this.active++
+          this.component =  this.steps[this.active].component
+      },
+    },
+  };
+  </script>
+  <style lang="scss" scoped>
+  .head{
+      width:100%;
+      padding: 10px;
+  }
+  .btns{
+      display: flex;
+      align-items: center;
+      justify-content: center;
+  }
+  </style>

+ 14 - 1
src/views/project/patentCollection/components/mixins/index.js

@@ -1,4 +1,8 @@
+import addRemark from '../dialog/addRemark.vue';
 export const projectData = {
+  components:{
+    addRemark
+  },
   props: {
     // 视图数据源
     tableData: {
@@ -42,6 +46,9 @@ export const projectData = {
     outside: {
       default: false
     },
+    noveltySearch:{
+      default:false
+    }
   },
 
   data() {
@@ -53,6 +60,12 @@ export const projectData = {
 
   },
   methods: {
+    openAddRemark(patent){
+      if(this.$refs.addRemark){
+        this.$refs.addRemark.open(patent.patentNo)
+      }
+      
+    },
     // 点击专利号
     handleClick(row, index) {
       var location = (index + 1) + ((this.queryParams.current - 1) * this.queryParams.size)
@@ -522,7 +535,7 @@ export const highlight = {
         var messageItem = this.highlight.contrastList.find(item => {
           return item.id == Id
         })
-      } else if (selectType == 'o') {//
+      } else if (selectType == 'o') {//陈述意见
         var messageItem = this.highlight.opinionContrastList.find(item => {
           return item.id == Id
         })

+ 2 - 3
src/views/project/patentCollection/components/views/Abstract.vue

@@ -57,7 +57,7 @@
                   </template>
                   <el-tag class="margin-left_10" type="primary" effect="dark" size="small" v-if="patent.simpleStatus">{{
                     simpleStatus[patent.simpleStatus] }}</el-tag>
-                  <el-tag class="margin-left_10" type="primary" effect="plain" size="small" @click="$refs.addRemark.open(patent.patentNo)">添加查新标注</el-tag>
+                  <el-tag class="margin-left_10" style="cursor: pointer;" type="primary" effect="plain" size="small" @click="openAddRemark(patent)" v-if="noveltySearch">添加查新标注</el-tag>
                 </div>
                 <div style="font-size: 13px;">
                   <el-row>
@@ -227,11 +227,10 @@
 <script>
 import { downLoad2 } from "@/utils"
 import { projectData, handleData } from '../mixins/index';
-import addRemark from '../dialog/addRemark.vue';
+
 export default {
   mixins: [projectData, handleData],
   components:{
-    addRemark
   },
   // props: ['viewField'],
   // mixins: [patentViewList, patentKeywordsHighlight,commonMixins],

+ 16 - 4
src/views/project/patentDetails/components/patentDetails.vue

@@ -19,7 +19,7 @@
                 <span v-html="getViewDom(patent.patentNo)"></span>
                 <el-tag type="primary" effect="dark" size="mini" class="margin-left_10" v-if="patent.simpleStatus">{{
                   simpleStatus[patent.simpleStatus] }}</el-tag>
-                  <el-tag class="margin-left_10" type="primary" effect="plain" size="small" @click="$refs.addRemark.open()">添加查新标注</el-tag>
+                  <el-tag class="margin-left_10" style="cursor: pointer;" type="primary" effect="plain" size="small" v-if="noveltySearch" @click="openAddRemark(patent)">添加查新标注</el-tag>
               </div>
               <div style="color: #6b6868; font-size: 15px;padding-bottom: 5px;">
                 <span v-html="getView(patent, 'title')"></span>
@@ -31,14 +31,14 @@
               </div>
             </div>
             <div v-if="outside">
-              <el-button type="primary" size="small">生成报告</el-button>
+              <el-button type="primary" size="small" @click="reporting" v-if="noveltySearch">生成报告</el-button>
               <el-button type="primary" size="small" @click="importToProject">导入专利</el-button>
             </div>
             <div style="display: flex;justify-content: space-between;margin-right: 10px;align-items: center;" v-else>
               <!-- <div>
                 <PatentMark :patentNo="patent.patentNo" :reportType="reportType" @biaozhu="getBiaoZhu"></PatentMark>
               </div> -->
-              
+              <el-button type="primary" size="small" @click="reporting" v-if="noveltySearch">生成报告</el-button>
               <el-dropdown size="medium" style="margin-right:10px">
                 <el-button type="primary" size="small">
                   创建报告<i class="el-icon-arrow-down el-icon--right"></i>
@@ -123,6 +123,10 @@
     <!-- 创建报告 -->
     <addAndEditReport ref="addAndEditReport"></addAndEditReport>
     <projectListDialog ref="projectListDialog" :importData="condition"></projectListDialog>
+    <!-- 查新检索添加标注 -->
+    <addRemark ref="addRemark" v-on="$listeners"></addRemark>
+    <!-- 报告模板 -->
+    <reportTemplateDialog ref="reportTemplateDialog"></reportTemplateDialog>
   </div>
 </template>
 
@@ -150,6 +154,7 @@ import PatentField from './PatentField.vue'
 import addAndEditReport from '@/views/report/components/dialog/addAndEditReport.vue'
 import projectListDialog from "@/views/components/import/conditionImport/components/projectListDialog.vue";
 import PatentMark from './PatentMark.vue'
+import reportTemplateDialog from '@/views/noveltySearch/components/dialog/reportTemplate/reportTemplateDialog.vue';
 export default {
   components: {
     PatentBasic,
@@ -171,7 +176,8 @@ export default {
     PatentField,
     addAndEditReport,
     projectListDialog,
-    PatentMark
+    PatentMark,
+    reportTemplateDialog
   },
   mixins: [projectData, handleData],
   props: {
@@ -205,6 +211,9 @@ export default {
     },
     lock: {
       default: false
+    },
+    noveltySearch:{
+      default:false
     }
   },
   data() {
@@ -339,6 +348,9 @@ export default {
     
   },
   methods: {
+    reporting(){
+      this.$refs.reportTemplateDialog.open(this.projectId)
+    },
     async getSignPermission(){
       if(!this.outside || this.reportType!=3 || (await this.$permission.projectPermission(this.projectId)) || this.taskId){
         this.signPermission = true

+ 4 - 3
src/views/project/patentDetails/index.vue

@@ -8,12 +8,12 @@
         <div slot="left" style="width:100%">
           <notPatentDetails v-if="evidenceType == 1 " :projectId="projectId" :signPatentNo="signPatentNo" :reportType="reportType" :evidence="evidenceData"></notPatentDetails>
           <!-- <Patent-Details :patentNo="patentNo" :projectId="projectId" :taskId="taskId"></Patent-Details> -->
-          <component v-else :is='components' :patentNo="(signPatentNo && showView)?signPatentNo:patentNo" :value="showView" :evidence="evidenceData" :outside="outside" :projectType="projectType" :lock="signPatentNo?true:false" :signPatentNo="signPatentNo"  :projectId="projectId" :taskId="taskId"
+          <component v-else :is='components' :noveltySearch="noveltySearch" :patentNo="(signPatentNo && showView)?signPatentNo:patentNo" :value="showView" :evidence="evidenceData" :outside="outside" :projectType="projectType" :lock="signPatentNo?true:false" :signPatentNo="signPatentNo"  :projectId="projectId" :taskId="taskId"
             :reportType="reportType" :isResult="isResult"></component>
         </div>
         <div slot="right" style="width:100%">
           <notPatentDetails v-if="evidenceType == 1 && showView" :projectId="projectId" :signPatentNo="signPatentNo" :reportType="reportType" :evidence="evidenceData"></notPatentDetails>
-          <Patent-Details v-else-if="showView" :patentNo="patentNo" :outside="outside" :value="showView" :projectType="projectType" :evidence="evidenceData" :signPatentNo="signPatentNo" :reportType="reportType" :projectId="projectId" :taskId="taskId"></Patent-Details>
+          <Patent-Details v-else-if="showView" :noveltySearch="noveltySearch" :patentNo="patentNo" :outside="outside" :value="showView" :projectType="projectType" :evidence="evidenceData" :signPatentNo="signPatentNo" :reportType="reportType" :projectId="projectId" :taskId="taskId"></Patent-Details>
         </div>
       </my-View>
     </div>
@@ -264,7 +264,8 @@ export default {
             outside:this.outside,
             projectType:this.projectType,
             productId:this.productId,
-            projectName:this.projectName
+            projectName:this.projectName,
+            noveltySearch:this.noveltySearch
           }
         }
       )