CnumberBox.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <view class="main">
  3. <uni-icons type="minus-filled" size="20" color="#A67A54" @click="numReduce"></uni-icons>
  4. <!-- <text class="buy-select">{{number}}</text> -->
  5. <u-input
  6. v-model="number"
  7. type="number"
  8. height="40"
  9. :placeholder="placeholder"
  10. :clearable="false"
  11. :disabled="isDisabled"
  12. input-align="center"
  13. :custom-style="{width:'45px'}"/>
  14. <uni-icons type="plus-filled" size="20" color="#A67A54" @click="numPlus"></uni-icons>
  15. </view>
  16. </template>
  17. <script>
  18. export default {
  19. props: {
  20. isDisabled: {
  21. default: false
  22. },
  23. placeholder: {
  24. default: ''
  25. },
  26. step: {
  27. default: 1
  28. },
  29. minNum: {
  30. default: 0.01
  31. }
  32. },
  33. data() {
  34. return {
  35. number: 1,
  36. }
  37. },
  38. methods: {
  39. numPlus() {
  40. this.number = Number(this.number) + Number(this.step)
  41. this.$emit('getNum',this.number);
  42. },
  43. numReduce() {
  44. if ((Number(this.number) - Number(this.step)) >= Number(this.minNum)) {
  45. this.number = Number(this.number) - Number(this.step)
  46. }
  47. this.$emit('getNum',this.number);
  48. }
  49. }
  50. }
  51. </script>
  52. <style>
  53. </style>
  54. <style lang="less" scoped>
  55. .main {
  56. display: flex;
  57. align-items: center;
  58. justify-content: flex-end;
  59. }
  60. </style>