tabItem.vue 2.36 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">{{ data.num }}</div></slot>
    <i class="cubeic-arrow"></i>
  </div>
</template>

<script>
import { createNamespacedHelpers } from "vuex";

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: ''
    }
  },
  data() {
    return {};
  },
  computed: {
    itemClass() {
      return {
        line: !this.noLine,
        grey: this.grey,
        small: this.small
      };
    },
    titleClass() {
      return {
        "title-bold": this.titleBold,
        "title-small": this.titleSmall
      };
    }
  },
  mounted() {},
  methods: {
    goPage({ page: name, params = {} }) {
      if (!name) {
        return;

      }
      if(name === 'service') {
             this.$createDialog({
                type: 'alert',
                content: '请致电 <a href="tel:400-889-9646"> 400-889-9646 </a>联系有货客服',
                confirmBtn: {
                text: '我知道了',
                active: true
                }
            }).show()
            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>