menu-icon-colors.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * 主页宫格图标配色:每项可自定义 iconBg / iconFg。
  3. * 未配置时按 icon 名回退到此处默认色对。
  4. */
  5. /** OA 宫格 PNG 自带颜色,不套色底 */
  6. const OA_PNG_ICONS = new Set([
  7. 'approve',
  8. 'oa-drafts',
  9. 'oa-pending',
  10. 'oa-done',
  11. 'oa-mine',
  12. 'oa-cc',
  13. 'oa-mentions',
  14. 'oa-wechat-notify'
  15. ])
  16. export const MENU_ICON_COLOR_DEFAULTS = {
  17. approve: { iconBg: 'transparent', iconFg: '' },
  18. 'oa-drafts': { iconBg: 'transparent', iconFg: '' },
  19. 'oa-pending': { iconBg: 'transparent', iconFg: '' },
  20. 'oa-done': { iconBg: 'transparent', iconFg: '' },
  21. 'oa-mine': { iconBg: 'transparent', iconFg: '' },
  22. 'oa-cc': { iconBg: 'transparent', iconFg: '' },
  23. 'oa-mentions': { iconBg: 'transparent', iconFg: '' },
  24. 'oa-wechat-notify': { iconBg: 'transparent', iconFg: '' },
  25. 'orders-o': { iconBg: '#eef2f1', iconFg: '#3d524a' },
  26. 'apps-o': { iconBg: '#eef2f1', iconFg: '#3d524a' }
  27. }
  28. export function resolveMenuIconColors(menu) {
  29. const icon = String(menu?.icon || '').trim()
  30. // OA PNG 自带色:忽略接口下发的色底,避免灰底盖住图标
  31. if (OA_PNG_ICONS.has(icon)) {
  32. return { iconBg: 'transparent', iconFg: '' }
  33. }
  34. const fallback = MENU_ICON_COLOR_DEFAULTS[icon] || {}
  35. const iconBg = String(menu?.iconBg || menu?.icon_bg || fallback.iconBg || '').trim()
  36. const iconFg = String(menu?.iconFg || menu?.icon_fg || fallback.iconFg || '').trim()
  37. return { iconBg, iconFg }
  38. }