<template> <footer> <div class="footer-top" v-if="footerBannerList.length > 0"> <el-image lazy :src="footerBannerList[0].image" alt="" class="footer-banner" fit="cover"></el-image> <div class="top-item"> <p>Need ideas? Samples? Art assistance?</p> <p>Get in touch, we're here to help</p> <!-- <el-button class="btn btn-red" @click="openLoginDialog"> Become a member </el-button> --> <div class="btn btn-blue"> <!-- <nuxt-link to="/home/contact" v-if="isLogin"> Contact Us </nuxt-link> --> <nuxt-link to="/home/contactus"> Contact Us </nuxt-link> </div> </div> </div> <div class="footer-middle com-margin-auto"> <div class="middle com-margin-auto com-flex"> <div class="middle-item-left"> <img :src="websitelogo" alt="logo" /> <!-- <p>{{ indexConfigWebsite.company_introduction }}</p> --> </div> <div class="middle-item-right"> <div class="item-menu"> <div class="item-title">OUR PRODUCTS</div> <div class="item-line"></div> <div class="item-content"> <div> <ul> <li v-for="item in productList" :key="item.id"> <nuxt-link :to="{ name: 'category-firstCategory', params: { firstCategory: item.name .replace(/\s+/g, '-') .replace('-&', '') .toLowerCase(), id: item.id, }, }"> {{ item.name }} </nuxt-link> </li> </ul> </div> </div> </div> <div class="item-menu"> <div class="item-title">CUSTOMER SUPPORT</div> <div class="item-line"></div> <div class="item-content"> <div> <!-- <nuxt-link to="/home/helpCenter">Help Center </nuxt-link> --> <!-- <a href="mailto:Info@promocollection.com.au?subject=Sample%20Request" v-show="audit_status"> Sample Request </a> --> <nuxt-link to="/home/termsConditions"> Terms & Conditions </nuxt-link> <!-- <nuxt-link to="/home/refundReturns" v-show="audit_status"> Refund & Returns </nuxt-link> --> </div> </div> </div> <div class="item-menu"> <div class="item-title">ADDITIONAL INFO</div> <div class="item-line"></div> <div class="item-content"> <div> <!-- <nuxt-link to="/home/newsLetter"> NewsLetter </nuxt-link> --> <!-- <nuxt-link to="/home/downloadCenter" v-show="audit_status"> Download Center </nuxt-link> --> <!-- <nuxt-link to="/home/FAQs"> FAQ </nuxt-link> --> <!-- <nuxt-link to="/home/privacyPolicy"> Privacy Policy </nuxt-link> --> <!-- <nuxt-link to="/home/contact" v-if="isLogin"> Contact Us </nuxt-link> --> <nuxt-link to="/home/contactus"> Contact Us </nuxt-link> <nuxt-link :to="{ name: 'aboutus', }" >About Us </nuxt-link> <!-- <div class="item-content-a" @click="goApiWord"> API </div> --> </div> </div> </div> </div> </div> <div v-show="flag_scroll" class="goTop" @click="backTop"> <img src="@/assets/img/Floating.png" alt="" @click="backTop" /> </div> </div> <div class="footer-bottom"> <div class="footer-bottom-item com-width-1400 com-margin-auto"> <div class="footer-bottom-item-left">{{ footerInfo }}</div> <div class="footer-bottom-item-right"> {{ indexConfigWebsite.version_info }} </div> </div> </div> <dialog-XX-success :imgShow="false" :visible.sync="xxContentVisible" :desc="xxDesc"></dialog-XX-success> </footer> </template> <script> import { mapMutations } from 'vuex' import dialogXXSuccess from './DIalogXXSuccess.vue' export default { components: { 'dialog-XX-success': dialogXXSuccess }, data() { return { footerBannerList: [], productList: [], indexConfigWebsite: [], aboutUsArticle: {}, flag_scroll: false, scroll: 0, xxContentVisible: false, xxDesc: '', websitelogo: '', footerInfo: '', } }, async fetch() { await this.$axios .post('home/indexBanner', { site: 1, type: 6 }) .then(res => { this.footerBannerList = res.result.data // this.$store.commit("config/setConfigInfo", res.result); }) await this.$axios.post('home/indexConfigWebsite', { site: 1 }).then(res => { this.indexConfigWebsite = res.result this.$store.commit('config/setConfigInfo', res.result) }) await this.$axios.post('common/shopProductList').then(res => { this.productList = res.result }) await this.$axios .post('/home/articleLists', { state: 'au', keyword: 'About us' }) .then(res => { this.aboutUsArticle = res.result.data[0] }) }, computed: { audit_status() { return this.$store.state.userInfo?.audit_status === 1 }, isLogin() { return !!this.$store.state.userInfo?.email }, }, beforeMount() { this.$store.dispatch('getShopInfo').then(res => { this.websitelogo = !this.$mediaRegExp.test(res.logo) ? this.$OSS_PREFIX + (/^\/.+/.test(res.logo) ? res.logo : `/${res.logo}`) : res.logo this.footerInfo = res.footer || '' }) }, methods: { ...mapMutations('config', ['setConfigInfo']), ...mapMutations(['openDialog']), backTop() { var timer = setInterval(function () { document.documentElement.scrollTop -= 20 if (document.documentElement.scrollTop <= 0) { clearInterval(timer) } }, 10) }, handleScroll() { const scrollobj = document.body.scrollTop + document.documentElement.scrollTop if (scrollobj > 500) { this.flag_scroll = true } else { this.flag_scroll = false } }, openLoginDialog() { if (this.$utils.checkLogin()) { this.$router.push({ name: 'news-newsName', params: { newsName: 'About-Us' }, }) } else { this.openDialog() } }, goApiWord() { if (this.isLogin) { if (this.$store.state.userInfo.open_platform) { const { href } = this.$router.resolve({ name: 'home-api', }) window.open(href, '_black') } else { this.submitLoading = false this.xxContentVisible = true this.xxDesc = 'If you encounter difficulties, please contact info@promocollection.com.au' // this.$message.error( // 'If you encounter difficulties, please contact info@promocollection.com.au' // ) } } else { this.openDialog() } }, }, mounted() { window.addEventListener('scroll', this.handleScroll, true) }, destroyed() { window.removeEventListener('scroll', this.scrollToTop) }, } </script> <style lang="scss" scoped> footer { line-height: 0; margin-top: 15px; font-family: Proxima Nova; .footer-top { position: relative; .footer-banner { width: 100%; height: 500px; } .top-item { position: absolute; top: 160px; left: 20%; p:first-of-type { width: 360px; height: 66px; font-size: 36px; font-weight: bold; color: #ffffff; line-height: 33px; margin-bottom: 18px; } p:nth-of-type(2) { width: 400px; height: 38px; font-size: 16px; font-weight: 400; color: #8290a1; line-height: 20px; margin-bottom: 16px; } .btn { width: 172px; height: 50px; line-height: 50px; border-radius: 6px; font-size: 14px; font-family: Proxima Nova; font-weight: bold; color: #ffffff; text-transform: uppercase; border: none; cursor: pointer; margin-right: 16px; text-align: center; a { display: block; width: 100%; color: #ffffff; } } .btn-red { background: #e90000; } .btn-blue { background: #0b6dc9; } } } .footer-middle { max-width: 1400px; .middle { display: flex; justify-content: space-around; // background: url('@/assets/img/Shape 28.png') no-repeat; height: 377px; .footer-middle-item { width: 100%; } } .middle-item-left { margin-right: 10px; img { // width: 241px; height: 80px; } p { max-width: 465px; font-size: 12px; font-weight: 400; color: #4a596c; line-height: 24px; margin-left: 20px; margin-top: 15px; } } .middle-item-right { display: flex; justify-content: space-around; margin-top: 35px; .item-menu { &:nth-child(2) { margin-left: 80px; } &:last-child { margin-left: 35px; } height: 172px; .item-title { white-space: nowrap; height: 20px; line-height: 20px; font-size: 14px; font-weight: bold; color: #000000; padding-bottom: 5px; } .item-line { width: 40px; height: 2px; background: #e90000; } .item-content { margin-top: 20px; height: 104px; div { height: 100%; a, .item-content-a { white-space: nowrap; display: block; // width: 120px; height: 20px; line-height: 20px; font-size: 0.87rem; font-weight: 400; color: #4a596c; padding-bottom: 5px; cursor: pointer; &:hover { color: #006dc9; } } ul { display: flex; justify-content: flex-start; flex-wrap: wrap; width: 200px; li { &:nth-child(even) { a { width: 80px; } } &:nth-child(odd) { a { width: 120px; } } a { display: inline-block; height: 20px; line-height: 20px; // font-size: 12px; font-size: 0.87rem; font-weight: 400; color: #4a596c; padding-bottom: 5px; cursor: pointer; } } } } } } } .goTop { width: 1.6cm; height: 1.6cm; position: fixed; z-index: 2; bottom: 2cm; right: 12px; cursor: pointer; img { width: 100%; } } } .footer-bottom { width: 100%; background-color: #f1f4f9; .footer-bottom-item { height: 56px; display: flex; justify-content: space-between; align-items: center; font-size: 12px; font-weight: 400; color: #4a596c; } } } </style>