Ver código fonte

feat: [data-models/article] 迁移重构

zhangyuhan 1 ano atrás
pai
commit
0cbc35c9ba

+ 0 - 80
data/data-models/modules/article/content.js

@@ -1,80 +0,0 @@
-import { ref } from 'vue'
-import { dateFormatter, formatMoney } from '@jy/util'
-
-const contentModel = ref({
-  id: '',
-  title: '',
-  // 项目信息
-  projectName: '',
-  projectCode: '',
-  // 高亮词组
-  keys: [],
-  tags: [],
-  time: '',
-  // 计算信息
-  isSelfSite: false,
-  // TDK
-  tdk: {
-    title: '',
-    keywords: '',
-    description: ''
-  }
-})
-
-function tranTags(data) {
-  const { baseInfo } = data
-  const defaultURL = 'javascript:volid(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
-  }
-
-  const amountItem = {
-    label: formatMoney(baseInfo?.bidAmount ?? baseInfo?.budget ?? ''),
-    link: defaultURL
-  }
-
-  contentModel.value.tags = [
-    // 地区
-    {
-      label: area,
-      link: baseInfo?.areaUrl || defaultURL
-    },
-    // type
-    typeItem,
-    // buyer_class
-    {
-      label: baseInfo?.buyerClass,
-      link: defaultURL
-    },
-    // amount
-    amountItem
-  ].filter((v) => v.label)
-}
-
-function tranCommonTitle(data) {
-  const { baseInfo } = data
-  contentModel.value.id = baseInfo.id
-  contentModel.value.title = baseInfo.title
-  contentModel.value.projectName = baseInfo?.projectName
-  contentModel.value.projectCode = baseInfo?.projectCode
-  contentModel.value.isSelfSite = baseInfo?.site === '剑鱼信息发布平台'
-  contentModel.value.time = baseInfo?.publishTime
-    ? dateFormatter(baseInfo.publishTime * 1000, 'yyyy-MM-dd')
-    : ''
-  // TDK
-  contentModel.value.tdk.title = baseInfo.title
-  contentModel.value.tdk.description = baseInfo?.description
-  contentModel.value.tdk.keywords = baseInfo?.keywords
-}
-
-export { contentModel, tranTags, tranCommonTitle }

+ 0 - 30
data/data-models/modules/article/index.js

@@ -1,30 +0,0 @@
-import { contentModel, tranTags, tranCommonTitle } from './content.js'
-import { summaryModel, tranSummary } from './summary.js'
-
-/**
- * 接口数据模型转换
- * @param data
- */
-function tranApiModel(data) {
-  tranCommonTitle(data)
-  tranTags(data)
-  tranSummary(data)
-}
-
-/**
- * 使用类似 vuex store 选项式
- * @param data - /publicapply/detail/baseInfo 接口返回 data
- */
-function useContentInfo(data) {
-  tranApiModel(data)
-
-  return {
-    state: {
-      contentModel,
-      summaryModel
-    },
-    actions: {}
-  }
-}
-
-export { useContentInfo, contentModel, summaryModel }

+ 0 - 207
data/data-models/modules/article/summary.js

