<template>
    <div style="background:white" class="height_100">
        <div class="head">
            <div class="search-menu">
                <div class="type">
                    <el-radio-group v-model="DBType">
                        <template v-for="type in defaultSearchDB" >
                            <el-radio v-if="searchDB[type]" :key="type" :label="type">
                                {{searchDB[type]}}
                                <el-tooltip v-if="type=='inner_WD'" class="item" effect="dark" content="内部数据不是全部数据，是所有抓取过的数据" placement="top">
                                    <i class="el-icon-warning"></i>
                                </el-tooltip>
                            </el-radio>
                        </template>
                        
                        <!-- <el-radio label="CN">中国专利检索</el-radio>
                        <el-radio label="WD">世界专利检索</el-radio> -->
                        <el-radio label="inner" v-if="noveltySearch">
                            <span v-if="DBType != 'inner'">内部专利检索</span>
                            <el-select v-else v-model.number="innerProjectId" @change="changeProjectId" filterable remote clearable placeholder="默认全部内部数据检索" v-SelectLazyLoading="lazyLoading" :remote-method="remoteMethod">
                                <el-option
                                    v-for="item in projectQuery.data"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="parseInt(item.id)"
                                >
                                </el-option>
                            </el-select>
                        </el-radio>
                    </el-radio-group>
                </div>
                <div>
                    <el-link :type="isComponent === 'FormSearch' ? 'primary' : undefined" @click="changeComponent('FormSearch')" >表格检索</el-link>
                  <el-link :type="isComponent === 'patentNoSearch' ? 'primary' : undefined" @click="changeComponent('patentNoSearch')" >号码检索</el-link>
                  <el-link :type="isComponent === 'customSearch' ? 'primary' : undefined" @click="changeComponent('customSearch')">高级检索</el-link>
                  <el-link :type="isComponent === 'AdvancedSearch' ? 'primary' : undefined" @click="changeComponent('AdvancedSearch')">专家检索</el-link>  
                </div>
                <div>
                    <span class="icon">
                        <el-tooltip class="item" effect="dark" content="检索历史" placement="top">
                            <i class="iconfont icon-shouye" @click="openHistory"></i>
                        </el-tooltip>
                    </span>
                    <span class="icon margin-left_10">
                        <el-tooltip class="item" effect="dark" content="检索帮助" placement="top">
                            <i class="el-icon-question" @click="searchHelp"></i>
                        </el-tooltip>
                    </span>
                </div>
                
            </div> 
        </div>
        <div style="display:flex;align-items:start;height:calc(100% - 60px);overflow-y:auto">
            <div style="width:15%;height:100%"></div>
            <div style="width:70%;height:100%;">
                <component ref="componentsSearch" :is='isComponent' @search="search" :editData="editData" :countryList="countryList" :DBType="DBType" :selected="selected"></component>
            </div>  
            <div style="width:15%;height:100%">
                <!-- <createNoveltySearch ref="createNoveltySearch" width="15%" :show="true" :position="{right:0,top:'120px'}"></createNoveltySearch> -->
                <inventionPointDialog type="plus" :projectId="projectId" :DBType="DBType" :btns="[1,2,3]" v-if="noveltySearch" @getProjectId="getProjectId" @searchByInventionPoint="searchByInventionPoint"></inventionPointDialog>
            </div>
        </div>
        
        
    </div>
</template>
<script>
import FormSearch from './FormSearch.vue';
import AdvancedSearch from './AdvancedSearch.vue';
import customSearch from './customSearch.vue';
import patentNoSearch from './patentNoSearch'

import mixins from '../mixins/index'

