|
@@ -63,19 +63,15 @@ function doSelectTab(item) {
|
|
scrollToTop(goElement, 45)
|
|
scrollToTop(goElement, 45)
|
|
}
|
|
}
|
|
|
|
|
|
-const testTitle = replaceKeyword(
|
|
|
|
- '淮安市高级职业技术学校台式电脑采购项目二次招标中标公告',
|
|
|
|
- '淮安市高级职业技术学校',
|
|
|
|
- `<span class="highlight-text">淮安市高级职业技术学校</span>`
|
|
|
|
-)
|
|
|
|
-
|
|
|
|
|
|
+// 招标、采购进度
|
|
const timeLineList = computed(() => {
|
|
const timeLineList = computed(() => {
|
|
return ContentExpandsModel.value.projectProgress.list.map((v) => {
|
|
return ContentExpandsModel.value.projectProgress.list.map((v) => {
|
|
return {
|
|
return {
|
|
- content: replaceKeyword(v.title, ContentModel.value.projectName, [
|
|
|
|
- '<span class="highlight-text">',
|
|
|
|
- '</span>'
|
|
|
|
- ]),
|
|
|
|
|
|
+ content: replaceKeyword(
|
|
|
|
+ v.title,
|
|
|
|
+ ContentExpandsModel.value.projectProgress.name,
|
|
|
|
+ ['<span class="highlight-text">', '</span>']
|
|
|
|
+ ),
|
|
s_id: v.id,
|
|
s_id: v.id,
|
|
tags: [v.tag],
|
|
tags: [v.tag],
|
|
time: v.time,
|
|
time: v.time,
|
|
@@ -84,6 +80,52 @@ const timeLineList = computed(() => {
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+const recommendProjects = computed(() => {
|
|
|
|
+ const list = ContentExpandsModel.value.recommendProjects.list.map((v) => {
|
|
|
|
+ return Object.assign({}, v, {
|
|
|
|
+ _id: v.id,
|
|
|
|
+ matchKeys: []
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ return {
|
|
|
|
+ list,
|
|
|
|
+ title: ContentExpandsModel.value.recommendProjects.title,
|
|
|
|
+ total: ContentExpandsModel.value.recommendProjects.total,
|
|
|
|
+ more: ContentExpandsModel.value.recommendProjects.more
|
|
|
|
+ }
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const recommendBuyers = computed(() => {
|
|
|
|
+ const list = ContentExpandsModel.value.recommendBuyers.list.map((v) => {
|
|
|
|
+ return Object.assign({}, v, {
|
|
|
|
+ _id: v.id,
|
|
|
|
+ matchKeys: []
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ return {
|
|
|
|
+ list,
|
|
|
|
+ title: ContentExpandsModel.value.recommendBuyers.title,
|
|
|
|
+ total: ContentExpandsModel.value.recommendBuyers.total,
|
|
|
|
+ more: ContentExpandsModel.value.recommendBuyers.more
|
|
|
|
+ }
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const recommendWinners = computed(() => {
|
|
|
|
+ const list = ContentExpandsModel.value.recommendWinners.list.map((v) => {
|
|
|
|
+ return Object.assign({}, v, {
|
|
|
|
+ _id: v.id,
|
|
|
|
+ matchKeys: []
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ return {
|
|
|
|
+ list,
|
|
|
|
+ id: ContentExpandsModel.value.recommendWinners.winnerId,
|
|
|
|
+ title: ContentExpandsModel.value.recommendWinners.title,
|
|
|
|
+ total: ContentExpandsModel.value.recommendWinners.total,
|
|
|
|
+ more: ContentExpandsModel.value.recommendWinners.more
|
|
|
|
+ }
|
|
|
|
+})
|
|
|
|
+
|
|
const recommendInfo = {
|
|
const recommendInfo = {
|
|
list: [
|
|
list: [
|
|
{
|
|
{
|
|
@@ -383,7 +425,7 @@ const contentId = useRoute().params.id.replace('.html', '')
|
|
|
|
|
|
<div class="content-card watch-tab-content" name="商机推荐">
|
|
<div class="content-card watch-tab-content" name="商机推荐">
|
|
<div class="content-block-header">商机推荐</div>
|
|
<div class="content-block-header">商机推荐</div>
|
|
-
|
|
|
|
|
|
+ <!-- 超前项目 -->
|
|
<div
|
|
<div
|
|
class="recommend-info-header flex flex-(row items-end justify-between)"
|
|
class="recommend-info-header flex flex-(row items-end justify-between)"
|
|
>
|
|
>
|
|
@@ -392,9 +434,51 @@ const contentId = useRoute().params.id.replace('.html', '')
|
|
<span class="el-icon-jy-re-info"></span>
|
|
<span class="el-icon-jy-re-info"></span>
|
|
<span>超前项目推荐</span>
|
|
<span>超前项目推荐</span>
|
|
</div>
|
|
</div>
|
|
- <span class="number-text">30</span>
|
|
|
|
|
|
+ <span class="number-text">
|
|
|
|
+ {{ recommendProjects.total }}
|
|
|
|
+ </span>
|
|
|
|
+ </div>
|
|
|
|
+ <span class="more-text" v-if="recommendProjects.more">
|
|
|
|
+ 查看更多 >
|
|
|
|
+ </span>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="article-info-list">
|
|
|
|
+ <article-item
|
|
|
|
+ model="S"
|
|
|
|
+ :grid-data="[]"
|
|
|
|
+ class="article-info-item"
|
|
|
|
+ v-for="(item, index) in recommendProjects.list"
|
|
|
|
+ :class="{ visited: item.visited || item.ca_isvisit }"
|
|
|
|
+ :key="index"
|
|
|
|
+ :index="index + 1"
|
|
|
|
+ :article="item"
|
|
|
|
+ :config="recommendInfo.config"
|
|
|
|
+ :vt="'f'"
|
|
|
|
+ >
|
|
|
|
+ <div slot="right-time"></div>
|
|
|
|
+ <div class="time-text" slot="right-handle-container">
|
|
|
|
+ 2022-11-11
|
|
|
|
+ </div>
|
|
|
|
+ </article-item>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 采购单位 -->
|
|
|
|
+ <div
|
|
|
|
+ class="recommend-info-header flex flex-(row items-end justify-between)"
|
|
|
|
+ >
|
|
|
|
+ <div class="flex flex-(row items-end justify-between)">
|
|
|
|
+ <div class="flex flex-(row items-center)">
|
|
|
|
+ <span class="el-icon-jy-re-unit"></span>
|
|
|
|
+ <span>{{ recommendBuyers.title }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <span class="number-text">
|
|
|
|
+ {{ recommendBuyers.total }}
|
|
|
|
+ </span>
|
|
</div>
|
|
</div>
|
|
- <span class="more-text">查看更多 ></span>
|
|
|
|
|
|
+ <span class="more-text" v-if="recommendBuyers.more">
|
|
|
|
+ 查看更多 >
|
|
|
|
+ </span>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="article-info-list">
|
|
<div class="article-info-list">
|
|
@@ -402,7 +486,7 @@ const contentId = useRoute().params.id.replace('.html', '')
|
|
model="S"
|
|
model="S"
|
|
:grid-data="[]"
|
|
:grid-data="[]"
|
|
class="article-info-item"
|
|
class="article-info-item"
|
|
- v-for="(item, index) in recommendInfo.list"
|
|
|
|
|
|
+ v-for="(item, index) in recommendBuyers.list"
|
|
:class="{ visited: item.visited || item.ca_isvisit }"
|
|
:class="{ visited: item.visited || item.ca_isvisit }"
|
|
:key="index"
|
|
:key="index"
|
|
:index="index + 1"
|
|
:index="index + 1"
|
|
@@ -415,18 +499,56 @@ const contentId = useRoute().params.id.replace('.html', '')
|
|
2022-11-11
|
|
2022-11-11
|
|
</div>
|
|
</div>
|
|
</article-item>
|
|
</article-item>
|
|
|
|
+ <div class="mask-drainage" v-if="false">
|
|
|
|
+ <div
|
|
|
|
+ class="recommend-serve-card has-header flex flex-(col items-center justify-between)"
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ class="recommend-serve-header w-full flex flex-(row items-center justify-between)"
|
|
|
|
+ >
|
|
|
|
+ <span>大会员权益</span>
|
|
|
|
+ <span class="action-text">查看服务介绍 ></span>
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ class="recommend-serve-content flex flex-(1 col items-center justify-between)"
|
|
|
|
+ >
|
|
|
|
+ <div>
|
|
|
|
+ <span class="title-text">项目提前介入,中标更轻松</span>
|
|
|
|
+ <div class="text-center">
|
|
|
|
+ 提前1-3个月获取项目采购计划,获取采购内容、预算金额、预计采购时间等,提前运作提高中标率。
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="action-btns flex flex-(row items-center)">
|
|
|
|
+ <el-button type="primary">免费体验</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ <!-- 中标单位 -->
|
|
<div
|
|
<div
|
|
class="recommend-info-header flex flex-(row items-end justify-between)"
|
|
class="recommend-info-header flex flex-(row items-end justify-between)"
|
|
>
|
|
>
|
|
<div class="flex flex-(row items-end justify-between)">
|
|
<div class="flex flex-(row items-end justify-between)">
|
|
<div class="flex flex-(row items-center)">
|
|
<div class="flex flex-(row items-center)">
|
|
<span class="el-icon-jy-re-unit"></span>
|
|
<span class="el-icon-jy-re-unit"></span>
|
|
- <span>采购单位名称XXX的其他招标动态</span>
|
|
|
|
|
|
+ <span>{{ recommendWinners.title }}</span>
|
|
</div>
|
|
</div>
|
|
- <span class="number-text">30</span>
|
|
|
|
|
|
+ <span class="number-text">
|
|
|
|
+ {{ recommendWinners.total }}
|
|
|
|
+ </span>
|
|
|
|
+ </div>
|
|
|
|
+ <div>
|
|
|
|
+ <quick-monitor
|
|
|
|
+ v-if="recommendWinners.id"
|
|
|
|
+ type="ent"
|
|
|
|
+ :params="recommendWinners.id"
|
|
|
|
+ />
|
|
|
|
+ <span class="more-text" v-if="recommendWinners.more">
|
|
|
|
+ 查看更多 >
|
|
|
|
+ </span>
|
|
</div>
|
|
</div>
|
|
- <span class="more-text">查看更多 ></span>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="article-info-list">
|
|
<div class="article-info-list">
|
|
@@ -434,7 +556,7 @@ const contentId = useRoute().params.id.replace('.html', '')
|
|
model="S"
|
|
model="S"
|
|
:grid-data="[]"
|
|
:grid-data="[]"
|
|
class="article-info-item"
|
|
class="article-info-item"
|
|
- v-for="(item, index) in recommendInfo.list"
|
|
|
|
|
|
+ v-for="(item, index) in recommendWinners.list"
|
|
:class="{ visited: item.visited || item.ca_isvisit }"
|
|
:class="{ visited: item.visited || item.ca_isvisit }"
|
|
:key="index"
|
|
:key="index"
|
|
:index="index + 1"
|
|
:index="index + 1"
|
|
@@ -447,7 +569,7 @@ const contentId = useRoute().params.id.replace('.html', '')
|
|
2022-11-11
|
|
2022-11-11
|
|
</div>
|
|
</div>
|
|
</article-item>
|
|
</article-item>
|
|
- <div class="mask-drainage">
|
|
|
|
|
|
+ <div class="mask-drainage" v-if="false">
|
|
<div
|
|
<div
|
|
class="recommend-serve-card has-header flex flex-(col items-center justify-between)"
|
|
class="recommend-serve-card has-header flex flex-(col items-center justify-between)"
|
|
>
|
|
>
|
|
@@ -516,6 +638,7 @@ const contentId = useRoute().params.id.replace('.html', '')
|
|
::v-deep {
|
|
::v-deep {
|
|
> .flex-center {
|
|
> .flex-center {
|
|
flex: 1;
|
|
flex: 1;
|
|
|
|
+ width: 0;
|
|
}
|
|
}
|
|
.content-item {
|
|
.content-item {
|
|
width: calc(100% - 32px);
|
|
width: calc(100% - 32px);
|