@@ -1,207 +0,0 @@
-import { ref } from 'vue'
-import { dateFormatter, formatMoney } from '@jy/util'
-
-/**
- * 摘要 Item 基础类
- */
-class SummaryItem {
-  constructor(map, data, config = { formatter: null, expands: {}, type: '' }) {
-    this.map = map
-    this.data = data
-    this.configMap = {}
-    this.config = config
-  }
-
-  append(key, { formatter = null, expands = {}, type } = {}) {
-    this.configMap[key] = {
-      formatter,
-      expands,
-      type
-    }
-  }
-
-  customCreate({ label, type, key, value, expands, formatter } = {}) {
-    return {
-      label,
-      type,
-      data: {
-        key,
-        value: typeof formatter === 'function' ? formatter(value) : value,
-        ...expands
-      }
-    }
-  }
-
-  create(key) {
-    const formatter = this.configMap[key]?.formatter || this.config.formatter
-    const value = this.data[key]
-    const expands = this.configMap[key]?.expands || this.config.expands
-    const type = this.configMap[key]?.type || this.config.type
-    return this.customCreate({
-      label: this.map[key],
-      type,
-      key,
-      value,
-      expands,
-      formatter
-    })
-  }
-
-  createList(list = Object.keys(this.map)) {
-    return list.map((key) => this.create(key))
-  }
-}
-
-const summaryModel = ref({
-  list: [],
-  // 采购单位
-  buyers: [],
-  // 中标单位
-  winners: []
-})
-
-function tranSummaryOfDefault(summary) {
-  const summaryMap = {
-    buyer: '采购单位',
-    buyerContactInfo: '采购联系人/电话',
-    agency: '代理机构',
-    agencyContactInfo: '代理联系人/电话',
-    signEndTime: '报名截止日期',
-    bidEndTime: '投标截止日期'
-  }
-
-  // 采购单位
-  if (summary?.buyer) {
-    summaryModel.value.buyers.push({
-      name: summary.buyer
-    })
-  }
-
-  const summaryItem = new SummaryItem(summaryMap, summary)
-  // 特殊字段处理
-  summaryItem.append('buyer', {
-    type: 'unit'
-  })
-  summaryItem.append('buyerContactInfo', {
-    type: 'contact'
-  })
-
-  const formatFn = (time) => {
-    if (time) {
-      return dateFormatter(time * 1000, 'yyyy-MM-dd')
-    } else {
-      return time
-    }
-  }
-
-  summaryItem.append('signEndTime', {
-    formatter: formatFn
-  })
-  summaryItem.append('bidEndTime', {
-    formatter: formatFn
-  })
-
-  const list = summaryItem.createList()
-  // 特殊字段处理
-  // TODO 中标候选人公示时,需要特殊处理
-  if (Array.isArray(summary?.winnerInfos)) {
-    summary.winnerInfos.forEach((item) => {
-      // 中标单位
-      if (item?.winner) {
-        summaryModel.value.winners.push({
-          name: item?.winner,
-          id: item?.winnerId
-        })
-      }
-
-      list.push(
-        summaryItem.customCreate({
-          label: '中标单位',
-          type: 'unit',
-          expands: {
-            value: item?.winner,
-            id: item?.winnerId,
-            _origin: item
-          }
-        })
-      )
-      list.push(
-        summaryItem.customCreate({
-          label: '中标联系人/电话',
-          type: 'contact',
-          expands: {
-            value: item?.winnerContactInfo,
-            id: item?.winnerId,
-            _origin: item
-          }
-        })
-      )
-    })
-  }
-
-  // TODO 确认金额字段
-  list.push(
-    summaryItem.customCreate({
-      label: '中标金额(元)',
-      expands: {
-        value: '测试金额'
-      }
-    })
-  )
-
-  return list
-}
-
-function tranSummaryOfProposed(summary) {
-  const summaryMap = {
-    projectName: '项目名称',
-    area: '省份',
-    buyer: '业主单位',
-    buyerClass: '业主类型',
-    totalInvestment: '总投资',
-    projectPeriod: '建设年限',
-    address: '建设地点',
-    approveDept: '审批机关',
-    approveContent: '审批事项',
-    approveCode: '审批代码',
-    approvalNumber: '批准文号',
-    approveTime: '审批时间',
-    approveStatus: '审批结果',
-    content: '建设内容'
-  }
-  // 采购单位
-  if (summary?.buyer) {
-    summaryModel.value.buyers.push({
-      name: summary.buyer
-    })
-  }
-
-  const summaryItem = new SummaryItem(summaryMap, summary)
-  // 特殊字段处理
-  summaryItem.append('address', {
-    expands: {
-      row: true
-    }
-  })
-  summaryItem.append('content', {
-    expands: {
-      row: true
-    }
-  })
-  summaryItem.append('totalInvestment', {
-    formatter: formatMoney
-  })
-
-  const list = summaryItem.createList()
-  return list
-}
-
-function tranSummary(data) {
-  const { baseInfo, abstract } = data
-  const isProposed = baseInfo?.subType === '拟建'
-  summaryModel.value.list = isProposed
-    ? tranSummaryOfProposed(abstract.proposed)
-    : tranSummaryOfDefault(abstract.default)
-}
-
-export { summaryModel, tranSummary, SummaryItem }