首页跟多和公共详情页面改造

This commit is contained in:
熊丽君
2021-08-12 16:21:59 +08:00
parent a7f7dcde08
commit 812db4de27
4 changed files with 411 additions and 86 deletions

View File

@ -17,9 +17,17 @@
<img src="@/assets/image/icon4.png" alt="" /> <img src="@/assets/image/icon4.png" alt="" />
<img src="@/assets/image/icon5.png" alt="" /> <img src="@/assets/image/icon5.png" alt="" />
</div> </div>
<router-link
target="_blank"
:to="{
path: '/portrait',
query: { key: 'policyRead', val: '归口' }
}"
>
<div class="title_top_r pointer"> <div class="title_top_r pointer">
更多<i class="el-icon-arrow-right"></i> 更多<i class="el-icon-arrow-right"></i>
</div> </div>
</router-link>
</div> </div>
<span>{{ date }}</span> <span>{{ date }}</span>
</div> </div>
@ -101,9 +109,17 @@
<div> <div>
<img src="@/assets/image/icon6.png" alt="" /> <img src="@/assets/image/icon6.png" alt="" />
</div> </div>
<router-link
target="_blank"
:to="{
path: '/portrait',
query: { key: 'information', val: '' }
}"
>
<div class="title_top_r pointer"> <div class="title_top_r pointer">
更多<i class="el-icon-arrow-right"></i> 更多<i class="el-icon-arrow-right"></i>
</div> </div>
</router-link>
</div> </div>
<div class="tab_list"> <div class="tab_list">
<div class="banner_r_list" v-for="item in list3" :key="item.id"> <div class="banner_r_list" v-for="item in list3" :key="item.id">

View File

@ -158,11 +158,17 @@
</div> </div>
<div class="more"> <div class="more">
<!-- query: { key: 'policy', id: item.id } --> <!-- query: { key: 'policy', id: item.id } -->
<router-link target="_blank" :to="{ path: '/portrait' }"> <router-link
target="_blank"
:to="{
path: '/portrait',
query: { key: 'policy', val: '企业画像' }
}"
>
<el-button <el-button
type="primary" type="primary"
size="mini" size="mini"
v-show="portraitData.length >= 4" v-show="portraitData.length <= 4"
> >
查看更多 查看更多
</el-button> </el-button>

View File