import createNoveltySearch from '@/views/noveltySearch/components/dialog/createNoveltySearch.vue';
export default {
    components:{
        FormSearch,
        AdvancedSearch,
        customSearch,
        patentNoSearch,
        createNoveltySearch
    },
    mixins:[mixins],
    props:{
        importData:{
            type:Object,
            default:()=>{
                return {}
            }
        },
        editData:{
            type:Object,
            default:()=>{
                return {}
            }
        },
        noveltySearch:{
            type:Boolean,
            default:false
        },
        projectId:'',
        isEdit:{
            type:Boolean,
            default:false
        },
        innerProjectId1:'',
        defaultSearchDB:{
            type:Array,
            default:()=>{
                return ['CN','WD']
            }
        }
    },
    data() {
        return {
            searchDB:{
                'CN':'中国专利检索',
                'WD':'世界专利检索',
                'inner_CN':'中国专利检索（内）',
                'inner_WD':'全球专利检索（内）',
            },
            isComponent:'customSearch',
            countryList:[],
            DBType:this.defaultSearchDB[0],
            selected:['US','DE','JP','GB','FR','KR','RU','CH','EP','WO'],
            innerProjectId: null,
            projectQuery:{
                queryParams:{
                    current:1,
                    size:10
                },
                loading:false,
                data:[]
            },
            semanteme:''
        }
    },
    mounted() {
        if(this.innerProjectId1){
            this.innerProjectId = Number(this.innerProjectId1)
            this.DBType = 'inner'
        }
        if(this.editData){
            if(this.editData.component){
                this.isComponent = this.editData.component
            }
            if(this.editData.DBType){
                this.DBType = this.editData.DBType
            }
            if(this.editData.innerProjectId){
                this.innerProjectId = Number(this.editData.innerProjectId)
            }
        }
        this.getCountry()
    },
    watch:{
        DBType(val){
            if(val != 'CN' && val != 'WD' && this.projectQuery.data.length == 0){
                if(this.innerProjectId){
                    this.projectQuery.id = this.innerProjectId
                }
                this.remoteMethod('')
            }
        },
        defaultSearchDB(val){
            this.DBType=this.defaultSearchDB[0]
        }
    },
    methods: {
        changeProjectId(val){
            if(val==''){
                this.remoteMethod('')
            }
        },
        //懒加载事件
        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
            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
        }
      })
    },
        //获取国家
        getCountry(){
            var important = ['CN','US','DE','JP','GB','FR','KR','RU','CH','EP','WO']
            var str = 'AD 安道尔 AE 阿拉伯联合酋长国 AF 阿富汗 AG 安提瓜和巴布达 AI 安圭拉岛 AL 阿尔巴尼亚 AM 亚'
                    +'美尼亚 AN 荷属安的列斯群岛 AO 安哥拉 AP 非洲地区工业产权组织（ARIPO） AR 阿根廷 AT 奥地'
                    +'利 AU 澳大利亚 AW 阿鲁巴岛（荷） BA 波斯尼亚和黑塞哥维那（波黑） BB 巴巴多斯 BD 孟加拉 AZ'
                    +'阿塞拜疆 BE 比利时 BF 布基纳法索 BG 保加利亚 BH 巴林 BI 布隆迪 BJ 贝宁 BM 百慕大 BN 文'
                    +'莱 BO 玻利维亚 BR 巴西 BS 巴哈马 BT 不丹 BV 布韦岛 BW 博茨瓦那 BX 比、荷、卢经济联盟商'
                    +'标局及外观设计局 BY 白俄罗斯 BZ 伯利兹 CA 加拿大 CD 刚果民主共和国 CF 中非共和国 CG 刚'
                    +'果 CH 瑞士 CI 科特迪瓦 CK 库克群岛 CL 智利 CM 喀麦隆 CN 中国 CO 哥伦比亚 CR 哥斯达黎'
                    +'加 CU 古巴 CV 佛得角 CY 塞浦路斯 CZ 捷克共和国 DE 德国 DJ 吉布提 DK 丹麦 DM 多米尼克'
                    +'DO 多米尼加共和国 DZ 阿尔及利亚 EA 欧亚专利组织（EAPO） EC 厄瓜多尔 EE 爱沙尼亚 EG 埃'
                    +'及 EH 西撒哈拉 EM 内部市场协调局（OHIM） EP 欧洲专利局（EPO） ER 厄立特里亚 ES 西班牙 ET 埃'
                    +'塞俄比亚 FI 芬兰 FJ 斐济 FK 福克兰群岛（马尔维纳斯群岛） FO 法罗群岛 FR 法国 GA 加蓬 GB 英'
                    +'国 GD 格林纳达 GH 加纳 GC 海湾地区阿拉伯国家合作委员会专利局（GCC） GE 格鲁吉亚 GI 直布罗'
                    +'陀 GL 格陵兰 GM 冈比亚 GN 几内亚 GQ 赤道几内亚 GR 希腊 GS 南乔治亚和南三维治群岛 GT'
                    +'危地马拉 GW 几内亚比绍 GY 圭亚那 HK 中华人民共和国香港特别行政区 HN 洪都拉斯 HR 克罗地'
                    +'亚 HT 海地 HU 匈牙利  WO 世界知识产权组织国际局（WIPO） ID 印度尼西亚 IE 爱尔兰 IL 以色'
                    +'列 IN 印度 IQ 伊拉克 IR 伊朗，伊斯兰共和国'
                var regx = new RegExp("[A-Z]{2} ", "g")
                var a = str.split(regx)
                a.splice(0,1)
                var b = str.match(regx)
                b.forEach((item,index)=>{
                    this.countryList.push({
                        label:a[index],
                        value:item.trim()
                    })
                })
                this.countryList.push(
                    {
                        label:'美国',
                        value:'US'
                    },
                    {
                        label:'日本',
                        value:'JP'
                    },
                    {
                        label:'俄罗斯',
                        value:'RU'
                    },
                    {
                        label:'韩国',
                        value:'KR'
                    },
                )
               var a = this.countryList.filter(item=>{return important.indexOf(item.value)!=-1})
               a.sort((i,y)=>{
                return important.indexOf(i.value) - important.indexOf(y.value)
               })
               var b = this.countryList.filter(item=>{return important.indexOf(item.value)==-1})
               this.countryList = a.concat(b)
               this.selected = this.countryList.map(item=>item.value).filter(item=>item!='CN')
        },
        changeComponent(val){
            this.isComponent = val
        },
        searchByInventionPoint(val){
            this.semanteme = val
            if(this.isComponent == 'customSearch'){
                this.$refs.componentsSearch.search1()
            }else{
                this.$refs.componentsSearch.search()
            }
        },
        async search(val,data){
            if((val == '' && !this.semanteme) && data.component!='patentNoSearch'){
                this.$message.error('检索信息不能为空')
                return false
            }
            if(this.noveltySearch && !this.projectId){
                var sign = await this.addNoveltyProject()
                if(!sign){
                    this.$message.error('系统发生错误')
                    return
                }
            }
            if(this.DBType == 'inner_CN'){
                if(val){
                    var obj = this.$commonJS.extractFieldsAndValues(val)
                    if(obj && obj.CO){
                        var index = obj.CO.indexOf('CN')
                        if(index == -1){
                            val = val + ' AND CO=CN'
                        }
                    }else{
                        val = val + ' AND CO=CN'
                    }
                }else{
                    val = 'CO=CN'
                }
            }
            
            var a = {
                ...this.importData,
                searchCondition:val || "",
                showCondition:val || "",
                DBType:this.DBType,
                retrieveRecordId:null,
                type:4,
                otherCondition:data.otherCondition||{}
            }
            // if(data.otherCondition){
            //     a.searchCondition = data.otherCondition.search + (val?` AND ${val}`:'')
            //     a.showCondition = data.otherCondition.show + (val?` AND ${val}`:'')
            // }
            if(data.component == 'patentNoSearch'){
                a.NO = data.data
                a.component = 'patentNoSearch'
            }
            this.$router.push({
                path: '/searchResult',
                query: {
                    data:JSON.stringify(a),
                    noveltySearch:this.noveltySearch,
                    projectId:this.projectId,
                    outside:(this.DBType != 'CN' && this.DBType != 'WD')?false:true,
                    innerProjectId:this.innerProjectId,
                    semanteme:this.semanteme
                }
            })
            data.innerProjectId = this.innerProjectId
            data.defaultSearchDB=this.defaultSearchDB
            this.$s.setSession('conditionImport',{
                data:data,
            })
            if(this.semanteme){
                this.semanteme = ''
            }
        },
        openHistory(){
            const router = this.$router.resolve({
                path: '/searchHistory',
                query:{
                    importData:JSON.stringify(this.importData),
                    noveltySearch:this.noveltySearch,
                    projectId:this.projectId,
                }
                
            })
            window.open(router.href, '_blank');
        },
        //创建查新检索项目
        async addNoveltyProject(){
            var params = {}
            var sign = true
            await this.$api.addNoveltyProject(params).then(response=>{
                if(response.code== 200){
                    var project = response.data
                    this.getProjectId(project)
                }
            }).catch(error=>{
                sign = false
            })
            return sign
        },
        //获取项目id
        getProjectId(projectId){
            var data = this.importData
            data.importToId=projectId
            data.importToType=3
            data.type=4
            this.$router.replace(
                {
                    path:'/conditionImport',
                    query:{
                        'importData':JSON.stringify(data),
                        'isEdit':this.isEdit,
                        'noveltySearch':this.noveltySearch,
                        'projectId':projectId
                    }
                }
            )
        },
        //检索帮助
        searchHelp(){
            const router = this.$router.resolve(
                {
                    path:'/searchHelp'
                }
            )
            window.open(router.href,'_blank')
        },
    },
}
</script>
<style lang="scss" scoped>
.head{
    background: rgb(223 223 223);
    line-height: 50px;
    text-align: center;
}
.search-menu{
    width:70%;
    margin:0 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    .el-link{
        margin-right: 20px; 
    } 
    .type{
    }
    .icon{
        i{
            font-size:24px;
        }
    }
}
</style>