144 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Vue
		
	
	
<template>
 | 
						||
    <div class="float-nav bg-white flex-col col-center">
 | 
						||
        <div class="nav-list">
 | 
						||
            <nuxt-link to="/shop_cart" class="item flex-col col-center lighter">
 | 
						||
                <el-badge :value="publicData.cart_num" type="primary">
 | 
						||
                    <span class="iconfont icon-cart-Empty"></span>
 | 
						||
                </el-badge>
 | 
						||
                <div class="sm">购物车</div>
 | 
						||
            </nuxt-link>
 | 
						||
            <nuxt-link
 | 
						||
                class="item flex-col col-center lighter"
 | 
						||
                to="/user/coupons"
 | 
						||
            >
 | 
						||
                <el-badge :value="publicData.coupon_num" type="primary">
 | 
						||
                    <span class="iconfont icon-coupons"></span>
 | 
						||
                </el-badge>
 | 
						||
                <div class="sm">优惠券</div>
 | 
						||
            </nuxt-link>
 | 
						||
            <nuxt-link
 | 
						||
                class="item flex-col col-center lighter"
 | 
						||
                to="/user/order"
 | 
						||
            >
 | 
						||
                <span class="iconfont icon-icon_order"></span>
 | 
						||
                <div class="sm">订单</div>
 | 
						||
            </nuxt-link>
 | 
						||
            <nuxt-link
 | 
						||
                class="item flex-col col-center lighter"
 | 
						||
                to="/user/collection"
 | 
						||
            >
 | 
						||
                <span class="iconfont icon-collection"></span>
 | 
						||
                <div class="sm">收藏</div>
 | 
						||
            </nuxt-link>
 | 
						||
            <nuxt-link
 | 
						||
                class="item flex-col col-center lighter"
 | 
						||
                to="/help_center"
 | 
						||
            >
 | 
						||
                <span class="iconfont icon-survey"></span>
 | 
						||
                <div class="sm">帮助</div>
 | 
						||
            </nuxt-link>
 | 
						||
            <el-popover placement="left" width="165" trigger="hover">
 | 
						||
                <div
 | 
						||
                    style="text-align: center; margin: 0"
 | 
						||
                    class="flex-col col-center"
 | 
						||
                >
 | 
						||
                    <img
 | 
						||
                        style="width: 100px; height: 100px"
 | 
						||
                        :src="server.image"
 | 
						||
                        alt=""
 | 
						||
                    />
 | 
						||
                    <div class="sm m-t-8">{{ server.phone }}</div>
 | 
						||
                    <div class="sm m-t-10">
 | 
						||
                        在线时间:{{ server.business_time }}
 | 
						||
                    </div>
 | 
						||
                </div>
 | 
						||
                <div class="item flex-col col-center lighter" slot="reference">
 | 
						||
                    <span class="iconfont icon-service"></span>
 | 
						||
                    <div class="sm">客服</div>
 | 
						||
                </div>
 | 
						||
            </el-popover>
 | 
						||
        </div>
 | 
						||
        <div class="back-top">
 | 
						||
            <span class="iconfont icon-top" @click="scrollTop"></span>
 | 
						||
        </div>
 | 
						||
    </div>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
import { mapState } from 'vuex'
 | 
						||
export default {
 | 
						||
    data() {
 | 
						||
        return {
 | 
						||
            server: {},
 | 
						||
        }
 | 
						||
    },
 | 
						||
    created() {
 | 
						||
        this.getService()
 | 
						||
    },
 | 
						||
    methods: {
 | 
						||
        async getService() {
 | 
						||
            const { data, code } = await this.$get(
 | 
						||
                'setting/getPlatformCustomerService'
 | 
						||
            )
 | 
						||
            if (code == 1) {
 | 
						||
                this.server = data
 | 
						||
            }
 | 
						||
        },
 | 
						||
        scrollTop() {
 | 
						||
            cancelAnimationFrame(this.timer)
 | 
						||
            const self = this
 | 
						||
            this.timer = requestAnimationFrame(function fn() {
 | 
						||
                var oTop =
 | 
						||
                    document.body.scrollTop ||
 | 
						||
                    document.documentElement.scrollTop
 | 
						||
                if (oTop > 0) {
 | 
						||
                    scrollTo(0, oTop - 250)
 | 
						||
                    self.timer = requestAnimationFrame(fn)
 | 
						||
                } else {
 | 
						||
                    cancelAnimationFrame(self.timer)
 | 
						||
                }
 | 
						||
            })
 | 
						||
        },
 | 
						||
    },
 | 
						||
    computed: {
 | 
						||
        ...mapState(['publicData']),
 | 
						||
    },
 | 
						||
}
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss" scoped>
 | 
						||
.float-nav {
 | 
						||
    height: 100vh;
 | 
						||
    position: fixed;
 | 
						||
    right: 0;
 | 
						||
    top: 0;
 | 
						||
    width: 60px;
 | 
						||
    z-index: 999;
 | 
						||
    box-shadow: -3px 1px 2px rgba(0, 0, 0, 0.04);
 | 
						||
    .nav-list {
 | 
						||
        position: absolute;
 | 
						||
        bottom: 120px;
 | 
						||
        .item {
 | 
						||
            padding: 10px 4px;
 | 
						||
            text-align: center;
 | 
						||
            cursor: pointer;
 | 
						||
            &:hover {
 | 
						||
                color: $--color-primary;
 | 
						||
            }
 | 
						||
            .iconfont {
 | 
						||
                font-size: 24px;
 | 
						||
            }
 | 
						||
            ::v-deep .el-badge__content {
 | 
						||
                height: 16px;
 | 
						||
                line-height: 16px;
 | 
						||
                padding: 0 5px;
 | 
						||
            }
 | 
						||
        }
 | 
						||
    }
 | 
						||
    .back-top {
 | 
						||
        position: absolute;
 | 
						||
        bottom: 20px;
 | 
						||
        cursor: pointer;
 | 
						||
    }
 | 
						||
}
 | 
						||
</style> |