/*
  @description:项目信息设置
  @Modifier:肖文龙
  @routerPath:
  @date: 2020/08/08
  * */
/* api*/
import { initPlatformConfig } from '@/api/common/user.js'// 网页配置初始化
import { getLoginRegistImage } from '@/api/common/tools.js'// 地址加密获取图片
import { getSystemConfigByConfigType, initWebTypeGroup } from '@/api/common/tools'// 字典信息
const config = {
  state: {
    WebConfig: {}, // 网页配置初始化
    sysConfigData: {}// 系统配置
  },
  mutations: {
    // 网页配置初始化
    SET_CONFIG(state, WebConfig) {
      state.WebConfig = WebConfig || {}
      WebConfig.icoFavicon = getLoginRegistImage(WebConfig.icoFavicon)// 地址加密获取图片
      WebConfig.imgMajor = getLoginRegistImage(WebConfig.imgMajor)// 地址加密获取图片
      WebConfig.imgRegist = getLoginRegistImage(WebConfig.imgRegist)// 地址加密获取图片
      // 配置 网页logo,网页标题
      // 网页logo
      const link = document.querySelector("link[rel*='icon']") || document.createElement('link')
      link.type = 'image/x-icon'
      link.rel = 'shortcut icon'
      link.href = WebConfig.icoFavicon
      document.getElementsByTagName('head')[0].appendChild(link)
      // 网页标题
      const title = document.querySelector('title') || document.createElement('title')
      title.innerText = WebConfig.title
      document.getElementsByTagName('head')[0].appendChild(title)
    },
    // 系统配置
    SET_SYSCONFIG(state, sysConfigData) {
      state.sysConfigData = sysConfigData
    }
  },
  actions: {
    // 网页配置初始化
    initPlatformConfig({ commit }) {
      return new Promise((resolve, reject) => {
        initPlatformConfig()
          .then(response => {
            commit('SET_CONFIG', response.data)
            resolve()
          })
          .catch(error => {
            reject(error)
          })
      })
    },
    // 系统配置信息
    SetSysConfig({ commit }, configType) {
      return new Promise((resolve, reject) => {
        const data = {
          configType: configType// 配置类型
        }
        getSystemConfigByConfigType(data).then((res) => {
          const data = {
            res: res, // 接口回调的所有信息
            configValue: res.data[0] && res.data[0].configValue// 获取的系统配置信息
          }
          commit('SET_SYSCONFIG', data)
          resolve(data)
        }).catch(error => {
          reject(error)
        })
      })
    },
    // 获取字典信息
    getGroupType({ commit }, bidTypes) {
      if (bidTypes instanceof Array) {
        return new Promise((resolve, reject) => {
          const data = {
            bidTypes: [], // 查询的key
            bidTypeData: {}, // 字典信息 {}
            res: {}// 所有回调信息
          }
          bidTypes.forEach(bidType => {
            initWebTypeGroup(bidType).then((res) => {
              data.bidTypes.push(bidType)// 查询的key
              // 字典信息
              data.bidTypeData[bidType + 'List'] = res.data.typeList
              data.res[bidType] = res
              // 回调
              if (data.bidTypes.length === bidTypes.length) {
                resolve(data)
              }
            }).catch(error => {
              reject(error)
            })
          })
        })
      } else {
        this.$message({
          message: '字典类型必须是数组类形式',
          type: 'warning'
        })
      }
    }
  }
}
export default config
