|
@@ -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 }
|