Browse Source

内部数据库检索

zhuliu 8 months ago
parent
commit
2e3640fa78

+ 8 - 0
src/api/newApi/patent.js

@@ -258,6 +258,14 @@ export default {
     return axios.get("/xiaoshi/patent/getFigure", {params});
   },
   /**
+   * 专利详情内部获得专利附图
+   * @param {*} params 
+   * @returns 
+   */
+  getPatentFigures(data) {
+    return axios.post("/xiaoshi/patent/getPatentFigures", data);
+  },
+  /**
    * 专利详情外部获得法律事务状态
    * @param {*} params 
    * @returns 

+ 25 - 0
src/utils/common.js

@@ -6,6 +6,7 @@ import showPermissionDialog from "@/utils/model/noPermission/index";
 import { Base64 } from 'js-base64';
 import Config from '@/config'
 import moment from "moment";
+import Cookies from "js-cookie";
 export default {
   //滚动到顶部
   scrollToTop(){
@@ -536,6 +537,30 @@ treeToArray(data,prop={children:children}){
     return field.split('.')
   },
 
+  //查看专利图片
+  patentImage(data,field='path'){
+    if(!data){
+      return ''
+    }
+    // var dX1xbeyMT58WO = Cookies.get('dX1xbeyMT58WO')
+    // if(!dX1xbeyMT58WO){
+    //   Cookies.set('dX1xbeyMT58WO','5PmKdpvCP9bvUci.pbGtu16Dh4CPxOm_DwOEyLPAyeQD0ln01UVd.rbIhcx9Honn8aIfY0d1rRf6hkDWhtb7YhG')
+    //   Cookies.set('dX1xbeyMT58WP','CcCkuLpOrY_fA5N26x4cgIjVxdpE4Il3jL5fAxCXFPY578HQoUmh1zGL9dykhJr2P_zq.UQMBIssHdE6B.XyBgaXPCk06Bh8VlyxFsdElTROT6U0FyBMd.YP3XAgavun25yQ8k1vWEVrdSvd7HA4ocHB1TE44Tcp1emTWETTEfxS7snPE4bi4LAQsO8LH8n0f8B813.iIQpUKAxqJEnLvOH5y6HlY989xBYGcP4oc.G')
+    // }
+    var url = ''
+    if(typeof data == 'string'){
+      url = data
+    }
+    var arr = data.map(item=>{
+      return item[field]
+    })
+    url = arr[0]
+
+    console.log(url)
+    return url.replace('https://pss-system.cponline.cnipa.gov.cn','')
+    
+  },
+
   //查看图片1
   checkViewer(guid) {
     if(!guid){

+ 21 - 19
src/utils/constants.js

@@ -104,9 +104,9 @@ export default {
       DBType:['CN','WD','inner_CN','inner_WD'],
       children:[
         {label: '发明名称/标题', value: 'TI',DBType:['CN','WD','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入发明名称/标题,例:计算机 OR "computer and phone"'},
-        {label: '权利要求', value: 'CL',DBType:['CN'],type:'文本',dataType:1,placeholder:'请输入权利要求,例:加煤系统 OR "computer and phone"'},
-        {label: '权利要求', value: 'CL',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入权利要求,例:加煤系统 OR "computer and phone"'},
-        {label: '说明书', value: 'ins',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入说明书,例:加煤系统 OR "computer and phone"'},
+        {label: '权利要求', value: 'CL',DBType:['CN','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入权利要求,例:加煤系统 OR "computer and phone"'},
+        // {label: '权利要求', value: 'CL',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入权利要求,例:加煤系统 OR "computer and phone"'},
+        {label: '说明书', value: 'FT',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入说明书,例:加煤系统 OR "computer and phone"'},
         {label: '关键词', value: 'TX',DBType:['CN','WD','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入关键词,例:石墨烯 OR "computer and phone"'},
         {label: '摘要', value: 'AB',DBType:['CN','WD','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入摘要或简要说明,例:外喷放热气 OR "computer and phone"'},
       ]
@@ -121,7 +121,7 @@ export default {
         {label: '授权公告号', value: 'GN',DBType:['CN','inner_CN','inner_WD'],type:'号码',dataType:1,placeholder:'请输入授权公告号,例:CN102860161 OR CN1526554846'},
         {label: '公开号', value: 'PN',DBType:['CN','WD','inner_CN','inner_WD'],type:'号码',dataType:1,placeholder:'请输入公开号,例:CN102860161 OR CN1526554846'},
         { label: '原始公开号', value: 'PNO', DBType:['WD'],type: '号码', dataType: 1, placeholder: '请输入原始公开号,例:CN102860161 OR CN1526554846' },
-         {label: '优先权号', value: 'PR',DBType:['CN','WD','inner_CN','inner_WD'],type:'号码',dataType:1,placeholder:'请输入优先权号,例:DEP3833692.8'},
+         {label: '优先权号', value: 'PRN',DBType:['CN','WD','inner_CN','inner_WD'],type:'号码',dataType:1,placeholder:'请输入优先权号,例:DEP3833692.8'},
          {label: 'PCT申请号', value: 'PCTAN',DBType:['inner_CN','inner_WD'],type:'号码',dataType:1,placeholder:'请输入PCT申请号'},
       ]
     },
@@ -132,8 +132,8 @@ export default {
       DBType:['CN','inner_CN','inner_WD'],
       children:[
         {label: '专利类型',value: 'PT',DBType:['CN','inner_CN','inner_WD'],type:'数字',dataType:3},
-        {label: '法律状态', value: 'LG',DBType:['CN'],type:'数字',dataType:3},
-        {label: '法律状态', value: 'SS',DBType:['inner_CN','inner_WD'],type:'数字',dataType:3},
+        {label: '简单法律状态', value: 'LG',DBType:['CN','inner_CN','inner_WD'],type:'数字',dataType:3},
+        // {label: '法律状态', value: 'SS',DBType:['inner_CN','inner_WD'],type:'数字',dataType:3},
       ]
     },
     {
@@ -172,6 +172,8 @@ export default {
         {label: '授权公告日', value: 'GD',DBType:['CN','inner_CN','inner_WD'],type:'日期',dataType:1,placeholder:'请输入授权公告日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
         {label: '公开日', value: 'PD',DBType:['CN','WD','inner_CN','inner_WD'],type:'日期',dataType:1,placeholder:'请输入公开日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
         {label: '优先权日', value: 'PRD',DBType:['inner_CN','inner_WD'],type:'日期',dataType:1,placeholder:'请输入优先权日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
+        {label: 'pct申请日', value: 'PCTD',DBType:['inner_CN','inner_WD'],type:'日期',dataType:1,placeholder:'请输入pct申请日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
+        {label: 'pct进入日期', value: 'PCTENTRY_DATE',DBType:['inner_CN','inner_WD'],type:'日期',dataType:1,placeholder:'请输入pct进入日期,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
       ]
     },
     {
@@ -185,8 +187,8 @@ export default {
         {label: '第一申请人', value: 'FP',DBType:['CN','WD'],type:'文本',dataType:1,placeholder:'请输入第一申请人,例:钟丽红'},
         {label: '权利人', value: 'PE',DBType:['CN','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入权利人,例:钟丽红'},
         // {label: '代理机构代码', value: 'AG',type:1,dataType:1,placeholder:'请输入代理机构代码,例:11223'},
-        {label: '代理人', value: 'AT',DBType:['CN'],type:'文本',dataType:1,placeholder:'请输入代理人,例:张三'},
-        {label: '代理人', value: 'AG',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入代理人,例:张三'},
+        {label: '代理人', value: 'AT',DBType:['CN','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入代理人,例:张三'},
+        // {label: '代理人', value: 'AG',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入代理人,例:张三'},
         {label: '代理机构名称', value: 'AGN',DBType:['CN','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入代理机构名称,例:威士博'},
       ]
     },
@@ -199,9 +201,9 @@ export default {
         // {label: '国省代码', value: 'CO',type:3,dataType:1,placeholder:'请输入国省代码,例:94 OR CN'},
         // {label: '发明人国家', value: 'ICO',type:2,dataType:1,placeholder:'请输入发明人国家,例:94 OR CN'},
         // {label: '国家', value: 'GJ',type:3,dataType:3,placeholder:'请输入国家,例:CN'},
-        {label: '申请人地址', value: 'DZ',DBType:['CN'],type:'文本',dataType:1,placeholder:'请输入申请人地址,例:深圳市南山区'},
-        {label: '申请人地址', value: 'ADD',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入申请人地址,例:深圳市南山区'},
-        {label: '权利人地址', value: 'RDD',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入权利人地址,例:深圳市南山区'},
+        {label: '申请人地址', value: 'DZ',DBType:['CN','inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入申请人地址,例:深圳市南山区'},
+        // {label: '申请人地址', value: 'ADD',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入申请人地址,例:深圳市南山区'},
+        {label: '权利人地址', value: 'DR',DBType:['inner_CN','inner_WD'],type:'文本',dataType:1,placeholder:'请输入权利人地址,例:深圳市南山区'},
       ]
     },
     {
@@ -213,18 +215,18 @@ export default {
         // {label: '发明人国家', value: 'ICO',type:2,dataType:1,placeholder:'请输入发明人国家,例:94 OR CN'},
         {label: '受理局', value: 'GJ',DBType:['WD'],type:'文本',dataType:3,placeholder:'请输入国家,例:CN'},
         {label: '申请国家', value: 'CO',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入国家,例:CN'},
-        {label: '申请人国家', value: 'AAC',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人国家,例:CN',
+        {label: '申请人国家', value: 'PAC',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人国家,例:CN',
           after:[
-            {label: '申请人省', value: 'ADP',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人省'},
-            {label: '申请人市', value: 'ADC',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人市'},
-            {label: '申请人区县', value: 'ADD',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人区县'},
+            {label: '申请人省', value: 'PAP',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人省'},
+            {label: '申请人市', value: 'PAA',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人市'},
+            // {label: '申请人区县', value: 'ADD',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入申请人区县'},
           ]
         },
-        {label: '权利人国家', value: 'DZ',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人国家,例:CN',
+        {label: '权利人国家', value: 'PEC',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人国家,例:CN',
           after:[
-            {label: '权利人省', value: 'RDP',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人省'},
-            {label: '权利人市', value: 'RDC',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人市'},
-            {label: '权利人区县', value: 'RDD',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人区县'},
+            {label: '权利人省', value: 'PEP',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人省'},
+            {label: '权利人市', value: 'PEA',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人市'},
+            // {label: '权利人区县', value: 'RDD',DBType:['inner_CN','inner_WD'],type:'文本',dataType:3,placeholder:'请输入权利人区县'},
           ]
         },
       ],

+ 5 - 1
src/utils/model/index.js

@@ -29,6 +29,9 @@ import inventionPointDialog from '@/views/noveltySearch/components/dialog/invent
 import menuInRow from "./menuInRow"
 import menuInRowItem from "./menuInRow/menuInRowItem.vue"
 
+//专利附图展示
+import patentImage from "./patentImage/index.vue"
+
 var models = {
   myCustomSvg,
   myTree,
@@ -56,7 +59,8 @@ var models = {
   inventionPointDialog,
 
   menuInRow,
-  menuInRowItem
+  menuInRowItem,
+  patentImage
 }
 export default {
   install(Vue) {

+ 86 - 0
src/utils/model/patentImage/index.vue

@@ -0,0 +1,86 @@
+<template>
+    <div style="width:100%;height:100%" ref="patentImage">
+       <el-image v-if="showImage" fit="contain" :src="imageSrc" v-bind="$attrs" v-on='$listeners' style="width:100%;height:100%">
+            <div slot="error" class="image-slot">
+                <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
+            </div>
+        </el-image> 
+        <div v-else style="width:100%;height:100%" v-loading="true"></div>
+    </div>
+    
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {
+    patent:{
+        type:Object,
+        default:null
+    }
+  },
+  data() {
+    return {
+        showImage:true,
+        imageSrc:''
+    };
+  },
+  watch: {
+    patent(){
+        this.init()
+    },
+  },
+  computed: {},
+  created() {},
+  mounted() {
+    this.init()
+  },
+  methods: {
+    init(){
+        if(!this.patent || !this.patent.rowApplicationNo){
+            return
+        }
+        if(this.patent.patentAbsImage){
+            this.imageSrc = this.patent.patentAbsImage
+            return
+        }
+        var that = this
+        // 创建一个 Intersection Observer 实例
+        let observer = new IntersectionObserver((entries, observer) => {
+            entries.forEach(entry => {
+                if (entry.isIntersecting) {
+                    // 当元素进入视口时执行的逻辑
+                    that.getImageSrc()
+                    // 可以在这里执行懒加载、动画触发等操作
+                    observer.unobserve(entry.target); // 如果只需要触发一次,可以取消观察
+                }
+            });
+        }, {
+            root: null, // null 表示视口
+            rootMargin: '0px',
+            threshold: 0.3 // 当元素 10% 进入视口时触发
+        });
+
+        // 选择需要观察的元素
+        const elements = this.$refs.patentImage;
+        observer.observe(elements);
+    },
+    getImageSrc(){
+        this.showImage = false
+        var params = {
+          appNo: this.patent.rowApplicationNo,
+        }
+        this.$api.getPictureGuid(params).then(response => {
+          if (response.code == 200) {
+            this.$set(this.patent, 'patentAbsImage', response.data)
+            this.imageSrc = this.patent.patentAbsImage
+            this.showImage = true
+          }
+        })
+
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>'

+ 21 - 21
src/views/components/import/conditionImport/components/searchHelp/components/searchField.vue

@@ -56,19 +56,19 @@ export default {
         isClick:true,
         examples:{
             TI:'TI=汽车',
-            CL:'CL=汽车',
-            ins:'ins=汽车',
-            TX:'TX=(汽车 and 座椅)',
+            CL:'CL=汽车<br><div class="desc">外部专利检索检索主权利要求,内部专利检索检索权利要求全文</div>',
+            FT:'ins=汽车',
+            TX:'TX=(汽车 and 座椅)<br><div class="desc">支持申请号、公开号、公告号、发明人、申请人、权利人、标题、权利要求、说明书等相关内容检索</div>',
             AB:'AB=汽车',
             AN:'AN=CN202411470542.5',
             ANO:'ANO=CN202411470542.5',
             PNO:'PNO=CN119073855A',
+            GN:'GN=CN119073855A',
             PN:'PN=CN119073855A',
-            PR:'PR=JP2013270967',
+            PRN:'PRN=JP2013270967',
             PCTAN:'PCTAN=US2017/023191',
             PT:'PT=(1 OR 8)<br><div class="desc">1 OR 8: 发明专利,2 OR 9: 新型,3: 外观(注意:仅中国专利)</div>',
             LG:'LG=1<div class="desc">1: 有效,2: 失效,3: 审中(注意:仅中国专利);</div>',
-            SS:'SS=1<div class="desc">1: 有效,2: 失效,3: 审中(注意:仅中国专利);</div>',
             IC:'IC=A21B3/04',
             MC:'MC=汽车',
             IC1:'IC1=H',
@@ -80,33 +80,33 @@ export default {
             CT:'CT=32D',
             EC:'EC=32D',
             AD:'AD=20010101<br>AD=2001~2002',
-            GD:'GD=20010101<br>AD=2001~2002',
-            PD:'PD=20010101<br>AD=2001~2002',
-            PRD:'PRD=20010101<br>AD=2001~2002',
+            GD:'GD=20010101<br>GD=2001~2002',
+            PD:'PD=20010101<br>PD=2001~2002',
+            PCTD:'PCTD=20010101<br>PCTD=2001~2002',
+            PRD:'PRD=20010101<br>PRD=2001~2002',
+            PCTENTRY_DATE:'PCTENTRY_DATE=20010101<br>PCTENTRY_DATE=2001~2002',
             IN:'IN=李书福',
             FI:'FI=李书福',
             PA:'PA=清华大学',
             FP:'FP=清华大学',
             PE:'PE=李书福',
             AT:'AT=吴观乐',
-            AG:'AG=李书福',
             AGN:'AGN=柳沈',
             DZ:'DZ=北京',
-            ADD:'ADD=北京',
-            RDD:'RDD=北京',
+            // ADD:'ADD=北京',
+            // RDD:'RDD=北京',
             CO:'CO=CN',
             GJ:'GJ=CN',
             CO:'CO=CN',
-            AAC:'AAC=CN',
-            ADP:'ADP=江苏',
-            ADC:'ADC=苏州',
-            ADD:'ADD=昆山',
-            DZ:'DZ=CN',
-            RDP:'RDP=江苏',
-            RDC:'RDC=苏州',
-            RDD:'RDD=昆山',
-            CC:'CC=US6394621B1',
-            UCC:'UCC=US6394621B1',
+            PAC:'PAC=CN',
+            PAP:'PAP=江苏',
+            PAA:'PAA=苏州',
+            PEC:'PEC=CN',
+            PEP:'PEP=江苏',
+            PEA:'PEA=苏州',
+            DR:'DR=昆山',
+            CC:'CC=CN119225639A',
+            UCC:'UCC=CN119225639A',
         },
     };
   },

+ 2 - 2
src/views/components/import/conditionImport/components/searchHelp/components/searchGrammar.vue

@@ -83,7 +83,7 @@
                             +'在一个关键词中最多能用两个,且不能与其他通配符同时使用;<br>'
                             +'用在关键词中间或末尾时,可以用于所有文本和号码类型字段,且*前需要保留2个以上的字符;<br>'
                             +'不支持在引号中使用。',
-                        example:'*otor<br>electr*'
+                        example:'*车<br>天*'
                     },
                 ]
             },
@@ -96,7 +96,7 @@
                         value: '$PREn',
                         role:'两个限定位置顺序的关键词之间间隔不超过n个单词或汉字(0≤n≤99);<br>'
                             +'位置符的优先级高于逻辑运算符',
-                        example:'data $PRE2 line<br>AB=(太阳能 $PRE2 电池 $PRE2 硅)'
+                        example:'AB=(太阳能 $PRE2 电池 $PRE2 硅)'
                     },
                 ]
             },

+ 6 - 6
src/views/components/import/conditionImport/internal_search/searchResult_internal.vue

@@ -8,7 +8,7 @@
       <el-container>
         <el-header style="height:auto !important;padding:0 !important;">
           <div style="width:100%">
-            <div class="display_flex" style="margin-top: 0px;" v-if="condition.component != 'patentNoSearch'">
+            <div class="display_flex" style="margin-top: 0px;">
               <search :field="field" :searchResult="true" :searchValue="false" :countryList="queryParams.countryList"
                 @search="search"></search>
               <div class="display_flex" style="width:calc(100% - 550px);">
@@ -903,11 +903,11 @@ export default {
         var params = {
           appNo: item.rowApplicationNo,
         }
-        this.$api.getPictureGuid(params).then(response => {
-          if (response.code == 200) {
-            this.$set(item, 'pictureGuid', response.data)
-          }
-        })
+        // this.$api.getPictureGuid(params).then(response => {
+        //   if (response.code == 200) {
+        //     this.$set(item, 'pictureGuid', response.data)
+        //   }
+        // })
         this.$api.getLegalStatus(params).then(response => {
           if (response.code == 200) {
             this.$set(item, 'legalStatus', response.data)

+ 5 - 5
src/views/components/import/conditionImport/searchResult.vue

@@ -631,11 +631,11 @@ export default {
         var params = {
           appNo: item.rowApplicationNo,
         }
-        this.$api.getPictureGuid(params).then(response => {
-          if (response.code == 200) {
-            this.$set(item, 'pictureGuid', response.data)
-          }
-        })
+        // this.$api.getPictureGuid(params).then(response => {
+        //   if (response.code == 200) {
+        //     this.$set(item, 'pictureGuid', response.data)
+        //   }
+        // })
         this.$api.getLegalStatus(params).then(response => {
           if (response.code == 200) {
             this.$set(item, 'legalStatus', response.data)

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

@@ -316,6 +316,10 @@ export const handleData = {
             break
         }
         if(row.searchNo){
+          var fields = ['appNo','publicNo','grantNo']
+          if(fields.indexOf(key)==-1){
+            return this.getViewDom(text, type,key)
+          }
           let keyword = row.searchNo
           let sText = text
             let num = -1
@@ -355,7 +359,7 @@ export const handleData = {
 
       }
       const defaultKey = {
-        'TX':['title','patentNo','publicNo','appNo','applicant','inventor','rightHolder','claim','abstractStr'],
+        'TX':['title','publicNo','appNo','applicant','inventor','rightHolder','claim','abstractStr'],
       }
         var highlightData = []
       // 1. 获取栏位对应的属性并添加需要高亮的数据

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

@@ -39,15 +39,7 @@
             <!-- 左侧图片 -->
             <div>
               <div class="patent-abstract-image-container">
-                <el-image fit="contain" lazy 
-                  :src="outside?patent.pictureGuid:$commonJS.checkViewer(patent.pictureGuid)"
-                  :preview-src-list="[outside?patent.pictureGuid:$commonJS.checkViewer(patent.pictureGuid)]"
-                  style="width:100%;height:100%"
-                >
-                  <div slot="error" class="image-slot">
-                    <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
-                  </div>
-                </el-image>
+                <patentImage fit="contain" lazy :patent="patent" :preview-src-list="[patent.patentAbsImage]"></patentImage>
               </div>
               <div class="patent-abstract-pdf-button-container">
                 <el-button class="width_100" size="small"
@@ -343,7 +335,8 @@ export default {
           border-radius: 4px;
           width: 120px;
           height: 150px;
-          line-height: 150px;
+          padding: 10px;
+          // line-height: 150px;
           // img {
           //   width: 100%;
           //   height: 100%;

+ 3 - 22
src/views/project/patentCollection/components/views/Picture.vue

@@ -35,27 +35,8 @@
             <el-progress v-else style="display:inline-block;width:calc(100% - 50px);margin-left:10px;" :text-inside="true" :stroke-width="20"  :percentage="item.score"  :color="customColors" ></el-progress>
           </div>
         </div>
-        <div class="picture text-align_center" style="height: 200px;width:100%;line-height:200px;">
-          <el-image fit="contain" lazy :src="outside?item.pictureGuid:$commonJS.checkViewer(item.pictureGuid)"
-            :preview-src-list="[outside?item.pictureGuid:$commonJS.checkViewer(item.pictureGuid)]" style="margin:0 auto;vertical-align:middle;"
-            :style="{ width: item.imgWidth ? item.imgWidth : '100%', height: item.imgHeight ? item.imgHeight : '100%' }">
-            <div slot="error" class="image-slot">
-              <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
-            </div>
-          </el-image>
-          <!-- <el-image v-if="(!projectId && item.abstractPath2) || projectId"
-            :src="item.abstractPath2 ? item.abstractPath2 : getImagePath1(item)" :preview-src-list="[item.abstractPath2]"
-            style="margin:0 auto;vertical-align:middle;"
-            :style="{ width: item.imgWidth ? item.imgWidth : '100%', height: item.imgHeight ? item.imgHeight : '100%' }">
-            <div slot="error" class="image-slot">
-              <el-image :src="getErrorImage(item)" :preview-src-list="[getErrorImage(item)]">
-                <div slot="error" class="image-slot">
-                  <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
-                </div>
-              </el-image>
-            </div>
-          </el-image> -->
-
+        <div class="picture text-align_center" style="height: 200px;width:100%;">
+          <patentImage fit="contain" lazy :patent="item" :preview-src-list="[item.patentAbsImage]" style="margin:0 auto;vertical-align:middle;" ></patentImage>
         </div>
       </el-card>
       <!--      
@@ -133,7 +114,7 @@ export default {
   }
 
   .el-card__body {
-    padding: 0px !important
+    padding: 10px !important
   }
 }
 </style>

+ 4 - 3
src/views/project/patentCollection/components/views/Table.vue

@@ -31,13 +31,14 @@
                 <tr>
                   <td>
                     <div class="patent-abstract-image text-align_center">
-                      <el-image fit="contain" lazy :src="outside?scope.row.pictureGuid:$commonJS.checkViewer(scope.row.pictureGuid)" 
-                        :preview-src-list="[outside?scope.row.pictureGuid:$commonJS.checkViewer(scope.row.pictureGuid)]" style="vertical-align:middle;"
+                      <!-- <el-image fit="contain" lazy :src="outside?scope.row.pictureGuid:$commonJS.patentImage(scope.row.abstImgs)" 
+                        :preview-src-list="[outside?scope.row.pictureGuid:$commonJS.patentImage(scope.row.abstImgs)]" style="vertical-align:middle;"
                         >
                         <div slot="error" class="image-slot">
                           <img src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" style="">
                         </div>
-                      </el-image>
+                      </el-image> -->
+                      <patentImage fit="contain" lazy :patent="scope.row" :preview-src-list="[scope.row.patentAbsImage]"></patentImage>
                     </div>
                   </td>
                   <td>

+ 3 - 2
src/views/project/patentDetails/components/patentMessage/PatentBasic.vue

@@ -62,11 +62,12 @@
       <el-col :span="6">
          <el-card shadow="never" class="text-align_center " style="margin-top:50px;" data-type="附图">
           <div  class="picture">
-            <el-image  fit="contain" style="vertical-align:middle;" :src="outside?patent.pictureGuid:$commonJS.checkViewer(patent.pictureGuid)" :preview-src-list="[outside?patent.pictureGuid:$commonJS.checkViewer(patent.pictureGuid)]" >
+            <!-- <el-image  fit="contain" style="vertical-align:middle;" :src="outside?patent.pictureGuid:$commonJS.patentImage(patent.abstImgs)" :preview-src-list="[outside?patent.pictureGuid:$commonJS.patentImage(patent.abstImgs)]" >
               <div slot="error" class="image-slot">
                 <img @click="exportData('4')" src="https://www.patentstar.com.cn/img/Common/nopic.jpg" alt="" >
               </div>
-            </el-image>
+            </el-image> -->
+            <patentImage fit="contain" lazy :patent="patent" :preview-src-list="[patent.patentAbsImage]" style="vertical-align:middle;" ></patentImage>
           </div>
           
         </el-card>

+ 99 - 9
src/views/project/patentDetails/components/patentMessage/PatentImage.vue

@@ -4,18 +4,46 @@
       <div class="demonstration">图片大小:</div>
       <el-slider v-model="value" @change="changeWidth" :min="25" :max="100" style="padding-left:90px"></el-slider>
     </div>
-    <div class="imageCard">
-      <el-card class="preview" v-for="(item, index) in patent.image" :key="index" shadow="hover" :style="{ width: width }">
-        <!-- <div slot="header" class="card-header" v-if="projectId">
+    <div class="imageCard" v-if="patent.image">
+      <template v-if="patent.image.abstImgs && patent.image.abstImgs.length">
+        <el-card class="preview" v-for="(item, index) in patent.image.abstImgs" :key="'abs'+index" shadow="hover" :style="{ width: width }" >
+          <div class="text-align_center image_contain">
+            <div class="image_name">摘要附图</div>
+            <!-- <el-image fit="contain" :src="outside ? item : item.path" :preview-src-list="srcList"
+              style="width:250px;height:250px;"></el-image> -->
+              <patentImage fit="contain" lazy :patent="item" :preview-src-list="[item.patentAbsImage]"></patentImage>
+          </div>
+        </el-card>
+      </template>
+      <template v-if="patent.image.figures && patent.image.figures.length">
+        <el-card class="preview" v-for="(item, index) in patent.image.figures" :key="'figures'+index" shadow="hover" :style="{ width: width }">
+          <div class="text-align_center image_contain">
+            <div class="image_name" v-if="item.name">{{ item.name }}</div>
+            <el-image fit="contain" :src="outside ? item : item.path" :preview-src-list="srcList"
+              style="width:250px;height:250px;"></el-image>
+          </div>
+        </el-card>
+      </template>
+      <template v-if="patent.image.fulltextImgs && patent.image.fulltextImgs.length">
+        <el-card class="preview" v-for="(item, index) in patent.image.fulltextImgs" :key="'fulltextImgs'+index" shadow="hover" :style="{ width: width }">
+          <div class="text-align_center image_contain">
+            <div class="image_name" v-if="item.name">{{ item.name }}</div>
+            <el-image fit="contain" :src="outside ? item : item.path" :preview-src-list="srcList"
+              style="width:250px;height:250px;"></el-image>
+          </div>
+        </el-card>
+      </template>
+      <!-- <el-card class="preview" v-for="(item, index) in patent.image" :key="index" shadow="hover" :style="{ width: width }">
+        <div slot="header" class="card-header" v-if="projectId">
           <span></span>
           <el-button class="delete" type="text" @click="handleDelete(item)">删除</el-button>
           <el-button class="edit" type="text" @click="handleEdit(item)">编辑</el-button>
-        </div> -->
+        </div>
         <div class="text-align_center">
           <el-image fit="contain" :src="outside ? item : $commonJS.checkViewer(item)" :preview-src-list="srcList"
             style="width:250px;height:250px;"></el-image>
         </div>
-      </el-card>
+      </el-card> -->
     </div>
 
     <!-- <div type="primary" class="up" @click="handleAdd">上传图片</div> -->
@@ -83,7 +111,7 @@ export default {
   methods: {
     // 获得外部的附图
     getData() {
-      if(this.patent.image && this.patent.image.length>0){
+      if(this.patent.image){
         return false
       }
       var params = {
@@ -93,10 +121,22 @@ export default {
       this.$api.getExternalFigure(params).then(response => {
         if (response.code == 200) {
           if (response.data.length>0) {
-            this.$set(this.patent, 'image', response.data)
+            
+            var image = {
+              figures:[]
+            }
+            response.data.forEach(pic=>{
+              image.figures.push(
+                {
+                  path:pic,
+                  rowApplicationNo:this.patent.rowApplicationNo
+                }
+              )
+            })
+            this.$set(this.patent, 'image', image)
             this.$set(this, 'srcList', response.data)
           } else {
-            this.$set(this.patent, 'image', [])
+            this.$set(this.patent, 'image', null)
             this.$set(this, 'srcList', [])
           }
           this.loading = false
@@ -111,6 +151,37 @@ export default {
         return false
       }
       var params = {
+        patentNo:this.patent.patentNo
+      }
+      this.loading = true
+      this.$api.getPatentFigures(params).then(response => {
+        if (response.code == 200) {
+          if (response.data&& Object.keys(response.data).length>0) {
+            this.$set(this.patent, 'image', response.data)
+            let srcList = []
+            Object.keys(response.data).forEach(item=>{
+              if(response.data[item] && response.data[item].length){
+                response.data[item].forEach(pic=>{
+                  pic.rowApplicationNo = this.patent.rowApplicationNo
+                  srcList.push(pic.path)
+                })
+              }
+            })
+            // let srcList=response.data.map(item=>{
+            //   return this.$commonJS.checkViewer(item)
+            // })
+            this.$set(this, 'srcList', srcList)
+          } else {
+            this.$set(this.patent, 'image', null)
+            this.$set(this, 'srcList', [])
+          }
+          this.loading = false
+        }
+      }).catch(error=>{
+        this.loading = false
+      })
+      return
+      var params = {
         appNo: this.patent.appNo,
       }
       this.loading = true
@@ -211,7 +282,20 @@ export default {
   }
 }
 </script>
-
+<style lang="scss" scoped>
+  .image_contain{
+    position: relative;
+    width: 100%;
+    height: 100%;
+    .image_name{
+      position: absolute;
+      font-weight: bold;
+      top: -25px;
+      left: 0px;
+      z-index: 999;
+    }
+  }
+</style>
 <style lang="scss">
 .up {
   width: 70px;
@@ -270,6 +354,7 @@ export default {
   .preview {
     // height: 300px;
     margin-right: 20px;
+    margin-bottom: 20px;
     cursor: pointer;
     text-align: center;
 
@@ -281,6 +366,11 @@ export default {
       border-bottom: 1px solid #EBEEF5;
       font-weight: normal;
     }
+    .el-card__body{
+      height: 100%;
+      width: 100%;
+      padding: 30px 20px;
+    }
   }
 
   .el-image {

+ 19 - 45
src/views/project/patentDetails/components/patentMessage/PatentPDF.vue

@@ -8,12 +8,6 @@
       <div class="float_right" v-if="!outside">
         <el-button icon="el-icon-refresh" circle @click="exportData('5')"></el-button>
       </div>
-      <!-- <el-upload class="float_right" action="#" :auto-upload="false" :show-file-list="false" :on-change="handleChange"
-        :multiple="false">
-        <el-button type="success" size="small" :loading="btnLoading" v-if="projectId"
-          :disabled="!($permission('/workspace/details/updataInstruction') && $r(projectId, [1, 2]))">上传文档</el-button>
-        <div slot="tip" class="el-upload__tip"></div>
-      </el-upload> -->
     </div>
     <div style="height:calc(100% - 0px)" v-loading="loading">
       <myIframe v-if="show" :src="src" frameborder="0" :height="height" width="100%"></myIframe>
@@ -45,11 +39,12 @@ export default {
   watch: {
     patentNo() {
       this.pdfType = 1
-      if (this.outside) {
-        this.getData()
-      }else{
-        this.refreshData()
-      }
+      // if (this.outside) {
+      //   this.getData()
+      // }else{
+      //   this.refreshData()
+      // }
+      this.getData()
     }
   },
   created() {
@@ -57,11 +52,12 @@ export default {
   },
   mounted() {
     // outside为true是外部
-    if (this.outside) {//外部
-      this.getData()
-    } else {
-      this.refreshData()
-    }
+    // if (this.outside) {//外部
+    //   this.getData()
+    // } else {
+    //   this.refreshData()
+    // }
+    this.getData()
   },
   methods: {
     // 获取外部的pdf地址
@@ -105,12 +101,12 @@ export default {
         this.pdfType = this.patent.pdf[0].type
         guid = this.patent.pdf[0].pdfGuid
       }
-      if (this.outside) {
-        this.src = guid
-      }else{
-        this.src = this.$commonJS.checkGuid(guid)
-      }
-      
+      // if (this.outside) {
+      //   this.src = guid
+      // }else{
+      //   this.src = this.$commonJS.checkGuid(guid)
+      // }
+      this.src = guid
       this.$nextTick(() => {
         this.show = true
       })
@@ -121,29 +117,7 @@ export default {
       this.show = false
       this.getSrc()
     },
-    // 上传文档
-    // handleChange(file, fileList) {
-    //   if (file.name.split('.')[1].toLowerCase() !== 'pdf') {
-    //     this.$message.error('请选择PDF格式文件')
-    //     return false
-    //   }
-    //   let formData = new FormData()
-    //   formData.append('file', file.raw)
-    //   formData.append('type', this.pdfType)
-    //   formData.append('patentNo', this.patent.patentNo)
-    //   if (this.pdf) {
-    //     formData.append('url', this.pdf.url)
-    //   }
-    //   this.btnLoading = true
-    //   this.$api.editPatentInstruction(formData).then(response => {
-    //     this.$message.success('操作成功')
-    //     this.btnLoading = false
-    //     this.$emit('refreshData')
-    //     this.refreshData()
-    //   }).catch(error => {
-    //     this.btnLoading = false
-    //   })
-    // },
+    
     // 请求内部pdf的guid
     refreshData() {
       this.show = false