<template>
  <div id="detailPart" class="sides-container" :style="sideHeight?'height:'+sideHeight+'px':''">
    <el-input
      placeholder="搜索"
      class="side-input"
      v-model="searchText"
      clearable
      @input="handleSearch(true)"
      @keyup.enter.native="handleSearch()">
      <i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch()"></i>
    </el-input>
    <el-menu
      ref="sideMenu"
      :unique-opened="true"
      :default-active="searchIndex?searchIndex:routeIndex"
      class="detail-menu"
      @open="handleOpen">
      <template v-for="(item, index) in sideRoute">
        <el-submenu :index="index.toString()" v-if="item.children" :disabled="!isCompanyId(item.title) || (item.title=='项目商机'&&statisticObj.business.landInfo<1&&statisticObj.business.busProposedProjectV1<1&&statisticObj.performance.specialDebt<1&&statisticObj.performance.bidPlan<1&&statisticObj.business.biddingAnnouncement<1&&statisticObj.business.proBiddingAnnouncement<1&&statisticObj.business.adminLicensing<1)">
          <template slot="title">
            <span>{{item.title}}</span>
          </template>
          <el-menu-item :index="index+'-'+idx" v-for="(it, idx) in item.children" :key="idx" @click="handleItem(it)" :disabled="it.disabled">{{it.title}}</el-menu-item>
        </el-submenu>
        <template v-else>
          <el-menu-item :index="index.toString()" @click="handleItem(item)" :disabled="!isCompanyId(item.title) || item.disabled" v-if="isCustomerId(item.pathName)">{{item.title}}</el-menu-item>
        </template>
      </template>
    </el-menu>
  </div>
</template>

