priceTool.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <view class="price-style">
  3. <text class="unit-style">$</text>
  4. <text :style="'font-size:'+font_size+'rpx'">{{integerPart }}</text>
  5. <text class="unit-decimal-style">.{{decimalPart }}</text>
  6. </view>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {};
  12. },
  13. /**
  14. * 组件的属性列表
  15. */
  16. props: {
  17. price:{
  18. type:Number,
  19. default:10
  20. },
  21. font_size:{
  22. type:Number,
  23. default:40
  24. },
  25. },
  26. computed: {
  27. formattedPrice() {
  28. let parts = this.price.toString().split('.');
  29. if (parts.length === 1) {
  30. return parts[0] + '.0'; // 价格为整数时,添加一位小数
  31. } else if (parts[1]) {
  32. return parts[0] + '.' + parts[1].padEnd(1, '0'); // 确保至少有一位小数
  33. } else {
  34. return parts[0] + '.0'; // 防止parts[1]为undefined
  35. }
  36. },
  37. integerPart() {
  38. let parts = this.formattedPrice.split('.');
  39. return parts[0];
  40. },
  41. decimalPart() {
  42. let parts = this.formattedPrice.split('.');
  43. return parts[1];
  44. }
  45. },
  46. /**
  47. * 组件的方法列表
  48. */
  49. methods: {
  50. }
  51. };
  52. </script>
  53. <style scoped>
  54. .price-style{
  55. font-family: DIN, DIN;
  56. font-weight: bold;
  57. font-size: 32rpx;
  58. color: #FA2918;
  59. }
  60. .unit-style{
  61. font-size: 24rpx;
  62. margin-right: 4rpx;
  63. }
  64. </style>