App.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <ConfigProvider :theme="appTheme" :locale="getAntdLocale">
  3. <AppProvider>
  4. <RouterView />
  5. </AppProvider>
  6. </ConfigProvider>
  7. </template>
  8. <script lang="ts" setup>
  9. import { watch, ref } from 'vue';
  10. import { theme } from 'ant-design-vue';
  11. import { ConfigProvider } from 'ant-design-vue';
  12. import { AppProvider } from '/@/components/Application';
  13. import { useTitle } from '/@/hooks/web/useTitle';
  14. import { useLocale } from '/@/locales/useLocale';
  15. import { useAppStore } from '/@/store/modules/app';
  16. import { useRootSetting } from '/@/hooks/setting/useRootSetting';
  17. import { ThemeEnum } from '/@/enums/appEnum';
  18. import { changeTheme } from '/@/logics/theme/index';
  19. const appStore = useAppStore();
  20. // 解决日期时间国际化问题
  21. import 'dayjs/locale/zh-cn';
  22. // support Multi-language
  23. const { getAntdLocale } = useLocale();
  24. useTitle();
  25. /**
  26. * 2024-04-07
  27. * liaozhiyang
  28. * 暗黑模式下默认文字白色,白天模式默认文字 #333
  29. * */
  30. const modeAction = (data) => {
  31. if (data.token) {
  32. if (getDarkMode.value === ThemeEnum.DARK) {
  33. Object.assign(data.token, { colorTextBase: 'fff' });
  34. } else {
  35. Object.assign(data.token, { colorTextBase: '#333' });
  36. }
  37. // 定义主题色 css 变量
  38. if (data.token.colorPrimary) {
  39. document.documentElement.style.setProperty('--j-global-primary-color', data.token.colorPrimary);
  40. }
  41. }
  42. };
  43. // update-begin--author:liaozhiyang---date:20231218---for:【QQYUN-6366】升级到antd4.x
  44. const appTheme: any = ref({});
  45. const { getDarkMode } = useRootSetting();
  46. watch(
  47. () => getDarkMode.value,
  48. (newValue) => {
  49. delete appTheme.value.algorithm;
  50. if (newValue === ThemeEnum.DARK) {
  51. appTheme.value.algorithm = theme.darkAlgorithm;
  52. }
  53. // update-begin--author:liaozhiyang---date:20240322---for:【QQYUN-8570】生产环境暗黑模式下主题色不生效
  54. if (import.meta.env.PROD) {
  55. changeTheme(appStore.getProjectConfig.themeColor);
  56. }
  57. // update-end--author:liaozhiyang---date:20240322---for:【QQYUN-8570】生产环境暗黑模式下主题色不生效
  58. modeAction(appTheme.value);
  59. appTheme.value = {
  60. ...appTheme.value,
  61. };
  62. },
  63. { immediate: true }
  64. );
  65. watch(
  66. appStore.getProjectConfig,
  67. (newValue) => {
  68. const primary = newValue.themeColor;
  69. const result = {
  70. ...appTheme.value,
  71. ...{
  72. token: {
  73. colorPrimary: primary,
  74. wireframe: true,
  75. fontSize: 14,
  76. colorTextBase: '#333',
  77. colorSuccess: '#55D187',
  78. colorInfo: primary,
  79. borderRadius: 4,
  80. sizeStep: 4,
  81. sizeUnit: 4,
  82. colorWarning: '#EFBD47',
  83. colorError: '#ED6F6F',
  84. fontFamily:
  85. '-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol',
  86. },
  87. },
  88. };
  89. appTheme.value = result;
  90. modeAction(result);
  91. },
  92. { immediate: true }
  93. );
  94. setTimeout(() => {
  95. appStore.getProjectConfig?.themeColor && changeTheme(appStore.getProjectConfig.themeColor);
  96. }, 300);
  97. // update-end--author:liaozhiyang---date:20231218---for:【QQYUN-6366】升级到antd4.x
  98. </script>
  99. <style lang="less">
  100. // update-begin--author:liaozhiyang---date:20230803---for:【QQYUN-5839】windi会影响到html2canvas绘制的图片样式
  101. img {
  102. display: inline-block;
  103. }
  104. // update-end--author:liaozhiyang---date:20230803---for:【QQYUN-5839】windi会影响到html2canvas绘制的图片样式
  105. </style>