@ -1,15 +1,28 @@
<template> <template>
<div class="portrait_page content"> <div class="portrait_page content">
<div class="header"> <div class="header" v-if="type == 'policy'">
<span class="span">企业画像</span> <span class="span">{{ val }}</span>
<el-tabs v-model="queryParams.labelId" @tab-click="handleClick"> <el-radio
<el-tab-pane v-model="queryParams.labelId"
:label="item.name"
:name="item.id"
v-for="item in portraitList" v-for="item in portraitList"
:key="item.id" :key="item.id"
></el-tab-pane> :label="item.id"
</el-tabs> border
@change="handleClick"
>{{ item.name }}</el-radio
>
</div>
<div class="header" v-else-if="type == 'policyRead'">
<span class="span">{{ val }}</span>
<el-radio
v-model="queryParams.attributeId"
v-for="item in attributeOptions"
:key="item.value"
:label="item.value"
border
@change="handleClick"
>{{ item.label }}</el-radio
>
</div> </div>
<div class="screen_l_b" v-for="item in portraitData" :key="item.id"> <div class="screen_l_b" v-for="item in portraitData" :key="item.id">
<div class="title text_hidden_one pointer"> <div class="title text_hidden_one pointer">
@ -17,16 +30,19 @@
target="_blank" target="_blank"
:to="{ :to="{
path: '/result', path: '/result',
query: { key: 'policy', id: item.id } query: { key: type, id: item.id }
}" }"
> >
{{ item.title }} {{ item.title }}
</router-link> </router-link>
</div> </div>
<div class="info"> <div class="info" v-if="type != 'information'">
<span>来源{{ item.source }}</span> <span>来源{{ item.source }}</span>
<span>发布{{ item.listDate }}</span> <span>发布{{ item.listDate }}</span>
</div> </div>
<div class="info" style="justify-content: flex-end;" v-else>
<span>发布{{ item.createTime }}</span>
</div>
</div> </div>
<!-- 分页 --> <!-- 分页 -->
<pagination <pagination
@ -43,17 +59,37 @@
import { getPolicyMatch } from '@/api/home/notice'; import { getPolicyMatch } from '@/api/home/notice';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { userInfo, getLabelSetting } from '@/api/home/info'; import { userInfo, getLabelSetting } from '@/api/home/info';
import { getPolicyRead, getInformation } from '@/api/home/home';
export default { export default {
data() { data() {
return { return {
activeName: '', type: '',
val: '',
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10
labelId: ''
}, },
total: 0, total: 0,
portraitList: [], // 企业画像 portraitList: [], // 企业画像
// 归口选项
attributeOptions: [
{
value: 'KJJ',
label: '科技'
},
{
value: 'JXJ',
label: '经信'
},
{
value: 'FGW',
label: '发改'
},
{
value: 'OTHER',
label: '其他'
}
],
portraitData: [], // 企业画像绑定的政策列表 portraitData: [], // 企业画像绑定的政策列表
portraitTotal: 0 portraitTotal: 0
}; };
@ -64,10 +100,22 @@ export default {
methods: { methods: {
// 获取企业画像数据列表 // 获取企业画像数据列表
getPortraitList() { getPortraitList() {
if (this.type == 'policy') {
getPolicyMatch(this.queryParams).then(({ data }) => { getPolicyMatch(this.queryParams).then(({ data }) => {
this.portraitData = data.list; this.portraitData = data.list;
this.total = data.total; this.total = data.total;
}); });
} else if (this.type == 'policyRead') {
getPolicyRead(this.queryParams).then(({ data }) => {
this.portraitData = data.list;
this.total = data.total;
});
} else if (this.type == 'information') {
getInformation(this.queryParams).then(({ data }) => {
this.portraitData = data.list;
this.total = data.total;
});
}
}, },
handleClick() { handleClick() {
this.getPortraitList(); this.getPortraitList();
@ -75,10 +123,16 @@ export default {
}, },
created() { created() {
if (this.token) { if (this.token) {
console.log();
const { key, val } = this.$route.query;
this.type = key;
this.val = val;
if (key == 'policy') {
userInfo().then(({ data }) => { userInfo().then(({ data }) => {
if (data.companyId) { if (data.companyId) {
getLabelSetting({ companyId: data.companyId }).then(({ data }) => { getLabelSetting({ companyId: data.companyId }).then(({ data }) => {
if (data.length) { if (data.length) {
console.log(data);
this.portraitList = data.map(item => this.portraitList = data.map(item =>
item.labelList item.labelList
? item.labelList.filter(v => v.isHas)[0] ? item.labelList.filter(v => v.isHas)[0]
@ -92,8 +146,16 @@ export default {
}); });
} }
}); });
} else if (key == 'policyRead') {
this.queryParams.attributeId = this.attributeOptions[0].value;
this.getPortraitList();
} else if (key == 'information') {
this.getPortraitList();
} else { } else {
this.msgSuccess('请先登录'); this.msgError('非法进入');
}
} else {
this.msgError('请先登录');
} }
} }
}; };
@ -114,6 +176,9 @@ export default {
height: 0; height: 0;
} }
} }
/deep/.el-radio__input {
display: none;
}
} }
.screen_l_b { .screen_l_b {
height: 110px; height: 110px;

View File

@ -1,6 +1,30 @@
<template> <template>
<!-- 预览弹出层 --> <!-- 预览弹出层 -->
<div class="result_page content"> <div class="result_page">
<el-backtop target=".result_page" :visibility-height="500"></el-backtop>
<div class="my_header">
<div class="title content p0-100">
<el-row :gutter="20">
<el-col :span="8"><span>嘉策科技创新服务平台</span></el-col>
<el-col :span="8"
><el-input
v-model.trim="input"
placeholder="请输入搜索关键字"
prefix-icon="el-icon-search"
@keyup.enter.native="toSearch"
></el-input
></el-col>
<el-col :span="8" style="text-align:right">
<span
>服务热线<span style="color:#ffa32c">400-0507-580</span></span
>
</el-col>
</el-row>
</div>
</div>
<div class="my_main content p0-100" style="display:flex">
<div class="l" style="width:75%;background-color: #fff;padding: 30px;">
<h2>{{ formData.title }}</h2> <h2>{{ formData.title }}</h2>
<div class="info" v-if="type != 'information'"> <div class="info" v-if="type != 'information'">
<span v-if="type != 'companyNeed' && type != 'scienceResult'" <span v-if="type != 'companyNeed' && type != 'scienceResult'"
@ -44,6 +68,98 @@
<div v-html="formData.text" /> <div v-html="formData.text" />
</div> </div>
</div> </div>
<div
class="r"
style="width:24%;margin-left:1%;background-color: #fff;padding: 20px 10px;"
>
<!-- 公告模块 -->
<div class="notice">
<div class="title">
<div>通知公告</div>
<router-link target="_blank" :to="{ path: '/notice' }">
<div class="pointer" style="color:#999">
更多<i class="el-icon-arrow-right"></i>
</div>
</router-link>
</div>
<div class="list">
<ul>
<li
class="text_hidden_one pointer"
v-for="item in noticeList"
:key="item.id"
>
<router-link
target="_blank"
:to="{
path: '/result',
query: { key: 'policy', id: item.id }
}"
>
<span></span>{{ item.title }}
</router-link>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="my_footer">
<div style="height: 4px;background: #FFA32C;"></div>
<div class="footer_one content">
<p>
<span>
<i><img src="@/assets/image/icon1.png" alt=""/></i>
总浏览量1020</span
>
<span>
<i><img src="@/assets/image/icon1.png" alt=""/></i>
今日浏览1020</span
>
</p>
<div class="footer_two">
<div class="footer_left">
<div class="footer_left_one">
<span class="footer_left_l">版权声明</span>
<span class="footer_left_r">
<i><img src="@/assets/image/icon3.png" alt=""/></i>
客服热线(周一至周五8:30-18:00)
</span>
</div>
<div class="footer_left_two">
<span class="footer_left_l">用户协议</span>
</div>
<div class="footer_left_three">
<span class="footer_left_l">意见反馈</span>
<span class="footer_left_r">
<i><img src="@/assets/image/icon2.png" alt=""/></i>
公司地址安徽省合肥市蜀山区黄山市601号412-414
</span>
</div>
</div>
<div class="footer_right">
<div class="item">
<img src="@/assets/image/scanloginqrcode.jpg" alt="" />
<div>嘉策公众号</div>
</div>
<div class="item">
<img src="@/assets/image/scanloginqrcode.jpg" alt="" />
<div>QQ群</div>
</div>
</div>
</div>
<div class="footer_three">
<div>
<span>商务合作</span>
<span>政策服务</span>
<span>在线解答</span>
</div>
<p>版权服务合肥嘉策信息技术服务有限公司 皖ICP备45619723号</p>
</div>
</div>
</div>
</div>
</template> </template>
<script> <script>
@ -55,6 +171,7 @@ import {
getInfo2, getInfo2,
getInfo3 getInfo3
} from '@/api/search'; } from '@/api/search';
import { getPolicyList } from '@/api/home/notice';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { add, cancel } from '@/api/search'; import { add, cancel } from '@/api/search';
import Editor from '@/components/Editor'; import Editor from '@/components/Editor';
@ -64,8 +181,10 @@ export default {
}, },
data() { data() {
return { return {
input: '',
type: '', type: '',
formData: {} formData: {},
noticeList: []
}; };
}, },
watch: { watch: {
@ -82,6 +201,14 @@ export default {
...mapGetters(['token']) ...mapGetters(['token'])
}, },
methods: { methods: {
toSearch() {
if (!this.input.length) return this.msgError('请输入搜索关键字');
let routerJump = this.$router.resolve({
path: '/search',
query: { val: this.input }
});
window.open(routerJump.href, '_blank');
},
addItem() { addItem() {
add({ policyId: this.formData.id }).then(res => { add({ policyId: this.formData.id }).then(res => {
this.formData.collected = 1; this.formData.collected = 1;
@ -124,6 +251,9 @@ export default {
this.formData = data; this.formData = data;
}); });
} }
getPolicyList({ pageNum: 1, pageSize: 5 }).then(({ data }) => {
this.noticeList = data.list;
});
} }
}; };
</script> </script>
@ -133,6 +263,9 @@ export default {
padding-top: 0; padding-top: 0;
} }
.result_page { .result_page {
height: 100vh;
overflow: auto;
background-color: #f1f1f1;
.info { .info {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -146,5 +279,110 @@ export default {
border: 0; border: 0;
} }
} }
.my_header {
position: fixed;
z-index: 1;
width: 100%;
height: 46px;
line-height: 46px;
background: #3d3e3e;
.title {
color: #fff;
}
}
.my_main {
padding-top: 70px;
.r {
.title {
display: flex;
justify-content: space-between;
}
.list {
ul {
padding-left: 0;
line-height: 35px;
li {
color: #999;
span {
margin-right: 5px;
}
&:hover {
color: #ffa32c;
}
}
}
}
}
}
.my_footer {
margin-top: 30px;
background-color: #fff;
.footer_one {
p {
text-align: center;
font-size: 14px;
color: #666;
span {
i {
margin-right: 3px;
img {
vertical-align: middle;
}
}
}
span:nth-child(2) {
margin-left: 40px;
}
}
}
.footer_two {
border-bottom: 1px solid #dcdcdc;
display: flex;
justify-content: space-between;
align-items: center;
.footer_left {
padding: 50px 0;
.footer_left_two {
margin: 20px 0;
}
.footer_left_l {
font-size: 18px;
color: #333;
margin-right: 30px;
}
.footer_left_r {
i {
img {
vertical-align: middle;
}
}
}
}
.footer_right {
display: flex;
.item {
font-size: 18px;
color: #333;
margin-right: 50px;
text-align: center;
}
}
}
.footer_three {
text-align: center;
padding: 36px 0;
div {
font-size: 16px;
color: #3394ff;
span:nth-child(2) {
margin: 0 39px;
}
}
p {
font-size: 14px;
color: #333;
}
}
}
} }
</style> </style>