expand.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import BaseModel from '../../../core/base'
  2. import tranProjectProgress from '../transform/project-progress'
  3. import tranServices from '../transform/services'
  4. import { formatMoney } from '@jy/util'
  5. class ContentExpandModel extends BaseModel {
  6. constructor(config) {
  7. super(config)
  8. }
  9. createModel() {
  10. return {
  11. projectProgress: {
  12. list: [],
  13. name: ''
  14. },
  15. services: [],
  16. recommendProjects: {
  17. list: [],
  18. more: false,
  19. total: 0,
  20. title: '超前项目',
  21. popup: {}
  22. },
  23. recommendBuyers: {
  24. list: [],
  25. more: false,
  26. total: 0,
  27. title: '',
  28. popup: {}
  29. },
  30. recommendWinners: {
  31. list: [],
  32. more: false,
  33. total: 0,
  34. title: '',
  35. popup: {}
  36. },
  37. recommendCustomers: {}
  38. }
  39. }
  40. preSortBiddingList(list) {
  41. if (Array.isArray(list)) {
  42. return list.map((r) => {
  43. return this.preSortBiddingItem(r)
  44. })
  45. } else {
  46. return []
  47. }
  48. }
  49. preSortBiddingItem(item) {
  50. let bidAmount = ''
  51. if (item?.bidAmount) {
  52. bidAmount = formatMoney(item?.bidAmount - 0)
  53. } else if (item?.budget) {
  54. bidAmount = formatMoney(item?.budget - 0)
  55. }
  56. const tagList = [
  57. item.area || '全国',
  58. item.buyerClass,
  59. item?.type || item?.subtype,
  60. // 有中标金额取中标金额,没有取预算,预算没有置空
  61. bidAmount
  62. ].filter((v) => v)
  63. return {
  64. id: item.id,
  65. title: item.title,
  66. tags: tagList,
  67. time: item.publishTime ? item.publishTime * 1000 : undefined,
  68. _o: item
  69. }
  70. }
  71. formatModel(data, isInit = false) {
  72. const result = this.createModel()
  73. // 项目进度
  74. if (data?.schedule) {
  75. result.projectProgress = tranProjectProgress(data.schedule)
  76. }
  77. // 服务推荐
  78. if (data?.services) {
  79. result.services = tranServices(data.services)
  80. }
  81. if (data?.recommend?.ahead) {
  82. result.recommendProjects = data.recommend.ahead
  83. result.recommendProjects.list = this.preSortBiddingList(result.recommendProjects.list)
  84. }
  85. if (data?.recommend?.buyer) {
  86. result.recommendBuyers = data.recommend.buyer
  87. result.recommendBuyers.list = this.preSortBiddingList(result.recommendBuyers.list)
  88. }
  89. if (data?.recommend?.winner) {
  90. result.recommendWinners = data.recommend.winner
  91. result.recommendWinners.list = this.preSortBiddingList(result.recommendWinners.list)
  92. }
  93. if (data?.customerRec) {
  94. if (Array.isArray(data?.customerRec?.customer)) {
  95. data.customerRec.customer = data.customerRec.customer.map((c) => {
  96. const arr = []
  97. if (c.area) {
  98. arr.push(c.area)
  99. }
  100. if (c.city) {
  101. arr.push(c.city)
  102. }
  103. return {
  104. ...c,
  105. totalAmountFormatted: c.totalAmount ? formatMoney(c.totalAmount) : '',
  106. areaCity: arr.length >= 1 ? arr.filter(a => !!a).join(' ') : ''
  107. }
  108. })
  109. }
  110. result.recommendCustomers = data.customerRec
  111. }
  112. return result
  113. }
  114. }
  115. /**
  116. * /publicapply/detail/advancedInfo
  117. * 扩展信息接口数据模型转换
  118. */
  119. function useContentExpandModel() {
  120. return new ContentExpandModel()
  121. }
  122. export default useContentExpandModel