index.js 3.03 KB
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// 模拟用户数据
const mockUsers = {
  grid001: {
    password: "123456",
    user: {
      id: "grid001",
      name: "张网格",
      role: "grid_manager",
      permissions: [
        "view_grid_opportunities",
        "assign_opportunities",
        "manage_opportunities"
      ],
      region: "南京市玄武区A网格",
      phone: "13812345678"
    }
  },
  county001: {
    password: "123456",
    user: {
      id: "county001",
      name: "李区长",
      role: "county_admin",
      permissions: [
        "view_county_opportunities",
        "manage_opportunities",
        "view_reports"
      ],
      region: "南京市玄武区",
      phone: "13887654321"
    }
  },
  city001: {
    password: "123456",
    user: {
      id: "city001",
      name: "王市长",
      role: "city_admin",
      permissions: [
        "view_city_opportunities",
        "manage_opportunities",
        "view_reports",
        "manage_system"
      ],
      region: "南京市",
      phone: "13765432109"
    }
  },
  province001: {
    password: "123456",
    user: {
      id: "province001",
      name: "赵省长",
      role: "province_admin",
      permissions: [
        "view_all_opportunities",
        "manage_opportunities",
        "view_reports",
        "manage_system"
      ],
      region: "江苏省",
      phone: "13654321098"
    }
  }
}

export default new Vuex.Store({
  state: {
    user: null
  },
  getters: {
    isAuthenticated: state => !!state.user,
    user: state => state.user
  },
  mutations: {
    SET_USER(state, user) {
      state.user = user
    },
    LOGOUT(state) {
      state.user = null
      localStorage.removeItem('user')
    }
  },
  actions: {
    login({ commit }, { username, password }) {
      return new Promise((resolve, reject) => {
        // 模拟登录验证
        const userData = mockUsers[username]
        if (userData && userData.password === password) {
          commit('SET_USER', userData.user)
          localStorage.setItem('user', JSON.stringify(userData.user))
          resolve(true)
        } else {
          reject(new Error('账号或密码错误'))
        }
      })
    },
    logout({ commit }) {
      commit('LOGOUT')
    },
    initializeAuth({ commit }) {
      // 尝试从localStorage恢复用户状态
      const savedUser = localStorage.getItem('user')
      if (savedUser) {
        commit('SET_USER', JSON.parse(savedUser))
      } else {
        // 如果没有保存的用户信息,提供默认用户用于演示
        const demoUser = {
          id: "demo001",
          name: "演示用户",
          role: "city_admin",
          permissions: [
            "view_city_opportunities",
            "manage_opportunities",
            "assign_opportunities",
            "view_reports",
            "manage_system"
          ],
          region: "南京市",
          phone: "13800138000"
        }
        commit('SET_USER', demoUser)
        sessionStorage.setItem('demoMode', 'true')
      }
    }
  },
  modules: {
  }
})