top-bar.vue 2.58 KB
<template>
    <div class="top-box clearfix" v-bind:class='{"top-box-left" : this.$parent.$refs.filter.on}'>
        <span class="icon back" @click="goBack()">&#xe606;</span>
        <div class="right">
            <span v-if="shareData.isFav" class="icon" @click="collectShop()">&#xe60d;</span>
            <span v-else class="icon" @click="collectShop()">&#xe60c;</span>
            <span class="icon" @click="goShare()">&#xe60e;</span>
            <span class="icon" @click="showFilter()">&#xe60b;</span>
        </div>
    </div>
</template>

<style>
    .top-box {
        width: 100%;
        height: 60px;
        padding: 0 20px;
        position: fixed;
        top: 60px;
        left: 0;
        z-index: 99;
        color: #fff;
        font-size: 48px;

        .back {
            width: 60px;
            height: 60px;
            float: left;
        }

        .right {
            height: 60px;
            float: right;
            margin: 0;
            padding: 0;

            span {
                width: 60px;
                height: 60px;
                margin: 0 5px;
            }
        }
    }

    .top-box-left {
        left: -655px;
    }
</style>

<script>
    const yoho = require('yoho');
    const $ = require('yoho-jquery');
    const tip = require('common/tip');

    module.exports = {
        props: {
            shareData: {
                type: Object
            }
        },
        methods: {
            goShare() {

                // 删除两个多余的参数,两个参数是收藏时使用的
                delete this.shareData.shopId;
                delete this.shareData.isFav;
                yoho.goShare(this.shareData, function() {}, function() {});
            },
            goBack() {
                yoho.goBack({}, function() {}, function() {});
            },

            /* 收藏或者取消收藏店铺 */
            collectShop() {
                let data = {
                    shopId: this.shareData.shopId,
                    isFav: this.shareData.isFav
                };

                $.post({
                    url: '/product/collect-shop',
                    data: data
                }).done(result => {
                    tip(result.message);
                    if (result.code === 200) {
                        this.shareData.isFav = !this.shareData.isFav;
                    }
                }).fail(() => {
                    tip('网络错误');
                });
            },
            showFilter() {
                this.$parent.$refs.drawer.on = !this.$parent.$refs.drawer.on;
            }
        }
    };
</script>