1.底部栏排版优化,新增医院信息展示区域

2.地图服务整合,新增腾讯地图接入功能
3.信息查询模块升级,实现详情页同步适配(含手机端)
4.接口数据优化,同步调整页面图片展示效果
5.文章内容扩容,提升页面视觉展示效果
6.顶部导航栏优化,实现PC端与手机端自适应调整
This commit is contained in:
王创世 2025-04-09 18:00:59 +08:00
parent 3735567b36
commit ac3d0a1205
20 changed files with 786 additions and 302 deletions

View File

@ -16,10 +16,10 @@ import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
const router = useRouter()
useSeoMeta({
title: '信阳第五人民医院',
ogTitle: '信阳第五人民医院',
description: '信阳第五人民医院',
ogDescription: '信阳第五人民医院',
title: '信阳第五人民医院',
ogTitle: '信阳第五人民医院',
description: '信阳第五人民医院',
ogDescription: '信阳第五人民医院',
ogImage: 'https://example.com/image.png',
twitterCard: 'summary_large_image',
})

View File

@ -38,3 +38,12 @@
animation-delay: 2.5s;
animation-duration: 0.1s;
}
//保留一行
.one-line {
white-space: nowrap; /* 禁止换行 */
overflow: hidden; /* 隐藏溢出内容 */
text-overflow: ellipsis; /* 溢出显示省略号(可选) */
display: inline-block; /* 使块元素能应用省略号 */
max-width: 100%; /* 配合省略号的宽度限制 */
}

View File

