455 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- PC端布局 -->
<div class="flex justify-between w-full h-full">
<!-- 左边导航栏 -->
<AppHeader></AppHeader>
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="flex top_search ">
<div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
</div>
<div class="inputform">
<input v-model="inputSearch" class="contactInput w-full md:w-[337px]" type="text"
placeholder="请输入搜索关键字" />
<div class="search_rinput" @click="toSearch">
<img src="/img/index/hmsearch.png" alt="">
</div>
</div>
</div>
<div class="top_bar">
<div style="background: #ffffff;width: 100%;display: flex;align-items: center;padding: 18px;">
<div>
<img :src="`/img/key.png`" style="width: 22px;height: 22px;">
</div>
<div style="font-size: 18px;color: #323232;margin-left: 10px;">当前位置首页 > 服务青年 > <span
style="color: #3B90DF;">团务百科</span></div>
</div>
</div>
<div class="News_box">
<div class="lef_box">
<!-- @click="getMesList(null)" 新闻动态总 -->
<div class="lef_boxitem1">
<div class="lef_boxitem1_shu"></div>
<div class="lef_boxitem1_title">团务百科</div>
</div>
<div :class="['lef_boxitem2', { 'active': cateid == item.id }]" v-for="(item, index) in newsListtyp"
:key="index" @click="getMesList(item.id, 1)">
<div class="lef_boxitem2_title">{{ item.name }}</div>
</div>
</div>
<div class="rig_box">
<div class="re_box">
<div class="re_box_item" v-for="(item, index) in MesList" :key="index"
@click="openUrl(item.id)">
<div class="re_title">
<div class="dian"></div>
<span class="one-line-ellipsis">{{ item.title }}</span>
</div>
<div class="re_date">
<div class="shu"></div>
<div class="right_tex">
<span class="span1">{{ item.release_time_text.slice(8, 10) }}</span>
<span class="span2">{{ item.release_time_text.slice(0, 7) }}</span>
</div>
</div>
</div>
</div>
<!-- 分页 -->
</div>
</div>
<div class="flex flex-row justify-center pages_tsw" style="margin-top: 20px;">
<n-pagination v-model:page="page" :page-sizes="[9]" :item-count="total" size="medium"
@update:page="getPageList" show-quick-jumper>
<template #goto>
到第
</template>
<template #prefix="{ itemCount }">
{{ itemCount }}
</template>
</n-pagination>
</div>
<AppFooter></AppFooter>
<!-- 右分享 -->
<!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg">
<img :src="`/img/index/douyin.png`" alt="">
<img :src="`/img/index/wb.png`" alt="">
<img :src="`/img/index/wx.png`" alt="">
<img :src="`/img/index/blbl.png`" alt="">
</div> -->
<!-- 底部鼠标 -->
<!-- <div class="mouse_img">
<img :src="`/img/index/hmouse.png`" alt="">
</div> -->
</div>
</div>
</template>
<script lang="ts" setup>
import { defineEmits } from 'vue'
import { NPagination } from 'naive-ui'
import $api from '@/service/webRequest'
import emitter from '@/plugins/emitter'
const inputSearch = ref('');
const MesList = ref([]);
const newsListtyp = ref([]);
const page = ref(1);
const total = ref(0);
const cateid = ref(0);
const detailId = ref(null);
// 信息公开
onMounted(() => {
//getMesList();
getNewstypeList();
})
const emit = defineEmits(['toSwpe'])
//跳转详情
const openUrl = (id: number) => {
window.open(`/info/${id}?type=3`)
}
//跳转详情
// const gotoDetail = (id: number) => {
// detailId.value = {
// id: id,
// type: '1'
// };
// localStorage.setItem('detailId', JSON.stringify(detailId.value));
// emit('toSwpe',6)
// emitter.emit('detailId', detailId.value);
// }
//搜索
const toSearch = () => {
// emit('toSwpe',9);
// emitter.emit('inputSea', {
// keywords:inputSearch.value,
// type: 1,
// });
window.open(`/search_info?type=1&keywords=${inputSearch.value}`)
}
const getPageList = async () => {
page.value = page.value;
getMesList(cateid.value);
}
const getMesList = async (id: number) => {
cateid.value = id;
//page.value = pagecru ? pagecru : page.value;
const res = await $api.post('/api/home.encyclopedia/index',
{
cate_id: cateid.value,
limit: 9,
page: page.value,
isnews: 1
}
)
total.value = res.data.data.count;
MesList.value = res.data.data.list;
}
const getNewstypeList = async () => {
const res = await $api.get('/api/home.encyclopedia/cate')
newsListtyp.value = res.data.data.list;
getMesList(res.data.data.list[0].id);
}
</script>
<style lang="scss" scoped>
@import '@/assets/index.scss';
/* pc端样式 */
.rightcon {
width: 100%;
height: 100%;
background-image: url('/img/index/rightcons.png');
background-size: 100% 100%;
overflow-y: auto;
position: absolute;
}
.top_search {
margin-top: 50px;
height: 70px;
justify-content: space-between;
align-items: center;
margin-left: 415px;
width: 1200px;
}
.inputform {
position: relative;
width: 340px;
}
.contactInput {
width: 337px;
height: 50px;
background: #FFFFFF;
border-radius: 8px;
border: 1px solid #DEE4E8;
padding-left: 15px;
}
.contactInput::placeholder {
color: #999999;
}
.contactInput:focus {
outline: none;
}
.search_rinput {
width: 68px;
height: 50px;
background: #338CDE;
border-radius: 0px 8px 8px 0px;
position: absolute;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
}
.News_box {
display: flex;
justify-content: space-between;
width: 1300px;
margin: 0 auto;
.lef_box {
width: 260px;
height: 100%;
margin-top: 20px;
margin-left: 100px;
.lef_boxitem1 {
width: 260px;
height: 64px;
background: linear-gradient(0deg, #338CDE 0%, #3D92E0 100%);
display: flex;
align-items: center;
justify-content: center;
// cursor: pointer;
.lef_boxitem1_title {
width: 88px;
// height: 22px;
font-family: Microsoft YaHei UI;
font-weight: bold;
font-size: 22px;
color: #FFFEFE;
}
.lef_boxitem1_shu {
width: 4px;
height: 25px;
background: #FFFFFF;
margin-right: 20px;
}
}
.lef_boxitem2 {
width: 260px;
height: 64px;
background: #FFFFFF;
color: #323232;
display: flex;
align-items: center;
margin-top: 10px;
cursor: pointer;
.lef_boxitem2_title {
width: 100%;
// height: 19px;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 20px;
text-align: center;
}
&:hover {
background: linear-gradient(0deg, rgba(51, 140, 222, 0.12) 0%, rgba(61, 146, 224, 0.12) 100%);
color: #3A91DF;
}
&.active {
background: linear-gradient(0deg, rgba(51, 140, 222, 0.12) 0%, rgba(61, 146, 224, 0.12) 100%);
color: #3A91DF;
}
}
}
.rig_box {
width: 921px;
.re_box {
width: 100%;
margin: 0 auto;
margin-top: 20px;
// padding-left: 60px;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-content: flex-start;
gap: 10px;
.re_box_item {
width: 100%;
height: 90px;
background: #FFFFFF;
border: 1px solid #EEF7FF;
padding: 20px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
.re_title {
// width: 640px;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
color: #323232;
display: flex;
align-items: center;
.dian {
width: 10px;
height: 10px;
background: #3B90DF;
border-radius: 50%;
margin-right: 15px;
}
}
.re_date {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 14px;
color: #368BDB;
display: flex;
justify-content: space-between;
align-items: center;
.shu {
background: #EEEEEE;
width: 1px;
height: 50px;
margin-right: 20px;
}
.right_tex {
display: flex;
flex-direction: column;
width: 80px;
text-align: center;
.span1 {
width: 100%;
font-family: Microsoft YaHei;
font-weight: 600;
font-size: 22px;
color: #378EDF;
}
.span2 {
width: 100%;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 16px;
color: #378EDF;
}
}
}
&:hover {
background-image: url('/img/listbg.png');
background-size: 100% 100%;
cursor: pointer;
.re_date {
.shu {
background: #FFFFFF;
}
}
}
}
}
}
}
.pages_tsw {
padding:30px 0px 0px 270px;
:deep(.n-pagination .n-pagination-item:not(.n-pagination-item--disabled).n-pagination-item--active) {
color: #ffffff;
background-color: #388FDF;
border: 1px solid #388FDF;
}
:deep(.n-pagination .n-pagination-item:not(.n-pagination-item--disabled):hover.n-pagination-item--button) {
color: #999999;
}
:deep(.n-pagination .n-pagination-item:not(.n-pagination-item--disabled):hover) {
color: #388FDF;
// border: 1px solid #388FDF;
}
:deep(.n-pagination .n-pagination-item--active:hover) {
color: #ffffff !important;
// border: 1px solid #388FDF;
}
:deep(.n-pagination .n-pagination-item) {
border: none;
width: 42px;
height: 30px;
font-size: 18px;
background: #FFFFFF;
}
:deep(.n-pagination-quick-jumper) {
&:after {
content: '页'
}
}
}
.top_bar {
margin: 0px auto;
width: 1300px;
padding-left: 100px;
padding-top: 50px;
}
@media (max-width: 1440px) {
.top_search {
width: 920px;
margin-left: 373px;
}
.News_box {
width: 1032px;
margin-left: 270px;
}
.rig_box {
width: 650px !important;
}
.top_bar {
margin: 0px;
width: 1032px;
margin-left: 270px;
}
}
</style>