tabItem.vue 2.7 KB
<template>
  <div class="tab-item" :class="itemClass" @click="goPage(data)">
    <i v-if="icon" class="tab-icon" :class=icon></i>
    <div v-if="data.title" class="title" :class="titleClass">{{ data.title }}</div>
    <slot><div class="text" :style="numStyle">{{ data.num }}</div></slot>
    <i class="cubeic-arrow"></i>
  </div>
</template>

<script>
import { createNamespacedHelpers, mapState } from 'vuex';
import { get } from 'lodash';

const { mapActions } = createNamespacedHelpers('home/mine');

export default {
  name: 'tabItem',
  props: {
    data: {
      type: Object,
      default: {}
    },
    noLine: {
      type: Boolean,
      default: false
    },
    small: {
      type: Boolean,
      default: false
    },
    grey: {
      type: Boolean,
      default: false
    },
    titleBold: {
      type: Boolean,
      default: false
    },
    titleSmall: {
      type: Boolean,
      default: false
    },
    icon: {
      type: String,
      default: ''
    },
    numStyle: {
      type: String,
      default: ''
    }
  },
  data() {
    return {};
  },
  computed: {
    itemClass() {
      return {
        line: !this.noLine,
        grey: this.grey,
        small: this.small
      };
    },
    titleClass() {
      return {
        'title-bold': this.titleBold,
        'title-small': this.titleSmall
      };
    },
    ...mapState(['yoho'])
  },
  mounted() {
  },
  methods: {
    goPage({ page: name, params = {} }) {
      if (!name) {
        return;
      }

      if (name === 'service') {
        if (get(this.yoho.config, 'closeservice', false)) {
          this.$createDialog({
            type: 'alert',
            content: '请致电 <a href="tel:400-889-9646"> 400-889-9646 </a>联系有货客服',
            confirmBtn: {
              text: '我知道了',
              active: true
            }
          }).show();
        } else {
          this.$xianyu.goXianyuNewPage({
            url: window.location.origin + '/xianyu-service/service/im?nodownload=1'
          });
        }

        return;
      }

      this.$router.push({ name, params });
    }
  }
};
</script>

<style lang="scss" scoped>

.tab-item {
  display: flex;
  height: 120px;
  line-height: 120px;
}

.tab-icon {
  font-size: 36px;
  color: #444;
}

.small {
  height: 90px;
  line-height: 90px;
}

.title-small {
  font-size: 30px;
}

.grey {
  background-color: #f2f2f2;
  margin: 0 -40px;
  padding: 0 40px;
}

.line {
  border-bottom: solid 1px #eee;
}

.title {
  flex: 1;
  font-size: 32px;
  color: black;
  min-width: 100px;
}

.title-bold {
  font-weight: bold;
}

.text {
  color: black;
  text-align: right;
  font-size: 32px;

  @include num;
}

.cubeic-arrow {
  color: #999;
  margin-left: 10px;
  font-size: 20px;
}
</style>