|                                                                                                           |  | <template>  <view class="flex sort" :style="style">    <view :class="['flex', 'sort-item', sort == 'comprehensive' ? 'is-active' : '']" @click="onClickSort('comprehensive')">地点</view>    <view :class="['flex', 'sort-item', ['sale-asc', 'sale-desc'].includes(sort) ? 'is-active' : '']" @click="onClickSort('sale')">      <view>主题</view>      <view class="sort-item-icon">        <uv-icon v-if="sort == 'sale-asc'" name="arrow-up-fill" color="#00A9FF" size="16rpx" :bold="true"></uv-icon>        <uv-icon v-else-if="sort == 'sale-desc'" name="arrow-down-fill" color="#00A9FF" size="16rpx" :bold="true"></uv-icon>        <image v-else style="width: 8rpx; height: auto;" src="/static/image/icon-sort.png" mode="widthFix"></image>      </view>    </view>    <view :class="['flex', 'sort-item', ['price-asc', 'price-desc'].includes(sort) ? 'is-active' : '']" @click="onClickSort('price')">      <view>时间</view>      <view class="sort-item-icon">        <uv-icon v-if="sort == 'price-asc'" name="arrow-up-fill" color="#00A9FF" size="16rpx" :bold="true"></uv-icon>        <uv-icon v-else-if="sort == 'price-desc'" name="arrow-down-fill" color="#00A9FF" size="16rpx" :bold="true"></uv-icon>        <image v-else style="width: 8rpx; height: auto;" src="/static/image/icon-sort.png" mode="widthFix"></image>      </view>    </view>  </view></template>
<script>  export default {    props: {      value: {        type: String,        default: 'comprehensive'      },      style: {        type: String,        default: ''      }    },    computed: {      sort: {        set(val) {          this.$emit('input', val)        },        get() {          return this.value        }      }    },    methods: {      onClickSort(key) {
        let sort = 'comprehensive'
        switch(key) {          case 'comprehensive':            sort = 'comprehensive'            break;          case 'sale':            if (this.sort == 'sale-desc') {              sort = 'sale-asc'            } else {              sort = 'sale-desc'            }            break;          case 'price':            if (this.sort == 'price-desc') {              sort = 'price-asc'            } else {              sort = 'price-desc'            }            break;          default:            break;        }
        this.sort = sort
        this.$emit('change', sort)      },    },  }</script>
<style scoped lang="scss">
  .sort {    width: 100%;    justify-content: space-between;
    &-item {      padding: 12rpx 32rpx;      font-size: 28rpx;      line-height: 1.5;      color: #191919;      column-gap: 4rpx;
      &.is-active {        font-weight: 600;        color: #00A9FF;      }
      &-icon {        width: 32rpx;        display: inline-flex;        align-items: center;        justify-content: center;      }    }  }
</style>
 |