export default {
  namespaced: true,
  state: {
    uid: 0,
    routesConfig: undefined, // 路由配置
    user: undefined, // 用户信息
    permissions: JSON.parse(localStorage.getItem(process.env.VUE_APP_PERMISSIONS_KEY)), // 权限
    settings: JSON.parse(localStorage.getItem(process.env.VUE_APP_USER_SETTINGS_KEY)), // 用户配置
    project: JSON.parse(localStorage.getItem(process.env.VUE_APP_PROJECT_KEY)), // 项目信息
    company: JSON.parse(localStorage.getItem(process.env.VUE_APP_COMPANY_KEY)), // 公司信息
  },
  getters: {
    uid: state => { // 用户id
      if (state.uid == 0) { // 如果没有用户uid
        try {
          const uid = localStorage.getItem(process.env.VUE_APP_UID_KEY) // 获取用户id
          state.uid = uid  // 将用户信息赋值给state.user
        } catch (e) { // 捕获异常
          console.error(e)
        }
      }
      state.uid = localStorage.getItem(process.env.VUE_APP_UID_KEY) // 获取用户id
      return state.uid // 如果有用户信息，直接返回
    },
    user: state => { // 用户信息
      if (!state.user) { // 如果没有用户信息
        try {
          const user = localStorage.getItem(process.env.VUE_APP_USER_KEY) // 获取用户信息
          state.user = JSON.parse(user)  // 将用户信息赋值给state.user
          state.user = state.user ? state.user : [] // 如果用户信息为空，赋值为空对象
        } catch (e) { // 捕获异常
          console.error(e)
        }
      }
      return state.user // 如果有用户信息，直接返回
    },
    permissions: state => { // 权限
      if (!state.permissions) { // 如果没有权限
        try {
          const permissions = localStorage.getItem(process.env.VUE_APP_PERMISSIONS_KEY) // 获取权限
          state.permissions = JSON.parse(permissions) // 将权限赋值给state.permissions
          state.permissions = state.permissions ? state.permissions : [] // 如果state.permissions为空，则赋值为空数组
        } catch (e) { // 捕获异常
          // console.error(e.message)
        }
      }
      return state.permissions // 如果有权限，则返回权限
    },

    routesConfig: state => { // 路由配置
      if (!state.routesConfig) { // 如果没有路由配置
        try {
          const routesConfig = localStorage.getItem(process.env.VUE_APP_ROUTES_KEY) // 获取路由配置
          state.routesConfig = JSON.parse(routesConfig) // 将字符串转换为json对象
          state.routesConfig = state.routesConfig ? state.routesConfig : [] // 如果state.routesConfig为null，则赋值为空数组
        } catch (e) { // 捕获异常
          console.error(e.message)
        }
      }
      return state.routesConfig // 如果有路由配置，则返回路由配置
    },
    settings: state => { // 用户配置  
      if (!state.settings) { // 如果没有用户配置
        try {
          const settings = localStorage.getItem(process.env.VUE_APP_USER_SETTINGS_KEY) // 获取用户配置
          state.settings = JSON.parse(settings) // 将字符串转换为json对象
          state.settings = state.settings ? state.settings : [] // 如果state.settings为null，则赋值为空对象
        } catch (e) { // 捕获异常
          console.error(e.message)
        }
      }
      return state.settings // 如果有用户配置，则返回用户配置
    },
    project: state => { // 项目信息
      if (!state.project) { // 如果没有项目信息
        try {
          const project = localStorage.getItem(process.env.VUE_APP_PROJECT_KEY) // 获取项目信息
          state.project = JSON.parse(project) // 将字符串转换为json对象
          state.project = state.project ? state.project : [] // 如果state.project为null，则赋值为空对象
        } catch (e) { // 捕获异常
          console.error(e.message)
        }
      }
      // const project = localStorage.getItem(process.env.VUE_APP_PROJECT_KEY) // 获取项目信息
      // state.project = JSON.parse(project) // 将字符串转换为json对象
      return state.project // 如果有项目信息，则返回项目信息
    },
    company: state => { // 公司信息
      if (!state.company) { // 如果没有公司信息
        try {
          const company = localStorage.getItem(process.env.VUE_APP_COMPANY_KEY) // 获取公司信息
          state.company = JSON.parse(company) // 将字符串转换为json对象
          state.company = state.company ? state.company : [] // 如果state.company为null，则赋值为空对象
        }
        catch (e) { // 捕获异常
          console.error(e.message)
        }
      }
      // const company = localStorage.getItem(process.env.VUE_APP_COMPANY_KEY) // 获取公司信息
      // state.company = JSON.parse(company) // 将字符串转换为json对象
      return state.company // 如果有公司信息，则返回公司信息
    },
      
  },
  mutations: {
      

    setUid (state, uid) { // 设置用户uid
      state.uid = uid 
      localStorage.setItem(process.env.VUE_APP_UID_KEY, JSON.stringify(uid))// 将所有用户信息存储到process.env.VUE_APP_UID_KEY key中
    },
    setUser (state, user) { // 设置用户信息
      state.user = user 
      if  (JSON.stringify(user) === undefined){
        user = []
      }
      localStorage.setItem(process.env.VUE_APP_USER_KEY, JSON.stringify(user))// 将所有用户信息存储到process.env.VUE_APP_USER_KEY中
    },
    setPermissions(state, permissions) { // 设置权限
      state.permissions = permissions
      if (JSON.stringify(permissions) === undefined){
        permissions = []
      }
      localStorage.setItem(process.env.VUE_APP_PERMISSIONS_KEY, JSON.stringify(permissions)) // 将所有权限信息存储到process.env.VUE_APP_PERMISSIONS_KEY中
    },
    setRoutesConfig(state, routesConfig) { // 设置路由配置
      state.routesConfig = routesConfig
      localStorage.setItem(process.env.VUE_APP_ROUTES_KEY, JSON.stringify(routesConfig)) // 将所有路由信息存储到process.env.VUE_APP_ROUTES_KEY中
    },
    setSettings(state, settings) { // 设置用户配置
      state.settings = settings
      if  (JSON.stringify(settings) === undefined){
        settings = []
      }
      localStorage.setItem(process.env.VUE_APP_USER_SETTINGS_KEY, JSON.stringify(settings)) // 将所有用户配置信息存储到process.env.VUE_APP_USER_SETTINGS_KEY中
    },
    setProject(state, project) { // 设置项目信息
      state.project = project
      if  (JSON.stringify(project) === undefined){
        project = []
      }
      localStorage.setItem(process.env.VUE_APP_PROJECT_KEY, JSON.stringify(project)) // 将所有项目信息存储到process.env.VUE_APP_PROJECT_KEY中
    },
    setCompany(state, company) { // 设置公司信息
      state.company = company
      if  (JSON.stringify(company) === undefined){
        company = []
      }
      localStorage.setItem(process.env.VUE_APP_COMPANY_KEY, JSON.stringify(company)) // 将所有公司信息存储到process.env.VUE_APP_COMPANY_KEY中
    },
  }
}
