浏览代码

检索后高亮检索词

zhuliu 9 月之前
父节点
当前提交
6ab3b31bcb

+ 71 - 0
src/utils/common.js

@@ -139,6 +139,77 @@ treeToArray(data,prop={children:children}){
   },
 
   /**
+   * 从检索式中获取栏位和值
+   * @param {String} queryString 
+   * @returns {Array}
+   */
+  extractFieldsAndValues(queryString) {
+    let result = []
+    var obj = {
+        field:'',
+        value:[]
+    }
+    var sign = ['and','AND','OR','or','NOT','not']
+    var arr = queryString.split(/(\s+ and | AND | OR | or | NOT | not \s+)/g)
+    var regex = /\s/
+    var regex1 = /^["].*["]$|^['].*[']$|^[“].*[”]$|^[‘].*[’]$/
+    var values = []
+    for(var i = 0;i<arr.length;i++){
+    if(sign.includes(arr[i].trim())){
+        values.push(arr[i])
+        continue;
+    }
+    if(regex.test(arr[i])){
+        if(!regex1.test(arr[i])){
+            var str = `"${arr[i]}"`
+            values.push(str)
+        }
+        continue;
+    }
+     values.push(arr[i])
+    }
+    var StringRegex = /[()]/g
+    for (let i = 0; i < values.length; i++){
+        let item = values[i].trim()
+        if(regex1.test(item)){
+            if(!sign.includes(item)){
+                item = item.replace(StringRegex,'')
+                obj.value.push(item)
+            }
+        }else{
+            var index = item.indexOf('=')
+            if(index!=-1){
+                var field = item.substring(0,index)
+                var value = item.substring(index+1,item.length)
+                field = field.replace(StringRegex,'')
+                value = value.replace(StringRegex,'')
+                obj = {
+                    field:field,
+                    value:[value]
+                }
+                result.push(obj)
+            }else{
+                if(!sign.includes(item)){
+                    item = item.replace(StringRegex,'')
+                    obj.value.push(item)
+                }
+                
+            }
+        }
+    }
+    var resultObj = {}
+    for(var i = 0;i<result.length;i++){
+      var item = result[i]
+      if(resultObj[item.field]){
+        resultObj[item.field] = [...new Set(resultObj[item.field].concat(item.value))]
+      }else{
+        resultObj[item.field] = [...new Set(item.value)]
+      }
+    }
+    return resultObj
+  },
+
+  /**
    * 有空格添加引号
    * @param {String} val 
    * @returns 

+ 9 - 1
src/utils/constants.js

@@ -81,10 +81,18 @@ export default {
   ],
   /**
    * 检索栏位type为1表示中国仅有,2表示世界仅有,3表示两者都包含
-   * dataType为数据格式:1为字符串,2为日期,3为数组
+   * dataType为数据格式:1为字符串,2为日期,3为数组,5为专利数据库,6为报告
    */
   searchField:[
     {
+      label:'项目库',
+      value:'project',
+      DBType:['inner_CN','inner_WD'],
+      children:[
+        {label: '专利数据库', value: 'projectId',DBType:['inner_CN','inner_WD'],dataType:5,placeholder:'请选择专利数据库'},
+      ]
+    },
+    {
       label:'文本',
       value:'text',
       DBType:['CN','WD','inner_CN','inner_WD'],

+ 42 - 31
src/utils/model/search/search.vue

@@ -46,35 +46,38 @@
                         <!-- <el-col :span="9"> -->
                             <div style="width:100%;display: flex;justify-content: center;align-items: center;" >
                             <!-- <div style="" > -->
-                                <div v-if="list[i].dataType==2" style="display:flex;width:100%">
-                                    <el-date-picker
-                                        v-model="list[i].value[0]"
-                                        style="width:50%"
-                                        type="date"
-                                        size='small'
-                                        value-format="yyyyMMdd"
-                                        placeholder="开始,例:20000101">
-                                    </el-date-picker>
-                                    <el-date-picker
-                                        style="width:50%"
-                                        v-model="list[i].value[1]"
-                                        type="date"
-                                        size='small'
-                                        value-format="yyyyMMdd"
-                                        placeholder="结束,例:20001231">
-                                    </el-date-picker>
-                                </div>
-                                <div v-else-if="list[i].dataType==3" style="width:100%">
-                                    <el-select v-model="list[i].value" size="small" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
-                                        <el-option
-                                            v-for="item in constants[list[i].field]"
-                                            :key="item.value"
-                                            :label="item.label"
-                                            :value="item.value">
-                                        </el-option>
-                                    </el-select>
-                                </div>
-                                <div v-else style="width:100%"><el-input size='small' style="width:100%" v-model="list[i].value" :placeholder="list[i].placeholder"></el-input> </div>
+                                <slot :row="list[i]">
+                                    <div v-if="list[i].dataType==2" style="display:flex;width:100%">
+                                        <el-date-picker
+                                            v-model="list[i].value[0]"
+                                            style="width:50%"
+                                            type="date"
+                                            size='small'
+                                            value-format="yyyyMMdd"
+                                            placeholder="开始,例:20000101">
+                                        </el-date-picker>
+                                        <el-date-picker
+                                            style="width:50%"
+                                            v-model="list[i].value[1]"
+                                            type="date"
+                                            size='small'
+                                            value-format="yyyyMMdd"
+                                            placeholder="结束,例:20001231">
+                                        </el-date-picker>
+                                    </div>
+                                    <div v-else-if="list[i].dataType==3" style="width:100%">
+                                        <el-select v-model="list[i].value" size="small" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
+                                            <el-option
+                                                v-for="item in constants[list[i].field]"
+                                                :key="item.value"
+                                                :label="item.label"
+                                                :value="item.value">
+                                            </el-option>
+                                        </el-select>
+                                    </div>
+                                    <div v-else style="width:100%"><el-input size='small' style="width:100%" v-model="list[i].value" :placeholder="list[i].placeholder"></el-input> </div>
+                                </slot>
+                               
                               
                                 <template v-if="searchResult">
                                     <div style="display: flex;margin-left: 10px;">
@@ -164,7 +167,8 @@ export default {
                 },
                 {
                     label:'>',
-                    value:'>'
+                    value:'>',
+                    
                 },
                 {
                     label:'>=',
@@ -281,7 +285,14 @@ export default {
             list.dataType = a.dataType
             list.placeholder = a.placeholder
             if(list.dataType==2 || list.dataType==3){
-                this.$set(list,'value', [])
+                var type = list.dataType
+                this.$set(list,'value', '')
+                this.$set(list,'dataType',0)
+                this.$nextTick(()=>{
+                    this.$set(list,'value', [])
+                    this.$set(list,'dataType',type)
+                })
+                
             }else{
                 this.$set(list,'value', '')
             }

+ 16 - 1
src/views/components/import/conditionImport/FormSearch.vue

@@ -50,6 +50,18 @@
                                                         </el-option>
                                                     </el-select>
                                                 </div>
+                                                <!-- 专利数据库 -->
+                                                <div v-else-if="i.dataType==5" style="width:100%">
+                                                    <el-select v-model.number="form[i.value]" style="width:100%" filterable remote clearable placeholder="请选择" v-SelectLazyLoading="lazyLoading" :remote-method="remoteMethod" @focus="remoteMethod('')">
+                                                        <el-option
+                                                            v-for="item in projectQuery.data"
+                                                            :key="item.id"
+                                                            :label="item.name"
+                                                            :value="parseInt(item.id)"
+                                                        >
+                                                        </el-option>
+                                                    </el-select>
+                                                </div>
                                                 <div v-else style="width:100%"><el-input size='small' style="width:100%" v-model="form[i.value]" :placeholder="i.placeholder"></el-input> </div>
                                             </el-form-item>
                                         </el-col>
@@ -70,8 +82,10 @@
     </div>
 </template>
 <script>
+import mixins from './mixins'
 export default {
     name:'FormSearch',
+    mixins:[mixins],
     props:['countryList','DBType','selected','editData'],
     data() {
         return {
@@ -112,7 +126,8 @@ export default {
                 },
             ],
             checked:false,
-            countryList1:[]
+            countryList1:[],
+            
         }
     },
     watch:{

+ 22 - 2
src/views/components/import/conditionImport/customSearch.vue

@@ -23,7 +23,21 @@
         </el-aside>
         <el-main>
             <div>
-                <myFormSearch ref="myFormSearch" :list="(editData && editData.component == 'customSearch')?editData.data:list" :field="field" :searchValue="true" @search="search"></myFormSearch>
+                <myFormSearch ref="myFormSearch" :list="(editData && editData.component == 'customSearch')?editData.data:list" :field="field" :searchValue="true" @search="search">
+                  <template v-slot:default="scope">
+                    <div v-if="scope.row.field == 'projectId'" style="width:100%">
+                      <el-select v-model.number="scope.row.value" style="width:100%" size="small" filterable remote clearable placeholder="请选择" v-SelectLazyLoading="lazyLoading" :remote-method="remoteMethod" @focus="remoteMethod('')">
+                        <el-option
+                            v-for="item in projectQuery.data"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="parseInt(item.id)"
+                        >
+                        </el-option>
+                      </el-select>
+                    </div>
+                  </template>
+                </myFormSearch>
             </div>
         </el-main>
     </el-container>
@@ -32,11 +46,12 @@
 
 <script>
 import { getTableHeight } from '@/views/components/mixins'
+import mixins from './mixins'
 export default {
   name:'customSearch',
   components: {
   },
-  mixins: [ getTableHeight],
+  mixins: [ getTableHeight,mixins],
   props: ['countryList','DBType','selected','editData'],
   data() {
     return {
@@ -114,6 +129,11 @@ export default {
         var children = item.children.filter(child=>{
           return child.value!='GJ' && child.DBType.indexOf(this.DBType)!=-1
         })
+        if(this.DBType != 'CN' && this.DBType != 'WD'){
+          if(item.otherField && item.otherField.length>0){
+            children.push(...item.otherField)
+          }
+        }
         if(children && children.length>0){
           fields.push(
             {

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

@@ -1,9 +1,9 @@
 <template>
-  <div style="background: white; height: 100%">
-
+  
+  <div style="background: white; height: 100%" >
     <el-container>
       <el-aside width="300px">
-        <filter_search :searchOption="condition.searchCondition" :customFields="customFields"></filter_search>
+        <filter_search :searchOption="condition.searchCondition" :customFields="customFields" :projectId="conditionObj.projectId?conditionObj.projectId[0]:undefined"></filter_search>
       </el-aside>
       <el-container>
         <el-header style="height:auto !important;padding:0 !important;">
@@ -13,15 +13,7 @@
                 @search="search"></search>
               <p><el-link style="width: 50px;color: #409EFF;" @click="searches">检索式</el-link></p>
             </div>
-            <!-- <menuInRow :data="functionBtnList" @click="clickFun">
-              <template v-slot:menuItem="scope">
-                <span >{{ scope.row }}</span>
-              </template>
-            </menuInRow> -->
             <menuInRow>
-              <!-- <menu-in-row-item v-for="item in functionBtnList" :key="item" :name='item' >
-                <span style="color:black;">{{item}}</span>
-              </menu-in-row-item> -->
               <menu-in-row-item v-for="item in viewList" :key="item.value" :name="item.value" @click="handleChangeView(item)">
                 <div>
                   <svg-icon :icon-class="item.svg"></svg-icon>
@@ -73,7 +65,7 @@
           <div class="height_100">
             <component ref="patentViewList" :is="viewSelected" :semanteme="semanteme" :outside="outside" :retrieveRecordId="retrieveRecordId"  :noveltySearch="noveltySearch" :column="columnList" :tableData="tableData"  @clickPatentNo="handleClick" :canSort="condition.component != 'patentNoSearch'?true:false"
               @select-change="handleSelect" :selected.sync="queryParams.selected" :queryParams="queryParams" :patentNoList.sync="patentNoList" :refresh='true'
-              :view-field="patentViewField" @on-sort="handleSort" @addSelect="getChoosePatentNo" :projectId="projectId" :contrastFileList="saveRemarkList" @saveRemark="saveRemark"></component>
+              :view-field="patentViewField" @on-sort="handleSort" @addSelect="getChoosePatentNo" :projectId="projectId" :contrastFileList="saveRemarkList" @saveRemark="saveRemark" :conditionObj="conditionObj"></component>
           </div>
         </el-main>
         <el-footer class="workspace-content-patent-page foot-total">
@@ -168,8 +160,6 @@ export default {
   },
   data() {
     return {
-      functionBtnList:['fangisoio','dshuidshiu','djfciod','dsjfoisd','对是非a常不丢尽快','那对a方会打死哦您尽快','汗牛充a栋索尼大法','怒i几次x都会死UCv放大','对是非常不丢尽快','那对方会打死哦您尽快','汗牛充栋索尼大法','怒i几次都会死UCv放大'],
-      
       columnList: [],
       pageSizes: [10, 20, 30, 40, 50],
       viewSelected: "patent-abstract-list-view",
@@ -222,6 +212,7 @@ export default {
       visible: false,
       // 检索式及其他信息
       condition: this.searchData,
+      conditionObj:{},
       saveRemarkList:[],
       customFields:[],
     };
@@ -247,11 +238,21 @@ export default {
     if(this.noveltySearch){
       this.queryComparePatent()
     }
+    //解析检索式
+    this.analyzingCondition()
+    //获取专利清单
     await this.getList();
     
 
   },
   methods: {
+    //解析检索式
+    analyzingCondition(){
+      if(this.condition && this.condition.searchCondition){
+        var conditionObj = this.$commonJS.extractFieldsAndValues(this.condition.searchCondition)
+        this.conditionObj = conditionObj
+      }
+    },
     clickFun(item){
       console.log(item)
     },

+ 65 - 0
src/views/components/import/conditionImport/mixins.js

@@ -0,0 +1,65 @@
+
+
+export default{
+    data() {
+        return {
+            projectQuery:{
+                queryParams:{
+                    current:1,
+                    size:10
+                },
+                loading:false,
+                data:[]
+            },
+        }
+    },
+    methods:{
+        //懒加载事件
+        lazyLoading(){
+            var obj = this.projectQuery
+            if(obj.queryParams.current * obj.queryParams.size>=obj.queryParams.total){
+                return false
+            }
+            obj.queryParams.current += 1
+            this.getProject()
+        },
+        //远程搜索
+        remoteMethod(query){
+            var obj = this.projectQuery
+            obj.data=[]
+            obj.queryParams.current = 1
+            obj.name = query.trim()
+            this.getProject()
+        },
+        //获取专题库数据
+        async getProject(){
+            var obj = this.projectQuery
+            obj.loading = true;
+            var str = ''
+            if(obj.name){
+                str+=`name=${obj.name}`
+            }
+            if(obj.id){
+                str+=`id=${obj.id}`
+            }
+            let params = {
+                ...obj.queryParams,//分页信息
+                searchQuery:str,//检索条件
+                orderDTOList: [
+                {
+                    orderBy: "createTime",
+                    orderType: 1
+                },
+                ]//排序
+            }
+            await this.$api.queryPatentProject(params).then(response => {
+                if(response.code == 200){
+                    obj.loading = false;
+                    obj.data.push(...response.data.data)
+                    obj.id = null
+                    obj.queryParams.total = response.data.total
+                }
+            })
+        },
+    }
+}

+ 3 - 0
src/views/components/import/conditionImport/search.vue

@@ -147,6 +147,9 @@ export default {
                 }
                 this.remoteMethod('')
             }
+        },
+        defaultSearchDB(val){
+            this.DBType=this.defaultSearchDB[0]
         }
     },
     methods: {

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

@@ -24,7 +24,7 @@ export default {
         return JSON.parse(this.$route.query.data)
     },
     noveltySearch(){
-      return this.$route.query.noveltySearch
+      return this.$route.query.noveltySearch=='false'?false:true
     },
     projectId(){
       return this.$route.query.projectId
@@ -45,7 +45,7 @@ export default {
   methods: {},
   created() {},
   mounted() {
-    
+
   }
 };
 </script>

+ 43 - 53
src/views/project/patentCollection/components/mixins/index.js

@@ -56,7 +56,13 @@ export const projectData = {
         return []
       }
     },
-    semanteme:''
+    semanteme:'',
+    conditionObj:{
+      type:Object,
+      default:()=>{
+        return {}
+      }
+    }
   },
 
   data() {
@@ -242,7 +248,7 @@ export const handleData = {
            this.getTranslateByTIAndAb(row,key) 
         }
       }
-      return this.getViewDom(text,type)
+      return this.getViewDom(text,type,key)
     },
     getPersonNames({row,key,join}){
       if(!row[key]){
@@ -327,61 +333,14 @@ export const handleData = {
         }
         // var text = this.$commonJS.getColumnData(row, obj, prop, data)
         // console.log(text,key);
-        return this.getViewDom(text, type)
+        return this.getViewDom(text, type,key)
       }
     },
-    getViewDom(text, field,) {
+    getViewDom(text, field,key) {
       if (!text) {
         return ""
       }
       var obj = null
-      // switch (field) {
-        // case '权利要求原文':
-        //   obj = text.find(item => {
-        //     return item.if_origin
-        //   })
-        //   if(obj){
-        //     var currentText = obj.text_content
-        //     text = currentText.replace(/(\t)+/g,'<br/>')
-        //   }else{
-        //     text = ''
-        //   }
-        //   break;
-        // case '权利要求译文':
-        //   obj = text.find(item => {
-        //     return item.if_origin == false
-        //   })
-        //   if(obj){
-        //     var currentText = obj.text_content
-        //     text = currentText.replace(/(\t)+/g,'<br/>')
-        //   }else{
-        //     text = ''
-        //   }
-        //   break;
-        // case '说明书文本原文':
-        //   obj = text.find(item => {
-        //     return item.if_origin
-        //   })
-        //   if(obj){
-        //     text = obj.text_content.replace(/(\r\n)+/g,'<br/>').replace(/(\t)+/g,'<br/>')
-        //   }else {
-        //     text = ''
-        //   }
-        //   break;
-        // case '说明书文本译文':
-        //   obj = text.find(item => {
-        //     return item.if_origin == false
-        //   })
-        //   if(obj){
-        //     text = obj.text_content.replace(/(\r\n){1}/g,'<br/>').replace(/(\t)+/g,'<br/>')
-        //   }else {
-        //     text = ''
-        //   }
-        //   break;
-
-      //   default:
-      //     break;
-      // }
       if (!text) {
         return ""
       }
@@ -395,11 +354,42 @@ export const handleData = {
         });
 
       }
+      const defaultKey = {
+        'TX':['title','patentNo','publicNo','appNo','applicant','inventor','rightHolder','claim','abstractStr'],
+      }
+        var highlightData = []
+      // 1. 获取栏位对应的属性并添加需要高亮的数据
+      var fieldObj = this.column.find(item=>{
+        return item.value == key
+      })
+      if(fieldObj){
+        var currentField = fieldObj.field
+        if(this.conditionObj[currentField]){
+          highlightData.push(...this.conditionObj[currentField])
+        }
+      }
+      if(this.conditionObj.TX){
+        if(defaultKey.TX.indexOf(key)!=-1){
+          highlightData = [...new Set(highlightData.concat(this.conditionObj.TX))]
+        }
+      }
+      highlightData = highlightData.map(item=>{
+        return {
+          color:'darkcyan',
+          keywords:item
+        }
+      })
+
       if (!this.highlight.patentHightLight.ifEnable || !text) {
-        return text
+        // return text
+      }else{
+        highlightData.push(...this.highlight.patentHightLight.configs)
       }
       try {
-        this.highlight.patentHightLight.configs.map(item => {
+        if(!highlightData || highlightData.length==0){
+          return text
+        }
+        highlightData.map(item => {
           const keywords = item.keywords.split(/;|;/)
           for (let keyword of keywords) {
             if (!keyword) {

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

@@ -109,7 +109,7 @@
                     <div class="patent-abstract">
                       <span class="patent-abstract_label">权利人:</span>
                       <myTooltip :content="getPersonNames({row:patent,key:'rightHolder',join:';'})" effect="light">
-                        <span class="patent-abstract_text color_link noWrap" v-html="getViewDom(getPersonNames({row:patent,key:'rightHolder',join:';'}))">
+                        <span class="patent-abstract_text color_link noWrap" v-html="getViewDom(getPersonNames({row:patent,key:'rightHolder',join:';'}),null,'rightHolder')">
                         </span>
                       </myTooltip>
                     </div>
@@ -118,7 +118,7 @@
                     <div class="patent-abstract">
                       <span class="patent-abstract_label">申请人:</span>
                       <myTooltip :content="getPersonNames({row:patent,key:'applicant',join:';'})" effect="light">
-                        <span class="patent-abstract_text color_link noWrap" v-html="getViewDom(getPersonNames({row:patent,key:'applicant',join:';'}))">
+                        <span class="patent-abstract_text color_link noWrap" v-html="getViewDom(getPersonNames({row:patent,key:'applicant',join:';'}),null,'applicant')">
                         </span>
                       </myTooltip>
                     </div>
@@ -127,7 +127,7 @@
                       <div class="patent-abstract">
                         <span class="patent-abstract_label" style="min-width:fit-content">发明人:</span>
                         <myTooltip :content="getPersonNames({row:patent,key:'inventor',join:';'})" effect="light">
-                          <span class="patent-abstract_text color_link noWrap" v-html="getViewDom(getPersonNames({row:patent,key:'inventor',join:';'}))">
+                          <span class="patent-abstract_text color_link noWrap" v-html="getViewDom(getPersonNames({row:patent,key:'inventor',join:';'}),null,'inventor')">
                           </span>
                         </myTooltip>
                       </div>

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

@@ -16,7 +16,7 @@
             </div>
             <div>
               <div>
-                <span v-html="getViewDom(patent.patentNo)"></span>
+                <span v-html="getViewDom(patent.patentNo,null,'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" style="cursor: pointer;" type="primary" effect="plain" size="small" v-if="noveltySearch && !noveltyIsRemark(patent)" @click="openAddRemark(patent)">添加查新标注</el-tag>

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

@@ -79,13 +79,13 @@
             <el-tabs value="0">
               <el-tab-pane label="著录项目" name="0">
                 <el-descriptions :column=2>
-                  <el-descriptions-item label="申请号"><div class="patent-basic-value"  v-html="getViewDom(patent.appNo,'申请号')"></div></el-descriptions-item>
-                  <el-descriptions-item label="申请日"><div class="patent-basic-value"  v-html="getViewDom(patent.appDate,'申请日')"></div></el-descriptions-item>
-                  <el-descriptions-item label="公开号" v-if="patent.publicNo"><div class="patent-basic-value" v-html="getViewDom(patent.publicNo,'公开号')"></div></el-descriptions-item>
-                  <el-descriptions-item label="公开日" v-if="patent.publicDate"><div class="patent-basic-value"  v-html="getViewDom(patent.publicDate,'公开日')"></div></el-descriptions-item>
-                  <el-descriptions-item label="授权号" v-if="patent.grantNo"><div class="patent-basic-value"  v-html="getViewDom(patent.grantNo,'授权号')"></div></el-descriptions-item>
-                  <el-descriptions-item label="授权日" v-if="patent.grantDate"><div class="patent-basic-value"  v-html="getViewDom(patent.grantDate,'授权日')"></div></el-descriptions-item>
-                  <el-descriptions-item label="优先权" v-if="patent.priorityNo"><div class="patent-basic-value"  v-html="getViewDom(patent.priorityNo,'优先权')+ '&nbsp;&nbsp;&nbsp;&nbsp;' +getViewDom(patent.priorityDate)"></div></el-descriptions-item>
+                  <el-descriptions-item label="申请号"><div class="patent-basic-value"  v-html="getViewDom(patent.appNo,'申请号','appNo')"></div></el-descriptions-item>
+                  <el-descriptions-item label="申请日"><div class="patent-basic-value"  v-html="getViewDom(patent.appDate,'申请日','appDate')"></div></el-descriptions-item>
+                  <el-descriptions-item label="公开号" v-if="patent.publicNo"><div class="patent-basic-value" v-html="getViewDom(patent.publicNo,'公开号','publicNo')"></div></el-descriptions-item>
+                  <el-descriptions-item label="公开日" v-if="patent.publicDate"><div class="patent-basic-value"  v-html="getViewDom(patent.publicDate,'公开日','publicDate')"></div></el-descriptions-item>
+                  <el-descriptions-item label="授权号" v-if="patent.grantNo"><div class="patent-basic-value"  v-html="getViewDom(patent.grantNo,'授权号','grantNo')"></div></el-descriptions-item>
+                  <el-descriptions-item label="授权日" v-if="patent.grantDate"><div class="patent-basic-value"  v-html="getViewDom(patent.grantDate,'授权日','grantDate')"></div></el-descriptions-item>
+                  <el-descriptions-item label="优先权" v-if="patent.priorityNo"><div class="patent-basic-value"  v-html="getViewDom(patent.priorityNo,'优先权','priorityNo')+ '&nbsp;&nbsp;&nbsp;&nbsp;' +getViewDom(patent.priorityDate,'优先权日','priorityDate')"></div></el-descriptions-item>
                 </el-descriptions>
               </el-tab-pane>
             </el-tabs>
@@ -103,34 +103,34 @@
                   <el-descriptions-item label="申请人" labelStyle="width:90px" v-if="patent.applicant" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
                    <div class="patent-basic-value" v-for="(item,index) in patent.applicant" :key="index">
                     <div class="margin-right_10">
-                      <span v-html="getViewDom(item,'申请人')"></span>
-                      <span v-if="item.shortName" v-html="'(标:'+getViewDom(item.shortName,'申请人')+')'"></span>
+                      <span v-html="getViewDom(item,'申请人','applicant')"></span>
+                      <span v-if="item.shortName" v-html="'(标:'+getViewDom(item.shortName,'申请人','standerApplicant')+')'"></span>
                     </div>
                    </div>
                 </el-descriptions-item>
                 <el-descriptions-item label="申请人地址" labelStyle="width:90px" v-if="patent.applicant">
-                   <div class="patent-basic-value" v-if="patent.applicantAddr" v-html="getViewDom(patent.applicantAddr.address,'申请人地址')"></div>
+                   <div class="patent-basic-value" v-if="patent.applicantAddr" v-html="getViewDom(patent.applicantAddr.address,'申请人地址','appAddress')"></div>
                 </el-descriptions-item>
                <el-descriptions-item label="权利人" labelStyle="width:90px" v-if="patent.rightHolder" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
                  <div class="patent-basic-value" v-for="(item,index) in patent.rightHolder" :key="index">
                   <div class="margin-right_10">
-                    <span v-html="getViewDom(item,'权利人')"></span>
-                    <span v-if="item.shortName" v-html="'(标:'+getViewDom(item.shortName,'权利人')+')'"></span>
+                    <span v-html="getViewDom(item,'权利人','rightHolder')"></span>
+                    <span v-if="item.shortName" v-html="'(标:'+getViewDom(item.shortName,'权利人','standerRightHolder')+')'"></span>
                   </div>
                  </div>
                </el-descriptions-item>
                 <el-descriptions-item label="权利人地址" labelStyle="width:90px" v-if="patent.rightHolderAddr">
-                  <div class="patent-basic-value"  v-if="patent.rightHolderAddr"  v-html="getViewDom(patent.rightHolderAddr.address,'权利人地址')"></div>
+                  <div class="patent-basic-value"  v-if="patent.rightHolderAddr"  v-html="getViewDom(patent.rightHolderAddr.address,'权利人地址','rightAddress')"></div>
                 </el-descriptions-item>
                
                 <el-descriptions-item label="发明人" labelStyle="width:90px" v-if="patent.inventor && patent.inventor.length>0" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
-                  <div class="patent-basic-value margin-right_10" v-for="item in patent.inventor" :key="item" v-html="getViewDom(item,'发明人')" ></div>
+                  <div class="patent-basic-value margin-right_10" v-for="item in patent.inventor" :key="item" v-html="getViewDom(item,'发明人','inventor')" ></div>
                 </el-descriptions-item>
                 <el-descriptions-item label="代理人" labelStyle="width:90px" v-if="patent.agent && patent.agent.length>0">
-                  <div class="patent-basic-value margin-right_10" v-for="item in patent.agent" :key="item"  v-html="getViewDom(item,'代理人')"></div>
+                  <div class="patent-basic-value margin-right_10" v-for="item in patent.agent" :key="item"  v-html="getViewDom(item,'代理人','agent')"></div>
                 </el-descriptions-item>
                 <el-descriptions-item label="代理机构" labelStyle="width:90px" v-if="patent.agency">
-                   <div v-if="patent.agency" class="patent-basic-value"  v-html="getViewDom(patent.agency,'代理机构')"></div>
+                   <div v-if="patent.agency" class="patent-basic-value"  v-html="getViewDom(patent.agency,'代理机构','agency')"></div>
                 </el-descriptions-item>
             </el-descriptions>
               </el-tab-pane>
@@ -150,10 +150,10 @@
                 <el-descriptions :column=1>
                 <el-descriptions-item label="分类号" contentStyle="display:flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;">
                   <template v-if="patent.patentType == 3 &&  patent.patentNo.substring(0,2) == 'CN'" >
-                    <div class="patent-basic-value margin-right_10" v-for="(item,index) in patent.loc" :key="index" v-html="getViewDom(getIPCContent({data:item}),'分类号')"></div>
+                    <div class="patent-basic-value margin-right_10" v-for="(item,index) in patent.loc" :key="index" v-html="getViewDom(getIPCContent({data:item}),'分类号','loc')"></div>
                   </template>
                   <template v-else>
-                    <div class="patent-basic-value margin-right_10" v-for="(item,index) in patent.ipc" :key="index" v-html="getViewDom(getIPCContent({data:item}),'分类号')"></div>
+                    <div class="patent-basic-value margin-right_10" v-for="(item,index) in patent.ipc" :key="index" v-html="getViewDom(getIPCContent({data:item}),'分类号','ipc')"></div>
                   </template>
                   
                 </el-descriptions-item>

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

@@ -16,12 +16,12 @@
       <el-main style="overflow: auto;" ref="content">
         <div class="height_100" v-loading="loading"  :style="setStyle()" >
           <template v-if="name != 2">
-            <div  class="height_100" v-html="getContentOrContentOut(this.patent.pdfTranslate, tabItem.field,name == 2?'说明书原文':'说明书'+tabItem.label)" :data-type="name == 2?'说明书原文':'说明书'+tabItem.label" ></div>
+            <div  class="height_100" v-html="getContentOrContentOut(this.patent.pdfTranslate, tabItem.field,name == 2?'说明书原文':'说明书'+tabItem.label,'instruction')" :data-type="name == 2?'说明书原文':'说明书'+tabItem.label" ></div>
           </template>
           <template v-else>
             <div class="height_100 claim">
-              <div v-equal_heights="'yiwen'" class="height_100" v-html="getContentOrContentOut(this.patent.pdfTranslate,  tabItem.field,name == 2?'说明书原文':'说明书'+tabItem.label)" :data-type="name == 2?'说明书原文':'说明书'+tabItem.label" ref="yuanwen"></div>
-              <div class="height_100" v-html="getContentOrContentOut(this.patent.pdfTranslate,  'contentOut','说明书译文')" :data-type="'说明书译文'" ref="yiwen"></div> 
+              <div v-equal_heights="'yiwen'" class="height_100" v-html="getContentOrContentOut(this.patent.pdfTranslate,  tabItem.field,name == 2?'说明书原文':'说明书'+tabItem.label,'instruction')" :data-type="name == 2?'说明书原文':'说明书'+tabItem.label" ref="yuanwen"></div>
+              <div class="height_100" v-html="getContentOrContentOut(this.patent.pdfTranslate,  'contentOut','说明书译文','instruction')" :data-type="'说明书译文'" ref="yiwen"></div> 
             </div>
             
           </template>

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

@@ -19,12 +19,12 @@
       <el-main style="overflow: auto;" ref="content">
         <div class="height_100" v-loading="loading" v-if="!checkedRightTree"  :style="setStyle()" >
           <template v-if="name != 2">
-            <div  class="height_100" v-html="getContentOrContentOut(this.patent.claimTranslate, tabItem.field,name == 2?'权利要求原文':'权利要求'+tabItem.label)" :data-type="name == 2?'权利要求原文':'权利要求'+tabItem.label" ></div>
+            <div  class="height_100" v-html="getContentOrContentOut(this.patent.claimTranslate, tabItem.field,name == 2?'权利要求原文':'权利要求'+tabItem.label,'claim')" :data-type="name == 2?'权利要求原文':'权利要求'+tabItem.label" ></div>
           </template>
           <template v-else>
             <div class="height_100 claim">
-              <div v-equal_heights="'yiwen'" class="height_100" v-html="getContentOrContentOut(this.patent.claimTranslate,  tabItem.field,name == 2?'权利要求原文':'权利要求'+tabItem.label)" :data-type="name == 2?'权利要求原文':'权利要求'+tabItem.label" ref="yuanwen"></div>
-              <div class="height_100" v-html="getContentOrContentOut(this.patent.claimTranslate,  'contentOut','权利要求译文')" :data-type="'权利要求译文'" ref="yiwen"></div> 
+              <div v-equal_heights="'yiwen'" class="height_100" v-html="getContentOrContentOut(this.patent.claimTranslate,  tabItem.field,name == 2?'权利要求原文':'权利要求'+tabItem.label,'claim')" :data-type="name == 2?'权利要求原文':'权利要求'+tabItem.label" ref="yuanwen"></div>
+              <div class="height_100" v-html="getContentOrContentOut(this.patent.claimTranslate,  'contentOut','权利要求译文','claim')" :data-type="'权利要求译文'" ref="yiwen"></div> 
             </div>
             
           </template>

+ 4 - 4
src/views/project/patentDetails/components/patentMessage/mixins/translate.js

@@ -146,16 +146,16 @@ export const translate = {
             }
           },
           //获取内容
-          getContentOrContentOut(data,field,type){
+          getContentOrContentOut(data,field,type,key){
             if(data){
                 if(data[field]){
-                    return this.getViewDom(data[field],type)
+                    return this.getViewDom(data[field],type,key)
                 }else{
                     if(field == 'content'){
                         var {text,sign} = this.dataToDom(data.data,field)
                         if(sign){
                             this.$set(data,'content',text)
-                            return this.getViewDom(text,type)  
+                            return this.getViewDom(text,type,key)  
                         }
                         return text
                     }
@@ -169,7 +169,7 @@ export const translate = {
                             var {text,sign} = this.dataToDom(data.data,field)
                             if(sign){
                                 this.$set(data,'contentOut',text)
-                                return this.getViewDom(text,type)  
+                                return this.getViewDom(text,type,key)  
                             }
                             return text
                         }