zhuliu 9 mesi fa
parent
commit
ee7f1204fc

+ 40 - 31
src/utils/constants.js

@@ -87,95 +87,104 @@ export default {
     {
       label:'文本',
       value:'text',
+      DBType:['CN','WD'],
       children:[
-        {label: '发明名称/标题', value: 'TI',type:3,dataType:1,placeholder:'请输入发明名称/标题,例:计算机 OR "computer and phone"'},
-        {label: '主权利要求', value: 'CL',type:1,dataType:1,placeholder:'请输入主权利要求,例:加煤系统 OR "computer and phone"'},
-        {label: '关键词', value: 'TX',type:3,dataType:1,placeholder:'请输入关键词,例:石墨烯 OR "computer and phone"'},
-        {label: '摘要', value: 'AB',type:3,dataType:1,placeholder:'请输入摘要或简要说明,例:外喷放热气 OR "computer and phone"'},
+        {label: '发明名称/标题', value: 'TI',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入发明名称/标题,例:计算机 OR "computer and phone"'},
+        {label: '主权利要求', value: 'CL',DBType:['CN'],type:1,dataType:1,placeholder:'请输入主权利要求,例:加煤系统 OR "computer and phone"'},
+        {label: '关键词', value: 'TX',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入关键词,例:石墨烯 OR "computer and phone"'},
+        {label: '摘要', value: 'AB',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入摘要或简要说明,例:外喷放热气 OR "computer and phone"'},
       ]
     },
     {
       label:'号码',
       value:'number',
+      DBType:['CN','WD'],
       children:[
-        {label: '申请号', value: 'AN',type:3,dataType:1,placeholder:'请输入申请号,例:CN202330275114.7 OR CN202330275114.7'},
-        {label: '原始申请号', value: 'ANO',type:3,dataType:1,placeholder:'请输入原始申请号,例:CN202330275109.6 OR CN202330275109.6'},
-        {label: '授权公告号', value: 'GN',type:1,dataType:1,placeholder:'请输入授权公告号,例:CN102860161 OR CN1526554846'},
-        {label: '公开号', value: 'PN',type:3,dataType:1,placeholder:'请输入公开号,例:CN102860161 OR CN1526554846'},
-        { label: '原始公开号', value: 'PNO', type: 2, dataType: 1, placeholder: '请输入原始公开号,例:CN102860161 OR CN1526554846' },
-         {label: '优先权号', value: 'PR',type:3,dataType:1,placeholder:'请输入优先权号,例:DEP3833692.8'},
+        {label: '申请号', value: 'AN',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入申请号,例:CN202330275114.7 OR CN202330275114.7'},
+        {label: '原始申请号', value: 'ANO',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入原始申请号,例:CN202330275109.6 OR CN202330275109.6'},
+        {label: '授权公告号', value: 'GN',DBType:['CN'],type:1,dataType:1,placeholder:'请输入授权公告号,例:CN102860161 OR CN1526554846'},
+        {label: '公开号', value: 'PN',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入公开号,例:CN102860161 OR CN1526554846'},
+        { label: '原始公开号', value: 'PNO', DBType:['WD'],type: 2, dataType: 1, placeholder: '请输入原始公开号,例:CN102860161 OR CN1526554846' },
+         {label: '优先权号', value: 'PR',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入优先权号,例:DEP3833692.8'},
       ]
     },
     {
       label:'类型及状态',
       value:'typeAndStatus',
       show:true,
+      DBType:['CN'],
       children:[
-        {label: '专利类型', value: 'PT',type:1,dataType:3},
-        {label: '法律状态', value: 'LG',type:1,dataType:3},
+        {label: '专利类型',value: 'PT',DBType:['CN'],type:1,dataType:3},
+        {label: '法律状态', value: 'LG',DBType:['CN'],type:1,dataType:3},
       ]
     },
     {
       label:'分类',
       value:'typeNumber',
+      DBType:['CN','WD'],
       children:[
-        {label: '分类号', value: 'IC',type:3,dataType:1,placeholder:'请输入分类号,例:21-01 OR B61D47/00'},
-        {label: '主分类号', value: 'MC',type:3,dataType:1,placeholder:'请输入分类号,例:21-01 OR B61D47/00'},
+        {label: '分类号', value: 'IC',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入分类号,例:21-01 OR B61D47/00'},
+        {label: '主分类号', value: 'MC',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入分类号,例:21-01 OR B61D47/00'},
         // {label: '优先权号', value: 'PR',type:3,dataType:1,placeholder:'请输入优先权号,例:DEP3833692.8'},
-        {label: '范畴分类', value: 'CT',type:1,dataType:1,placeholder:'请输入范畴分类,例:32D OR 40B'},
-        {label: '欧洲分类', value: 'EC',type:2,dataType:1,placeholder:'请输入欧洲分类号'},
+        {label: '范畴分类', value: 'CT',DBType:['CN'],type:1,dataType:1,placeholder:'请输入范畴分类,例:32D OR 40B'},
+        {label: '欧洲分类', value: 'EC',DBType:['WD'],type:2,dataType:1,placeholder:'请输入欧洲分类号'},
       ]
     },
     {
       label:'日期',
       value:'date',
+      DBType:['CN','WD'],
       children:[
-        {label: '申请日', value: 'AD',type:3,dataType:1,placeholder:'请输入申请日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
-        {label: '授权公告日', value: 'GD',type:1,dataType:1,placeholder:'请输入授权公告日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
-        {label: '公开日', value: 'PD',type:3,dataType:1,placeholder:'请输入公开日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
+        {label: '申请日', value: 'AD',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入申请日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
+        {label: '授权公告日', value: 'GD',DBType:['CN'],type:1,dataType:1,placeholder:'请输入授权公告日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
+        {label: '公开日', value: 'PD',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入公开日,例:2020 OR 202001 OR 20230101 OR 20230101~20230601'},
       ]
     },
     {
       label:'公司/人',
       value:'person',
+      DBType:['CN','WD'],
       children:[
-        {label: '发明人', value: 'IN',type:3,dataType:1,placeholder:'请输入发明人,例:钟丽红'},
-        {label: '第一发明人', value: 'FI',type:3,dataType:1,placeholder:'请输入第一发明人,例:钟丽红'},
-        {label: '申请人', value: 'PA',type:3,dataType:1,placeholder:'请输入申请人,例:钟丽红'},
-        {label: '第一申请人', value: 'FP',type:3,dataType:1,placeholder:'请输入第一申请人,例:钟丽红'},
-        {label: '权利人', value: 'PE',type:1,dataType:1,placeholder:'请输入权利人,例:钟丽红'},
+        {label: '发明人', value: 'IN',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入发明人,例:钟丽红'},
+        {label: '第一发明人', value: 'FI',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入第一发明人,例:钟丽红'},
+        {label: '申请人', value: 'PA',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入申请人,例:钟丽红'},
+        {label: '第一申请人', value: 'FP',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入第一申请人,例:钟丽红'},
+        {label: '权利人', value: 'PE',DBType:['CN'],type:1,dataType:1,placeholder:'请输入权利人,例:钟丽红'},
         // {label: '代理机构代码', value: 'AG',type:1,dataType:1,placeholder:'请输入代理机构代码,例:11223'},
-        {label: '代理人', value: 'AT',type:1,dataType:1,placeholder:'请输入代理人,例:张三'},
-        {label: '代理机构名称', value: 'AGN',type:1,dataType:1,placeholder:'请输入代理机构名称,例:威士博'},
+        {label: '代理人', value: 'AT',DBType:['CN'],type:1,dataType:1,placeholder:'请输入代理人,例:张三'},
+        {label: '代理机构名称', value: 'AGN',DBType:['CN'],type:1,dataType:1,placeholder:'请输入代理机构名称,例:威士博'},
       ]
     },
     {
       label:'地址',
       value:'address',
+      DBType:['CN'],
       show:true,
       children:[
         // {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',type:1,dataType:1,placeholder:'请输入申请人地址,例:深圳市南山区'},
+        {label: '申请人地址', value: 'DZ',DBType:['CN'],type:1,dataType:1,placeholder:'请输入申请人地址,例:深圳市南山区'},
       ]
     },
     {
       label:'国家/地区',
       value:'country',
+      DBType:['CN','WD'],
       children:[
-        {label: '申请人国家/地区', value: 'CO',type:1,dataType:1,placeholder:'请输入国省代码,例:94 OR CN'},
+        {label: '申请人国家/地区', value: 'CO',DBType:['CN'],type:1,dataType:1,placeholder:'请输入国省代码,例:94 OR CN'},
         // {label: '发明人国家', value: 'ICO',type:2,dataType:1,placeholder:'请输入发明人国家,例:94 OR CN'},
-        {label: '受理局', value: 'GJ',type:2,dataType:3,placeholder:'请输入国家,例:CN'},
+        {label: '受理局', value: 'GJ',DBType:['WD'],type:2,dataType:3,placeholder:'请输入国家,例:CN'},
         // {label: '申请人地址', value: 'DZ',type:1,dataType:1,placeholder:'请输入申请人地址,例:深圳市南山区'},
       ]
     },
     {
       label:'引用',
       value:'excerpt',
+      DBType:['CN','WD'],
       children:[
-        {label: '引用专利', value: 'CC',type:3,dataType:1,placeholder:'请输入引用专利,例:US1743377A,1930.01.14'},
-        {label: '引用非专利', value: 'UCC',type:1,dataType:1,placeholder:'请输入引用非专利'},
+        {label: '引用专利', value: 'CC',DBType:['CN','WD'],type:3,dataType:1,placeholder:'请输入引用专利,例:US1743377A,1930.01.14'},
+        {label: '引用非专利', value: 'UCC',DBType:['CN'],type:1,dataType:1,placeholder:'请输入引用非专利'},
       ]
     },
   ],

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

@@ -22,7 +22,7 @@
         <div>
             <div><b>检索栏位包括:</b></div>
             <div class="field">
-                <p v-for="item in field.filter(item=>{return item.type != (this.DBType=='WD'?1:2)})" :key="item.label"><span style="color:red">{{ item.value }}</span>:{{ item.label }}</p>
+                <p v-for="item in field.filter(item=>{return item.DBType.indexOf(DBType)!=-1})" :key="item.label"><span style="color:red">{{ item.value }}</span>:{{ item.label }}</p>
             </div>
             <div><b>省市代码(仅中国专利):</b></div>
             <div v-html="changeRed('province')">
@@ -30,7 +30,7 @@
             </div>
             <div><b>国别代码:</b></div>
             <div style="display:flex;flex-wrap:wrap;justify-content: space-between;">
-                <span v-for="(item) in countryList" :key="item.value"><span class="red">{{ item.value }}</span>&nbsp;{{ item.label }}&nbsp;&nbsp;</span>
+                <span v-for="(item) in countryList" :key="item.value" style="margin:0 10px;"><span class="red">{{ item.value }}</span><span style="margin-left:10px;">{{ item.label }}</span></span>
             </div>
         </div>
     </div>

+ 11 - 60
src/views/components/import/conditionImport/FormSearch.vue

@@ -2,7 +2,7 @@
     <div class="formSearch">
         <el-form :model="form" label-width="140px" size="small" label-position="right">
             <template  v-for="item in constants.searchField" >
-                <div :key="item.label" v-if="(dbType ==2 && item.value!='typeAndStatus')||dbType !=2 ">
+                <div :key="item.label" v-if="item.DBType.indexOf(DBType)!=-1">
                     <div>
                         <span>{{item.label}}</span>
                         <el-divider></el-divider>
@@ -11,9 +11,9 @@
                         <el-row>
                             <el-col :span="24">
                                 <div v-for="(i,index) in item.children" :key="i.value">
-                                    <div v-if="index%2==0">
-                                        <el-col :span="12" v-if="(item.children[index].type == dbType || item.children[index].type == 3)">
-                                            <el-form-item :label="item.children[index].label+':'">
+                                    <div>
+                                        <el-col :span="12" v-if="i.DBType.indexOf(DBType)!=-1">
+                                            <el-form-item :label="i.label+':'">
                                                 <!-- <el-select v-model="form[item.children[index].value]" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
                                                     <el-option
                                                     v-for="item in constants[item.children[index].value]"
@@ -22,9 +22,9 @@
                                                     :value="item.value">
                                                     </el-option>
                                                 </el-select> -->
-                                                <div v-if="item.children[index].dataType==2" style="display:flex;width:100%">
+                                                <div v-if="i.dataType==2" style="display:flex;width:100%">
                                                     <el-date-picker
-                                                        v-model="form[item.children[index].value][0]"
+                                                        v-model="form[i.value][0]"
                                                         style="width:50%"
                                                         type="date"
                                                         size='small'
@@ -33,73 +33,24 @@
                                                     </el-date-picker>
                                                     <el-date-picker
                                                         style="width:50%"
-                                                        v-model="form[item.children[index].value][1]"
+                                                        v-model="form[i.value][1]"
                                                         type="date"
                                                         size='small'
                                                         value-format="yyyyMMdd"
                                                         placeholder="结束,例:20001231">
                                                     </el-date-picker>
                                                 </div>
-                                                <div v-else-if="item.children[index].dataType==3" style="width:100%">
-                                                    <el-select v-model="form[item.children[index].value]" size="small" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
+                                                <div v-else-if="i.dataType==3" style="width:100%">
+                                                    <el-select v-model="form[i.value]" size="small" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
                                                         <el-option
-                                                            v-for="item in item.children[index].value=='GJ'?countryList:constants[item.children[index].value]"
+                                                            v-for="item in i.value=='GJ'?countryList:constants[i.value]"
                                                             :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="form[item.children[index].value]" :placeholder="item.children[index].placeholder"></el-input> </div>
-                                            </el-form-item>
-                                        </el-col>
-                                        <el-col :span="12" v-if="(item.children[index+1]) && (item.children[index+1].type == dbType || item.children[index+1].type == 3)" >
-                                            <el-form-item :label="item.children[index+1].label+':'">
-                                                <!-- <el-select v-model="form[item.children[index+1]?.value]" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
-                                                    <el-option
-                                                    v-for="item in constants[item.children[index+1]?.value]"
-                                                    :key="item.value"
-                                                    :label="item.label"
-                                                    :value="item.value">
-                                                    </el-option>
-                                                </el-select> -->
-                                                <div v-if="item.children[index+1].dataType==2" style="display:flex;width:100%">
-                                                    <el-date-picker
-                                                        v-model="form[item.children[index+1].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="form[item.children[index+1].value][1]"
-                                                        type="date"
-                                                        size='small'
-                                                        value-format="yyyyMMdd"
-                                                        placeholder="结束,例:20001231">
-                                                    </el-date-picker>
-                                                </div>
-                                                <div v-else-if="item.children[index+1].dataType==3" style="width:100%">
-                                                    <el-select v-model="form[item.children[index+1].value]" size="small" multiple filterable collapse-tags placeholder="请选择,可多选" style="width:100%">
-                                                        <el-option
-                                                            v-if="item.children[index+1].value=='GJ'"
-                                                            @click.native.stop="selectAll"
-                                                            :label="checked?'取消全选':'全选'"
-                                                            :value="-1">
-                                                        </el-option>
-                                                        <el-option
-                                                            v-for="item1 in item.children[index+1].value=='GJ'?countryList1:constants[item.children[index+1].value]"
-                                                            :key="item1.value"
-                                                            :disabled="item.children[index+1].value=='GJ' && checked"
-                                                            :label="item1.label"
-                                                            :value="item1.value">
-                                                        </el-option>
-                                                    </el-select>
-                                                </div>
-                                                <div v-else style="width:100%"><el-input size='small' style="width:100%" v-model="form[item.children[index+1].value]" :placeholder="item.children[index+1].placeholder"></el-input> </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>
                                     </div>

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

@@ -101,15 +101,29 @@ export default {
       // this.field = a.map(item=>{ 
       //   item.children = item.children.filter(item1 =>{return item1.value!='GJ' && item1.type != (this.DBType != 'WD'?'2':'1')}) 
       //   return item
+      // }).filter(item=>{
+      //   return item.children.length>0
       // })
-
-      var a = JSON.parse(JSON.stringify(this.$constants.searchField))
-      this.field = a.map(item=>{ 
-        item.children = item.children.filter(item1 =>{return item1.value!='GJ' && item1.type != (this.DBType != 'WD'?'2':'1')}) 
-        return item
-      }).filter(item=>{
-        return item.children.length>0
-      })
+      var data = JSON.parse(JSON.stringify(this.$constants.searchField))
+      var fields = []
+      for(var i = 0;i<data.length;i++){
+        var item = data[i]
+        if(item.DBType.indexOf(this.DBType)==-1){
+          continue
+        }
+        var children = item.children.filter(child=>{
+          return child.value!='GJ' && child.DBType.indexOf(this.DBType)!=-1
+        })
+        if(children && children.length>0){
+          fields.push(
+            {
+              ...item,
+              children:children
+            }
+          )
+        }
+      }
+      this.field = fields
     },
     search(val,data){
       var params = {

+ 5 - 3
src/views/components/import/conditionImport/internal_search/filter_search.vue

@@ -4,7 +4,7 @@
         筛选条件
     </div>
     <div class="main">
-        <tab1 refs="tab1" :conditions="conditions" :projectId="projectId"></tab1>
+        <tab1 refs="tab1" :conditions="conditions"  v-bind="$attrs"></tab1>
     </div>
     <div class="head foot" @click="search">
         筛选
@@ -18,11 +18,13 @@ export default {
   components: {
     tab1
   },
-  props: {},
+  props: {
+   
+  },
   data() {
     return {
         conditions:{},
-        projectId:5503
+        // projectId:5503
     };
   },
   watch: {},

+ 16 - 3
src/views/components/import/conditionImport/internal_search/mixins.js

@@ -6,9 +6,22 @@ export default{
             return {}
           }
         },
-        projectId:{
-    
-        }
+        projectId:'',
+         // 检索条件
+        searchOption: {
+          default: () => {
+            return ''
+          }
+        },
+        // 自定义栏位检索条件
+        customFields: {
+          default: () => {
+            return []
+          }
+        },
+        groupField:{
+          default:''
+        },
       },
     data() {
         return {

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

@@ -3,7 +3,7 @@
 
     <el-container>
       <el-aside width="300px">
-        <filter_search></filter_search>
+        <filter_search :searchOption="condition.searchCondition" :customFields="customFields"></filter_search>
       </el-aside>
       <el-container>
         <el-header style="height:auto !important;padding:0 !important;">
@@ -222,7 +222,8 @@ export default {
       visible: false,
       // 检索式及其他信息
       condition: this.searchData,
-      saveRemarkList:[]
+      saveRemarkList:[],
+      customFields:[],
     };
   },
   watch: {

+ 5 - 1
src/views/layout/components/UserBar.vue

@@ -215,7 +215,7 @@ export default {
           belong:'myTask'
         },
         {
-          label:'外部专利检索',
+          label:'专利检索',
           path:'/conditionImport',
           belong:'conditionImport',
           current:'外部专利检索',
@@ -225,6 +225,10 @@ export default {
               value:'/conditionImport',
             },
             {
+              label:'内部专利检索',
+              value:'/innerPatentSearch',
+            },
+            {
               label:'查新检索',
               value:'/conditionImport?noveltySearch=true',
             }