/*
  @description: 报表统计-搜索公共方法
  @Modifier: 肖文龙
  @routerPath:
  @date: 2021-02-07
  */
/* 公共方法*/
import { restoreInitialValue } from '@/assets/js/utils' // 过滤空的key
/* api */
import { getRolesOfCheckBuyers } from '@api/statisticalAnalysis/reportChart.js'
export const reportChartSearch = {

  data() {
    return {
      // 查询条件
      searchForm: {},
      roleCode: '',
      // 获取有权限的角色
      roleOfData: []
    }
  },
  mounted() {
    // 初始化-搜索
    this.search()
    // 获取有权限的角色接口
    this.initRole()
  },
  methods: {
    /**
     * 获取父组件实例(查找到报表根组件然后进行数据渲染更新)
     *  @param {parent} Array 父组件实例
     *  @param {searchData} Object 查询条件
    */
    parentVm(parent, searchData) {
      parent = parent || this.$parent
      // 报表根组件 name名称
      const compName = 'ReportChart'
      const nameKey = parent.$vnode.key
      if (nameKey && nameKey.includes(compName)) {
        // 获取子组件实例
        this.childrenVm(parent.$children, searchData)
      } else {
        parent.$nextTick(() => {
          this.parentVm(parent.$parent, searchData)
        })
      }
    },
    /**
     * 获取自组件实例
     *  @param {children} Array 子组件实例
     *  @param {searchData} Object 查询条件
    */
    childrenVm(children, searchData) {
      searchData = searchData || {}
      if (children.length) {
        children.forEach(vm => {
          /**
           * 执行查询（以标识为准，只会执行有该标识的子组件中的查询接口）
           *  @param {reportchart} Array 给子组件一个reportChart 标识 (prop) 切记必须都是 reportchart='reportChart'
          */
          if (vm.$el.getAttribute &&
          vm.$el.getAttribute('reportchart') === 'reportChart') {
            vm.initChart && vm.initChart(searchData)
          }
          this.childrenVm(vm.$children, searchData)// 获取自组件实例
        })
      }
    },
    // 重置
    resetForm() {
      restoreInitialValue(this.searchForm)
      this.search()
    },
    roleFlag() {
      /*
        项目经理 11
        采购人 10
        工业区领导：buyerleader
        审计监督：sjjd
        平台运营: operation
        股份领导:gufenleader
      */
      this.roleCode = this.$store.getters.info.currentRol.roleCode // 角色code
      // 是否包含当前角色 若是不展示此模块 否 展示此模块
      if (this.roleOfData.includes(this.roleCode)) {
        return false
      } else {
        return true
      }
    },
    initRole() {
      // 获取有权限的角色接口
      getRolesOfCheckBuyers().then(res => {
        this.roleOfData = res.data.split(',')
      })
    }
  }
}