<script>
import { financial } from '@/api/detail/party-a/financial'
export default {
  name: 'Sidebar',
  props: {
    partBoxHeight: {
      type: Number,
      default: null
    },
    pathName: {
      type: String,
      default: null
    },
    customerId: {
      type: String,
      default: ''
    },
    isCompany: {
      type: Boolean,
      default: true
    },
    statisticObj:{
      type:Object,
      default: {}
    },
    isCustomer: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      searchText: '',
      sideRoute: [
        {title: '企业概要', pathName: '', children: [
          {title: '企业速览', pathName: 'overview'},
          {title: '工商信息', pathName: 'businfo'},
          {title: '股东信息', pathName: 'holderinfo'},
          {title: '高管信息', pathName: 'execuinfo'},
          {title: '对外投资', pathName: 'overseas'},
          {title: '分支机构', pathName: 'branch'}
        ]},
        {title: '财务简析', pathName: 'financial'},
        {title: '项目商机', pathName: '', children: [
          {title: '土地交易', pathName: 'landtransaction'},
          {title: '拟建项目', pathName: 'proposed'},
          {title: '专项债项目', pathName: 'bond'},
          {title: '招标计划', pathName: 'biddingplan'},
          {title: '招标公告', pathName: 'announcement'},
          {title: '标讯Pro', pathName: 'tencent'},
          {title: '行政许可', pathName: 'administrative'}
        ]},
        {title: '业务往来', pathName: '', children: [
          {title: '客户', pathName: 'custom'},
          {title: '供应商', pathName: 'supplier'},
          {title: '招标代理', pathName: 'bidagency'},
          {title: '历史发包', pathName: 'hiscontract'},
          {title: '开标记录', pathName: 'bidrecords'}
        ]},
        {title: '城投分析', pathName: '', children: [
          {title: '区域经济', pathName: 'regionalEconomies'},
          {title: '城投拿地', pathName: 'landAcquisition'},
          {title: '同地区城投', pathName: 'sameRegion'}
        ]},
        {title: '风险信息', pathName: '', children: [
          {title: '行政处罚', pathName: 'punish'},
          {title: '经营异常', pathName: 'businessAnomaly'},
          {title: '被执行人', pathName: 'ifThePerson'},
          {title: '失信被执行人', pathName: 'dishonesty'},
          {title: '裁判文书', pathName: 'judgment'},
          {title: '法院公告', pathName: 'courtNotice'},
          {title: '开庭公告', pathName: 'openacourtsessionNotice'},
          // {title: '信用中国', pathName: ''}
        ]},
        {title: '商务信息', pathName: 'business'},
        {title: '招标偏好', pathName: 'preference'},
        {title: '合作情况', pathName: 'cooperate'},
        {title: '联系人', pathName: 'decisionMaking'},
        {title: '跟进记录', pathName: 'gjjl'}
      ],
      sideRoute1: [
        {title: '企业概要', pathName: '', children: [
          {title: '企业速览', pathName: 'overview'},
          {title: '工商信息', pathName: 'businfo'},
          {title: '股东信息', pathName: 'holderinfo'},
          {title: '高管信息', pathName: 'execuinfo'},
          {title: '对外投资', pathName: 'overseas'},
          {title: '分支机构', pathName: 'branch'}
        ]},
        {title: '财务简析', pathName: 'financial'},
        {title: '项目商机', pathName: '', children: [
          {title: '土地交易', pathName: 'landtransaction'},
          {title: '拟建项目', pathName: 'proposed'},
          {title: '专项债项目', pathName: 'bond'},
          {title: '招标计划', pathName: 'biddingplan'},
          {title: '招标公告', pathName: 'announcement'},
          {title: '标讯Pro', pathName: 'tencent'},
          {title: '行政许可', pathName: 'administrative'}
        ]},
        {title: '业务往来', pathName: '', children: [
          {title: '客户', pathName: 'custom'},
          {title: '供应商', pathName: 'supplier'},
          {title: '招标代理', pathName: 'bidagency'},
          {title: '历史发包', pathName: 'hiscontract'},
          {title: '开标记录', pathName: 'bidrecords'}
        ]},
        {title: '城投分析', pathName: '', children: [
          {title: '区域经济', pathName: 'regionalEconomies'},
          {title: '城投拿地', pathName: 'landAcquisition'},
          {title: '同地区城投', pathName: 'sameRegion'}
        ]},
        {title: '风险信息', pathName: '', children: [
          {title: '行政处罚', pathName: 'punish'},
          {title: '经营异常', pathName: 'businessAnomaly'},
          {title: '被执行人', pathName: 'ifThePerson'},
          {title: '失信被执行人', pathName: 'dishonesty'},
          {title: '裁判文书', pathName: 'judgment'},
          {title: '法院公告', pathName: 'courtNotice'},
          {title: '开庭公告', pathName: 'openacourtsessionNotice'},
          // {title: '信用中国', pathName: ''}
        ]},
        {title: '商务信息', pathName: 'business'},
        {title: '招标偏好', pathName: 'preference'},
        {title: '合作情况', pathName: 'cooperate'},
        {title: '联系人', pathName: 'decisionMaking'},
        {title: '跟进记录', pathName: 'gjjl'}
      ],
      defaultRoute: [],
      customer:[
        'business',
        'preference',
        'cooperate',
        'decisionMaking',
        'gjjl'
      ],
      companys:[
        '企业概要',
        '财务简析',
        '项目商机',
        '业务往来',
        '城投分析',
        '风险信息',
      ],
      uniqueOpened:false,
      searchIndex: ''
    }
  },
  computed: {
    sideHeight() {
      let sideHeight = document.getElementById("detailPart")?document.getElementById("detailPart").offsetHeight:null, bowerHeight = document.body.clientHeight-170 || null
      if(this.partBoxHeight<bowerHeight) {
        sideHeight = bowerHeight
      }else{
        sideHeight = '1222'/*this.partBoxHeight*/
      }
      return sideHeight
    },
    routeIndex(){
      let idx = this.getRouteIdx('', this.pathName) || '0-0'
      return idx
    }
  },
  created() {
    this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
  },
  watch:{
    statisticObj:{
      handler(val) {
        this.sideRoute = JSON.parse(JSON.stringify(this.defaultRoute))
        let arr = JSON.parse(JSON.stringify(val))
        for(var i in arr){
          for(var j in arr[i]){
            switch (j) {
              case 'ownershipStructure':
                if(arr[i][j]<1){
                  this.sideRoute[0].children[2].disabled = true;
                }
                break;
                case 'leadingMember':
                  if(arr[i][j]<1){
                    this.sideRoute[0].children[3].disabled = true;
                  }
                  break;
                case 'outboundInvestment':
                  if(arr[i][j]<1){
                    this.sideRoute[0].children[4].disabled = true;
                  }
                  break;
                case 'branch':
                  if(arr[i][j]<1){
                    this.sideRoute[0].children[5].disabled = true;
                  }
                  break;
                case 'landInfo':
                  if(arr[i][j]<1){
                    this.sideRoute[2].children[0].disabled = true;
                    this.sideRoute[4].children[1].disabled = true;
                  }
                  break;
                case 'busProposedProjectV1':
                  if(arr[i][j]<1){
                    this.sideRoute[2].children[1].disabled = true;
                  }
                  break;
                case 'specialDebt':
                  if(arr[i][j]<1){
                    this.sideRoute[2].children[2].disabled = true;
                  }
                  break;
                case 'bidPlan':
                  if(arr[i][j]<1){
                    this.sideRoute[2].children[3].disabled = true;
                  }
                  break;
                case 'biddingAnnouncement':
                  if(arr[i][j]<1){
                    this.sideRoute[2].children[4].disabled = true;
                  }
                  break;
                case 'proBiddingAnnouncement':
                  if(arr[i][j]<1){
                    this.sideRoute[2].children[5].disabled = true;
                  }
                  break;
                case 'adminLicensing':
                  if(arr[i][j]<1){
                    this.sideRoute[2].children[6].disabled = true;
                  }
                  break;
                case 'customer':
                  if(arr[i][j]<1){
                    this.sideRoute[3].children[0].disabled = true;
                  }
                  break;

                case 'supplier':
                  if(arr[i][j]<1){
                    this.sideRoute[3].children[1].disabled = true;
                  }
                  break;
                case 'coopBiddingAgency':
                  if(arr[i][j]<1){
                    this.sideRoute[3].children[2].disabled = true;
                  }
                  break;

                case 'historySend':
                  if(arr[i][j]<1){
                    this.sideRoute[3].children[3].disabled = true;
                  }
                  break;

                case 'tenderRecordV1':
                  if(arr[i][j]<1){
                    this.sideRoute[3].children[4].disabled = true;
                  }
                  break;
                case 'adminSanction':
                  if(arr[i][j]<1){
                    this.sideRoute[5].children[0].disabled = true;
                  }
                  break;
                case 'abnormalOperation':
                  if(arr[i][j]<1){
                    this.sideRoute[5].children[1].disabled = true;
                  }
                  break;
                case 'dishonestExecutee':
                  if(arr[i][j]<1){
                    this.sideRoute[5].children[2].disabled = true;
                  }
                  break;
                case 'dishonestExecutor':
                  if(arr[i][j]<1){
                    this.sideRoute[5].children[3].disabled = true;
                  }
                  break;
                case 'adjudicativeDoc':
                  if(arr[i][j]<1){
                    this.sideRoute[5].children[4].disabled = true;
                  }
                  break;
                case 'courtAnnouncement':
                  if(arr[i][j]<1){
                    this.sideRoute[5].children[5].disabled = true;
                  }
                  break;
                case 'openAnnouncement':
                  if(arr[i][j]<1){
                    this.sideRoute[5].children[6].disabled = true;
                  }
                  break;
                default:
                  break;
              }
            }
          }
          this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
        }
      },
    },
    methods: {
      financial(id){
        financial({cid:String(id)}).then(res=>{
          if(res.code==200&&!res.data){
            this.sideRoute[1].disabled = true
            this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
          }
        })
      },
      handleOpen(key, keyPath) {

      },
      handleItem(item){
        let obj = item
        for(var i in this.sideRoute1){
          if(this.sideRoute1[i].children){
            for(var j in this.sideRoute1[i].children){
              if(item.title == this.sideRoute1[i].children[j].title){
                console.log(this.sideRoute1[i].children[j])
                obj.pathName = this.sideRoute1[i].children[j].pathName
              }
            }
          }else{
            if(item.title == this.sideRoute1[i].title){
              obj.pathName = this.sideRoute1[i].pathName
            }
          }
        }
        this.$emit("currentPath", obj)
      },
      handleSearch(flag){
        if((this.searchText&&!flag) || (!this.searchText&&flag)){
          let idx = this.getRouteIdx(this.searchText)
          if(idx){
            if(idx.includes('-')){
              let openIdx = idx.slice(0, 1)
              this.sideRoute = [this.defaultRoute[openIdx]]
              this.$refs.sideMenu.open(openIdx)
            }else{
              this.sideRoute = [this.defaultRoute[idx]]
            }
            this.searchIndex = '-1'
          }else{
            this.sideRoute = this.defaultRoute
            this.searchIndex = ''
          }
        }
      },
      getRouteIdx(pathTitle, pathName){
        let idx = '', sideArr = this.sideRoute==this.defaultRoute?this.sideRoute:this.defaultRoute
        for(let i=0; i < sideArr.length; i++){
          if(sideArr[i].title == pathTitle || sideArr[i].pathName == pathName){
            idx = i.toString()
            break
          }else if(sideArr[i].children){
            for(let j=0; j< sideArr[i].children.length ; j++){
              if(sideArr[i].children[j].title == pathTitle || sideArr[i].children[j].pathName == pathName){
                idx = i+'-'+j
                break
              }
            }
          }
        }
        return idx
      },
      isCustomerId(name){
        if(this.customer.indexOf(name) != -1){
          if(this.customerId && this.isCustomer){
            return true
          }
          return false
        }
        return true
      },
      isCompanyId(name){
        if(this.companys.indexOf(name) != -1){
          if(this.isCompany){
            return true
          }
          return false
        }
        return true
      }
    }
  }
