MenuModule.vue 1.48 KB
<template>
  <section class="menu-module">
    <div
      class="menu-module-item"
      v-for="(item, idx) in data.iconVOS"
      :key="idx"
      @click="handleClickItem(item)"
    >
      <img v-if="item.iconUrl" class="menu-icon" :src="item.iconUrl" />
      <div v-else class="menu-icon"></div>
      <span v-if="item.iconName" class="menu-name">{{ item.iconName }}</span>
      <div v-else class="menu-name white"></div>
    </div>
  </section>
</template>

<script>
export default {
  name: 'MenuModule',
  props: {
    data: {
      type: Object,
      default: () => { return {} }
    }
  },
  data () {
    return {}
  },
  methods: {
    handleClickItem (item) {

    }
  }
}
</script>

<style lang="less" scoped>
@import '~@/assets/css/mixins.less';
.white {
  width: 90%;
  background: #eee;
}
.menu-module {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
  padding-top: 5px;
  @ModulePaddingTop: 25px;
  .menu-module-item {
    padding-top: @ModulePaddingTop;
    width: 25%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0 2px;

    @IconSize: 50px;
    .menu-icon {
      background: #eee;
      height: @IconSize;
      width: @IconSize;
      border-radius: calc(@IconSize / 2);
    }
    .menu-name {
      display: block;
      margin-top: 10px;
      line-height: 20px;
      min-height: 20px;
      font-size: 14px;
      text-align: center;
      color: #444444;
      width: 100%;
      .line-clamp(1);
    }
  }
}
</style>