You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
import { VantComponent } from '../common/component'; |
|
VantComponent({ |
|
classes: ['bar-class', 'price-class', 'button-class'], |
|
props: { |
|
tip: { |
|
type: null, |
|
observer: 'updateTip', |
|
}, |
|
tipIcon: String, |
|
type: Number, |
|
price: { |
|
type: null, |
|
observer: 'updatePrice', |
|
}, |
|
label: String, |
|
loading: Boolean, |
|
disabled: Boolean, |
|
buttonText: String, |
|
currency: { |
|
type: String, |
|
value: '¥', |
|
}, |
|
buttonType: { |
|
type: String, |
|
value: 'danger', |
|
}, |
|
decimalLength: { |
|
type: Number, |
|
value: 2, |
|
observer: 'updatePrice', |
|
}, |
|
suffixLabel: String, |
|
safeAreaInsetBottom: { |
|
type: Boolean, |
|
value: true, |
|
}, |
|
}, |
|
methods: { |
|
updatePrice() { |
|
const { price, decimalLength } = this.data; |
|
const priceStrArr = typeof price === 'number' && |
|
(price / 100).toFixed(decimalLength).split('.'); |
|
this.setData({ |
|
hasPrice: typeof price === 'number', |
|
integerStr: priceStrArr && priceStrArr[0], |
|
decimalStr: decimalLength && priceStrArr ? `.${priceStrArr[1]}` : '', |
|
}); |
|
}, |
|
updateTip() { |
|
this.setData({ hasTip: typeof this.data.tip === 'string' }); |
|
}, |
|
onSubmit(event) { |
|
this.$emit('submit', event.detail); |
|
}, |
|
}, |
|
});
|
|
|