改版搞定

This commit is contained in:
王创世 2025-07-02 17:33:47 +08:00
parent 4095e8afcb
commit bea00be7cc
52 changed files with 2279 additions and 1280 deletions

12
app.vue
View File

@ -76,4 +76,16 @@ select{
appearance:none; appearance:none;
} }
.mouse_img {
position: absolute;
bottom: 30px;
right: 60px;
width: 150px;
}
@media (max-width: 1440px) {
.mouse_img {
width: 100px;
right: 15px;
}
}
</style> </style>

View File

@ -1,163 +1,215 @@
<template> <template>
<!-- PC端布局 --> <!-- PC端布局 -->
<div class="flex justify-between w-full h-full" > <div class="flex justify-between w-full h-full">
<!-- 左边导航栏 --> <!-- 左边导航栏 -->
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="ab_top">
<div class="ab_col"></div>
<div class="ab_tit">团市委职责</div>
<div class="ab_col"></div>
</div>
<div class="ab_con">
<div>
<img src="/img/about/cpc.png" alt="">
</div>
<div style="margin-left: 100px;">
<swiper class="w-[667px] h-[340px]" @swiper="onSwiperImgs" v-bind="swiperOptionsimgs">
<swiper-slide v-for="(item,index) in listImg" :key="index" @click="gotoDetail(7)">
<div class="img_tits">
<p>{{item.title1 }}</p>
<p>{{item.title2 }}</p>
<p>{{item.title3 }}</p>
<p>{{item.title4 }}</p>
<p v-if="item.title5">{{item.title5 }}</p>
</div>
<img :src="item.image" style="width: 100%;height: 100%;object-fit: cover;">
</swiper-slide>
</swiper>
</div>
</div>
<div class="ab_top" style="margin-top: 30px;">
<div class="ab_col"></div>
<div class="ab_tit">各部门职能</div>
<div class="ab_col"></div>
</div>
<div class="ab_bot" style="margin-top: 10px;"> <!-- 右边内容栏 -->
<div class="ab_bot_item" v-for="(item, index) in bmList" :key="index" @mouseenter="mouseenters(index)" @click="gotoDetail(7)"> <div class="rightcon">
<div class="ab_bot_item_tit">{{item.title}}</div> <div class="flex top_search ">
<div class="ab_bot_item_con three-line-ellipsis">{{item.content}}</div> <div style="width: 350x;">
<div class="ab_bot_item_tel" v-if="item.abshow"> <img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
<img class="img_tl" src="/img/about/telp.png" alt=""> </div>
<div class="span_tl">电话{{item.telnum}}</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="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 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;">{{newsListtyp.find(item => item.id == cateid)?.name
}}</span></div>
</div>
<div style="background-color: #ffffff;width: 100%;padding: 18px;">
<div
style="font-weight: bold;font-size: 32px;color: #393939;text-align: center;padding: 25px 0px 25px 0;">
团市委的主要职责</div>
<div style="width: 100%;height: 3px;border-top: 1px dashed #BBBBBB;"></div>
<div
style="color: #999999;font-weight: 400;font-size: 16px;line-height: 25px;white-space: pre-line;">
<div v-html="ldbz"></div>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div>
<!-- 右分享 --> <!-- 右分享 -->
<!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg"> <!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg">
<img :src="`/img/index/douyin.png`" alt=""> <img :src="`/img/index/douyin.png`" alt="">
<img :src="`/img/index/wb.png`" alt=""> <img :src="`/img/index/wb.png`" alt="">
<img :src="`/img/index/wx.png`" alt=""> <img :src="`/img/index/wx.png`" alt="">
<img :src="`/img/index/blbl.png`" alt=""> <img :src="`/img/index/blbl.png`" alt="">
</div> --> </div> -->
<!-- 底部鼠标 --> <AppFooter></AppFooter>
<div style="position: absolute;bottom: 30px;right:30px;"> <!-- 底部鼠标 -->
<img :src="`/img/index/hmouse.png`" alt=""> <div class="mouse_img">
<img :src="`/img/index/hmouse.png`" alt="">
</div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Swiper, SwiperSlide } from 'swiper/vue' import { defineEmits } from 'vue'
import { ref, onMounted, defineEmits } from 'vue' import { NPagination } from 'naive-ui'
import 'swiper/css' import $api from '@/service/webRequest'
import 'swiper/css/autoplay' import emitter from '@/plugins/emitter'
import "swiper/css/pagination"; const inputSearch = ref('');
import { Autoplay, Navigation, Pagination, Scrollbar, A11y, EffectCoverflow, EffectCube, Mousewheel } from "swiper/modules"; const MesList = ref([]);
const bmList = ref([ const newsListtyp = ref([{ id: 1, name: '领导班子' }, { id: 2, name: '​机构职能' }, { id: 3, name: '​部门设置' }, { id: 4, name: '直属单位' }, { id: 5, name: '​下属部门' }]);
{ abshow:false,title: '办公室', telnum: '63225071', content: '协调处理机关日常事务;负责团市委重要会议的会务工作;负责机关文秘、信访、保密、网络工作;负责编发内部信息、简报工作;指导全市共青团的调查研究工作;负责对外联系、机关财务、资产、行政后勤等管理工作。' }, const page = ref(1);
{ abshow:false,title: '组织部', telnum: '63225070', content: '研究制定全市共青团组织、团干部和团员队伍建设的政策措施;指导推动全市团的基层组织、团员队伍和团干部队伍建设;负责团费收缴、管理和全市团的基层组织统计工作;组织开展全市性先进基层团组织和优秀团员、优秀团干部的评选表彰工作;指导推动团的基层阵地建设和基层组织信息化工作;协助党委管理县级团委的领导班子成员;协助管理在洛的团中央委员、候补委员和团省委委员、候补委员;指导全市团干部的教育培训;负责团市委机关和直属单位的人事管理、机构编制等工作;负责离退休人员的管理服务工作。' }, const total = ref(0);
{ abshow:false,title: '宣传部', telnum: '63225062', content: '组织指导全市团员青年的思想道德教育和全市团组织的文化活动;加强青年理想信念教育,引导全市广大青少年践行社会主义核心价值观;指导全市团的宣传工作;指导团员青年理论学习;提供和编写团干部教育材料和团课教材;强化青少年网络思想引领工作,提升网络舆情分析和引导能力;指导青少年活动阵地建设和青少年开展健康有益的活动;负责团市委的新闻、宣传工作,抓好团的宣传队伍建设。' }, const cateid = ref(1);
{ abshow:false,title: '青年发展部', telnum: '63225069', content: '研究制订促进全市青年发展的规划和政策措施,建立和完善青年服务体系;开展促进全市青年就业、创业、创新、创优和全市青年职业文明素养培养、技能培训提升等工作;指导洛阳市青年企业家协会、洛阳市青年农民专业合作社联合会等有关社会团体工作;组织实施对团市委定点扶贫地区的帮扶工作。' }, const detailId = ref(null);
{ abshow:false,title: '学校部(维护青少年权益部)', telnum: '63225067', content: '组织指导全市大中专院校、中学共青团工作,了解掌握学生的思想动态,根据党的教育方针开展团的各项活动;指导青年学生开展社会实践、勤工助学和课外科技、文化活动;培养青年学生创新意识和科技创新能力,推进大学生素质教育;负责市学联的日常事务工作;指导全市少先队工作,研究少年儿童的思想品德教育,协调和配合社会有关部门调查研究,反映情况,制定政策和措施;指导少先队校外阵地建设,组织开展有利于少年儿童健康成长的文化、体育活动;负责少先队宣传工作;抓好少先队辅导员队伍建设;负责少先队洛阳市工作委员会的日常事务工作;宣传贯彻《河南省未成年人保护条例》,负责全市未成年人权益保护工作;负责预防全市青少年违法犯罪工作;研究全市有关青少年发展问题,参与制定保护青少年健康成长的法规、政策;协调处理侵害青少年权益案件;指导青少年社会化服务体系建设;指导青少年报刊工作;承担市未成年人保护委员会办公室的日常工作。' },
{ abshow:false,title: '统战联络部', telnum: '63225102', content: '负责全市青年统战工作,在各族各界青年代表人士中开展联谊和交流工作;负责市青联的日常事务及会员团体和委员的联络工作;协助管理在洛全国青联成员、省青联委员;开展青年科技人才和青年留学人员的联系服务工作;开展对台港澳地区青年及青年侨胞的统战工作;负责全市青少年外事工作,开展同国外、境外青少年组织的联络和交流活动。' },
{ abshow:false,title: '社会联络部', telnum: '63230538', content: '研究制订全市共青团、青年社会组织参与社会建设的总体规划和政策制度;开展对全市青年社会组织和新兴青年群体的联系服务和引导工作;研究制订全市青年志愿服务工作规划、意见,指导全市青年志愿服务工作;指导建设全市青少年事务社会工作专业人才队伍;协调、指导全市青少年生态环境保护工作;承担全市性青年社团组织的指导和管理工作。' },
{ abshow:false,title: '机关党总支', telnum: '63235856', content: '负责机关和直属单位的党群工作。' }
]);
const listImg = ref([
{
title1: '一、领导全市的共青团工作。',
title2: '二、负责全市团的组织建设,积极创新基层组织制度,协助党组织管理、选拔和培训团干部,对团校、青少年活动阵地、青少年报刊等事务进行规划和管理。',
title3: '三、积极向党和政府反映青少年的意愿和呼声,提出意见和建议,充分发挥民主参与和民主监督作用。',
title4: '四、贯彻实施《河南省未成年人保护条例》,参与青少年事业发展规划和青少年工作政策的制定,积极实施希望工程,会同有关部门做好青少年权益保护和预防青少年犯罪工作,研究指导社区团的各项工作。',
image: '/img/about/cpcrit.png'
},
{
title1: '五、调查青年思想动态和青年工作情况,研究青少年工作理论、青少年思想教育、青少年事业发展等项工作,提出相应对策,开展各种活动。',
title2: '六、领导全市青联、学联和少先队工作,对全市性青年社团组织实行指导和管理。',
title3: '七、协助教育部门做好大、中、小学校的教育管理工作,维护学校稳定和社会安定团结。',
title4: '八、会同有关部门对全市青少年外事工作实行归口管理和提供服务,负责与国外青少年团体、政府青年机构、国际地区性青年组织及其他友好团体的交流工作,负责青年对外宣传工作,负责做好青年统战对象的团结教育工作。',
image: '/img/about/cpcrit1.png'
},
{
title1: '九、围绕全市经济工作大局,组织和带领团员青年发挥生力军和突击队作用。',
title2: '十、动员组织广大团员青年积极参与创建文明城市为主的各类创建活动。',
title3: '十一、围绕党政工作大局,突出青年特点,完善服务内容,促进青年创业就业。',
title4: '十二、做好党政机关团员青年效能建设工作,开展各种活动,带动机关服务质量、办事效率和执行力的进一步提高。',
title5: '十三、承担市委交办的其他事项。',
image: '/img/about/cpcrit2.png'
}
])
const mouseenters = (index: number) => {
bmList.value.forEach((item, index) => {
item.abshow = false;
})
bmList.value[index].abshow = true;
}
const swiperOptionsimgs = {
autoplay: {
delay: 5000,
disableOnInteraction: false,
},
direction: 'horizontal',
slidesPerView: 3,
speed: 500,
effect: 'coverflow',
loop: true,
modules: [Autoplay,EffectCoverflow],
centeredSlides: true,
spaceBetween: "-60%",
coverflowEffect: {
rotate: 0,
stretch: 100,
depth: 800,
modifier: 1,
slideShadows : false
},
// observer: true,
// ovserveParent: false,
// pagination: {
// el:'.swiper-pagination'
// },
}
let newsSwiper: any = null
const onSwiperImgs = (swiper: any) => {
newsSwiper = swiper
// swiper.on('slideChange', () => {
// //
// })
}
const emit = defineEmits(['toSwpe'])
//
const gotoDetail = (id: number) => {
// localStorage.setItem('detailId', detailId.value);
// emit('toSwpe',id)
window.open('/about_info/')
}
onMounted(() => {
//
const ldbz = ref(`思想引领:筑牢青年理想信念根基​
政治引领
组织青年学习党的理论方针政策特别是习近平新时代中国特色社会主义思想开展主题教育活动青年大学习青马工程引导青年坚定四个自信增强两个维护的自觉性
价值观培育
弘扬社会主义核心价值观通过榜样宣传红色教育网络思政等方式引导青年树立正确的人生观价值观例如开展青年五四奖章优秀共青团员评选宣传青年典型事迹
意识形态阵地建设
加强青年网络舆论引导管理团属新媒体平台如微信公众号微博短视频账号传播正能量抵制错误思潮维护网络空间清朗
组织建设夯实团的基层基础
团组织覆盖与规范化
推动团的基层组织向新兴领域延伸如非公企业社会组织互联网行业等完善智慧团建系统加强团员档案管理和组织关系转接
团员发展与教育
严格团员发展程序优化团员结构开展团员意识教育落实三会两制一课制度增强团组织凝聚力和战斗力
团干部队伍建设
选拔培养优秀团干部组织专题培训挂职锻炼提升团干部的政治素养和业务能力打造忠诚干净担当的骨干队伍
服务青年解决青年急难愁盼问题
就业创业支持
联合人社部门企业开展千校万岗招聘会职业技能培训搭建青年创业孵化基地提供政策咨询资金扶持青创贷
婚恋与家庭服务
举办青年联谊活动搭建婚恋交友平台关注青年育儿需求推动普惠性托育服务
心理健康与法律援助
开通12355青少年服务热线提供心理咨询法律咨询和权益维护服务帮助青年缓解压力应对困境
维护青年权益当好青年利益代言人
政策倡导与落实
推动中长期青年发展规划在地方落地参与制定青年发展相关政策保障青年在教育就业住房等领域的合法权益
权益保护机制
建立青少年权益代表制度介入校园欺凌劳动纠纷等案件联合公检法司部门开展法治进校园模拟法庭等活动提升青年法律意识
特殊群体关爱
重点帮扶困境青少年如留守儿童残疾青年失业青年实施希望工程阳光助学等项目提供物质帮扶和精神关怀
志愿服务与社会动员
品牌志愿服务项目
组织青年参与大型赛会服务如马拉松博览会社区治理生态环保河小青护河行动助老助残等志愿活动
应急响应与公益行动
在自然灾害公共卫生事件中组建青年突击队开展物资调配心理疏导等应急服务发起公益募捐支援弱势群体
志愿服务体系建设
完善志愿者注册培训激励机制推广志愿汇平台推动志愿服务常态化专业化
创新创业与人才培养
青年创新创业扶持
举办创青春创业大赛青创论坛对接风险投资和创业导师推动高校与企业共建产学研合作平台
技能提升与职业发展
开展青年岗位能手评选职业技能竞赛组织青年参与工匠精神培育计划助力青年职业成长
青年人才引进与留用
配合地方人才政策吸引高校毕业生返乡就业为高层次青年人才提供政策咨询生活保障等配套服务
对外交流与协同合作
青年交流项目
组织与国内外青年团体的互访活动国际青年领袖对话促进文化交流与经验共享
区域协同与资源整合
联动工会妇联科协等群团组织整合社会资源服务青年与高校企业共建实践基地
港澳台青年工作
开展港澳台青年夏令营实习计划增进国家认同推动融合发展
桥梁纽带作用传达青年声音
青年诉求调研与反馈
定期开展青年发展状况调查形成报告提交党委政府推动青年关切问题纳入政策议程
参政议政渠道建设
推荐优秀青年担任人大代表政协委员组织共青团与人大代表政协委员面对面活动畅通青年政治参与渠道
  巴黎奥运赛场上我国体育健儿奋勇争先取得境外参赛最好成绩彰显了青年一代的昂扬向上自信阳光海军空军喜庆75岁生日人民子弟兵展现新风貌面对洪涝台风等自然灾害广大党员干部冲锋在前大家众志成城守望相助无数劳动者建设者创业者都在为梦想拼搏我为国家勋章和国家荣誉称号获得者颁奖光荣属于他们也属于每一个挺膺担当的奋斗者
  当今世界变乱交织中国作为负责任大国积极推动全球治理变革深化全球南方团结合作我们推进高质量共建一带一路走深走实成功举办中非合作论坛北京峰会在上合金砖亚太经合组织二十国集团等双边多边场合鲜明提出中国主张为维护世界和平稳定注入更多正能量
  我们隆重庆祝新中国成立75周年深情回望共和国的沧桑巨变从五千多年中华文明的传承中一路走来中国二字镌刻在何尊底部更铭刻在每个华夏儿女心中党的二十届三中全会胜利召开吹响进一步全面深化改革的号角我们乘着改革开放的时代大潮阔步前行中国式现代化必将在改革开放中开辟更加广阔的前景
  2025我们将全面完成十四五规划要实施更加积极有为的政策聚精会神抓好高质量发展推动高水平科技自立自强保持经济社会发展良好势头当前经济运行面临一些新情况有外部环境不确定性的挑战有新旧动能转换的压力但这些经过努力是可以克服的我们从来都是在风雨洗礼中成长在历经考验中壮大大家要充满信心
  家事国事天下事让人民过上幸福生活是头等大事家家户户都盼着孩子能有好的教育老人能有好的养老服务年轻人能有更多发展机会这些朴实的愿望就是对美好生活的向往我们要一起努力不断提升社会建设和治理水平持续营造和谐包容的氛围把老百姓身边的大事小情解决好让大家笑容更多心里更暖
  在澳门回归祖国25周年之际我再到濠江之畔新发展新变化令人欣喜我们将坚定不移贯彻一国两制方针保持香港澳门长期繁荣稳定两岸同胞一家亲谁也无法割断我们的血脉亲情谁也不能阻挡祖国统一的历史大势
  世界百年变局加速演进需要以宽广胸襟超越隔阂冲突以博大情怀关照人类命运中国愿同各国一道做友好合作的践行者文明互鉴的推动者构建人类命运共同体的参与者共同开创世界的美好未来
  梦虽遥追则能达愿虽艰持则可圆中国式现代化的新征程上每一个人都是主角每一份付出都弥足珍贵每一束光芒都熠熠生辉
  河山添锦绣星光映万家让我们满怀希望迎接新的一年祝祖国时和岁丰繁荣昌盛祝大家所愿皆所成多喜乐长安宁`)
//
onMounted(() => {
//getMesList();
//getNewstypeList();
}) })
const emit = defineEmits(['toSwpe'])
//
const openUrl = (id: number) => {
window.open(`/info/${id}?type=1`)
}
//
// 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();
}
const getMesList = async (id: number, pagecru: number) => {
cateid.value = id ? id : cateid.value;
page.value = pagecru ? pagecru : page.value;
const res = await $api.post('/api/home.news/index',
{
cate_id: cateid.value,
limit: 7,
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.news/cate?isnews=1')
newsListtyp.value = res.data.data.list;
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -166,142 +218,281 @@ onMounted(() => {
/* pc端样式 */ /* pc端样式 */
.rightcon{ .rightcon {
width:100%; width: 100%;
height:100%; height: 100%;
background-image: url('/img/about/ab_bg.png'); background-image: url('/img/index/rightcons.png');
background-size: 100% 100%; background-size: 100% 100%;
.fiximg{ overflow-y: auto;
img{
margin-bottom: 20px; .fiximg {
} img {
margin-bottom: 20px;
} }
.ab_top{ }
width: 1200px; }
height: 40px;
.top_search {
margin: 0 auto; margin-top: 50px;
display: flex; height: 70px;
justify-content: center; justify-content: space-between;
align-items: center; align-items: center;
margin-left: 400px; margin-left: 415px;
margin-top: 30px; width: 1200px;
.ab_tit{ }
font-family: Microsoft YaHei;
font-weight: bold; .inputform {
font-size: 36px; position: relative;
color: #4E3C3C; width: 340px;
margin: 0 30px; }
}
.ab_col{ .contactInput {
width: 78px; width: 337px;
height: 3px; height: 50px;
background: #348CDD; background: #FFFFFF;
} border-radius: 8px;
} border: 1px solid #DEE4E8;
.ab_con{ padding-left: 15px;
width:1200px; }
height: 350px;
margin: 0 auto; .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;
gap: 20px;
.lef_box {
width: 260px;
height: 100%;
margin-top: 40px;
margin-left: 100px;
.lef_boxitem1 {
width: 260px;
height: 64px;
background: linear-gradient(0deg, #338CDE 0%, #3D92E0 100%);
display: flex; display: flex;
justify-content: space-between;
align-items: center; align-items: center;
margin-top: 30px; justify-content: center;
margin-left: 400px;
img{ // cursor: pointer;
width: 100%; .lef_boxitem1_title {
height: 100%; 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;
} }
} }
.ab_bot{
width: 1200px; .lef_boxitem2 {
margin: 0 auto; width: 260px;
height: 64px;
background: #FFFFFF;
color: #323232;
display: flex; display: flex;
justify-content: space-between; align-items: center;
align-items: flex-start; margin-top: 10px;
flex-wrap: wrap; cursor: pointer;
margin-left: 400px;
.ab_bot_item{ .lef_boxitem2_title {
width: 296px; width: 100%;
height: 180px; // height: 19px;
margin-top: 10px; font-family: Microsoft YaHei;
background-image: url('/img/about/ab_bot.png'); font-weight: 400;
background-size: 100% 100%; font-size: 20px;
position: relative; text-align: center;
}
.ab_bot_item_tit{
width: 100%; &:hover {
text-align: center; background: linear-gradient(0deg, rgba(51, 140, 222, 0.12) 0%, rgba(61, 146, 224, 0.12) 100%);
font-family: Microsoft YaHei UI; color: #3A91DF;
font-weight: 400;
font-size: 18px; }
color: #222222;
margin-top: 20px; &.active {
} background: linear-gradient(0deg, rgba(51, 140, 222, 0.12) 0%, rgba(61, 146, 224, 0.12) 100%);
.ab_bot_item_con{ color: #3A91DF;
width: 224px;
height: 64px;
font-family: Microsoft YaHei UI;
font-weight: 400;
font-size: 14px;
color: #666666;
margin:0 auto;
margin-top: 10px;
}
.ab_bot_item_tel{
position: absolute;
top: 0;left: 0;
background-image: url('/img/about/ab_bots.png');
background-size: 100% 100%;
width: 296px;
height: 189px;
display: flex;
flex-direction: column;
align-items: center;
.img_tl{
margin-top: 40px;
width: 46px;
height: 46px;
}
.span_tl{
width: 100%;
font-family: Microsoft YaHei UI;
font-weight: 400;
font-size: 18px;
color: #FFFEFE;
text-align: center;
margin-top: 10px;
}
}
&:hover{
cursor: pointer;
.ab_bot_item_tit{
color: #53A5E4;
}
}
} }
} }
} }
.swiper{ .rig_box {
.img_tits{ .re_box {
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 16px;
color: #FFFFFF;
position: absolute;
top: 0;
left: 0;
width: 100%; width: 100%;
padding-left: 30px; height: 100%;
padding-top: 10px; margin: 0 auto;
cursor: pointer; margin-top: 40px;
p{ // padding-left: 60px;
margin: 10px 20px ; 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: 400;
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/message/listbg.png');
background-size: 100% 100%;
cursor: pointer;
.re_date {
.shu {
background: #FFFFFF;
}
}
}
}
}
.pages_tsw {
: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: '页'
}
} }
} }
} }
</style> }
@media (max-width: 1440px) {
.top_search {
width: 920px;
margin-left: 373px;
}
.News_box{
width: 1032px;
margin-left: 270px;
}
.rig_box{
width: 700px;
}
}
</style>

View File

@ -7,7 +7,7 @@
<!-- 右边内容栏 --> <!-- 右边内容栏 -->
<div class="rightcon"> <div class="rightcon">
<div class="flex top_search "> <div class="flex top_search ">
<div style="width: 572px;height: 69px;margin-left: 415px;"> <div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;"> <img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
</div> </div>
<!-- <div class="inputform"> <!-- <div class="inputform">
@ -18,7 +18,7 @@
</div> </div>
</div> --> </div> -->
</div> </div>
<div class="flex flex-col w-full h-full" style="width: 1300px;margin: 0 auto;"> <div class="flex flex-col w-full h-full left-msg">
<div <div
style="z-index: 1;background: #ffffff;padding: 30px;border-radius: 16px;margin-top: 20px;margin-left: 100px;"> style="z-index: 1;background: #ffffff;padding: 30px;border-radius: 16px;margin-top: 20px;margin-left: 100px;">
<div class="liuyanba">团团留言板</div> <div class="liuyanba">团团留言板</div>
@ -30,11 +30,11 @@
placeholder="输入您的姓名" /> placeholder="输入您的姓名" />
<span>电话</span> <span>电话</span>
<input v-model="formData.mobile" <input v-model="formData.mobile"
class="contactInputs mt-[15px] md:ml-[30px] md:mt-[30px] w-full md:w-[600px]" class="contactInputs mt-[15px] md:mt-[30px] w-full md:w-[600px]"
type="text" placeholder="请输入您的联系电话" /> type="text" placeholder="请输入您的联系电话" />
<span>邮箱</span> <span>邮箱</span>
<input v-model="formData.emil" <input v-model="formData.emil"
class="contactInputs mt-[15px] md:ml-[30px] md:mt-[30px] w-full md:w-[600px]" class="contactInputs mt-[15px] md:mt-[30px] w-full md:w-[600px]"
type="text" placeholder="请输入您的邮箱" /> type="text" placeholder="请输入您的邮箱" />
</div> </div>
<div class="relative mt-4 md:mt-8 w-full md:w-[1100px] flex"> <div class="relative mt-4 md:mt-8 w-full md:w-[1100px] flex">
@ -52,23 +52,23 @@
<div class="re_tit">精选留言</div> <div class="re_tit">精选留言</div>
<div class="re_col"></div> <div class="re_col"></div>
</div> </div>
<div class="flex justify-between ml-[100px]"> <div class="flex justify-between ml-[100px]" style="gap: 20px;">
<div class="re_list" v-for="item, index in liuyanList"> <div class="re_list" v-for="item, index in liuyanList">
<div style="margin: 30px;"> <div style="margin: 30px;">
<div class="re_list_tit flex" style="width: 100%;"> <div class="re_list_tit flex" style="width: 100%;">
<span style="width: 12%">问题</span> <span style="width: 15%">问题</span>
<span style="color: #323232;width:90% ;">{{ item.question }}</span> <span style="color: #323232;width:85% ;">{{ item.question }}</span>
</div> </div>
<div class="re_list_tit flex" style="margin-top: 15px;width: 100%;"> <div class="re_list_tit flex" style="margin-top: 15px;width: 100%;">
<span style="width: 12%">描述</span> <span style="width: 15%">描述</span>
<span :title="item.message" class="three-line-ellipsis" <span :title="item.message" class="three-line-ellipsis"
style="font-weight: 400;font-size: 14px;color: #999999;width:88% ;">{{ item.message style="font-weight: 400;font-size: 14px;color: #999999;width:85% ;">{{ item.message
}}</span> }}</span>
</div> </div>
<div class="re_list_tit flex" style="margin-top: 15px;"> <div class="re_list_tit flex" style="margin-top: 15px;">
<span style="color: #368FDF;width: 12%;">回复</span> <span style="color: #368FDF;width: 15%;">回复</span>
<span :title="item.answer" class="two-line-ellipsis" <span :title="item.answer" class="two-line-ellipsis"
style="font-weight: 400;font-size: 14px;color: #999999;width:88% ;">{{ item.answer style="font-weight: 400;font-size: 14px;color: #999999;width:85% ;">{{ item.answer
}}</span> }}</span>
</div> </div>
</div> </div>
@ -76,7 +76,7 @@
</div> </div>
</div> </div>
<AppFooter></AppFooter>
<!-- 右分享 --> <!-- 右分享 -->
<!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg"> <!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg">
<img :src="`/img/index/douyin.png`" alt=""> <img :src="`/img/index/douyin.png`" alt="">
@ -85,7 +85,7 @@
<img :src="`/img/index/blbl.png`" alt=""> <img :src="`/img/index/blbl.png`" alt="">
</div> --> </div> -->
<!-- 底部鼠标 --> <!-- 底部鼠标 -->
<div style="position: absolute;bottom: 30px;right:30px;"> <div class="mouse_img">
<img :src="`/img/index/hmouse.png`" alt=""> <img :src="`/img/index/hmouse.png`" alt="">
</div> </div>
</div> </div>
@ -174,11 +174,12 @@ const submitForm = () => {
/* pc端样式 */ /* pc端样式 */
.rightcon { .rightcon {
width:100%; width: 100%;
height:100%; height: 100%;
background-image: url('/img/messageb.png'); background-image: url('/img/index/rightcons.png');
background-size: 100% 100%; background-size: 100% 100%;
overflow-y: auto;
overflow-x: hidden;
.fiximg { .fiximg {
img { img {
margin-bottom: 20px; margin-bottom: 20px;
@ -191,6 +192,8 @@ const submitForm = () => {
height: 70px; height: 70px;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-left: 415px;
width: 1200px;
} }
.inputform { .inputform {
@ -231,7 +234,6 @@ const submitForm = () => {
//------------------------------------------ //------------------------------------------
.liuyanba { .liuyanba {
width: 1200px;
/* height: 22px; */ /* height: 22px; */
margin: 0 auto; margin: 0 auto;
font-family: Microsoft YaHei UI; font-family: Microsoft YaHei UI;
@ -319,7 +321,7 @@ const submitForm = () => {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin-top: 20px; margin: 50px 0px 40px 0px;
.re_tit { .re_tit {
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
@ -337,12 +339,12 @@ const submitForm = () => {
} }
.re_list { .re_list {
width: 585px; width: 50%;
height: 243px; height: 243px;
margin-top: 20px; margin-top: 20px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 8px; border-radius: 8px;
.re_list_tit { .re_list_tit {
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
font-weight: bold; font-weight: bold;
@ -350,4 +352,31 @@ const submitForm = () => {
color: #FFA234; color: #FFA234;
} }
} }
.left-msg {
width: 1300px;
margin: 0 auto;
}
@media (max-width: 1440px) {
.left-msg {
width: 1018px;
margin: 0;
margin-left: 270px;
}
#myTextarea{
width: 752px;
}
.contactInputs{
width: 210px;
}
.inputforms {
display: flex;
justify-content: start!important;
align-items: center;
}
.contactForm .inputforms span{
width: 41px;
}
}
</style> </style>

View File

@ -3,7 +3,7 @@
<div class="group_30 flex-col pc-footer"> <div class="group_30 flex-col pc-footer">
<div class="text-wrapper_13 flex-row"> <div class="text-wrapper_13 flex-row">
<div class="fly1s" style="margin-top: 40px;"> <div class="fly1s" style="margin-top: 40px;">
<div style="display: flex;justify-content: space-between;align-items: center;gap: 30px;"> <div class="db-flex">
<div class="b1">中央人民政府</div> <div class="b1">中央人民政府</div>
<div style="display: flex;"> <div style="display: flex;">
<div class="b1" style="padding: 0;"> <div class="b1" style="padding: 0;">
@ -107,7 +107,7 @@
<div class="ml-[20px]"> <div class="ml-[20px]">
<img class="image_30" referrerpolicy="no-referrer" :src="`/img/bilicode.jpg`" /> <img class="image_30" referrerpolicy="no-referrer" :src="`/img/bilicode.jpg`" />
<p class="mt-[10px]">bilibili官方账号</p> <p class="mt-[10px]">bilibili官方</p>
</div> </div>
@ -225,4 +225,27 @@ const selectValue = ref(false);
border: 1px solid #EEEEEE; border: 1px solid #EEEEEE;
cursor: pointer; cursor: pointer;
} }
.db-flex {
display: flex;
justify-content: space-between;
align-items: center;
gap: 30px;
}
@media (max-width: 1440px) {
.group_30 {
width: 1000px;
}
.db-flex {
gap: 10px;
}
.b1{
width: 180px;
}
.image_29{
margin-right: 0px;
}
}
</style> </style>

View File

@ -18,12 +18,12 @@
<img v-if="crrent==3" src="/img/index/arrow.png" alt="" style="width: 9px;height: 12px;margin-left: 10px;"> <img v-if="crrent==3" src="/img/index/arrow.png" alt="" style="width: 9px;height: 12px;margin-left: 10px;">
</div> </div>
<div class="pc-nav-item" @click="gotoList(4)"> <div class="pc-nav-item" @click="gotoList(4)">
<img :src="crrent==4?'/img/index/message1.png':'/img/index/message.png'" alt=""></img> <img :src="crrent==4?'/img/index/ly1.png':'/img/index/ly.png'" alt=""></img>
<span :class="['span',{'active': crrent==4}]">青春洛阳</span> <span :class="['span',{'active': crrent==4}]">青春洛阳</span>
<img v-if="crrent==4" src="/img/index/arrow.png" alt="" style="width: 9px;height: 12px;margin-left: 10px;"> <img v-if="crrent==4" src="/img/index/arrow.png" alt="" style="width: 9px;height: 12px;margin-left: 10px;">
</div> </div>
<div class="pc-nav-item" @click="gotoList(5)"> <div class="pc-nav-item" @click="gotoList(5)">
<img :src="crrent==5?'/img/index/ly1.png':'/img/index/ly.png'" alt=""></img> <img :src="crrent==5?'/img/index/news1.png':'/img/index/news.png'" alt=""></img>
<span :class="['span',{'active': crrent==5}]">服务青年</span> <span :class="['span',{'active': crrent==5}]">服务青年</span>
<img v-if="crrent==5" src="/img/index/arrow.png" alt="" style="width: 9px;height: 12px;margin-left: 10px;"> <img v-if="crrent==5" src="/img/index/arrow.png" alt="" style="width: 9px;height: 12px;margin-left: 10px;">
</div> </div>

View File

@ -48,7 +48,7 @@
<div class="re_title"> <div class="re_title">
<div class="flex align-center"> <div class="flex align-center">
<div class="dian"></div> <div class="dian"></div>
<span class="one-line-ellipsis" style="width:400px;">{{ item.title }}</span> <span class="one-line-ellipsis lx-span">{{ item.title }}</span>
</div> </div>
<span class="one-line-ellipsis" style="color: #999999;">{{ <span class="one-line-ellipsis" style="color: #999999;">{{
item.release_time_text.slice(5, 10) }}</span> item.release_time_text.slice(5, 10) }}</span>
@ -62,14 +62,13 @@
<div class="h-auto home_con1" style="margin-top: 30px;"> <div class="h-auto home_con1" style="margin-top: 30px;">
<div class="fly1s" style="display: flex;gap: 20px;"> <div class="fly1s" style="display: flex;gap: 20px;">
<div style="width: 65%;background-color: #ffffff;"> <div style="width: 65%;background-color: #ffffff;">
<div style="padding: 15px;display: flex;justify-content: space-between;align-items: center;"> <div class="no-wrap"
<div style=" overflow-x: auto; "> style="padding: 15px;display: flex;justify-content: space-between;align-items: center;">
<div <div style="display: flex;align-items: center;gap: 55px;">
style="display: flex;align-items: center;gap: 55px;padding-bottom: 10px;"> <div v-for="(item, index) in listType" :key="index"
<div v-for="(item, index) in listType" :key="index" class="t2"> :class="listIndex == item.id ? 't2' : 't1'" @click="changeListIndex(item.id)">
<div>{{ item.name }}</div> <div>{{ item.name }}</div>
<!-- <div class="t_line"></div> --> <div v-if="listIndex == item.id" class="t_line"></div>
</div>
</div> </div>
</div> </div>
<div class="pr-[20px]" style="display: flex;align-items: center;"> <div class="pr-[20px]" style="display: flex;align-items: center;">
@ -79,15 +78,15 @@
</div> </div>
</div> </div>
<div style="width: 100%;height: 1px;background-color: #EEEEEE;"></div> <div style="width: 100%;height: 1px;background-color: #EEEEEE;"></div>
<div v-for="(item, index) in 7" :key="index"> <div v-for="(item, index) in jcList" :key="index">
<div class="re_box_item" style="margin-top: 10px;"> <div class="re_box_item">
<div class="re_title"> <div class="re_title">
<div class="flex align-center"> <div class="flex align-center">
<div class="dian"></div> <div class="dian"></div>
<span class="one-line-ellipsis" <span class="one-line-ellipsis jc-span">{{ item.title }}</span>
style="width:400px;">习近平推进中国式现代化要继续把制造业搞好</span>
</div> </div>
<span class="one-line-ellipsis" style="color: #999999;">06-25</span> <span class="one-line-ellipsis" style="color: #999999;">{{
item.release_time_text.slice(5, 10) }}</span>
</div> </div>
</div> </div>
<div v-if="index != 6" <div v-if="index != 6"
@ -97,11 +96,11 @@
<div style="width: 35%;background-color: #ffffff;"> <div style="width: 35%;background-color: #ffffff;">
<div style="width: 100%;height: 5px;background-color: #338CDE;"></div> <div style="width: 100%;height: 5px;background-color: #338CDE;"></div>
<div style="display: flex;justify-content: space-between;align-items: center;"> <div style="display: flex;justify-content: space-between;align-items: center;">
<div style="display: flex;align-items: center;gap: 10px;padding: 15px;"> <div style="display: flex;align-items: center;gap: 10px;padding:5px 15px;">
<div> <div>
<img src="/img/index/gg.png" alt="" style="width: 40px;"></img> <img src="/img/index/gg.png" alt="" style="width: 40px;"></img>
</div> </div>
<div style="font-family: PingFang SC;font-weight: bold;font-size: 22px;color: #323232;"> <div class="t1">
通知公告 通知公告
</div> </div>
</div> </div>
@ -112,11 +111,11 @@
</div> </div>
</div> </div>
<div v-for="(item, index) in ptList" :key="index"> <div v-for="(item, index) in ptList" :key="index">
<div class="re_box_item" style="margin-top: 10px;"> <div class="re_box_item">
<div class="re_title"> <div class="re_title">
<div class="flex align-center"> <div class="flex align-center">
<div class="dian"></div> <div class="dian"></div>
<span class="one-line-ellipsis" style="width:270px;">{{ item.title }}</span> <span class="one-line-ellipsis tz-span">{{ item.title }}</span>
</div> </div>
<span class="one-line-ellipsis" style="color: #999999;"> <span class="one-line-ellipsis" style="color: #999999;">
{{ item.release_time_text.slice(5, 10) }} {{ item.release_time_text.slice(5, 10) }}
@ -134,24 +133,25 @@
<img :src="`/img/index/r.png`" alt=""></img> <img :src="`/img/index/r.png`" alt=""></img>
</div> </div>
</div> </div>
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin-top: 20px;"> <div class="qn"
style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin-top: 20px;">
<div> <div>
<img :src="`/img/code.png`" alt=""></img> <img :src="`/img/home/1.png`" alt=""></img>
</div> </div>
<div> <div>
<img :src="`/img/code.png`" alt=""></img> <img :src="`/img/home/2.png`" alt=""></img>
</div> </div>
<div> <div>
<img :src="`/img/code.png`" alt=""></img> <img :src="`/img/home/3.png`" alt=""></img>
</div> </div>
<div> <div>
<img :src="`/img/code.png`" alt=""></img> <img :src="`/img/home/4.png`" alt=""></img>
</div> </div>
<div> <div>
<img :src="`/img/code.png`" alt=""></img> <img :src="`/img/home/5.png`" alt=""></img>
</div> </div>
<div> <div>
<img :src="`/img/code.png`" alt=""></img> <img :src="`/img/home/6.png`" alt=""></img>
</div> </div>
</div> </div>
</div> </div>
@ -285,7 +285,7 @@
<!-- 底部鼠标 --> <!-- 底部鼠标 -->
<div style="position: absolute;bottom: 30px;right:30px;"> <div class="mouse_img">
<img :src="`/img/index/hmouse.png`" alt=""> <img :src="`/img/index/hmouse.png`" alt="">
</div> </div>
</div> </div>
@ -305,6 +305,7 @@ const inputSearch = ref('');
const xsImg = ref([]); const xsImg = ref([]);
const listType = ref([]); const listType = ref([]);
const listIndex = ref(0);
const detailId = ref(null); const detailId = ref(null);
const emit = defineEmits(['toSwpe']) const emit = defineEmits(['toSwpe'])
@ -394,24 +395,27 @@ const getNewstypeList = async () => {
let ptggid = null, jcdtid = null, qclyid = null, mtjjid = null; // id let ptggid = null, jcdtid = null, qclyid = null, mtjjid = null; // id
const res = await $api.get('/api/home.news/cate?home=1') const res = await $api.get('/api/home.news/cate?home=1')
var list = res.data.data.list; var list = res.data.data.list;
listIndex.value = list[0].id;
listType.value = list; listType.value = list;
list.map((item: any) => { list.map((item: any) => {
if (item.name == '平台公告') { if (item.name == '平台公告') {
ptggid = item.id; ptggid = item.id;
} }
if (item.name == '基层动态') { // if (item.name == '') {
jcdtid = item.id; // jcdtid = item.id;
} // }
if (item.name == '青春洛阳') { // if (item.name == '') {
qclyid = item.id; // qclyid = item.id;
} // }
if (item.name == '媒体聚焦') { // if (item.name == '') {
mtjjid = item.id; // mtjjid = item.id;
} // }
}); });
//
listType.value = listType.value.filter((item: any) => item.name != '平台公告');
console.log(listType.value); console.log(listType.value);
changeListIndex(listIndex.value);
// xsId.value = listType.value[0].id; // xsId.value = listType.value[0].id;
// // // //
// const ress = await $api.get(`/api/home.news/index?cate_id=${xsId.value}&page=1&limit=4`) // const ress = await $api.get(`/api/home.news/index?cate_id=${xsId.value}&page=1&limit=4`)
@ -446,6 +450,11 @@ onMounted(() => {
getxsImg(); getxsImg();
getNewstypeList(); getNewstypeList();
}) })
const changeListIndex = async (id: number) => {
listIndex.value = id;
const ress2 = await $api.get(`/api/home.news/index?cate_id=${id}&page=1&limit=7`)
jcList.value = ress2.data.data.list;
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -462,8 +471,10 @@ onMounted(() => {
bottom: 0; bottom: 0;
height: 38px; height: 38px;
line-height: 38px; line-height: 38px;
--swiper-pagination-color: #FFCD52; --swiper-pagination-color: #ffffff;
/* 两种都可以 */ --swiper-pagination-bullet-inactive-color: rgb(255, 255, 255, 0.5);
--swiper-pagination-bullet-inactive-opacity: 1
/* 两种都可以 */
} }
.img_tits { .img_tits {
@ -490,7 +501,7 @@ onMounted(() => {
background-image: url('/img/index/rightcons.png'); background-image: url('/img/index/rightcons.png');
background-size: 100% 100%; background-size: 100% 100%;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden;
} }
.top_search { .top_search {
@ -731,7 +742,7 @@ onMounted(() => {
.re_box_item { .re_box_item {
width: 100%; width: 100%;
padding: 15px 20px; padding: 20px 20px;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -772,20 +783,6 @@ onMounted(() => {
} }
} }
} }
@media (max-width: 1440px) {
.home_con2,
.home_con1,
.home_con {
width: 900px;
}
.fly1s {
width: 500px;
}
}
.t1 { .t1 {
font-weight: bold; font-weight: bold;
font-family: PingFang SC; font-family: PingFang SC;
@ -818,4 +815,56 @@ onMounted(() => {
right: 0; right: 0;
bottom: -15px; bottom: -15px;
} }
.qn div {
cursor: pointer;
}
.tz-span {
width: 270px;
}
.jc-span {
width: 550px;
}
.lx-span {
width: 400px;
}
@media (max-width: 1440px) {
.home_con2,
.home_con1,
.home_con {
width: 920px;
}
.top_search {
width: 920px;
}
.fly1s {
width: 900px;
}
.tz-span {
width: 180px;
}
.jc-span {
width: 400px;
}
.t1 {
font-size: 18px;
}
.t2 {
font-size: 18px;
}
.lx-span {
width: 310px;
}
}
</style> </style>

View File

@ -1,7 +1,327 @@
<template> <template>
<div> <!-- PC端布局 -->
青春洛阳 <div class="flex justify-between w-full h-full">
<!-- 左边导航栏 -->
<!-- 右边内容栏 -->
<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="News_box">
<div class="lef_box" style="margin-top: 50px;">
<div>
<img src="/img/luoyang.png" style="width: 100%;">
</div>
<div
style="background: #ffffff;width: 100%;display: flex;align-items: center;padding: 15px;margin-top: 20px;">
<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;">{{newsListtyp.find(item => item.id == cateid)?.name
}}</span></div>
</div>
<div style="display: flex;margin-top: 25px;gap: 15px;">
<div>
<div v-for="(item, index) in newsListtyp" :key="index"
:class="cateid == item.id ? 'le1' : 'le2'" @click="getMesList(item.id)">{{ item.name }}
</div>
</div>
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px;">
<div v-for="item in 9" class="ly_list" @mousemove="showCodeDo(item)"
@click="showCodeDo(item)">
<div>
<img class="ly_list_img" :src="`/img/d.png`">
<div class="ly_list_text">
洛阳市共青团:抖音</div>
</div>
<div v-if="showCode == item"
style="display: flex;justify-content: center;align-items: center;position: absolute;bottom: 0;left: 0;right: 0;width: 100%;height:100%;background: rgba(0,0,0,0.5);">
<img class="ly_list_img_act" :src="`/img/dycode.jpg`">
</div>
</div>
</div>
</div>
</div>
</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> </div>
</template> </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([{ id: 1, name: '市本级' }, { id: 2, name: '各县(区)' }, { id: 3, name: '市属高校' }, { id: 4, name: '市属企业' }, { id: 5, name: '其它' },]);
const page = ref(1);
const total = ref(0);
const cateid = ref(1);
const detailId = ref(null);
const showCode = ref(0);
const showCodeDo = (id: number) => {
showCode.value = id;
}
//
onMounted(() => {
//getMesList();
//getNewstypeList();
})
const emit = defineEmits(['toSwpe'])
//
const openUrl = (id: number) => {
window.open(`/info/${id}?type=1`)
}
//
// 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();
}
const getMesList = async (id: number) => {
cateid.value = id;
//cateid.value = id ? id : cateid.value;
// page.value = pagecru ? pagecru : page.value;
// const res = await $api.post('/api/home.news/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.news/cate?isnews=1')
newsListtyp.value = res.data.data.list;
}
</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;
.fiximg {
img {
margin-bottom: 20px;
}
}
}
.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 {
width: 1300px;
margin: 0 auto;
.lef_box {
height: 100%;
margin-top: 40px;
margin-left: 100px;
}
}
.le1 {
color: #338CDE;
font-family: PingFang SC;
font-size: 22px;
font-weight: 800;
width: 261px;
height: 65px;
line-height: 65px;
text-align: center;
margin-bottom: 20px;
cursor: pointer;
border: 1px solid #338CDE;
background-image: url('/img/ly_listbg.png');
background-size: 100% 100%;
}
.le2 {
color: #323232;
font-family: PingFang SC;
font-size: 22px;
font-weight: 400;
width: 261px;
height: 65px;
background-color: #ffffff;
line-height: 65px;
text-align: center;
margin-bottom: 20px;
cursor: pointer;
border: 1px solid transparent;
}
.le2:hover {
border: 1px solid #338CDE;
}
.ly_list {
width: 298px;
height: 298px;
background-color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
position: relative;
}
.ly_list_img {
width: 100px;
height: 100px;
margin: 0 auto;
}
.ly_list_text {
font-size: 22px;
color: #323232;
font-weight: 400;
text-align: center;
margin-top: 15px;
}
.ly_list_img_act {
width: 150px;
height: 150px;
margin: 0 auto;
}
@media (max-width: 1440px) {
.top_search {
width: 920px;
margin-left: 373px;
}
.News_box {
width: 1032px;
margin-left: 270px;
}
.rig_box {
width: 700px;
}
.ly_list {
width: 208px;
height: 208px;
}
.ly_list_img {
width: 70px;
height: 70px;
margin: 0 auto;
}
.ly_list_img_act {
width: 120px;
height: 120px;
margin: 0 auto;
}
.ly_list_text {
font-size: 20px;
}
}
</style>

View File

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

View File

@ -1,85 +1,89 @@
<template> <template>
<!-- PC端布局 --> <!-- PC端布局 -->
<div class="flex justify-between w-full h-full" > <div class="flex justify-between w-full h-full">
<!-- 左边导航栏 --> <!-- 左边导航栏 -->
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="flex top_search ">
<div style="width: 572px;height: 69px;margin-left: 415px;">
<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="News_box">
<div class="lef_box"> <!-- 右边内容栏 -->
<!-- @click="getMesList(null)" 新闻动态总 --> <div class="rightcon">
<div class="lef_boxitem1"> <div class="flex top_search ">
<div class="lef_boxitem1_shu"></div> <div style="width: 350px;">
<div class="lef_boxitem1_title">新闻动态</div> <img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
</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="inputform">
<div class="lef_boxitem2_title">{{ item.name }}</div> <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> </div>
<div class="rig_box">
<div class="re_box"> <div class="News_box">
<div class="re_box_item" v-for="(item,index) in MesList" :key="index" @click="openUrl(item.id)"> <div class="lef_box">
<div class="re_title"> <!-- @click="getMesList(null)" 新闻动态总 -->
<div class="dian"></div> <div class="lef_boxitem1">
<span class="one-line-ellipsis" style="width: 720px;">{{ item.title }}</span> <div class="lef_boxitem1_shu"></div>
</div> <div class="lef_boxitem1_title">新闻动态</div>
<div class="re_date"> </div>
<div class="shu"></div> <div :class="['lef_boxitem2', { 'active': cateid == item.id }]" v-for="(item, index) in newsListtyp"
<div class="right_tex"> :key="index" @click="getMesList(item.id, 1)">
<span class="span1">{{ item.release_time_text.slice(8,10)}}</span> <div class="lef_boxitem2_title">{{ item.name }}</div>
<span class="span2">{{ item.release_time_text.slice(0,7)}}</span> </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>
<!-- 分页 -->
</div> </div>
<!-- 分页 -->
<div class="flex flex-row justify-center pages_tsw" style="margin-top: 20px;">
<n-pagination v-model:page="page" :page-sizes="[7]" :item-count="total" size="medium"
@update:page="getPageList" show-quick-jumper>
<template #goto>
到第
</template>
<template #prefix="{ itemCount}">
{{ itemCount }}
</template>
</n-pagination>
</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="[7]" :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"> <!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg">
<img :src="`/img/index/douyin.png`" alt=""> <img :src="`/img/index/douyin.png`" alt="">
<img :src="`/img/index/wb.png`" alt=""> <img :src="`/img/index/wb.png`" alt="">
<img :src="`/img/index/wx.png`" alt=""> <img :src="`/img/index/wx.png`" alt="">
<img :src="`/img/index/blbl.png`" alt=""> <img :src="`/img/index/blbl.png`" alt="">
</div> --> </div> -->
<!-- 底部鼠标 --> <!-- 底部鼠标 -->
<div style="position: absolute;bottom: 30px;right:30px;"> <div class="mouse_img">
<img :src="`/img/index/hmouse.png`" alt=""> <img :src="`/img/index/hmouse.png`" alt="">
</div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {defineEmits} from 'vue' import { defineEmits } from 'vue'
import { NPagination } from 'naive-ui' import { NPagination } from 'naive-ui'
import $api from '@/service/webRequest' import $api from '@/service/webRequest'
import emitter from '@/plugins/emitter' import emitter from '@/plugins/emitter'
@ -93,14 +97,14 @@ const detailId = ref(null);
// //
onMounted(() => { onMounted(() => {
getMesList(); getMesList();
getNewstypeList(); getNewstypeList();
}) })
const emit = defineEmits(['toSwpe']) const emit = defineEmits(['toSwpe'])
// //
const openUrl = (id: number) => { const openUrl = (id: number) => {
window.open(`/info/${id}?type=1`) window.open(`/info/${id}?type=1`)
} }
// //
// const gotoDetail = (id: number) => { // const gotoDetail = (id: number) => {
@ -113,7 +117,7 @@ const openUrl = (id: number) => {
// emitter.emit('detailId', detailId.value); // emitter.emit('detailId', detailId.value);
// } // }
// //
const toSearch =() => { const toSearch = () => {
// emit('toSwpe',9); // emit('toSwpe',9);
// emitter.emit('inputSea', { // emitter.emit('inputSea', {
// keywords:inputSearch.value, // keywords:inputSearch.value,
@ -122,26 +126,26 @@ const toSearch =() => {
window.open(`/search_info?type=1&keywords=${inputSearch.value}`) window.open(`/search_info?type=1&keywords=${inputSearch.value}`)
} }
const getPageList = async () => { const getPageList = async () => {
page.value = page.value; page.value = page.value;
getMesList(); getMesList();
} }
const getMesList = async (id: number,pagecru: number) => { const getMesList = async (id: number, pagecru: number) => {
cateid.value = id ? id :cateid.value; cateid.value = id ? id : cateid.value;
page.value = pagecru ? pagecru : page.value; page.value = pagecru ? pagecru : page.value;
const res = await $api.post('/api/home.news/index', const res = await $api.post('/api/home.news/index',
{ {
cate_id: cateid.value, cate_id: cateid.value,
limit:7, limit: 9,
page:page.value, page: page.value,
isnews:1 isnews: 1
} }
) )
total.value = res.data.data.count; total.value = res.data.data.count;
MesList.value = res.data.data.list; MesList.value = res.data.data.list;
} }
const getNewstypeList = async () => { const getNewstypeList = async () => {
const res = await $api.get('/api/home.news/cate?isnews=1') const res = await $api.get('/api/home.news/cate?isnews=1')
newsListtyp.value = res.data.data.list; newsListtyp.value = res.data.data.list;
} }
</script> </script>
@ -151,238 +155,285 @@ const getNewstypeList = async () => {
/* pc端样式 */ /* pc端样式 */
.rightcon{ .rightcon {
width:100%; width: 100%;
height:100%; height: 100%;
background-image: url('/img/xwdt.png'); background-image: url('/img/index/rightcons.png');
background-size: 100% 100%; background-size: 100% 100%;
.fiximg{ overflow-y: auto;
img{
margin-bottom: 20px; .fiximg {
img {
margin-bottom: 20px;
}
}
}
.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: 40px;
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;
} }
} }
} }
.top_search{
margin-top: 50px;
height: 70px;
justify-content: space-between;
align-items: center;
}
.inputform {
position: relative;
width: 340px;
margin-right: 319px;
}
.contactInput {
width: 337px;
height: 50px;
background: #FFFFFF;
border-radius: 8px;
border: 1px solid #DEE4E8;
padding-left: 15px;
}
.contactInput::placeholder { .rig_box {
color: #999999; width: 921px;
}
.contactInput:focus { .re_box {
outline: none; width: 100%;
} margin: 0 auto;
.search_rinput{ margin-top: 40px;
width: 68px; // padding-left: 60px;
height: 50px; display: flex;
background: #E6E6E6; flex-wrap: wrap;
border-radius: 0px 8px 8px 0px; justify-content: flex-start;
position: absolute; align-content: flex-start;
top: 0; gap: 10px;
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{ .re_box_item {
width: 260px; width: 100%;
height: 100%; height: 90px;
margin-top:40px;
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; background: #FFFFFF;
color: #323232; border: 1px solid #EEF7FF;
padding: 20px;
box-sizing: border-box;
display: flex; display: flex;
justify-content: space-between;
align-items: center; align-items: center;
margin-top:10px ;
cursor: pointer; .re_title {
.lef_boxitem2_title{ // width: 640px;
width: 100%;
// height: 19px;
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
font-weight: 400; font-weight: 400;
font-size: 20px; font-size: 18px;
text-align: center; color: #323232;
} display: flex;
&:hover{ align-items: center;
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{ .dian {
width: 921px; width: 10px;
.re_box{ height: 10px;
width: 100%; background: #3B90DF;
height: 680px; border-radius: 50%;
margin: 0 auto; margin-right: 15px;
margin-top:40px; }
// padding-left: 60px; }
display: flex;
flex-wrap: wrap; .re_date {
justify-content: flex-start; font-family: Microsoft YaHei;
align-content: flex-start; font-weight: 400;
gap: 10px; font-size: 14px;
.re_box_item{ color: #368BDB;
width: 100%;
height: 90px;
background: #FFFFFF;
border: 1px solid #EEF7FF;
padding: 20px;
box-sizing: border-box;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.re_title{
// width: 640px; .shu {
font-family: Microsoft YaHei; background: #EEEEEE;
font-weight: 400; width: 1px;
font-size: 18px; height: 50px;
color: #323232; margin-right: 20px;
display: flex;
align-items: center;
.dian{
width: 10px;
height: 10px;
background: #3B90DF;
border-radius: 50%;
margin-right: 15px;
}
} }
.re_date{
font-family: Microsoft YaHei; .right_tex {
font-weight: 400;
font-size: 14px;
color: #368BDB;
display: flex; display: flex;
justify-content: space-between; flex-direction: column;
align-items: center; width: 80px;
.shu{ text-align: center;
background: #EEEEEE;
width: 1px;height: 50px; .span1 {
margin-right: 20px; width: 100%;
font-family: Microsoft YaHei;
font-weight: 600;
font-size: 22px;
color: #378EDF;
} }
.right_tex{
display: flex; .span2 {
flex-direction: column; width: 100%;
width: 80px; font-family: Microsoft YaHei;
text-align: center; font-weight: 400;
.span1{ font-size: 16px;
width: 100%; color: #378EDF;
font-family: Microsoft YaHei;
font-weight: 400;
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/message/listbg.png');
background-size: 100% 100%;
cursor: pointer;
.re_date{
.shu{
background: #FFFFFF;
}
} }
} }
} }
}
.pages_tsw{
: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) { &:hover {
color: #999999; background-image: url('/img/listbg.png');
} background-size: 100% 100%;
cursor: pointer;
:deep(.n-pagination .n-pagination-item:not(.n-pagination-item--disabled):hover) { .re_date {
color: #388FDF; .shu {
// border: 1px solid #388FDF; background: #FFFFFF;
} }
: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: '页'
} }
} }
} }
}
}
.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: '页'
} }
} }
}
@media (max-width: 1440px) {
.top_search {
width: 920px;
margin-left: 373px;
}
.News_box {
width: 1032px;
margin-left: 270px;
}
.rig_box {
width: 650px !important;
}
}
</style> </style>

View File

@ -1,133 +1,213 @@
<template> <template>
<!-- PC端布局 --> <!-- PC端布局 -->
<div class="flex justify-between w-full h-full" > <div class="flex justify-between w-full h-full">
<!-- 左边导航栏 --> <!-- 左边导航栏 -->
<!-- 右边内容栏 -->
<div class="rightcon" id="gohome" @scroll="hmScroll" >
<div class="flex top_search ">
<div style="width: 572px;height: 69px;margin-left: 415px;">
<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="re_top"> <!-- 右边内容栏 -->
<div class="re_col"></div> <div class="rightcon">
<div class="re_tit">团务百科</div> <div class="flex top_search ">
<div class="re_col"></div> <div style="width: 350px;">
</div> <img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
<!-- 列表 -->
<div class="re_box">
<div class="re_box_item" v-for="(item,index) in BksList" :key="index" @click="openUrl(item.id)">
<div class="re_title one-line-ellipsis">
{{ item.title }}
</div> </div>
<div class="re_text three-line-ellipsis"> <div class="inputform">
{{ item.subtitle }} <input v-model="inputSearch" class="contactInput w-full md:w-[337px]" type="text"
</div> placeholder="请输入搜索关键字" />
<div class="re_date"> <div class="search_rinput" @click="toSearch">
<div>发布日期{{item.release_time_text.slice(0,10)}}</div> <img src="/img/index/hmsearch.png" alt="">
<div class="re_more">
<span>查看更多</span>
<img class="re_more_img" src="/img/rightmore.png" alt="" srcset="">
</div> </div>
</div> </div>
</div> </div>
</div>
<!-- 分页 --> <div class="News_box">
<div class="flex flex-row justify-center pages_tsw" style="margin-top: 20px;margin-bottom: 50px;"> <div class="lef_box" style="margin-top: 50px;">
<n-pagination v-model:page="page" :page-sizes="[12]" :item-count="total" size="medium" <div>
@update:page="getPageList" show-quick-jumper> <img src="/img/fuwu.png" style="width: 100%;">
<template #goto> </div>
到第 <div style="margin-top: 25px;">
</template> <div class="qn"
<template #prefix="{ itemCount}"> style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin-top: 20px;">
{{ itemCount }} <div>
</template> <img :src="`/img/home/1.png`" alt=""></img>
</n-pagination> </div>
</div> <div>
<!-- 右分享 --> <img :src="`/img/home/2.png`" alt=""></img>
<!-- <div class="flex flex-col fiximg" style="position: absolute;top: 100px;right:36px;align-items: center;" > </div>
<img :src="`/img/qiqiu.png`" alt=""></img> <div>
<img class="imgs" :src="`/img/index/douyin.png`" alt=""> <img :src="`/img/home/3.png`" alt=""></img>
<img class="imgs" :src="`/img/index/wb.png`" alt=""> </div>
<img class="imgs" :src="`/img/index/wx.png`" alt=""> <div>
<img class="imgs" :src="`/img/index/blbl.png`" alt=""> <img :src="`/img/home/4.png`" alt=""></img>
</div>
<div>
<img :src="`/img/home/5.png`" alt=""></img>
</div>
<div>
<img :src="`/img/home/6.png`" alt=""></img>
</div>
</div>
</div>
<div style="margin-top: 50px;">
<img src="/img/tuan.png" style="width: 400px;margin: 0 auto;">
</div>
<div class="home_con1" style="margin-top: 50px;">
<div class="fly1s" style="display: flex;gap: 20px;">
<div style="width: 65%;background-color: #ffffff;">
<div class="no-wrap"
style="padding: 15px;display: flex;justify-content: space-between;align-items: center;">
<div style="display: flex;align-items: center;gap: 10px;">
<div>
<img src="/img/f1.png" alt="" style="width: 35px;"></img>
</div>
<div
style="padding-left: 10px;font-family: PingFang SC;font-weight: bold;font-size: 22px;color: #323232;">
热门百科
</div>
</div>
<div class="pr-[5px]" style="display: flex;align-items: center;">
<span style="color: #999999;">更多</span>
<img src="/img/index/more_j.png" alt=""
style="width: 8px;height: 13px;margin-left: 5px;"></img>
</div>
</div>
<div style="width: 100%;height: 1px;background-color: #EEEEEE;"></div>
<div v-for="(item, index) in 7" :key="index">
<div class="re_box_item">
<div class="re_title">
<div class="flex align-center">
<div class="dian"></div>
<span class="one-line-ellipsis rm-span">习近平推进中习近平推进中国式现代化要继续把制造业搞好国式现代化要继续把制造业搞好</span>
</div>
<span class="one-line-ellipsis" style="color: #999999;">05-26</span>
</div>
</div>
<div v-if="index != 6"
style="width: 95%;height: 1px;background-color: #EEEEEE;margin: 0 auto;"></div>
</div>
</div>
<div style="width: 35%;background-color: #ffffff;">
<div style="width: 100%;height: 4px;background-color: #338CDE;"></div>
<div style="display: flex;justify-content: space-between;align-items: center;">
<div style="display: flex;align-items: center;gap: 10px;padding: 13px;">
<div>
<img src="/img/f2.png" alt="" style="width: 35px;"></img>
</div>
<div
style="padding-left: 10px;font-family: PingFang SC;font-weight: bold;font-size: 22px;color: #323232;">
国务院百事通
</div>
</div>
<div class="pr-[20px]" style="display: flex;align-items: center;">
<span style="color: #999999;">更多</span>
<img src="/img/index/more_j.png" alt=""
style="width: 8px;height: 13px;margin-left: 5px;"></img>
</div>
</div>
<div style="width: 100%;height: 1px;background-color: #EEEEEE;"></div>
<div v-for="(item, index) in 7" :key="index">
<div class="re_box_item">
<div class="re_title">
<div class="flex align-center">
<div class="dian"></div>
<span class="one-line-ellipsis gw-span">中国共产主义青年团的性质是什么中国共产主义青年团的性质是什么?</span>
</div>
</div>
</div>
<div v-if="index != 6"
style="width: 95%;height: 1px;background-color: #EEEEEE;margin: 0 auto;"></div>
</div>
</div>
</div>
</div>
</div>
</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> -->
<!-- 底部鼠标 --> <!-- 底部鼠标 -->
<div style="position: absolute;bottom: 30px;right:30px;"> <div class="mouse_img">
<img :src="`/img/index/hmouse.png`" alt=""> <img :src="`/img/index/hmouse.png`" alt="">
</div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { defineEmits } from 'vue'
import { NPagination } from 'naive-ui' import { NPagination } from 'naive-ui'
import $api from '@/service/webRequest' import $api from '@/service/webRequest'
import { defineEmits } from 'vue'
import emitter from '@/plugins/emitter' import emitter from '@/plugins/emitter'
const inputSearch = ref(''); const inputSearch = ref('');
const BksList = ref([]); const MesList = ref([]);
const newsListtyp = ref([{ id: 1, name: '市本级' }, { id: 2, name: '各县(区)' }, { id: 3, name: '市属高校' }, { id: 4, name: '市属企业' }, { id: 5, name: '其它' },]);
const page = ref(1); const page = ref(1);
const total = ref(0); const total = ref(0);
const cateid = ref(1);
const detailId = ref(null); const detailId = ref(null);
const emit = defineEmits(['toSwpe']) const showCode = ref(0);
// const showCodeDo = (id: number) => {
showCode.value = id;
}
//
onMounted(() => { onMounted(() => {
getBksList(); //getMesList();
//getNewstypeList();
}) })
const emit = defineEmits(['toSwpe'])
// //
const openUrl = (id: number) => { const openUrl = (id: number) => {
window.open(`/info/${id}?type=3`) window.open(`/info/${id}?type=1`)
} }
// //
// const gotoDetail = (id: number) => { // const gotoDetail = (id: number) => {
// detailId.value = { // detailId.value = {
// id: id, // id: id,
// type: '3' // type: '1'
// }; // };
// localStorage.setItem('detailId', JSON.stringify(detailId.value)); // localStorage.setItem('detailId', JSON.stringify(detailId.value));
// emit('toSwpe',6) // emit('toSwpe',6)
// emitter.emit('detailId', detailId.value); // emitter.emit('detailId', detailId.value);
// } // }
const toSearch =() => { //
const toSearch = () => {
// emit('toSwpe',9); // emit('toSwpe',9);
// emitter.emit('inputSea', { // emitter.emit('inputSea', {
// keywords:inputSearch.value, // keywords:inputSearch.value,
// type: 3, // type: 1,
// }); // });
window.open(`/search_info?type=3&keywords=${inputSearch.value}`) window.open(`/search_info?type=1&keywords=${inputSearch.value}`)
} }
const getPageList = async () => { const getPageList = async () => {
page.value = page.value; page.value = page.value;
getBksList(); getMesList();
} }
const getBksList = async () => { const getMesList = async (id: number) => {
const res = await $api.post('/api/home.encyclopedia/index', cateid.value = id;
{ //cateid.value = id ? id : cateid.value;
limit:12, // page.value = pagecru ? pagecru : page.value;
page:page.value // const res = await $api.post('/api/home.news/index',
} // {
) // cate_id: cateid.value,
total.value = res.data.data.count; // limit: 9,
BksList.value = res.data.data.list; // page: page.value,
// isnews: 1
// }
// )
// total.value = res.data.data.count;
// MesList.value = res.data.data.list;
} }
const hmScroll = () => { const getNewstypeList = async () => {
let home = document.getElementById('gohome'); const res = await $api.get('/api/home.news/cate?isnews=1')
if (home.scrollTop == 0) { newsListtyp.value = res.data.data.list;
setTimeout(function() {
emit('toSwpe',4);
}, 500);
}
} }
</script> </script>
@ -137,173 +217,192 @@ const hmScroll = () => {
/* pc端样式 */ /* pc端样式 */
.rightcon{ .rightcon {
width:100%; width: 100%;
height:100%; height: 100%;
background-image: url('/img/twbk.png'); background-image: url('/img/index/rightcons.png');
background-size: 100% 100%; background-size: 100% 100%;
overflow-y: auto; overflow-y: auto;
.fiximg{
.imgs{ .fiximg {
width: 63px; img {
margin-bottom: 20px; margin-bottom: 20px;
}
} }
} }
.top_search{ }
margin-top: 50px;
height: 70px; .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 {
width: 1300px;
margin: 0 auto;
.lef_box {
height: 100%;
margin-top: 40px;
margin-left: 100px;
}
}
.le1 {
color: #338CDE;
font-family: PingFang SC;
font-size: 22px;
font-weight: 800;
width: 261px;
height: 65px;
line-height: 65px;
text-align: center;
margin-bottom: 20px;
cursor: pointer;
border: 1px solid #338CDE;
background-image: url('/img/ly_listbg.png');
background-size: 100% 100%;
}
.le2 {
color: #323232;
font-family: PingFang SC;
font-size: 22px;
font-weight: 400;
width: 261px;
height: 65px;
background-color: #ffffff;
line-height: 65px;
text-align: center;
margin-bottom: 20px;
cursor: pointer;
border: 1px solid transparent;
}
.le2:hover {
border: 1px solid #338CDE;
}
.ly_list {
width: 298px;
height: 298px;
background-color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
position: relative;
}
.re_box_item {
width: 100%;
padding: 15px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
.re_title {
width: 100%;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 16px;
color: #323232;
display: flex;
align-items: center;
justify-content: space-between; justify-content: space-between;
align-items: center; cursor: pointer;
}
.inputform { .dian {
position: relative; width: 10px;
width: 340px; height: 10px;
margin-right: 319px; background: #3B90DF;
} border-radius: 50%;
.contactInput { margin-right: 15px;
width: 337px; }
height: 50px;
background: #FFFFFF;
border-radius: 8px;
border: 1px solid #DEE4E8;
padding-left: 15px;
} }
.contactInput::placeholder { // &:hover{
color: #999999; // background-image: url('/img/index/listhmbg.png');
// background-size: 100% 100%;
// cursor: pointer;
// .slices_rol{
// width: 10px;
// height: 88px;
// background: #FAA828;
// position: absolute;
// right: 0;
// }
// }
}
.rm-span {
width: 550px;
}
.gw-span{
width: 350px;
}
@media (max-width: 1440px) {
.top_search {
width: 920px;
margin-left: 373px;
} }
.contactInput:focus { .News_box {
outline: none; width: 1032px;
margin-left: 270px;
} }
.search_rinput{
width: 68px;
height: 50px;
background: #E6E6E6;
border-radius: 0px 8px 8px 0px;
position: absolute;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
}
.re_top{
width: 100%;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
.re_tit{
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 36px;
color: #4E3C3C;
margin: 0 30px;
}
.re_col{
width: 78px;
height: 3px;
background: #348CDD;
}
}
.re_box{
width: 1280px;
// height: 600px;
margin: 0 auto;
margin-top:40px;
padding-left: 80px;
display: flex;
flex-wrap: wrap; /* 允许换行 */
justify-content: flex-start; /* 项目左对齐 */
// align-items: flex-start;
align-content: flex-start;
gap: 20px;
.re_box_item{
width: 32%;
// height: 190px;
background: #FFFFFF;
border: 1px solid #EEF7FF;
padding: 20px;
box-sizing: border-box;
cursor: pointer;
.re_title{
// width: 100%;
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 18px;
color: #323232;
}
.re_text{
height: 62px;
margin-top: 15px;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 14px;
color: #999999;
}
.re_date{
margin-top: 15px;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 14px;
color: #368BDB;
display: flex;
justify-content: space-between;
align-items: center;
.re_more{
display: flex;
align-items: center;
.re_more_img{
padding-left: 10px;
// width: 7px;
height: 10px;
}
}
}
}
&:after {
content: "";
width: 100%;
height: 0;
margin-top: -20px;
}
}
.pages_tsw{
: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) { .rig_box {
color: #999999; width: 700px;
}
: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: '页'
}
}
} }
.rm-span {
width: 450px;
}
.gw-span{
width:280px;
}
}
</style> </style>

View File

@ -36,13 +36,14 @@
</swiper-slide> </swiper-slide>
<!-- 服务青年 --> <!-- 服务青年 -->
<swiper-slide>
<AppMessage @toSwpe="toswiper"></AppMessage>
</swiper-slide>
<!-- 团务百科 -->
<swiper-slide> <swiper-slide>
<AppRegiment @toSwpe="toswiper"></AppRegiment> <AppRegiment @toSwpe="toswiper"></AppRegiment>
</swiper-slide> </swiper-slide>
<!--信息公开-->
<swiper-slide>
<AppMessage @toSwpe="toswiper"></AppMessage>
</swiper-slide>
<!-- 新闻动态详情 --> <!-- 新闻动态详情 -->
<!-- <swiper-slide :show="isNews" id="newsid"> <!-- <swiper-slide :show="isNews" id="newsid">
<AppNewsdel ></AppNewsdel> <AppNewsdel ></AppNewsdel>
@ -71,7 +72,7 @@
</div> </div>
</div> --> </div> -->
<!-- 右分享 --> <!-- 右分享 -->
<div v-if="swiper_exp > 0" ref="targetElement" class="flex flex-col fiximg" :style="{ right: rightValue }"> <div v-if="swiper_exp > 0" ref="targetElement" class="flex flex-col fiximg">
<!-- <img src="/img/qiqiu.png" class="qqt" @click="updateRight" alt=""></img> --> <!-- <img src="/img/qiqiu.png" class="qqt" @click="updateRight" alt=""></img> -->
<div style="position: absolute;top: 200px;"> <div style="position: absolute;top: 200px;">
<div class="divcode"> <div class="divcode">
@ -137,7 +138,7 @@ const { locale } = useI18n();
const openUrl = () => { const openUrl = () => {
window.open(`/messageBoard/`) window.open(`/messageBoard/`)
} }
const rightValue = ref('34px'); const rightValue = ref('100px');
const updateRight = () => { const updateRight = () => {
if (rightValue.value == '34px') { if (rightValue.value == '34px') {
rightValue.value = '-94px'; rightValue.value = '-94px';
@ -157,18 +158,20 @@ const onSwiperNews = (swiper: any) => {
// isMeassage.value = false; // isMeassage.value = false;
// console.log(newsSwiper); // console.log(newsSwiper);
swiper_exp.value = swiper.realIndex; swiper_exp.value = swiper.realIndex;
if (swiper.realIndex == 1 || swiper.realIndex == 5) { newsSwiper.mousewheel.disable();
newsSwiper.mousewheel.disable(); newsSwiper.allowTouchMove = true;//
newsSwiper.allowTouchMove = true;// // if (swiper.realIndex == 1 || swiper.realIndex == 5 || swiper.realIndex == 2 || swiper.realIndex == 3 || swiper.realIndex == 4 || swiper.realIndex == 6) {
} // newsSwiper.mousewheel.disable();
// newsSwiper.allowTouchMove = true;//
// }
// else if (swiper.realIndex == 6 || swiper.realIndex == 9 || swiper.realIndex == 7 || swiper.realIndex == 8) { // else if (swiper.realIndex == 6 || swiper.realIndex == 9 || swiper.realIndex == 7 || swiper.realIndex == 8) {
// newsSwiper.mousewheel.disable(); // // newsSwiper.mousewheel.disable(); //
// newsSwiper.allowTouchMove= false;// // newsSwiper.allowTouchMove= false;//
// } // }
else { // else {
newsSwiper.mousewheel.enable(); // // newsSwiper.mousewheel.enable(); //
newsSwiper.allowTouchMove = true;// // newsSwiper.allowTouchMove = true;//
} // }
}) })
} }
// let isMeassage = ref(false); // let isMeassage = ref(false);
@ -181,7 +184,20 @@ const toswiper = (index: number) => {
// if (index == 7) isAbout.value = true; // if (index == 7) isAbout.value = true;
// if (index == 8) isMeassage.value = true; // if (index == 8) isMeassage.value = true;
// if (index == 9) isSearch.value = true; // if (index == 9) isSearch.value = true;
newsSwiper.slideTo(index, 1000, true) //0 1000
if (index > newsSwiper.realIndex) {
if (newsSwiper.realIndex + 1 != index) {
newsSwiper.slideTo(index, 0, true)
} else {
newsSwiper.slideTo(index, 1000, true)
}
} else {
if (newsSwiper.realIndex - 1 != index) {
newsSwiper.slideTo(index, 0, true)
} else {
newsSwiper.slideTo(index, 1000, true)
}
}
} }
const swiper_exp = ref(0); const swiper_exp = ref(0);
@ -190,6 +206,7 @@ const swiperOptionsNews = {
delay: 11000, delay: 11000,
disableOnInteraction: false, disableOnInteraction: false,
}, },
noSwipingSelector: '.no-wrap', //
// autoHeight : true, // autoHeight : true,
direction: 'horizontal', direction: 'horizontal',
mousewheel: { mousewheel: {
@ -508,13 +525,14 @@ onMounted(() => {
} }
.fiximg { .fiximg {
width: 80px; width: 80px;
height: 100%; height: 100%;
transition: right 0.5s ease-in-out; transition: right 0.5s ease-in-out;
position: fixed; position: fixed;
top: 40px; top: 40px;
align-items: center; align-items: center;
z-index: 111; z-index: 111;
right: 100px;
.qqt { .qqt {
cursor: pointer; cursor: pointer;
@ -554,4 +572,10 @@ onMounted(() => {
.isOldfont * { .isOldfont * {
font-size: 28px !important; font-size: 28px !important;
} }
@media screen and (max-width: 1440px) {
.fiximg {
right: 30px;
}
}
</style> </style>

View File

@ -2,66 +2,83 @@
<!-- PC端布局 --> <!-- PC端布局 -->
<div class="flex justify-between w-full h-auto"> <div class="flex justify-between w-full h-auto">
<!-- 左边导航栏 --> <!-- 左边导航栏 -->
<AppHeader></AppHeader> <AppHeader></AppHeader>
<!-- 右边内容栏 --> <!-- 右边内容栏 -->
<div class="rightcon" @scroll="hmScroll" id="tjright"> <div class="rightcon" @scroll="hmScroll" id="tjright">
<div class="flex top_search"> <div class="flex top_search">
<div style="width: 572px; height: 69px; margin-left: 415px"> <div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%; height: 100%; object-fit: cover" /> <img :src="`/img/index/dlogo.png`" alt="" style="width: 100%; height: 100%; object-fit: cover" />
</div> </div>
<!-- <div class="inputform"> <div class="inputform">
<input v-model="inputSearch" class="contactInput w-full md:w-[337px]" type="text" <input v-model="inputSearch" class="contactInput w-full md:w-[337px]" type="text"
placeholder="请输入搜索关键字" /> placeholder="请输入搜索关键字" />
<div class="search_rinput"> <div class="search_rinput">
<img src="/img/index/hmsearch.png" alt="" /> <img src="/img/index/hmsearch.png" alt="" />
</div> </div>
</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>
<div class="News_box h-auto"> <div class="News_box h-auto">
<div class="lef_box"> <div class="lef_box">
<div class="re_box"> <div class="re_box">
<div class="re_box_item" v-if="Newsdetail != null && Newsdetail.type == 1"> <div class="re_box_item" v-if="Newsdetail != null && Newsdetail.type == 1">
<div class='re_mian' v-if="Newsdetail.cate != null">{{ title_left + ' > ' + Newsdetail.cate.name+' > ' + '正文内容'}} </div> <div class='re_mian' v-if="Newsdetail.cate != null">{{ title_left + ' > ' +
Newsdetail.cate.name + ' > ' + '正文内容' }} </div>
<div class="re_title">{{ Newsdetail.title }}</div> <div class="re_title">{{ Newsdetail.title }}</div>
<div class='flex justify-between re_rouse'> <div class='flex justify-between re_rouse'>
<span>{{Newsdetail.release_time_text}}</span> <span>{{ Newsdetail.release_time_text }}</span>
<span v-if="Newsdetail.source != '' && Newsdetail.source != null" >来源{{ Newsdetail.source }}</span> <span v-if="Newsdetail.source != '' && Newsdetail.source != null">来源{{
Newsdetail.source }}</span>
</div> </div>
<div class="re_slice"></div> <div class="re_slice"></div>
<div class="re_file" v-if="Newsdetail.file != '' && Newsdetail.file != null"> <div class="re_file" v-if="Newsdetail.file != '' && Newsdetail.file != null">
附件 附件
<a :href="Newsdetail.file" target="_blank" rel="noopener noreferrer" style="color: #0066cc;"> <a :href="Newsdetail.file" target="_blank" rel="noopener noreferrer"
style="color: #0066cc;">
{{ Newsdetail.attachment.filename }} {{ Newsdetail.attachment.filename }}
</a> </a>
</div> </div>
<div class="re_content" v-html="Newsdetail.content"></div> <div class="re_content" v-html="Newsdetail.content"></div>
</div> </div>
<div class="re_box_item" v-if="Newsdetail != null && Newsdetail.type == 2"> <div class="re_box_item" v-if="Newsdetail != null && Newsdetail.type == 2">
<div class="re_title" style="margin-top: 0;font-size: 20px;font-weight: 600;">{{ Newsdetail.title }}</div> <div class="re_title" style="margin-top: 0;font-size: 20px;font-weight: 600;">{{
Newsdetail.title }}</div>
<div class='flex justify-between re_rouse' style="margin-bottom: 20px;"> <div class='flex justify-between re_rouse' style="margin-bottom: 20px;">
<span>{{Newsdetail.release_time_text}}</span> <span>{{ Newsdetail.release_time_text }}</span>
<span v-if="Newsdetail.source != '' && Newsdetail.source != null">来源{{ Newsdetail.source }}</span> <span v-if="Newsdetail.source != '' && Newsdetail.source != null">来源{{
Newsdetail.source }}</span>
</div> </div>
<embed type="application/pdf" :src="Newsdetail.file" width="100%" height="580px" alt=""> <embed type="application/pdf" :src="Newsdetail.file" width="100%" height="580px" alt="">
</div> </div>
</div> </div>
</div> </div>
<div class="rig_box" :class="{'topding': topding}"> <div class="rig_box">
<n-tabs :bar-width="0" type="line" <n-tabs :bar-width="0" type="line" class="custom-tabs" pane-style="background-color: #ffffff;">
class="custom-tabs" pane-style="background-color: #ffffff;">
<n-tab-pane name="oasis" tab="热门推荐" style="padding: 30px;"> <n-tab-pane name="oasis" tab="热门推荐" style="padding: 30px;">
<div class="flex flex-row" v-for="item,index in remList" :key="index" style="padding-bottom:30px;cursor: pointer;" @click="gotodetail({id:item.id,type:'1'})"> <div class="flex flex-row" v-for="item, index in remList" :key="index"
style="padding-bottom:30px;cursor: pointer;"
@click="gotodetail({ id: item.id, type: '1' })">
<div class="number_t" v-if="index == 0 || index == 1 || index == 2"> <div class="number_t" v-if="index == 0 || index == 1 || index == 2">
{{index+1 > 10 ? index + 1 : '0'+(index+1) }} {{ index + 1 > 10 ? index + 1 : '0' + (index + 1) }}
</div> </div>
<div class="number_t1" v-else> <div class="number_t1" v-else>
<span v-if="index+1 == 6" style="color: #D70E08;">{{index+1 > 10 ? index + 1 : '0'+(index+1) }}</span> <span v-if="index + 1 == 6" style="color: #D70E08;">{{ index + 1 > 10 ? index + 1 :
<span v-else>{{index+1 > 10 ? index + 1 : '0'+(index+1) }}</span> '0' + (index + 1) }}</span>
<span v-else>{{ index + 1 > 10 ? index + 1 : '0' + (index + 1) }}</span>
</div> </div>
<div class="content_t2"> <div class="content_t2">
<p class="p1 one-line-ellipsis">{{ item.title }}</p> <p class="p1 one-line-ellipsis">{{ item.title }}</p>
@ -76,13 +93,16 @@
</div> </div>
</n-tab-pane> </n-tab-pane>
<n-tab-pane name="jay chou" tab="精选文章" style="padding: 30px;"> <n-tab-pane name="jay chou" tab="精选文章" style="padding: 30px;">
<div class="flex flex-row" v-for="item,index in jinxList" :key="index" style="padding-bottom:30px; cursor: pointer;" @click="gotodetail({id:item.id,type:'1'})"> <div class="flex flex-row" v-for="item, index in jinxList" :key="index"
style="padding-bottom:30px; cursor: pointer;"
@click="gotodetail({ id: item.id, type: '1' })">
<div class="number_t" v-if="index == 0 || index == 1 || index == 2"> <div class="number_t" v-if="index == 0 || index == 1 || index == 2">
{{index+1 > 10 ? index + 1 : '0'+(index+1) }} {{ index + 1 > 10 ? index + 1 : '0' + (index + 1) }}
</div> </div>
<div class="number_t1" v-else> <div class="number_t1" v-else>
<span v-if="index+1 == 6" style="color: #D70E08;">{{index+1 > 10 ? index + 1 : '0'+(index+1) }}</span> <span v-if="index + 1 == 6" style="color: #D70E08;">{{ index + 1 > 10 ? index + 1 :
<span v-else>{{index+1 > 10 ? index + 1 : '0'+(index+1) }}</span> '0' + (index + 1) }}</span>
<span v-else>{{ index + 1 > 10 ? index + 1 : '0' + (index + 1) }}</span>
</div> </div>
<div class="content_t2"> <div class="content_t2">
<p class="p1 one-line-ellipsis">{{ item.title }}</p> <p class="p1 one-line-ellipsis">{{ item.title }}</p>
@ -97,10 +117,10 @@
</div> </div>
</n-tab-pane> </n-tab-pane>
</n-tabs> </n-tabs>
</div> </div>
</div> </div>
<AppFooter></AppFooter>
<!-- 右分享 --> <!-- 右分享 -->
<!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg"> <!-- <div style="position: absolute;top: 300px;right:36px;" class="flex flex-col fiximg">
<img :src="`/img/index/douyin.png`" alt=""> <img :src="`/img/index/douyin.png`" alt="">
@ -117,11 +137,11 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { NTabs,NTabPane } from 'naive-ui' import { NTabs, NTabPane } from 'naive-ui'
import $api from '@/service/webRequest' import $api from '@/service/webRequest'
// import emitter from '@/plugins/emitter' // import emitter from '@/plugins/emitter'
const route = useRoute() const route = useRoute()
// const inputSearch = ref('') const inputSearch = ref('')
const page = ref(1); const page = ref(1);
const jinxList = ref([]); const jinxList = ref([]);
const remList = ref([]); const remList = ref([]);
@ -139,25 +159,25 @@ const types = ref(route.query.type)
// //
const getjinxList = async () => { const getjinxList = async () => {
const res = await $api.post('/api/home.news/index', const res = await $api.post('/api/home.news/index',
{ {
limit:6, limit: 6,
page:page.value, page: page.value,
fine:1 fine: 1
} }
) )
jinxList.value = res.data.data.list; jinxList.value = res.data.data.list;
} }
// //
const getremList = async () => { const getremList = async () => {
const res = await $api.post('/api/home.news/index', const res = await $api.post('/api/home.news/index',
{ {
limit:6, limit: 6,
page:page.value, page: page.value,
hot:1 hot: 1
} }
) )
remList.value = res.data.data.list; remList.value = res.data.data.list;
} }
// // // //
@ -167,57 +187,57 @@ const getNewsdetail = async () => {
title_left.value = '新闻动态'; title_left.value = '新闻动态';
const res = await $api.post('/api/home.news/detail', const res = await $api.post('/api/home.news/detail',
{ {
id:ids.value id: ids.value
} }
) )
Newsdetail.value = res.data.data; Newsdetail.value = res.data.data;
}else if(types.value == 2){ } else if (types.value == 2) {
title_left.value = '信息公开'; title_left.value = '信息公开';
// //
const res1 = await $api.post('/api/home.information/detail', const res1 = await $api.post('/api/home.information/detail',
{ {
id:ids.value id: ids.value
} }
) )
Newsdetail.value = res1.data.data; Newsdetail.value = res1.data.data;
}else{ } else {
title_left.value = '团务百科'; title_left.value = '团务百科';
// //
const res2 = await $api.post('/api/home.encyclopedia/detail', const res2 = await $api.post('/api/home.encyclopedia/detail',
{ {
id:ids.value id: ids.value
} }
) )
Newsdetail.value = res2.data.data; Newsdetail.value = res2.data.data;
} }
} }
// //
const gotodetail = async (data) => { const gotodetail = async (data) => {
// //
if (data.type == 1) { if (data.type == 1) {
title_left.value = '新闻动态'; title_left.value = '新闻动态';
const res = await $api.post('/api/home.news/detail', const res = await $api.post('/api/home.news/detail',
{ {
id:data.id id: data.id
} }
) )
Newsdetail.value = res.data.data; Newsdetail.value = res.data.data;
}else if(data.type == 2){ } else if (data.type == 2) {
title_left.value = '信息公开'; title_left.value = '信息公开';
// //
const res1 = await $api.post('/api/home.information/detail', const res1 = await $api.post('/api/home.information/detail',
{ {
id:data.id id: data.id
} }
) )
Newsdetail.value = res1.data.data; Newsdetail.value = res1.data.data;
}else{ } else {
title_left.value = '团务百科'; title_left.value = '团务百科';
// //
const res2 = await $api.post('/api/home.encyclopedia/detail', const res2 = await $api.post('/api/home.encyclopedia/detail',
{ {
id:data.id id: data.id
} }
) )
Newsdetail.value = res2.data.data; Newsdetail.value = res2.data.data;
@ -225,18 +245,18 @@ const gotodetail = async (data) => {
} }
const hmScroll = () => { const hmScroll = () => {
let tjright = document.getElementById('tjright'); let tjright = document.getElementById('tjright');
if(tjright.scrollTop>159){ if (tjright.scrollTop > 159) {
topding.value = true; topding.value = true;
}else{ } else {
topding.value = false; topding.value = false;
} }
} }
// //
onMounted(() => { onMounted(() => {
getjinxList(); getjinxList();
getremList(); getremList();
getNewsdetail(); getNewsdetail();
window.addEventListener('scroll', hmScroll); window.addEventListener('scroll', hmScroll);
}) })
</script> </script>
@ -247,12 +267,12 @@ onMounted(() => {
/* pc端样式 */ /* pc端样式 */
.rightcon { .rightcon {
width:100%; width: 100%;
height:100%; height: 100%;
background-image: url('/img/newsxq.png'); background-image: url('/img/index/rightcons.png');
background-size: 100% 100%; background-size: 100% 100%;
overflow-y: auto; overflow-y: auto;
position: absolute; position: absolute;
} }
.top_search { .top_search {
@ -260,12 +280,13 @@ onMounted(() => {
height: 70px; height: 70px;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-left: 415px;
width: 1200px;
} }
.inputform { .inputform {
position: relative; position: relative;
width: 340px; width: 340px;
margin-right: 319px;
} }
.contactInput { .contactInput {
@ -288,7 +309,7 @@ onMounted(() => {
.search_rinput { .search_rinput {
width: 68px; width: 68px;
height: 50px; height: 50px;
background: #e6e6e6; background: #338CDE;
border-radius: 0px 8px 8px 0px; border-radius: 0px 8px 8px 0px;
position: absolute; position: absolute;
top: 0; top: 0;
@ -306,11 +327,12 @@ onMounted(() => {
.lef_box { .lef_box {
width: 835px; width: 835px;
.re_box { .re_box {
width: 100%; width: 100%;
height: 100%; height: 100%;
margin: 0 auto; margin: 0 auto;
margin-top: 40px; margin-top: 20px;
padding-left: 100px; padding-left: 100px;
.re_box_item { .re_box_item {
@ -328,10 +350,12 @@ onMounted(() => {
border-bottom: 1px dashed #bbbbbb; border-bottom: 1px dashed #bbbbbb;
margin-top: 20px; margin-top: 20px;
} }
.re_file{
.re_file {
margin-top: 20px; margin-top: 20px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.re_mian { .re_mian {
// width: 248px; // width: 248px;
font-family: Microsoft YaHei UI; font-family: Microsoft YaHei UI;
@ -339,7 +363,8 @@ onMounted(() => {
font-size: 16px; font-size: 16px;
color: #666666; color: #666666;
} }
.re_rouse{
.re_rouse {
font-family: Microsoft YaHei UI; font-family: Microsoft YaHei UI;
font-weight: 400; font-weight: 400;
font-size: 16px; font-size: 16px;
@ -347,6 +372,7 @@ onMounted(() => {
width: 100%; width: 100%;
margin-top: 10px; margin-top: 10px;
} }
.re_title { .re_title {
width: 100%; width: 100%;
font-family: Microsoft YaHei UI; font-family: Microsoft YaHei UI;
@ -366,7 +392,7 @@ onMounted(() => {
padding: 30px 0; padding: 30px 0;
} }
} }
} }
} }
@ -374,86 +400,96 @@ onMounted(() => {
.rig_box { .rig_box {
width: 430px; width: 430px;
height: 100%; height: 100%;
margin-top: 40px; margin-top: 20px;
margin-left: 35px; margin-left: 35px;
.custom-tabs {
.number_t{
width: 34px;
height: 34px;
// background: #FFA234;
background: #E40106;
border-radius: 17px;
font-family: Microsoft YaHei UI;
font-weight: 400;
font-size: 18px;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
margin-right: 20px;
}
.number_t1{
width: 34px;
height: 34px;
background: #FFFFFF;
border-radius: 17px;
font-family: Microsoft YaHei UI;
font-weight: 400;
font-size: 18px;
color: #323232;
display: flex;
justify-content: center;
align-items: end;
margin-right: 20px;
}
.content_t2{
font-family: Microsoft YaHei UI;
font-weight: 400;
width: 80%;
.p1{
margin-top: 7px;
font-size: 18px;
color: #393939;
}
.p2{
margin-top: 15px;
font-size: 16px;
color: #999999;
}
}
}
:deep(.n-tabs .n-tabs-tab-wrapper){ .custom-tabs {
.number_t {
width: 34px;
height: 34px;
// background: #FFA234;
background: #E40106;
border-radius: 17px;
font-family: Microsoft YaHei UI;
font-weight: 400;
font-size: 18px;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
margin-right: 20px;
}
.number_t1 {
width: 34px;
height: 34px;
background: #FFFFFF;
border-radius: 17px;
font-family: Microsoft YaHei UI;
font-weight: 400;
font-size: 18px;
color: #323232;
display: flex;
justify-content: center;
align-items: end;
margin-right: 20px;
}
.content_t2 {
font-family: Microsoft YaHei UI;
font-weight: 400;
width: 80%;
.p1 {
margin-top: 7px;
font-size: 18px;
color: #393939;
}
.p2 {
margin-top: 15px;
font-size: 16px;
color: #999999;
}
}
}
:deep(.n-tabs .n-tabs-tab-wrapper) {
width: 215px; width: 215px;
height: 72px; height: 72px;
background: #ffffff; background: #ffffff;
font-size: 18px; font-size: 18px;
justify-content: center; justify-content: center;
} }
:deep(.n-tabs .n-tabs-tab .n-tabs-tab__label){
:deep(.n-tabs .n-tabs-tab .n-tabs-tab__label) {
font-family: Microsoft YaHei UI; font-family: Microsoft YaHei UI;
font-weight: 400; font-weight: 400;
font-size: 18px; font-size: 18px;
} }
:deep(.n-tabs.n-tabs--line-type .n-tabs-tab:hover, .n-tabs.n-tabs--bar-type .n-tabs-tab:hover){
:deep(.n-tabs.n-tabs--line-type .n-tabs-tab:hover, .n-tabs.n-tabs--bar-type .n-tabs-tab:hover) {
color: #348CDE; color: #348CDE;
} }
:deep(.n-tabs.n-tabs--line-type .n-tabs-tab.n-tabs-tab--active,.n-tabs.n-tabs--bar-type .n-tabs-tab.n-tabs-tab--active){
:deep(.n-tabs.n-tabs--line-type .n-tabs-tab.n-tabs-tab--active, .n-tabs.n-tabs--bar-type .n-tabs-tab.n-tabs-tab--active) {
color: #348CDE; color: #348CDE;
background: #F1F8FF; background: #F1F8FF;
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
border-top:solid 2px #378FDF; border-top: solid 2px #378FDF;
} }
:deep(.n-tabs .n-tabs-tab-pad){
:deep(.n-tabs .n-tabs-tab-pad) {
width: 0; width: 0;
} }
} }
.topding{
.topding {
position: fixed; position: fixed;
top: 0; top: 0;
margin-top: 0; margin-top: 0;
@ -461,4 +497,34 @@ onMounted(() => {
width: 430px; width: 430px;
} }
} }
.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: 700px;
}
.top_bar {
margin: 0px;
width: 1032px;
margin-left: 270px;
}
}
</style> </style>

View File

@ -6,16 +6,16 @@
<!-- 右边内容栏 --> <!-- 右边内容栏 -->
<div class="rightcon" @scroll="hmScroll" id="tjright"> <div class="rightcon" @scroll="hmScroll" id="tjright">
<div class="flex top_search"> <div class="flex top_search">
<div style="width: 572px; height: 69px; margin-left: 415px"> <div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%; height: 100%; object-fit: cover" /> <img :src="`/img/index/dlogo.png`" alt="" style="width: 100%; height: 100%; object-fit: cover" />
</div> </div>
<!-- <div class="inputform"> <div class="inputform">
<input v-model="inputSearch" class="contactInput w-full md:w-[337px]" type="text" <input v-model="inputSearch" class="contactInput w-full md:w-[337px]" type="text"
placeholder="请输入搜索关键字" /> placeholder="请输入搜索关键字" />
<div class="search_rinput"> <div class="search_rinput">
<img src="/img/index/hmsearch.png" alt="" /> <img src="/img/index/hmsearch.png" alt="" />
</div> </div>
</div> --> </div>
</div> </div>
<div class="News_box h-auto"> <div class="News_box h-auto">
@ -35,8 +35,7 @@
</div> </div>
</div> </div>
<div class="rig_box" :class="{'topding': topding}"> <div class="rig_box" >
<n-tabs :bar-width="0" type="line" <n-tabs :bar-width="0" type="line"
class="custom-tabs" pane-style="background-color: #ffffff;"> class="custom-tabs" pane-style="background-color: #ffffff;">
<n-tab-pane name="oasis" tab="热门推荐" style="padding: 30px;"> <n-tab-pane name="oasis" tab="热门推荐" style="padding: 30px;">
@ -230,7 +229,7 @@ onMounted(() => {
.rightcon { .rightcon {
width:100%; width:100%;
height:100%; height:100%;
background-image: url('/img/xwdt.png'); background-image: url('/img/index/rightcons.png');
background-size: 100% 100%; background-size: 100% 100%;
overflow-y: auto; overflow-y: auto;
position: absolute; position: absolute;
@ -241,12 +240,13 @@ onMounted(() => {
height: 70px; height: 70px;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-left: 415px;
width: 1200px;
} }
.inputform { .inputform {
position: relative; position: relative;
width: 340px; width: 340px;
margin-right: 319px;
} }
.contactInput { .contactInput {
@ -269,7 +269,7 @@ onMounted(() => {
.search_rinput { .search_rinput {
width: 68px; width: 68px;
height: 50px; height: 50px;
background: #e6e6e6; background: #338CDE;
border-radius: 0px 8px 8px 0px; border-radius: 0px 8px 8px 0px;
position: absolute; position: absolute;
top: 0; top: 0;
@ -448,4 +448,18 @@ onMounted(() => {
width: 430px; width: 430px;
} }
} }
@media (max-width: 1440px) {
.top_search {
width: 920px;
margin-left: 373px;
}
.News_box{
width: 1032px;
margin-left: 270px;
}
.rig_box{
width: 700px;
}
}
</style> </style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

BIN
public/img/d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

BIN
public/img/f1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
public/img/f2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
public/img/fuwu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

Before

Width:  |  Height:  |  Size: 579 KiB

After

Width:  |  Height:  |  Size: 579 KiB

BIN
public/img/home/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

BIN
public/img/home/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

BIN
public/img/home/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

BIN
public/img/home/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

BIN
public/img/home/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

BIN
public/img/key.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

BIN
public/img/luoyang.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

BIN
public/img/ly_listbg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

BIN
public/img/tuan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB