gui-star.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template name="graceStart">
  2. <view class="gui-flex gui-rows gui-nowrap">
  3. <view v-for="(item, index) in totalstars"
  4. :style="{padding:padding}" :key="index"
  5. @tap="changnum" :data-val="index">
  6. <text class="gui-icons"
  7. :style="{'color': activecolor, 'font-size' : fontSize}"
  8. v-if="valueIn > index">&#xe634;</text>
  9. <text class="gui-icons"
  10. :style="{'color': color, 'font-size' : fontSize}"
  11. v-else>&#xe634;</text>
  12. </view>
  13. </view>
  14. </template>
  15. <script>
  16. export default {
  17. name: "gui-star",
  18. props:{
  19. fontSize : { type : String, default : '50rpx' },
  20. totalstars : { type : Number, default : 5 },
  21. starnum : { type : Number, default : 1 },
  22. color : { type : String, default : '#E1E1E1' },
  23. activecolor : { type : String, default : '#F5C359' },
  24. cantap : { type : Boolean, default : true },
  25. padding : { type : String, default : '5rpx'}
  26. },
  27. data() {
  28. return {
  29. valueIn : 0
  30. }
  31. },
  32. created:function(){
  33. this.valueIn = this.starnum;
  34. },
  35. watch:{
  36. starnum : function (val) {
  37. this.valueIn = this.starnum;
  38. }
  39. },
  40. methods: {
  41. changnum : function(e){
  42. if (!this.cantap){return null;}
  43. this.valueIn = Number(e.currentTarget.dataset.val) + 1;
  44. this.$emit("change", Number(this.valueIn));
  45. }
  46. }
  47. }
  48. </script>
  49. <style scoped>
  50. </style>