// import Vue from 'vue'
// import Vuex from 'vuex'
import app from './modules/app'
import portal from './modules/portal'
import user from './modules/user'
import getters from './getters'
import {getUrlValue} from '@main/utils'

Vue.use(Vuex)
export default new Vuex.Store({
  modules:{
    portal,
    app,
    user
  }, 
  getters,
  state: {
    appStatus:'loading',//failed , loading ,success
    appStatusMsg:'',
  },
  mutations: {
    SET_appStatus(state,str){
      state.appStatus = str;
    }
  },
  actions: {
    async initApp(me){
      function setErrorMsg(err,msgHead){
        let __data=err.response.data;
        me.state.appStatusMsg=__data.msg || __data.message;
        msgHead&&(me.state.appStatusMsg=Vue.prototype.$t('hivuiMain_store_msg1')+msgHead+Vue.prototype.$t('hivuiMain_store_msg2')+(me.state.appStatusMsg&&(me.state.appStatusMsg+"，"))+Vue.prototype.$t('hivuiMain_store_msg3'));
        delete window.mainPageInitErrorJump;
        return new Promise((resolve, reject) => {
          reject(err);
        });
      }
      window.mainPageInitErrorJump=true;
      //单点登录票据
      if(window.HIVUI_SETTING.url!=location.origin&&window.HIVUI_SETTING.isSingleLogin&&getUrlValue('','ticket')){
        function __ssoLogin(){
          let returnPageUrl=window.location.origin+window.location.pathname;
          if(getUrlValue('','returnPage')){
            returnPageUrl=getUrlValue('','returnPage');
          }
          let params=window.location.search.slice(1).split("&").filter(item=>{
              if(item.indexOf("ticket")==-1 && item.indexOf("returnPage")==-1){
                  return item
              }
          });
          location = returnPageUrl+(params.length>0?'?':'')+params.join("&");
        }
        await me.dispatch('user/login').then(res=>{
          __ssoLogin();
        }).catch(err=>{
          __ssoLogin();
        });//单点登录
      }
      // await me.dispatch('user/load')
      //await me.dispatch('app/getPowers')//权限
      // console.log('//权限 end')
      if(!me.state.app.menusList||me.state.app.menusList.length==0){
        await me.dispatch('app/getMenus').catch(err=>{
          return setErrorMsg(err,Vue.prototype.$t('hivuiMain_store_sysmenu'));
        })//菜单
        // console.log('//菜单 end')
      }
      if(!me.state.user.userInfo.fuserid){
        await me.dispatch('user/getInfo').catch(err=>{
          return setErrorMsg(err,Vue.prototype.$t('hivuiMain_store_userinfo'));
        })//获取用户信息
        // console.log('//获取用户信息 end')
      }
      if(!me.state.user.bzList){
        await me.dispatch('user/getBzList').catch(err=>{
          return setErrorMsg(err,Vue.prototype.$t('hivuiMain_store_bzlist'));
        })//获取多岗信息
        // console.log('//获取多岗信息 end')
      }
      if(!me.state.app.latelyNavs&&me.state.app.latelyNavs.length==0){
        await me.dispatch('app/getLatelyUse').catch(err=>{
          return setErrorMsg(err,Vue.prototype.$t('hivuiMain_store_lately'));
        })//最近使用 
        // console.log('//最近使用 end')   
      }
      //await me.dispatch('app/getQuickNav')//快速导航
      // console.log('//快速导航 end')
      // await me.dispatch('portal/loadColumns')//栏目功能
      // console.log('//栏目功能 end')
      // await me.dispatch('portal/loadList')//工作台门户列表
      // console.log('//工作台门户列表 end')
      // await me.dispatch('portal/loadSysList')//系统门户列表
      // console.log('//系统门户列表 end')

      delete window.mainPageInitErrorJump;
      return new Promise((resolve, reject) => {
        resolve();
      });
    },
    setAppLoad({state,commit},status){
      commit('SET_appStatus',status);
    }
  }
})
