|
@@ -1,31 +1,33 @@
|
|
<template>
|
|
<template>
|
|
<div class="j-container" @touchstart="appTabShow">
|
|
<div class="j-container" @touchstart="appTabShow">
|
|
<header class="subscribe-header-container">
|
|
<header class="subscribe-header-container">
|
|
- <div class="tabbar-header-top-placeholder" v-if="$envs.inApp"></div>
|
|
|
|
|
|
+ <div v-if="$envs.inApp" class="tabbar-header-top-placeholder" />
|
|
<div class="subscribe-header tabbar-header">
|
|
<div class="subscribe-header tabbar-header">
|
|
<div class="subscribe-header-l">
|
|
<div class="subscribe-header-l">
|
|
- <h1 class="subscribe-header-title">{{ headerConf.titleText }}</h1>
|
|
|
|
|
|
+ <h1 class="subscribe-header-title">
|
|
|
|
+ {{ headerConf.titleText }}
|
|
|
|
+ </h1>
|
|
<PowerSwitch
|
|
<PowerSwitch
|
|
- ref="powerSwitch"
|
|
|
|
v-if="powerSwitchShow"
|
|
v-if="powerSwitchShow"
|
|
- :vSwitch="vSwitch"
|
|
|
|
- :showTypes="vSwitchList"
|
|
|
|
- :beforeLeave="beforeLeavePage"
|
|
|
|
|
|
+ ref="powerSwitch"
|
|
|
|
+ :v-switch="vSwitch"
|
|
|
|
+ :show-types="vSwitchList"
|
|
|
|
+ :before-leave="beforeLeavePage"
|
|
@change="changeVSwitch"
|
|
@change="changeVSwitch"
|
|
/>
|
|
/>
|
|
<div
|
|
<div
|
|
v-else
|
|
v-else
|
|
|
|
+ v-show="pageState.topBannerAd.textShow"
|
|
ref="topAdText"
|
|
ref="topAdText"
|
|
class="top-ad-text"
|
|
class="top-ad-text"
|
|
- v-show="pageState.topBannerAd.textShow"
|
|
|
|
>
|
|
>
|
|
立即使用 超级订阅
|
|
立即使用 超级订阅
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="subscribe-header-r">
|
|
<div class="subscribe-header-r">
|
|
<div
|
|
<div
|
|
- class="action-button subscribe-header-sub-title"
|
|
|
|
v-if="showEntSubscribeButton"
|
|
v-if="showEntSubscribeButton"
|
|
|
|
+ class="action-button subscribe-header-sub-title"
|
|
@click="switchSubscribeType"
|
|
@click="switchSubscribeType"
|
|
>
|
|
>
|
|
{{ headerConf.subTitleText }}
|
|
{{ headerConf.subTitleText }}
|
|
@@ -48,61 +50,61 @@
|
|
</div>
|
|
</div>
|
|
<ad-single
|
|
<ad-single
|
|
v-if="topSuperVipAdShow"
|
|
v-if="topSuperVipAdShow"
|
|
- :show="pageState.topBannerAd.bannerShow"
|
|
|
|
ref="topAd"
|
|
ref="topAd"
|
|
|
|
+ :show="pageState.topBannerAd.bannerShow"
|
|
:ad="topAdId"
|
|
:ad="topAdId"
|
|
cache
|
|
cache
|
|
- :showTag="false"
|
|
|
|
- :showCloseIcon="false"
|
|
|
|
- :beforeOpen="beforeLeavePage"
|
|
|
|
|
|
+ :show-tag="false"
|
|
|
|
+ :show-close-icon="false"
|
|
|
|
+ :before-open="beforeLeavePage"
|
|
|
|
+ class="ad-container subscribe-top-box"
|
|
@loaded="onTopAdLoaded"
|
|
@loaded="onTopAdLoaded"
|
|
@close="onListAdClose()"
|
|
@close="onListAdClose()"
|
|
- class="ad-container subscribe-top-box"
|
|
|
|
/>
|
|
/>
|
|
<DropFilter
|
|
<DropFilter
|
|
- v-model="filters"
|
|
|
|
ref="dropFilter"
|
|
ref="dropFilter"
|
|
|
|
+ v-model="filters"
|
|
class="subscribe-drop-filter van-hairline--top"
|
|
class="subscribe-drop-filter van-hairline--top"
|
|
:default-state="defaultDropFilterState"
|
|
:default-state="defaultDropFilterState"
|
|
:options="dropFilterOptions"
|
|
:options="dropFilterOptions"
|
|
- :dropdownMenuOptions="dropdownMenuOptions"
|
|
|
|
|
|
+ :dropdown-menu-options="dropdownMenuOptions"
|
|
@open="onFilterOpen"
|
|
@open="onFilterOpen"
|
|
@close="onFilterClose"
|
|
@close="onFilterClose"
|
|
@confirm="onFilterConfirm"
|
|
@confirm="onFilterConfirm"
|
|
@cancel="onFilterCancel"
|
|
@cancel="onFilterCancel"
|
|
>
|
|
>
|
|
<template v-if="isFree" #vipIcon>
|
|
<template v-if="isFree" #vipIcon>
|
|
- <span class="v-vip-icon"></span>
|
|
|
|
|
|
+ <span class="v-vip-icon" />
|
|
</template>
|
|
</template>
|
|
- <template v-slot:more>
|
|
|
|
|
|
+ <template #more>
|
|
<SubscribeMoreFilters
|
|
<SubscribeMoreFilters
|
|
- :disabledFilters="disabledFilters"
|
|
|
|
- :isPersonal="isPersonalSubscribe"
|
|
|
|
ref="moreFiltersRef"
|
|
ref="moreFiltersRef"
|
|
|
|
+ :disabled-filters="disabledFilters"
|
|
|
|
+ :is-personal="isPersonalSubscribe"
|
|
@onNoPower="onNoPower"
|
|
@onNoPower="onNoPower"
|
|
/>
|
|
/>
|
|
</template>
|
|
</template>
|
|
</DropFilter>
|
|
</DropFilter>
|
|
- <div class="tab-switch bg-white border-line-b" v-if="tabSwitchShow">
|
|
|
|
|
|
+ <div v-if="tabSwitchShow" class="tab-switch bg-white border-line-b">
|
|
<van-tabs
|
|
<van-tabs
|
|
- class="tab-left"
|
|
|
|
v-model="listTabActive"
|
|
v-model="listTabActive"
|
|
|
|
+ class="tab-left"
|
|
:ellipsis="false"
|
|
:ellipsis="false"
|
|
:before-change="beforeTabActiveChange"
|
|
:before-change="beforeTabActiveChange"
|
|
@change="onListTabChange"
|
|
@change="onListTabChange"
|
|
>
|
|
>
|
|
<van-tab
|
|
<van-tab
|
|
v-for="(tab, index) in conf.tabList"
|
|
v-for="(tab, index) in conf.tabList"
|
|
|
|
+ :key="index"
|
|
:name="tab.name"
|
|
:name="tab.name"
|
|
:title="tab.title"
|
|
:title="tab.title"
|
|
- :key="index"
|
|
|
|
- ></van-tab>
|
|
|
|
|
|
+ />
|
|
</van-tabs>
|
|
</van-tabs>
|
|
<div class="tab-right">
|
|
<div class="tab-right">
|
|
<div
|
|
<div
|
|
|
|
+ v-if="listState.count > 0"
|
|
class="data-export clickable"
|
|
class="data-export clickable"
|
|
@click="dataExport"
|
|
@click="dataExport"
|
|
- v-if="listState.count > 0"
|
|
|
|
>
|
|
>
|
|
<AppIcon name="shujudaochu_xiao1" />
|
|
<AppIcon name="shujudaochu_xiao1" />
|
|
<span class="text">数据导出</span>
|
|
<span class="text">数据导出</span>
|
|
@@ -112,8 +114,8 @@
|
|
<div class="">
|
|
<div class="">
|
|
<!-- 超前项目推荐 & 定制化分析报告 -->
|
|
<!-- 超前项目推荐 & 定制化分析报告 -->
|
|
<RecommendCard
|
|
<RecommendCard
|
|
- :key="recommendInfo.key"
|
|
|
|
v-if="recommendInfo.show"
|
|
v-if="recommendInfo.show"
|
|
|
|
+ :key="recommendInfo.key"
|
|
v-model="recommendInfo.showContent"
|
|
v-model="recommendInfo.showContent"
|
|
:chart-data="recommendInfo.chart"
|
|
:chart-data="recommendInfo.chart"
|
|
:brief-list="recommendInfo.brief"
|
|
:brief-list="recommendInfo.brief"
|
|
@@ -125,24 +127,24 @@
|
|
</div>
|
|
</div>
|
|
</header>
|
|
</header>
|
|
<main
|
|
<main
|
|
- class="j-main subscribe-list"
|
|
|
|
ref="listContainer"
|
|
ref="listContainer"
|
|
|
|
+ class="j-main subscribe-list"
|
|
@scroll="scrollWrapFn"
|
|
@scroll="scrollWrapFn"
|
|
>
|
|
>
|
|
<van-list
|
|
<van-list
|
|
v-show="listTabActive === 'list' || listTabActive === 'detailedList'"
|
|
v-show="listTabActive === 'list' || listTabActive === 'detailedList'"
|
|
|
|
+ ref="vanList"
|
|
v-model="listState.loading"
|
|
v-model="listState.loading"
|
|
:finished="listState.finished"
|
|
:finished="listState.finished"
|
|
:offset="listState.offset"
|
|
:offset="listState.offset"
|
|
:finished-text="finishedText"
|
|
:finished-text="finishedText"
|
|
:immediate-check="false"
|
|
:immediate-check="false"
|
|
- @load="getList"
|
|
|
|
class="more-list"
|
|
class="more-list"
|
|
:class="{ 'calc-height-1px': !hasMorePage }"
|
|
:class="{ 'calc-height-1px': !hasMorePage }"
|
|
- ref="vanList"
|
|
|
|
|
|
+ @load="getList"
|
|
>
|
|
>
|
|
<div class="tab-search-info">
|
|
<div class="tab-search-info">
|
|
- <p class="search-total-count" v-if="listState.count > 0">
|
|
|
|
|
|
+ <p v-if="listState.count > 0" class="search-total-count">
|
|
搜索到<span class="highlight-text">
|
|
搜索到<span class="highlight-text">
|
|
{{ calcListTotalText(listState.count) }} </span
|
|
{{ calcListTotalText(listState.count) }} </span
|
|
>条信息
|
|
>条信息
|
|
@@ -150,38 +152,38 @@
|
|
</div>
|
|
</div>
|
|
<div class="list-wrapper">
|
|
<div class="list-wrapper">
|
|
<van-popup
|
|
<van-popup
|
|
|
|
+ v-model="showBidStatus"
|
|
get-container="body"
|
|
get-container="body"
|
|
:style="popupHeight"
|
|
:style="popupHeight"
|
|
- v-model="showBidStatus"
|
|
|
|
round
|
|
round
|
|
position="bottom"
|
|
position="bottom"
|
|
>
|
|
>
|
|
- <bid-status-node
|
|
|
|
|
|
+ <BidStatusNode
|
|
|
|
+ :project-cell-info="projectCellInfo"
|
|
@cancel-update="cancelUpdate"
|
|
@cancel-update="cancelUpdate"
|
|
@save-success="saveSuccess"
|
|
@save-success="saveSuccess"
|
|
- :project-cell-info="projectCellInfo"
|
|
|
|
@set-height="setHeight"
|
|
@set-height="setHeight"
|
|
- ></bid-status-node>
|
|
|
|
|
|
+ />
|
|
</van-popup>
|
|
</van-popup>
|
|
<template v-for="(item, index) in subscribeList">
|
|
<template v-for="(item, index) in subscribeList">
|
|
<ProjectCell
|
|
<ProjectCell
|
|
v-if="!item.ad"
|
|
v-if="!item.ad"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ v-visited:subscribe="item._id"
|
|
class="list-item"
|
|
class="list-item"
|
|
:class="item.className"
|
|
:class="item.className"
|
|
- :cardType="calcProjectCardType(item)"
|
|
|
|
- :detailList="item.detailList"
|
|
|
|
- @click="onClickCell(item)"
|
|
|
|
|
|
+ :card-type="calcProjectCardType(item)"
|
|
|
|
+ :detail-list="item.detailList"
|
|
:title="item.title"
|
|
:title="item.title"
|
|
:time="item.dateTime"
|
|
:time="item.dateTime"
|
|
:detail="item.detail"
|
|
:detail="item.detail"
|
|
:filetext_search="item.filetext_search"
|
|
:filetext_search="item.filetext_search"
|
|
- :isFile="item.isFile"
|
|
|
|
|
|
+ :is-file="item.isFile"
|
|
:keys="item.matchKeys"
|
|
:keys="item.matchKeys"
|
|
- :leftTopBadgeText="item.leftTopBadgeText"
|
|
|
|
|
|
+ :left-top-badge-text="item.leftTopBadgeText"
|
|
:tags="item.tagList"
|
|
:tags="item.tagList"
|
|
- :pushSource="item.pushSource"
|
|
|
|
- :key="item.id"
|
|
|
|
- v-visited:subscribe="item._id"
|
|
|
|
|
|
+ :push-source="item.pushSource"
|
|
|
|
+ @click="onClickCell(item)"
|
|
>
|
|
>
|
|
<template #buyerText="{ item }">
|
|
<template #buyerText="{ item }">
|
|
<span
|
|
<span
|
|
@@ -192,15 +194,15 @@
|
|
</template>
|
|
</template>
|
|
<template #winnerText="{ item }">
|
|
<template #winnerText="{ item }">
|
|
<span
|
|
<span
|
|
|
|
+ v-for="(winner, index) in item.children"
|
|
|
|
+ :key="index"
|
|
class="winner-item highlight-text link-clickable j-splitter"
|
|
class="winner-item highlight-text link-clickable j-splitter"
|
|
data-j-splitter="、"
|
|
data-j-splitter="、"
|
|
- v-for="(winner, index) in item.children"
|
|
|
|
@click.stop="toToEntProfile(winner.id)"
|
|
@click.stop="toToEntProfile(winner.id)"
|
|
- :key="index"
|
|
|
|
>{{ winner.text }}</span
|
|
>{{ winner.text }}</span
|
|
>
|
|
>
|
|
</template>
|
|
</template>
|
|
- <template slot="icon" v-if="item.isCB.id">
|
|
|
|
|
|
+ <template v-if="item.isCB.id" slot="icon">
|
|
<div
|
|
<div
|
|
class="right-event"
|
|
class="right-event"
|
|
:class="{ cb_blue: item.isCB.value }"
|
|
:class="{ cb_blue: item.isCB.value }"
|
|
@@ -229,43 +231,44 @@
|
|
'icon-star-fill': item.star,
|
|
'icon-star-fill': item.star,
|
|
'icon-star-streak': !item.star
|
|
'icon-star-streak': !item.star
|
|
}"
|
|
}"
|
|
- ></span>
|
|
|
|
|
|
+ />
|
|
<span> {{ item.star ? '已收藏' : '收藏' }}</span>
|
|
<span> {{ item.star ? '已收藏' : '收藏' }}</span>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</ProjectCell>
|
|
</ProjectCell>
|
|
<div
|
|
<div
|
|
v-else
|
|
v-else
|
|
- :key="[item.id, index].join('-')"
|
|
|
|
v-show="item.show"
|
|
v-show="item.show"
|
|
|
|
+ :key="[item.id, index].join('-')"
|
|
class="middle-list-container"
|
|
class="middle-list-container"
|
|
>
|
|
>
|
|
<ad-single
|
|
<ad-single
|
|
|
|
+ key="ad-item"
|
|
:class="item.className"
|
|
:class="item.className"
|
|
:ad="getContentAdID"
|
|
:ad="getContentAdID"
|
|
- key="ad-item"
|
|
|
|
- :showCloseIcon="true"
|
|
|
|
|
|
+ :show-close-icon="true"
|
|
cache
|
|
cache
|
|
- :beforeOpen="beforeLeavePage"
|
|
|
|
|
|
+ :before-open="beforeLeavePage"
|
|
:vt="vSwitch"
|
|
:vt="vSwitch"
|
|
- @close="onListAdClose(item)"
|
|
|
|
class="ad-container middle-list-ad"
|
|
class="ad-container middle-list-ad"
|
|
|
|
+ @close="onListAdClose(item)"
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</div>
|
|
</div>
|
|
- <div class="free-see-more" v-if="freeSeeMoreButtonShow">
|
|
|
|
|
|
+ <div v-if="freeSeeMoreButtonShow" class="free-see-more">
|
|
<van-button
|
|
<van-button
|
|
class="free-see-more-button"
|
|
class="free-see-more-button"
|
|
size="large"
|
|
size="large"
|
|
plain
|
|
plain
|
|
@click="toLeaveInfoPage"
|
|
@click="toLeaveInfoPage"
|
|
- >查看更多</van-button
|
|
|
|
>
|
|
>
|
|
|
|
+ 查看更多
|
|
|
|
+ </van-button>
|
|
</div>
|
|
</div>
|
|
<AppEmpty
|
|
<AppEmpty
|
|
- state="sleep"
|
|
|
|
v-show="listState.list.length === 0 && listState.finished"
|
|
v-show="listState.list.length === 0 && listState.finished"
|
|
|
|
+ state="sleep"
|
|
>
|
|
>
|
|
<!-- 有订阅管理权限的 -->
|
|
<!-- 有订阅管理权限的 -->
|
|
<div v-if="showSubscribeManageButton">
|
|
<div v-if="showSubscribeManageButton">
|
|
@@ -303,8 +306,8 @@
|
|
</template>
|
|
</template>
|
|
</AppEmpty>
|
|
</AppEmpty>
|
|
</van-list>
|
|
</van-list>
|
|
- <div class="table-container" v-show="listTabActive === 'table'">
|
|
|
|
- <div class="scroll" v-show="listState.list.length">
|
|
|
|
|
|
+ <div v-show="listTabActive === 'table'" class="table-container">
|
|
|
|
+ <div v-show="listState.list.length" class="scroll">
|
|
<table class="table">
|
|
<table class="table">
|
|
<tr class="table-header">
|
|
<tr class="table-header">
|
|
<td v-if="containsNiJian">项目代码</td>
|
|
<td v-if="containsNiJian">项目代码</td>
|
|
@@ -322,10 +325,10 @@
|
|
</tr>
|
|
</tr>
|
|
<tr
|
|
<tr
|
|
v-for="item in listState.list.slice(0, 20)"
|
|
v-for="item in listState.list.slice(0, 20)"
|
|
- class="table-content-tr"
|
|
|
|
|
|
+ :key="item.id"
|
|
v-visited:subscribe="item._id"
|
|
v-visited:subscribe="item._id"
|
|
|
|
+ class="table-content-tr"
|
|
@click="onClickCell(item)"
|
|
@click="onClickCell(item)"
|
|
- :key="item.id"
|
|
|
|
>
|
|
>
|
|
<!-- 项目代码 -->
|
|
<!-- 项目代码 -->
|
|
<td v-if="containsNiJian">
|
|
<td v-if="containsNiJian">
|
|
@@ -339,7 +342,7 @@
|
|
pageState.splitKeys
|
|
pageState.splitKeys
|
|
)
|
|
)
|
|
"
|
|
"
|
|
- ></td>
|
|
|
|
|
|
+ />
|
|
<!-- 公告类型 -->
|
|
<!-- 公告类型 -->
|
|
<td v-if="!containsNiJian">
|
|
<td v-if="!containsNiJian">
|
|
{{ item.subtype ? `${item.subtype}公告` : '-' }}
|
|
{{ item.subtype ? `${item.subtype}公告` : '-' }}
|
|
@@ -364,7 +367,9 @@
|
|
}}
|
|
}}
|
|
</td>
|
|
</td>
|
|
<!-- 招标单位 -->
|
|
<!-- 招标单位 -->
|
|
- <td v-if="!containsNiJian">{{ item.buyer || '-' }}</td>
|
|
|
|
|
|
+ <td v-if="!containsNiJian">
|
|
|
|
+ {{ item.buyer || '-' }}
|
|
|
|
+ </td>
|
|
<!-- 开标时间 -->
|
|
<!-- 开标时间 -->
|
|
<td v-if="!containsNiJian">
|
|
<td v-if="!containsNiJian">
|
|
{{
|
|
{{
|
|
@@ -398,14 +403,14 @@
|
|
</tr>
|
|
</tr>
|
|
</table>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
- <div class="to-look-more" v-show="listState.list.length > 20">
|
|
|
|
- <van-button plain size="small" type="primary" @click="dataExport"
|
|
|
|
- >查看更多</van-button
|
|
|
|
- >
|
|
|
|
|
|
+ <div v-show="listState.list.length > 20" class="to-look-more">
|
|
|
|
+ <van-button plain size="small" type="primary" @click="dataExport">
|
|
|
|
+ 查看更多
|
|
|
|
+ </van-button>
|
|
</div>
|
|
</div>
|
|
<AppEmpty
|
|
<AppEmpty
|
|
- state="sleep"
|
|
|
|
v-show="listState.list.length === 0 && listState.finished"
|
|
v-show="listState.list.length === 0 && listState.finished"
|
|
|
|
+ state="sleep"
|
|
>
|
|
>
|
|
<!-- 有订阅管理权限的 -->
|
|
<!-- 有订阅管理权限的 -->
|
|
<div v-if="showSubscribeManageButton">
|
|
<div v-if="showSubscribeManageButton">
|
|
@@ -446,67 +451,68 @@
|
|
</main>
|
|
</main>
|
|
<footer class="j-footer">
|
|
<footer class="j-footer">
|
|
<NoticeBar
|
|
<NoticeBar
|
|
- rightText="了解详情"
|
|
|
|
|
|
+ v-if="pushMaxNoticeBarShow"
|
|
|
|
+ right-text="了解详情"
|
|
@clickLeft="noticeBar.pushMaxShow = false"
|
|
@clickLeft="noticeBar.pushMaxShow = false"
|
|
@clickRight="toVipIntroducePage"
|
|
@clickRight="toVipIntroducePage"
|
|
- v-if="pushMaxNoticeBarShow"
|
|
|
|
- >本次推送已达150条信息上限!开通超级订阅,支持每天最多推送2000条信息
|
|
|
|
|
|
+ >
|
|
|
|
+ 本次推送已达150条信息上限!开通超级订阅,支持每天最多推送2000条信息
|
|
</NoticeBar>
|
|
</NoticeBar>
|
|
<NoticeBar
|
|
<NoticeBar
|
|
|
|
+ v-if="vipNoticeBarShow"
|
|
theme="red"
|
|
theme="red"
|
|
|
|
+ :right-text="noticeBar.vipRightText"
|
|
@clickLeft="noticeBar.vipShow = false"
|
|
@clickLeft="noticeBar.vipShow = false"
|
|
@clickRight="toBuyVip"
|
|
@clickRight="toBuyVip"
|
|
- :rightText="noticeBar.vipRightText"
|
|
|
|
- v-if="vipNoticeBarShow"
|
|
|
|
- >{{ noticeBar.vipContentText }}
|
|
|
|
|
|
+ >
|
|
|
|
+ {{ noticeBar.vipContentText }}
|
|
</NoticeBar>
|
|
</NoticeBar>
|
|
<NoticeBar
|
|
<NoticeBar
|
|
|
|
+ v-if="keywordsSettingNoticeBarShow"
|
|
|
|
+ right-text="去设置"
|
|
@clickLeft="noticeBar.settingKeywordsShow = false"
|
|
@clickLeft="noticeBar.settingKeywordsShow = false"
|
|
@clickRight="toKeysetPage"
|
|
@clickRight="toKeysetPage"
|
|
- rightText="去设置"
|
|
|
|
- v-if="keywordsSettingNoticeBarShow"
|
|
|
|
- >您未设置关键词,设置后接收信息更精准!
|
|
|
|
|
|
+ >
|
|
|
|
+ 您未设置关键词,设置后接收信息更精准!
|
|
</NoticeBar>
|
|
</NoticeBar>
|
|
</footer>
|
|
</footer>
|
|
- <!-- 客服-->
|
|
|
|
- <customer-corner
|
|
|
|
|
|
+ <!-- 客服 -->
|
|
|
|
+ <CustomerCorner
|
|
v-show="isLogin"
|
|
v-show="isLogin"
|
|
:scroll-status="scrollStatus"
|
|
:scroll-status="scrollStatus"
|
|
bottom-position="12%"
|
|
bottom-position="12%"
|
|
/>
|
|
/>
|
|
<!-- 招采 -->
|
|
<!-- 招采 -->
|
|
<CustomerBid
|
|
<CustomerBid
|
|
- v-show="isLogin && $envs.inWX"
|
|
|
|
|
|
+ v-show="isLogin && $envs.inWX && showTutorial"
|
|
:scroll-status="scrollStatus"
|
|
:scroll-status="scrollStatus"
|
|
bottom-position="19%"
|
|
bottom-position="19%"
|
|
@jumpBidPage="jumpBidPage"
|
|
@jumpBidPage="jumpBidPage"
|
|
/>
|
|
/>
|
|
<DataReportTip
|
|
<DataReportTip
|
|
v-model="dataReport.tip"
|
|
v-model="dataReport.tip"
|
|
- :vSwitch="vSwitch"
|
|
|
|
- :tipInfo="dataReport.tipInfo"
|
|
|
|
|
|
+ :v-switch="vSwitch"
|
|
|
|
+ :tip-info="dataReport.tipInfo"
|
|
/>
|
|
/>
|
|
- <popupDataexport
|
|
|
|
- ref="popup_dataExport"
|
|
|
|
- @next="next_export"
|
|
|
|
- ></popupDataexport>
|
|
|
|
|
|
+ <PopupDataexport ref="popup_dataExport" @next="next_export" />
|
|
<CheckUserDialog />
|
|
<CheckUserDialog />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
-import { mapState, mapActions, mapGetters } from 'vuex'
|
|
|
|
-import { List, Badge, Button, Tabs, Tab, Tag, Popup } from 'vant'
|
|
|
|
|
|
+import { mapActions, mapGetters, mapState } from 'vuex'
|
|
|
|
+import { Badge, Button, List, Popup, Tab, Tabs, Tag } from 'vant'
|
|
import dayjs from 'dayjs'
|
|
import dayjs from 'dayjs'
|
|
import qs from 'qs'
|
|
import qs from 'qs'
|
|
|
|
+import { throttle } from 'lodash'
|
|
import bidStatusNode from '@/components/bid-update/BidUpdate'
|
|
import bidStatusNode from '@/components/bid-update/BidUpdate'
|
|
import {
|
|
import {
|
|
- AppIcon,
|
|
|
|
AppEmpty,
|
|
AppEmpty,
|
|
- ProjectCell,
|
|
|
|
- DropFilter,
|
|
|
|
|
|
+ AppIcon,
|
|
DatetimePicker,
|
|
DatetimePicker,
|
|
- NoticeBar
|
|
|
|
|
|
+ DropFilter,
|
|
|
|
+ NoticeBar,
|
|
|
|
+ ProjectCell
|
|
} from '@/ui'
|
|
} from '@/ui'
|
|
// 三级地区筛选
|
|
// 三级地区筛选
|
|
import AreaThreeSidebar from '@/components/selector/area-three-sidebar/index'
|
|
import AreaThreeSidebar from '@/components/selector/area-three-sidebar/index'
|
|
@@ -520,37 +526,37 @@ import popupDataexport from '@/components/dataExport/popupDataexport.vue'
|
|
import CheckUserDialog from '@/views/identity/components/CheckUserDialog'
|
|
import CheckUserDialog from '@/views/identity/components/CheckUserDialog'
|
|
import CustomerCorner from '@/components/customer/index'
|
|
import CustomerCorner from '@/components/customer/index'
|
|
import CustomerBid from '@/components/customerBid/index'
|
|
import CustomerBid from '@/components/customerBid/index'
|
|
-import { LINKS, vtMap, AdCode } from '@/data'
|
|
|
|
|
|
+import { AdCode, LINKS, vtMap } from '@/data'
|
|
import { wxShareMixin } from '@/utils/mixins/modules/wx-share'
|
|
import { wxShareMixin } from '@/utils/mixins/modules/wx-share'
|
|
import { iosBackRefresh } from '@/utils/utils'
|
|
import { iosBackRefresh } from '@/utils/utils'
|
|
-import { throttle } from 'lodash'
|
|
|
|
import {
|
|
import {
|
|
- callHideTab,
|
|
|
|
|
|
+ FilterHistoryViewModel2AjaxModel,
|
|
|
|
+ InfoTypeTransform,
|
|
callHideRedSpotOnMenu,
|
|
callHideRedSpotOnMenu,
|
|
|
|
+ callHideTab,
|
|
|
|
+ dateFormatter,
|
|
formatMoney,
|
|
formatMoney,
|
|
- moneyUnit,
|
|
|
|
|
|
+ getRandomNumber,
|
|
|
|
+ getRandomString,
|
|
iOSVersionLt14,
|
|
iOSVersionLt14,
|
|
- dateFormatter,
|
|
|
|
- replaceKeyword,
|
|
|
|
|
|
+ moneyUnit,
|
|
openAppOrWxPage,
|
|
openAppOrWxPage,
|
|
openLinkOfOther,
|
|
openLinkOfOther,
|
|
- getRandomString,
|
|
|
|
- getRandomNumber,
|
|
|
|
- FilterHistoryViewModel2AjaxModel,
|
|
|
|
- InfoTypeTransform
|
|
|
|
|
|
+ replaceKeyword
|
|
} from '@/utils'
|
|
} from '@/utils'
|
|
import {
|
|
import {
|
|
- selectEnt,
|
|
|
|
|
|
+ ajaxCanBiaoAction,
|
|
|
|
+ ajaxCanBiaoStatus,
|
|
|
|
+ checkDataReportTip,
|
|
|
|
+ checkHasReportData,
|
|
|
|
+ getConfiguration,
|
|
getPushListDataExportId,
|
|
getPushListDataExportId,
|
|
|
|
+ getSubscribePageAreaPackTip,
|
|
|
|
+ getUserSubscribeKeywords,
|
|
getUserSubscribeList,
|
|
getUserSubscribeList,
|
|
getUserSubscribeSomeInfo,
|
|
getUserSubscribeSomeInfo,
|
|
- checkDataReportTip,
|
|
|
|
- getSubscribePageAreaPackTip,
|
|
|
|
|
|
+ selectEnt,
|
|
setSubscribePageAreaPackTipClose,
|
|
setSubscribePageAreaPackTipClose,
|
|
- checkHasReportData,
|
|
|
|
- ajaxCanBiaoStatus,
|
|
|
|
- ajaxCanBiaoAction,
|
|
|
|
- getUserSubscribeKeywords,
|
|
|
|
setUserSubscribeListVisited
|
|
setUserSubscribeListVisited
|
|
} from '@/api/modules'
|
|
} from '@/api/modules'
|
|
import { leadGetDate } from '@/api/modules/leadGeneration'
|
|
import { leadGetDate } from '@/api/modules/leadGeneration'
|
|
@@ -567,7 +573,6 @@ const leaveSourceMap = {
|
|
|
|
|
|
export default {
|
|
export default {
|
|
name: 'AppSubscribe',
|
|
name: 'AppSubscribe',
|
|
- mixins: [wxShareMixin],
|
|
|
|
components: {
|
|
components: {
|
|
PowerSwitch,
|
|
PowerSwitch,
|
|
SubscribeMoreFilters,
|
|
SubscribeMoreFilters,
|
|
@@ -589,12 +594,18 @@ export default {
|
|
[IndustrySidebar.name]: IndustrySidebar,
|
|
[IndustrySidebar.name]: IndustrySidebar,
|
|
CheckUserDialog,
|
|
CheckUserDialog,
|
|
RecommendCard,
|
|
RecommendCard,
|
|
- bidStatusNode,
|
|
|
|
- popupDataexport,
|
|
|
|
|
|
+ BidStatusNode: bidStatusNode,
|
|
|
|
+ PopupDataexport: popupDataexport,
|
|
AreaThreeSidebar,
|
|
AreaThreeSidebar,
|
|
CustomerCorner,
|
|
CustomerCorner,
|
|
CustomerBid
|
|
CustomerBid
|
|
},
|
|
},
|
|
|
|
+ mixins: [wxShareMixin],
|
|
|
|
+ provide() {
|
|
|
|
+ return {
|
|
|
|
+ getActiveSubscribeTypeState: this.getActiveSubscribeTypeState
|
|
|
|
+ }
|
|
|
|
+ },
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
restored: false, // 本次页面加载数据是否从缓存中获取
|
|
restored: false, // 本次页面加载数据是否从缓存中获取
|
|
@@ -832,12 +843,8 @@ export default {
|
|
projectCellInfo: {},
|
|
projectCellInfo: {},
|
|
mergedKeywords: [],
|
|
mergedKeywords: [],
|
|
alreadyLeave: false, // 免费用户是否已经留资. true为已留资,false为未留资或者留资信息不全
|
|
alreadyLeave: false, // 免费用户是否已经留资. true为已留资,false为未留资或者留资信息不全
|
|
- scrollStatus: true
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- provide() {
|
|
|
|
- return {
|
|
|
|
- getActiveSubscribeTypeState: this.getActiveSubscribeTypeState
|
|
|
|
|
|
+ scrollStatus: true,
|
|
|
|
+ showTutorial: false
|
|
}
|
|
}
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -1134,7 +1141,7 @@ export default {
|
|
// changed后会进行一次查询
|
|
// changed后会进行一次查询
|
|
// 默认查询
|
|
// 默认查询
|
|
// this.subscribeTypeActive = 'my'
|
|
// this.subscribeTypeActive = 'my'
|
|
- this.doSearch('firstInit') //初始化调用接口
|
|
|
|
|
|
+ this.doSearch('firstInit') // 初始化调用接口
|
|
}
|
|
}
|
|
this.getMergedEntSubscribeKeywords()
|
|
this.getMergedEntSubscribeKeywords()
|
|
}
|
|
}
|
|
@@ -1146,6 +1153,7 @@ export default {
|
|
this.setDocumentTitle()
|
|
this.setDocumentTitle()
|
|
this.initScrollEvents()
|
|
this.initScrollEvents()
|
|
this.appTabShow()
|
|
this.appTabShow()
|
|
|
|
+ this.getConfigurationApi()
|
|
console.log(this.restfulApiUserTypeWitchVSwitch, 'mounted')
|
|
console.log(this.restfulApiUserTypeWitchVSwitch, 'mounted')
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
@@ -1157,9 +1165,23 @@ export default {
|
|
'userVipSwitchState',
|
|
'userVipSwitchState',
|
|
'getUserIdentityList'
|
|
'getUserIdentityList'
|
|
]),
|
|
]),
|
|
- jumpBidPage () {
|
|
|
|
|
|
+ jumpBidPage() {
|
|
this.$router.push('/course/index')
|
|
this.$router.push('/course/index')
|
|
},
|
|
},
|
|
|
|
+ async getConfigurationApi() {
|
|
|
|
+ const { error_code: code, data } = await getConfiguration()
|
|
|
|
+ if (code === 0) {
|
|
|
|
+ const thisTime = Math.round(new Date() / 1000)
|
|
|
|
+ if (
|
|
|
|
+ thisTime >= data?.bulletFrameStart &&
|
|
|
|
+ thisTime <= data?.bulletFrameEnd
|
|
|
|
+ ) {
|
|
|
|
+ this.showTutorial = true
|
|
|
|
+ } else {
|
|
|
|
+ this.showTutorial = false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
// 检测是否需要处理ios兼容性问题
|
|
// 检测是否需要处理ios兼容性问题
|
|
// ios13以及以下需要处理兼容性问题
|
|
// ios13以及以下需要处理兼容性问题
|
|
checkIOSCompatible() {
|
|
checkIOSCompatible() {
|
|
@@ -1550,7 +1572,7 @@ export default {
|
|
}
|
|
}
|
|
case 'industry': {
|
|
case 'industry': {
|
|
const result = Object.keys(values).map((k) => {
|
|
const result = Object.keys(values).map((k) => {
|
|
- return values[k].map((v) => k + '_' + v).join(',')
|
|
|
|
|
|
+ return values[k].map((v) => `${k}_${v}`).join(',')
|
|
})
|
|
})
|
|
params[key] = result.join(',')
|
|
params[key] = result.join(',')
|
|
break
|
|
break
|
|
@@ -1697,7 +1719,7 @@ export default {
|
|
await this.getList(type)
|
|
await this.getList(type)
|
|
},
|
|
},
|
|
// 下拉刷新,暂未用到
|
|
// 下拉刷新,暂未用到
|
|
- onRefresh: function () {
|
|
|
|
|
|
+ onRefresh() {
|
|
// 重置数据
|
|
// 重置数据
|
|
this.listState.pageNum = 1
|
|
this.listState.pageNum = 1
|
|
// 解除加载完成状态
|
|
// 解除加载完成状态
|
|
@@ -1922,7 +1944,7 @@ export default {
|
|
? item?.buyerClass
|
|
? item?.buyerClass
|
|
: undefined
|
|
: undefined
|
|
// 有city时展示city,无展示area
|
|
// 有city时展示city,无展示area
|
|
- const region = city ? city : area
|
|
|
|
|
|
+ const region = city || area
|
|
// 标签
|
|
// 标签
|
|
item.tagList = [
|
|
item.tagList = [
|
|
region || '',
|
|
region || '',
|
|
@@ -2007,7 +2029,7 @@ export default {
|
|
}
|
|
}
|
|
]
|
|
]
|
|
},
|
|
},
|
|
- dropdownMenuItemClick: function () {
|
|
|
|
|
|
+ dropdownMenuItemClick() {
|
|
if (this.noLoginOrFree && this.isPersonalSubscribe) {
|
|
if (this.noLoginOrFree && this.isPersonalSubscribe) {
|
|
this.onNoPower()
|
|
this.onNoPower()
|
|
}
|
|
}
|
|
@@ -2143,7 +2165,7 @@ export default {
|
|
// 标讯收藏
|
|
// 标讯收藏
|
|
async doCollection(item, index) {
|
|
async doCollection(item, index) {
|
|
if (!this.isLogin) {
|
|
if (!this.isLogin) {
|
|
- this.pageState.cacheStar = index + ''
|
|
|
|
|
|
+ this.pageState.cacheStar = `${index}`
|
|
this.saveState()
|
|
this.saveState()
|
|
return openLinkOfOther(LINKS.APP登录页.app, {
|
|
return openLinkOfOther(LINKS.APP登录页.app, {
|
|
query: {
|
|
query: {
|
|
@@ -2156,7 +2178,7 @@ export default {
|
|
stopLeaveInfo: !this.isFree || this.alreadyLeave, // 非免费用户或者已留资过的用户,不再重复留资
|
|
stopLeaveInfo: !this.isFree || this.alreadyLeave, // 非免费用户或者已留资过的用户,不再重复留资
|
|
id: item._id,
|
|
id: item._id,
|
|
beforeRedirect: () => {
|
|
beforeRedirect: () => {
|
|
- this.pageState.cacheStar = index + ''
|
|
|
|
|
|
+ this.pageState.cacheStar = `${index}`
|
|
this.saveState()
|
|
this.saveState()
|
|
},
|
|
},
|
|
complete: ({ type, message }) => {
|
|
complete: ({ type, message }) => {
|
|
@@ -2266,7 +2288,7 @@ export default {
|
|
count += stateCounter[key]?._children_selectedCount || 0
|
|
count += stateCounter[key]?._children_selectedCount || 0
|
|
}
|
|
}
|
|
const countString = count || ''
|
|
const countString = count || ''
|
|
- areaTitle = '地区' + countString
|
|
|
|
|
|
+ areaTitle = `地区${countString}`
|
|
this.searchState.areaDropdownMenuTitleText = areaTitle
|
|
this.searchState.areaDropdownMenuTitleText = areaTitle
|
|
} else {
|
|
} else {
|
|
const { areaDropdownMenuTitleText } = this.searchState
|
|
const { areaDropdownMenuTitleText } = this.searchState
|
|
@@ -2280,7 +2302,7 @@ export default {
|
|
.map((k) => this.filters.industry[k])
|
|
.map((k) => this.filters.industry[k])
|
|
.flat().length
|
|
.flat().length
|
|
const countString = count || ''
|
|
const countString = count || ''
|
|
- this.dropFilterOptions[2].menu.title = '行业' + countString
|
|
|
|
|
|
+ this.dropFilterOptions[2].menu.title = `行业${countString}`
|
|
break
|
|
break
|
|
}
|
|
}
|
|
case 'more': {
|
|
case 'more': {
|
|
@@ -2387,7 +2409,7 @@ export default {
|
|
const { listContainer } = this.$refs
|
|
const { listContainer } = this.$refs
|
|
this.saveActiveTab()
|
|
this.saveActiveTab()
|
|
this.listState.scrollTop = listContainer
|
|
this.listState.scrollTop = listContainer
|
|
- ? parseInt(listContainer.scrollTop)
|
|
|
|
|
|
+ ? Number.parseInt(listContainer.scrollTop)
|
|
: 0
|
|
: 0
|
|
this.$storage.set(
|
|
this.$storage.set(
|
|
this.$route.path,
|
|
this.$route.path,
|