index.vue 906 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <uni-rate class="jnpf-rate" v-model="innerValue" :size="20" :max="max" :allowHalf="allowHalf" :disabled="disabled"
  3. @change="onChange" />
  4. </template>
  5. <script>
  6. export default {
  7. name: 'jnpf-rate',
  8. inheritAttrs: false,
  9. props: {
  10. modelValue: {
  11. type: [Number, String],
  12. default: 0
  13. },
  14. allowHalf: {
  15. type: Boolean,
  16. default: false
  17. },
  18. max: {
  19. type: Number,
  20. default: 5
  21. },
  22. disabled: {
  23. type: Boolean,
  24. default: false
  25. }
  26. },
  27. watch: {
  28. modelValue: {
  29. handler(val) {
  30. this.innerValue = Number(val)
  31. },
  32. immediate: true
  33. }
  34. },
  35. data() {
  36. return {
  37. innerValue: 0
  38. }
  39. },
  40. methods: {
  41. onChange(data) {
  42. this.$emit('update:modelValue', data.value)
  43. this.$emit('change', data.value)
  44. },
  45. }
  46. }
  47. </script>
  48. <style lang="scss" scoped>
  49. .jnpf-rate {
  50. width: 100%;
  51. display: flex;
  52. justify-content: flex-end
  53. }
  54. </style>