¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view :style="labelStyle" class="title">{{ label }}</view> |
| | | <view :style="numberStyle" class="number">{{ formatNumber(number,props.place) }}</view> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { computed } from 'vue'; |
| | | |
| | | const props = defineProps({ |
| | | label: { |
| | | type: String, |
| | | default: "è®¢åæ°é" |
| | | }, |
| | | width: { |
| | | type: Number, |
| | | default: 300 |
| | | }, |
| | | labelColor: { |
| | | type: String, |
| | | default: '#white' |
| | | }, |
| | | labelSize: { |
| | | type: Number, |
| | | default: 16 |
| | | }, |
| | | number: { |
| | | type: Number, |
| | | default: 80 |
| | | }, |
| | | numberColor: { |
| | | type: String, |
| | | default: 'red' |
| | | }, |
| | | numberSize: { |
| | | type: Number, |
| | | default: 20 |
| | | }, |
| | | place: { |
| | | type: Number, |
| | | default: 2 |
| | | } |
| | | }) |
| | | const labelStyle = computed(() => { |
| | | return { |
| | | width: `${props.width}rpx`, |
| | | color: props.labelColor, |
| | | fontSize: `${props.labelSize}px` |
| | | } |
| | | }) |
| | | |
| | | const numberStyle = computed(() => { |
| | | return { |
| | | width: `${props.width}rpx`, |
| | | color: props.numberColor, |
| | | fontSize: `${props.numberSize}px` |
| | | } |
| | | }) |
| | | |
| | | function formatNumber(num,place) { |
| | | |
| | | let fixedNum = Number(num).toFixed(place); // å°æ°åä¿ç两ä½å°æ° |
| | | let parts = fixedNum.split('.'); // æåæ´æ°é¨ååå°æ°é¨å |
| | | let integerPart = parts[0]; // æ´æ°é¨å |
| | | let decimalPart = parts[1]; // å°æ°é¨å |
| | | |
| | | // 使ç¨padStartæ¹æ³è¡¥0å°å°æ°é¨å |
| | | decimalPart = decimalPart.padStart(place, '0'); |
| | | |
| | | return integerPart + '.' + decimalPart; |
| | | } |
| | | |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .title { |
| | | text-align: center; |
| | | } |
| | | |
| | | .number { |
| | | text-align: center; |
| | | } |
| | | </style> |
| | | |