@ -27,14 +27,39 @@
< / 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" loading = "lazy" >
< img :src ="casemessage.img.details" :alt ="casemessage.img.name" class = "width-100 imgcase"
loading = "lazy" >
< / 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'" loading = "lazy" >
< div class = "details-pic" v-if ="casemessage.img.children && casemessage.img.children.length > 0" >
< div class = "img" v-for ="item, index in casemessage.img.children" :key ="index" >
< img :src ="item.details" :alt ="item.name" loading = "lazy" >
< / div >
< / div >
< / div >
< div class = "other" >
< h1 class = "mb-2" > < strong > Other Cases < / strong > < / h1 >
< swiper :modules ="modules" :slides-per-view ="slidesPerView" :loop ="true" :space-between ="50" navigation
: pagination = "{ clickable: true }" >
<!-- 项目案例 -- >
< swiper -slide v-for ="(item, index2) in bannerList" class="hover-scale cursor-pointer" :key="item.position" >
< div >
< div class = "case-img overflow-hidden position-relative"
@ click = "goPage1(`/projectcase/${item.position}`, 'projectCases')" >
< img :src ="item.detail" :alt ="item.name" class = "width-100 d-block position-relative imgcase1"
loading = "lazy" / >
< div class = "position-absolute color-fff project-center-title" >
< span class = "font-700 font-size-20" > { { item . name } } < / span >
< span class = "font-700 font-size-20" > { { item . address } } < / span >
< / div >
< / div >
< / div >
< / s w i p e r - s l i d e >
< / swiper >
< / div >
< div class = "btn position-relative" : class = "mobileShow ? 'font-size-16' : 'font-size-22'" @click ="goPage" > Back < / div >
< / div >
@ -42,9 +67,18 @@
< script setup lang = "ts" >
import router from '../router' ;
import 'swiper/css' ;
import 'swiper/css/navigation' ;
import 'swiper/css/pagination' ;
import 'swiper/css/scrollbar' ;
import { A11y , Navigation , Scrollbar } from "swiper" ;
import { Swiper , SwiperSlide } from 'swiper/vue' ;
import { watch , reactive , ref , onMounted } from 'vue'
let modules = [ Navigation , Scrollbar , A11y ] ;
let casemessage = reactive < any > ( { } )
let slidesPerView = ref < number > ( 3 )
watch ( ( ) => router . currentRoute . value . params . name , ( newValue : any ) => {
if ( newValue == '0' ) {
@ -56,10 +90,29 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Hotel' ,
solutions : 'Furniture,Fixtures&Equipment, lights fixture' ,
unites : '300+' ,
img : [
{ details : new URL ( "../assets/img/cases/01.jpg" , import . meta . url ) . href , name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' } ,
{ details : new URL ( "../assets/img/cases/001.jpg" , import . meta . url ) . href , name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/01/1.jpg" , import . meta . url ) . href ,
name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/01/2.jpg" , import . meta . url ) . href ,
name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' ,
} ,
{
details : new URL ( "../assets/img/ProjectCase/01/3.jpg" , import . meta . url ) . href ,
name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/01/4.jpg" , import . meta . url ) . href ,
name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/01/5.jpg" , import . meta . url ) . href ,
name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/01/6.jpg" , import . meta . url ) . href ,
name : 'MONTIER Canada Hotel Project - Fairmont Empress Hotel' ,
} ,
]
} ,
}
} else if ( newValue == '1' ) {
casemessage = {
@ -70,10 +123,34 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Hotel' ,
solutions : 'Furniture,Fixtures&Equipment, doors' ,
unites : '200+' ,
img : [
{ details : new URL ( "../assets/img/cases/02.jpg" , import . meta . url ) . href , name : 'Monsaraz Hilton' } ,
{ details : new URL ( "../assets/img/cases/002.jpg" , import . meta . url ) . href , name : 'Monsaraz Hilton' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/02/2.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/02/3.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
} , {
details : new URL ( "../assets/img/ProjectCase/02/4.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
} , {
details : new URL ( "../assets/img/ProjectCase/02/5.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
} , {
details : new URL ( "../assets/img/ProjectCase/02/6.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
} , {
details : new URL ( "../assets/img/ProjectCase/02/7.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
} , {
details : new URL ( "../assets/img/ProjectCase/02/8.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
} , {
details : new URL ( "../assets/img/ProjectCase/02/9.jpg" , import . meta . url ) . href ,
name : 'Monsaraz Hilton' ,
} ,
]
} ,
}
} else if ( newValue == '2' ) {
casemessage = {
@ -84,10 +161,35 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Hotel' ,
solutions : 'Furniture,Fixtures&Equipment,lights fixture' ,
unites : '200+' ,
img : [
{ details : new URL ( "../assets/img/cases/03.jpg" , import . meta . url ) . href , name : 'Canopy By Hilton San Francisco Soma Hotel' } ,
{ details : new URL ( "../assets/img/cases/003.jpg" , import . meta . url ) . href , name : 'Canopy By Hilton San Francisco Soma Hotel' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/03/1.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/03/2.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
} ,
{
details : new URL ( "../assets/img/ProjectCase/03/3.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/03/4.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/03/5.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/03/6.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/03/7.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/03/8.jpg" , import . meta . url ) . href ,
name : 'Canopy By Hilton San Francisco Soma Hotel' ,
} ,
]
} ,
}
} else if ( newValue == '3' ) {
casemessage = {
@ -98,10 +200,29 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Condo' ,
solutions : 'Building Materials' ,
unites : '20+' ,
img : [
{ details : new URL ( "../assets/img/cases/04.jpg" , import . meta . url ) . href , name : 'Lofts on Laurel' } ,
{ details : new URL ( "../assets/img/cases/004.jpg" , import . meta . url ) . href , name : 'Lofts on Laurel' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/04/1.jpg" , import . meta . url ) . href ,
name : 'Lofts on Laurel' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/04/2.jpg" , import . meta . url ) . href ,
name : 'Lofts on Laurel' ,
} ,
{
details : new URL ( "../assets/img/ProjectCase/04/3.jpg" , import . meta . url ) . href ,
name : 'Lofts on Laurel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/04/4.jpg" , import . meta . url ) . href ,
name : 'Lofts on Laurel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/04/5.jpg" , import . meta . url ) . href ,
name : 'Lofts on Laurel' ,
} , {
details : new URL ( "../assets/img/ProjectCase/04/6.jpg" , import . meta . url ) . href ,
name : 'Lofts on Laurel' ,
} ,
]
} ,
}
} else if ( newValue == '4' ) {
casemessage = {
@ -112,10 +233,32 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Condo' ,
solutions : 'Building Materials' ,
unites : '20+' ,
img : [
{ details : new URL ( "../assets/img/cases/05.jpg" , import . meta . url ) . href , name : 'State&Oak Street' } ,
{ details : new URL ( "../assets/img/cases/005.jpg" , import . meta . url ) . href , name : 'State&Oak Street' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/05/1.jpg" , import . meta . url ) . href ,
name : 'State&Oak Street' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/05/2.jpg" , import . meta . url ) . href ,
name : 'State&Oak Street' ,
} ,
{
details : new URL ( "../assets/img/ProjectCase/05/3.jpg" , import . meta . url ) . href ,
name : 'State&Oak Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/05/4.jpg" , import . meta . url ) . href ,
name : 'State&Oak Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/05/5.jpg" , import . meta . url ) . href ,
name : 'State&Oak Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/05/6.jpg" , import . meta . url ) . href ,
name : 'State&Oak Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/05/7.jpg" , import . meta . url ) . href ,
name : 'State&Oak Street' ,
} ,
]
} ,
}
} else if ( newValue == '5' ) {
casemessage = {
@ -126,10 +269,31 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Condo' ,
solutions : 'Building Materials' ,
unites : '180+' ,
img : [
{ details : new URL ( "../assets/img/cases/06.jpg" , import . meta . url ) . href , name : '989 Johson Street' } ,
{ details : new URL ( "../assets/img/cases/006.jpg" , import . meta . url ) . href , name : '989 Johson Street' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/06/1.jpg" , import . meta . url ) . href ,
name : '989 Johson Street' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/06/2.jpg" , import . meta . url ) . href ,
name : '989 Johson Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/06/3.jpg" , import . meta . url ) . href ,
name : '989 Johson Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/06/4.jpg" , import . meta . url ) . href ,
name : '989 Johson Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/06/5.jpg" , import . meta . url ) . href ,
name : '989 Johson Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/06/6.jpg" , import . meta . url ) . href ,
name : '989 Johson Street' ,
} , {
details : new URL ( "../assets/img/ProjectCase/06/7.jpg" , import . meta . url ) . href ,
name : '989 Johson Street' ,
} ,
]
} ,
}
} else if ( newValue == '6' ) {
casemessage = {
@ -140,10 +304,29 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Apartment' ,
solutions : 'Building Materials' ,
unites : '20+' ,
img : [
{ details : new URL ( "../assets/img/cases/07.jpg" , import . meta . url ) . href , name : 'Tarrace Lofts' } ,
{ details : new URL ( "../assets/img/cases/007.jpg" , import . meta . url ) . href , name : 'Tarrace Lofts' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/07/1.jpg" , import . meta . url ) . href ,
name : 'Tarrace Lofts' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/07/2.jpg" , import . meta . url ) . href ,
name : 'Tarrace Lofts' ,
} ,
{
details : new URL ( "../assets/img/ProjectCase/07/3.jpg" , import . meta . url ) . href ,
name : 'Tarrace Lofts' ,
} , {
details : new URL ( "../assets/img/ProjectCase/07/4.jpg" , import . meta . url ) . href ,
name : 'Tarrace Lofts' ,
} , {
details : new URL ( "../assets/img/ProjectCase/07/5.jpg" , import . meta . url ) . href ,
name : 'Tarrace Lofts' ,
} , {
details : new URL ( "../assets/img/ProjectCase/07/6.jpg" , import . meta . url ) . href ,
name : 'Tarrace Lofts' ,
} ,
]
} ,
}
} else if ( newValue == '7' ) {
casemessage = {
@ -154,10 +337,40 @@ watch(() => router.currentRoute.value.params.name, (newValue: any) => {
type : 'Condo' ,
solutions : 'Building Materials, lights fixture' ,
unites : '17' ,
img : [
{ details : new URL ( "../assets/img/cases/08.jpg" , import . meta . url ) . href , name : 'Ocean 17' } ,
{ details : new URL ( "../assets/img/cases/008.jpg" , import . meta . url ) . href , name : 'Ocean 17' }
]
img : {
details : new URL ( "../assets/img/ProjectCase/08/1.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
children : [
{
details : new URL ( "../assets/img/ProjectCase/08/2.3.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/2.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/3.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/4.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/5.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/6.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/7.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/8.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} , {
details : new URL ( "../assets/img/ProjectCase/08/9.jpg" , import . meta . url ) . href ,
name : 'Ocean 17' ,
} ,
]
} ,
}
}
} , { immediate : true , deep : true } )
@ -170,29 +383,114 @@ const goPage = () => {
} )
document . getElementById ( 'service' ) ? . scrollIntoView ( )
}
const goPage1 = ( url : any , name : string ) => {
if ( name != '' ) {
localStorage . setItem ( 'scrollPosition' , name )
}
document . documentElement . scrollTop = 0
router . push ( {
path : url
} )
}
let bannerList = ref < any > ( [
{ detail : new URL ( "../assets/img/ProjectCase/01/1.jpg" , import . meta . url ) . href , name : 'Fairmont Empress Hotel' , address : 'Victoria, Canada' , position : 0 } ,
{ detail : new URL ( "../assets/img/ProjectCase/02/1.jpg" , import . meta . url ) . href , name : 'Monsaraz Hilton' , address : 'San Diego,USA' , position : 1 } ,
{ detail : new URL ( "../assets/img/ProjectCase/03/1.jpg" , import . meta . url ) . href , name : 'Canopy By Hilton San Francisco Soma Hotel' , address : 'San Fransisco,USA' , position : 2 } ,
{ detail : new URL ( "../assets/img/ProjectCase/04/1.jpg" , import . meta . url ) . href , name : 'Lofts on Laurel' , address : 'San Diego,USA' , position : 3 } ,
{ detail : new URL ( "../assets/img/ProjectCase/05/1.jpg" , import . meta . url ) . href , name : 'State&Oak Street' , address : 'Carlsbad,CA,USA' , position : 4 } ,
{ detail : new URL ( "../assets/img/ProjectCase/06/1.jpg" , import . meta . url ) . href , name : '989 Johson Street' , address : 'Victoria, Canada' , position : 5 } ,
{ detail : new URL ( "../assets/img/ProjectCase/07/1.jpg" , import . meta . url ) . href , name : 'Tarrace Lofts' , address : 'Vista, California, USA' , position : 6 } ,
{ detail : new URL ( "../assets/img/ProjectCase/08/1.jpg" , import . meta . url ) . href , name : 'Ocean 17' , address : 'Carlsbad,CA,USA' , position : 7 } ,
] )
onMounted ( ( ) => {
bannerList . value . map ( ( li : any ) => {
bannerList . value = bannerList . value . filter ( ( li : any ) => {
return li . position != router . currentRoute . value . params . name
} )
} )
if ( document . body . offsetWidth < 960 ) {
mobileShow . value = true
slidesPerView . value = 1
} else {
mobileShow . value = false
slidesPerView . value = 3
}
window . addEventListener ( 'resize' , function ( ) {
if ( document . body . offsetWidth < 960 ) {
mobileShow . value = true
slidesPerView . value = 1
} else {
mobileShow . value = false
slidesPerView . value = 3
}
} )
} )
< / script >
< style scoped lang = "less" >
: deep ( . swiper - button - prev : after ) {
color : # fff ;
font - size : 30 px ;
}
: deep ( . swiper - button - next : after ) {
color : # fff ;
font - size : 30 px ;
}
. project - center - title {
bottom : 0 ;
left : 0 ;
height : 50 px ;
/ / l i n e - h e i g h t : 5 0 p x ;
text - align : left ;
background : rgba ( 0 , 0 , 0 , .4 ) ;
width : 100 % ;
padding : 1 rem 1 rem ;
display : flex ;
flex - direction : column ;
justify - content : space - between ;
}
. other {
width : 90 % ;
margin : auto ;
. hover - scale {
. case - img {
img {
transition : all 3 s ;
}
. imgcase {
height : 42 rem ;
}
. imgcase1 {
height : 25 rem ;
}
}
}
. hover - scale : hover . case - img img {
transform : scale ( 1.2 ) ;
}
. hover - scale : hover . project - center - title {
background : # fa8106 ;
}
. hover - scale : hover . project - center - title1 {
background : # fa8106 ;
}
}
. btn {
cursor : pointer ;
left : 50 % ;
transform : translateX ( - 50 % ) ;
margin : 3 rem 0 ;
margin : 2 rem 0 2 rem ;
float : left ;
font - weight : bold ;
padding : 1 rem 2.5 rem ;
@ -233,7 +531,8 @@ onMounted(() => {
. year {
display : flex ;
align - items : center ;
span {
span {
white - space : nowrap ;
}
@ -285,23 +584,74 @@ onMounted(() => {
}
. details {
width : 75 % ;
width : 90 % ;
margin : 20 px auto ;
text - align : left ;
. img {
margin - top : 2 rem ;
. details - pic {
width : 100 % ;
padding : 1 rem ;
display : flex ;
flex - wrap : wrap ;
. img {
width : 43 % ;
height : 33 rem ;
margin - right : 3 rem ;
margin - bottom : 3 rem ;
overflow : hidden ;
img {
width : 100 % ;
height : 100 % ;
transition : 0.5 s linear ;
}
img : hover {
scale : 1.2 ;
}
}
}
}
@ media screen and ( max - width : 960 px ) {
. btn {
. btn {
left : 50 % ;
transform : translateX ( - 50 % ) ;
margin : 2 rem auto 1 rem ;
}
. details {
. details {
width : 90 % ;
margin : 20 px auto ;
text - align : center ;
. details - pic {
width : 100 % ;
padding : 1 rem ;
display : flex ;
flex - wrap : wrap ;
. img {
width : 100 % ;
height : 15 rem ;
margin - right : 3 rem ;
margin - bottom : 3 rem ;
overflow : hidden ;
img {
width : 100 % ;
height : 100 % ;
transition : 0.5 s linear ;
}
img : hover {
scale : 1.2 ;
}
}
}
}
. casemessage {
display : flex ;
flex - direction : column ;
@ -313,10 +663,12 @@ onMounted(() => {
flex - direction : column ;
justify - content : space - between ;
margin - bottom : 10 px ;
. address - year {
. address - year {
display : flex ;
flex - direction : column ;
. address {
. address {
margin - bottom : 0.5 rem ;
}
}