gui-number-keyboard.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <template>
  2. <gui-popup
  3. ref="guipopupfornk"
  4. position="bottom"
  5. :canCloseByShade="canCloseByShade">
  6. <view
  7. class="gui-bg-gray gui-dark-bg-level-3"
  8. @tap.stop.prevent="stopfun">
  9. <text
  10. class="gui-keyboard-res gui-block gui-primary-text"
  11. v-if="showInputRes"
  12. :style="{fontSize:resultSize}">{{resVal}}</text>
  13. <view
  14. class="gui-keyboard gui-flex gui-row gui-space-between">
  15. <view
  16. class="gui-keyboard-left gui-flex gui-row gui-wrap gui-space-between">
  17. <view
  18. v-for="(item, index) in [1,2,3,4,5,6,7,8,9]"
  19. :key="index"
  20. class="gui-keyboard-keys gui-bg-white gui-dark-bg-level-1"
  21. :data-keynumber="item"
  22. hover-class="gui-tap"
  23. @tap.stop="inputNow">
  24. <text
  25. class="gui-block gui-keyboard-keys-text gui-primary-text">{{item}}</text>
  26. </view>
  27. <view
  28. class="gui-keyboard-keys gui-bg-white gui-dark-bg-level-1"
  29. :style="{width: isPoint ? '259rpx':'538rpx'}"
  30. data-keynumber="0"
  31. @tap.stop="inputNow">
  32. <text
  33. class="gui-keyboard-keys-text gui-block gui-primary-text"
  34. :style="{width: isPoint ? '259rpx':'538rpx'}">0</text>
  35. </view>
  36. <view
  37. v-if="isPoint"
  38. class="gui-keyboard-keys gui-bg-white gui-dark-bg-level-1"
  39. :style="{width:'259rpx'}"
  40. data-keynumber="."
  41. @tap.stop="inputNow">
  42. <text
  43. class="gui-keyboard-keys-text gui-block gui-primary-text"
  44. :style="{ width:'259rpx' }">.</text>
  45. </view>
  46. </view>
  47. <view
  48. class="gui-keyboard-right gui-flex gui-columns gui-align-items-center">
  49. <view
  50. class="gui-keyboard-keys gui-bg-white gui-dark-bg-level-1"
  51. hover-class="gui-tap"
  52. :data-keynumber="-3"
  53. @tap.stop="deleteNow">
  54. <text
  55. class="gui-keyboard-keys-text gui-icons gui-block gui-primary-text">&#xe623;</text>
  56. </view>
  57. <view
  58. class="gui-keyboard-keys gui-keyboard-done gui-bg-primary"
  59. hover-class="gui-tap"
  60. @tap.stop="done">
  61. <text
  62. class="gui-keyboard-done gui-block gui-color-white">{{doneBtnName}}</text>
  63. </view>
  64. </view>
  65. </view>
  66. <!-- iphone 底部适配 -->
  67. <gui-iphone-bottom v-if="!isSwitchPage"></gui-iphone-bottom>
  68. </view>
  69. </gui-popup>
  70. </template>
  71. <script>
  72. export default{
  73. name : "gui-number-keyboard",
  74. props : {
  75. canCloseByShade : { type : Boolean, default : false},
  76. doneBtnName : { type : String, default : "完成" },
  77. isPoint : { type : Boolean, default : true },
  78. value : { type : String, default : ''},
  79. showInputRes : { type : Boolean, default : true},
  80. resultSize : { type : String, default : '32rpx'},
  81. isSwitchPage : { type : Boolean, default : false}
  82. },
  83. methods:{
  84. open : function(){
  85. this.$refs.guipopupfornk.open();
  86. },
  87. close : function(){
  88. this.$refs.guipopupfornk.close();
  89. },
  90. stopfun : function(e){
  91. e.stopPropagation();
  92. return ;
  93. },
  94. inputNow : function (e){
  95. var k = e.currentTarget.dataset.keynumber;
  96. this.resVal += k+'';
  97. this.tapIndex = k;
  98. this.$emit('keyboardInput', k);
  99. this.removeClass();
  100. },
  101. deleteNow : function (e){
  102. var k = e.currentTarget.dataset.keynumber;
  103. this.tapIndex = k;
  104. this.resVal = this.resVal.substring(0, this.resVal.length - 1);
  105. this.$emit('keyboardDelete');
  106. this.removeClass();
  107. },
  108. done : function(){
  109. this.$emit('keyboardDone');
  110. },
  111. setVal : function (val) {
  112. this.resVal = val;
  113. },
  114. removeClass : function () {
  115. setTimeout(()=>{this.tapIndex = -1;}, 100);
  116. },
  117. },
  118. data() {
  119. return {
  120. resVal : '',
  121. tapIndex : -1
  122. }
  123. },
  124. created:function(){
  125. this.resVal = this.value+'';
  126. },
  127. watch:{
  128. value : function (val) {
  129. this.resVal = val+'';
  130. }
  131. },
  132. emits:['keyboardInput', 'keyboardDelete', 'keyboardDone']
  133. }
  134. </script>
  135. <style scoped>
  136. </style>