<template>
  <view class="flex option" :style="style">
    <view 
      :class="['option-item', item.id === selected ? 'is-active' : '']" 
      v-for="item in options" 
      :key="item.id"
      @click="selected = item.id"
    >
      <view class="option-item-content">
        <view class="flex time">
          <view class="time-val">{{ $dayjs(item.startDate).format('MM/DD') }}</view>
          <view class="time-split">-</view>
          <view class="time-val">{{ $dayjs(item.endDate).format('MM/DD') }}</view>
        </view>
        <view class="flex price">
          <view class="price-val">
            <text>¥</text>
            <text class="highlight">{{ priceInt(item.priceDiscount) }}</text>
            <text>{{ `${priceFrac(item.priceDiscount)}起` }}</text>
          </view>
          <view class="price-bef" v-if="item.priceOrigin">¥<text>{{ item.priceOrigin }}</text></view>
        </view>
      </view>
      <view class="flex option-item-bottom">
        {{ item.id === selected ? '已选择' : '点击选择' }}
      </view>
    </view>
  </view>
</template>

<script>
  export default {
    props: {
      value: {
        type: String | Number,
        default: null
      },
      options: {
        type: Array,
        default() {
          return []
        }
      },
      style: {
        type: String,
        default: ''
      },
    },
    computed: {
      selected: {
        set(val) {
          this.$emit('input', val)
        },
        get() {
          return this.value
        }
      },
    },
    methods: {
      priceInt(priceDiscount) {
        return Math.floor(priceDiscount)
      },
      priceFrac(priceDiscount) {
        let frac = priceDiscount % this.priceInt(priceDiscount)
        return frac > 0 ? frac.toFixed(2).slice(1) : ''
      },
    },
  }
</script>

<style scoped lang="scss">

  .option {
    width: 100%;
    overflow-x: auto;
    flex-wrap: nowrap;
    justify-content: flex-start;
    column-gap: 16rpx;

    &-item {
      min-width: 238rpx;
      flex: none;
      font-size: 0;
      border: 2rpx solid #EEEEEE;
      border-radius: 12rpx;
      overflow: hidden;

      &-content {
        padding: 16rpx 12rpx;
      }

      &-bottom {
        padding: 12rpx 0;
        font-size: 28rpx;
        font-weight: 500;
        color: #191919;
        background: #E4E7EB;
      }

      &.is-active {
        background: #E9F8FF;
        border-color: #00A9FF;

        .option-item-bottom {
          color: #FFFFFF;
          background: #00A9FF;
        }
      }
    }
  }

  .time {
    column-gap: 8rpx;

    &-val {
      font-size: 28rpx;
      font-weight: 500;
      color: #000000;
    }

    &-split {
      font-size: 24rpx;
      color: #8B8B8B;
    }
  }

  .price {
    margin-top: 4rpx;
    align-items: baseline;
    column-gap: 8rpx;
    white-space: nowrap;

    &-val {
      font-size: 24rpx;
      font-weight: 500;
      color: #FF4800;

      .highlight {
        font-size: 32rpx;
      }
    }

    &-bef {
      text-decoration: line-through;
      font-size: 24rpx;
      color: #8B8B8B;
    }
  }
  
</style>