import Vue from 'vue';
import Vuex from 'vuex';
// import { deepClone } from '@/utils/index'
import { dealMkStorage } from '@/utils/common';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    lock: false, // 当没有权限或者过期限制时锁住所有操作  -- 暂不使用该属性
    loading: false, // 全局loading
    defaultAreaId: '', // 默认的子应用id
    currentAreaName: '', // 当前选中的子应用名称
    currentAreaId: '', // 当前选中的子应用id  areaId
    deleteFlag: false, // 当前选中的子应用是否被删除
    areaSubList: [], // 子应用列表
    moduleCode: 'welfare',
    project: '', // 当前项目
    menu: {}, // 对应mapping里的值
    extraHideLeft: '', // 特殊页面控制 asidemenu显示隐藏   为hide的时候隐藏 其余不起作用，按照原本的moduleCode里的showLeft控制
    mainHeight: 0, // main的高度
    routePath: []
  },
  mutations: {
    updateRoutePath(state, routePath) {
      state.routePath = routePath;
    },
    updateMainHeight(state, mainHeight) {
      state.mainHeight = mainHeight;
    },
    updateLock(state, lock) {
      state.lock = lock;
    },
    // 根据id更新某个子应用name
    updateAreaName(state, { areaId, areaName }) {
      const idx = state.areaSubList.findIndex(v => {
        return v.areaId === areaId;
      });
      if (idx !== -1) {
        state.areaSubList[idx].areaName = areaName;
        // 如果更新的subApp是当前子应用，更改当前子应用name
        if (state.currentAreaId === areaId) {
          state.currentAreaName = areaName;
        }
      }
    },
    // 设置子应用列表
    setSubAppList(state, list) {
      state.areaSubList = list;
    },
    // 设置默认子应用id
    setDefaultSubAppId(state, id) {
      // ---废弃
    },
    // 设置当前选中的子应用id
    setCurrentSubApp(state, id) {
      const curr = state.areaSubList.find(v => {
        return v.areaId === id;
      }) || {};
      dealMkStorage(state.moduleCode, 'set', id); // storage 默认子应用id
      state.currentAreaId = curr.areaId || '';
      state.currentAreaName = curr.areaName || '';
      state.deleteFlag = curr.deleteFlag || false;
    },
    // 设置当前项目key,设置menuCode
    setProject(state, project) {
      state.project = project || '';
    },
    // 更新额外asidemenu控制
    updateExtraHideLeft(state, newValue) {
      state.extraHideLeft = newValue || '';
    }
  },
  actions: {
    // 更新默认子应用 -- 更新时调用  -- unuse
    async setDefaultAppId(state, areaId) {
      // let res = await subAppUpdate({}, { areaId, moduleCode: state.getters.moduleCode });
      // if (res.code === SUCCESS_CODE) {
      this.commit('setDefaultSubAppId', areaId);
      // }
    }
  },
  plugins: []
});
