setting.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { message } from 'ant-design-vue/es';
  2. // import defaultSettings from '../defaultSettings';
  3. let lessNodesAppended;
  4. const colorList = [
  5. {
  6. key: '薄暮', color: '#F5222D',
  7. },
  8. {
  9. key: '火山', color: '#FA541C',
  10. },
  11. {
  12. key: '日暮', color: '#FAAD14',
  13. },
  14. {
  15. key: '明青', color: '#13C2C2',
  16. },
  17. {
  18. key: '极光绿', color: '#52C41A',
  19. },
  20. {
  21. key: '拂晓蓝(默认)', color: '#1890FF',
  22. },
  23. {
  24. key: '极客蓝', color: '#2F54EB',
  25. },
  26. {
  27. key: '酱紫', color: '#722ED1',
  28. },
  29. ];
  30. const updateTheme = primaryColor => {
  31. // Don't compile less in production!
  32. /* if (process.env.NODE_ENV === 'production') {
  33. return;
  34. } */
  35. // Determine if the component is remounted
  36. if (!primaryColor) {
  37. return;
  38. }
  39. const hideMessage = message.loading('正在编译主题!', 0);
  40. function buildIt() {
  41. if (!window.less) {
  42. return;
  43. }
  44. setTimeout(() => {
  45. window.less
  46. .modifyVars({
  47. '@primary-color': primaryColor,
  48. })
  49. .then(() => {
  50. hideMessage();
  51. })
  52. .catch(() => {
  53. message.error('Failed to update theme');
  54. hideMessage();
  55. });
  56. }, 200);
  57. }
  58. if (!lessNodesAppended) {
  59. // insert less.js and color.less
  60. const lessStyleNode = document.createElement('link');
  61. const lessConfigNode = document.createElement('script');
  62. const lessScriptNode = document.createElement('script');
  63. lessStyleNode.setAttribute('rel', 'stylesheet/less');
  64. lessStyleNode.setAttribute('href', '/color.less');
  65. lessConfigNode.innerHTML = `
  66. window.less = {
  67. async: true,
  68. env: 'production',
  69. javascriptEnabled: true
  70. };
  71. `;
  72. lessScriptNode.src = 'https://gw.alipayobjects.com/os/lib/less.js/3.8.1/less.min.js';
  73. lessScriptNode.async = true;
  74. lessScriptNode.onload = () => {
  75. buildIt();
  76. lessScriptNode.onload = null;
  77. };
  78. document.body.appendChild(lessStyleNode);
  79. document.body.appendChild(lessConfigNode);
  80. document.body.appendChild(lessScriptNode);
  81. lessNodesAppended = true;
  82. } else {
  83. buildIt();
  84. }
  85. };
  86. const updateColorWeak = colorWeak => {
  87. // document.body.className = colorWeak ? 'colorWeak' : '';
  88. colorWeak ? document.body.classList.add('colorWeak') : document.body.classList.remove('colorWeak')
  89. };
  90. export { updateTheme, colorList, updateColorWeak }