menu-icon-colors.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. 'market-presign',
  16. 'market-protocol',
  17. 'market-payment-chase',
  18. 'market-payment',
  19. 'market-freight'
  20. ])
  21. export const MENU_ICON_COLOR_DEFAULTS = {
  22. approve: { iconBg: 'transparent', iconFg: '' },
  23. 'oa-drafts': { iconBg: 'transparent', iconFg: '' },
  24. 'oa-pending': { iconBg: 'transparent', iconFg: '' },
  25. 'oa-done': { iconBg: 'transparent', iconFg: '' },
  26. 'oa-mine': { iconBg: 'transparent', iconFg: '' },
  27. 'oa-cc': { iconBg: 'transparent', iconFg: '' },
  28. 'oa-mentions': { iconBg: 'transparent', iconFg: '' },
  29. 'oa-wechat-notify': { iconBg: 'transparent', iconFg: '' },
  30. 'market-presign': { iconBg: 'transparent', iconFg: '' },
  31. 'market-protocol': { iconBg: 'transparent', iconFg: '' },
  32. 'market-payment-chase': { iconBg: 'transparent', iconFg: '' },
  33. 'market-payment': { iconBg: 'transparent', iconFg: '' },
  34. 'market-freight': { iconBg: 'transparent', iconFg: '' },
  35. 'orders-o': { iconBg: '#eef2f1', iconFg: '#3d524a' },
  36. 'apps-o': { iconBg: '#eef2f1', iconFg: '#3d524a' }
  37. }
  38. export function resolveMenuIconColors(menu) {
  39. const icon = String(menu?.icon || '').trim()
  40. // OA PNG 自带色:忽略接口下发的色底,避免灰底盖住图标
  41. if (OA_PNG_ICONS.has(icon)) {
  42. return { iconBg: 'transparent', iconFg: '' }
  43. }
  44. const fallback = MENU_ICON_COLOR_DEFAULTS[icon] || {}
  45. const iconBg = String(menu?.iconBg || menu?.icon_bg || fallback.iconBg || '').trim()
  46. const iconFg = String(menu?.iconFg || menu?.icon_fg || fallback.iconFg || '').trim()
  47. return { iconBg, iconFg }
  48. }