10 changed files with 342 additions and 129 deletions
-
BINsrc/assets/medical/2.png
-
BINsrc/assets/medical/case/1.png
-
BINsrc/assets/medical/case/2.png
-
BINsrc/assets/medical/param/1.png
-
10src/components/Medical/Header/index.vue
-
31src/components/Medical/HeaderLine/index.vue
-
12src/components/Medical/Info/index.vue
-
14src/components/Medical/Parameters/index.vue
-
158src/views/MedicalDetail copy/index.vue
-
244src/views/MedicalDetail/index.vue
After Width: 1920 | Height: 440 | Size: 289 KiB |
After Width: 325 | Height: 221 | Size: 44 KiB |
After Width: 790 | Height: 440 | Size: 161 KiB |
After Width: 1540 | Height: 620 | Size: 608 KiB |
@ -0,0 +1,31 @@ |
|||||
|
<template> |
||||
|
<div class="header_line_container"> |
||||
|
<p class="title">{{ title }}</p> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script setup> |
||||
|
const props = defineProps({ |
||||
|
title: { |
||||
|
type: String, |
||||
|
}, |
||||
|
}) |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.header_line_container { |
||||
|
width: 100%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
padding: 61px 0 40px 0; |
||||
|
.title { |
||||
|
font-family: Source Han Sans; |
||||
|
font-size: 26px; |
||||
|
font-weight: 500; |
||||
|
line-height: normal; |
||||
|
letter-spacing: 0em; |
||||
|
color: #000000; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,12 @@ |
|||||
|
<template> |
||||
|
<div class="info_container"></div> |
||||
|
</template> |
||||
|
|
||||
|
<script setup></script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.info_container { |
||||
|
height: 620px; |
||||
|
background: #f9f9f9; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,14 @@ |
|||||
|
<template> |
||||
|
<div class="product_param_container">123</div> |
||||
|
</template> |
||||
|
|
||||
|
<script setup></script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.product_param_container { |
||||
|
background: url(../../../assets/medical/param/1.png) no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
height: 620px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,158 @@ |
|||||
|
<template> |
||||
|
<div class="medical_container"> |
||||
|
<Header :active="true" /> |
||||
|
<div |
||||
|
class="card" |
||||
|
v-for="(item, index) in case_detail_list[1]" |
||||
|
:key="index" |
||||
|
@click="showDetailModal(1, index)" |
||||
|
> |
||||
|
<div class="left"> |
||||
|
<div v-for="(ite, ind) in swiperList[index].slice(0, 3)" :key="ind"> |
||||
|
<img class="img" :src="ite.picUrl" alt="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="right"> |
||||
|
<h1 class="title">{{ item.title }}</h1> |
||||
|
<div class="desc" v-html="item.detailList?.topText"></div> |
||||
|
<div class="btn_wrap"> |
||||
|
<div class="btn"> |
||||
|
<span class="text">查看详情</span> |
||||
|
<svg |
||||
|
xmlns="http://www.w3.org/2000/svg" |
||||
|
xmlns:xlink="http://www.w3.org/1999/xlink" |
||||
|
fill="none" |
||||
|
version="1.1" |
||||
|
width="20" |
||||
|
height="4" |
||||
|
viewBox="0 0 20 4" |
||||
|
> |
||||
|
<g> |
||||
|
<path |
||||
|
d="M19.9922,3.41357C20.0475,3.71869,19.8013,3.998,19.4754,4L0.524717,4C0.234187,4.00028,-0.00116205,3.77604,0.00000432898,3.50006C0.00000432898,3.2236,0.238414,2.99963,0.524717,2.99963L18.3818,2.99963L16.1219,0.851393C15.9164,0.656325,15.9171,0.339718,16.1235,0.145482C16.3287,-0.0494938,16.6655,-0.0469936,16.8661,0.143982L19.8464,2.97713C19.9717,3.09611,20.0201,3.25959,19.9922,3.41357Z" |
||||
|
fill="#FFFFFF" |
||||
|
fill-opacity="1" |
||||
|
/> |
||||
|
</g> |
||||
|
</svg> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<DetailModal |
||||
|
v-if="showModalVisible" |
||||
|
:hiddenDetailModal="hiddenDetailModal" |
||||
|
:productInfo="productInfo" |
||||
|
/> |
||||
|
</div> |
||||
|
<Bottom /> |
||||
|
</template> |
||||
|
|
||||
|
<script setup> |
||||
|
import DetailModal from 'cpns/design/DetailModal' |
||||
|
import Header from 'cpns/Medical/Header' |
||||
|
import Bottom from 'cpns/NewBottom.vue' |
||||
|
import { ref } from 'vue' |
||||
|
import { case_detail_list } from '@/mock/case_industry' |
||||
|
import { swiperList } from '@/mock/case_detail/01.js' |
||||
|
import { onMounted } from 'vue' |
||||
|
|
||||
|
onMounted(() => { |
||||
|
document.body.scrollTop = document.documentElement.scrollTop = 0 |
||||
|
}) |
||||
|
const showModalVisible = ref(false) |
||||
|
const productInfo = ref({}) |
||||
|
|
||||
|
const showDetailModal = (id1, id2) => { |
||||
|
// 取消html的滚动条 |
||||
|
const rootTag = document.getElementById('iflytop') |
||||
|
rootTag.style.overflow = 'hidden' |
||||
|
rootTag.style.height = '100%' |
||||
|
showModalVisible.value = true |
||||
|
// 根据activeTab和id确定详情数据 |
||||
|
productInfo.value = case_detail_list[id1][id2] |
||||
|
} |
||||
|
|
||||
|
const hiddenDetailModal = () => { |
||||
|
// 恢复html的滚动条 |
||||
|
const rootTag = document.getElementById('iflytop') |
||||
|
rootTag.style['overflow-y'] = 'scroll' |
||||
|
rootTag.style['overflow-x'] = 'hidden' |
||||
|
rootTag.style.height = 'auto' |
||||
|
productInfo.value = {} |
||||
|
showModalVisible.value = false |
||||
|
} |
||||
|
|
||||
|
const showModal = () => {} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.medical_container { |
||||
|
padding: 123px 67px 67px 67px; |
||||
|
min-height: 100vh; |
||||
|
background: #f6f6f6; |
||||
|
.card { |
||||
|
background: #ffffff; |
||||
|
padding: 36px 64px 36px 36px; |
||||
|
display: flex; |
||||
|
margin-bottom: 40px; |
||||
|
.left { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
.img { |
||||
|
width: 278px; |
||||
|
height: 278px; |
||||
|
background: #d8d8d8; |
||||
|
margin-right: 40px; |
||||
|
object-fit: cover; |
||||
|
} |
||||
|
} |
||||
|
.right { |
||||
|
flex: 1; |
||||
|
.title { |
||||
|
padding-bottom: 33px; |
||||
|
border-bottom: 1px solid #d3d3d3; |
||||
|
font-family: Source Han Sans; |
||||
|
font-size: 36px; |
||||
|
font-weight: bold; |
||||
|
line-height: normal; |
||||
|
letter-spacing: 0.02em; |
||||
|
font-feature-settings: 'kern' on; |
||||
|
color: #000000; |
||||
|
} |
||||
|
.desc { |
||||
|
padding-top: 26px; |
||||
|
padding-bottom: 24px; |
||||
|
font-family: Source Han Sans; |
||||
|
font-size: 18px; |
||||
|
font-weight: normal; |
||||
|
line-height: normal; |
||||
|
letter-spacing: 0.04em; |
||||
|
font-feature-settings: 'kern' on; |
||||
|
color: #d3d3d3; |
||||
|
} |
||||
|
.btn_wrap { |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
.btn { |
||||
|
padding: 10px 20px; |
||||
|
border-radius: 383px; |
||||
|
background: #000000; |
||||
|
font-family: Source Han Sans; |
||||
|
font-size: 16px; |
||||
|
font-weight: normal; |
||||
|
line-height: normal; |
||||
|
letter-spacing: 0.04em; |
||||
|
font-feature-settings: 'kern' on; |
||||
|
color: #ffffff; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
.text { |
||||
|
margin-right: 11px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue