king
2020-10-26 1b89aa4493d1c9768447f2f480d594cdb8077fdc
src/store/reducer.js
@@ -1,30 +1,168 @@
import md5 from 'md5'
import moment from 'moment'
import * as Type from './action-type'
let _collapse = localStorage.getItem('collapse') === 'true'
let _level = 10
let _Mlevel = sessionStorage.getItem('Member_Level')
if (_Mlevel) {
  if (_Mlevel === md5('mksoft' + moment().format('YYYYMM') + 10)) {
    _level = 10
  } else if (_Mlevel === md5('mksoft' + moment().format('YYYYMM') + 20)) {
    _level = 20
  } else if (_Mlevel === md5('mksoft' + moment().format('YYYYMM') + 30)) {
    _level = 30
  }
}
let defaultState = {
  selectedMainMenu: '', // 已选主菜单
  tabviews: [], // 导航栏
  collapse: false // 是否收起侧边栏导航
  tabviews: [],         // 导航栏
  collapse: _collapse,  // 是否收起侧边栏导航
  isiframe: false,      // 是否为iframe窗口
  debug: false,         // 知否可以复制菜单参数, 是否可进入编辑模式
  editState: false,     // 是否为编辑状态,值为false、true
  editLevel: null,      // 编辑菜单级别,值为level1、level2、level3、HS
  refreshTab: null,     // 刷新tabview页面信息
  permRoles: [],        // 用户角色列表
  permAction: {},       // 用户按钮权限
  permMenus: {},        // 用户三级菜单权限
  permFuncField: [],    // 系统模块
  sysRoles: [],         // 系统角色列表
  dataManager: false,   // 数据管理员
  memberLevel: _level,  // 会员等级
  customMenu: null      // 编辑中的菜单(自定义页面)
}
// 用户消息
export default (state = defaultState, action = {}) => {
  switch (action.type) {
    case Type.Toggle_COLLAPSE:
    // 切换菜单栏展开合并状态
      return {
        ...state,
        collapse: action.collapse
      }
    case Type.MODIFY_MAINMENU:
    // 切换主菜单
      return {
        ...state,
        selectedMainMenu: action.selectedMainMenu
      }
    case Type.MODIFY_TABVIEW:
    // tab页改变
      return {
        ...state,
        tabviews: action.tabviews
      }
    case Type.TOGGLE_ISIFRAME:
    // 切换是否为iframe状态
      return {
        ...state,
        isiframe: action.isiframe
      }
    case Type.RESET_STATE:
    // 重置默认参数(退出时)
      return {
        ...state,
        ...{
          selectedMainMenu: '',
          tabviews: [],
          collapse: false,
          isiframe: false
        }
      }
    case Type.RESET_DEBUG:
    // 切换debug状态
      return {
        ...state,
        debug: true
      }
    case Type.REFRESH_TABVIEW:
    // 刷新tab页面
      return {
        ...state,
        refreshTab: action.refreshTab
      }
    case Type.RESET_EDITSTATE:
    // 重置编辑状态
      if (action.editState) {
        state.tabviews = []
      } else {
        state.tabviews = [{
          MenuID: 'home_page_id',
          MenuName: '首页',
          selected: true,
          type: 'Home'
        }]
      }
      return {
        ...state,
        editState: action.editState,
        collapse: false
      }
    case Type.RESET_EDITLEVEL:
    // 重置编辑级别
      return {
        ...state,
        editLevel: action.editLevel
      }
    case Type.INIT_ACTIONPERMISSION:
    // 初始化按钮权限
      return {
        ...state,
        permRoles: action.permRoles,
        permAction: action.permAction
      }
    case Type.INIT_PERMISSION:
      // 初始化角色列表及创建存储过程可用字段
      return {
        ...state,
        sysRoles: action.sysRoles,
        permFuncField: action.permFuncField
      }
    case Type.INIT_MENUPERMISSION:
    // 初始化三级菜单权限
      return {
        ...state,
        permMenus: action.permMenus
      }
    case Type.MODIFY_MEMBERLEVEL:
      // 修改会员等级
      return {
        ...state,
        memberLevel: action.memberLevel
      }
    case Type.MODIFY_DATAMANAGER:
      // 修改数据权限
      return {
        ...state,
        dataManager: action.dataManager
      }
    case Type.MODIFY_CUSTOMMENU:
      // 修改自定义菜单信息
      return {
        ...state,
        customMenu: action.customMenu
      }
    case Type.LOGOUT:
      return {
        selectedMainMenu: '',
        tabviews: [],
        collapse: localStorage.getItem('collapse') === 'true',
        isiframe: false,
        debug: false,
        editState: false,
        editLevel: null,
        refreshTab: null,
        permAction: {},
        permFuncField: [],
        sysRoles: [],
        permMenus: {},
        customMenu: null
      }
    default:
      return state
  }
}
}