|
@@ -24,7 +24,10 @@
|
|
|
</span>
|
|
|
</div>
|
|
|
<div class="bg-white">
|
|
|
- <TimeLine :stepList="stepList" @itemClick="itemClick">
|
|
|
+ <h5 class="project-title">{{ projectName }}</h5>
|
|
|
+ <ProjectTimeline :stepList="stepList2" @itemClick="itemClick" />
|
|
|
+ <div style="height: 8px;background-color: brown;" v-if="false"></div>
|
|
|
+ <TimeLine :stepList="stepList" @itemClick="itemClick" v-if="false">
|
|
|
<template v-slot:step-footer="{ step }">
|
|
|
<span v-if="step.bidAmountFormatted">
|
|
|
{{ step.bidAmountFormatted }}中标
|
|
@@ -38,17 +41,21 @@
|
|
|
import ContentModuleCard from '@/views/article/ui/ContentModuleCard.vue'
|
|
|
import QuickMonitor from '@/composables/quick-monitor/component/QuickMonitor.vue'
|
|
|
import DownProjectReport from '@/views/article/components/DownProjectReport.vue'
|
|
|
+import ProjectTimeline from '@/views/article/ui/ContentProjectTimeline.vue'
|
|
|
import { TimeLine } from '@/ui'
|
|
|
import { mapState, mapGetters } from 'vuex'
|
|
|
import { replaceKeyword, openAppOrWxPage, formatMoney } from '@/utils'
|
|
|
import { LINKS } from '@/data'
|
|
|
+import LocationMixin from '@/utils/mixins/modules/location-to'
|
|
|
|
|
|
export default {
|
|
|
name: 'ContentProjectTimeline',
|
|
|
+ mixins: [LocationMixin],
|
|
|
components: {
|
|
|
TimeLine,
|
|
|
QuickMonitor,
|
|
|
DownProjectReport,
|
|
|
+ ProjectTimeline,
|
|
|
ContentModuleCard
|
|
|
},
|
|
|
props: {
|
|
@@ -110,15 +117,33 @@ export default {
|
|
|
])
|
|
|
}
|
|
|
})
|
|
|
+ },
|
|
|
+ stepList2() {
|
|
|
+ const projectProgress = this.expandModel.projectProgress || {}
|
|
|
+ const projectName = projectProgress.name || ''
|
|
|
+ const progressList = projectProgress?.list || []
|
|
|
+ return progressList.map((p) => {
|
|
|
+ return {
|
|
|
+ ...p,
|
|
|
+ step_time: p.time,
|
|
|
+ contentType: [p._data?.toptype, p._data?.subtype].filter((v) => v),
|
|
|
+ bidAmountFormatted: p.bidAmount ? formatMoney(p.bidAmount) : ''
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
async itemClick(item) {
|
|
|
- const id = item.id
|
|
|
- sessionStorage.setItem('bigvip-fid', JSON.stringify({ sid: id }))
|
|
|
if (this.beforeLeavePage) {
|
|
|
await this.beforeLeavePage()
|
|
|
}
|
|
|
+ // this.toProjectDetail(item)
|
|
|
+ this.toArticleContent(item)
|
|
|
+ },
|
|
|
+ toProjectDetail(item) {
|
|
|
+ const id = item.id
|
|
|
+ if (!id) return
|
|
|
+ sessionStorage.setItem('bigvip-fid', JSON.stringify({ sid: id }))
|
|
|
if (this.isNewBusiness) {
|
|
|
openAppOrWxPage(LINKS.商机管理项目进度监控, {
|
|
|
query: {}
|
|
@@ -128,12 +153,26 @@ export default {
|
|
|
query: {}
|
|
|
})
|
|
|
}
|
|
|
+ },
|
|
|
+ toArticleContent(item) {
|
|
|
+ const id = item.id
|
|
|
+ if (!id) return
|
|
|
+ if (item.isActive) return
|
|
|
+ this.__toArticlePage(id)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
+.project-title {
|
|
|
+ padding: 8px 16px;
|
|
|
+ padding-bottom: 0;
|
|
|
+ font-size: 15px;
|
|
|
+ line-height: 22px;
|
|
|
+ color: #171826;
|
|
|
+}
|
|
|
+
|
|
|
.action-right-container {
|
|
|
display: flex;
|
|
|
align-items: center;
|