counterPage.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <el-dialog title="公式计算器" v-model="showCounterPage" width="400px" append-to-body :show-close="false" :close-on-click-modal="false">
  3. <div class="counter">
  4. <input type="text" disabled="disabled" v-model="counterStr">
  5. <div class="countBtn">
  6. <span v-for="item in countBox" :key="item.label" @click="haveNum(item.label)">{{item.label}}</span>
  7. </div>
  8. </div>
  9. </el-dialog>
  10. </template>
  11. <script>
  12. export default {
  13. data() {
  14. return {
  15. counterStr: '',
  16. showCounterPage: false,
  17. countBox: []
  18. }
  19. },
  20. created() {
  21. this.countBox = [
  22. {
  23. label: '清空'
  24. },
  25. {
  26. label: '撤销'
  27. },
  28. {
  29. label: '&'
  30. },
  31. {
  32. label: '|'
  33. },
  34. {
  35. label: '('
  36. },
  37. {
  38. label: '7'
  39. },
  40. {
  41. label: '8'
  42. },
  43. {
  44. label: '9'
  45. },
  46. {
  47. label: '÷'
  48. },
  49. {
  50. label: ')'
  51. },
  52. {
  53. label: '4'
  54. },
  55. {
  56. label: '5'
  57. },
  58. {
  59. label: '6'
  60. },
  61. {
  62. label: '×'
  63. },
  64. {
  65. label: '@'
  66. },
  67. {
  68. label: '1'
  69. },
  70. {
  71. label: '2'
  72. },
  73. {
  74. label: '3'
  75. },
  76. {
  77. label: '-'
  78. },
  79. {
  80. label: '%'
  81. },
  82. {
  83. label: '0'
  84. },
  85. {
  86. label: '.'
  87. },
  88. {
  89. label: '+'
  90. },
  91. {
  92. label: '='
  93. },
  94. {
  95. label: '确认'
  96. }
  97. ]
  98. },
  99. methods: {
  100. init(val) {
  101. this.showCounterPage = true
  102. this.counterStr = val
  103. },
  104. haveNum(val) {
  105. if (val === '撤销' && this.counterStr.length>0) {
  106. this.counterStr = this.counterStr.substring(0, this.counterStr.length-1)
  107. } else if(val === '清空') {
  108. this.counterStr = ''
  109. } else if(val === '确认') {
  110. this.$emit('counterStr', this.counterStr)
  111. this.showCounterPage = false
  112. } else {
  113. this.counterStr += val
  114. }
  115. }
  116. }
  117. }
  118. </script>
  119. <style lang="less">
  120. .el-overlay{
  121. .el-dialog{
  122. .el-dialog__body{
  123. padding: 30px;
  124. .counter{
  125. input{
  126. width: calc(100% - 4px);
  127. height: 50px;
  128. }
  129. .countBtn{
  130. span{
  131. display:inline-block;
  132. width: 66px;
  133. height: 66px;
  134. border: 1px solid #dcdfe6;
  135. text-align: center;
  136. line-height: 70px;
  137. cursor: pointer;
  138. &:hover{
  139. background-color: #67C23A;
  140. color: #fff;
  141. }
  142. }
  143. }
  144. }
  145. }
  146. }
  147. }
  148. </style>