import { VantComponent } from '../common/component'; VantComponent({ props: { inactive: Boolean, percentage: Number, pivotText: String, pivotColor: String, showPivot: { type: Boolean, value: true }, color: { type: String, value: '#38f' }, textColor: { type: String, value: '#fff' } }, data: { pivotWidth: 0, progressWidth: 0 }, watch: { pivotText: 'getWidth', showPivot: 'getWidth' }, computed: { portionStyle() { const width = (this.data.progressWidth - this.data.pivotWidth) * this.data.percentage / 100 + 'px'; const background = this.getCurrentColor(); return `width: ${width}; background: ${background}; `; }, pivotStyle() { const color = this.data.textColor; const background = this.data.pivotColor || this.getCurrentColor(); return `color: ${color}; background: ${background}` }, text() { return this.data.pivotText || this.data.percentage + '%'; } }, mounted() { this.getWidth(); }, methods: { getCurrentColor() { return this.data.inactive ? '#cacaca' : this.data.color; }, getWidth() { this.getRect('.van-progress').then(rect => { this.setData({ progressWidth: rect.width }); }); this.getRect('.van-progress__pivot').then(rect => { this.setData({ pivotWidth: rect.width || 0 }); }); } } });