@ -1097,7 +1097,7 @@
}
.image_12 {
width: 680px;
width: 683px;
height: 378px;
}
@ -1575,7 +1575,7 @@
.group_26 {
background-color: rgba(249, 249, 249, 1);
height: 44px;
width: 410px;
width: 352px;
position: relative;
margin: 22px 0 24px 30px;
}
@ -1768,7 +1768,7 @@
.box_26 {
background-color: rgba(255, 255, 255, 1);
height: 348px;
width: 100%;
width: 542px;
margin-top: 16px;
margin-left: -20px;
}
@ -1841,7 +1841,6 @@
.group_29 {
background-color: rgba(26, 172, 162, 1);
width: 100%;
height: 309px;
}
.text-wrapper_57 {
@ -1948,7 +1947,7 @@
.block_4 {
background-color: rgba(255, 255, 255, 1);
width: 1200px;
width: 78%;
height: 1px;
margin: 22px 0 0 358px;
}
@ -1956,6 +1955,7 @@
@media screen and (max-width: 1440px) {
.block_4 {
margin: 38px 0 0 47px;
width: 94%;
}
}
@ -1980,14 +1980,11 @@
.text_75 {
width: 258px;
height: 16px;
overflow-wrap: break-word;
color: rgba(255, 255, 255, 1);
font-size: 16px;
font-family: Microsoft YaHei-Regular;
font-weight: NaN;
text-align: left;
white-space: nowrap;
line-height: 16px;
}
@ -2007,15 +2004,13 @@
.text_77 {
width: 228px;
height: 16px;
overflow-wrap: break-word;
color: rgba(255, 255, 255, 1);
font-size: 16px;
font-family: Microsoft YaHei-Regular;
font-weight: NaN;
text-align: left;
white-space: nowrap;
line-height: 16px;
line-height: 20px;
margin-top: 25px;
}

View File

@ -396,14 +396,12 @@
}
.text_15 {
width: 537px;
overflow-wrap: break-word;
color: rgba(50, 50, 50, 1);
font-size: 20px;
font-family: Microsoft YaHei-Regular;
font-weight: NaN;
text-align: left;
line-height: 18px;
}
.text_16 {

View File

@ -1,80 +1,68 @@
<template>
<!-- 使用条件渲染来分别显示PC端和移动端页脚 -->
<div v-if="!isMobile" class="group_29 flex-col">
<!-- PC端页脚 - 保持原有设计 -->
<div class="text-wrapper_57 flex-row">
<span class="text_69">联系我们</span>
<span class="text_70">就医指南</span>
<span class="text_71">科室导航</span>
<span class="text_72">联系我们</span>
<span class="text_73">就医指南</span>
<span class="text_74">科室导航</span>
</div>
<div class="block_4 flex-col"></div>
<div class="block_9 flex-row">
<div class="text-wrapper_58 flex-col justify-between">
<span class="text_75">地址河南省信阳市XXXXXXXXXXX</span>
<span class="text_76">电话0376-12345678</span>
<span class="text_77">邮箱xys&#64;diwuyifuyuan.com</span>
<span class="text_78">地址河南省信阳市XXXXXXXXXXX</span>
<span class="text_79">电话0376-12345678</span>
<span class="text_80">邮箱xys&#64;diwuyifuyuan.com</span>
<div v-if="!isMobile" style="background-color:rgba(26, 172, 162, 1);">
<div class="group_29 flex-col" :style="{ height: broadcast.length > 5 ? '450px' : 'auto' }">
<!-- PC端页脚 - 保持原有设计 -->
<div class="text-wrapper_57 flex-row">
<span class="text_69">联系我们</span>
<span class="text_70">就医指南</span>
<span class="text_71">科室导航</span>
<span class="text_72">联系我们</span>
<span class="text_73">就医指南</span>
<span class="text_74">科室导航</span>
</div>
<div class="text-wrapper_59 flex-col justify-between">
<span class="text_81">门诊就医流程</span>
<span class="text_82">住院就医流程</span>
<span class="text_83">医院位置</span>
<span class="text_84">门诊就医流程</span>
<span class="text_85">住院就医流程</span>
<span class="text_86">医院位置</span>
</div>
<div class="text-wrapper_60 flex-col justify-between">
<span class="text_87">内科五病区</span>
<span class="text_88">消化内科病区</span>
<span class="text_89">内科病区</span>
<span class="text_90">内科五病区</span>
<span class="text_91">消化内科病区</span>
<span class="text_92">内科病区</span>
</div>
<div class="text-wrapper_61 flex-col">
<span class="text_93">健康体检科</span>
<span class="text_94">中医科门诊</span>
<span class="text_95">妇产科门诊</span>
<span class="text_96">健康体检科</span>
<span class="text_97">中医科门诊</span>
<span class="text_98">妇产科门诊</span>
</div>
<div class="text-wrapper_62 flex-col">
<span class="text_99">健康体检科</span>
<span class="text_100">中医科门诊</span>
<span class="text_101">妇产科门诊</span>
<span class="text_102">健康体检科</span>
<span class="text_103">中医科门诊</span>
<span class="text_104">妇产科门诊</span>
</div>
<div class="flex flex-row" style="gap: 30px;margin-left: 50px;">
<div v-for="item in broadcast" class="text-center">
<a :href="item.live_address" target="_blank">
<img src="public/images/y1.png" width="150px" height="150px" alt="服务号">
</a>
<div style="color: #ffffff;font-size: 15px;margin-top: 10px;">{{ item.title }}</div>
<div class="block_4 flex-col"></div>
<div class="block_9 flex-row">
<div class="text-wrapper_58 flex-col justify-between">
<span class="text_75">地址信阳市工业城城东路京珠高速入口东500米</span>
<span class="text_76">电话0376-6555196</span>
<span class="text_77">门诊时间周一至周五8:00-12:00下午13:30-17:00</span>
</div>
<div class="text-wrapper_59 flex-col justify-between">
<NuxtLink to="/info/30316">
<div class="text_81">门诊就医流程</div>
</NuxtLink>
<NuxtLink to="/info/30317">
<div class="text_82">住院就医流程</div>
</NuxtLink>
<NuxtLink to="/about">
<div class="text_83">医院位置</div>
</NuxtLink>
</div>
<div class="text-wrapper_60 flex-col justify-between">
<NuxtLink to="/info/30242">
<div class="text_87">结核科</div>
</NuxtLink>
<NuxtLink to="/info/30240">
<div class="text_89">中医科</div>
</NuxtLink>
<NuxtLink to="/info/30239">
<div class="text_88">急诊医学科</div>
</NuxtLink>
</div>
<div class="text-wrapper_61 flex-col">
<NuxtLink to="/info/30241">
<div class="text_93">感染科</div>
</NuxtLink>
<NuxtLink to="/info/30238">
<div class="text_94">外科</div>
</NuxtLink>
</div>
<div class="bottom_list">
<div v-for="item in broadcast" class="broadcast-item">
<a :href="item.live_address" target="_blank">
<img :src="item.news_images[0]" class="bottom-img" :alt="item.title">
</a>
<div style="color: #ffffff;font-size: 15px;margin-top: 10px;">{{ item.title }}</div>
</div>
</div>
</div>
</div>
<div class="text-wrapper_63 flex-row">
<span class="text_105">来院路线</span>
<span class="text_106">内科病区</span>
<span class="text_107">妇产科门诊</span>
<span class="text_108">妇产科门诊</span>
<span class="text_111">来院路线</span>
<span class="text_112">内科病区</span>
<span class="text_113">妇产科门诊</span>
<span class="text_114">妇产科门诊</span>
</div>
<div style="background-color: rgba(26, 172, 162, 1);padding-bottom: 20px;text-align: center;color: #ffffff;">
<div style="background-color: rgba(26, 172, 162, 1);padding: 20px 0px;text-align: center;color: #ffffff;">
<a href="https://beian.miit.gov.cn/" target="_blank">ICP备2025118630号</a>
</div>
</div>
<!-- 使用条件渲染来分别显示PC端和移动端页脚 -->
<!-- 移动端全新页脚设计 -->
<div v-else class="mobile-footer">
@ -82,9 +70,9 @@
<div class="mobile-main-info">
<div class="hospital-info">
<h3>信阳第五人民医院</h3>
<p><i class="location-icon"></i> 地址河南省信阳市XXXXXXXXXXX</p>
<p><i class="phone-icon"></i> 电话0376-12345678</p>
<p><i class="email-icon"></i> 邮箱xys@diwuyifuyuan.com</p>
<p><i class="location-icon"></i> 地址信阳市工业城城东路京珠高速入口东500米</p>
<p><i class="phone-icon"></i> 电话0376-6555196</p>
<p><i class="email-icon"></i> 门诊时间周一至周五8:00-12:00下午13:30-17:00</p>
</div>
</div>
@ -93,22 +81,39 @@
<div class="link-section" @click="toggleSection('guide')">
<h4>就医指南 <i :class="{ 'arrow-down': !openSections.guide, 'arrow-up': openSections.guide }"></i></h4>
<div v-if="openSections.guide" class="section-content">
<a href="#">门诊就医流程</a>
<a href="#">住院就医流程</a>
<a href="#">医院位置</a>
<a href="#">来院路线</a>
<NuxtLink to="/phone_info/30316">
<div>门诊就医流程</div>
</NuxtLink>
<NuxtLink to="/phone_info/30317">
<div>住院就医流程</div>
</NuxtLink>
<NuxtLink to="/phone_about">
<div>医院位置</div>
</NuxtLink>
<NuxtLink to="/phone_about">
<div>来院路线</div>
</NuxtLink>
</div>
</div>
<div class="link-section" @click="toggleSection('departments')">
<h4>科室导航 <i :class="{ 'arrow-down': !openSections.departments, 'arrow-up': openSections.departments }"></i></h4>
<div v-if="openSections.departments" class="section-content">
<a href="#">内科五病区</a>
<a href="#">消化内科病区</a>
<a href="#">内科病区</a>
<a href="#">健康体检科</a>
<a href="#">中医科门诊</a>
<a href="#">妇产科门诊</a>
<NuxtLink to="/info/30242">
<div>结核科</div>
</NuxtLink>
<NuxtLink to="/info/30240">
<div>中医科</div>
</NuxtLink>
<NuxtLink to="/info/30239">
<div>急诊医学科</div>
</NuxtLink>
<NuxtLink to="/info/30241">
<div>感染科</div>
</NuxtLink>
<NuxtLink to="/info/30238">
<div>外科</div>
</NuxtLink>
</div>
</div>
</div>
@ -116,13 +121,9 @@
<!-- 底部固定信息和二维码 -->
<div class="mobile-bottom">
<div class="qr-codes">
<div class="qr-item">
<div class="qr-code service-qr"></div>
<p>服务号</p>
</div>
<div class="qr-item">
<div class="qr-code subscribe-qr"></div>
<p>订阅号</p>
<div class="qr-item" v-for="item in broadcast">
<img :src="item.news_images[0]" class="qr-code service-qr" :alt="item.title">
<p>{{ item.title }}</p>
</div>
</div>
<div class="copyright">
@ -285,7 +286,7 @@ const getBroadcast = () => {
display: flex;
flex-direction: column;
a {
div {
color: #666;
text-decoration: none;
padding: 8px 0;
@ -311,12 +312,13 @@ const getBroadcast = () => {
display: flex;
justify-content: center;
margin-bottom: 15px;
flex-wrap: wrap;
.qr-item {
display: flex;
flex-direction: column;
align-items: center;
margin: 0 15px;
margin: 15px;
.qr-code {
width: 80px;
@ -377,4 +379,44 @@ const getBroadcast = () => {
.text-wrapper_62 span {
cursor: pointer;
}
.bottom-img {
width: 100px;
height: 100px;
}
.bottom_list {
flex-wrap: wrap;
gap: 30px;
margin-left: 50px;
}
.group_29 {
height: 100%;
}
.broadcast-item {
float: left;
margin: 10px;
text-align: center;
}
.block_9 {
width: 81%;
}
@media screen and (max-width: 1440px) {
.bottom-img {
width: 90px;
height: 90px;
}
.block_9 {
width: 95%;
}
.bottom_list {
width: 350px;
}
}
</style>

View File

@ -18,27 +18,86 @@
<!-- 桌面端菜单 -->
<div v-if="!isMobile" class="section_2 flex-row">
<div :class="isLinl == 0 ? 'group_2 flex-col' : 'group_4 flex-col'" @click="openLinl(0)">
<span class="text_2">首页</span>
<div v-if="isLinl == 0" class="group_3 flex-col"></div>
</div>
<div :class="isLinl == -1 ? 'group_2 flex-col' : 'group_4 flex-col'" @click="openLinl(-1)">
<span class="text_3">医院概况</span>
<div v-if="isLinl == -1" class="group_3 flex-col"></div>
</div>
<div v-for="(item, index) in groupList" :key="item.id"
:class="isLinl == item.id ? 'group_2 flex-col' : 'group_4 flex-col'" @click="isOpneLinl(item)">
<span class="text_3">{{ item.name }}</span>
<div v-if="isLinl == item.id" class="group_3 flex-col"></div>
</div>
<NuxtLink to="/">
<div :class="isLinl == '/' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_2">首页</span>
<div v-if="isLinl == '/'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/about">
<div :class="isLinl == '/about' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">医院概况</span>
<div v-if="isLinl == '/about'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/-3">
<div :class="isLinl == '/list/-3' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">医生团队</span>
<div v-if="isLinl == '/list/-3'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/89">
<div :class="isLinl == '/list/89' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">党建工作</span>
<div v-if="isLinl == '/list/89'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/34">
<div :class="isLinl == '/list/34' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">科室介绍</span>
<div v-if="isLinl == '/list/34'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/19">
<div :class="isLinl == '/list/19' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">招聘信息</span>
<div v-if="isLinl == '/list/19'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/22">
<div :class="isLinl == '/list/22' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">健康科普</span>
<div v-if="isLinl == '/list/22'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/88">
<div :class="isLinl == '/list/88' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">院务公开</span>
<div v-if="isLinl == '/list/88'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/23">
<div :class="isLinl == '/list/23' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">患者服务</span>
<div v-if="isLinl == '/list/23'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/87">
<div :class="isLinl == '/list/87' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">紧急服务</span>
<div v-if="isLinl == '/list/87'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
<NuxtLink to="/list/18">
<div :class="isLinl == '/list/18' ? 'group_2 flex-col' : 'group_4 flex-col'">
<span class="text_3">科研成果</span>
<div v-if="isLinl == '/list/18'" class="group_3 flex-col"></div>
</div>
</NuxtLink>
</div>
<!-- 手机端菜单 -->
<div v-if="isMobile && mobileMenuOpen" class="mobile-menu">
<div class="mobile-menu-item" :class="{ 'active': isLinl == 0 }" @click="selectMenuItem(0)">首页</div>
<div class="mobile-menu-item" :class="{ 'active': isLinl == 1 }" @click="selectMenuItem(1)">医院概况</div>
<div v-for="(item, index) in groupList" :key="item.id" class="mobile-menu-item"
:class="{ 'active': isLinl == item.id }" @click="isOpneLinl(item)">{{ item.name }}</div>
<NuxtLink to="/">
<div class="mobile-menu-item" :class="{ 'active': isLinl == '/phone_index' }" @click="selectMenuItem(0)">首页</div>
</NuxtLink>
<NuxtLink to="/about">
<div class="mobile-menu-item" :class="{ 'active': isLinl == '/phone_about' }" @click="selectMenuItem(1)">医院概况</div>
</NuxtLink>
<NuxtLink v-for="(item, index) in groupList" :key="item.id" :to="'/phone_list/' + item.id">
<div class="mobile-menu-item" :class="{ 'active': isLinl == '/phone_list/' + item.id }" @click="mobileMenuOpen = false">{{ item.name }}</div>
</NuxtLink>
</div>
</div>
</template>
@ -52,7 +111,7 @@ const store = useStore()
const route = useRoute()
const isMenuOpen = ref(false)
const { locale } = useI18n()
const isLinl = ref(0)
const isLinl = ref('/')
import $api from '@/service/webRequest'
//
const isMobile = ref(false)
@ -89,32 +148,20 @@ const selectMenuItem = (index: number) => {
window.location.href = `/about`
}
}
const isOpneLinl = (item: any) => {
console.log(item);
isLinl.value = item.id;
sessionStorage.setItem('group_id', item.id)
mobileMenuOpen.value = false
router.push(`/list/${item.id}`)
}
const openLinl = (item) => {
isLinl.value = item;
mobileMenuOpen.value = false
if (item == 0) {
sessionStorage.setItem('group_id', '0')
router.push('/');
} else {
sessionStorage.setItem('group_id', '-1')
//
window.location.href = `/about`
}
}
watch(route, (newRoute) => {
console.log(newRoute);
isLinl.value = newRoute.path
}, { immediate: true })
//
onMounted(() => {
if (route.path == '/about') {
isLinl.value = -1
} else {
isLinl.value = Number(sessionStorage.getItem('group_id'))
}
//console.log(route);
// if (route.path == '/about') {
// isLinl.value = -1
// } else {
// isLinl.value = Number(sessionStorage.getItem('group_id'))
// }
checkIfMobile()
window.addEventListener('resize', checkIfMobile)

View File

@ -30,7 +30,7 @@ export default defineNuxtConfig({
server: {
proxy: {
'/api': {
target: "http://192.168.10.140/",
target: "http://xysdwrmyy.cn/",
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
}

41
package-lock.json generated
View File

@ -15,6 +15,7 @@
"nuxt-icons": "^3.2.1",
"pinia": "^2.1.7",
"swiper": "^11.2.5",
"tlbs-map-vue": "^1.3.1",
"vue-baidu-map-3x": "^1.0.40",
"vue-i18n": "^9.8.0",
"vue-swiper-animate": "^1.0.0"
@ -7491,7 +7492,6 @@
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true,
"license": "ISC"
},
"node_modules/graphemer": {
@ -8426,7 +8426,6 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
@ -12353,6 +12352,43 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/tlbs-map-vue": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/tlbs-map-vue/-/tlbs-map-vue-1.3.1.tgz",
"integrity": "sha512-oh239gdtis/b6VInlmFuxP3fnwssEG4Hy5sTzLyiJ4bTeqR8pB7MPzl81AqaL+fC4W7aFsSkofbBGmgh4rD/4w==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"fs-extra": "^10.1.0",
"vue-demi": "^0.14.6"
},
"engines": {
"node": ">=16.0.0"
},
"peerDependencies": {
"@vue/composition-api": "^1.4.9",
"vue": "^2.6.0 || >=3.0.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/tlbs-map-vue/node_modules/fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@ -12663,7 +12699,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 10.0.0"

View File

@ -36,6 +36,7 @@
"nuxt-icons": "^3.2.1",
"pinia": "^2.1.7",
"swiper": "^11.2.5",
"tlbs-map-vue": "^1.3.1",
"vue-baidu-map-3x": "^1.0.40",
"vue-i18n": "^9.8.0",
"vue-swiper-animate": "^1.0.0"

View File

@ -3,8 +3,7 @@
<div class="group_3 flex-col">
<div class="section_1 flex-col">
<div class="flex group_7 flex-row">
<img class="thumbnail_1" referrerpolicy="no-referrer"
src="public/images/home.png" />
<img class="thumbnail_1" referrerpolicy="no-referrer" src="public/images/home.png" />
<span class="text_13">您的位置首页&gt;系统公告</span>
</div>
<div class="text_14">联系我们</div>
@ -14,33 +13,35 @@
<div class="flex group_8 flex-col justify-center">
<div class="flex group_9 flex-row justify-between">
<div class="flex image-wrapper_1 flex-col">
<img class="label_1" referrerpolicy="no-referrer"
src="public/images/k7.png" />
<img class="label_1" referrerpolicy="no-referrer" src="public/images/k7.png" />
</div>
<span class="text_15">医院介绍</span>
</div>
<span class="paragraph_1">
{{ hospitalInfo.description }}
{{ hospitalInfo.description }}
</span>
</div>
<div class="block_2 flex-col relative">
<img class="w-full mb-4" referrerpolicy="no-referrer" :src="hospitalInfo.image" style=" position: absolute;top: -30px;left: -30px;"/>
<img class="w-full mb-4" referrerpolicy="no-referrer" :src="hospitalInfo.image"
style=" position: absolute;top: -30px;left: -30px;" />
</div>
</div>
<div class="z-10 mt-10">
<div class="font-bold text-center" style="font-size: 32px;">医院位置</div>
<div>
<baidu-map @ready="onBaiduMapReady" class="map" ak="OCHRqb6XXcOh9LH7H6c67c6xAoGxznQF" v="3.0" type="API"
:zoom="18" :center="centerVal">
<bm-marker @click="isShowInfoWindow = true" :position="{ lng: 114.221199, lat: 32.137085 }">
</bm-marker>
<bm-info-window @close="isShowInfoWindow = false" :show="isShowInfoWindow"
:position="{ lng: 114.221199, lat: 32.137085 }" :width="100" :max-width="300">
<div>
信阳第五人民医院
</div>
</bm-info-window>
</baidu-map>
<div >
<BaseMap class="map" ref="mapRef" api-key="OBPBZ-D7ECN-LQPFJ-SZ7WE-VJGTJ-FQFNI" :center="centerVal" :zoom="18">
<!-- <MultiMarker ref="markerRef" :geometries="geometries" :styles="styles" :options="options">
</MultiMarker> -->
<MultiMarker @click="onClick" ref="markerRef" :geometries="geometries" :styles="styles">
</MultiMarker>
<InfoWindow ref="infoWindowRef" @Closeclick="visible = false" :visible="visible" :position="centerVal" content="信阳市第五人民医院"
:options="{
offset: {
x: 0,
y: -20,
}
}"></InfoWindow>
</BaseMap>
</div>
</div>
</div>
@ -48,15 +49,27 @@
<script setup lang="ts">
import { onMounted } from 'vue';
import { BaiduMap, BmGeolocation, BmControl, BmInfoWindow, BmMarker } from 'vue-baidu-map-3x'
//import { BaiduMap, BmGeolocation, BmControl, BmInfoWindow, BmMarker } from 'vue-baidu-map-3x'
import { BaseMap, MultiMarker, InfoWindow } from 'tlbs-map-vue';
import $api from '@/service/webRequest'
const router = useRouter()
const isShowInfoWindow = ref(true);
//
const centerVal = ref({ lng: 114.221199, lat: 32.137085 });
const onBaiduMapReady = (map: any) => {
console.log(map);
}
const centerVal = ref({ lng: 114.214743, lat: 32.131004 });
const geometries = ref([
{ styleId: 'marker', position: { lng: 114.214743, lat: 32.131004 } },
]);
const infoWindowRef=ref(null);
const styles = ref({
marker: {
width: 20,
height: 30,
anchor: { x: 10, y: 30 },
},
});
const visible = ref(true);
onMounted(() => {
const coMobile = /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (coMobile) {
@ -66,6 +79,10 @@ onMounted(() => {
}
getHospitalInfo();
});
const onClick = () => {
console.log('点击了')
visible.value = true;
}
//
const hospitalInfo = ref({});
const getHospitalInfo = () => {
@ -84,12 +101,15 @@ const getHospitalInfo = () => {
@import "@/assets/css/about.css";
.map {
width: 100%;
height: 500px;
padding: 40px 360px;
width: 70%;
height: 600px;
margin: 0 auto;
}
@media screen and (max-width: 1440px) {
.map { padding:40px 30px;}
.map {
padding: 40px 30px;
}
}
</style>
<style>

View File

@ -20,78 +20,92 @@
<span class="text_59">医院信息查询</span>
<span class="text_60">Hospital&nbsp;information&nbsp;inquiry</span>
<div class="group_26 flex-col">
<input type="text" class="text_61" placeholder="请输入您要查询的内容">
<div class="group_27 flex-col">
<div class="group_28 flex-col">
<img src="public/images/ser.png" />
<input type="text" class="text_61" v-model="searchContent" placeholder="请输入您要查询的内容">
<NuxtLink :to="'/search/' + searchContent">
<div class="group_27 flex-col">
<div class="group_28 flex-col">
<img src="public/images/ser.png" />
</div>
</div>
</NuxtLink>
</div>
</div>
<NuxtLink to="/about">
<div class="box_23 flex-col">
<div class="image-wrapper_7 flex-col i2">
<img class="image_16" referrerpolicy="no-referrer" src="public/images/k5.png" />
</div>
<span class="text_62">医院概况</span>
<span class="text_63">Hospital&nbsp;Overview</span>
</div>
</div>
<div class="box_23 flex-col" @click="openUrl(0)">
<div class="image-wrapper_7 flex-col i2">
<img class="image_16" referrerpolicy="no-referrer" src="public/images/k5.png" />
</NuxtLink>
<NuxtLink to="/list/23">
<div class="box_24 flex-col">
<div class="image-wrapper_8 flex-col">
<img class="image_16" referrerpolicy="no-referrer" src="public/images/k1.png" />
</div>
<span class="text_64">患者服务</span>
<span class="paragraph_3">
Patient&nbsp;Services
<br />
</span>
</div>
<span class="text_62">医院概况</span>
<span class="text_63">Hospital&nbsp;Overview</span>
</div>
<div class="box_24 flex-col" @click="openUrl(1)">
<div class="image-wrapper_8 flex-col">
<img class="image_16" referrerpolicy="no-referrer" src="public/images/k1.png" />
</NuxtLink>
<NuxtLink to="/about">
<div class="box_25 flex-col">
<div class="image-wrapper_9 flex-col">
<img class="label_5" referrerpolicy="no-referrer" src="public/images/k4.png" />
</div>
<span class="text_65">医院位置</span>
<span class="text_66">Hospital&nbsp;location</span>
</div>
<span class="text_64">患者服务</span>
<span class="paragraph_3">
Patient&nbsp;Services
<br />
</span>
</div>
<div class="box_25 flex-col" @click="openUrl(0)">
<div class="image-wrapper_9 flex-col">
<img class="label_5" referrerpolicy="no-referrer" src="public/images/k4.png" />
</div>
<span class="text_65">医院位置</span>
<span class="text_66">Hospital&nbsp;location</span>
</div>
</NuxtLink>
</div>
<div class="box_35 flex-row justify-start">
<div class="group_18 flex-col">
<div class="group_19 flex-col"></div>
</div>
<div class="group_36 flex-col justify-between">
<div class="box_14 flex-col" @click="openUrl(2)">
<div class="image-text_20 flex-col justify-between">
<div class="image-wrapper_2 flex-col">
<img class="label_1" referrerpolicy="no-referrer" src="public/images/k6.png" />
</div>
<span class="text-group_6">紧急服务</span>
</div>
<span class="text_34">Emergency&nbsp;services</span>
</div>
<div class="box_15 flex-col">
<div class="section_4 flex-col" @click="openUrl(3)">
<div class="block_2 flex-col align-center">
<div class="image-wrapper_3 flex-col">
<img class="label_2" referrerpolicy="no-referrer" src="public/images/k2.png" />
<NuxtLink to="/list/87">
<div class="box_14 flex-col">
<div class="image-text_20 flex-col justify-between">
<div class="image-wrapper_2 flex-col">
<img class="label_1" referrerpolicy="no-referrer" src="public/images/k6.png" />
</div>
<span class="text-group_6">紧急服务</span>
</div>
<span class="text_35">医生团队</span>
<span class="paragraph_2">
Doctor&nbsp;team
<br />
<br />
</span>
<span class="text_34">Emergency&nbsp;services</span>
</div>
</div>
</NuxtLink>
<NuxtLink to="/list/-3">
<div class="box_15 flex-col">
<div class="section_4 flex-col">
<div class="block_2 flex-col align-center">
<div class="image-wrapper_3 flex-col">
<img class="label_2" referrerpolicy="no-referrer"
src="public/images/k2.png" />
</div>
</div>
<span class="text_35">医生团队</span>
<span class="paragraph_2">
Doctor&nbsp;team
<br />
<br />
</span>
</div>
</div>
</NuxtLink>
</div>
<div class="group_37 flex-col justify-between">
<div class="box_16 flex-col" @click="openUrl(4)">
<div class="image-wrapper_4 flex-col">
<img class="image_10" referrerpolicy="no-referrer" src="public/images/k3.png" />
<NuxtLink to="/list/34">
<div class="box_16 flex-col">
<div class="image-wrapper_4 flex-col">
<img class="image_10" referrerpolicy="no-referrer" src="public/images/k3.png" />
</div>
<span class="text_36">科室介绍</span>
<span class="text_37">Department&nbsp;Introduction</span>
</div>
<span class="text_36">科室介绍</span>
<span class="text_37">Department&nbsp;Introduction</span>
</div>
<img class="image_11" referrerpolicy="no-referrer" src="public/images/ks1.png" />
</NuxtLink>
</div>
</div>
</div>
@ -118,13 +132,15 @@
<img class="label_3" referrerpolicy="no-referrer" src="public/images/c2.png" />
<span class="text_38">通知公告</span>
</div>
<div class="flex-row align-center" @click="openUrl(5)"
style="border:1px solid #000;padding: 10px 20px;border-radius: 50px;cursor: pointer;">
<span class="text_39">查看更多</span>
<div class="group_22 flex-col">
<img src="public/images/right.png" />
<NuxtLink to="/list/90">
<div class="flex-row align-center"
style="border:1px solid #000;padding: 10px 20px;border-radius: 50px;cursor: pointer;">
<span class="text_39">查看更多</span>
<div class="group_22 flex-col">
<img src="public/images/right.png" />
</div>
</div>
</div>
</NuxtLink>
</div>
<div class="mt-[20px]">
<div v-for="(item, index) in msgList" class="cursor-pointer" @click="goDetail(item)">
@ -154,13 +170,15 @@
<img class="label_3" referrerpolicy="no-referrer" src="public/images/c1.png" />
<span class="text_38">医院动态</span>
</div>
<div class="flex-row align-center" @click="openUrl(6)"
style="cursor: pointer;border: 1px solid #000;padding: 10px 20px;border-radius: 50px;">
<span class="text_39">查看更多</span>
<div class="group_22 flex-col">
<img src="public/images/right.png" />
<NuxtLink to="/list/91">
<div class="flex-row align-center"
style="cursor: pointer;border: 1px solid #000;padding: 10px 20px;border-radius: 50px;">
<span class="text_39">查看更多</span>
<div class="group_22 flex-col">
<img src="public/images/right.png" />
</div>
</div>
</div>
</NuxtLink>
</div>
<div class="mt-[20px]">
<div v-for="(item, index) in dtList" class="cursor-pointer" @click="goDetail(item)">
@ -244,7 +262,7 @@
v-bind="swiperOptionsKK" @slideChange="onSlideChangeKK">
<swiper-slide v-for="(item, index) in bottomInfoList" @click="goDetail(item)">
<div class="list-items_1 flex-col cursor-pointer" :key="index">
<img src="public/images/t1.png">
<img style="width: 100%;max-height: 220px;object-fit: cover;" :src="item.news_image[0]">
<div class="text-wrapper_13 flex-col">
<span class="text_33">{{ item.news_title }}</span>
</div>
@ -284,7 +302,7 @@ import { useStore } from '~/store'
import { c } from 'naive-ui'
const { locale } = useI18n()
const searchContent = ref('');
const activeIndex = ref(0);
@ -421,7 +439,7 @@ const getDtList = () => {
const ysList = ref([]);
const ysTotal = ref(0);
const getYsList = () => {
$api.post("/api/Newsbx/index", {page: 1, pageSize: 9999 })
$api.post("/api/Newsbx/index", { page: 1, pageSize: 9999 })
.then((res: any) => {
console.log(res)
ysList.value = res.data.data.list;
@ -516,7 +534,7 @@ const goDetail = (item) => {
sessionStorage.setItem('group_id', '-2')
window.open(`/info/${item.id}`)
}
const goYsDetail = (item) =>{
const goYsDetail = (item) => {
sessionStorage.setItem('group_id', '-3')
window.open(`/ys_info/${item.id}`)
}

View File

@ -21,14 +21,14 @@
</div>
</div>
<div style="border-top: 1px solid rgba(238, 238, 238, 1);"></div>
<div class="py-[30px]">
<!-- <div class="py-[30px]">
<div class="">
<div class="">
<div>上一篇XXXXXXXXXXXXXXXXXXXXX</div>
<div class="mt-[10px]">下一篇暂无</div>
</div>
</div>
</div>
</div> -->
</div>
</div>
</template>

View File

@ -4,9 +4,9 @@
<div class="group_1">
<div class="flex section_4 flex-row justify-between">
<img class="thumbnail_1" referrerpolicy="no-referrer" src="public/images/home.png" />
<span class="text_13">您的位置首页>{{ id=='-3'?'医生团队':gory_name }}</span>
<span class="text_13">您的位置首页>{{ id == '-3' ? '医生团队' : gory_name }}</span>
</div>
<div class="text_14">{{ id=='-3'?'医生团队':gory_name }}</div>
<div class="text_14">{{ id == '-3' ? '医生团队' : gory_name }}</div>
</div>
</div>
<div class="flex box_7 flex-row align-center" v-for="(item, index) in newsList" :key="index"
@ -20,22 +20,25 @@
{{ item.news_title }}
</span>
<span class="text_16">
{{ item.news_auto }}
{{ item.news_titleshort }}
</span>
</div>
<img class="label_1" referrerpolicy="no-referrer" src="public/images/bs1.png" />
</div>
</div>
<div class="block_4 flex-col">
<div v-if="id!='-3'" class="flex text-wrapper_11 flex-col text-center">
<div v-if="id != '-3'" class="flex text-wrapper_11 flex-col text-center">
<span class="text_17">{{ formattedMonth(item.showtime) }}</span>
<span class="text_18">{{ formattedYearMonth(item.showtime) }}</span>
</div>
<div v-if="id=='-3'" class="flex text-wrapper_11 flex-col text-center">
<div v-if="id == '-3'" class="flex text-wrapper_11 flex-col text-center">
<span style="font-size: 22px;margin-top: 87px;color: #ffffff;">{{ item.news_titleshort }}</span>
</div>
</div>
</div>
<div class="text-gray-500 text-center h-[50px] mt-[30px]" v-if="newsList.length == 0">
暂未找到内容...
</div>
<div class="flex flex-row justify-center py-5">
<n-pagination v-model:page="page" :item-count="total" size="large" show-quick-jumper show-size-picker
@update:page="getPageList">
@ -60,25 +63,25 @@ onMounted(() => {
} else {
router.push('/list/' + id.value)
}
if(id.value=='-3'){
if (id.value == '-3') {
getYsGroupList()
}else{
} else {
getGroupList()
}
})
})
const newsList = ref([])
const page = ref(1)
const pageSize = ref(10)
const total = ref(0)
const gory_name=ref('');
const gory_name = ref('');
const getGroupList = () => {
$api.post("/api/news/index", { gory_id: id.value, page: page.value, pageSize: pageSize.value })
.then((res: any) => {
console.log(res)
newsList.value = res.data.data.list;
total.value = res.data.data.total_count;
gory_name.value=res.data.data.gory_name;
gory_name.value = res.data.data.gory_name;
//
window.scrollTo(0, 0)
})
@ -88,9 +91,9 @@ const getGroupList = () => {
}
const getPageList = (p) => {
page.value = p;
if(id.value=='-3'){
if (id.value == '-3') {
getYsGroupList()
}else{
} else {
getGroupList()
}
}
@ -102,7 +105,7 @@ const getYsGroupList = () => {
console.log(res)
newsList.value = res.data.data.list;
total.value = res.data.data.total_count;
gory_name.value=res.data.data.gory_name;
gory_name.value = res.data.data.gory_name;
//
window.scrollTo(0, 0)
})
@ -114,16 +117,17 @@ const getYsGroupList = () => {
const goDetail = (item: any) => {
//router.push(`/info/${item.id}`)
if(id.value=='-3'){
window.open( `/ys_info/${item.id}`)
}else{
window.open( `/info/${item.id}`)
if (id.value == '-3') {
window.open(`/ys_info/${item.id}`)
} else {
window.open(`/info/${item.id}`)
}
}
//
// D
const formattedMonth = (showtime) => {
const date = new Date(showtime);
return (date.getMonth() + 1).toString().padStart(2, "0");
var day = date.getDate().toString().padStart(2, "0");
return day;
};
// "YYYY.MM"

View File

@ -28,17 +28,19 @@
<div class="z-10 px-4 mt-4">
<div class="text-lg font-bold text-center">医院位置</div>
<div>
<baidu-map @ready="onBaiduMapReady" class="map" ak="OCHRqb6XXcOh9LH7H6c67c6xAoGxznQF" v="3.0" type="API"
:zoom="18" :center="centerVal">
<bm-marker @click="isShowInfoWindow = true" :position="{ lng: 114.221199, lat: 32.137085 }">
</bm-marker>
<bm-info-window @close="isShowInfoWindow = false" :show="isShowInfoWindow"
:position="{ lng: 114.221199, lat: 32.137085 }" :width="100" :max-width="300">
<div>
信阳第五人民医院
</div>
</bm-info-window>
</baidu-map>
<BaseMap class="map" ref="mapRef" api-key="OBPBZ-D7ECN-LQPFJ-SZ7WE-VJGTJ-FQFNI" :center="centerVal" :zoom="18">
<!-- <MultiMarker ref="markerRef" :geometries="geometries" :styles="styles" :options="options">
</MultiMarker> -->
<MultiMarker @click="onClick" ref="markerRef" :geometries="geometries" :styles="styles">
</MultiMarker>
<InfoWindow ref="infoWindowRef" @Closeclick="visible = false" :visible="visible" :position="centerVal" content="信阳市第五人民医院"
:options="{
offset: {
x: 0,
y: -20,
}
}"></InfoWindow>
</BaseMap>
</div>
</div>
</div>
@ -46,15 +48,24 @@
<script setup lang="ts">
import { onMounted } from 'vue';
import { BaiduMap, BmGeolocation, BmControl, BmInfoWindow, BmMarker } from 'vue-baidu-map-3x'
import { BaseMap, MultiMarker, InfoWindow } from 'tlbs-map-vue';
import $api from '@/service/webRequest'
const router = useRouter()
const isShowInfoWindow = ref(true);
//
const centerVal = ref({ lng: 114.221199, lat: 32.137085 });
const onBaiduMapReady = (map: any) => {
console.log(map);
}
const centerVal = ref({ lng: 114.214743, lat: 32.131004 });
const geometries = ref([
{ styleId: 'marker', position: { lng: 114.214743, lat: 32.131004 } },
]);
const infoWindowRef=ref(null);
const styles = ref({
marker: {
width: 20,
height: 30,
anchor: { x: 10, y: 30 },
},
});
const visible = ref(true);
onMounted(() => {
const coMobile = /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (coMobile) {
@ -64,6 +75,10 @@ onMounted(() => {
}
getHospitalInfo();
});
const onClick = () => {
console.log('点击了')
visible.value = true;
}
//
const hospitalInfo = ref({});
const getHospitalInfo = () => {

View File

@ -19,13 +19,15 @@
<div class="box_22 flex-col w-full mb-6">
<span class="text_59 text-xl">医院信息查询</span>
<span class="text_60 text-sm">Hospital&nbsp;information&nbsp;inquiry</span>
<div class="group_26 flex-col mt-2">
<input type="text" class="text_61" placeholder="请输入您要查询的内容">
<div class="group_26 flex-col mt-2">
<input type="text" class="text_61" v-model="searchContent" placeholder="请输入您要查询的内容">
<NuxtLink :to="'/phone_search/' + searchContent">
<div class="group_27 flex-col">
<div class="group_28 flex-col">
<img src="public/images/ser.png" />
</div>
</div>
</NuxtLink>
</div>
</div>
@ -222,9 +224,9 @@
@slideChange="onSlideChangeKK">
<swiper-slide v-for="(item, index) in bottomInfoList" @click="goDetail(item)">
<div class="list-items_1 flex-col p-2">
<img src="public/images/t1.png" class="w-full">
<img :src="item.news_image[0]" class="w-full h-[150px]">
<div class="text-wrapper_13 flex-col mt-2">
<span class="text_33 text-xs text-center">{{ item.news_title }}</span>
<span class="text_33 text-center one-line" style="font-size: 13px;">{{ item.news_title }}</span>
</div>
</div>
</swiper-slide>
@ -257,6 +259,7 @@ import { useStore } from '~/store'
import type { Swiper as SwiperType } from 'swiper'
const { locale } = useI18n()
const searchContent = ref('');
const activeIndex = ref(0);
@ -635,10 +638,10 @@ const goYsDetail = (item) => {
.box_26 {
margin-left: 0px;
;
height: auto;
padding: 20px 10px;
margin-top: 0px;
width: 100%;
}
.text_68 {

View File

@ -21,14 +21,14 @@
</div>
</div>
<div style="border-top: 1px solid rgba(238, 238, 238, 1);"></div>
<div class="py-[30px]">
<!-- <div class="py-[30px]">
<div class="">
<div class="">
<div>上一篇XXXXXXXXXXXXXXXXXXXXX</div>
<div class="mt-[10px]">下一篇暂无</div>
</div>
</div>
</div>
</div> -->
</div>
</div>
</template>

View File

@ -33,7 +33,9 @@
</div>
</div>
</div>
<div class="text-gray-500 text-center mt-[30px]" v-if="newsList.length == 0">
暂未找到内容...
</div>
<!-- 分页或底部区域 -->
<div class="flex flex-row justify-center my-4 py-4">
<n-pagination v-model:page="page" :item-count="total" :page-slot="7"
@ -110,9 +112,9 @@ const getPageList = (p) => {
const goDetail = (item: any) => {
//router.push(`/info/${item.id}`)
if (id.value == '-3') {
window.open(`/ys_info/${item.id}`)
window.open(`/phone_ys_info/${item.id}`)
} else {
window.open(`/info/${item.id}`)
window.open(`/phone_info/${item.id}`)
}
}
</script>

173
pages/phone_search/[id].vue Normal file
View File

@ -0,0 +1,173 @@
<template>
<div class="bg-[#ffffff]">
<!-- 头部导航和标题区域 -->
<div class="box_6 flex-col px-4 py-3">
<div class="group_1">
<div class="flex section_4 justify-start items-center mb-2">
<div>
<img class="thumbnail_1 w-6 h-6" referrerpolicy="no-referrer" src="public/images/home.png" />
</div>
<div class="text_13 text-sm mt-1 sm:mt-0">您的位置首页>信息搜索</div>
</div>
<div class="text_14 text-center text-xl font-bold my-3">信息搜索</div>
</div>
</div>
<!-- 公告列表 -->
<div class="flex box_7 flex-col px-4 py-2" v-for="(item, index) in newsList" :key="index"
@click="goDetail(item)">
<div class="flex image-text_7 flex-col sm:flex-row justify-between mb-4 border-b pb-4">
<img class="image_1 w-full sm:w-24 h-auto sm:h-24 object-cover mb-3 sm:mb-0"
referrerpolicy="no-referrer" :src="item.news_image[0]" />
<div class="flex group_13 flex-col justify-between flex-1 sm:ml-4">
<div class="flex text-group_7 flex-col justify-between">
<div class="text_15 text-base font-medium mb-2">
<span>{{ item.news_title }} </span>
<span style="font-size: 12px;color: #999;margin-left: 10px;">{{ item.news_key }}</span>
</div>
<div class="text_16 text-sm text-gray-600 line-clamp-3">
{{ item.news_auto }}
</div>
</div>
</div>
</div>
</div>
<div class="text-gray-500 text-center mt-[30px]" v-if="newsList.length == 0">
暂未找到内容...
</div>
<!-- 分页或底部区域 -->
<div class="flex flex-row justify-center my-4 py-4">
<n-pagination v-model:page="page" :item-count="total" :page-slot="7"
@update:page="getPageList"></n-pagination>
</div>
</div>
</template>
<script setup lang="ts">
import { NPagination } from 'naive-ui'
import { nextTick, ref } from 'vue'
import { useStore } from '~/store'
import $api from '@/service/webRequest'
const router = useRouter()
const route = useRoute()
const id = ref(route.params.id)
onMounted(() => {
//
document.documentElement.style.fontSize = '16px';
const coMobile = /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (coMobile) {
router.push('/phone_search/' + route.params.id)
} else {
router.push('/search/' + route.params.id)
}
getGroupList()
})
const newsList = ref([])
const page = ref(1)
const pageSize = ref(10)
const total = ref(0)
const gory_name = ref('');
const getGroupList = () => {
$api.post("/api/index/index", { content: id.value, page: page.value, pageSize: pageSize.value })
.then((res: any) => {
console.log(res)
newsList.value = res.data.data.list;
total.value = res.data.data.total_count;
//
window.scrollTo(0, 0)
})
.catch((err) => {
console.dir(err)
})
}
const getPageList = (p) => {
page.value = p;
getGroupList()
}
const goDetail = (item: any) => {
//router.push(`/info/${item.id}`)
window.open(`/phone_info/${item.id}`)
}
</script>
<style scoped>
@import "@/assets/css/common.scss";
@import "@/assets/css/list.css";
/* 手机端适配样式 */
@media (max-width: 768px) {
.box_6,
.box_7 {
padding: 0px;
}
.text_14 {
font-size: 1.25rem;
margin-top: 30px;
text-align: left;
}
.text_15 {
font-size: 1rem;
}
.text_16 {
font-size: 0.875rem;
}
.group_1 {
padding-left: 30px;
}
.section_4 {
width: 100%;
height: auto;
}
.image-text_7 {
width: 100%;
margin: 0px;
height: 100%;
}
.image_1 {
width: 100%;
}
.box_7 {
height: auto;
}
.text-group_7 {
width: auto;
height: auto;
}
.text_15 {
width: 100%;
}
.text_16 {
width: 100%;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
margin-top: 10px;
}
.group_13 {
margin: 0px;
padding-left: 10px;
}
}
::v-deep .n-pagination .n-pagination-item:not(.n-pagination-item--disabled).n-pagination-item--active {
color: #1FC4C2;
border: 1px solid #1FC4C2;
}
</style>

121
pages/search/[id].vue Normal file
View File

@ -0,0 +1,121 @@
<template>
<div class="bg-[#ffffff]">
<div class="box_6 flex-col">
<div class="group_1">
<div class="flex section_4 flex-row justify-between">
<img class="thumbnail_1" referrerpolicy="no-referrer" src="public/images/home.png" />
<span class="text_13">您的位置首页>信息搜索</span>
</div>
<div class="text_14">信息搜索</div>
</div>
</div>
<div>
<div class="flex box_7 flex-row align-center" v-for="(item, index) in newsList" :key="index"
@click="goDetail(item)">
<div class="flex block_3 flex-col"></div>
<div class="flex image-text_7 flex-row justify-between">
<img class="image_1" referrerpolicy="no-referrer" :src="item.news_image[0]" />
<div class="flex group_13 flex-col justify-between">
<div class="flex text-group_7 flex-col justify-between">
<span class="text_15 text-ellipsis font-bold">
{{ item.news_title }}
</span>
<span class="text_16">
{{ item.news_auto }}
</span>
</div>
<img class="label_1" referrerpolicy="no-referrer" src="public/images/bs1.png" />
</div>
</div>
<div class="block_4 flex-col">
<div v-if="id != '-3'" class="flex text-wrapper_11 flex-col text-center">
<span class="text_17">{{ formattedMonth(item.showtime) }}</span>
<span class="text_18">{{ formattedYearMonth(item.showtime) }}</span>
</div>
<div v-if="id == '-3'" class="flex text-wrapper_11 flex-col text-center">
<span style="font-size: 22px;margin-top: 87px;color: #ffffff;">{{ item.news_titleshort }}</span>
</div>
</div>
</div>
<div class="text-gray-500 text-center h-[50px] mt-[30px]" v-if="newsList.length == 0">
暂未找到内容...
</div>
</div>
<div class="flex flex-row justify-center py-5">
<n-pagination v-model:page="page" :item-count="total" size="large" show-quick-jumper show-size-picker
@update:page="getPageList">
</n-pagination>
</div>
</div>
</template>
<script setup lang="ts">
import { NPagination } from 'naive-ui'
import { nextTick, ref } from 'vue'
import { useStore } from '~/store'
import $api from '@/service/webRequest'
const router = useRouter()
const route = useRoute()
const id = ref(route.params.id)
onMounted(() => {
document.documentElement.style.fontSize = '16px';
const coMobile = /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (coMobile) {
router.push('/phone_search/' + id.value)
} else {
router.push('/search/' + id.value)
}
getGroupList()
})
const newsList = ref([])
const page = ref(1)
const pageSize = ref(10)
const total = ref(0)
const gory_name = ref('');
const getGroupList = () => {
$api.post("/api/index/index", { content: id.value, page: page.value, pageSize: pageSize.value })
.then((res: any) => {
console.log(res)
newsList.value = res.data.data.list;
total.value = res.data.data.total_count;
//
window.scrollTo(0, 0)
})
.catch((err) => {
console.dir(err)
})
}
const getPageList = (p) => {
page.value = p;
getGroupList()
}
const goDetail = (item: any) => {
//router.push(`/info/${item.id}`)
window.open(`/info/${item.id}`)
}
//
const formattedMonth = (showtime) => {
const date = new Date(showtime);
return (date.getMonth() + 1).toString().padStart(2, "0");
};
// "YYYY.MM"
const formattedYearMonth = (showtime) => {
const date = new Date(showtime);
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, "0");
return `${year}.${month}`;
};
</script>
<style scoped>
@import "@/assets/css/common.scss";
@import "@/assets/css/list.css";
::v-deep .n-pagination .n-pagination-item:not(.n-pagination-item--disabled).n-pagination-item--active {
color: #1FC4C2;
border: 1px solid #1FC4C2;
}
</style>

View File

@ -3,12 +3,13 @@ import { handleError } from './handleError'
function createRequestInstance(getServerUrl: () => string): AxiosInstance {
//获取域名
const serverUrl = 'http://admin.xysdwrmyy.cn';
const serverUrl = 'https://xysdwrmyy.cn';
//const serverUrl = '/api/';
//console.log(serverUrl);
const instance = axios.create({
timeout: 1000 * 60 * 5, // 超时时间
withCredentials: true, // 允许跨域携带cookie
baseURL: serverUrl, // 请求地址
baseURL:serverUrl, // 请求地址
})
instance.interceptors.response.use(