setSystem.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import { ref } from "vue";
  2. import { title } from "./store/system";
  3. import { appConstant } from "./app";
  4. import {
  5. caseFileTypes,
  6. caseFiles,
  7. insertCaseFile,
  8. deleteCaseFile,
  9. updateCaseFile,
  10. axios,
  11. caseFileInfo,
  12. saveCaseFileInfo,
  13. getSysSetting,
  14. updateSysSetting,
  15. } from "@/request";
  16. import { isOfflineMode, getOfflineDataPath, fetchOfflineJson } from "@/util/offline";
  17. const modules = import.meta.glob("@/assets/style/theme/*.scss", {
  18. query: "?inline",
  19. });
  20. const appId = import.meta.env.VITE_APP_APP;
  21. const initSysSetting = async () => {
  22. console.log(isOfflineMode(), import.meta.env.VITE_OFFLINE, 77777777)
  23. if (isOfflineMode()) {
  24. try {
  25. const base = getOfflineDataPath();
  26. console.log(base, 88888888)
  27. const dict = await fetchOfflineJson<Record<string, any>>([
  28. `${base}/package/data.json`,
  29. `/package/data.json`,
  30. ]);
  31. const entry = dict["/fusion/systemSetting/list"];
  32. const list: any[] = Array.isArray(entry?.data) ? entry.data : (Array.isArray(entry?.list) ? entry.list : []);
  33. let params = window.location.hash;
  34. let query = params.indexOf('?') > -1 ? params.split('?')[1] : '';
  35. let fromRoute = (new URLSearchParams(query).get('fromRoute') || appId).toLowerCase();
  36. const item = list.find((it) => it.platformKey === fromRoute);
  37. if (item) {
  38. systemData.value.name = item.title;
  39. systemData.value.color = item.themeColour;
  40. localStorage.setItem('f-themeColour', item.themeColour);
  41. refresh();
  42. return;
  43. }
  44. } catch (e) {
  45. }
  46. }
  47. axios.get(getSysSetting, { params: { platformKey: appId } }).then((data) => {
  48. systemData.value.name = data.data.title;
  49. systemData.value.color = data.data.themeColour;
  50. localStorage.setItem('f-themeColour', data.data.themeColour);
  51. refresh();
  52. });
  53. };
  54. initSysSetting();
  55. const update = () => {
  56. axios.post(updateSysSetting, {
  57. title: systemData.value.name,
  58. themeColour: systemData.value.color,
  59. });
  60. };
  61. export const themeColors = [
  62. "d8000a",
  63. "0960bd",
  64. "0084f4",
  65. "009688",
  66. "536dfe",
  67. "ff5c93",
  68. "ee4f12",
  69. "0096c7",
  70. "9c27b0",
  71. "ff9800",
  72. ];
  73. export const systemData = ref({
  74. name: appConstant.name,
  75. color: themeColors[0],
  76. });
  77. const $style = document.createElement("style");
  78. $style.setAttribute("type", "text/css");
  79. document.body.appendChild($style);
  80. const refresh = async () => {
  81. title.value = systemData.value.name;
  82. const key = Object.keys(modules).find((key) =>
  83. key.includes(systemData.value.color)
  84. );
  85. if (key) {
  86. const res1: any = await modules[key]();
  87. const res2: any = await import("@/assets/style/public.scss?inline");
  88. $style.innerHTML = res1.default + res2.default;
  89. }
  90. };
  91. export const setTheme = async (color: string) => {
  92. systemData.value.color = color;
  93. await update();
  94. refresh();
  95. };
  96. export const setTitle = async (d: string) => {
  97. systemData.value.name = d;
  98. await update();
  99. refresh();
  100. };
  101. export const setSettings = async (title: string, color: string) => {
  102. systemData.value.name = title;
  103. systemData.value.color = color;
  104. await update();
  105. refresh();
  106. };