import { use } from '../utils'; import Tab from '../tab'; import Tabs from '../tabs'; import Field from '../field'; import Button from '../button'; import Coupon from '../coupon'; const [sfc, bem, t] = use('coupon-list'); const EMPTY_IMAGE = 'https://img.yzcdn.cn/vant/coupon-empty.png'; export default sfc({ model: { prop: 'code' }, props: { code: String, coupons: Array, disabledCoupons: Array, closeButtonText: String, inputPlaceholder: String, exchangeButtonText: String, exchangeButtonLoading: Boolean, exchangeButtonDisabled: Boolean, exchangeMinLength: { type: Number, default: 1 }, chosenCoupon: { type: Number, default: -1 }, displayedCouponIndex: { type: Number, default: -1 }, showExchangeBar: { type: Boolean, default: true }, showCloseButton: { type: Boolean, default: true }, currency: { type: String, default: '¥' } }, data() { return { tab: 0, winHeight: window.innerHeight, currentCode: this.code || '' }; }, computed: { buttonDisabled() { return ( !this.exchangeButtonLoading && (this.exchangeButtonDisabled || !this.currentCode || this.currentCode.length < this.exchangeMinLength) ); }, title() { return `${t('enable')} (${this.coupons.length})`; }, disabledTitle() { return `${t('disabled')} (${this.disabledCoupons.length})`; }, listStyle() { return { height: this.winHeight - (this.showExchangeBar ? 140 : 94) + 'px' }; } }, watch: { code(code) { this.currentCode = code; }, currentCode(code) { this.$emit('input', code); }, displayedCouponIndex(val) { this.scrollToShowCoupon(val); } }, mounted() { this.scrollToShowCoupon(this.displayedCouponIndex); }, methods: { onClickExchangeButton() { this.$emit('exchange', this.currentCode); // auto clear currentCode when not use vModel if (!this.code) { this.currentCode = ''; } }, // scroll to show specific coupon scrollToShowCoupon(index) { if (index === -1) { return; } this.$nextTick(() => { const { card, list } = this.$refs; /* istanbul ignore next */ if (list && card && card[index]) { list.scrollTop = card[index].$el.offsetTop - 100; } }); }, renderEmpty() { return (

{t('empty')}

); }, renderExchangeButton() { return (