import { getSiteBusiness, getDepartment, getWindow } from "@/api/site";
import { getHomeData } from "@/api/home";
import { findInTree } from "@/utils";
export default {
  namespaced: true,
  state: {
    menusList: [], // 原始菜单列表
    menus: [], // 格式化菜单列表
    routes: [], // 路由列表
    secondaryRoutes: [], // 二级路由
    barList: [], // 登录返回菜单
    homeData: {}, // 首页数据
    token: "",
    siteId: "", // 站点id
    userInfo: {}, // 用户信息
    sysName: "", // 系统名称
    sysLogo: "", // 系统logo
    path: "", // 门户跳转过来的路由
    areaTree: [], // 个人区域树
    businessList: [], // 站点业务列表
    deptList: [], // 站点部门列表
    windowList: [], // 站点窗口列表
    permissions: [], // 按钮权限字符列表
  },
  getters: {
    siteId(state) {
      return state.siteId;
    },
    deptList(state) {
      return state.deptList;
    },
    userInfo(state) {
      return state.userInfo;
    },
    token(state) {
      return state.token;
    },
    path(state) {
      return state.path;
    },
    barList(state) {
      let { barList } = state.homeData;
      return barList || [];
    },
    routes(state) {
      return state.routes;
    },
    menus(state) {
      return state.menus;
    },
    permissions(state) {
      return state.permissions;
    },
    menusList(state) {
      return state.menusList;
    },
    secondaryRoutes(state) {
      return state.secondaryRoutes;
    },
  },
  mutations: {
    SET_menusList(state, menusList) {
      state.menusList = menusList;
    },
    SET_routes(state, routes) {
      state.routes = routes;
    },
    SET_permissions(state, permissions) {
      state.permissions = permissions;
    },
    SET_secondaryRoutes(state, secondaryRoutes) {
      state.secondaryRoutes = secondaryRoutes;
    },
    SET_path(state, path) {
      state.path = path;
    },
    SET_menus(state, menus) {
      state.menus = menus;
    },
    SET_siteId(state, siteId) {
      state.siteId = siteId;
    },
    SET_userInfo(state, userInfo) {
      state.userInfo = userInfo;
    },
    SET_sysName(state, sysName) {
      state.sysName = sysName;
    },
    SET_sysLogo(state, sysLogo) {
      state.sysLogo = sysLogo;
    },
    SET_token(state, token) {
      state.token = token;
    },
    SET_areaTree(state, areaTree) {
      state.areaTree = areaTree;
    },
    SET_businessList(state, businessList) {
      state.businessList = businessList;
    },
    SET_deptList(state, deptList) {
      state.deptList = deptList;
    },
    SET_windowList(state, windowList) {
      state.windowList = windowList;
    },
    SET_barList(state, barList) {
      state.barList = barList;
    },
    SET_homeData(state, homeData) {
      state.homeData = homeData;
    },

    // 重置所有仓库状态
    reset: () => {},
  },
  actions: {
    // 获取首页信息
    getHomeData: async (context) => {
      let res = await getHomeData();
      if (res.data.code == 1) {
        let { data } = res.data;
        context.commit("SET_homeData", data);
      }
    },
    // 获取站点业务列表
    getBusiness: async (context, siteId) => {
      let res = await getSiteBusiness({
        page: 1,
        size: -1,
        siteId,
      });
      if (res.data.code == 1) {
        let { data } = res.data.data;
        context.commit("SET_businessList", data);
      }
    },
    // 获取站点部门列表
    getDeptList: async (context, siteId) => {
      let res = await getDepartment({
        page: 1,
        size: -1,
        siteId,
      });
      if (res.data.code == 1) {
        let { data } = res.data.data;
        context.commit("SET_deptList", data);
      }
    },
    // 获取站点窗口列表
    getWindowList: async (context, siteId) => {
      let res = await getWindow({
        page: 1,
        size: -1,
        siteId,
      });
      if (res.data.code == 1) {
        let { data } = res.data.data;
        context.commit("SET_windowList", data);
      }
    },
    // 设置二级路由
    setSecondaryRoutes(context, value) {
      let routes = findInTree(context.state.menus, "path", value);
      let secondaryRoutes = routes.children || [];
      context.commit("SET_secondaryRoutes", secondaryRoutes);
    },
  },
};