document-title-util.js 991 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { routeI18nKey, findTabByPath } from 'ele-admin/es/ele-pro-layout/util';
  2. import { PROJECT_NAME, REDIRECT_PATH, I18N_ENABLE } from '@/config/setting';
  3. /**
  4. * 修改浏览器标题
  5. * @param title 标题
  6. */
  7. export function setDocumentTitle(title) {
  8. const names = [];
  9. if (title) {
  10. names.push(title);
  11. }
  12. if (PROJECT_NAME) {
  13. names.push(PROJECT_NAME);
  14. }
  15. document.title = names.join(' - ');
  16. }
  17. /**
  18. * 路由切换更新浏览器标题
  19. * @param route 路由信息
  20. * @param $t i18n
  21. */
  22. export function updateDocumentTitle(route, $t, tabs) {
  23. const { path, meta, fullPath } = route;
  24. if (path.includes(REDIRECT_PATH)) {
  25. return;
  26. }
  27. const pathKey = routeI18nKey(path);
  28. if (!pathKey) {
  29. return;
  30. }
  31. const tab = findTabByPath(fullPath, tabs);
  32. const title = tab?.title || meta?.title;
  33. if (!I18N_ENABLE) {
  34. setDocumentTitle(title);
  35. return;
  36. }
  37. const k = `route.${pathKey}._name`;
  38. const v = $t(k);
  39. setDocumentTitle(v === k || !v ? title : v);
  40. }