巴青农资商城

messageDisplay.js 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {
  2. MESSAGE_READ_UNREAD,
  3. MESSAGE_LINK_MERCHANT_ENTRY
  4. } from '@/constants/message'
  5. /** 未读角标文案(99+ 封顶) */
  6. export function formatMessageBadge(count) {
  7. const n = Number(count) || 0
  8. if (n <= 0) return ''
  9. return n > 99 ? '99+' : String(n)
  10. }
  11. function isUnread(readFlag) {
  12. return String(readFlag) === MESSAGE_READ_UNREAD
  13. }
  14. /** 是否驳回类消息(用于醒目样式) */
  15. export function isRejectMessage(title) {
  16. return (title || '').includes('未通过') || (title || '').includes('驳回')
  17. }
  18. /** 列表行 VO → 卡片模型 */
  19. export function mapMessageListRow(row) {
  20. if (!row) return null
  21. const title = row.title || ''
  22. return {
  23. messageId: row.messageId,
  24. title,
  25. summary: row.summary || '',
  26. readFlag: row.readFlag,
  27. unread: isUnread(row.readFlag),
  28. createTime: row.createTime || '',
  29. bizType: row.bizType || '',
  30. bizId: row.bizId,
  31. isReject: isRejectMessage(title)
  32. }
  33. }
  34. export function mapMessageList(rows) {
  35. return (rows || []).map(mapMessageListRow).filter(Boolean)
  36. }
  37. /** 详情 VO → 页面模型 */
  38. export function mapMessageDetail(data) {
  39. if (!data) return null
  40. const title = data.title || ''
  41. return {
  42. messageId: data.messageId,
  43. title,
  44. content: data.content || '',
  45. readFlag: data.readFlag,
  46. unread: isUnread(data.readFlag),
  47. createTime: data.createTime || '',
  48. bizType: data.bizType || '',
  49. bizId: data.bizId,
  50. linkType: data.linkType || '',
  51. linkAvailable: data.linkAvailable !== false,
  52. isReject: isRejectMessage(title),
  53. showEntryLink: data.linkType === MESSAGE_LINK_MERCHANT_ENTRY && data.linkAvailable !== false
  54. }
  55. }