@ -0,0 +1,134 @@ | |||||
<template> | |||||
<div class="aboutmessage"> | |||||
<div class="about position-relative"> | |||||
<div class="message position-absolute"> | |||||
<h2 class="color-fff font-bold">About Us</h2> | |||||
<div class="color-fff font-700" :class="mobileShow ? 'font-size-14 aboutitem1' : 'font-size-20 aboutitem'"> | |||||
<strong>· </strong> | |||||
<p class="content"> | |||||
MONTIERI Group is an one-stop service solution for international Hotel and real estate project | |||||
development. Company was established in 2002, aims to provide one-stop solutions from design to | |||||
product. | |||||
We have developed branches in many cities in China,USA and Canada. We have successfully done many | |||||
international projects globally. | |||||
</p> | |||||
</div> | |||||
<div class="color-fff font-700 aboutitem" | |||||
:class="mobileShow ? 'font-size-14 aboutitem1' : 'font-size-20 aboutitem'"> | |||||
<strong>· </strong> | |||||
<p class="content"> | |||||
We have more than 17 years overseas experience, professional management and operation experience. | |||||
The critical point is working backwards in mind, seeking and achieving value for every project and | |||||
client. Then, working from achieving value to budget, time and quality, back to create a feasible | |||||
concept. MONTIERI also invested in real estate projects in California and Canada。 | |||||
</p> | |||||
</div> | |||||
<span class="color-fff btn position-absolute" :class="mobileShow ? 'font-size-20' : 'font-size-26'" | |||||
@click="goPage">Back</span> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import router from '../router'; | |||||
import { onMounted, ref } from 'vue'; | |||||
const goPage = () => router.back() | |||||
let mobileShow = ref<any>(false) | |||||
onMounted(() => { | |||||
if (document.body.offsetWidth < 960) { | |||||
mobileShow.value = true | |||||
} else { | |||||
mobileShow.value = false | |||||
} | |||||
window.addEventListener('resize', function () { | |||||
if (document.body.offsetWidth < 960) { | |||||
mobileShow.value = true | |||||
} else { | |||||
mobileShow.value = false | |||||
} | |||||
}) | |||||
}) | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.aboutmessage { | |||||
box-sizing: border-box; | |||||
.about { | |||||
// height: 42vw; | |||||
height: 100%; | |||||
background: url("../assets/img/aboutus.jpg") no-repeat; | |||||
background-size: cover; | |||||
background-position: center; | |||||
box-sizing: border-box; | |||||
.message { | |||||
box-sizing: border-box; | |||||
background: rgba(137, 144, 153, 0.35); | |||||
top: 50%; | |||||
transform: translateY(-50%); | |||||
height: 50%; | |||||
padding: 2vw 3vw; | |||||
overflow: hidden; | |||||
height: 50%; | |||||
display: flex; | |||||
flex-direction: column; | |||||
.aboutitem { | |||||
margin-top: 2vw; | |||||
display: flex; | |||||
.content { | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
display: -webkit-box; | |||||
-webkit-line-clamp: 4; | |||||
-webkit-box-orient: vertical; | |||||
display: -moz-box; | |||||
-moz-line-clamp: 4; | |||||
-moz-box-orient: vertical; | |||||
word-wrap: break-word; | |||||
word-break: break-all; | |||||
white-space: normal; | |||||
} | |||||
} | |||||
.aboutitem1 { | |||||
margin-top: 2vw; | |||||
display: flex; | |||||
.content { | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
display: -webkit-box; | |||||
-webkit-line-clamp: 6; | |||||
-webkit-box-orient: vertical; | |||||
display: -moz-box; | |||||
-moz-line-clamp: 6; | |||||
-moz-box-orient: vertical; | |||||
word-wrap: break-word; | |||||
word-break: break-all; | |||||
white-space: normal; | |||||
} | |||||
} | |||||
.btn { | |||||
cursor: pointer; | |||||
bottom: 1vw; | |||||
left: 50%; | |||||
transform: translateX(-50%); | |||||
} | |||||
.btn:hover { | |||||
color: rgb(255, 192, 0); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
@media screen and (width: 960px) {} | |||||
</style> |
@ -0,0 +1,172 @@ | |||||
<template> | |||||
<div class="allcases"> | |||||
<div class="cases"> | |||||
<div class="cases-item" v-for="item, index in caseList" :key="index" @click="goPage(`/projectcase/${index}`)"> | |||||
<div class="item-img"> | |||||
<img :src="item.url" :alt="item.title"> | |||||
<span class="imgbgc"></span> | |||||
</div> | |||||
<h3>{{ item.title }}</h3> | |||||
<div class="other"> | |||||
<span class="other-item"> | |||||
<img src="../assets/img/i20.png" alt="location"> | |||||
<p>{{ item.location }}</p> | |||||
</span> | |||||
<span class="other-item"> | |||||
<img src="../assets/img/i21.png" alt="units"> | |||||
<p>{{ item.units }} Units</p> | |||||
</span> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import router from '../router'; | |||||
import { onMounted, ref } from 'vue' | |||||
let caseList = Array<any>( | |||||
{ | |||||
title: 'Fairmont Empress Hotel', | |||||
location: 'Victoria, Canada', | |||||
units: '300+', | |||||
url: '/src/assets/img/cases/01.jpg' | |||||
}, | |||||
{ | |||||
title: 'Monsaraz Hilton', | |||||
location: 'San Diego,USA', | |||||
units: '200+', | |||||
url: '/src/assets/img/cases/02.jpg' | |||||
}, | |||||
{ | |||||
title: 'Canopy By Hilton San Francisco Soma Hotel', | |||||
location: 'San Fransisco,USA', | |||||
units: '200+', | |||||
url: '/src/assets/img/cases/03.jpg' | |||||
}, | |||||
{ | |||||
title: 'Lofts on Laurel', | |||||
location: 'San Diego,USA', | |||||
units: '20+', | |||||
url: '/src/assets/img/cases/04.jpg' | |||||
}, | |||||
{ | |||||
title: 'State&Oak Street', | |||||
location: 'Carlsbad,CA,USA', | |||||
units: '20+', | |||||
url: '/src/assets/img/cases/05.jpg' | |||||
}, | |||||
{ | |||||
title: '989 Johson Street', | |||||
location: 'Victoria, Canada', | |||||
units: '180+', | |||||
url: '/src/assets/img/cases/06.jpg' | |||||
}, | |||||
{ | |||||
title: 'Tarrace Lofts', | |||||
location: 'Vista, California, USA', | |||||
units: '20+', | |||||
url: '/src/assets/img/cases/07.jpg' | |||||
}, | |||||
{ | |||||
title: 'Ocean 17', | |||||
location: 'Carlsbad,CA,USA', | |||||
units: '17', | |||||
url: '/src/assets/img/cases/08.jpg' | |||||
}, | |||||
) | |||||
const goPage = (url: any) => { | |||||
document.documentElement.scrollTop = 0 | |||||
router.push({ | |||||
path: url | |||||
}) | |||||
} | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.allcases { | |||||
margin-top: 1rem; | |||||
box-sizing: border-box; | |||||
margin: 0; | |||||
padding: 0; | |||||
.cases { | |||||
box-sizing: border-box; | |||||
width: 100%; | |||||
padding: 2rem; | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
.cases-item { | |||||
width: 30%; | |||||
margin-bottom: 2rem; | |||||
margin-right: 3.5rem; | |||||
.item-img { | |||||
position: relative; | |||||
width: 100%; | |||||
height: 75%; | |||||
margin-bottom: 0.5rem; | |||||
overflow: hidden; | |||||
.imgbgc { | |||||
position: absolute; | |||||
bottom: 0; | |||||
width: 100%; | |||||
height: 0.5rem; | |||||
z-index: 2; | |||||
left: 0; | |||||
background-color: #fa8106; | |||||
} | |||||
img { | |||||
width: 100%; | |||||
height: 100%; | |||||
transition: 0.5s linear; | |||||
} | |||||
img:hover { | |||||
scale: 1.2; | |||||
} | |||||
} | |||||
.other { | |||||
display: flex; | |||||
flex-direction: column; | |||||
align-items: left; | |||||
margin-top: 1rem; | |||||
border-top: 1px solid #888; | |||||
padding: 0.5rem 0 0 0; | |||||
.other-item { | |||||
display: flex; | |||||
font-size: 14px; | |||||
color: #888; | |||||
img { | |||||
margin-right: 1rem; | |||||
} | |||||
} | |||||
.other-item:first-child { | |||||
margin: 0.5rem 0; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
@media screen and (max-width: 960px) { | |||||
.allcases{ | |||||
.cases{ | |||||
margin-top: 1rem; | |||||
.cases-item{ | |||||
width: 100%; | |||||
margin-right: 0; | |||||
margin-bottom: 3rem; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,96 @@ | |||||
<template> | |||||
<div class="allproduct"> | |||||
<div class="product"> | |||||
<div class="product-img position-relative" v-for="item, index in allList" :key="index" @click="goPage(`/productcenter/${item.name}`)"> | |||||
<img :src="item.url" :alt="item.name"> | |||||
<span class="imgtitle position-absolute color-fff">{{ item.name }}</span> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import router from '../router'; | |||||
let allList = Array<any>( | |||||
{ url: '/src/assets/img/center01.jpg', name: 'Door' }, | |||||
{ url: '/src/assets/img/center02.jpg', name: 'Window' }, | |||||
{ url: '/src/assets/img/center03.jpg', name: 'Railing' }, | |||||
{ url: '/src/assets/img/center04.jpg', name: 'Building Materials' }, | |||||
{ url: '/src/assets/img/center05.jpg', name: 'Kitchen Cabinets with Customization' }, | |||||
{ url: '/src/assets/img/center06.jpg', name: 'Kitchen faucet and sink' }, | |||||
{ url: '/src/assets/img/center07.jpg', name: 'Sanitary Ware' }, | |||||
) | |||||
const goPage = (url: any) => { | |||||
document.documentElement.scrollTop = 0 | |||||
router.push(url) | |||||
} | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.allproduct { | |||||
width: 100%; | |||||
margin-top: 1rem; | |||||
.product { | |||||
box-sizing: border-box; | |||||
padding: 1rem; | |||||
width: 100%; | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
.product-img { | |||||
width: 23%; | |||||
height: 35vw; | |||||
overflow: hidden; | |||||
margin-right: 2rem; | |||||
margin-bottom: 2rem; | |||||
img { | |||||
width: 100%; | |||||
height: 100%; | |||||
transition: 0.5s linear; | |||||
} | |||||
.imgtitle { | |||||
width: 100%; | |||||
bottom: 0; | |||||
left: 0; | |||||
height: 3rem; | |||||
background: rgba(0, 0, 0, 0.3); | |||||
font-size: 26px; | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
} | |||||
img:hover { | |||||
scale: 1.2; | |||||
} | |||||
img:hover+.imgtitle { | |||||
background: #fa8106; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
@media screen and (max-width: 960px) { | |||||
.allproduct { | |||||
margin-top: 2rem; | |||||
.product { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.product-img { | |||||
width: 100%; | |||||
height: 125vw; | |||||
img { | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}</style> |
@ -1,31 +0,0 @@ | |||||
<template> | |||||
<div class="breadcrumb d-flex flex-nowrap"> | |||||
<div class="item" v-for="(item,index) in breadcrumbList" :key="index"> | |||||
<a :href="item.href"><h5 class="color-666 d-inline-block font-size-16">{{ item.title }}</h5><span v-if="index != listLength" class="mx-1 color-666">/</span></a> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import {onMounted, ref} from "vue"; | |||||
let breadcrumbList = ref<any>( | |||||
[ | |||||
{href:'/',title:'Home'}, | |||||
{href:'/',title:'Case Detail'} | |||||
] | |||||
) | |||||
let listLength = ref<number>(0) | |||||
onMounted(async ()=>{ | |||||
listLength.value = breadcrumbList.value.length - 1 | |||||
}) | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.breadcrumb{ | |||||
.item:hover h5{ | |||||
color: #fa8106; | |||||
} | |||||
} | |||||
</style> |
@ -1,83 +0,0 @@ | |||||
<template> | |||||
<div class="m-auto case-details" :class="mobileShow?'width-90':'width-80'"> | |||||
<Breadcrumbs></Breadcrumbs> | |||||
<div class="case-dateils"> | |||||
<div class="switch-menu d-flex flex-nowrap"> | |||||
<div class="s30 width-50 text-center" :class="selectIndex === index?'selected':''" v-for="(item,index) in switchList" @click="selectMethods(index)" :key="index"><span>{{ item }}</span></div> | |||||
</div> | |||||
<div class="case-content"> | |||||
<div v-if="selectIndex === 0"> | |||||
<img src="../assets/img/projectCase.png" class="width-100 mt-2" alt="Project Case"> | |||||
</div> | |||||
<div v-else-if="selectIndex === 1"> | |||||
<h3 class="font-size-18 color-343434 mb-1">Quality</h3> | |||||
<p class="line-height-2 font-size-16 color-343434">Striving for perfection is our philosophy.</p> | |||||
<p class="line-height-2 font-size-16 color-343434">Owing to its European quality control standards, automatic HOMAG product lines,integrated design and production software, and best raw materials from world well-known suppliers. OPPEIN can deliver excellent products in line with German quality. | |||||
</p> | |||||
<p class="line-height-2 font-size-16 color-343434">We have implemented a complex quality system to review all material and standard operating procedures are audited regularly to ensure the standards are met.. | |||||
</p> | |||||
<img src="../assets/img/projectCase1.png" class="width-100 mt-2" alt="Project Case"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import Breadcrumbs from "./Breadcrumbs.vue" | |||||
import {onMounted, ref} from "vue"; | |||||
let screenWidth = ref<any>('') | |||||
let mobileShow = ref<any>(false) | |||||
let selectIndex = ref<number>(1) | |||||
let slidesPerView = ref<number>(3) | |||||
let switchList = ref<any>(['DETAILS','QUALITY']) | |||||
onMounted(async ()=>{ | |||||
screenWidth.value = document.body.offsetWidth; | |||||
if(screenWidth.value<800){ | |||||
mobileShow.value = true | |||||
slidesPerView.value = 1 | |||||
}else if(screenWidth.value<1000){ | |||||
mobileShow.value = true | |||||
slidesPerView.value = 2 | |||||
}else{ | |||||
mobileShow.value = false | |||||
slidesPerView.value = 3 | |||||
} | |||||
window.addEventListener('resize',function(){ | |||||
screenWidth.value = document.body.offsetWidth; | |||||
if(screenWidth.value<800){ | |||||
mobileShow.value = true | |||||
slidesPerView.value = 1 | |||||
}else if(screenWidth.value<1000){ | |||||
mobileShow.value = true | |||||
slidesPerView.value = 2 | |||||
}else{ | |||||
mobileShow.value = false | |||||
slidesPerView.value = 3 | |||||
} | |||||
}) | |||||
}) | |||||
const selectMethods = (index:number) => { | |||||
selectIndex.value = index | |||||
} | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.s30{ | |||||
font-size: calc(30 * 100vw / 1920); | |||||
span{ | |||||
transition: all .5s; | |||||
cursor: pointer; | |||||
} | |||||
} | |||||
.s30 span:hover{ | |||||
color: #fa8106; | |||||
border-bottom: 2px solid #fa8106; | |||||
} | |||||
.selected{ | |||||
span{ | |||||
color: #fa8106; | |||||
border-bottom: 2px solid #fa8106; | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,336 @@ | |||||
<template> | |||||
<div> | |||||
<div class="procurement align-items-center width-80 m-auto"> | |||||
<div class="pa-2 border-box"> | |||||
<div class="casemessage"> | |||||
<div class="casemessage-left"> | |||||
<p class="font-size-26"><strong>{{ casemessage.title }}</strong></p> | |||||
<div class="address-year" :class="mobileShow ? 'font-size-12' : 'font-size-16'"> | |||||
<span class="address"> | |||||
<i class="iconfont icon-zuobiao" :class="mobileShow ? 'font-size-12' : 'font-size-16'"></i> | |||||
<span>{{ casemessage.country }}</span> | |||||
</span> | |||||
<span class="year"> | |||||
<i class="iconfont icon-shijian" :class="mobileShow ? 'font-size-12' : 'font-size-16'"></i> | |||||
<span>{{ casemessage.year }}</span> | |||||
</span> | |||||
</div> | |||||
<div class="message" :class="mobileShow ? 'font-size-12' : 'font-size-16'"> | |||||
<p class="item"><strong>Address: </strong>{{ casemessage.address }}</p> | |||||
<p class="item"><strong>Type: </strong>{{ casemessage.type }}</p> | |||||
<p class="item"><strong>Solutions: </strong>{{ casemessage.solutions }}</p> | |||||
<p class="item"><strong>Unites: </strong>{{ casemessage.unites }}</p> | |||||
</div> | |||||
<div class="share" :class="mobileShow ? 'font-size-16 mb-2 mt-1' : 'sont-size-22'"> | |||||
<span><strong>Share To: </strong></span> | |||||
</div> | |||||
</div> | |||||
<div class="casemessage-right" :class="mobileShow ? 'width-100' : 'width-70'"> | |||||
<img :src="casemessage.img[0].details" :alt="casemessage.img[0].name" class="width-100 imgcase"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="details"> | |||||
<h2><strong>DETAILS</strong></h2> | |||||
<img :src="casemessage.img[1].details" :alt="casemessage.img[1].name" class="img" :class="mobileShow ? 'width-70' : 'width-50'"> | |||||
</div> | |||||
<div class="btn position-relative" :class="mobileShow ? 'font-size-16' : 'font-size-22'" @click="goPage">Back</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import router from '../router'; | |||||
import { watch, reactive, ref, onMounted } from 'vue' | |||||
let casemessage = reactive<any>({}) | |||||
watch(() => router.currentRoute.value.params.name, (newValue: any) => { | |||||
if (newValue == '0') { | |||||
casemessage = { | |||||
title: 'MONTIER Canada Hotel Project - Fairmont Empress Hotel', | |||||
country: 'Victoria, Canada', | |||||
year: 2020, | |||||
address: '721 Government St, Victoria, BC V8W 1W5,Canada', | |||||
type: 'Hotel', | |||||
solutions: 'Furniture,Fixtures&Equipment, lights fixture', | |||||
unites: '300+', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/01.jpg', name: 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' }, | |||||
{ details: '/src/assets/img/cases/001.jpg', name: 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' } | |||||
] | |||||
} | |||||
} else if (newValue == '1') { | |||||
casemessage = { | |||||
title: 'Monsaraz Hilton', | |||||
country: 'San Diego,USA', | |||||
year: 2021, | |||||
address: '1451 Rosecrans St, San Diego, CA 92106,USA', | |||||
type: 'Hotel', | |||||
solutions: 'Furniture,Fixtures&Equipment, doors', | |||||
unites: '200+', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/02.jpg', name: 'Monsaraz Hilton' }, | |||||
{ details: '/src/assets/img/cases/002.jpg', name: 'Monsaraz Hilton' } | |||||
] | |||||
} | |||||
} else if (newValue == '2') { | |||||
casemessage = { | |||||
title: 'Canopy By Hilton San Francisco Soma Hotel', | |||||
country: 'San Fransisco,USA', | |||||
year: 2018, | |||||
address: '333 O\'Farrell St #101, San Francisco, CA 94102,USA', | |||||
type: 'Hotel', | |||||
solutions: 'Furniture,Fixtures&Equipment,lights fixture', | |||||
unites: '200+', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/03.jpg', name: 'Canopy By Hilton San Francisco Soma Hotel' }, | |||||
{ details: '/src/assets/img/cases/003.jpg', name: 'Canopy By Hilton San Francisco Soma Hotel' } | |||||
] | |||||
} | |||||
} else if (newValue == '3') { | |||||
casemessage = { | |||||
title: 'Lofts on Laurel', | |||||
country: 'San Diego,USA', | |||||
year: 2021, | |||||
address: '2466 First Ave., San Diego, CA 92101', | |||||
type: 'Condo', | |||||
solutions: 'Building Materials', | |||||
unites: '20+', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/04.jpg', name: 'Lofts on Laurel' }, | |||||
{ details: '/src/assets/img/cases/004.jpg', name: 'Lofts on Laurel' } | |||||
] | |||||
} | |||||
} else if (newValue == '4') { | |||||
casemessage = { | |||||
title: 'State&Oak Street', | |||||
country: 'Carlsbad,CA,USA', | |||||
year: 2020, | |||||
address: '3088 State St, Carlsbad, CA 92008', | |||||
type: 'Condo', | |||||
solutions: 'Building Materials', | |||||
unites: '20+', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/05.jpg', name: 'State&Oak Street' }, | |||||
{ details: '/src/assets/img/cases/005.jpg', name: 'State&Oak Street' } | |||||
] | |||||
} | |||||
} else if (newValue == '5') { | |||||
casemessage = { | |||||
title: '989 Johson Street', | |||||
country: 'Victoria, Canada', | |||||
year: 2020, | |||||
address: '989 Johnson StVictoria, BC V8V 3N7', | |||||
type: 'Condo', | |||||
solutions: 'Building Materials', | |||||
unites: '180+', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/06.jpg', name: '989 Johson Street' }, | |||||
{ details: '/src/assets/img/cases/006.jpg', name: '989 Johson Street' } | |||||
] | |||||
} | |||||
} else if (newValue == '6') { | |||||
casemessage = { | |||||
title: 'Tarrace Lofts', | |||||
country: 'Vista, California, USA', | |||||
year: 2020, | |||||
address: '516 S. Santa Fe Avenue,Vista,California', | |||||
type: 'Apartment', | |||||
solutions: 'Building Materials', | |||||
unites: '20+', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/07.jpg', name: 'Tarrace Lofts' }, | |||||
{ details: '/src/assets/img/cases/007.jpg', name: 'Tarrace Lofts' } | |||||
] | |||||
} | |||||
} else if (newValue == '7') { | |||||
casemessage = { | |||||
title: 'Ocean 17', | |||||
country: 'Carlsbad,CA,USA', | |||||
year: 2023, | |||||
address: '2501 State Street Carlsbad, California 92008,USA', | |||||
type: 'Condo', | |||||
solutions: 'Building Materials, lights fixture', | |||||
unites: '17', | |||||
img: [ | |||||
{ details: '/src/assets/img/cases/08.jpg', name: 'Ocean 17' }, | |||||
{ details: '/src/assets/img/cases/008.jpg', name: 'Ocean 17' } | |||||
] | |||||
} | |||||
} | |||||
}, { immediate: true, deep: true }) | |||||
let mobileShow = ref<any>(false) | |||||
const goPage = () => { | |||||
document.documentElement.scrollTop = 0 | |||||
router.back() | |||||
} | |||||
onMounted(() => { | |||||
if (document.body.offsetWidth < 960) { | |||||
mobileShow.value = true | |||||
} else { | |||||
mobileShow.value = false | |||||
} | |||||
window.addEventListener('resize', function () { | |||||
if (document.body.offsetWidth < 960) { | |||||
mobileShow.value = true | |||||
} else { | |||||
mobileShow.value = false | |||||
} | |||||
}) | |||||
}) | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.btn { | |||||
cursor: pointer; | |||||
left: 50%; | |||||
transform: translateX(-50%); | |||||
margin: 3rem 0; | |||||
float: left; | |||||
font-weight: bold; | |||||
padding: 1rem 2.5rem; | |||||
border: 1px solid #333; | |||||
} | |||||
.btn:hover { | |||||
color: #fa8106; | |||||
border: 1px solid #fa8106; | |||||
} | |||||
.procurement { | |||||
margin-top: 2vw; | |||||
} | |||||
.casemessage { | |||||
padding: 15px; | |||||
display: flex; | |||||
justify-content: space-between; | |||||
// align-items: center; | |||||
overflow: hidden; | |||||
.casemessage-left { | |||||
width: 50%; | |||||
font-size: 26px; | |||||
margin-right: 5%; | |||||
.address-year { | |||||
padding: 1rem 0rem; | |||||
border-bottom: 1px solid #333; | |||||
display: flex; | |||||
.address { | |||||
margin-right: 4rem; | |||||
} | |||||
.address, | |||||
.year { | |||||
display: flex; | |||||
align-items: center; | |||||
span{ | |||||
white-space: nowrap; | |||||
} | |||||
.iconfont { | |||||
color: #ed7d31; | |||||
// font-size: 2rem; | |||||
margin-right: 1rem; | |||||
} | |||||
} | |||||
} | |||||
.message { | |||||
padding: 4rem 0; | |||||
// font-size: 16px; | |||||
border-bottom: 2px solid rgba(232, 232, 232); | |||||
.item { | |||||
margin: 10px 0; | |||||
// color: #888; | |||||
} | |||||
} | |||||
.button-left { | |||||
// position: absolute; | |||||
cursor: pointer; | |||||
float: left; | |||||
padding: 10px 20px; | |||||
background-color: #fa8106; | |||||
float: left; | |||||
margin-top: 5vw; | |||||
font-size: 16px; | |||||
color: #fff; | |||||
} | |||||
} | |||||
.casemessage-right { | |||||
// width: 45%; | |||||
height: 25vw; | |||||
overflow: hidden; | |||||
img { | |||||
transition: all 3s; | |||||
} | |||||
} | |||||
.casemessage-right:hover img { | |||||
transform: scale(1.1); | |||||
} | |||||
} | |||||
.details { | |||||
width: 75%; | |||||
margin: 20px auto; | |||||
text-align: left; | |||||
.img { | |||||
margin-top: 2rem; | |||||
} | |||||
} | |||||
@media screen and (max-width: 960px) { | |||||
.btn{ | |||||
left: 50%; | |||||
transform: translateX(-50%); | |||||
} | |||||
.details{ | |||||
text-align: center; | |||||
} | |||||
.casemessage { | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: space-between; | |||||
.casemessage-left { | |||||
width: 100%; | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: space-between; | |||||
margin-bottom: 10px; | |||||
.address-year{ | |||||
display: flex; | |||||
flex-direction: column; | |||||
.address{ | |||||
margin-bottom: 0.5rem; | |||||
} | |||||
} | |||||
.button-left { | |||||
white-space: nowrap; | |||||
} | |||||
} | |||||
.casemessage-right { | |||||
height: 35vw; | |||||
.imgcase { | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -1,85 +0,0 @@ | |||||
<template> | |||||
<div class="productcenter"> | |||||
<div class="box" v-if="!show"> | |||||
{{ router.currentRoute.value.params.name }} | |||||
</div> | |||||
<div class="box" v-else> | |||||
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> | |||||
<el-tab-pane :label="item.title" :name="item.position" v-for="item,index in productList" :key="index"> | |||||
<div> | |||||
<h2>{{ item.title }}</h2> | |||||
</div> | |||||
</el-tab-pane> | |||||
</el-tabs> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import router from '../router'; | |||||
import { ref } from 'vue' | |||||
import type { TabsPaneContext } from 'element-plus/lib'; | |||||
let show = ref<any>(false) | |||||
let productList = Array<any>([]) | |||||
let activeName = ref<any>('Floor') | |||||
const handleClick = (tab: TabsPaneContext, event: Event) => { | |||||
console.log(tab, event) | |||||
} | |||||
if (router.currentRoute.value.params.name == 'Building Materials') { | |||||
show.value = true | |||||
productList = [ | |||||
{ title: 'Floor', position: 'Floor' }, | |||||
{ title: 'Wall', position: 'Wall' }, | |||||
{ title: 'roof', position: 'roof' } | |||||
] | |||||
activeName.value = productList[0].title | |||||
} else if(router.currentRoute.value.params.name == 'Sanitary Ware') { | |||||
show.value = true | |||||
productList = [ | |||||
{ title: 'Mirror', position: 'Mirror' }, | |||||
{ title: 'Toilet', position: 'Toilet' }, | |||||
{ title: 'Bathtub ', position: 'Bathtub ' }, | |||||
{ title: 'Jacuzzi', position: 'Jacuzzi' }, | |||||
{ title: 'Faucet', position: 'Faucet' }, | |||||
{ title: 'Sink', position: 'Sink' }, | |||||
{ title: 'Accessories', position: 'Accessories' }, | |||||
{ title: 'Shower Glass', position: 'ShowerGlass' }, | |||||
{ title: 'Bathroom', position: 'Bathroom' }, | |||||
{ title: 'Shower system', position: 'Showersystem' }, | |||||
] | |||||
activeName.value = productList[0].title | |||||
}else{ | |||||
show.value = false | |||||
} | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.productcenter { | |||||
margin-top: 2vw; | |||||
.box { | |||||
width: 90%; | |||||
margin: 0 auto; | |||||
} | |||||
} | |||||
@media screen and (max-width: 960px) { | |||||
.productcenter { | |||||
margin-top: 14vw; | |||||
} | |||||
} | |||||
</style> | |||||
<style> | |||||
.demo-tabs > .el-tabs__content { | |||||
padding: 10px; | |||||
color: #6b778c; | |||||
font-size: 32px; | |||||
font-weight: 600; | |||||
} | |||||
</style> |
@ -0,0 +1,158 @@ | |||||
<template> | |||||
<div class="productcenter"> | |||||
<div class="door-bgc position-relative"> | |||||
<img src="../assets/img/door/door.jpg" alt="Door"> | |||||
<span class="position-absolute doortitle color-fff" :class="mobileShow ? 'font-size-16' : 'font-size-50'">Safety, Health, and Environmental | |||||
Protection</span> | |||||
</div> | |||||
<div class="box"> | |||||
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> | |||||
<el-tab-pane :label="item.title" :name="item.title" v-for="item, index in productList" :key="index"> | |||||
<div> | |||||
<h2>{{ item.title }}</h2> | |||||
</div> | |||||
</el-tab-pane> | |||||
</el-tabs> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
import router from '../router'; | |||||
import { ref, watch, onMounted } from 'vue' | |||||
import type { TabsPaneContext } from 'element-plus/lib'; | |||||
let productList = Array<any>([]) | |||||
let activeName = ref<any>('') | |||||
let mobileShow = ref<any>(false) | |||||
const handleClick = (tab: TabsPaneContext, event: Event) => { | |||||
} | |||||
onMounted(() => { | |||||
if (document.body.offsetWidth < 960) { | |||||
mobileShow.value = true | |||||
} else { | |||||
mobileShow.value = false | |||||
} | |||||
window.addEventListener('resize', function () { | |||||
if (document.body.offsetWidth < 960) { | |||||
mobileShow.value = true | |||||
} else { | |||||
mobileShow.value = false | |||||
} | |||||
}) | |||||
}) | |||||
// if (router.currentRoute.value.params.name == 'Building Materials') { | |||||
// show.value = true | |||||
// productList = [ | |||||
// { title: 'Floor', position: 'Floor' }, | |||||
// { title: 'Wall', position: 'Wall' }, | |||||
// { title: 'roof', position: 'roof' } | |||||
// ] | |||||
// activeName.value = productList[0].title | |||||
// } else if(router.currentRoute.value.params.name == 'Sanitary Ware') { | |||||
// show.value = true | |||||
// productList = [ | |||||
// { title: 'Mirror', position: 'Mirror' }, | |||||
// { title: 'Toilet', position: 'Toilet' }, | |||||
// { title: 'Bathtub ', position: 'Bathtub ' }, | |||||
// { title: 'Jacuzzi', position: 'Jacuzzi' }, | |||||
// { title: 'Faucet', position: 'Faucet' }, | |||||
// { title: 'Sink', position: 'Sink' }, | |||||
// { title: 'Accessories', position: 'Accessories' }, | |||||
// { title: 'Shower Glass', position: 'ShowerGlass' }, | |||||
// { title: 'Bathroom', position: 'Bathroom' }, | |||||
// { title: 'Shower system', position: 'Showersystem' }, | |||||
// ] | |||||
// activeName.value = productList[0].title | |||||
// } | |||||
// watch(() => router.currentRoute.value.params.name, (newValue: any) => { | |||||
// if(newValue == 'Door'){ | |||||
// console.log(123); | |||||
// } | |||||
// }, { }) | |||||
if (router.currentRoute.value.params.name == 'Door') { | |||||
productList = [ | |||||
{ | |||||
title: 'Entrance Doors', | |||||
children: [ | |||||
{} | |||||
] | |||||
}, | |||||
{ title: 'Interior Doors' }, | |||||
{ title: 'Fire Doors' }, | |||||
{ title: 'Sliding Doors' } | |||||
] | |||||
activeName.value = productList[0].title | |||||
} else if (router.currentRoute.value.params.name == 'Window') { | |||||
console.log(2); | |||||
} else if (router.currentRoute.value.params.name == 'Railing') { | |||||
console.log(3); | |||||
} else if (router.currentRoute.value.params.name == 'Building Materials') { | |||||
console.log(4); | |||||
} else if (router.currentRoute.value.params.name == 'Kitchen Cabinets with Customization') { | |||||
console.log(5); | |||||
} else if (router.currentRoute.value.params.name == 'Kitchen faucet and sink') { | |||||
console.log(6); | |||||
} else if (router.currentRoute.value.params.name == 'Sanitary Ware') { | |||||
console.log(7); | |||||
} | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.productcenter { | |||||
box-sizing: border-box; | |||||
margin: 0; | |||||
padding: 0; | |||||
.door-bgc { | |||||
width: 100%; | |||||
height: 60%; | |||||
img { | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
.doortitle { | |||||
bottom: 0; | |||||
left: 0; | |||||
width: 100%; | |||||
z-index: 999; | |||||
height: 14%; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
background: rgba(0, 0, 0, 0.2); | |||||
} | |||||
} | |||||
.box { | |||||
width: 90%; | |||||
margin: 2rem auto 0; | |||||
} | |||||
} | |||||
@media screen and (max-width: 960px) { | |||||
.productcenter { | |||||
margin-top: 14vw; | |||||
} | |||||
} | |||||
</style> | |||||
<style> | |||||
.demo-tabs>.el-tabs__content { | |||||
padding: 10px; | |||||
color: #6b778c; | |||||
font-size: 32px; | |||||
font-weight: 600; | |||||
} | |||||
</style> |
@ -1,129 +0,0 @@ | |||||
<template> | |||||
<div> | |||||
<div class="procurement align-items-center width-80 m-auto"> | |||||
<div class="bg-F4F4F4 pa-2 border-box"> | |||||
<div class="casemessage"> | |||||
<div class="casemessage-left"> | |||||
<p class="font-size-30">Fairmont Empress Hotel</p> | |||||
<div class="message"> | |||||
<p class="item"><strong>Address: </strong>721 Government St, Victoria, BC V8W 1W5,Canada</p> | |||||
<p class="item"><strong>Type: </strong>Hotel</p> | |||||
<p class="item"><strong>Solutions: </strong>Furniture,Fixtures&Equipment, lights fixture</p> | |||||
</div> | |||||
<p class="button-left">Get Aa Free Quote ></p> | |||||
</div> | |||||
<div class="casemessage-right width-100"> | |||||
<img src="../assets/img/Installwoodenflooring.jpg" alt="Installwoodenflooring" | |||||
class="width-100 imgcase"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="details"> | |||||
<h2>DETAILS</h2> | |||||
<p class="details-message">Oppein Home, the largest cabinet manufacturer in Asia, will supply high-end cabinetry | |||||
and joinery for the | |||||
AURA residential development by Aqualand, an Australian property, hospitality and investment company. | |||||
This is the second collaboration between Oppein Home and Aqualand, and it turns out to be an impressive | |||||
achievement for both companies.</p> | |||||
<img src="../assets/img/Installwoodenflooring.jpg" alt="Install wooden flooring" class="width-100"> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script setup lang="ts"> | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.procurement { | |||||
margin-top: 2vw; | |||||
} | |||||
.casemessage { | |||||
padding: 15px; | |||||
display: flex; | |||||
justify-content: space-between; | |||||
// align-items: center; | |||||
overflow: hidden; | |||||
.casemessage-left { | |||||
width: 50%; | |||||
font-size: 26px; | |||||
margin-right: 5%; | |||||
.message { | |||||
margin-top: 5vw; | |||||
font-size: 16px; | |||||
.item { | |||||
margin: 10px 0; | |||||
color: #888; | |||||
} | |||||
} | |||||
.button-left { | |||||
// position: absolute; | |||||
cursor: pointer; | |||||
float: left; | |||||
padding: 10px 20px; | |||||
background-color: #fa8106; | |||||
float: left; | |||||
margin-top: 5vw; | |||||
font-size: 16px; | |||||
color: #fff; | |||||
} | |||||
} | |||||
.casemessage-right { | |||||
// width: 45%; | |||||
height: 20vw; | |||||
overflow: hidden; | |||||
img { | |||||
transition: all 3s; | |||||
} | |||||
} | |||||
.casemessage-right:hover img { | |||||
transform: scale(1.1); | |||||
} | |||||
} | |||||
.details { | |||||
width: 80%; | |||||
margin: 20px auto; | |||||
text-align: center; | |||||
.details-message { | |||||
margin: 20px 0; | |||||
text-align: left; | |||||
} | |||||
} | |||||
@media screen and (max-width: 960px) { | |||||
.casemessage { | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: space-between; | |||||
.casemessage-left { | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
font-size: 10px; | |||||
margin-bottom: 10px; | |||||
.button-left{ | |||||
white-space: nowrap; | |||||
} | |||||
} | |||||
.casemessage-right { | |||||
height: 35vw; | |||||
.imgcase { | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
} | |||||
} | |||||
}</style> |