import BaseModel from '../../../core/base' import { dateFormatter, formatMoney, getQueryParam } from '@jy/util' class CommonContentModel extends BaseModel { constructor(config) { super(config) } createModel() { const contentModel = { id: '', title: '', // 项目信息 projectName: '', projectCode: '', // 高亮词组 highlightKeys: [], tags: [], titleHighlighted: '', contentHighlighted: '', time: '', // 计算信息 isSelfSite: false, // 正文 content: '', // 是否需要展示原文链接 originalShow: false, // 附件列表 attachments: [], // 是否需要展示供应商报名 recommendedService: false, // 拟建,采购意向 isNiJian: false, isCaigouyixiang: false, isCanRead: false, // TDK tdk: { title: '', keywords: '', description: '' } } return contentModel } formatModel(data, isInit = false) { const result = this.createModel() const { baseInfo, detailInfo } = data result.id = baseInfo.id ? decodeURIComponent(baseInfo.id) : '' result.title = baseInfo.title result.projectName = baseInfo?.projectName result.projectCode = baseInfo?.projectCode result.isSelfSite = baseInfo?.site === '剑鱼信息发布平台' result.time = baseInfo?.publishTime ? dateFormatter(baseInfo.publishTime * 1000, 'yyyy-MM-dd') : '' result.highlightKeys = this.splitUrlKeys() result.content = detailInfo.detail || '' // 附件列表 result.attachments = detailInfo.attachments || [] // 原文链接是否显示 result.originalShow = detailInfo.originalShow || false // 是否显示供应商报名 result.recommendedService = baseInfo?.recommendedService === 1 // 拟建,采购意向 result.isNiJian = this.isNiJianCheck(baseInfo?.subType) result.isCaigouyixiang = this.isCaigouyixiangCheck(baseInfo?.subType) result.isCanRead = data?.canRead || false result.IsCustomTopNet = data?.topnet || false // TDK result.tdk.title = baseInfo.title result.tdk.description = baseInfo?.description result.tdk.keywords = baseInfo?.keywords // Tags result.tags = this.tranTags(data) result._ob = baseInfo result._od = detailInfo return result } isNiJianCheck(type) { return type === '拟建' } isCaigouyixiangCheck(type) { return type === '采购意向' } tranTags(data) { const { baseInfo } = data const defaultURL = 'javascript:void(0);' const area = [baseInfo?.area, baseInfo?.city, baseInfo?.district] .filter((v) => v) .join('-') const typeItem = { label: baseInfo?.topType, link: defaultURL } if (baseInfo?.subType) { typeItem.label = baseInfo.subType typeItem.link = baseInfo?.subTypeUrl || defaultURL } const amountItem = { label: formatMoney(baseInfo?.bidAmount ?? baseInfo?.budget ?? ''), link: defaultURL } const tags = [ // 地区 { label: area, link: baseInfo?.areaUrl || defaultURL }, // type typeItem, // buyer_class { label: baseInfo?.buyerClass, link: defaultURL }, // amount amountItem ].filter((v) => v.label) return tags.map((t) => { return { ...t, // 是否有正确格式的链接 hasLink: t.link !== defaultURL } }) } // 获取url高亮字符, 并截取 splitUrlKeys() { const kds = getQueryParam('kds') const keywords = getQueryParam('keywords') const s_words = kds || keywords let keysList = [] // 移动端订阅预览等跳转过来传的词 if (/^(subkey_)/.test(s_words)) { keysList = s_words.replace(/^(subkey_)/, '').split('_') let keyListArr = [] keysList.forEach((v) => { const vArr = v.split('+') keyListArr = keyListArr.concat(vArr) }) } else { const reg = /[_\+\s+]/ // 匹配 _+空格 if (reg.test(s_words)) { keysList = s_words.split(reg).filter(w => !!w) } else { keysList.push(s_words) } } return keysList } } function useCommonContentModel() { return new CommonContentModel() } export default useCommonContentModel