123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- import BaseModel from '../../../core/base'
- import tranProjectProgress from '../transform/project-progress'
- import tranServices from '../transform/services'
- import { formatMoney } from '@jy/util'
- class ContentExpandModel extends BaseModel {
- constructor(config) {
- super(config)
- }
- createModel() {
- return {
- moduleShow: {
- // 招投标进度
- timeline: false,
- // 投标服务
- tbService: false,
- // 商机推荐(招标推荐)
- zbRecommend: false,
- // 客户推荐
- customerRecommend: false
- },
- projectProgress: {
- list: [],
- name: ''
- },
- services: [],
- recommendProjects: {
- list: [],
- search: {},
- more: false,
- total: 0,
- title: '超前项目',
- popup: false
- },
- recommendBuyers: {
- list: [],
- more: false,
- total: 0,
- title: ''
- },
- recommendWinners: {
- list: [],
- more: false,
- total: 0,
- title: ''
- },
- recommendCustomers: {}
- }
- }
- preSortBiddingList(list) {
- if (Array.isArray(list)) {
- return list.map((r) => {
- return this.preSortBiddingItem(r)
- })
- } else {
- return []
- }
- }
- preSortBiddingItem(item) {
- let bidAmount = ''
- // 有中标金额取中标金额,没有取预算,预算没有置空
- if (item?.bidAmount) {
- bidAmount = formatMoney(item?.bidAmount - 0)
- } else if (item?.budget) {
- bidAmount = formatMoney(item?.budget - 0)
- }
- const area = item.area || '全国'
- const type = item?.type || item?.subtype
- const buyerclass = item.buyerClass || ''
- const tagList = [
- area,
- buyerclass,
- type,
- bidAmount
- ].filter((v) => v)
- return {
- id: item.id,
- title: item.title,
- tags: tagList,
- area,
- type,
- buyerclass,
- bidAmount,
- time: item.publishTime ? item.publishTime * 1000 : undefined,
- _o: item
- }
- }
- formatModel(data, isInit = false) {
- const result = this.createModel()
- // 项目进度
- if (data?.schedule) {
- result.projectProgress = tranProjectProgress(data.schedule)
- }
- // 服务推荐
- if (data?.services) {
- result.services = tranServices(data.services)
- }
- if (data?.recommend?.ahead) {
- result.recommendProjects = data.recommend.ahead
- result.recommendProjects.list = this.preSortBiddingList(result.recommendProjects.list)
- }
- if (data?.recommend?.buyer) {
- result.recommendBuyers = data.recommend.buyer
- result.recommendBuyers.list = this.preSortBiddingList(result.recommendBuyers.list)
- }
- if (data?.recommend?.winner) {
- result.recommendWinners = data.recommend.winner
- result.recommendWinners.list = this.preSortBiddingList(result.recommendWinners.list)
- }
- if (data?.customerRec) {
- if (Array.isArray(data?.customerRec?.list)) {
- data.customerRec.list = data.customerRec.list.map((c) => {
- const arr = []
- if (c.area) {
- arr.push(c.area)
- }
- if (c.city) {
- arr.push(c.city)
- }
- return {
- ...c,
- totalAmountFormatted: c.totalAmount ? formatMoney(c.totalAmount) : '',
- areaCity: arr.length >= 1 ? arr.filter(a => !!a).join(' ') : ''
- }
- })
- }
- result.recommendCustomers = data.customerRec
- }
- // 根据数据情况判断模块是否展示
- // 招投标进度
- result.moduleShow.timeline = Array.isArray(result.projectProgress?.list) && result.projectProgress?.list.length > 0
- // 投标服务
- result.moduleShow.tbService = Array.isArray(result.services) && result.services.length > 0
- // 商机推荐(招标推荐)
- const recProjectsExist = Array.isArray(result.recommendProjects?.list) && result.recommendProjects?.list.length > 0
- const recBuyersExist = Array.isArray(result.recommendBuyers?.list) && result.recommendBuyers?.list.length > 0
- const recWinnersExist = Array.isArray(result.recommendWinners?.list) && result.recommendWinners?.list.length > 0
- result.moduleShow.zbRecommend = recProjectsExist || recBuyersExist || recWinnersExist
- // 客户推荐(这个比较特殊。如果是有权限用户(权限7),则有数据展示,无数据不展示。无权限7用户则一直展示,展示广告引导)
- // 在页面中使用是请注意权限判断,此处只判断是否有数据
- result.moduleShow.customerRecommend = Array.isArray(result.recommendCustomers?.list) && result.recommendCustomers?.list.length > 0
- return result
- }
- }
- /**
- * /publicapply/detail/advancedInfo
- * 扩展信息接口数据模型转换
- */
- function useContentExpandModel() {
- return new ContentExpandModel()
- }
- export default useContentExpandModel
|