app.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. // +----------------------------------------------------------------------
  2. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  3. // +----------------------------------------------------------------------
  4. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  5. // +----------------------------------------------------------------------
  6. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  7. // +----------------------------------------------------------------------
  8. // | Author: CRMEB Team <admin@crmeb.com>
  9. // +----------------------------------------------------------------------
  10. import {
  11. getBreadCrumbList,
  12. setTagNavListInLocalstorage,
  13. // getMenuByRouter,
  14. getTagNavListFromLocalstorage,
  15. getHomeRoute,
  16. getNextRoute,
  17. routeHasExist,
  18. routeEqual,
  19. getRouteTitleHandled,
  20. localSave,
  21. localRead,
  22. } from '@/libs/util';
  23. // import { saveErrorLogger } from '@/api/data'
  24. import router from '@/router';
  25. // import routers from '@/router/routers'
  26. import config from '@/config';
  27. const { homeName } = config;
  28. const closePage = (state, route) => {
  29. const nextRoute = getNextRoute(state.tagNavList, route);
  30. state.tagNavList = state.tagNavList.filter((item) => {
  31. return !routeEqual(item, route);
  32. });
  33. router.push(nextRoute);
  34. };
  35. export default {
  36. state: {
  37. breadCrumbList: [],
  38. tagNavList: [],
  39. homeRoute: {},
  40. local: localRead('local'),
  41. errorList: [],
  42. hasReadErrorPage: false,
  43. },
  44. getters: {
  45. // menuList: (state, getters, rootState) => getMenuByRouter(routers, rootState.user.access),
  46. errorCount: (state) => state.errorList.length,
  47. },
  48. mutations: {
  49. setBreadCrumb(state, route) {
  50. state.breadCrumbList = getBreadCrumbList(route, state.homeRoute);
  51. },
  52. setHomeRoute(state, routes) {
  53. state.homeRoute = getHomeRoute(routes, homeName);
  54. },
  55. setTagNavList(state, list) {
  56. let tagList = [];
  57. if (list) {
  58. tagList = [...list];
  59. } else tagList = getTagNavListFromLocalstorage() || [];
  60. if (tagList[0] && tagList[0].name !== homeName) tagList.shift();
  61. let homeTagIndex = tagList.findIndex((item) => item.name === homeName);
  62. if (homeTagIndex > 0) {
  63. let homeTag = tagList.splice(homeTagIndex, 1)[0];
  64. tagList.unshift(homeTag);
  65. }
  66. state.tagNavList = tagList;
  67. setTagNavListInLocalstorage([...tagList]);
  68. },
  69. closeTag(state, route) {
  70. let tag = state.tagNavList.filter((item) => routeEqual(item, route));
  71. route = tag[0] ? tag[0] : null;
  72. if (!route) return;
  73. closePage(state, route);
  74. },
  75. addTag(state, { route, type = 'unshift' }) {
  76. let router = getRouteTitleHandled(route);
  77. let i = state.tagNavList.findIndex((item) => item.path === route.path);
  78. if (!routeHasExist(state.tagNavList, router)) {
  79. if (type === 'push')
  80. if (i < 1) state.tagNavList.push(router);
  81. else {
  82. if (router.name === homeName) state.tagNavList.unshift(router);
  83. else state.tagNavList.splice(1, 0, router);
  84. }
  85. setTagNavListInLocalstorage([...state.tagNavList]);
  86. }
  87. },
  88. setLocal(state, lang) {
  89. localSave('local', lang);
  90. state.local = lang;
  91. },
  92. addError(state, error) {
  93. state.errorList.push(error);
  94. },
  95. setHasReadErrorLoggerStatus(state, status = true) {
  96. state.hasReadErrorPage = status;
  97. },
  98. clearAll(state) {
  99. state.tagNavList = [];
  100. },
  101. },
  102. actions: {
  103. addErrorLog({ commit, rootState }, info) {
  104. if (!window.location.href.includes('error_logger_page')) commit('setHasReadErrorLoggerStatus', false);
  105. const {
  106. user: { token, userId, userName },
  107. } = rootState;
  108. let data = {
  109. ...info,
  110. time: Date.parse(new Date()),
  111. token,
  112. userId,
  113. userName,
  114. };
  115. // saveErrorLogger(info).then(() => {
  116. // commit('addError', data)
  117. // })
  118. },
  119. },
  120. };