</script>

<style lang="scss" scoped>
  #app{
    .sides-container{
      width: 144px;
      min-height: calc(100vh - 170px);
      padding-bottom: 20px;
      background: #FFFFFF;
      border-radius: 4px;
      .side-input{
        width: 128px;
        margin-top: 16px;
        margin-left: 8px;
        border: 0;
        ::v-deep .el-input__inner{
          height: 32px;
          background: #F3F3F4;
          border-radius: 20px;
          border: 0;
          &::placeholder {
            color: #3D3D3D;
          }
        }
        .el-icon-search{
          line-height: 34px;
          color: #0081FF;
          cursor: pointer;
        }
      }
      .detail-menu{
        margin-top: 20px;
        border-right: 0;
        ::v-deep .el-menu-item, ::v-deep .el-submenu__title{
          height: 30px;
          line-height: 30px;
          font-size: 14px;
          color: #232323;
          padding: 0 0 0 16px !important;
          text-align: initial !important;
          &:hover, &:focus, &.is-active{
            color: #0081FF !important;
            background: linear-gradient(91deg, rgba(0,129,255,0.1) 0%, rgba(0,129,255,0) 100%);;
          }
          .el-submenu__icon-arrow{
            color: #232323;
            right: 48px;
            margin-top: -5px;
          }
        }
        .is-disabled:hover{
          color: rgba(35, 35, 35, 0.8)!important;
          &:before {
            color: rgba(35, 35, 35, 0.8)!important;
          }
        }
        ::v-deep .el-submenu .el-menu-item{
          font-size: 12px;
          color: rgba(35,35,35,0.8);
          padding: 0 0 0 27px !important;
          min-width: 144px !important;
          position: relative;
          &:before {
            content: "";
            position: absolute;
            top: 14px;
            left: 21px;
            width: 2px;
            height: 2px;
            background: #0081FF;
            border-radius: 50%;
          }
        }
      }
    }
  }
</style>
