exchage-box.vue 1.31 KB
<template>
  <div class="exchange-box">
    <div class="input-wrapper">
      <input type="text" name="couponCodeInput" placeholder="请输入优惠券码" v-model="code">
    </div>
    <button :class="btnCls" @click="onClick">兑换</button>
  </div>
</template>

<script>
export default {
  name: 'ExchangeBox',
  data() {
    return {
      code: ''
    };
  },
  methods: {
    onClick() {
      if (this.code) {
        this.$emit('click');
      }
    }
  },
  computed: {
    btnCls() {
      return ['exchange-coupon-btn', {
        active: this.code !== ''
      }];
    }
  },
  watch: {
    code() {
      this.$emit('input', this.code);
    },
    value(val) {
      this.code = val;
    }
  }
};
</script>

<style lang="scss" scoped>
.exchange-box {
  height: 90px;
  padding: 16px 20px;
  background-color: #fff;
  top: 0;
  left: 0;
  z-index: 2;

  .input-wrapper {
    display: inline-block;
    position: relative;
  }

  input {
    width: 570px;
    height: 60px;
    margin-right: 12px;
    padding: 0 20px;
    background-color: #f0f0f0;
    border-radius: 4px;
    border: none;
  }

  .exchange-coupon-btn {
    width: 120px;
    height: 60px;
    border-radius: 4px;
    font-size: 28px;
    color: #fff;
    background-color: #b0b0b0;
    border: none;
  }

  .active {
    background-color: #444;
  }
}

</style>