zhuliu 1 year ago
parent
commit
fcfc9da29e
26 changed files with 1285 additions and 92 deletions
  1. 50 2
      src/router/index.js
  2. 4 1
      src/utils/model/RichText/index.vue
  3. 2 0
      src/utils/model/card/index.vue
  4. 4 4
      src/views/analyse/custom/components/dialog/reportTemplate.vue
  5. 1 0
      src/views/components/import/conditionImport/searchResult.vue
  6. 179 0
      src/views/components/noveltySearch/components/noveltySearch.vue
  7. 26 0
      src/views/components/noveltySearch/index.vue
  8. 75 11
      src/views/layout/components/UserBar.vue
  9. 12 6
      src/views/noveltySearch/components/details/components/basicMessage/basicMessage.vue
  10. 60 45
      src/views/noveltySearch/components/details/components/contrastFile/contrastFile.vue
  11. 26 4
      src/views/noveltySearch/components/details/components/contrastRecords/contrastRecords.vue
  12. 5 1
      src/views/noveltySearch/components/details/components/signMessage/signMessage.vue
  13. 242 0
      src/views/noveltySearch/components/dialog/createNoveltySearch.vue
  14. 0 0
      src/views/noveltySearch/components/dialog/getMessageByNumber.vue
  15. 102 0
      src/views/noveltySearch/components/exportReport/components/reportMessage.vue
  16. 153 0
      src/views/noveltySearch/components/exportReport/exportReport.vue
  17. 26 0
      src/views/noveltySearch/components/exportReport/index.vue
  18. 35 3
      src/views/noveltySearch/components/noveltySearch.vue
  19. 217 0
      src/views/noveltySearch/components/noveltySearchCard.vue
  20. 1 1
      src/views/noveltySearch/index.vue
  21. 1 1
      src/views/project/patentCollection/components/views/Abstract.vue
  22. 3 0
      src/views/project/patentDetails/components/patentDetails.vue
  23. 24 4
      src/views/report/analysisAndOpinion/components/searchRecords/searchRecords.vue
  24. 20 6
      src/views/report/components/index.vue
  25. 11 1
      src/views/report/components/reportFile/reportFileTable.vue
  26. 6 2
      src/views/report/index.vue

+ 50 - 2
src/router/index.js

@@ -421,6 +421,18 @@ const routes = [
           },
         ],
       },
+      //查新检索库
+      {
+        path: '/noveltySearchDB',
+        name: 'noveltySearchDB',
+        meta: {
+          title: '查新检索标注库',
+          sign: 'noveltySearchDB',
+          belong: 'noveltySearchDB',
+          keepAlive:true
+        },
+        component: () => import('@/views/components/noveltySearch/index.vue'),
+      },
       //查新检索
       {
         path: '/noveltySearch',
@@ -434,7 +446,7 @@ const routes = [
             meta: {
               title: '查新检索',
               sign: 'noveltySearch',
-              belong: 'noveltySearch'
+              belong: 'AllReport'
             },
             component: () => import('@/views/noveltySearch/index.vue'),
           },
@@ -444,11 +456,47 @@ const routes = [
             meta: {
               title: '查新检索详情',
               sign: 'noveltySearchDetails',
-              belong: 'noveltySearch',
+              belong: 'AllReport',
               keepAlive:true
             },
             component: () => import('@/views/noveltySearch/components/details/index.vue'),
           },
+          // 检索记录
+          {
+            path: '/noveltySearchRecord',
+            name: 'noveltySearchRecord',
+            meta: {
+              title: '查新检索记录',
+              sign: 'noveltySearchRecord',
+              belong: 'AllReport',
+              keepAlive:true
+            },
+            component: () => import('@/views/noveltySearch/components/details/components/contrastRecords/index.vue'),
+          },
+          // 对比文件
+          {
+            path: '/noveltySearchFile',
+            name: 'noveltySearchFile',
+            meta: {
+              title: '查新对比文件',
+              sign: 'noveltySearchFile',
+              belong: 'AllReport',
+              keepAlive:true
+            },
+            component: () => import('@/views/noveltySearch/components/details/components/contrastFile/index.vue'),
+          },
+          // 对比文件
+          {
+            path: '/exportReport',
+            name: 'exportReport',
+            meta: {
+              title: '导出报告',
+              sign: 'exportReport',
+              belong: 'AllReport',
+              keepAlive:true
+            },
+            component: () => import('@/views/noveltySearch/components/exportReport/index.vue'),
+          },
         ]
       },
       //任务模块

+ 4 - 1
src/utils/model/RichText/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="myRichText">
-    <div class="edit-box div_MAX_Height" ref="myEditBox" data-type="myEditBox" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
+    <div class="edit-box div_MAX_Height" ref="myEditBox" :style="customStyle" data-type="myEditBox" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
         @blur="saveValue($event)" @change="change($event)" @focus="focus($event)" @click="getFocus($event)" v-on:paste="handlePaste($event)">
     </div>
 
@@ -51,6 +51,9 @@ export default {
             }
             return  codeList.join('')
           }
