123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- 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
|