CustomMessage_20250814103039.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // 在 DesignPic.tsx 中添加自定义消息组件
  2. export const CustomMessage = {
  3. success: (content: string) => {
  4. showCustomMessage('success', content);
  5. },
  6. error: (content: string) => {
  7. showCustomMessage('error', content);
  8. },
  9. warning: (content: string) => {
  10. showCustomMessage('warning', content);
  11. },
  12. info: (content: string) => {
  13. showCustomMessage('info', content);
  14. }
  15. };
  16. // 自定义消息显示函数
  17. const showCustomMessage = (type: 'success' | 'error' | 'warning' | 'info', message: string) => {
  18. // 移除已存在的消息
  19. const existingMessages = document.querySelectorAll('.custom-message');
  20. existingMessages.forEach(msg => msg.remove());
  21. const messageContainer = document.createElement('div');
  22. messageContainer.className = 'custom-message';
  23. messageContainer.style.cssText = `
  24. position: fixed;
  25. top: 20px;
  26. left: 50%;
  27. transform: translateX(-50%);
  28. padding: 12px 20px;
  29. border-radius: 4px;
  30. color: white;
  31. z-index: 10000;
  32. box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  33. display: flex;
  34. align-items: center;
  35. gap: 8px;
  36. min-width: 200px;
  37. text-align: center;
  38. justify-content: center;
  39. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  40. `;
  41. let icon = '';
  42. // 根据不同类型设置样式和图标
  43. switch(type) {
  44. case 'success':
  45. messageContainer.style.background = '#52c41a';
  46. icon = '✓';
  47. break;
  48. case 'error':
  49. messageContainer.style.background = '#ff4d4f';
  50. icon = '✗';
  51. break;
  52. case 'warning':
  53. messageContainer.style.background = '#faad14';
  54. icon = '⚠';
  55. break;
  56. default:
  57. messageContainer.style.background = '#1890ff';
  58. icon = 'ℹ';
  59. }
  60. messageContainer.innerHTML = `
  61. <span style="font-size: 16px;">${icon}</span>
  62. <span>${message}</span>
  63. `;
  64. document.body.appendChild(messageContainer);
  65. // 3秒后自动移除
  66. setTimeout(() => {
  67. if (messageContainer.parentNode) {
  68. messageContainer.parentNode.removeChild(messageContainer);
  69. }
  70. }, 3000);
  71. };
  72. // 然后在你的代码中替换所有的 Message 调用
  73. // 原来的:
  74. // Message.success("图片上传结束")
  75. // 替换为:
  76. // CustomMessage.success("图片上传结束")