import { login, logout, getInfo } from '@/api/login'
import { getUserProfile } from "@/api/system/user";
import { getToken, setToken, removeToken } from '@/utils/auth'

const user = {
  state: {
    token: getToken(),
    name: '',
    avatar: '',
    deptid:'',
	deptname:'',
	rolesname:'',
    userid:'',
	ancestors:'',
    roles: [],
    permissions: []
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_NAME: (state, name) => {
      state.name = name
    },
    SET_AVATAR: (state, avatar) => {
      state.avatar = avatar
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles
    },
	SET_ROLESNAME: (state, rolesname) => {
	  state.rolesname = rolesname
	},
    SET_DEPTID: (state, deptid) => {
      state.deptid = deptid
    },
	SET_DEPTNAME: (state, deptname) => {
	  state.deptname = deptname
	},
    SET_USERID: (state, userid) => {
      state.userid = userid
    },
	SET_ANCESTORS: (state, ancestors) => {
	  state.ancestors = ancestors
	},
	
    SET_PERMISSIONS: (state, permissions) => {
      state.permissions = permissions
    }
  },

  actions: {
    // 登录
    Login({ commit }, userInfo) {
      const username = userInfo.username.trim()
      const password = userInfo.password
      const code = userInfo.code
      const uuid = userInfo.uuid
      return new Promise((resolve, reject) => {
        login(username, password, code, uuid).then(res => {
          setToken(res.token)
          commit('SET_TOKEN', res.token)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },

    // 获取用户信息
    GetInfo({ commit, state }) {
      return new Promise((resolve, reject) => {
        getInfo().then(res => {
          const user = res.user
          const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
          if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
            commit('SET_ROLES', res.roles)
            commit('SET_PERMISSIONS', res.permissions)
          } else {
            commit('SET_ROLES', ['ROLE_DEFAULT'])
          }
          commit('SET_NAME', user.userName)
          commit('SET_DEPTID',user.deptId)
          commit('SET_USERID', user.userId)
          commit('SET_AVATAR', avatar)
		  commit('SET_ANCESTORS', user.dept.ancestors)
		  
		 console.log(res,2)
          resolve(res)
        }).catch(error => {
          reject(error)
        })
		getUserProfile().then(ress => {
		  console.log(ress,23)
		  commit('SET_ROLESNAME', ress.roleGroup)
		  commit('SET_DEPTNAME', ress.data.dept.deptName)
		  let pose = ''
		  if(ress.postGroup == ""){
			   pose =ress.data.dept.deptName
			  console.log(res.roleGroup,pose,23)
		  		  		 
		  }else{
		  	if(ress.postGroup !== null){
		  		let pose =ress.data.dept.deptName + '/' + ress.postGroup		  
		  	}else{
		  			  		  			  let pose =ress.data.dept.deptName
		  	}	  		  
		  }
		  commit('SET_ROLESNAME', ress.roleGroup)
		  commit('SET_DEPTNAME', pose)
		  console.log(res.roleGroup,pose,23)
		  resolve(res)
		}).catch(error => {
		  reject(error)
		})
		
      })
	  
    },
	// getUser({ commit, state }) {
	// 	console.log(23)
	// 	return new Promise((resolve, reject) => {
	// 	  getUserProfile().then(res => {
	// 	    console.log(res,23)
	// 	    if(res.postGroup !== ""){
	// 	    		  		  if(res.postGroup !== null){
	// 	    		  		  	let pose =user.dept.deptName + '/' + res.postGroup		  
	// 	    		  		  }else{
	// 	    		  			  let pose =user.dept.deptName
	// 	    		  		  }
	// 	    }else{
	// 	    		  		  let pose =user.dept.deptName
	// 	    }
	// 	    commit('SET_ROLESNAME', res.roleGroup)
	// 	    commit('SET_DEPTNAME', pose)
	// 	    resolve(res)
	// 	  }).catch(error => {
	// 	    reject(error)
	// 	  })
	// 	})
	// },
	

    // 退出系统
    LogOut({ commit, state }) {
      return new Promise((resolve, reject) => {
        logout(state.token).then(() => {
          commit('SET_TOKEN', '')
          commit('SET_ROLES', [])
          commit('SET_PERMISSIONS', [])
          removeToken()
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },

    // 前端 登出
    FedLogOut({ commit }) {
      return new Promise(resolve => {
        commit('SET_TOKEN', '')
        removeToken()
        resolve()
      })
    }
  }
}

export default user