+        },
+        customStyle:{
+          type:String,
         }
     },
   data() {

+ 2 - 0
src/utils/model/card/index.vue

@@ -85,6 +85,7 @@ export default {
         width: 100%;
         display: flex;
         justify-content: space-between;
+        align-items: center;
         font-family: var(--fm);
         color: var(--color1);
         font-weight: bold;
@@ -104,6 +105,7 @@ export default {
         width: 100%;
         display: flex;
         justify-content: space-between;
+        align-items: center;
     }
     .foot:empty{
         border-top: none !important;

+ 4 - 4
src/views/analyse/custom/components/dialog/reportTemplate.vue

@@ -10,11 +10,11 @@
     >
       <div style="height: calc(100vh - 350px)">
         <el-container>
-            <el-header>
+            <!-- <el-header>
                 <div style="display:flex;width: 100%;justify-content: flex-end;">
                     <el-button type="primary" size="small" @click="newTemplate">自定义模板</el-button>
                 </div>
-            </el-header>
+            </el-header> -->
           <el-main class="height_100" :loading="loading">
             <el-table
               class="copyTable"
@@ -124,11 +124,11 @@ export default {
         this.tableData = [
             {
                 id:1,
-                name:'公司调查报告模板'
+                name:'通用模板'
             },
             {
                 id:2,
-                name:'产业调查分析报告模板'
+                name:'XXX公司报告模板'
             }
         ]
         this.total = 2

+ 1 - 0
src/views/components/import/conditionImport/searchResult.vue

@@ -22,6 +22,7 @@
           <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" @click="importToProject">{{condition.isUpdateCriteria?'保存定期更新条件':'导入专利'}}</el-button>
           <el-button size="small" type="warning" @click="handleFieldManage">显示栏位管理</el-button>
         </div>

+ 179 - 0
src/views/components/noveltySearch/components/noveltySearch.vue

@@ -0,0 +1,179 @@
+<template>
+    <div class="height_100">
+      <el-container>
+          <el-header>
+              <div class="head">
+                  <div class="head_left">
+                      <el-form :inline="true" class="project-file-header-form">
+                          <el-form-item label="专利号">
+                              <el-input v-model="queryParams.number" size="small" placeholder="请输入专利号"></el-input>
+                          </el-form-item>
+                          <el-form-item>
+                              <el-button type="" size="small" @click="search">查询</el-button>
+                          </el-form-item>
+                      </el-form>
+                  </div>
+                  <div class="head_right">
+                    <el-button type="primary" size="small" @click="createReport">生成报告</el-button>
+                  </div>
+              </div>
+          </el-header>
+          <el-main class="height_100" v-DivHeight="getDivHeight">
+              <el-table :data="tableData" v-if="showTable" border style="width: 100%" header-row-class-name="custom-table-header" @sort-change="sortChange" :height="tableHeight - 20" >
+                  <el-table-column label="#" width="60" type="index" align="center">
+                      <template slot-scope="scope">
+                        <el-checkbox-group v-model="checkList">
+                            <el-checkbox :label="scope.row.id">
+                                <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
+                            </el-checkbox>
+                        </el-checkbox-group>
+                          
+                      </template>
+                  </el-table-column>
+                  <el-table-column v-for="item in column.filter(item=>!item.ifHidden)" :key="item.value" :prop="item.value" :render-header=" $commonJS.renderHeaderMethods" :label="item.name" :sortable="item.ifSort?'custom':false" align="center">
+                      <template slot-scope="scope">
+                          <div v-if="['patentNo'].includes(item.value)">
+                              <el-link type="primary" @click="handleItem(scope.row,item.value)">
+                                  <span  v-html="$commonJS.getColumnData(scope.row,item)"></span>
+                              </el-link>
+                          </div>
+                          <div v-else v-html="$commonJS.getColumnData(scope.row,item)"></div>
+                      </template>
+                  </el-table-column>
+  
+                  <el-table-column  label="操作" align="center" width="150px">
+                      <template slot-scope="scope">
+                          <el-button type="danger" size="mini" @click="del(scope.row)">删除</el-button>
+                      </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-sizes="pageSize" :page-size.sync="queryParams.size" @current-change="handleCurrentChange" @size-change="handleSizeChange" :total="total">
+              </el-pagination>
+          </el-footer>
+      </el-container>
+    </div>
+</template>
+  
+<script>
+  import { getTableHeight } from '@/views/components/mixins'
+  const column = [
+      {
+          value:'patentNo',
+          type:'string',
+          name:'专利号',
+      },
+      {
+          value:'searchCondition',
+          type:'string',
+          name:'所属检索式',
+      },
+      {
+          value:'remark',
+          type:'string',
+          name:'标注',
+      },
+      {
+          value:'createName',
+          type:'string',
+          name:'创建人',
+      },
+      {
+          value:'createTime',
+          type:'string',
+          name:'创建时间',
+      },
+  ]
+  export default {
+      mixins:[getTableHeight],
+    components: {
+      
+    },
+    props: {},
+    data() {
+      return {
+          pageSize: [10, 20],//分页数量
+          queryParams:{
+              current:1,
+              size:10,
+              number:''
+          },
+          total:0,
+          tableData:[],
+          column:column,
+          checkList:[],
+      };
+    },
+    watch: {},
+    computed: {},
+    created() {},
+    mounted() {
+      this.getList()
+    },
+    methods: {
+      //检索
+      search(){
+          this.queryParams.current = 1
+          this.getList()
+      },
+      //获取数据
+      getList(){
+          this.tableData = [
+              {
+                  id:1,
+                  patentNo:'CN202410574469.X',
+                  searchCondition:'PA = (深圳市江波龙电子股份有限公司)',
+                  remark:'影响创造性',
+                  createName:'管理员',
+                  createTime:'2024-09-06 17:04'
+              },
+              {
+                  id:2,
+                  patentNo:'CN202410448579.1',
+                  searchCondition:'PA = (深圳市江波龙电子股份有限公司)',
+                  remark:'影响创造性',
+                  createName:'管理员',
+                  createTime:'2024-09-06 17:04'
+              }
+          ]
+          this.total = 2
+      },
+      //切换分页
+      handleCurrentChange(val){
+          this.queryParams.current = val
+          this.getList()
+      },
+      //切换也大小
+      handleSizeChange(val){
+          this.queryParams.current = 1
+          this.queryParams.size = 10
+          this.getList()
+      },
+      //排序
+      sortChange({ column, prop, order }){},
+      //点击案号
+      handleItem(row){
+          this.$router.push({
+              path:'/noveltySearchDetails',
+              query:{
+                  projectId:row.id
+              }
+          })
+      },
+      
+      //删除
+      del(){},
+    },
+  };
+  </script>
+  <style lang="scss" scoped>
+  .head{
+      width: 100%;
+      padding: 0 20px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+  }
+  </style>

+ 26 - 0
src/views/components/noveltySearch/index.vue

@@ -0,0 +1,26 @@
+<template>
+  <div>
+    <noveltySearchDB></noveltySearchDB>
+  </div>
+</template>
+
+<script>
+import noveltySearchDB from './components/noveltySearch.vue';
+export default {
+  components: {
+    noveltySearchDB
+  },
+  props: {},
+  data() {
+    return {
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {},
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 75 - 11
src/views/layout/components/UserBar.vue

@@ -1,7 +1,19 @@
 <template>
   <div class="admin-user-bar">
     <div class="menu">
-      <el-link :underline="true" v-for="item in menu" :key="item.path" @click="changePage(item.path)" :type="item.belong==belong?'primary':'default'">{{ item.label }}</el-link>
+      <span v-for="(item,index) in menu" :key="index">
+        <el-dropdown @command="changePage($event,item)" v-if="item.children && item.children.length>0">
+          <el-link :underline="true" :type="item.belong==belong?'primary':'default'" class="el-dropdown-link">
+            {{ item.current }}<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-link>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item v-for="(menuItem,index2) in item.children" :key="index2" :command="menuItem.value">{{menuItem.label}}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-link v-else :underline="true" @click="changePage(item.path)" :type="item.belong==belong?'primary':'default'">{{ item.label }}</el-link>
+       
+      </span>
+      
       <!-- <el-dropdown @command="importPatent">
         <el-link :underline="true" :type="belong == 'conditionImport'?'primary':'default'" class="el-dropdown-link">
           专利检索<i class="el-icon-arrow-down el-icon--right"></i>
@@ -43,6 +55,7 @@
           <el-dropdown-item command="changePwd">修改密码</el-dropdown-item>
           <el-dropdown-item command="setStyle">文本样式设置</el-dropdown-item>
           <el-dropdown-item command="indicia">标注库</el-dropdown-item>
+          <el-dropdown-item command="noveltySearchDB">查新检索标注库</el-dropdown-item>
           <el-dropdown-item command="clientble" v-if="userinfo.tenantType == 1">客户管理</el-dropdown-item>
           <el-dropdown-item command="importAndExportHistory" >我的导入导出历史</el-dropdown-item>
           <el-dropdown-item divided command="doLogout">退出登录</el-dropdown-item>
@@ -100,6 +113,7 @@
         
     </el-dialog>
     <Set-Style ref="setStyle"></Set-Style>
+    <createNoveltySearch ref="createNoveltySearch"></createNoveltySearch>
   </div>
 </template>
 
@@ -107,10 +121,12 @@
 import { mapGetters } from "vuex";
 import SetStyle from "./setStyle.vue";
 import ClientManage from '@/views/client/index.vue'
+import createNoveltySearch from '@/views/noveltySearch/components/dialog/createNoveltySearch.vue';
 export default {
   components:{
     SetStyle,
-    ClientManage
+    ClientManage,
+    createNoveltySearch
   },
   data() {
     const validateRepeat = (rule, value, callback) => {
@@ -161,13 +177,28 @@ export default {
         {
           label:'报告',
           path:'/AllReport',
-          belong:'AllReport'
-        },
-        {
-          label:'查新检索',
-          path:'/noveltySearch',
-          belong:'noveltySearch'
+          belong:'AllReport',
+          current:'报告',
+          children:[
+            {
+              label:'报告',
+              value:'/AllReport?componentType=1',
+            },
+            {
+              label:'官方无效',
+              value:'/AllReport?componentType=2',
+            },
+            {
+              label:'查新检索',
+              value:'/noveltySearch',
+            }
+          ]
         },
+        // {
+        //   label:'查新检索',
+        //   path:'/noveltySearch',
+        //   belong:'noveltySearch'
+        // },
         {
           label:'产品/技术',
           path:'/product',
@@ -186,7 +217,18 @@ export default {
         {
           label:'外部专利检索',
           path:'/conditionImport',
-          belong:'conditionImport'
+          belong:'conditionImport',
+          current:'外部专利检索',
+          children:[
+            {
+              label:'外部专利检索',
+              value:'/conditionImport',
+            },
+            {
+              label:'查新检索',
+              value:'1',
+            }
+          ]
         },
       ],
       clientTitle:'',
@@ -235,9 +277,25 @@ export default {
       this.clientVisible = false
     },
     //跳转页面
-    changePage(path){
+    changePage(path,item){
+      var query = {}
+      if(item){
+        // query.componentType = value
+        // var arr = item.children
+        // var obj = arr.find(i=>{
+        //   return i.value == path
+        // })
+        // if(obj){
+        //   item.current = obj.label
+        // }
+      }
+      if(path == 1){
+        this.$refs.createNoveltySearch.open()
+        return 
+      }
       this.$router.push({
-        path: path
+        path: path,
+        query:query
       })
     },
     //清空密码表单数据
@@ -299,6 +357,12 @@ export default {
         case 'indicia':
           this.indicia()
           break;
+        case 'noveltySearchDB':
+          const router = this.$router.resolve({
+            path: '/noveltySearchDB',
+          })
+          window.open(router.href,'_blank')
+          break;
       }
     },
     //导入导出历史

+ 12 - 6
src/views/noveltySearch/components/details/components/basicMessage/basicMessage.vue

@@ -2,12 +2,18 @@
   <div>
         
       <div class="message">
-            <div class="title">
-                报告信息
+            <div class="title" style="display:flex;justify-content:space-between;align-items:center">
                 <span>
-                    <i v-if="!show.showReportMessage" class="el-icon-caret-right" @click="show.showReportMessage = !show.showReportMessage"></i>
-                    <i v-else class="el-icon-caret-bottom" @click="show.showReportMessage = !show.showReportMessage"></i>
+                    报告信息
+                    <span>
+                        <i v-if="!show.showReportMessage" class="el-icon-caret-right" @click="show.showReportMessage = !show.showReportMessage"></i>
+                        <i v-else class="el-icon-caret-bottom" @click="show.showReportMessage = !show.showReportMessage"></i>
+                    </span>  
                 </span>
+                <div>
+                    <el-button type="primary" size="small" @click="getMessage">根据内部卷号获取信息</el-button>
+                    <el-button type="primary" size="small" @click="edit">编辑</el-button>
+                </div>
             </div>
             <div v-show="show.showReportMessage">
                 <el-card shadow="always">
@@ -93,7 +99,7 @@
                               </el-col>
                           </el-row>
                           </template>
-                        <el-form-item label="是否完成:">
+                        <!-- <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">
@@ -148,7 +154,7 @@
                         </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-item> -->
                     </el-form>
                 </el-card>
             </div>

+ 60 - 45
src/views/noveltySearch/components/details/components/contrastFile/contrastFile.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="height_100">
       <el-container>
-          <el-header>
+          <el-header v-if="!choose">
                 <div class="head">
                     <el-button type="primary" size="small" @click="andClick('5')">
                           专利检索
@@ -23,9 +23,14 @@
               <el-table :data="tableData" border :maxHeight="tableHeight - 35" style="width: 100%">
                   <el-table-column prop="sysOrder" label="序号" width="80" align="center">
                       <template slot-scope="scope">
-                          <div>
+                          <div v-if="!choose">
                               <el-link type="primary" @click="checkDetails(scope)">D{{ scope.$index+1 }}</el-link>
                           </div>
+                          <div v-else>
+                            <el-checkbox-group v-model="checkList">
+                                <el-checkbox :label="scope.row.id">D{{ scope.$index+1 }}</el-checkbox>
+                            </el-checkbox-group>
+                          </div>
                       </template>
                   </el-table-column>
                   <el-table-column prop="patentNo" label="专利号" align="center">
@@ -65,7 +70,7 @@
                   </el-table-column>
                   <el-table-column prop="appPerson" label="申请人" align="center">
                       <template slot-scope="scope">
-                          <div>
+                          <div v-if="scope.row.applicant">
                               {{scope.row.applicant.join('、')}}
                           </div>
                       </template>
@@ -91,7 +96,7 @@
                           </div>
                       </template>
                   </el-table-column>
-                  <el-table-column label="操作" align="center">
+                  <el-table-column label="操作" align="center" v-if="!choose">
                       <template slot-scope="scope">
                           <div>
                               <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
@@ -100,7 +105,7 @@
                       </template>
                   </el-table-column>
               </el-table>
-          </el-main>
+          </el-main>    
       </el-container>
   
     </div>
@@ -126,6 +131,16 @@
       reportType:{
           default:0
       },
+      choose:{
+        type:Boolean,
+        default:false
+      },
+      checkList:{
+        type:Array,
+        default:()=>{
+            return []
+        }
+      }
     },
     data() {
       return {
@@ -170,47 +185,47 @@
       },
       //获取证据文献
       getList(){
-        // this.tableData = [
-        //     {
-        //         "patentNo": "WO9719481A1",
-        //         name:'A SOLID STATE BATTERY HAVING A DISORDERED HYDROGENATED CARBON NEGATIVE ELECTRODE',
-        //         "publicNo": "WO9719481A1",
-        //         "publicDate": "1997-05-29",
-        //         "appNo": "US9618644W",
-        //         "appDate": "1996-11-20",
-        //         "priorityCountry": "US",
-        //         "priorityDate": "1995-11-24",
-        //         "priorityNo": "US19950562952",
-        //         "appCountry": "WO",
+        this.tableData = [
+            {
+                "patentNo": "WO9719481A1",
+                name:'A SOLID STATE BATTERY HAVING A DISORDERED HYDROGENATED CARBON NEGATIVE ELECTRODE',
+                "publicNo": "WO9719481A1",
+                "publicDate": "1997-05-29",
+                "appNo": "US9618644W",
+                "appDate": "1996-11-20",
+                "priorityCountry": "US",
+                "priorityDate": "1995-11-24",
+                "priorityNo": "US19950562952",
+                "appCountry": "WO",
                 
-        //         "applicant": [
-        //             "OVONIC BATTERY CO"
-        //         ],
-        //         "mergeApplicant": [
-        //             "OVONIC BATTERY CO"
-        //         ],
-        //         "rightHolder": [
-        //             "OVONIC BATTERY CO"
-        //         ],
-        //         "mergeRightHolder": [
-        //             "OVONIC BATTERY CO"
-        //         ],
-        //         "inventor": [
-        //             "OVSHINSKY STANFORD R",
-        //             "YOUNG ROSA"
-        //         ],
-        //         "mergeInventor": [
-        //             "OVSHINSKY STANFORD R",
-        //             "YOUNG ROSA"
-        //         ],
-        //         "quotePatentNoNum": 1,
-        //         "inpadocFamilyNum": 1,
-        //         "inpadocFamilyId": "iyjesZEBqw7ULz3TskB4",
-        //         "pictureGuid": "US9618644W_p",
-        //         "ifSearch": true
-        //         }
-        // ]
-        // return
+                "applicant": [
+                    "OVONIC BATTERY CO"
+                ],
+                "mergeApplicant": [
+                    "OVONIC BATTERY CO"
+                ],
+                "rightHolder": [
+                    "OVONIC BATTERY CO"
+                ],
+                "mergeRightHolder": [
+                    "OVONIC BATTERY CO"
+                ],
+                "inventor": [
+                    "OVSHINSKY STANFORD R",
+                    "YOUNG ROSA"
+                ],
+                "mergeInventor": [
+                    "OVSHINSKY STANFORD R",
+                    "YOUNG ROSA"
+                ],
+                "quotePatentNoNum": 1,
+                "inpadocFamilyNum": 1,
+                "inpadocFamilyId": "iyjesZEBqw7ULz3TskB4",
+                "pictureGuid": "US9618644W_p",
+                "ifSearch": true
+                }
+        ]
+        return
           this.$api.queryCompareLiterature(this.queryParams).then(response=>{
               if(response.code == 200){
                   this.tableData = response.data.data.sort((a,b)=>{

+ 26 - 4
src/views/noveltySearch/components/details/components/contrastRecords/contrastRecords.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="height_100" >
     <el-container>
-        <el-header>
+        <el-header v-if="!choose">
             <div class="head">
                 <el-button type="primary" size="small" @click="exportReport">导出报告</el-button>
             </div>
@@ -15,6 +15,15 @@
                         </div>
                     </template>
                 </el-table-column>
+                <el-table-column v-if="choose" align="center">
+                    <template slot-scope="scope">
+                        <div >
+                            <el-checkbox-group v-model="checkList">
+                                <el-checkbox :label="scope.row.id">{{ '' }}</el-checkbox>
+                            </el-checkbox-group>
+                        </div>
+                    </template>
+                </el-table-column>
             </el-table> 
         </el-main>
     </el-container>
@@ -26,7 +35,18 @@ import { getTableHeight } from '@/views/components/mixins'
 export default {
   components: {},
   mixins:[getTableHeight],
-  props: {},
+  props: {
+    choose:{
+        type:Boolean,
+        default:false
+    },
+    checkList:{
+        type:Array,
+        default:()=>{
+            return []
+        }
+    }
+  },
   data() {
     return {
         tableData:[],
@@ -108,14 +128,16 @@ export default {
                 data.push(
                     {
                         ...obj,
-                        technicalFeature:'技术特征' + i
+                        technicalFeature:'技术特征' + i,
+                        id:i
                     }
                 )   
             }else{
                 data.push(
                     {
                         ...obj2,
-                        technicalFeature:'技术特征' + i
+                        technicalFeature:'技术特征' + i,
+                        id:i
                     }
                 )   
             }

+ 5 - 1
src/views/noveltySearch/components/details/components/signMessage/signMessage.vue

@@ -1,7 +1,7 @@
 <template>
     <!-- 产品信息 -->
     <div>
-      <div style="display: flex;justify-content: end;">
+      <div style="display: flex;justify-content: end;" v-if="!choose">
         <el-button v-if="edit" type="primary" @click="isSave">保存</el-button>
         <el-button v-if="!edit" type="primary" @click="handleEdit">编辑</el-button>
       </div>
@@ -81,6 +81,10 @@ export default {
   props: {
     isEdit:false,
     projectId: '',
+    choose:{
+      type:Boolean,
+      default:false
+    }
   },
   data() {
     return {

+ 242 - 0
src/views/noveltySearch/components/dialog/createNoveltySearch.vue

@@ -0,0 +1,242 @@
+<template>
+  <div>
+    <el-dialog   
+        title="新建查新检索"
+        :visible.sync="visible"
+        :width="width"
+        append-to-body
+        :close-on-click-modal="false"
+        :before-close="close">
+        <div class="content">
+            <div class="left">
+                <div class="head">发明点</div>
+                <div class="main" >
+                    <myRichText class="left_search" customStyle="height:100%" v-model="inventionPoint" placeholder="请输入发明点"></myRichText>
+                </div>
+                <div class="foot">
+                    <el-button type="primary" size="small" :loading="loading" @click="submit">提炼关键词</el-button>
+                    <el-button type="primary" size="small" :loading="loading" @click="submit">查看相似案件</el-button>
+                    <el-button type="primary" size="small" :loading="loading" @click="submit">确定</el-button>
+                </div>
+            </div>
+            <div class="right" v-if="showRight" v-loading="loading">
+                <div class="head">
+                    <!-- <div style="line-height:1">以下是根据您输入的发明点找到的可能相同的案件,您确认一下是否是相同案件,如果是请相同案件的点击“进入”按钮,如果没有相同的案件就点击“直接进入”按钮进行检索</div> -->
+                    <div style="line-height:1">以下是提炼的关键词</div>
+                    <!-- <div>
+                        <el-button type="text" @click="search">直接进入</el-button>
+                    </div> -->
+                </div>
+                <div class="main">
+                    <!-- <el-checkbox-group v-model="checkList">
+                        <el-checkbox label="关键词1"></el-checkbox>
+                        <el-checkbox label="关键词2"></el-checkbox>
+                        <el-checkbox label="关键词3"></el-checkbox>
+                    </el-checkbox-group> -->
+                    <div class="keyWord"> 
+                        中文关键词:
+                        <div class="keyWord_content">
+                            <el-tag
+                                v-for="item in keyWord.CN"
+                                :key="item"
+                                type=""
+                                @click="chooseKeyword(item)"
+                                :effect="checkList.indexOf(item)==-1?'plain':'dark'">
+                                {{ item }}
+                            </el-tag>
+                        </div>
+                    </div>
+                    <div class="keyWord"> 
+                        英文关键词:
+                        <div class="keyWord_content">
+                            <el-tag
+                                v-for="item in keyWord.EN"
+                                :key="item"
+                                @click="chooseKeyword(item)"
+                                type=""
+                                :effect="checkList.indexOf(item)==-1?'plain':'dark'">
+                                {{ item }}
+                            </el-tag>
+                        </div>
+                    </div>
+                    <!-- <myCard class="box-card" v-for="(item,index) in tableData" :key="item.id">
+                        <div slot="head">
+                            <div>
+                                序号:{{ (index + 1)  }}  
+                                <span style="margin-left:20px;color:cadetblue">相似度:{{ item.same }}</span>
+                            </div>
+                        
+                            <div>
+                                <el-button type="primary" size="mini" @click="search2(item)">复用结果</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="创建人:">
+                                <div v-html="item.createName"></div>
+                            </el-form-item>
+                            <el-form-item label="创建时间:">
+                                <div v-html="item.createTime"></div>
+                            </el-form-item>
+                        </el-form>
+                    </myCard> -->
+                </div>
+                <div class="foot">
+                    <el-button type="primary" size="small" :loading="loading" @click="submit">检索</el-button>
+                </div>
+            </div>
+        </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {},
+  data() {
+    return {
+        visible:false,
+        width:'500px',
+        inventionPoint:'发明点',
+        tableData:[],
+        loading:false,
+        showRight:false,
+        checkList:[],
+        keyWord:{
+            CN:['关键词1','关键词2'],
+            EN:['keyWord1','keyWord2']
+        }
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    open(){
+        this.showRight = false
+        this.visible = true
+    },
+    close(){
+        this.visible = false
+    },
+    //使用检索式
+    use(item){},
+    //选择关键词
+    chooseKeyword(item){
+        var index = this.checkList.indexOf(item)
+        if(index == -1){
+            this.checkList.push(item)
+        }else{
+            this.checkList.splice(index,1)
+        }
+    },
+    //确定
+    submit(){
+        if(!this.inventionPoint){
+            this.$message.warning('发明点不能为空')
+            return
+        }
+        this.loading = true
+        this.$set(this,'width','1000px')
+        this.showRight = true
+        setTimeout(()=>{
+            this.tableData = [
+                {
+                  id:1,
+                  number:'5W262525',
+                  inventionPoint:'发明点',
+                  searchRecords:[
+                    {
+                        searchRecord:'PA = (深圳市江波龙电子股份有限公司)'
+                    }
+                  ],
+                  same:'99%',
+                  createName:'管理员',
+                  createTime:'2024-09-06 17:04'
+                },
+                {
+                    id:2,
+                    number:'5W131553',
+                    inventionPoint:'发明点',
+                    searchRecords:[
+                        {
+                            searchRecord:'TI = (石墨烯薄膜)'
+                        }
+                    ],
+                    same:'90%',
+                    createName:'管理员',
+                    createTime:'2024-09-06 17:04'
+                }
+            ]
+            
+            this.loading = false
+        },1000)
+    },
+    //直接进入
+    search(){
+
+    },
+    //进入某一个项目
+    search2(){},
+  },
+};
+</script>
+<style lang="scss" scoped>
+.content{
+    height: calc(100vh - 250px);
+    width:100%;
+    display: flex;
+    .left{
+        width:100%;
+    }
+    .right{
+        width:100%;
+        .head{
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            &>*{
+
+            }
+        }
+        .main{
+            display: flex;
+            flex-direction: column;
+            .keyWord{
+                height: 100%;
+                width:100%;
+                flex:1;
+                .keyWord_content{
+                    padding: 10px;
+                    border:1px solid var(--bg);
+                    height: calc(100% - 50px);
+                }
+            }
+        }
+    }
+    .head{
+        padding: 0 5px;
+        border-bottom: 1px solid black;
+        height: 40px;
+        line-height: 50px;
+        font-weight: bold;
+    }
+    .main{
+        padding: 10px 5px;
+        height: calc(100% - 120px);
+        .left_search{
+            height:100% !important;
+        }
+    }
+    .foot{
+        padding: 0 5px;
+        margin-top: 20px;
+        display: flex;
+        justify-content: flex-end;
+    }
+}
+</style>

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


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

@@ -0,0 +1,102 @@
+<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>

+ 153 - 0
src/views/noveltySearch/components/exportReport/exportReport.vue

@@ -0,0 +1,153 @@
+<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>
+
+<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'
+    },
+    {
+        name:'选择对比记录',
+        value:4,
+        component:'contrastRecords'
+    },
+    {
+        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'
+            },
+        ]
+    };
+  },
+  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){
+            case 1://确认报告基本信息
+                break;
+            case 2://确认技术方案信息
+                this.$refs.exportReportMessage.isSave()
+                break
+        }
+        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>

+ 26 - 0
src/views/noveltySearch/components/exportReport/index.vue

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

+ 35 - 3
src/views/noveltySearch/components/noveltySearch.vue

@@ -41,6 +41,10 @@
                         <el-dropdown @command="handleCommand($event, scope.row)" split-button type="primary" size="small"  @click="handleCommand('e',scope.row)">
                             <span>编辑</span>
                             <el-dropdown-menu slot="dropdown" class="text-align_center">
+                                <el-dropdown-item command="search">检索 </el-dropdown-item>
+                                <el-dropdown-item command="searchRecord">检索记录 </el-dropdown-item>
+                                <el-dropdown-item command="contrastFile">对比文件 </el-dropdown-item>
+                                <el-dropdown-item command="exportReport">导出报告 </el-dropdown-item>
                                 <el-dropdown-item command="del" divided style="color: red;">删除 </el-dropdown-item>
                             </el-dropdown-menu>
                         </el-dropdown>
@@ -54,11 +58,13 @@
             </el-pagination>
         </el-footer>
     </el-container>
+    <reportTemplate ref="reportTemplate"></reportTemplate>
   </div>
 </template>
 
 <script>
 import { getTableHeight } from '@/views/components/mixins'
+import reportTemplate from '@/views/analyse/custom/components/dialog/reportTemplate.vue';
 const column = [
     {
         value:'number',
@@ -78,7 +84,9 @@ const column = [
 ]
 export default {
     mixins:[getTableHeight],
-  components: {},
+  components: {
+    reportTemplate
+  },
   props: {},
   data() {
     return {
@@ -148,9 +156,33 @@ export default {
     //操作
     handleCommand(event,row){
         switch(event){
-            case 'del':
+            case 'search'://检索
+                this.$router.push(
+                    {
+                        path:'/conditionImport',
+                    }
+                )
+                break;
+            case "searchRecord"://检索记录
+                this.$router.push(
+                    {
+                        path:'/noveltySearchRecord',
+                    }
+                )   
+                break;
+            case "contrastFile"://对比文件
+                this.$router.push(
+                    {
+                        path:'/noveltySearchFile',
+                    }
+                ) 
+                break;
+            case "exportReport"://导出报告
+                this.$refs.reportTemplate.open()
+                break;
+            case 'del'://删除
                 break;
-            case 'e':
+            case 'e'://编辑
                 break;
         }
     },

+ 217 - 0
src/views/noveltySearch/components/noveltySearchCard.vue

@@ -0,0 +1,217 @@
+<template>
+    <div class="height_100">
+      <el-container>
+          <el-header>
+              <div class="head">
+                  <div class="head_left">
+                      <!-- <el-form :inline="true" class="project-file-header-form">
+                          <el-form-item label="案号">
+                              <el-input v-model="queryParams.number" size="small" placeholder="请输入案号"></el-input>
+                          </el-form-item>
+                          <el-form-item>
+                              <el-button type="" size="small" @click="search">查询</el-button>
+                          </el-form-item>
+                      </el-form> -->
+                  </div>
+                  <div class="head_right">
+                      <el-button type="primary" size="small" @click="createNoveltySearch">新建查新检索</el-button>
+                  </div>
+              </div>
+          </el-header>
+          <el-main class="height_100" v-DivHeight="getDivHeight">
+            <div v-if="showTable"  :style="`height:${tableHeight - 20}px`">
+                <myCard class="box-card" v-for="(item,index) in tableData" :key="item.id">
+                    <div slot="head">
+                        <div>
+                          序号:{{ (index + 1) + ((queryParams.current - 1) * queryParams.size) }}  
+                        </div>
+                       
+                       <div>
+                        <el-button type="primary" size="mini" @click="handleItem(item)">详情</el-button>
+                        <el-button type="primary" size="mini" @click="handleCommand('search',item)">检索</el-button>
+                        <el-button type="primary" size="mini" @click="handleCommand('exportReport',item)">生成报告</el-button>
+                        <el-button type="danger" size="mini" @click="handleCommand('del',item)">删除</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="创建人:">
+                              <div v-html="item.createName"></div>
+                        </el-form-item>
+                        <el-form-item label="创建时间:">
+                              <div v-html="item.createTime"></div>
+                        </el-form-item>
+                    </el-form>
+                </myCard>
+            </div>
+
+          </el-main>
+          <el-footer class="pagination">
+              <el-pagination background layout="total,sizes, prev, pager, next, jumper" :current-page.sync="queryParams.current"
+              :page-sizes="pageSize" :page-size.sync="queryParams.size" @current-change="handleCurrentChange" @size-change="handleSizeChange" :total="total">
+              </el-pagination>
+          </el-footer>
+      </el-container>
+      <reportTemplate ref="reportTemplate"></reportTemplate>
+      <createNoveltySearch ref="createNoveltySearch"></createNoveltySearch>
+    </div>
+</template>
+  
+<script>
+  import { getTableHeight } from '@/views/components/mixins'
+  import reportTemplate from '@/views/analyse/custom/components/dialog/reportTemplate.vue';
+import createNoveltySearch from './dialog/createNoveltySearch.vue';
+  const column = [
+      {
+          value:'number',
+          type:'string',
+          name:'案号',
+      },
+      {
+          value:'createName',
+          type:'string',
+          name:'创建人',
+      },
+      {
+          value:'createTime',
+          type:'string',
+          name:'创建时间',
+      },
+  ]
+  export default {
+      mixins:[getTableHeight],
+    components: {
+      reportTemplate,
+      createNoveltySearch
+    },
+    props: {},
+    data() {
+      return {
+          pageSize: [10, 20],//分页数量
+          queryParams:{
+              current:1,
+              size:10,
+              number:''
+          },
+          total:0,
+          tableData:[],
+          column:column,
+      };
+    },
+    watch: {},
+    computed: {},
+    created() {},
+    mounted() {
+      this.getList()
+    },
+    methods: {
+      //检索
+      search(){
+          this.queryParams.current = 1
+          this.getList()
+      },
+      //获取数据
+      getList(){
+          this.tableData = [
+              {
+                  id:1,
+                  number:'5W262525',
+                  inventionPoint:'发明点',
+                  createName:'管理员',
+                  createTime:'2024-09-06 17:04'
+              },
+              {
+                  id:2,
+                  number:'5W131553',
+                  inventionPoint:'发明点',
+                  createName:'管理员',
+                  createTime:'2024-09-06 17:04'
+              }
+          ]
+          this.total = 2
+      },
+      //切换分页
+      handleCurrentChange(val){
+          this.queryParams.current = val
+          this.getList()
+      },
+      //切换也大小
+      handleSizeChange(val){
+          this.queryParams.current = 1
+          this.queryParams.size = 10
+          this.getList()
+      },
+      //排序
+      sortChange({ column, prop, order }){},
+      //点击案号
+      handleItem(row){
+          this.$router.push({
+              path:'/noveltySearchDetails',
+              query:{
+                  projectId:row.id
+              }
+          })
+      },
+      //操作
+      handleCommand(event,row){
+          switch(event){
+              case 'search'://检索
+                  this.$router.push(
+                      {
+                          path:'/conditionImport',
+                      }
+                  )
+                  break;
+              case "searchRecord"://检索记录
+                  this.$router.push(
+                      {
+                          path:'/noveltySearchRecord',
+                      }
+                  )   
+                  break;
+              case "contrastFile"://对比文件
+                  this.$router.push(
+                      {
+                          path:'/noveltySearchFile',
+                      }
+                  ) 
+                  break;
+              case "exportReport"://导出报告
+                  this.$refs.reportTemplate.open()
+                  break;
+              case 'del'://删除
+                  break;
+              case 'e'://编辑
+                  break;
+          }
+      },
+      //创建查新检索
+      createNoveltySearch(){
+        this.$refs.createNoveltySearch.open()
+      },
+    },
+  };
+  </script>
+  <style lang="scss" scoped>
+  .head{
+      width: 100%;
+      padding: 0 20px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+  }
+  </style>
+  <style lang="scss">
+    .box-card{
+        .el-form-item{
+            margin-bottom: 0px;
+        }
+    .el-form-item__content{
+        font-family: var(--fm) !important;
+        color: var(--color2) !important;
+        text-align: left;
+    }
+    }
+</style>

+ 1 - 1
src/views/noveltySearch/index.vue

@@ -5,7 +5,7 @@
 </template>
 
 <script>
-import noveltySearch from './components/noveltySearch.vue'
+import noveltySearch from './components/noveltySearchCard.vue'
 export default {
   components: {
     noveltySearch

+ 1 - 1
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()">添加标注</el-tag>
+                  <el-tag class="margin-left_10" type="primary" effect="plain" size="small" @click="$refs.addRemark.open()">添加查新标注</el-tag>
                 </div>
                 <div style="font-size: 13px;">
                   <el-row>

+ 3 - 0
src/views/project/patentDetails/components/patentDetails.vue

@@ -19,6 +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>
               </div>
               <div style="color: #6b6868; font-size: 15px;padding-bottom: 5px;">
                 <span v-html="getView(patent, 'title')"></span>
@@ -30,12 +31,14 @@
               </div>
             </div>
             <div v-if="outside">
+              <el-button type="primary" size="small">生成报告</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-dropdown size="medium" style="margin-right:10px">
                 <el-button type="primary" size="small">
                   创建报告<i class="el-icon-arrow-down el-icon--right"></i>

+ 24 - 4
src/views/report/analysisAndOpinion/components/searchRecords/searchRecords.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="height_100">
     <el-container>
-        <el-header>
+        <el-header v-if="!choose">
             <div style="display:flex;justify-content:flex-end;width: 100%;">
               <el-button type="primary" size="small" @click="add">添加</el-button>  
             </div>
@@ -17,9 +17,19 @@
                 v-loading="loading"
                 @selection-change="handleSelectionChange"
             >
-                <el-table-column type="selection" width="55" :reserve-selection="true">
+                <el-table-column type="selection" width="55" :reserve-selection="true" v-if="!choose">
 
                 </el-table-column>
+                <el-table-column  v-if="choose" align="center">
+                    <template slot-scope="scope">
+                        <div>
+                            <el-checkbox-group v-model="checkList">
+                                <el-checkbox :label="scope.row.id">{{(scope.$index + 1) + ((queryParams.current - 1) * queryParams.size)}}</el-checkbox>
+                            </el-checkbox-group>
+                        </div>
+                    </template>
+                    
+                </el-table-column>
                 <el-table-column prop="searchCondition" label="检索式"></el-table-column>
                 <el-table-column prop="searchBase" label="检索数据库" width="140">
                     <template slot-scope="scope">
@@ -49,7 +59,7 @@
                     </div>
                     </template>
                 </el-table-column>
-                <el-table-column label="操作" width="140">
+                <el-table-column label="操作" width="140" v-if="!choose">
                     <template slot-scope="scope">
                         <div class="icon">
                             <span @click="editSearch(scope.row)" class="margin-left_10">
@@ -72,7 +82,7 @@
                 </el-table-column>
             </el-table>
         </el-main>
-        <el-footer class="pagination" style="display:flex;justify-content:space-between;align-items:center">
+        <el-footer class="pagination" style="display:flex;justify-content:space-between;align-items:center" >
           <div style="display:flex;align-items:center">
             <span v-if="multipleSelection.length > 0">
               已勾选 <b>{{ multipleSelection.length }}</b> 条
@@ -105,6 +115,16 @@ export default {
   props: {
     projectId:{
         default:0
+    },
+    choose:{
+        type:Boolean,
+        default:false
+    },
+    checkList:{
+        type:Array,
+        default:()=>{
+            return []
+        }
     }
   },
   data() {

+ 20 - 6
src/views/report/components/index.vue

@@ -37,12 +37,12 @@
         </div>
       </el-header>
       <el-main id="patent-list-container" class="main" v-loading="loading" style="display: flex;">
-        <div>
+        <!-- <div>
           <el-tabs v-model="tab" tab-position="left" @tab-click="(tab)=>tabChange(tab.name)" style="height:100%">
             <el-tab-pane label="总表" name="1"></el-tab-pane>
             <el-tab-pane label="官方无效" name='2'></el-tab-pane>
           </el-tabs>
-        </div>
+        </div> -->
         <div style="width:100%;padding-right:5px">
           <component :is="viewType" v-bind="$attrs" v-on="$listeners" :isOperate="isOperate" :tableData="dataList" @tabChange="tabChange" :fixedSearch="fixedSearch"
           :state="state" :queryParams="queryParams" @option="handleOption" @on-sort="handleSort" :groupBy="groupingValue"
@@ -99,6 +99,9 @@ export default {
     scenarioId: {},
     eventName: '',
     eventId: '',
+    componentType:{
+      default:1
+    }
   },
   data() {
     return {
@@ -167,7 +170,11 @@ export default {
       type:'reportProject'
     };
   },
-  watch: {},
+  watch: {
+    async componentType(){
+      await this.tabChange(this.componentType)
+    }
+  },
   computed: {
     dictMessage() {
       var a = this.$store.state.dictMessage.dictMessage
@@ -246,9 +253,11 @@ export default {
   },
   created() { },
   async mounted() {
-    // 获取table栏位
-    this.columnList = await this.$commonJS.getCustomField('reportProject')
-    this.columnType.columnList1 = this.columnList
+   
+    
+    if(this.componentType){
+      await this.tabChange(this.componentType)
+    }
     // 获取搜索/分组
     await this.getColumn()
     //获取报告清单
@@ -263,6 +272,11 @@ export default {
         case 1:
          this.fixedSearch={}
          this.type = 'reportProject'
+         if(!this.columnType.columnList1){
+          // 获取table栏位
+          this.columnList = await this.$commonJS.getCustomField('reportProject')
+          this.columnType.columnList1 = this.columnList
+         }
           break;
         case 2:
           this.type = 'invalidReportProject'

+ 11 - 1
src/views/report/components/reportFile/reportFileTable.vue

@@ -269,7 +269,17 @@ export default {
       this.dialogVisible = true
     },
     getList() {
-      
+      this.tableData = [
+        {
+          referencesName:'浙江大华查新检索报告模板.docx',
+          type:'docx',
+          projectName:'查新检索报告',
+          createName:'管理员',
+          createTime:'2024-09-07'
+        }
+      ]
+      this.total = 1
+      return
       let params = {
         projectId: this.projectId,//放在外面还是searchQuery里面??
         ...this.queryParams,//分页信息

+ 6 - 2
src/views/report/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <Report></Report>
+    <Report :componentType='componentType'></Report>
   </div>
 </template>
 
@@ -16,7 +16,11 @@ export default {
     };
   },
   watch: {},
-  computed: {},
+  computed: {
+    componentType(){
+      return this.$route.query.componentType || 1
+    }
+  },
   created() {},
   mounted() {},
   methods: {},