|
@@ -80,7 +80,12 @@
|
|
|
<span v-if="!isFree" class="clear-action" @click="onClearFilter"
|
|
|
>清空</span
|
|
|
>
|
|
|
- <span class="save-action" @click="saveFilterToHistory">保存</span>
|
|
|
+ <span
|
|
|
+ class="save-action"
|
|
|
+ @click.stop="saveFilterToHistory"
|
|
|
+ v-bound-phone="bindPhoneSaveFilter()"
|
|
|
+ >保存</span
|
|
|
+ >
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-show="interceptTipText" class="intercept-tip-container">
|
|
@@ -104,11 +109,13 @@
|
|
|
>条信息
|
|
|
</template>
|
|
|
</p>
|
|
|
+ <!-- @click="dataExport" -->
|
|
|
<div
|
|
|
v-show="!inInjectBI"
|
|
|
v-if="listState.total > 0"
|
|
|
class="data-export clickable"
|
|
|
@click="dataExport"
|
|
|
+ v-bound-phone="bindPhoneDataExport()"
|
|
|
>
|
|
|
<AppIcon name="shujudaochu_xiao1" />
|
|
|
<span class="text">导出</span>
|
|
@@ -184,9 +191,16 @@
|
|
|
/>
|
|
|
</div>
|
|
|
<!-- P640项目名称/标的物引流广告模块-->
|
|
|
- <div class="project-bdw-ad-container" :style="{opacity: pageState.bdwCardLoaded ? 'unset' : '0'}" v-show="pageState.projectBdwInfo.sCount > 0">
|
|
|
+ <div
|
|
|
+ class="project-bdw-ad-container"
|
|
|
+ :style="{ opacity: pageState.bdwCardLoaded ? 'unset' : '0' }"
|
|
|
+ v-show="pageState.projectBdwInfo.sCount > 0"
|
|
|
+ >
|
|
|
<div class="project-bdw-ad">
|
|
|
- <div class="top-tip">信息不够精准?根据“项目名称/标的物”,为您精准匹配到 <strong>{{pageState.projectBdwInfo.sCount}}条</strong> 信息</div>
|
|
|
+ <div class="top-tip">
|
|
|
+ 信息不够精准?根据“项目名称/标的物”,为您精准匹配到
|
|
|
+ <strong>{{ pageState.projectBdwInfo.sCount }}条</strong> 信息
|
|
|
+ </div>
|
|
|
<ProjectCell
|
|
|
v-visited:content="pageState.projectBdwInfo.sInfo.id"
|
|
|
class="list-item"
|
|
@@ -195,47 +209,61 @@
|
|
|
:time-fmt="getTimeFmt"
|
|
|
:detail-list="pageState.projectBdwInfo.sInfo.detailList"
|
|
|
:title="pageState.projectBdwInfo.sInfo.title"
|
|
|
- :detail="filters.scope.includes('content') ? pageState.projectBdwInfo.sInfo.detail : null"
|
|
|
+ :detail="
|
|
|
+ filters.scope.includes('content')
|
|
|
+ ? pageState.projectBdwInfo.sInfo.detail
|
|
|
+ : null
|
|
|
+ "
|
|
|
:filetext_search="pageState.projectBdwInfo.sInfo.filetext_search"
|
|
|
:fs_keys="pageState.projectBdwInfo.sInfo.fs_word"
|
|
|
:time="pageState.projectBdwInfo.sInfo.dateTime"
|
|
|
:is-file="pageState.projectBdwInfo.sInfo.isFile"
|
|
|
:keys="pageState.splitKeys"
|
|
|
- :left-top-badge-text="pageState.projectBdwInfo.sInfo.leftTopBadgeText"
|
|
|
+ :left-top-badge-text="
|
|
|
+ pageState.projectBdwInfo.sInfo.leftTopBadgeText
|
|
|
+ "
|
|
|
:tags="pageState.projectBdwInfo.sInfo.tagList"
|
|
|
@click="goToDetail(pageState.projectBdwInfo.sInfo)"
|
|
|
>
|
|
|
<template #buyerText="{ item }">
|
|
|
- <span
|
|
|
- class="buyer-item link-clickable"
|
|
|
- @click.stop="toToBuyerProfile(item.text)"
|
|
|
+ <span
|
|
|
+ class="buyer-item link-clickable"
|
|
|
+ @click.stop="toToBuyerProfile(item.text)"
|
|
|
>{{ item.text }}</span
|
|
|
- >
|
|
|
+ >
|
|
|
</template>
|
|
|
<template #winnerText="{ item }">
|
|
|
- <span
|
|
|
- v-for="(winner, index) in item.children"
|
|
|
- :key="index"
|
|
|
- class="winner-item highlight-text link-clickable j-splitter"
|
|
|
- data-j-splitter="、"
|
|
|
- @click.stop="toToEntProfile(winner.id)"
|
|
|
+ <span
|
|
|
+ v-for="(winner, index) in item.children"
|
|
|
+ :key="index"
|
|
|
+ class="winner-item highlight-text link-clickable j-splitter"
|
|
|
+ data-j-splitter="、"
|
|
|
+ @click.stop="toToEntProfile(winner.id)"
|
|
|
>{{ winner.text }}</span
|
|
|
- >
|
|
|
+ >
|
|
|
</template>
|
|
|
<template slot="icon">
|
|
|
- <div @click.stop="doBdwCollection(pageState.projectBdwInfo.sInfo, )">
|
|
|
- <span
|
|
|
- class="j-icon"
|
|
|
- :class="{
|
|
|
- 'icon-star-fill': pageState.projectBdwInfo.sInfo.star,
|
|
|
- 'icon-star-streak': !pageState.projectBdwInfo.sInfo.star
|
|
|
- }"
|
|
|
- />
|
|
|
- <span> {{ pageState.projectBdwInfo.sInfo.star ? '已收藏' : '收藏' }}</span>
|
|
|
+ <div
|
|
|
+ @click.stop="doBdwCollection(pageState.projectBdwInfo.sInfo)"
|
|
|
+ >
|
|
|
+ <span
|
|
|
+ class="j-icon"
|
|
|
+ :class="{
|
|
|
+ 'icon-star-fill': pageState.projectBdwInfo.sInfo.star,
|
|
|
+ 'icon-star-streak': !pageState.projectBdwInfo.sInfo.star
|
|
|
+ }"
|
|
|
+ />
|
|
|
+ <span
|
|
|
+ > {{
|
|
|
+ pageState.projectBdwInfo.sInfo.star ? '已收藏' : '收藏'
|
|
|
+ }}</span
|
|
|
+ >
|
|
|
</div>
|
|
|
</template>
|
|
|
</ProjectCell>
|
|
|
- <div class="follow-text" @click="openSvip">开通超级订阅,立享更多搜索权限,寻找商机更精准 ></div>
|
|
|
+ <div class="follow-text" @click="openSvip">
|
|
|
+ 开通超级订阅,立享更多搜索权限,寻找商机更精准 >
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<van-list
|
|
@@ -329,7 +357,11 @@
|
|
|
>
|
|
|
{{ computedHasAddInfoStatus(item) ? '已添加' : '添加' }}
|
|
|
</button>
|
|
|
- <div v-else @click.stop="doCollection(item, index)">
|
|
|
+ <div
|
|
|
+ v-else
|
|
|
+ @click.stop="doCollection(item, index)"
|
|
|
+ v-bound-phone="bindPhoneDoCollection(item, index)"
|
|
|
+ >
|
|
|
<span
|
|
|
class="j-icon"
|
|
|
:class="{
|
|
@@ -367,6 +399,7 @@
|
|
|
<span
|
|
|
>点击<i
|
|
|
class="highlight-text"
|
|
|
+ v-bound-phone="bindPhoneToLeaveInfoPage('jylab_see500_plus')"
|
|
|
@click="toLeaveInfoPage('jylab_see500_plus')"
|
|
|
>免费查看更多信息</i
|
|
|
></span
|
|
@@ -513,7 +546,11 @@
|
|
|
@click="pageState.toSubThisKeyNoticeBarShow = false"
|
|
|
/>
|
|
|
<div class="center text">如果您对以上结果满意可直接订阅</div>
|
|
|
- <div class="right action clickable" @click="toSubThisKey">
|
|
|
+ <div
|
|
|
+ class="right action clickable"
|
|
|
+ @click.stop="toSubThisKey"
|
|
|
+ v-bound-phone="bindPhoneToSubThisKey()"
|
|
|
+ >
|
|
|
去订阅
|
|
|
<AppIcon name="youbian" color="#2ABED1" />
|
|
|
</div>
|
|
@@ -1101,14 +1138,15 @@ export default {
|
|
|
this.moveRecommendCard(n)
|
|
|
// 项目名称/标的物引流广告插入到第五条公告后边
|
|
|
console.log(666666666)
|
|
|
- const insertNum = this.listState.list.length > 4 ? 4 : this.listState.list.length
|
|
|
+ const insertNum =
|
|
|
+ this.listState.list.length > 4 ? 4 : this.listState.list.length
|
|
|
this.insertProjectBdwAd(insertNum)
|
|
|
},
|
|
|
searchList(list) {
|
|
|
if (list && list.length && this.pageState.listTabActive === 'list') {
|
|
|
// 市场分析报告插到第一条数据后面位置
|
|
|
this.moveRecommendCard('list')
|
|
|
- // 项目名称/标的物引流广告插入到第五条公告后边
|
|
|
+ // 项目名称/标的物引流广告插入到第五条公告后边
|
|
|
console.log(777777)
|
|
|
const insertNum = list.length > 4 ? 4 : list.length
|
|
|
this.insertProjectBdwAd(insertNum)
|
|
@@ -1399,7 +1437,15 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- this.$router.push('/common/order/create/svip')
|
|
|
+ // this.$router.push('/common/order/create/svip')
|
|
|
+ this.$testBindPhone({
|
|
|
+ props: {
|
|
|
+ name: '标讯搜索结果页-筛选条件-去开通超级订阅'
|
|
|
+ },
|
|
|
+ next: () => {
|
|
|
+ this.$router.push('/common/order/create/svip')
|
|
|
+ }
|
|
|
+ })
|
|
|
} catch (error) {}
|
|
|
},
|
|
|
async getBidColPower() {
|
|
@@ -1695,7 +1741,7 @@ export default {
|
|
|
if (t.pageNum === 1) {
|
|
|
this.saveSearchGroupToLocal()
|
|
|
}
|
|
|
- this.pageState.projectBdwInfo.sCount = 0
|
|
|
+ this.pageState.projectBdwInfo.sCount = 0
|
|
|
this.pageState.projectBdwInfo.sInfo = {}
|
|
|
this.pageState.projectBdwInfo.bdwCardLoaded = false
|
|
|
try {
|
|
@@ -1706,7 +1752,8 @@ export default {
|
|
|
} = await getBiddingSearchList(params, this.restfulApiUserTypeDefault)
|
|
|
// P640处理标的物广告位信息
|
|
|
this.pageState.projectBdwInfo.sCount = data.sCount || 0
|
|
|
- this.pageState.projectBdwInfo.sInfo = data.sList && data.sCount > 0 ? data.sList[0]: {}
|
|
|
+ this.pageState.projectBdwInfo.sInfo =
|
|
|
+ data.sList && data.sCount > 0 ? data.sList[0] : {}
|
|
|
// 计算项目名称标的物广告信息数据
|
|
|
this.calcProjectBdwTag()
|
|
|
|
|
@@ -1733,8 +1780,11 @@ export default {
|
|
|
this.afterSearch(params, data)
|
|
|
// 列表赋值
|
|
|
// 如果筛选范围同时包含标题和正文,那么按照正文包括高亮在前,标题在后
|
|
|
- const resDataList = data.list && data.list.length > 0 ? JSON.parse(JSON.stringify(data.list)) : []
|
|
|
- const list =this.sortListTitleDetail(resDataList)
|
|
|
+ const resDataList =
|
|
|
+ data.list && data.list.length > 0
|
|
|
+ ? JSON.parse(JSON.stringify(data.list))
|
|
|
+ : []
|
|
|
+ const list = this.sortListTitleDetail(resDataList)
|
|
|
const count = data.count
|
|
|
const total = data.total
|
|
|
if (Array.isArray(list)) {
|
|
@@ -1858,19 +1908,24 @@ export default {
|
|
|
},
|
|
|
// p640需求,如果筛选类型同时包含标题和正文,先展示标题包含关键词,再展示内容包含关键词的数据
|
|
|
// 如果不同时包含标题和正文,则不处理
|
|
|
- sortListTitleDetail (baseArr) {
|
|
|
+ sortListTitleDetail(baseArr) {
|
|
|
const _this = this
|
|
|
- if( this.filters.scope.includes('title') && this.filters.scope.includes('content')) {
|
|
|
+ if (
|
|
|
+ this.filters.scope.includes('title') &&
|
|
|
+ this.filters.scope.includes('content')
|
|
|
+ ) {
|
|
|
// 辅助函数:检查字符串是否包含关键词数组中的任何一个关键词
|
|
|
function containsKeyword(str, keywords) {
|
|
|
- return keywords.some(keyword => str ? str.includes(keyword) : '');
|
|
|
+ return keywords.some((keyword) => (str ? str.includes(keyword) : ''))
|
|
|
}
|
|
|
// 先按照发布时间倒序分组排序
|
|
|
let arr = []
|
|
|
const baseTimeMap = {}
|
|
|
const baseTimeKeys = []
|
|
|
- baseArr.forEach(v => {
|
|
|
- const ymd = dayjs(v.publishTime * 1000).startOf('day').unix()
|
|
|
+ baseArr.forEach((v) => {
|
|
|
+ const ymd = dayjs(v.publishTime * 1000)
|
|
|
+ .startOf('day')
|
|
|
+ .unix()
|
|
|
if (!Array.isArray(baseTimeMap[ymd])) {
|
|
|
baseTimeMap[ymd] = []
|
|
|
}
|
|
@@ -1880,13 +1935,23 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
|
|
|
- const sortBaseTimeKeys = baseTimeKeys.sort((a,b) => b - a)
|
|
|
+ const sortBaseTimeKeys = baseTimeKeys.sort((a, b) => b - a)
|
|
|
// 再按照标题正文排序
|
|
|
- function sortItem (arr) {
|
|
|
+ function sortItem(arr) {
|
|
|
const matchKeys = _this.pageState.splitKeys
|
|
|
- const titleMatches = arr.filter(item => containsKeyword(item.title, matchKeys))
|
|
|
- const contentMatches = arr.filter(item => _this.setDetailText(item.detail, matchKeys) && !titleMatches.some(tm => tm.title === item.title))
|
|
|
- const noMatches = arr.filter(item => !containsKeyword(item.title, matchKeys) && !_this.setDetailText(item.detail, matchKeys));
|
|
|
+ const titleMatches = arr.filter((item) =>
|
|
|
+ containsKeyword(item.title, matchKeys)
|
|
|
+ )
|
|
|
+ const contentMatches = arr.filter(
|
|
|
+ (item) =>
|
|
|
+ _this.setDetailText(item.detail, matchKeys) &&
|
|
|
+ !titleMatches.some((tm) => tm.title === item.title)
|
|
|
+ )
|
|
|
+ const noMatches = arr.filter(
|
|
|
+ (item) =>
|
|
|
+ !containsKeyword(item.title, matchKeys) &&
|
|
|
+ !_this.setDetailText(item.detail, matchKeys)
|
|
|
+ )
|
|
|
// 合并结果
|
|
|
const resultArr = [...titleMatches, ...contentMatches, ...noMatches]
|
|
|
return resultArr
|
|
@@ -2287,8 +2352,7 @@ export default {
|
|
|
this.$keep.action({
|
|
|
status: item.star,
|
|
|
id: item.id,
|
|
|
- beforeRedirect: () => {
|
|
|
- },
|
|
|
+ beforeRedirect: () => {},
|
|
|
complete: ({ type, message }) => {
|
|
|
if (type) {
|
|
|
item.star = !item.star
|
|
@@ -2721,7 +2785,7 @@ export default {
|
|
|
if (this.topSearch.input) {
|
|
|
return v && v.text
|
|
|
} else {
|
|
|
- return v.text
|
|
|
+ return v.text
|
|
|
}
|
|
|
})
|
|
|
.map((item) => item.text)
|
|
@@ -3109,7 +3173,9 @@ export default {
|
|
|
// 市场分析报告插到第一条数据后面位置
|
|
|
this.$nextTick(() => {
|
|
|
const recommend = document.querySelector('.recommend-card-container')
|
|
|
- const cellList = document.querySelectorAll('.more-list .list-wrapper>.project-cell')
|
|
|
+ const cellList = document.querySelectorAll(
|
|
|
+ '.more-list .list-wrapper>.project-cell'
|
|
|
+ )
|
|
|
const recommendChild = document.querySelector('.recommend-bg')
|
|
|
if (recommend && cellList[0]) {
|
|
|
const parentNode = cellList[0].parentNode
|
|
@@ -3139,7 +3205,7 @@ export default {
|
|
|
this.preSortItem(this.pageState.projectBdwInfo.sInfo)
|
|
|
},
|
|
|
// 开通超级订阅
|
|
|
- openSvip () {
|
|
|
+ openSvip() {
|
|
|
if (!this.isLogin) {
|
|
|
return openLinkOfOther(LINKS.APP登录页.app, {
|
|
|
query: {
|
|
@@ -3147,7 +3213,65 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- this.$router.push('/common/order/create/svip')
|
|
|
+ this.$testBindPhone({
|
|
|
+ props: {
|
|
|
+ name: '标讯搜索结果页-开通超级订阅'
|
|
|
+ },
|
|
|
+ next: () => {
|
|
|
+ this.$router.push('/common/order/create/svip')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // this.$router.push('/common/order/create/svip')
|
|
|
+ },
|
|
|
+ bindPhoneDataExport() {
|
|
|
+ return {
|
|
|
+ props: {
|
|
|
+ name: '标讯搜索结果页-导出'
|
|
|
+ },
|
|
|
+ next: () => {
|
|
|
+ this.dataExport()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ bindPhoneSaveFilter() {
|
|
|
+ return {
|
|
|
+ props: {
|
|
|
+ name: '标讯搜索结果页-保存筛选'
|
|
|
+ },
|
|
|
+ next: () => {
|
|
|
+ this.saveFilterToHistory()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ bindPhoneToSubThisKey() {
|
|
|
+ return {
|
|
|
+ props: {
|
|
|
+ name: '标讯搜索结果页-去订阅'
|
|
|
+ },
|
|
|
+ next: () => {
|
|
|
+ this.toSubThisKey()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ bindPhoneToLeaveInfoPage(source) {
|
|
|
+ return {
|
|
|
+ props: {
|
|
|
+ name: '标讯搜索结果页-免费查看更多'
|
|
|
+ },
|
|
|
+ next: () => {
|
|
|
+ this.toLeaveInfoPage(source)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ bindPhoneDoCollection(item, index) {
|
|
|
+ return {
|
|
|
+ props: {
|
|
|
+ name: '标讯搜索结果页-收藏'
|
|
|
+ },
|
|
|
+ next: () => {
|
|
|
+ this.doCollection(item, index)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3623,37 +3747,37 @@ export default {
|
|
|
.customer-corner {
|
|
|
z-index: 10;
|
|
|
}
|
|
|
-.project-bdw-ad-container{
|
|
|
+.project-bdw-ad-container {
|
|
|
border-radius: 12px;
|
|
|
background: linear-gradient(180deg, #fff4e8 0%, #fff 100%);
|
|
|
- padding:12px;
|
|
|
- margin:8px;
|
|
|
+ padding: 12px;
|
|
|
+ margin: 8px;
|
|
|
.top-tip {
|
|
|
- font-weight:bold;
|
|
|
- font-size:13px;
|
|
|
- line-height:20px;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 13px;
|
|
|
+ line-height: 20px;
|
|
|
strong {
|
|
|
- color:#FF9F40;
|
|
|
- margin:0 2px;
|
|
|
+ color: #ff9f40;
|
|
|
+ margin: 0 2px;
|
|
|
}
|
|
|
}
|
|
|
- .follow-text{
|
|
|
- background: #FF9F40;
|
|
|
+ .follow-text {
|
|
|
+ background: #ff9f40;
|
|
|
color: #fff;
|
|
|
border-radius: 4px;
|
|
|
padding: 2px 11px;
|
|
|
- font-size:12px;
|
|
|
- line-height:20px;
|
|
|
- margin-top:10px;
|
|
|
+ font-size: 12px;
|
|
|
+ line-height: 20px;
|
|
|
+ margin-top: 10px;
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
- ::v-deep{
|
|
|
- .project-cell{
|
|
|
- padding:0;
|
|
|
- margin:0;
|
|
|
+ ::v-deep {
|
|
|
+ .project-cell {
|
|
|
+ padding: 0;
|
|
|
+ margin: 0;
|
|
|
background: unset;
|
|
|
}
|
|
|
- .jy-hairline--bottom::after{
|
|
|
+ .jy-hairline--bottom::after {
|
|
|
border: none;
|
|
|
}
|
|
|
}
|