index.vue 1.02 KB
<template>
  <div class="checkBox" @click="updateValue">
    <span class="checkItem allSelected" v-show="type === 'all' && value"></span>
    <span class="checkItem noSelected" v-show="!value"></span>
    <font><slot></slot></font>
  </div>
</template>
<script>
export default {
  name: 'isCheckAll',
  methods: {
    updateValue () {
      this.$emit('update:value', !this.value)
    }
  },
  props: {
    value: {
      type: Boolean,
      default: false
    },
    type: {
      type: String,
      default: 'all'
    }
  }
}
</script>

<style lang="less">
.checkBox {
  display: inline-block;
  .checkItem {
    display: inline-block;
    width: 1.3rem;
    height: 1.3rem;
    text-align: center;
    vertical-align: middle;
    background-size: cover;
  }
  .allSelected {
    background-image: url(../../assets/all.png);
  }
  .partSelected {
    background-image: url(../../assets/part.png);
  }
  .noSelected {
    background-image: url(../../assets/no.png);
  }
  font {
    font-size: 0.9rem;
    vertical-align: middle;
  }
}
</style>